fix(commands): give every command an imperative description by wshobson · Pull Request #726 · wshobson/agents · GitHub
Skip to content

fix(commands): give every command an imperative description - #726

Merged
wshobson merged 2 commits into
mainfrom
fix/command-frontmatter
Sep 25, 2026
Merged

wshobson merged 2 commits into
mainfrom
fix/command-frontmatter

Conversation

@wshobson

@wshobson wshobson commented Sep 25, 2026 •

Copy link
Copy Markdown
Owner

Summary

35 command files had no frontmatter, so claude plugin validate --strict failed with "No frontmatter block found" on the plugins that ship them. Each one now has a one-line description: written from the command body. Four commands reuse the wording of an identical command that already had a description (refactor-clean, tech-debt, error-analysis, and error-trace).

The six descriptions from #719 started with "Use when", which is the trigger style for skills. Four of them now use the imperative style that the other command descriptions use. The other two (deps-audit and smart-debug) reuse the description of an identical copy in another plugin, so every duplicated command reads the same wherever it ships.

The change is metadata only, so no command body changes and no plugin version moves.

Scope

  • Plugin authoring (new or modified plugins/<name>/...)

Test plan

  • claude plugin validate --strict passes on all 25 plugins with new descriptions and on the 5 plugins from fix: describe six Claude plugin commands #719.
  • No file under plugins/*/commands/ is left without frontmatter.
  • Every generated command frontmatter in .codex, .opencode, .copilot, .antigravity, and .pi loads with yaml.safe_load.
  • make generate-all leaves no registry drift, and make validate STRICT=1 passes across 6 harnesses.
  • make garden reports 0 errors and 18 warnings, the same as main.
  • make test passes with 673 tests, and make lint passes.

https://claude.ai/code/session_012TJthve8fGapk6u7aQg5iG

35 command files had no frontmatter, so `claude plugin validate --strict`
failed with "No frontmatter block found" on the plugins that ship them.
Each one now has a one-line `description:` written from the command body.
Four commands reuse the wording of an identical command that already had
one (refactor-clean, tech-debt, error-analysis, error-trace).

The six descriptions added in #719 started with "Use when", which is the
trigger style for skills. They now use the imperative style that every
other command description uses, so the two identical context-restore
copies read the same.

No command body changes and no version bumps.

Claude-Session: https://claude.ai/code/session_012TJthve8fGapk6u7aQg5iG
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 25, 2026 •

Copy link
Copy Markdown

@coderabbitai

coderabbitai Bot commented Sep 25, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 59c246ee-ceba-4fa4-88be-8a8d7a3bdb65

📥 Commits

Reviewing files that changed from the base of the PR and between 3bb36d6 and 98f3cdb.

📒 Files selected for processing (2)
  • plugins/debugging-toolkit/commands/smart-debug.md
  • plugins/dependency-management/commands/deps-audit.md
🚧 Files skipped from review as they are similar to previous changes (2)
  • plugins/dependency-management/commands/deps-audit.md
  • plugins/debugging-toolkit/commands/smart-debug.md

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 3 remain after this review.

📜 Recent review details
⚠️ CI failures not shown inline (2)

GitHub Actions: Claude Code Review / 0_claude-review.txt: fix(commands): give every command an imperative description

Conclusion: failure

View job details

##[group]Run # Do NOT pass --tsconfig-override here. It triggers a Bun runtime bug
 �[36;1m# Do NOT pass --tsconfig-override here. It triggers a Bun runtime bug�[0m
 �[36;1m# ("Internal error: directory mismatch for directory .../tsconfig.json")�[0m
 �[36;1m# that aborts the run with exit code 1. Bun already auto-discovers the�[0m
 �[36;1m# action's own tsconfig.json by walking up from the entry file, so the�[0m
 �[36;1m# override is redundant. See oven-sh/bun#25730.�[0m
 �[36;1mbun --no-env-file \�[0m
 �[36;1m  --config="${GITHUB_ACTION_PATH}/bunfig.toml" \�[0m
 �[36;1m  run ${GITHUB_ACTION_PATH}/src/entrypoints/run.ts�[0m
 shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
 env:
   MODE:
   PROMPT: REPO: wshobson/agents
PR NUMBER: 726
You are reviewing a pull request for claude-agents, a plugin
marketplace that ships one Markdown source to seven harnesses:
Claude Code, OpenAI Codex CLI, Cursor, OpenCode, the Google
Antigravity CLI, GitHub Copilot, and Pi. The source of truth is
`plugins/`. The trees under `.codex/`, `.opencode/`, `.copilot/`,
`.antigravity/`, and the `skills/`, `prompts/`, and `agents/`
subdirectories of `.pi/` are generated by `make generate` and are
gitignored. The small registries under `.agents/plugins/`,
`.cursor-plugin/`, `.cursor/rules/`, and `plugins/*/.codex-plugin/`
are generated by `make generate-all` and committed, so a change to
them is fine when it comes from the generator and wrong when it is
typed by hand.
Read `AGENTS.md` at the repo root first. Use `docs/authoring.md`
for frontmatter shapes, `docs/harnesses.md` for what each harness
supports, and `docs/plugins.md` for the catalog.
## What to check
1. Source of truth. Hand edits belong in `plugins/`,
   `.claude-plugin/marketplace.json`, `docs/`, `tools/`,
   `.github/`, the `Makefile`, and the top-level Markdown files.
   Flag any hand edit to a generated tree or registry.
2. Frontmatter. Every agent under `plugins/*/agents/*.md` needs
   `name`, `description`, and a `...

GitHub Actions: Claude Code Review / claude-review: fix(commands): give every command an imperative description

Conclusion: failure

View job details

##[group]Run # Do NOT pass --tsconfig-override here. It triggers a Bun runtime bug
 �[36;1m# Do NOT pass --tsconfig-override here. It triggers a Bun runtime bug�[0m
 �[36;1m# ("Internal error: directory mismatch for directory .../tsconfig.json")�[0m
 �[36;1m# that aborts the run with exit code 1. Bun already auto-discovers the�[0m
 �[36;1m# action's own tsconfig.json by walking up from the entry file, so the�[0m
 �[36;1m# override is redundant. See oven-sh/bun#25730.�[0m
 �[36;1mbun --no-env-file \�[0m
 �[36;1m  --config="${GITHUB_ACTION_PATH}/bunfig.toml" \�[0m
 �[36;1m  run ${GITHUB_ACTION_PATH}/src/entrypoints/run.ts�[0m
 shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
 env:
   MODE:
   PROMPT: REPO: wshobson/agents
PR NUMBER: 726
You are reviewing a pull request for claude-agents, a plugin
marketplace that ships one Markdown source to seven harnesses:
Claude Code, OpenAI Codex CLI, Cursor, OpenCode, the Google
Antigravity CLI, GitHub Copilot, and Pi. The source of truth is
`plugins/`. The trees under `.codex/`, `.opencode/`, `.copilot/`,
`.antigravity/`, and the `skills/`, `prompts/`, and `agents/`
subdirectories of `.pi/` are generated by `make generate` and are
gitignored. The small registries under `.agents/plugins/`,
`.cursor-plugin/`, `.cursor/rules/`, and `plugins/*/.codex-plugin/`
are generated by `make generate-all` and committed, so a change to
them is fine when it comes from the generator and wrong when it is
typed by hand.
Read `AGENTS.md` at the repo root first. Use `docs/authoring.md`
for frontmatter shapes, `docs/harnesses.md` for what each harness
supports, and `docs/plugins.md` for the catalog.
## What to check
1. Source of truth. Hand edits belong in `plugins/`,
   `.claude-plugin/marketplace.json`, `docs/`, `tools/`,
   `.github/`, the `Makefile`, and the top-level Markdown files.
   Flag any hand edit to a generated tree or registry.
2. Frontmatter. Every agent under `plugins/*/agents/*.md` needs
   `name`, `description`, and a `...

📝 Summary

Summary by CodeRabbit

  • Documentation
    • Added or clarified descriptions for commands covering accessibility, development, testing, security, observability, documentation, and project workflows, making their capabilities easier to identify.
    • Standardized wording across several command descriptions.

Walkthrough

Command files across plugins add YAML frontmatter descriptions or revise existing descriptions. The command guidance remains unchanged where noted.

Changes

Command metadata

Layer / File(s) Summary
Add command descriptions
plugins/*/commands/*.md
New YAML frontmatter describes the scope and capabilities of commands across multiple plugins.
Edit existing descriptions
plugins/context-management/commands/*.md, plugins/debugging-toolkit/commands/smart-debug.md, plugins/dependency-management/commands/deps-audit.md, plugins/security-compliance/commands/compliance-check.md, plugins/security-scanning/commands/security-dependencies.md
Existing descriptions have wording or punctuation changes.

Priority: ➖ Normal

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix

Merge Risk: ⚪ Minimal · up to 98f3c

The description changes meet the checked-in command metadata contract; no actionable issue remains before merge.

Architecture Summary

Architecture risk: 🔵 Low · up to 3bb36

The change affects 1 system.

Changed systems: plugins

Architecture concerns
No architecture-level concerns identified.

Review details

Systems and components

  • observed — plugins (service) was modified; 41 changed files map to changed impact.

Before / after behavior

  • observed — Modified behavior in plugins/accessibility-compliance/commands/accessibility-audit.md: Added frontmatter with a description of the accessibility audit command.
  • observed — Modified behavior in plugins/agent-orchestration/commands/improve-agent.md: Added YAML front matter with the command description and its performance-baseline, prompt-engineering, A/B-testing, and staged-rollout scope.
  • observed — Modified behavior in plugins/agent-orchestration/commands/multi-agent-optimize.md: Added YAML frontmatter declaring the command’s description; the existing optimization-toolkit content is unchanged.
  • observed — Modified behavior in plugins/api-testing-observability/commands/api-mock.md: Added YAML front matter with a description of the API mocking command.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: adding imperative descriptions to command metadata.
Description check ✅ Passed The description directly explains the frontmatter changes, validation issue, scope, and test results.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
✨ Simplify code
  • Commit to this branch
  • Create a new PR

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

A rabbit reads each command with care
New descriptions bloom here and there
YAML settles into place
Old words shift with measured grace
Then hops away, light as air

Comment @coderabbitai help to get the list of available commands.

@claude

claude Bot commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

Claude encountered an error after 2m 32s —— View job


Review: PR #726 — command frontmatter

  • Read the diff against origin/main
  • Check duplicated command files share one description
  • Check frontmatter shape against docs/authoring.md
  • Check catalog counts and quality gates
  • Post review

No blocking issues. The two duplicate-drift findings from the previous review are fixed in 98f3cdb — dependency-management/deps-audit and debugging-toolkit/smart-debug now carry the same wording as their twins in codebase-cleanup and error-diagnostics.

What I verified:

  • All 105 files under plugins/*/commands/ now open with a frontmatter block and a non-empty description; none is left bare. That matches the required shape in docs/authoring.md:33 (description required, argument-hint optional).
  • Every duplicated command basename with an identical body now ships one description: tech-debt, deps-audit, refactor-clean, context-restore, doc-generate, pr-enhance, multi-agent-review, error-trace, error-analysis, smart-debug. The two accessibility-audit files (accessibility-compliance 518 lines, ui-design 496) and the two setup.md files are genuinely different commands, so their differing descriptions are correct.
  • The diff touches plugins/ only — no hand edits to a generated tree or to a committed registry, and no registry embeds command descriptions, so no make generate-all drift is expected.
  • Command counts are unchanged at 105, so no catalog update is needed in docs/plugins.md / AGENTS.md / README.md.
  • Dropping the Use when … phrasing does not trip MISSING_TRIGGER: that check runs over plugin.skills only (tools/tests/test_real_world.py:127, plugins/plugin-eval/src/plugin_eval/layers/static.py:175), never over commands. All new descriptions are well under Pi's 1024-char warning in tools/validate_generated.py:658, and none contains a character that _escape_toml_basic would mangle on the Antigravity path.

