/subagents-discipline
Invoke at the start of any implementation task to enforce verification-first development
$ npx -y skills add avivk5498/the-claude-protocol --skill subagents-discipline --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/subagents-discipline
Context preview
The summary Claude sees to decide when to auto-load this skill.
Invoke at the start of any implementation task to enforce verification-first development
SKILL.md
subagents-discipline.SKILL.mdname: subagents-discipline
description: Invoke at the start of any implementation task to enforce verification-first development
Implementation Discipline
**Core principle:** Test the FEATURE, not just the component you built.
---
Three Rules
Rule 1: Look Before You Code
Before writing code that touches external data (API, database, file, config):
1. **Fetch/read the ACTUAL data** - run the command, see the output 2. **Note exact field names, types, formats** - not what docs say, what you SEE 3. **Code against what you observed** - not what you assumed
This catches: field name mismatches, wrong data shapes, missing fields, format differences.
WITHOUT looking first:
Assumed: column is "reference_images"
Reality: column is "reference_image_url"
Result: Query fails
WITH looking first:
Ran: SELECT column_name FROM information_schema.columns WHERE table_name = 'assets';
Saw: reference_image_url
Coded against: reference_image_url
Result: Works
Rule 2: Test Both Levels
**Component test** catches: logic bugs, edge cases, type errors **Feature test** catches: integration bugs, auth issues, data flow problems
Both are required. Component test alone is NOT sufficient.
| You built | Component test | Feature test | |-----------|----------------|--------------| | API endpoint | curl returns 200 | UI calls API, displays result | | Database change | Migration runs | App reads/writes correctly | | Frontend component | Renders, no errors | User can see and interact | | Full-stack feature | Each piece works alone | End-to-end flow works |
**The pattern:** 1. Build the thing 2. Component test - verify your piece works in isolation 3. Feature test - verify the integrated feature works end-to-end 4. Only then claim done
Rule 3: Use Your Tools
Before claiming you can't fully test:
1. **Check what MCP servers you have access to** - list available tools 2. **If any tool can help verify the feature works**, use it 3. **Be resourceful** - browser automation, database inspection, API testing tools
"I couldn't test the feature" is only valid after exhausting available options.
---
DEMO Block (Required)
Every completion must include evidence. Code reviewer will verify this.
DEMO:
COMPONENT:
Command: [what you ran to test the component]
Result: [what you observed]
FEATURE:
Steps: [how you tested the integrated feature]
Result: [what you observed - screenshot, output, etc.]When Full Feature Test Isn't Possible
If you genuinely cannot test end-to-end (long-running job, external service, no browser tools):
DEMO:
COMPONENT:
Command: curl localhost:3008/api/endpoint
Result: 200, returns expected data
FEATURE: PARTIAL
Verified: [what you could test]
Needs human check: [what still needs verification]
Why: [specific reason - no browser MCP, takes 10+ minutes, requires external service]**Not acceptable reasons for PARTIAL:**
- "Server wasn't running" → start it
- "Didn't have test data" → create it
- "Would take too long" → if < 2 minutes, do it
**Acceptable reasons:**
- No browser/UI automation tools available
- External API with rate limits or costs
- Job takes > 5 minutes to complete
- Requires production data that can't be mocked
---
For Epic Children
If your BEAD_ID contains a dot (e.g., BD-001.2), you're implementing part of a larger feature:
1. **Check for design doc**: `bd show {EPIC_ID} --json | jq -r '.[0].design'` 2. **Read it if it exists** - this is your contract 3. **Match it exactly** - same field names, same types, same shapes
Design docs ensure all pieces fit together. If you deviate, integration fails.
---
Completion Checklist
Before marking done:
- [ ] Looked at actual data/interfaces before coding (not assumed)
- [ ] Component test passes (your piece works in isolation)
- [ ] Feature test passes OR documented as PARTIAL with valid reason
- [ ] DEMO block included with evidence
- [ ] Used available tools to test (checked MCP servers, used what helps)
---
Red Flags - Stop and Verify
When you catch yourself thinking:
- "This should work..." → run it and see
- "I assume the field is..." → look at the actual data
- "I'll test it later..." → test it now
- "It's too simple to break..." → verify anyway
When you're about to say:
- "Done!" / "Fixed!" / "Should work now!" → show the DEMO first
---
The Bottom Line
Component test passing ≠ feature works
Curl returning 200 ≠ UI displays correctly
TypeScript compiles ≠ user can use it
Test the feature like a user would use it. Then show evidence. Then claim done.
Read more
name: subagents-discipline description: Invoke at the start of any implementation task to enforce verification-first development
Implementation Discipline
**Core principle:** Test the FEATURE, not just the component you built.
---
Three Rules
Rule 1: Look Before You Code
Before writing code that touches external data (API, database, file, config):
1. **Fetch/read the ACTUAL data** - run the command, see the output 2. **Note exact field names, types, formats** - not what docs say, what you SEE 3. **Code against what you observed** - not what you assumed
This catches: field name mismatches, wrong data shapes, missing fields, format differences.
WITHOUT looking first: Assumed: column is "reference_images" Reality: column is "reference_image_url" Result: Query fails WITH looking first: Ran: SELECT column_name FROM information_schema.columns WHERE table_name = 'assets'; Saw: reference_image_url Coded against: reference_image_url Result: Works
Rule 2: Test Both Levels
**Component test** catches: logic bugs, edge cases, type errors **Feature test** catches: integration bugs, auth issues, data flow problems
Both are required. Component test alone is NOT sufficient.
| You built | Component test | Feature test | |-----------|----------------|--------------| | API endpoint | curl returns 200 | UI calls API, displays result | | Database change | Migration runs | App reads/writes correctly | | Frontend component | Renders, no errors | User can see and interact | | Full-stack feature | Each piece works alone | End-to-end flow works |
**The pattern:** 1. Build the thing 2. Component test - verify your piece works in isolation 3. Feature test - verify the integrated feature works end-to-end 4. Only then claim done
Rule 3: Use Your Tools
Before claiming you can't fully test:
1. **Check what MCP servers you have access to** - list available tools 2. **If any tool can help verify the feature works**, use it 3. **Be resourceful** - browser automation, database inspection, API testing tools
"I couldn't test the feature" is only valid after exhausting available options.
---
DEMO Block (Required)
Every completion must include evidence. Code reviewer will verify this.
DEMO:
COMPONENT:
Command: [what you ran to test the component]
Result: [what you observed]
FEATURE:
Steps: [how you tested the integrated feature]
Result: [what you observed - screenshot, output, etc.]When Full Feature Test Isn't Possible
If you genuinely cannot test end-to-end (long-running job, external service, no browser tools):
DEMO:
COMPONENT:
Command: curl localhost:3008/api/endpoint
Result: 200, returns expected data
FEATURE: PARTIAL
Verified: [what you could test]
Needs human check: [what still needs verification]
Why: [specific reason - no browser MCP, takes 10+ minutes, requires external service]**Not acceptable reasons for PARTIAL:**
- "Server wasn't running" → start it
- "Didn't have test data" → create it
- "Would take too long" → if < 2 minutes, do it
**Acceptable reasons:**
- No browser/UI automation tools available
- External API with rate limits or costs
- Job takes > 5 minutes to complete
- Requires production data that can't be mocked
---
For Epic Children
If your BEAD_ID contains a dot (e.g., BD-001.2), you're implementing part of a larger feature:
1. **Check for design doc**: `bd show {EPIC_ID} --json | jq -r '.[0].design'` 2. **Read it if it exists** - this is your contract 3. **Match it exactly** - same field names, same types, same shapes
Design docs ensure all pieces fit together. If you deviate, integration fails.
---
Completion Checklist
Before marking done:
- [ ] Looked at actual data/interfaces before coding (not assumed)
- [ ] Component test passes (your piece works in isolation)
- [ ] Feature test passes OR documented as PARTIAL with valid reason
- [ ] DEMO block included with evidence
- [ ] Used available tools to test (checked MCP servers, used what helps)
---
Red Flags - Stop and Verify
When you catch yourself thinking:
- "This should work..." → run it and see
- "I assume the field is..." → look at the actual data
- "I'll test it later..." → test it now
- "It's too simple to break..." → verify anyway
When you're about to say:
- "Done!" / "Fixed!" / "Should work now!" → show the DEMO first
---
The Bottom Line
Component test passing ≠ feature works Curl returning 200 ≠ UI displays correctly TypeScript compiles ≠ user can use it
Test the feature like a user would use it. Then show evidence. Then claim done.
Enforcement-first orchestration for Claude Code. Every agent tracked. Every decision logged. Nothing gets lost. Claude Code plans great. Without structure, nothing survives past one session. macOS and Linux.
Repo: avivk5498/the-claude-protocol
Other skills on the-claude-protocol.
- /create-beads-orchestration
Bootstrap lean multi-agent orchestration with beads task tracking. Use for projects needing agent delegation without heavy MCP overhead.
Open skill - /create-beads-orchestration
Bootstrap lean multi-agent orchestration with beads task tracking. Use for projects needing agent delegation without heavy MCP overhead.
Open skill - /react-best-practices
React and Next.js performance optimization patterns. Use BEFORE implementing any React code to ensure best practices are followed.
Open skill

