Replace unsupported argument syntax with agent-side parsing#5
Merged
Replace unsupported argument syntax with agent-side parsing#5
Conversation
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.
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
$ARGUMENTS(whole string) and$ARGUMENTS[N](positional). The$ARGUMENTS.<name>dot-access syntax andarguments:frontmatter array used since v0.1.0 were never a real Claude Code feature — agents saw literal placeholder text like$ARGUMENTS.auto-fixand fell back to safe defaults (auto-fix=false,model=fast).key=valuestring via$ARGUMENTSand include a structured "Parse arguments" section with a defaults table. The agent parses at runtime and logs resolved configuration.arguments:array replaced withargument-hint(the supported field).arguments:pattern and enforceargument-hint+$ARGUMENTS+ defaults table. Three new behavioral eval cases for empty arguments, partial arguments, and default fallback.Test plan
make test— 51 structural tests passmake eval— 11 behavioral evals pass withANTHROPIC_API_KEYset/look:againwith no arguments and verify auto-fix defaults to true/look:again auto-fix=falseand verify fixes are skipped