Manifest-driven marketplace + workflow upsert/auto-close#24
Open
circuitfive wants to merge 9 commits into
Open
Manifest-driven marketplace + workflow upsert/auto-close#24circuitfive wants to merge 9 commits into
circuitfive wants to merge 9 commits into
Conversation
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
.claude-plugin/fork-additions.jsonmanifest.merge_marketplace.pybecomes a deterministic regenerator:marketplace.json = upstream/main + fork-additions.json, sorted. No more--excludeflag, no more false-positive cleanup of upstream-removed entries..github/workflows/upstream-sync-check.ymlto upsert a single openUpstream Changes Detectedissue and auto-close it when drift is gone. Addspush: 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-actions→github-actions[bot]).marketplace.jsonis byte-identical post-regeneration.Closes #23.
Test Plan
python3 -m unittest test_merge_marketplace.py— 5/5 passpython3 .claude/skills/upstream-sync/scripts/merge_marketplace.py --dry-run— reports 172 + 1 = 173 pluginsmarketplace.jsonbyte-equivalent after regeneration (no semantic change)github-actions[bot]is the actual creator login viagh api🤖 Generated with Claude Code