Implementation Plan

Fix review-plan agent frontmatter and descriptions to match product-plans pattern

todo
2026-06-07 agentics fix

Align the seven plan-reviewer-*.md agent definitions in the plan-agent plugin with the proven product-plans sibling pattern: change the frontmatter key from allowed-tools: to tools:, narrow Bash to Bash(git *), and append the "Teammate-only" clause to every agent description. Bump plan-agent to 1.10.0 as a PATCH fix for functional correctness.

Implement Read and implement all steps in the plan at docs/plans/fix-review-plan-agent-frontmatter.html — Fix review-plan agent frontmatter and descriptions to match product-plans pattern
File fix-review-plan-agent-frontmatter.html
Path docs/plans/fix-review-plan-agent-frontmatter.html
Acceptance criteria 0 / 7 done

Context

The review-plan Agent Team skill (v1.9.0) shipped with seven plan-reviewer-*.md agent definitions under kit/plugins/plan-agent/agents/. A post-ship team review (add-plan-review-team-skill-review.html) identified two functional correctness issues and one convention gap by comparing the shipped files against the established product-plans sibling agents:

  • Wrong frontmatter key: All seven agents use allowed-tools: in their YAML frontmatter. The agent runtime reads tools:allowed-tools: is the correct key for skills (SKILL.md), not agents. Every product-plans agent uses tools:. The restriction is likely silently ignored as-is.
  • Unrestricted Bash: The agents grant bare Bash access, which gives reviewers latent write capability. The product-plans agents use Bash(git *) to restrict Bash to read-only git commands.
  • Missing "Teammate-only" clause: The product-plans agents all end their descriptions with "Teammate-only — designed to run inside an Agent Team led by the plan-review-agents skill; not for standalone invocation." The plan-agent reviewer agents omit this, meaning they may auto-activate on broader intent matches than intended.

This is a PATCH fix (correctness of existing metadata, no new behavior) per marketplace.md versioning rules. The version bump is 1.9.0 → 1.10.0 since the frontmatter key change affects runtime behavior.

Files to Modify

agentics/
  • .claude-plugin/marketplace.json modified bump plan-agent 1.9.0 → 1.10.0
  • kit/plugins/plan-agent/
    • CHANGELOG.md modified add 1.10.0 entry
    • agents/
      • plan-reviewer-architecture.md modified frontmatter key + Bash restriction + teammate clause
      • plan-reviewer-completeness.md modified frontmatter key + Bash restriction + teammate clause
      • plan-reviewer-testability.md modified frontmatter key + Bash restriction + teammate clause
      • plan-reviewer-risk.md modified frontmatter key + Bash restriction + teammate clause
      • plan-reviewer-conventions.md modified frontmatter key + Bash restriction + teammate clause
      • plan-reviewer-ux.md modified frontmatter key + Bash restriction + teammate clause
      • plan-reviewer-accessibility.md modified frontmatter key + Bash restriction + teammate clause

Steps

1
todo Change allowed-tools: to tools: and narrow Bash to Bash(git *) in all 7 agent files
The agent runtime reads tools:, not allowed-tools: (which is the skill-only key). Bare Bash grants write access to reviewers who should only read; Bash(git *) restricts them to git commands, matching the product-plans pattern.
Verify
grep -c '^tools:' kit/plugins/plan-agent/agents/plan-reviewer-*.md returns 7 (one per file). grep 'allowed-tools' kit/plugins/plan-agent/agents/plan-reviewer-*.md returns nothing. grep 'Bash(git \*)' kit/plugins/plan-agent/agents/plan-reviewer-*.md returns 7.
2
todo Append the "Teammate-only" clause to all 7 agent descriptions
Without this clause, the agents may auto-activate on broad intent matches (e.g. "review my architecture"). The clause signals they are designed for team use only, matching the product-plans convention. The clause format is: Teammate-only — designed to run inside an Agent Team led by the review-plan skill; not for standalone invocation.
Verify
grep -c 'Teammate-only' kit/plugins/plan-agent/agents/plan-reviewer-*.md returns 7. Each description still starts with its original lens-specific text and ends with the teammate clause.
3
todo Bump plan-agent to 1.10.0 in .claude-plugin/marketplace.json
The frontmatter key change affects runtime behavior (tool restrictions may now be enforced). Per marketplace.md, this is a MINOR bump (1.9.0 → 1.10.0) since it changes agent activation behavior via the description clause. Set version only in marketplace.json, never in plugin.json.
Verify
grep -A3 '"plan-agent"' .claude-plugin/marketplace.json | grep version shows "1.10.0". grep version kit/plugins/plan-agent/.claude-plugin/plugin.json returns nothing. node -e "JSON.parse(require('fs').readFileSync('.claude-plugin/marketplace.json'))" exits 0.
4
todo Add a v1.10.0 CHANGELOG entry
Project convention requires a CHANGELOG entry for every version bump. Document the three fixes: frontmatter key correction, Bash narrowing, and teammate-only clause addition.
Verify
grep '1.10.0' kit/plugins/plan-agent/CHANGELOG.md returns a heading line. The entry lists all three changes (frontmatter key, Bash restriction, teammate clause).
5
todo Validate the plugin structure
Catch frontmatter, JSON, and registration errors before commit. Run /validate-plugin plan-agent and confirm all agent definitions parse correctly with the new tools: key.
Verify
validate-plugin reports no errors for plan-agent; node -e "JSON.parse(require('fs').readFileSync('.claude-plugin/marketplace.json'))" exits 0.

