fix(fix-plan): exempt Claude Code sessions from checklist direct-edit guard - #377
Closed
DrumRobot wants to merge 8 commits into
Closed
fix(fix-plan): exempt Claude Code sessions from checklist direct-edit guard#377DrumRobot wants to merge 8 commits into
DrumRobot wants to merge 8 commits into
Conversation
…conformance linter Adds $schema to plugin.json (root + .claude-plugin/ mirror, kept byte-identical) and bumps both to 0.1.1 to match the already-published marketplace.json entry (user-confirmed direction -- ask per the workspace version-value HARD STOP). Introduces scripts/verify-plugin-spec.py: a stdlib-only linter that validates every marketplace.json- referenced plugin.json against a pinned copy of the canonical v1.0.0 schema (offline, no network fetch), and enforces three invariants the spec itself does not encode -- dual- manifest equality, plugin.json<->marketplace.json version match, and marketplace "source" path containment. Wired into make test / make verify-spec. 30 new unit tests plus a smoke test against this repo's own manifests, all green.
…g on disk Adding this while porting verify-plugin-spec.py to es6kr/claude-plugins surfaced a real instance: 5 of its 6 sub-plugin marketplace entries point at plugins/<name>/ directories that do not exist (their content appears to have migrated to es6kr/skills without the catalog entry being cleaned up). The linter previously just silently skipped any entry without a plugin.json, conflating not-yet- migrated (directory exists, no manifest) with stale (directory gone entirely). check_source_directory_exists() distinguishes the two -- only the latter fails.
feat: adopt Agent Plugins Specification v1.0.0 for plugin.json + add conformance linter
… plane_create_issue
… cross-marketplace skills (#359)
feat(fix-plan): resolve artifacts_path from works-config and decouple plane_create_issue
… guard The guard's purpose is to stop lower-capability harnesses (e.g. Antigravity/Gemini) from schema-corrupting direct edits to fix_plan.md/checklist.md. But the sanctioned scripts only cover item ADDITION — item updates, sync auto-checks, audit annotations, and pipeline-log stamps have no scripted path, so the guard also blocked the fix-plan skill's own documented pipeline contract when run under Claude Code. Exempt Claude Code by detecting CLAUDE_PROJECT_DIR / CLAUDE_PLUGIN_ROOT in the hook process env (Claude Code provides these to hook commands; other harnesses do not). The ALLOW_CHECKLIST_DIRECT_EDIT escape and the block for non-Claude-Code environments stay unchanged. Smoke-tested: CC env + fix_plan -> exit 0; no CC env + fix_plan -> exit 2; no CC env + other file -> exit 0.
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
block-direct-checklist-edit.jsblocks ALL Edit/Write tool calls onfix_plan.md/checklist.md, but the sanctioned scripts cover item addition only — item updates, sync auto-checks ([ ]→[x]on MERGED PRs), audit annotations, and pipeline-log stamps have no scripted path. Under Claude Code the guard therefore blocked the fix-plan skill's own documented pipeline contract (sync auto-check rules, recency-marker stamping).Per user direction, the guard's purpose is to stop lower-capability harnesses (e.g. Antigravity/Gemini) from schema-corrupting direct edits — Claude Code sessions are trusted. This change exempts Claude Code by detecting
CLAUDE_PROJECT_DIR/CLAUDE_PLUGIN_ROOTin the hook process env (Claude Code provides these to hook commands; other harnesses do not). TheALLOW_CHECKLIST_DIRECT_EDIT=1escape and the block for non-Claude-Code environments stay unchanged.Base is
next-featper the skill-divergence override:skills/fix-plan/is currently staging onnext-feat(warn-fixplan-item-schema.sh+ tests differ frommain).Test plan
🤖 Generated with Claude Code