Skip to content

[Bug]: $ARGUMENTS placeholder not substituted in Kiro CLI — file-based prompts don't support arguments #1926

@csvan

Description

@csvan

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

  1. Install SpecKit into a project (.specify/ directory present)
  2. Open kiro-cli chat in the project root
  3. Invoke /speckit.specify Add employee onboarding flow
  4. 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:

  1. Document the limitation — add a note to the SpecKit README / agent compatibility matrix that Kiro CLI does not support $ARGUMENTS in file-based prompts.
  2. 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.
  3. MCP server prompt — expose SpecKit commands as MCP prompts, which Kiro does support with arguments (@speckit/specify "Add employee onboarding").
  4. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions