fix: resolve review round 2 findings

- CLAUDE.md: add missing message-schema and project to skill list
- debugger, documenter: add qa-checklist to skills (worker-protocol references it)
- message-schema: make moderate_count/minor_count required on review_verdict,
  make has_blockers required on plan_result, remove dangling format field
- orchestrate: split blocked routing by type (plan_result vs worker_submission)
- worker-protocol: remove stale migration note about freetext RFR
- qa-checklist: add plan_result has_blockers hard rule
- architect: remove dangling format field from plan_result envelope
This commit is contained in:
Bryan Ramos 2026-04-02 07:58:41 -04:00
parent 1ee8dcdfdd
commit 76f7f16eff
8 changed files with 10 additions and 9 deletions

View file

@ -1,4 +1,4 @@
# Global Claude Code Instructions # Global Claude Code Instructions
Rules are modularized in `~/.claude/rules/` and loaded automatically. Rules are modularized in `~/.claude/rules/` and loaded automatically.
Agent-team specific protocols live in skills (orchestrate, conventions, worker-protocol, qa-checklist). Agent-team specific protocols live in skills (orchestrate, conventions, worker-protocol, qa-checklist, message-schema, project).

View file

@ -104,7 +104,6 @@ After writing the plan file, return a `plan_result` envelope:
type: plan_result type: plan_result
signal: plan_complete | blocked signal: plan_complete | blocked
plan_file: .claude/plans/kebab-case-title.md plan_file: .claude/plans/kebab-case-title.md
format: brief | full
wave_count: 3 wave_count: 3
step_count: 7 step_count: 7
risk_tags: risk_tags:

View file

@ -9,6 +9,7 @@ skills:
- conventions - conventions
- worker-protocol - worker-protocol
- message-schema - message-schema
- qa-checklist
- project - project
--- ---

View file

@ -10,6 +10,7 @@ skills:
- conventions - conventions
- worker-protocol - worker-protocol
- message-schema - message-schema
- qa-checklist
- project - project
--- ---

View file

@ -90,8 +90,7 @@ ac_coverage:
--- ---
``` ```
Required: `type`, `signal`, `critical_count`, `ac_coverage` Required: `type`, `signal`, `critical_count`, `moderate_count`, `minor_count`, `ac_coverage`
Optional: `moderate_count`, `minor_count`
**Hard rule:** `critical_count > 0` requires `signal: fail`. **Hard rule:** `critical_count > 0` requires `signal: fail`.
@ -153,7 +152,6 @@ Emitted by: architect (Phase 2)
type: plan_result type: plan_result
signal: plan_complete | blocked signal: plan_complete | blocked
plan_file: .claude/plans/kebab-case-title.md plan_file: .claude/plans/kebab-case-title.md
format: brief | full
wave_count: 3 wave_count: 3
step_count: 7 step_count: 7
risk_tags: risk_tags:
@ -163,8 +161,8 @@ has_blockers: false
--- ---
``` ```
Required: `type`, `signal`, `plan_file`, `wave_count`, `risk_tags` Required: `type`, `signal`, `plan_file`, `wave_count`, `risk_tags`, `has_blockers`
Optional: `format`, `step_count`, `has_blockers` Optional: `step_count`
**Routing:** `has_blockers: true` triggers user escalation before worker dispatch. **Routing:** `has_blockers: true` triggers user escalation before worker dispatch.

View file

@ -228,7 +228,8 @@ All agent communication uses typed YAML frontmatter envelopes defined in the `me
| `signal: triage_complete` | architect → you | Check `research_needed`, spawn researchers or resume architect | | `signal: triage_complete` | architect → you | Check `research_needed`, spawn researchers or resume architect |
| `signal: plan_complete` | architect → you | Read plan file, begin wave dispatch | | `signal: plan_complete` | architect → you | Read plan file, begin wave dispatch |
| `signal: research_complete` | researcher → you | Collect, assemble into Research Context | | `signal: research_complete` | researcher → you | Collect, assemble into Research Context |
| `signal: blocked` | architect/worker → you | If from `plan_result`: escalate to user before dispatching workers. Otherwise: investigate or unblock. | | `signal: blocked` (`plan_result`) | architect → you | Escalate to user before dispatching workers |
| `signal: blocked` (`worker_submission`) | worker → you | Investigate blocker, unblock or reassign |
| `signal: escalate` | any → you | Escalate to user with context | | `signal: escalate` | any → you | Escalate to user with context |
When dispatching agents, use the orchestrator→agent envelope types (`task_assignment`, `revision_request`, `approval`, `triage_request`, `architecture_request`, `research_request`) from the message-schema skill. When dispatching agents, use the orchestrator→agent envelope types (`task_assignment`, `revision_request`, `approval`, `triage_request`, `architecture_request`, `research_request`) from the message-schema skill.

View file

@ -48,6 +48,7 @@ Before returning your output, validate against every item below. If you find a v
- Are hard rules satisfied? - Are hard rules satisfied?
- `review_verdict`: `critical_count > 0` requires `signal: fail` - `review_verdict`: `critical_count > 0` requires `signal: fail`
- `audit_verdict`: `security_findings.critical > 0` or `build_status: fail` or `test_status: fail` requires `signal: fail` - `audit_verdict`: `security_findings.critical > 0` or `build_status: fail` or `test_status: fail` requires `signal: fail`
- `plan_result`: `has_blockers: true` requires orchestrator escalation to user before worker dispatch
## After validation ## After validation

View file

@ -51,7 +51,7 @@ Before returning your output, run the `qa-checklist` skill against your work. Fi
## Commits ## Commits
Do not commit until your orchestrator sends `signal: lgtm`. Your output envelope's `signal: rfr` replaces the old freetext `RFR` — the envelope IS the signal. Do not commit until your orchestrator sends `signal: lgtm`.
- `signal: rfr` — you → orchestrator: work complete, ready for review - `signal: rfr` — you → orchestrator: work complete, ready for review
- `signal: lgtm` — orchestrator → you: approved, commit now - `signal: lgtm` — orchestrator → you: approved, commit now