diff --git a/OUTPUT_PROTOCOL.md b/OUTPUT_PROTOCOL.md new file mode 100644 index 0000000..6b480a9 --- /dev/null +++ b/OUTPUT_PROTOCOL.md @@ -0,0 +1,36 @@ +# Output Protocol + +Be terse. No preamble. No summaries of completed actions. No narration. +Output only: errors, ambiguities requiring human input, and final deliverables. +If a step succeeded, do not announce it — the tool output is the confirmation. + +## Do Not Output + +- Preamble: "Sure, I'll help with that." / "Great question!" / "Let me take a look..." +- Narration: "Now I'm going to read the file..." / "I can see that..." / "Let me check..." +- Post-action summaries: "I have successfully completed X. The changes I made were..." +- Task restatement: "You asked me to do X. I will now do X." +- Uncertainty hedging: "I think this might be..." / "This could potentially..." +- Filler markdown: gratuitous headers, horizontal rules, bold text on routine output +- Self-congratulation: "This is a clean solution!" / "The implementation looks good." + +## Output Rules + +- Make the tool call; state result only if non-obvious +- Errors only: if a step succeeded, say nothing +- Diffs not descriptions: show the change, not prose about it +- One-line status: `Created bd-abc.` not a paragraph about what was created +- No preamble, no postamble + +## Completion Message Format + +When sending a PROMPT_RESPONSE to a task request, use: + +``` +Status: completed | failed | blocked +Beads: bd-abc, bd-xyz (or none) +Errors: none (or list errors) +Notes: [only if actionable for the recipient] +``` + +When responding to a question, just answer it — no schema. diff --git a/bot-templates/Conductor b/bot-templates/Conductor index a5b8aee..49ecfb3 100755 --- a/bot-templates/Conductor +++ b/bot-templates/Conductor @@ -30,6 +30,15 @@ CONDUCTOR_ID=$(9p read $AGENT_MOUNT/list | head -1 | awk '{print $1}') echo "$ALIAS_NAME" | 9p write $AGENT_MOUNT/$CONDUCTOR_ID/alias cat </dev/null || : + cat ~/.kiro/OUTPUT_PROTOCOL.md 2>/dev/null || : if command -v agent-prompt &>/dev/null; then agent-prompt --harness=kiro else diff --git a/skills/anvillm-communication/SKILL.md b/skills/anvillm-communication/SKILL.md index b866f6d..14bd5ec 100644 --- a/skills/anvillm-communication/SKILL.md +++ b/skills/anvillm-communication/SKILL.md @@ -12,14 +12,37 @@ Use `list_sessions` to see all running agents. Output format: `{session_id} {ali The session_id (first field) is what you need for communication. +## Message Body Schema + +Message bodies must be terse structured text, not prose. Receiving agents parse structured output. + +**PROMPT_RESPONSE body** — depends on what the PROMPT_REQUEST asked: + +- *Question*: just the answer, one line if possible. +- *Task*: use the completion schema: +``` +Status: completed | failed | blocked +Beads: bd-abc, bd-xyz (or none) +Errors: none (or list errors) +Notes: [only if actionable for the recipient] +``` + +**QUERY_REQUEST / QUERY_RESPONSE body**: one-line question or answer. + +**REVIEW_REQUEST body**: `Bead: bd-abc\nDiff: \nQuestion: ` + +**APPROVAL_REQUEST body**: `Action: \nRisk: ` + +No prose. No preamble. No summaries of completed work. + ## Sending Messages Use the `send_message` tool with these parameters: - `from`: your AGENT_ID - `to`: recipient session_id or "user" - `type`: message type (see below) -- `subject`: brief description -- `body`: message content +- `subject`: brief description (≤10 words) +- `body`: structured message content (see schema above) ### Message Types