agentskills.codes
GR

grove-status

Emit runtime status onto the Grove bus while working as a gardener (or head-gardener) in a Grove run — so the maintainer's dashboard shows who is working, on what, and who is blocked. Use at role start, at every state transition (working/blocked/awaiting-gate/done/failed), when issuing a verdict, wh

Install

mkdir -p .claude/skills/grove-status && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/17182" && unzip -o skill.zip -d .claude/skills/grove-status && rm skill.zip

Installs to .claude/skills/grove-status

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Emit runtime status onto the Grove bus while working as a gardener (or head-gardener) in a Grove run — so the maintainer's dashboard shows who is working, on what, and who is blocked. Use at role start, at every state transition (working/blocked/awaiting-gate/done/failed), when issuing a verdict, when parking a question, and poll for commands at step seams.
359 chars✓ has a “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)

About this skill

grove-status — report yourself on the runtime bus

You are a gardener in a Grove run. Alongside your artifact work, report your state onto the runtime bus so the human can see the swarm live. The bus is telemetry, NOT truth: artifact state remains the source of truth (ADR-0030 — "state derived from artifact existence, never agent claims"). Never report progress you have not actually made; a false "working" claim is worse than silence.

This skill talks to a vendored wisp install. Wisp is a separate repo; grove never requires it to function (telemetry is optional by construction) but this skill is the gardener-flavored wrapper around it once a consuming project vendors it.

Recursion note (this repo specifically): this copy of the skill lives inside wisp itself — wisp is the telemetry tool, not a consumer of it. So the vendor path below resolves to . (the repo root): a gardener working in wisp reports through wisp's own emit.ts, on wisp's own bus, at .grove/runtime/events.ndjson. In any other consuming project, this same skill would point at wherever that project vendored or installed wisp instead (its own README names the emitter entrypoint — as of wisp v1 that's an emit.ts/emit.js at the vendor root).

When to emit

MomentCommand
Role start (cold start)status --state spawned --activity "<brief>"
Starting/advancing a stepstatus --state working --activity "<what, concretely>" --ref <artifact-anchor>
Parked on a questionquestion --id <q-id> --text "<the question>" then status --state blocked
Waiting on a human gatestatus --state awaiting_gate --activity "<which gate>"
Issuing a gate/review verdictverdict --verdict <YOUR-ROLE'S-CONSTRAINED-GRAMMAR> --activity "<one-line basis>"
Long silent step (>60s)heartbeat
Finishedstatus --state done (or --state failed — loudly, with the reason in --activity)

All commands share the prefix (run from the repo root, plain node — some JS runners auto-load .env/.env.local files, which can leak secrets into a simple status ping; avoid a runner with that behavior for this call):

node ./emit.ts <subcommand> --run <run-id> --agent <your-role> [...]

<run-id> is the furrow/run identifier the head-gardener gave you (e.g. furrow-42). <your-role> is your role name (executor, spec-adversary, …). Use your verdict grammar's exact tokens (PASS/DRIFT, APPROVE-READY/NEEDS-REVISION/UNSOUND) in --verdict.

Addressing (the swarm graph). When an event is for someone — a hand-off, a verdict about their artifact — add --to <role> so it draws a directed edge on the graph. If the flow logically targets another gardener but actually routes through the head-gardener (the v0 norm), also add --via head-gardener: the edge renders dashed (transitive) instead of claiming a direct channel that doesn't exist. Report the channel you actually used — addressing is a claim like any other.

Command seams (inbound)

At every step seam — between steps, before starting a new file, after a test run — poll for commands addressed to you and acknowledge what you handle:

node ./emit.ts check --run <run-id> --agent <your-role>
node ./emit.ts ack --run <run-id> --agent <your-role> \
  --command-id <cmd-id> --result accepted --note "<what you did about it>"

Semantics: pause → finish the current atomic step, emit status --state blocked --activity "paused by command", and wait (poll) for resume. abort → stop loudly, leave resumable state (WIP + todo), emit status --state failed --activity "aborted by command". answer → the human answered your parked question: record it under ## Assumptions/the issue and resume. steer → treat payload.text as maintainer input at the next decision point. Never silently drop a command — ack with --result rejected --note "<why>" if you cannot comply.

Honesty rules

  • Emit transitions when they happen, not retroactively in a batch.
  • --activity states what IS happening, not what you hope; keep it one line.
  • If emitting fails (a missing bus directory is auto-created; a real failure means a broken environment), say so in your run output — do not swallow it.

Placeholders

  • Grove's original copy of this skill declares one placeholder here — the wisp vendor path. Resolved above (in the Recursion note) to . — this repo IS wisp, so there is nothing to vendor a path to.

Search skills

Search the agent skills registry