One non-blocking nit:

  • docs/authoring.md:35-38 puts the "Description triggers … MISSING_TRIGGER lint fires without one" paragraph directly under the frontmatter table whose last row is commands/<name>.md, so it now reads as if commands should keep the Use when … style this PR is deliberately removing. Scoping that paragraph to skills and agents would keep the command convention unambiguous for the next author. Fix this →

I could not run make validate STRICT=1, make garden, make test, or make smoke-test here — make and direct python3 invocations are outside my allowed tools in this run, so the gate results in the PR description are unverified by me. Given the change is frontmatter-only and adds a field every adapter already had a fallback for, I see no gate this could break.
· branch fix/command-frontmatter

@wshobson wshobson mentioned this pull request Sep 25, 2026
13 of 21 tasks
@@ -1,5 +1,5 @@
---
description: Use when auditing dependencies for vulnerabilities, license compliance, and maintenance risks.
description: Audit dependencies for vulnerabilities, license compliance, and maintenance risks

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

plugins/codebase-cleanup/commands/deps-audit.md is byte-identical to this file apart from line 2, so after this rewording the same command still ships two different descriptions — the same mismatch the PR fixes for context-restore.

-description: Audit dependencies for vulnerabilities, license compliance, and maintenance risks
+description: Audit project dependencies for vulnerabilities, outdated packages, license conflicts, and supply chain risks — then provide actionable remediation strategies.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 98f3cdb. dependency-management/deps-audit now uses the same description as the copy in codebase-cleanup.

