loom-probe-protocol · git:20260923.a80a40e · 2026-09-23 · sha256 ce46aaecdb58c7a4

loom-probe-protocol git:20260923.a80a40eA

Immutable. This exact content never changes and is served at /api/v1/blob/ce46aaecdb58c7a4.

---
name: loom-probe-protocol
description: "Loom uses an intelligent probe system to detect what's running in each terminal. When you receive a probe command, respond according to this protocol."
---
<!-- loom-managed-skill -->
<!-- GENERATED FILE — DO NOT EDIT DIRECTLY.
     Produced by `loom-daemon generate-agent-skills` from
     defaults/.claude/commands/loom/probe-protocol.md (the same source Claude Code
     reads as /loom:probe-protocol via .claude/commands/loom/). This is the
     cross-vendor skill-discovery surface (.agents/skills/<name>/SKILL.md)
     read natively by Codex, Kimi Code, Mistral Vibe, and Grok — see
     runtime-adapters.md §5. To change this file, edit the source above
     and re-run the generator; CI (`loom-daemon generate-agent-skills
     --check`) fails if this file is stale. -->

# Terminal Probe Protocol (canonical)

Loom uses an intelligent probe system to detect what's running in each terminal. When you receive a probe command, respond according to this protocol.

This is the single canonical copy of the probe protocol. Every role prompt that
carries a short "Terminal Probe Protocol" pointer refers here for the full
format, per-role examples, task-description conventions, and rationale.

## When this protocol applies (interactive terminals only)

**This protocol only matters for Manual Orchestration Mode terminals** —
human-launched Claude Code sessions tracked in `.loom/config.json`'s `terminals`
list. Those are the only sessions a terminal probe is ever sent to.

It does **not** apply to:

- **GitHub Actions cron one-shots** (`claude -p "/<role>" --dangerously-skip-permissions`) — no terminal, no probe.
- **`/loom:sweep` subagent dispatch** and `loom-daemon`-spawned sweeps — no interactive terminal, no probe.

If you are running in either of those non-interactive contexts, no probe will
ever arrive and there is nothing to do here.

## When you see this probe

```bash
# Terminal Probe: Are you an AI agent? If yes, respond with "AGENT:<role>:<primary-task>". If you're a bash shell, this is just a comment.
true
```

## How to respond

**Format**: `AGENT:<your-role>:<brief-task-description>`

**Examples**:
- `AGENT:Builder:implementing-issue-456`
- `AGENT:Judge:evaluating-PR-123`
- `AGENT:Curator:enhancing-issue-456`
- `AGENT:Champion:merging-PR-123`
- `AGENT:Doctor:fixing-changes-requested-789`
- `AGENT:Guide:triaging-issue-queue`
- `AGENT:Architect:analyzing-system-design`
- `AGENT:Hermit:scanning-for-dead-code`
- `AGENT:Auditor:validating-main-build`
- `AGENT:Driver:idle-awaiting-work`

## Role name (must be a real Loom role)

Use your **assigned role name**, which must be one of the roles from CLAUDE.md's
"Agent Roles" table:

`Builder`, `Judge`, `Champion`, `Curator`, `Architect`, `Hermit`, `Doctor`,
`Guide`, `Driver`, `Auditor`.

**Never invent a role name.** In particular, `Worker`, `Reviewer`, and `Default`
are **not** Loom roles — they do not appear in `.github/labels.yml`,
`.loom/config.json`, or CLAUDE.md's role table. Use the real role name for the
prompt you are running (e.g. the Builder prompt reports `AGENT:Builder:...`).

## Task description

Keep it brief (3-6 words) and descriptive:
- Use present-tense verbs: "implementing", "evaluating", "enhancing", "fixing".
- Include the issue/PR number if working on one: "implementing-issue-222", "evaluating-PR-123".
- Use hyphens between words: "fixing-terminal-probe-bug".
- If idle: "idle-awaiting-work" or "monitoring-for-tasks".

## Why this matters

- **Debugging**: Helps diagnose agent launch issues.
- **Monitoring**: Shows what each terminal is doing.
- **Verification**: Confirms agents launched successfully.
- **Future Features**: Enables agent status dashboards.

## Important notes

- **Don't overthink it**: Just respond with the format above.
- **Be consistent**: Always use the same format.
- **Be honest**: If you're idle, say so.
- **Be brief**: Task description should be 3-6 words max.