anthropics / anthropics/claude-code

C:/Program Files/Git/<skill> help has no defined behaviour — the model reinterprets the argument, and can act on it

Open
#95,312 0 comments 0 reactions 0 assignees View on GitHub
area:skills enhancement
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.