@@ -1,5 +1,5 @@
---
description: Use when investigating an issue with debugging tools, observability data, and root cause analysis.
description: Investigate an issue with debugging tools, observability data, and root cause analysis

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same duplicate-copy drift: plugins/error-diagnostics/commands/smart-debug.md has an identical body (only the subagent_type differs) but keeps "AI-assisted smart debugging — parse error messages, stack traces, and failure patterns…", so the two copies read differently after this change.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 98f3cdb. debugging-toolkit/smart-debug now uses the same description as the copy in error-diagnostics. No other copy of the six commands differs.

dependency-management/deps-audit and debugging-toolkit/smart-debug have
the same bodies as the copies in codebase-cleanup and error-diagnostics,
which already had descriptions. Both now reuse that wording, so each
duplicated command reads the same wherever it ships.

Claude-Session: https://claude.ai/code/session_012TJthve8fGapk6u7aQg5iG
@wshobson

Copy link
Copy Markdown
Owner Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Sep 25, 2026 •

Copy link
Copy Markdown

@wshobson
wshobson merged commit 76ac708 into main Sep 25, 2026
12 of 13 checks passed
@wshobson
wshobson deleted the fix/command-frontmatter branch September 25, 2026 22:04
wshobson added a commit that referenced this pull request Sep 25, 2026
…iew prompt (#729)

* ci(claude): run both Claude workflows on Opus 5.5 and sharpen the review prompt

Both workflows now run claude-opus-5-5 on claude-code-action v1.0.234.
Opus 5.5 defaults to medium effort, so the review sets high and the
@claude workflow sets xhigh for coding work.

The review job failed on #726 and #728 because Claude finished in 31
turns against a limit of 30, so the limit is now 60. The review prompt
now tells Claude that CI runs the gates and that it should read them with
`gh pr checks`, since earlier reviews spent turns on commands the job
can't run. It also checks the change against its linked issue, applies
the commercial and external-service rules in CONTRIBUTING, skips findings
that Codex already raised, and marks findings as blocking or not.

The @claude workflow allows `uv` and `make` but never installed uv, so it
now installs uv before running Claude.

Claude-Session: https://claude.ai/code/session_012TJthve8fGapk6u7aQg5iG

* ci(claude): let the reviewer read failed logs, review bodies, and issue comments

The prompt asks the reviewer to name the gate that failed, but
`gh pr checks` shows only check status, so the job can now run
`gh run view --log-failed` with `actions: read`, and it requests
`checks: read` for `gh pr checks`. The reviewer reads proposal issues with
`--comments`, so it can see a maintainer answer, and it reads review
bodies before it decides a finding is new. The commercial check now
limits itself to runnable payment, licensing, or access-control
machinery, which matches the exception in CONTRIBUTING.

Claude-Session: https://claude.ai/code/session_012TJthve8fGapk6u7aQg5iG
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant