done-blocked
关于
This Claude Skill enforces a clear terminal reporting contract where agents must declare work as either DONE or BLOCKED, eliminating vague statuses. It's used for final verdicts in agent runs, like completing a task or a QA report, requiring specific evidence for the BLOCKED state. The contract applies only to terminal outputs, not to intermediate progress updates.
快速安装
Claude Code
推荐npx skills add avelikiy/great_cto -a claude-code/plugin add https://github.com/avelikiy/great_ctogit clone https://github.com/avelikiy/great_cto.git ~/.claude/skills/done-blocked在 Claude Code 中复制并粘贴此命令以安装该技能
技能文档
DONE / BLOCKED Reporting Contract
Terminal status is exactly two states, and BLOCKED requires specific evidence — not vague obstruction reports.
The contract
Every agent's final handoff line is one of:
DONE: <one-sentence summary of what shipped>
artifact: <path to report/PR/commit>
next: <who picks this up — pipeline stage, gate, or "pipeline continues">
BLOCKED: <one-sentence summary of the obstacle>
tried: <what was attempted — file paths, commands, error signatures>
failed_because: <concrete reason — not "unclear", not "complex">
need: <specific unblock — file access, missing config, CTO decision, another agent>
Hard rules
-
No third state. "Mostly done", "done with caveats", "almost there" → choose. If caveats exist, the caveat itself decides:
- Caveat is cosmetic / P2+ → DONE (file a Beads bug, move on)
- Caveat blocks the next pipeline stage → BLOCKED (do not pretend)
-
BLOCKED requires three fields.
tried+failed_because+need. Missing any field → the verdict is rejected and the agent must re-report. No exceptions for "obvious" cases. -
Silence is not DONE. If the agent stops producing output without a terminal line, the parent / next stage treats it as BLOCKED with
failed_because: silent — no terminal verdict written. -
failed_becausemust be concrete. These are rejected:- "environment issue" → say which command failed with what error
- "tests failing" → say which tests and the actual assertion message
- "unclear requirements" → say which decision is needed and the two options
- "not enough context" → say which file / doc / config you tried to read
-
neednames a specific unblock. These are rejected:- "more information" → ask one specific question
- "help from another agent" → name the agent (architect / security-officer / …)
- "CTO approval" → state the exact choice (approve gate X, pick option A vs B, waive check)
Where the verdict goes
Every agent writes the verdict to two places:
- Last line of agent output (visible to the orchestrator that spawned it).
.great_cto/verdicts/<agent>-<YYYY-MM-DD-HHMMSS>.log— append-only audit trail.
mkdir -p .great_cto/verdicts
VERDICT_FILE=".great_cto/verdicts/<agent>-$(date -u +%Y-%m-%d-%H%M%S).log"
printf '%s\n' "$VERDICT_LINE" > "$VERDICT_FILE"
Examples
Good — DONE:
DONE: CSO audit passed — 0 P0, 2 P1 findings filed as Beads tasks.
artifact: docs/security/CSO-2026-04-19.md
next: gate:ship ready for CTO approval
Good — BLOCKED:
BLOCKED: senior-dev cannot claim task BD-42 — circular dependency with BD-38.
tried: bd ready → BD-42 did not appear; bd dep tree BD-42 → shows BD-38 blocks BD-42, BD-42 blocks BD-38
failed_because: both tasks depend on each other transitively (BD-42 → BD-38 → BD-39 → BD-42)
need: architect to split BD-39 into two tasks so the cycle breaks
Rejected — vague BLOCKED:
BLOCKED: couldn't finish QA — environment problems.
tried: ran tests
failed_because: stuff broken
need: help
Why rejected: tried lacks command/path; failed_because is tautological; need is not actionable.
Measuring the contract
.great_cto/verdicts/*.log is machine-readable. Weekly digest can compute:
DONE:BLOCKEDratio per agent — too many BLOCKED from one agent = that role is under-resourced or prompt is unclearfailed_becauseclustering — if the same reason appears 3+ times, that's a recurring obstruction worth a meta-fix (tooling, doc, skill)- Silence rate (agents with no terminal verdict written) — should trend to zero
Anti-patterns
- Writing both DONE and BLOCKED in the same report ("DONE but blocked on X"). Pick one. If you're blocked, the work isn't done.
- Using DONE as a politeness signal when the gate still fails. The verdict is for the machine, not the CTO's feelings.
- Writing the verdict only to stdout without persisting to
.great_cto/verdicts/. The audit trail is what makes the contract measurable.
GitHub 仓库
相关推荐技能
railway-docs
文档Railway Docs Skill可实时获取最新的Railway官方文档,确保回答的准确性。当开发者询问Railway功能特性、工作原理或分享docs.railway.com链接时,应优先使用此技能。它通过专门的LLM优化文档源提供最新信息,避免依赖过时记忆来回答技术问题。
n8n-code-python
文档该Skill为在n8n平台的Python代码节点中编写代码提供专家指导,特别适用于需要使用_input/_json/_node语法、Python标准库或了解n8n中Python限制的场景。它强调JavaScript应作为首选方案,仅当需要特定Python功能或对Python语法更熟悉时才使用Python。Skill提供了快速入门模板和关键注意事项,帮助开发者在n8n中高效编写Python代码。
archon
文档Archon Skill为开发者提供了基于RAG的语义搜索和项目任务管理功能,可通过REST API访问知识库。它支持文档搜索、网站爬取、文件上传和版本控制,适用于技术文档查询和项目管理场景。首次使用时需要配置Archon主机地址,建议在处理外部文档时优先使用该Skill。
n8n-code-javascript
文档这个Skill为n8n工作流中的JavaScript代码节点提供专业指导,涵盖数据处理、HTTP请求和日期操作等核心场景。它详细解释了如何正确使用n8n特有的`$input`/`$json`语法、`$helpers`工具以及DateTime对象,并包含关键的错误排查和模式选择建议。开发者通过该Skill能快速掌握Code节点的正确返回格式、数据访问方法和常见陷阱解决方案。
