Skip to content

Conversation

@HartBrook
Copy link
Owner

@HartBrook HartBrook commented Jan 29, 2026

Summary

  • Root cause: Claude Code only supports $ARGUMENTS (whole string) and $ARGUMENTS[N] (positional). The $ARGUMENTS.<name> dot-access syntax and arguments: frontmatter array used since v0.1.0 were never a real Claude Code feature — agents saw literal placeholder text like $ARGUMENTS.auto-fix and fell back to safe defaults (auto-fix=false, model=fast).
  • Fix: Commands now receive the raw key=value string via $ARGUMENTS and include a structured "Parse arguments" section with a defaults table. The agent parses at runtime and logs resolved configuration.
  • Frontmatter: arguments: array replaced with argument-hint (the supported field).
  • Tests: Static test rewritten to reject the old arguments: pattern and enforce argument-hint + $ARGUMENTS + defaults table. Three new behavioral eval cases for empty arguments, partial arguments, and default fallback.
  • Version: 0.3.0 (breaking change to command prompt structure).

Test plan

  • make test — 51 structural tests pass
  • make eval — 11 behavioral evals pass with ANTHROPIC_API_KEY set
  • Manual: run /look:again with no arguments and verify auto-fix defaults to true
  • Manual: run /look:again auto-fix=false and verify fixes are skipped

Claude Code only supports $ARGUMENTS (whole string) and $ARGUMENTS[N]
(positional). The $ARGUMENTS.<name> dot-access syntax used since v0.1.0
was never interpolated — agents saw literal placeholder text and fell
back to safe defaults, causing auto-fix=false and model=fast in the wild.

Commands now use $ARGUMENTS to receive the raw key=value string and
include a "Parse arguments" section with a defaults table. The agent
parses key=value pairs at runtime and applies documented defaults for
any missing keys. Resolved configuration is logged for visibility.

Frontmatter uses argument-hint (supported) instead of the arguments
array (unsupported). Static tests reject the old pattern and enforce
the new one. Behavioral evals add cases for empty and partial arguments.
When no arguments are provided, $ARGUMENTS is replaced with an empty
string. The model could interpret the blank as "arguments not available"
rather than "user wants all defaults." Add explicit instruction that an
empty string means use all defaults, and wrap $ARGUMENTS in a blockquote
so the empty case is visually distinct. Tighten eval rubrics accordingly.
@HartBrook HartBrook merged commit 17aadde into main Jan 29, 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