Reference in New Issue
Block a user
Delete Branch "fix/adr0020-followups"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Picks up four of the small, well-scoped issues that surfaced during the #99 ADR-0020 retrofit, prioritizing quick closes before the larger epics. #112 (cherry-pick/revert ownership) was investigated too but turned out already resolved on
main— closed directly with an explanatory comment, no code change needed.What's in this PR
ffaa3af— fix(agent-audit): remove user-invocable as a hand-invoked marker (#125)disable-model-invocationanduser-invocableare independent Copilot fields; only the first affects whether a description is a routing string. The old bullet conflated them.60be7b3— refactor(skills): mandate metadata.version on every skill's frontmatter (#127, part 1)Adoption of
metadata.versiontracked which plugin a skill lived in, not any stated rule (12/39 skills had it, split cleanly by plugin with two outliers). Now mandatory everywhere — 19 non-git skills seeded at1.0.0,skill-frontmatter's pre-commit hook now enforces presence. Full rationale in the newdocs/adr/0022-skill-metadata-version-is-mandatory.md.2c6ce43— refactor(git): normalize rtk-prefix usage, add metadata.version (#113, #127 part 2)Bundled since both touch the same nine git-plugin skills. #113: executable instructed commands now consistently use
rtk git, illustrative mentions stay baregit— empirically validated against the corpus before the sweep, documented in the newplugins/git/README.md. Plus the remaining 8 skills'metadata.version.09eea5e— fix(skill-audit): flag a changed provenance claim, not just its shape (#118)validate-provenance.shchecked structural consistency but never whether asources.mdclaim was true. A literal-filename cross-check was tried and rejected (tested against the real corpus: 3/95 false positives, and it wouldn't have caught the actual bug). New check 9 instead flags any changedDescription/Contributing filestext against a base ref as an INFO — a pointer for the auditor to go verify by reading, since no script can verify semantic truth. Plus a matching authoring-time guardrail inskill-author's retrofit checklist. 8 new bats tests (73 total, 0 failures).af8b46c— chore(plugins): sync generated content mirrorsRegenerates
plugins/*/skills/from.apm/per ADR-0017.4f4b55b— chore: refresh apm.lock.yaml to match the deployed install statePre-existing drift from before this branch (lockfile behind
598a7c3);apm installrestored it,apm audit --cinow passes 10/10.Test plan
pre-commit run --all-files— passed on every commitpre-commit run --hook-stage pre-push --all-files(network-dependent marketplace/pack-check hooks skipped) — 16/16 on final pushbash tests/bats/bin/bats plugins/kyberforge/.apm/skills/skill-audit/tests/validate-provenance.bats— 73/73Implementation notes with the reasoning behind each decision (including the two rejected approaches for #118 and #113's gate question) are posted as comments on the respective issues.
🤖 Generated with Claude Code
https://claude.ai/code/session_01EeH8SCbcrCAQrtymkNuhKP
Full review done, findings fixed and pushed (
4f4b55b..0f2bb24). Six commits, split by concern.Five blockers, all of the same shape — a gate or check that reported success without measuring anything:
skill-frontmatterusedentry: bashwithargs: ['-c', <script>], so pre-commit's first filename became$0and never entered"$@". On a single-file commit — the common case — it reported Passed having read nothing, which was the entire enforcement ADR-0022 relies on. Fixed, plus the checks are now frontmatter-scoped and assert semver;tests/test-skill-frontmatter.shis the hook's first test and scores 7/20 against the pre-fix version.rtk git worktree list --porcelain -zdiscards both flags and drops thelocked/lock_reasonfields Step 2 must emit;rtk git branch --listprints a phantom*line, so git-branches' ambiguity test reported every name ambiguous. Eleven sites reverted with inline reasons, ADR-0023 adds a third clause, andcheck-rtk-prefix.shreports 99 findings against main's pre-sweep corpus — it would have caught #113.parse_field_rawdidn't span newlines, so rewriting the continuation line of a wrapped Description from a hedge to a confident claim produced nothing — verbatim the #118 regression; and agit showfailure silently disabled it for the whole skill.new-skill.shscaffolded skills that failed this PR's own new gate on first commit.scope-project-user.mdstill carried thedisable-model-invocation/user-invocableconflation #125 removed, pointing at the file that now refutes it.Also: four plugin versions bumped (they were inert until the manifests regenerated —
plugin.jsonwins at install time); stale META.md guidance removed from LESSONS.md and two docs/notes files, which contradicted ADR-0022;write-docs's non-semver"1.0"corrected;gates.mdupdated for both new gates.One correction to the review itself: the TTY defect reported for
mergetoolandrebase -idoes not exist — rtk filters exactly twelve subcommands and execs the rest. Both were reverted on the interactive rule alone, and ADR-0023 records the measurement rather than the convenient claim.Honest limits: the rtk gate covers clause 1 only, in shell-tagged fences and Run cells. Clause 2 isn't gateable and prose bullets are invisible to it — both written into
gates.md. One flake observed:test-check-release-needed.shfailed once in an aggregated run and passed 7/7 afterwards.Green on a clean tree:
run-tests.sh --strict26/26 (0 skipped), pre-commit 18/18, pre-push 16/16,apm audit --ci10/10.🤖 Generated with Claude Code
https://claude.ai/code/session_01EeH8SCbcrCAQrtymkNuhKP