The user wants to take their previous message — the most recent user turn in this conversation before this invocation — and save it as a reusable custom slash command that is parameterized, so the variable parts become arguments.
Raw arguments: $ARGUMENTS
Do this:
- Parse
$ARGUMENTSinto a name and an optional scope flag:--global/-g/global-> system-wide.--project/-p/project-> current project.- Everything else is the command name.
- If no name is given, STOP and ask for one. A name is required.
- Determine where to save (scope):
- If a scope flag was given, use it.
- Otherwise ASK with AskUserQuestion: "Where should
/<name>be saved?" -> Global or Project. - Global path:
~/.claude/commands/ - Project path:
<current working directory>/.claude/commands/— create if missing; fall back to Global if not in a project and say so.
- Normalize the name: lowercase, kebab-case, strip any leading
/and.md. - Find the user's previous prompt (the message right before this call).
- Identify the parts of the prompt that are specific values likely to change each run — a
filename, a topic, a function/variable name, a language, a count, etc. Replace them with
placeholders:
- One variable ->
$ARGUMENTS. - Multiple variables ->
$1,$2,$3in the order they should be passed. Keep the fixed instructions intact.
- One variable ->
- Add YAML frontmatter with a one-line
descriptionand anargument-hintlisting the placeholders in order, e.g.argument-hint: <filename> <language>. - Show the user the parameterized prompt and how to call it (e.g.
/<name> utils.js python). - Write the file to
<chosen path>/<name>.md. - If that file already exists, show its current contents and ask before overwriting.
- Confirm: print the saved file path, the scope, and that
/<name>is now available.