anthropics / anthropics/claude-code
C:/Program Files/Git/<skill> help has no defined behaviour — the model reinterprets the argument, and can act on it
- Dominant language
- Python
- Stars
- 145k
- Forks
- 23.1k
- PR merge metrics
- PR metrics pending
Description
### What happens
Invoking a custom skill as a slash command with a bare `help` argument (`/my-skill help`) injects the whole `SKILL.md` into the context, ending with `ARGUMENTS: help`. Nothing tells the model what that argument means, so it improvises.
In my case the skill bundles a small executable. The model read `help` as a question about a `--help` flag of that executable and opened with "the `--help` command does not exist", then printed a summary. I replied "create it" — which, against my original meaning ("show me the skill's help"), only made sense as a continuation of *its* framing. It was read as a feature request, and the model edited the skill's source files to add that flag.
So a read-only, documentation-level request became source edits, through two compounding reinterpretations of one reserved-looking word.
### Expected
`help` (and `--help`, `-h`, `?`) passed to a slash-command skill should behave deterministically: show the skill's name, description, accepted arguments and documented commands, taken from the skill definition — without the skill body being executed and without the model deciding what the word means.
### Why it matters
- A word users reasonably expect to be safe and read-only can lead to file modifications.
- Every skill author must otherwise handle `help` by hand, or accept that the model guesses differently each time.
- The failure is silent: the model sounds confident about a flag the user never asked about.
### Suggested fixes
1. **Reserve the token at harness level.** For slash-command skills, `help` / `--help` / `-h` / `?` renders a generated help card (name, description, `argument-hint`, documented commands) instead of handing the skill to the model.
2. **If it must be passed through**, state in the injected prompt that an unrecognized argument is a question *about* the skill, never an instruction to modify it or its files.
3. **Optionally** support a structured `commands` / `argument-hint` block in skill frontmatter so the generated help has real content to show.
### Environment
Claude Code in the desktop app (Code tab), Windows 11, Opus 5. Reproduces with any skill invoked as `/ help`.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reproducing `/my-skill help` and tracing the slash-command handling that injects `SKILL.md` with `ARGUMENTS: help`. Define completion as deterministic handling of `help`, `--help`, `-h`, and `?` that presents documented skill information without executing the skill body or modifying its files.
Written by the indexing model from the issue text.
Assessment
- Domain
- cli, devtools
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 50/100