Tests

Tier 1 — Code-touching plan (agent definition files affect runtime behavior)
Objective Agent frontmatter matches product-plans pattern

Type: Structural validation (smoke test)

Asserts: All 7 plan-reviewer-*.md files use tools: (not allowed-tools:), grant Bash(git *) (not bare Bash), and include the "Teammate-only" description clause — matching the established product-plans agent convention.

Run: grep -cP '^tools:' kit/plugins/plan-agent/agents/plan-reviewer-*.md (expect all 7 return 1); grep -l 'allowed-tools' kit/plugins/plan-agent/agents/plan-reviewer-*.md (expect no output); grep -c 'Teammate-only' kit/plugins/plan-agent/agents/plan-reviewer-*.md (expect all 7 return 1).

Unit marketplace.json version and structure

File: .claude-plugin/marketplace.json

Targets: plan-agent entry version and JSON validity

Key cases: version is 1.10.0; JSON parses without error; plugin.json has no version key

Acceptance Criteria

Verification

Structural parity check: Run head -6 kit/plugins/plan-agent/agents/plan-reviewer-*.md and head -6 kit/plugins/product-plans/agents/product-reviewer-*.md side by side. The frontmatter shape should now match: both use tools:, both grant Bash(git *), both have a model: field, and both have descriptions ending with a "Teammate-only" clause.

No regressions: The agent body content (mandate, how-to-review, report-back sections) must be byte-identical to the v1.9.0 versions — only the frontmatter block changes.

JSON validity: node -e "JSON.parse(require('fs').readFileSync('.claude-plugin/marketplace.json'))" exits 0.

Completion Checklist

Required

Completion Report

No items to report — all requirements met.

Next Steps

Add disable-model-invocation to review-plan SKILL.md

Paste this prompt into Claude to execute this follow-up:

In the agentics repo, add `disable-model-invocation: true` to the frontmatter of `kit/plugins/plan-agent/skills/review-plan/SKILL.md`. The skill spawns a costly Agent Team and mutates plan files, so it should only run when explicitly invoked via `/plan-agent:review-plan`, not on ambient intent matching. Update the README to document this as command-only. Bump the version if this is a separate PR from the frontmatter fix.
Add backup-before-mutation to review-plan workflow

Paste this prompt into Claude to execute this follow-up:

In the agentics repo, update `kit/plugins/plan-agent/skills/review-plan/SKILL.md` Step 7 (Integrate) to copy the plan to `<stem>.bak` before the first Edit call. If any Edit fails, abort remaining edits and report the failure rather than continuing with a half-edited plan. This addresses the "self-mutating file with no backup" risk from the team review. Bump version in marketplace.json and add a CHANGELOG entry.
Wish List
Add a concrete WCAG rubric to plan-reviewer-accessibility Wish List

Speculative / blue-sky idea — not on the critical path. Paste into Claude when ready to explore:

Explore enriching the `plan-reviewer-accessibility` agent definition in `kit/plugins/plan-agent/agents/plan-reviewer-accessibility.md` with a concrete WCAG 2.1 AA checklist (contrast ratios, touch targets, focus management, ARIA patterns) so its findings are actionable rather than generic. Compare with the `product-reviewer-accessibility-expert` in the product-plans plugin and the `wcag-compliance-reviewer` plugin for reference. Return a design proposal before implementing.