fix(marketplace): re-sync magpie-agent-guard, and make the prek hook self-correcting - #1174
Merged
Merged
Conversation
`apache#1169` stamped the framework version to `0.2.0.dev202609081000` across every ecosystem manifest. `apache#1170` landed right after it, adding the `magpie-agent-guard` plugin — a *new* file, branched before the bump and therefore carrying the previous stamp `0.2.0.dev202609080121`. New files do not conflict, so both merged cleanly and `main` was left with a family plugin one stamp behind the root manifest it inherits from. `check-family-plugins` has failed on `main` ever since, which is why an unrelated dependabot PR (apache#1167) shows a red `prek` job it did not cause. `python3 tools/dev/check-family-plugins.py --fix` output; no hand edits. Generated-by: Claude Code (Opus 5)
The `check-family-plugins` hook ran check-only, so a contributor whose manifests drifted got an instruction — "run `tools/dev/check-family-plugins.py --fix`" — rather than a fixed tree. The generated files are a pure function of the skills' `family:` frontmatter and `pyproject.toml`'s version, so there is nothing for them to decide: the fixer is the only correct response to every failure the check can report. Run the hook as `--fix`. prek fails a run whose hook modified files, so drift still stops the commit; it now arrives already corrected, needing only a re-stage — the same convention `end-of-file-fixer`, `trailing-whitespace`, and `add-license-headers` already follow here. `--fix`'s exit code is deliberately left alone: the release-bump procedure invokes it directly in plain shell blocks, where returning non-zero on a successful regeneration would read as failure. Scope note: this closes the hand-fix gap for anyone who runs the hooks, but it cannot catch the cross-PR case that broke `main` this morning — two PRs green in isolation, conflict-free on merge, out of sync in the result. Only a check on `main` (or a merge queue) sees that. Docs describing the hook as check-only updated to match. Generated-by: Claude Code (Opus 5)
potiuk
added a commit
to potiuk/magpie
that referenced
this pull request
Sep 9, 2026
Seven changes have landed behind the previous stamp: the agent-guard plugin move (apache#1170), the doctoc URL fix (apache#1171), the marketplace re-sync plus the self-correcting prek hook (apache#1174), the vetted command surface (apache#1176), and the three PRs that extended its catalogue from 19 to 58 operations (apache#1177, apache#1178, apache#1179). `claude plugin update` compares version strings, so none of that reaches an adopter until the stamp moves. Mechanical: `project.version` edited, then `tools/dev/check-family-plugins.py --fix` propagated it to the five ecosystem manifests and the eleven per-family plugin manifests plus the marketplace entries, and `uv lock` refreshed the workspace's own package version. Generated-by: Claude Code (Opus 5)
potiuk
added a commit
that referenced
this pull request
Sep 9, 2026
Seven changes have landed behind the previous stamp: the agent-guard plugin move (#1170), the doctoc URL fix (#1171), the marketplace re-sync plus the self-correcting prek hook (#1174), the vetted command surface (#1176), and the three PRs that extended its catalogue from 19 to 58 operations (#1177, #1178, #1179). `claude plugin update` compares version strings, so none of that reaches an adopter until the stamp moves. Mechanical: `project.version` edited, then `tools/dev/check-family-plugins.py --fix` propagated it to the five ecosystem manifests and the eleven per-family plugin manifests plus the marketplace entries, and `uv lock` refreshed the workspace's own package version. Generated-by: Claude Code (Opus 5)
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.
Two commits.
1. Re-sync
magpie-agent-guard. #1169 stamped the framework version to0.2.0.dev202609081000across every ecosystem manifest. #1170 landed right after it, adding themagpie-agent-guardplugin — a new file, branched before the bump and therefore carrying the previous stamp0.2.0.dev202609080121. New files do not conflict, so both merged cleanly andmainwas left with a family plugin one stamp behind the root manifest it inherits from.check-family-pluginshas failed onmainever since, which is what shows up as a redprekjob on unrelated PRs such as #1167.Contents are
--fixoutput; no hand edits.2. Run the hook as
--fix. The hook was check-only, so drift handed the contributor an instruction instead of a fixed tree. The generated files are a pure function of the skills'family:frontmatter andpyproject.toml's version, so the fixer is the only correct response to any failure the check can report. prek fails a run whose hook modified files, so drift still stops the commit — it now arrives already corrected, needing only a re-stage, asend-of-file-fixerandadd-license-headersalready do here.--fix's own exit code is unchanged, since the release-bump procedure invokes it in plain shell blocks.What this does not fix. The cross-PR case above — two PRs green in isolation, conflict-free on merge, out of sync in the result — is invisible to a local hook. Only a check on
mainor a merge queue catches it. Worth a follow-up.🤖 Generated with Claude Code
https://claude.ai/code/session_015qpVgY8ADkD9c7vYZk5imP