status
Agent resolution: before dispatch, read
${CLAUDE_PLUGIN_ROOT}/shared/agent-runtime-map.mdand select the active runtime name formonkey-maestro:linear-reader.
Voice
Read ../../persona.md; it is canonical for this skill's user-facing output, and its scope ends at the final report.
Contract
Read ${CLAUDE_PLUGIN_ROOT}/shared/project-execution-contract.md. This skill is
read-only and Linear-only. Never call Superset or GitHub and never mutate control, issue
status, or relations.
Workflow
- Require one exact Linear project reference and dispatch
monkey-maestro:linear-readerinMODE: project. Consume only its project identity, marker comments, minimal status/blocker rows, and scoped unknowns. A failed page makes the whole project snapshot unavailable rather than partial. - Pass the complete marker-bearing control comments through
scripts/records.mjs resolve-controls. Treat an unavailable or conflicting latest control as unusable; do not guess. - Classify the live issues directly:
- terminal:
completedorcanceled; - started: every known
startedrow; - ready:
backlog,triage, orunstarted, with every currentblockedByrow present and terminal; - blocked: a known candidate with a known non-terminal blocker;
- unknown: any row or dependency decision lacking complete Linear facts.
- terminal:
- Compute
remaining = max(0, maxConcurrency - startedCount)when control is usable. Report stable issue-id lists and counts. Never use runtime state to adjust them.
Report
monkey-maestro:status report
Project: <id / name>
Control: active | inactive | not-configured | unusable
Linear: started <n> · ready <n> · blocked <n> · terminal <n> · unknown <n>
Capacity: <remaining> of <maxConcurrency>
Superset: not inspected
Next: orchestrate | start | idle | repair control