Skip to content

Restore /look:again and /look:tidy under /look: namespace#11

Merged
HartBrook merged 1 commit into
mainfrom
fix/restore-commands-namespacing
May 21, 2026
Merged

Restore /look:again and /look:tidy under /look: namespace#11
HartBrook merged 1 commit into
mainfrom
fix/restore-commands-namespacing

Conversation

@pike00

@pike00 pike00 commented May 12, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Migrate /look:again and /look:tidy back from src/skills/ to src/commands/ so they appear under the /look: namespace in the slash-command picker (matching the README) instead of as bare /again and /tidy.
  • The underlying bug that drove the 0.4.0 commands/ -> skills/ migration (multi-command plugins misrouting on duplicate name: frontmatter) was fixed upstream in Claude Code 2.1.101: "Fixed several plugin issues: slash commands resolving to the wrong plugin with duplicate name: frontmatter ..." The skills workaround is no longer needed.
  • Defense-in-depth: the name: frontmatter field is now omitted from both command files, so the slash name derives from the filename. This removes the duplicate-name collision vector entirely, regardless of resolver version.
  • lookagain-output-format remains a skill - the reviewer subagent invokes it via the Skill tool; moving it to commands/ would break the again workflow.
  • Version bumped 0.5.0 -> 0.5.1.

Migration history

  • 1d15144 (0.4.0, 2026-01-29) - workaround migration, commands/ -> skills/.
  • This PR (0.5.1) - revert the workaround now that upstream is fixed.

Test results

Structural (make test)

=== Results: 59 passed, 0 failed ===

Behavioral (make eval via promptfoo)

14 / 14 passed against anthropic:messages:claude-sonnet-4-6. Total cost $0.6067, duration 1m 43s, 58,156 tokens (14,680 prompt + 23,895 completion + 19,581 cached).

# Test Result Latency Cost Rubric finding (truncated)
1 no arguments -> defaults pass 40.0s $0.0501 Correctly applies passes=3, target=staged, auto-fix=true, model=thorough, max-passes=7. Describes applying must_fix fixes; does not complain about missing arguments.
2 auto-fix=true -> applies fixes pass 44.1s $0.0541 Output repeatedly states it will apply fixes for must_fix issues between passes.
3 auto-fix=false -> skips fixes pass 41.5s $0.0499 Output repeatedly states no fixes will be applied.
4 passes=5 -> 5 initial passes pass 48.6s $0.0489 Assertion passed.
5 model=fast -> haiku pass 40.6s $0.0524 Assertion passed.
6 model=thorough -> no override pass cached $0.0541 Output explicitly omits the model parameter from the Task tool call.
7 target=branch -> branch scope pass 43.7s $0.0548 Output uses "scope: branch - review all changes on this branch vs base".
8 only auto-fix=false -> rest default pass 41.5s $0.0489 Correctly parses auto-fix=false and applies all other defaults; no fixes applied.
9 summary tables include Suggested Fix + global ID pass cached $0.0501 Assertion passed.
10 aggregate.md preserves full Suggested Fix; conversation may truncate pass cached $0.0501 Output explicitly states "full text is always in aggregate.md and aggregate.json".
11 must_fix table has Fixed column; should_fix/suggestions do not pass cached $0.0501 Confirms must_fix has the Fixed column and the other two tables omit it.
12 tidy all=true -> removes all runs pass 14.5s $0.0155 Output skips any date/cutoff calculation when all=true.
13 tidy keep=3 -> date-based retention pass 13.9s $0.0148 Calculates cutoff = today - 3 days, removes only directories older than cutoff.
14 tidy no arguments -> keep=1, all=false pass 11.5s $0.0131 Uses defaults; describes 1-day retention with date-based filtering.

Full result JSON is 417 KB (not attached). To regenerate locally:

nvm use 22.22.0   # or any node >=22.22.0 / ^20.20.0
make eval

The underlying bug that drove the 0.4.0 commands -> skills migration
(multi-command plugins misrouting due to duplicate name: frontmatter)
was fixed upstream in Claude Code 2.1.101. The skills/ workaround now
breaks the /look: namespace in the slash-command picker because skills
surface by their bare name field, not under the plugin prefix.

- Restore src/commands/{again,tidy}.md from src/skills/{again,tidy}/SKILL.md
- Omit the name: frontmatter field so the slash name derives from the
  filename, removing any future duplicate-name collision vector
- Keep lookagain-output-format under skills/ - the reviewer subagent
  invokes it via the Skill tool, it is not a user-facing command
- Update plugin.json, marketplace.json, scripts/test.sh, scripts/package.sh,
  evals/promptfooconfig.yaml, and CONTRIBUTING.md for the new layout
- Bump version to 0.5.1

make test: 59 passed, 0 failed
make eval: 14 passed, 0 failed

@HartBrook HartBrook left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

Looks good!

@HartBrook HartBrook merged commit 995e668 into main May 21, 2026
1 check passed
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.

2 participants