home / skills / avivk5498 / claude-code-beads-orchestration / subagents-discipline

subagents-discipline skill

/skills/subagents-discipline

This skill enforces verification-first development by guiding you to test features end-to-end before shipping and validates data against actual observations.

npx playbooks add skill avivk5498/claude-code-beads-orchestration --skill subagents-discipline

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
4.6 KB
---
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.

Overview

This skill enforces a verification-first development discipline for multi-agent implementation tasks. It ensures developers inspect real data, run component and feature tests, and include a required DEMO block before claiming work is done. The goal is fewer integration surprises and reliable end-to-end features.

How this skill works

Invoke this skill at the start of any implementation task to apply three rules: look at actual data before coding, run both component and feature tests, and use available tools to verify behavior. It guides the developer through explicit commands to fetch real interfaces, run isolated checks, then exercise the integrated flow and capture evidence.

When to use it

  • At the start of any task that touches external data, APIs, databases, files, or config
  • Before writing migrations, API handlers, or UI integrations
  • When working on epic sub-tasks that must match a design contract
  • When you need to avoid integration regressions and ambiguous assumptions
  • Whenever claiming a feature as complete or ready for review

Best practices

  • Fetch and inspect the actual data/schema/output before coding (not docs or assumptions)
  • Always produce both a component test and a feature (end-to-end) test
  • Include a DEMO block with exact commands, steps, and observed results
  • Check available MCP/tools and be resourceful (browser automation, curl, DB queries)
  • If end-to-end testing is impossible, document what was verified, why, and what remains

Example use cases

  • Implementing an API endpoint: inspect request/response shapes, run unit tests, then curl the endpoint and verify the UI path
  • Adding a database migration: list table columns, write migration against observed schema, run app flows that read/write the table
  • Building a frontend component: log actual props from the backend, render isolated tests, then run an integrated user flow
  • Working on an epic child: pull and follow the design doc exactly, verify field names and types match the parent contract

FAQ

What goes in the DEMO block?

Exact commands or steps you ran for the component test and the feature test, plus observed outputs or screenshots.

When is PARTIAL feature verification acceptable?

Only when constrained by lack of browser automation, external service limits/costs, very long jobs, or unavailable production data—document specifics and remaining checks.