Skip to content

Manifest-driven marketplace + workflow upsert/auto-close#24

Open
circuitfive wants to merge 9 commits into
mainfrom
feat/upstream-sync-improvements
Open

Manifest-driven marketplace + workflow upsert/auto-close#24
circuitfive wants to merge 9 commits into
mainfrom
feat/upstream-sync-improvements

Conversation

@circuitfive
Copy link
Copy Markdown
Member

Summary

  • Replaces marketplace.json merge heuristic with .claude-plugin/fork-additions.json manifest. merge_marketplace.py becomes a deterministic regenerator: marketplace.json = upstream/main + fork-additions.json, sorted. No more --exclude flag, no more false-positive cleanup of upstream-removed entries.
  • Reworks .github/workflows/upstream-sync-check.yml to upsert a single open Upstream Changes Detected issue and auto-close it when drift is gone. Adds push: branches: [main] so auto-close fires immediately after a sync lands rather than waiting up to a week. Caught and fixed a creator-filter bug along the way (app/github-actionsgithub-actions[bot]).
  • Updates SKILL.md and CLAUDE.md to document the new flow. Adds 5 unit tests covering sort, case-insensitivity, dedupe, empty-manifest, and field-preservation. marketplace.json is byte-identical post-regeneration.

Closes #23.

Test Plan

  • python3 -m unittest test_merge_marketplace.py — 5/5 pass
  • python3 .claude/skills/upstream-sync/scripts/merge_marketplace.py --dry-run — reports 172 + 1 = 173 plugins
  • marketplace.json byte-equivalent after regeneration (no semantic change)
  • YAML lints cleanly
  • Verified github-actions[bot] is the actual creator login via gh api
  • After merge: confirm workflow fires on push to main and (since drift is currently zero) closes any stale drift issues

🤖 Generated with Claude Code

circuitfive and others added 9 commits May 7, 2026 10:42
Plan for #23: manifest-driven marketplace.json regenerator + workflow
upsert/auto-close.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Source of truth for arizonabay-added marketplace entries. Used by
merge_marketplace.py to regenerate marketplace.json deterministically
during upstream syncs.

Refs #23
Replaces the diff-against-upstream heuristic with a manifest-driven build:
marketplace.json = upstream/main + fork-additions.json, sorted. Drops the
--exclude flag and the false-positive cleanup that came with the old
approach.

Adds unit tests covering sort order, case-insensitivity, duplicate
detection, and field preservation. Tests use stdlib unittest only.

Refs #23
Workflow no longer creates a new 'Upstream Changes Detected' issue every
week. Instead it searches for an existing open one and updates its body,
or creates one if none exists. When drift is gone (post-sync), it
auto-closes any open drift issues with a comment.

Adds 'push: branches: [main]' trigger so auto-close fires immediately
after a sync lands rather than waiting up to a week for the cron.

Refs #23
The previous value 'app/github-actions' returned zero results from the
issues API, causing the upsert to always miss and create a new issue
every run. The actual REST API login for the default GITHUB_TOKEN bot
is 'github-actions[bot]', verified against the repo's existing bot-
created issues.

Refs #23
Replaces the conflict-resolution section with a single regeneration step.
Adds an 'Adding a fork-specific plugin' subsection pointing at
fork-additions.json. Drops references to the removed --exclude flag.

Refs #23
Tells future contributors to add fork plugins via the manifest, not by
editing marketplace.json directly.

Refs #23
Running unittest on .claude/skills/upstream-sync/scripts/ creates a
__pycache__ directory that's not relevant to commit.

Refs #23
The workflow now auto-closes drift issues on push to main, so the manual
step is redundant.

Refs #23
@circuitfive circuitfive requested a review from dangerouse May 9, 2026 17:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Improve upstream-sync: replace marketplace.json heuristic with manifest, fix workflow issue churn

1 participant