Files
gavrielc d2f53048f2 docs(module-fragments): add instructions for create_agent, interactive, and remaining core tools
Three MCP tool groups were orphaned from the ambient CLAUDE.md context
because they shipped no `*.instructions.md` alongside their source.
Backfill them so the composer picks them up as fragments on next spawn:

- core.instructions.md: add `send_file` (artifact delivery, path relative
  to /workspace/agent/) and `add_reaction` (by `#N` id with emoji
  shortcode name).
- interactive.instructions.md: `ask_user_question` (blocking
  multiple-choice with selectedLabel/value option objects, 300s default
  timeout) and `send_card` (non-blocking structured render with
  fallbackText). Opens with a one-line framing of the contrast between
  the two.
- agents.instructions.md: `create_agent` with how-it-works, when-to-use
  (companions vs collaborators — persistent memory vs independent
  parallel work), when-NOT-to-use (short tasks should use the SDK `Agent`
  tool instead), and guidance for writing the seed instructions string.

No composer changes — scan in `src/claude-md-compose.ts` already picks up
any file matching `*.instructions.md` in the mcp-tools directory.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 18:05:50 +03:00

1.6 KiB

Interactive prompts

The two tools here solve different problems: ask_user_question forces a decision and waits for it; send_card displays structured content and moves on.

Asking a multiple-choice question (ask_user_question)

mcp__nanoclaw__ask_user_question({ title, question, options, timeout? }) presents the user with a set of choices and blocks your turn until they tap one or the timeout expires (default: 300 seconds). Returns their chosen value.

options can be plain strings or { label, selectedLabel?, value? } objects:

  • label — the button text shown before selection
  • selectedLabel — the text shown on the button after selection (useful for confirmations, e.g. "✓ Confirmed")
  • value — the string returned to you when that option is chosen (defaults to label)

Use this when you genuinely cannot proceed without a decision. For free-text input, send a normal message and wait for their reply — don't reach for this tool.

Structured cards (send_card)

mcp__nanoclaw__send_card({ card, fallbackText? }) renders a structured card and returns immediately — it does not pause your turn or collect a response.

card supports: title, description, children (nested text or content blocks), and actions (buttons). fallbackText is sent as a plain message on platforms without card support.

Use this for presenting information in a cleaner format than prose: summaries, options the user can read (but you're not waiting on), or results with contextual buttons. If you need the user to actually choose something and return a value, use ask_user_question instead.