Summary
$ARGUMENTS is never substituted when SpecKit prompts are invoked via the Kiro CLI (kiro-cli chat). The literal string $ARGUMENTS is passed to the AI model, causing the agent to either error out or prompt the user to re-enter their input.
Environment
- AI Tool: Kiro CLI (
kiro-cli chat)
- SpecKit version: latest (github/spec-kit)
- OS: macOS
Steps to Reproduce
- Install SpecKit into a project (
.specify/ directory present)
- Open
kiro-cli chat in the project root
- Invoke
/speckit.specify Add employee onboarding flow
- Observe the prompt fires but
$ARGUMENTS is passed literally to the model
Expected Behaviour
The text typed after /speckit.specify (i.e. Add employee onboarding flow) should be substituted for $ARGUMENTS in the prompt body before the model receives it.
Actual Behaviour
The model receives the literal string $ARGUMENTS and responds:
The $ARGUMENTS placeholder wasn't replaced — no feature description was provided.
Root Cause
Kiro CLI's file-based prompt system does not support argument substitution. Per the official Kiro documentation:
"File-based prompts (local and global) do not support arguments."
Arguments are only supported for MCP server prompts (@server-name/prompt-name <arg>). Local prompts stored in .kiro/prompts/ (or .specify/ via symlink/copy) receive no argument injection mechanism.
Impact
All SpecKit commands that rely on $ARGUMENTS substitution are broken on Kiro CLI:
/speckit.specify
- Any other command that uses
$ARGUMENTS in its prompt body
Suggested Fix
One or more of the following:
- Document the limitation — add a note to the SpecKit README / agent compatibility matrix that Kiro CLI does not support
$ARGUMENTS in file-based prompts.
- Workaround guidance — instruct Kiro users to type their feature description as a follow-up message immediately after invoking the prompt (the prompt instructions already hint at this: "Assume you always have it available in this conversation even if
$ARGUMENTS appears literally"), but this is not obvious to users.
- MCP server prompt — expose SpecKit commands as MCP prompts, which Kiro does support with arguments (
@speckit/specify "Add employee onboarding").
- Prompt self-detection — add a preamble to affected prompts that detects the literal
$ARGUMENTS string and instructs the model to ask the user for input gracefully rather than erroring.
References
Summary
$ARGUMENTSis never substituted when SpecKit prompts are invoked via the Kiro CLI (kiro-cli chat). The literal string$ARGUMENTSis passed to the AI model, causing the agent to either error out or prompt the user to re-enter their input.Environment
kiro-cli chat)Steps to Reproduce
.specify/directory present)kiro-cli chatin the project root/speckit.specify Add employee onboarding flow$ARGUMENTSis passed literally to the modelExpected Behaviour
The text typed after
/speckit.specify(i.e.Add employee onboarding flow) should be substituted for$ARGUMENTSin the prompt body before the model receives it.Actual Behaviour
The model receives the literal string
$ARGUMENTSand responds:Root Cause
Kiro CLI's file-based prompt system does not support argument substitution. Per the official Kiro documentation:
Arguments are only supported for MCP server prompts (
@server-name/prompt-name <arg>). Local prompts stored in.kiro/prompts/(or.specify/via symlink/copy) receive no argument injection mechanism.Impact
All SpecKit commands that rely on
$ARGUMENTSsubstitution are broken on Kiro CLI:/speckit.specify$ARGUMENTSin its prompt bodySuggested Fix
One or more of the following:
$ARGUMENTSin file-based prompts.$ARGUMENTSappears literally"), but this is not obvious to users.@speckit/specify "Add employee onboarding").$ARGUMENTSstring and instructs the model to ask the user for input gracefully rather than erroring.References