Disciplined Development
Principle expression
Primary: P15
Supporting: P02, P08, P05
Principle source
Use a host Sequence and matching interpretations when the host declares them.
Otherwise use this skill's read-only fallback in references/sequence.md.
Read only P15, P02, P08, and P05.
Scope
This is a lightweight behavioral layer, not a methodology. It applies to any
development task where an agent would benefit from trained professional habits.
It does not own a workflow, domain, or artifact class. When a task already has a
governing methodology skill (context-engineering, skill-engineering, artifact-organization,
principle-cultivation), that skill's rules take precedence; this skill supplies
the baseline behavioral standard underneath.
Load this skill when the task's principal contradiction is not a domain-specific
methodology gap but a general agent-behavior gap: overengineering, guessing,
untested claims, pattern application without analysis, or completion claims
without verification.
Behavioral rules
Ground — before you act
Read before you write. Open the actual files, inspect the actual state,
check the actual runtime behavior — not from memory, not from assumption.
A file path that "should" exist is not the same as a file that does exist.
→ P02: start from the actual object, not from a desired conclusion.
Identify the specific contradiction. What is the load-bearing decision
whose resolution changes the shape of all downstream work? If you cannot name
it, you are not ready to act. A vague "improve this" is not a contradiction.
→ P05: analyze the concrete conditions of this case before applying a pattern.
State your evidence before your conclusion. "The current README lists
8 skills; skills/ contains 4 directories" precedes "README is stale."
Separate observation from inference; let the evidence speak first.
→ P02: what is directly observed, and what is inference?
Act — while you work
Choose the smallest change that actually closes the gap. Before adding a
new abstraction, ask: does this specific contradiction require it now, or can
it wait for a later step? A helper function written for one caller is
premature; a refactor that touches 12 files for a 3-line logic change is
overreach.
→ P15: smallest transition that resolves the present contradiction while
preserving hard constraints.
Resist scope creep. When you discover a second problem while fixing the
first, note it — do not silently expand the change. A disciplined developer
finishes one thing before starting the next. If the second problem is
load-bearing for the first, state that explicitly and get confirmation.
→ P15: unnecessary scope is the enemy of a verifiable transition.
Record uncertainty as uncertainty. "I could not verify X because Y"
belongs in the output. A gap admitted is a boundary respected; a gap hidden
becomes a silent failure. Do not invent a conclusion to close a gap you
cannot close.
→ P08: a claim protected from all possible failure cannot guide inquiry.
Check — before you claim done
Test against a falsifiable acceptance condition. Before "done," name one
observation that would show the change did NOT work — then check it. A
passing build is not a passing behavior test; a file that parses is not a
file that changes agent action.
→ P08: name what would disconfirm the claim, then observe.
Label untested claims as untested. "The behavior appears correct" is not
"the behavior was verified." If you cannot run an independent probe, say
self-evaluated; attribution unproven. Structural validity (the code
compiles, the YAML parses) is not behavioral validity.
→ P08: do not confuse a passing format check with behavior evidence.
Leave the surface cleaner than you found it. Remove scaffolding, debug
output, and temporary files you created during the work. A one-line fix that
leaves three stale comments, a dead import, and an orphaned test file is not
disciplined.
→ P15: the transition is not complete until avoidable residue is removed.
Select tests for decision value, not assertion count
Choose evidence for the relation that exists now. During exploration, use the
smallest probe that can reject a proposed direction. As the relation stabilizes,
retain regressions for observed causes and focused boundary or compatibility
checks for public contracts. At integration, prove the real seam between parts.
For release hardening, expand fault and regression coverage in proportion to
consequence and supported operating conditions. These are local judgments, not
required stages or test counts. When a candidate can cross a load-bearing
safety boundary, the first effectful probe must exercise that boundary.
Before adding or retaining a test, be able to explain in one short sentence:
the behavior claim, the realistic defect it would expose, the decision that
would change if it failed, and the smallest observation that can expose it.
This is a reasoning prompt, not a required form. If the result cannot change a
decision or protect a settled relation, the test has little current value.
A host project may supply a fuller phase-appropriate harness testing theory;
use it to refine this judgment when present, but do not require it.
- Use a contract or branch test when a deterministic boundary can corrupt,
reject, or misclassify a real input. Test the public outcome or retained
evidence, not a private helper's incidental fields.
- Use an integration probe when the claim crosses an adapter, CLI, file,
network boundary, or persisted record. A test that only calls the helper
below that boundary does not prove the user-facing behavior.
- Use a live or independent evaluation when the claim concerns an agent's
judgment, prompt following, cost, or usefulness. Deterministic doubles can
prove containment and record semantics, but cannot prove model behavior;
label that gap rather than laundering it through unit tests.
- Merge assertions into the smallest scenario that demonstrates one failure
story. A separate assertion for a constant, phrasing fragment, timestamp, or
implementation arrangement has no standing value unless its loss would
recreate a named defect or break a stated contract.
Do not optimize test count, line coverage, mock call count, or expect count.
A test may cover several observations, but its title and failure message should
still name the one product or operating decision it protects. Remove or fold a
test when a stronger end-to-end scenario already makes the same failure visible.
Operating boundaries
- This skill is a behavioral standard, not a workflow. It has no commands,
artifacts, or dispatch tree.
- When a domain methodology skill is active, its rules govern; this skill fills
the behavioral gaps that methodology skills assume but do not teach.
- Do not invoke this skill as a replacement for thinking — it is a checklist,
not a substitute for analyzing the specific situation (P05).
- Do not turn this guidance into a mandatory test plan or a ban on unit tests. The
system boundary and credible failure mode determine the smallest evidence.
- The rules are concrete expressions of P15/P02/P08/P05 for everyday development.
They do not need a separate doctrine file; the interpretations are the doctrine.
Completion standard
A task executed under this standard is ready when the agent can show: evidence
was read before action was taken, the smallest valid change was chosen, a
falsifiable acceptance condition was checked, and any remaining uncertainty is
explicitly recorded.
1---2name: disciplined-development3description: Lightweight behavioral discipline for any development task — ground decisions in evidence, choose the smallest valid change, test before claiming done, and analyze the specific situation before applying a pattern. Triggers on "be more disciplined", "professional habits", "stop overengineering", "check your work", "don't guess", "bad habits", "test strategy", "meaningful tests", or "avoid test bloat"; also when an agent shows overconfidence, untested claims, or repetitive overengineering across tasks.4---56# Disciplined Development78## Principle expression910**Primary:** P1511**Supporting:** P02, P08, P051213## Principle source1415Use a host Sequence and matching interpretations when the host declares them.16Otherwise use this skill's read-only fallback in `references/sequence.md`.17Read only P15, P02, P08, and P05.1819## Scope2021This is a lightweight behavioral layer, not a methodology. It applies to any22development task where an agent would benefit from trained professional habits.23It does not own a workflow, domain, or artifact class. When a task already has a24governing methodology skill (context-engineering, skill-engineering, artifact-organization,25principle-cultivation), that skill's rules take precedence; this skill supplies26the baseline behavioral standard underneath.2728Load this skill when the task's principal contradiction is not a domain-specific29methodology gap but a general agent-behavior gap: overengineering, guessing,30untested claims, pattern application without analysis, or completion claims31without verification.3233## Behavioral rules3435### Ground — before you act36371. **Read before you write.** Open the actual files, inspect the actual state,38 check the actual runtime behavior — not from memory, not from assumption.39 A file path that "should" exist is not the same as a file that does exist.40 → P02: start from the actual object, not from a desired conclusion.41422. **Identify the specific contradiction.** What is the load-bearing decision43 whose resolution changes the shape of all downstream work? If you cannot name44 it, you are not ready to act. A vague "improve this" is not a contradiction.45 → P05: analyze the concrete conditions of this case before applying a pattern.46473. **State your evidence before your conclusion.** "The current README lists48 8 skills; `skills/` contains 4 directories" precedes "README is stale."49 Separate observation from inference; let the evidence speak first.50 → P02: what is directly observed, and what is inference?5152### Act — while you work53544. **Choose the smallest change that actually closes the gap.** Before adding a55 new abstraction, ask: does this specific contradiction require it now, or can56 it wait for a later step? A helper function written for one caller is57 premature; a refactor that touches 12 files for a 3-line logic change is58 overreach.59 → P15: smallest transition that resolves the present contradiction while60 preserving hard constraints.61625. **Resist scope creep.** When you discover a second problem while fixing the63 first, note it — do not silently expand the change. A disciplined developer64 finishes one thing before starting the next. If the second problem is65 load-bearing for the first, state that explicitly and get confirmation.66 → P15: unnecessary scope is the enemy of a verifiable transition.67686. **Record uncertainty as uncertainty.** "I could not verify X because Y"69 belongs in the output. A gap admitted is a boundary respected; a gap hidden70 becomes a silent failure. Do not invent a conclusion to close a gap you71 cannot close.72 → P08: a claim protected from all possible failure cannot guide inquiry.7374### Check — before you claim done75767. **Test against a falsifiable acceptance condition.** Before "done," name one77 observation that would show the change did NOT work — then check it. A78 passing build is not a passing behavior test; a file that parses is not a79 file that changes agent action.80 → P08: name what would disconfirm the claim, then observe.81828. **Label untested claims as untested.** "The behavior appears correct" is not83 "the behavior was verified." If you cannot run an independent probe, say84 `self-evaluated; attribution unproven`. Structural validity (the code85 compiles, the YAML parses) is not behavioral validity.86 → P08: do not confuse a passing format check with behavior evidence.87889. **Leave the surface cleaner than you found it.** Remove scaffolding, debug89 output, and temporary files you created during the work. A one-line fix that90 leaves three stale comments, a dead import, and an orphaned test file is not91 disciplined.92 → P15: the transition is not complete until avoidable residue is removed.9394### Select tests for decision value, not assertion count9596Choose evidence for the relation that exists now. During exploration, use the97smallest probe that can reject a proposed direction. As the relation stabilizes,98retain regressions for observed causes and focused boundary or compatibility99checks for public contracts. At integration, prove the real seam between parts.100For release hardening, expand fault and regression coverage in proportion to101consequence and supported operating conditions. These are local judgments, not102required stages or test counts. When a candidate can cross a load-bearing103safety boundary, the first effectful probe must exercise that boundary.104105Before adding or retaining a test, be able to explain in one short sentence:106the behavior claim, the realistic defect it would expose, the decision that107would change if it failed, and the smallest observation that can expose it.108This is a reasoning prompt, not a required form. If the result cannot change a109decision or protect a settled relation, the test has little current value.110A host project may supply a fuller phase-appropriate harness testing theory;111use it to refine this judgment when present, but do not require it.112113- Use a **contract or branch test** when a deterministic boundary can corrupt,114 reject, or misclassify a real input. Test the public outcome or retained115 evidence, not a private helper's incidental fields.116- Use an **integration probe** when the claim crosses an adapter, CLI, file,117 network boundary, or persisted record. A test that only calls the helper118 below that boundary does not prove the user-facing behavior.119- Use a **live or independent evaluation** when the claim concerns an agent's120 judgment, prompt following, cost, or usefulness. Deterministic doubles can121 prove containment and record semantics, but cannot prove model behavior;122 label that gap rather than laundering it through unit tests.123- Merge assertions into the smallest scenario that demonstrates one failure124 story. A separate assertion for a constant, phrasing fragment, timestamp, or125 implementation arrangement has no standing value unless its loss would126 recreate a named defect or break a stated contract.127128Do not optimize test count, line coverage, mock call count, or `expect` count.129A test may cover several observations, but its title and failure message should130still name the one product or operating decision it protects. Remove or fold a131test when a stronger end-to-end scenario already makes the same failure visible.132133## Operating boundaries134135- This skill is a behavioral standard, not a workflow. It has no commands,136 artifacts, or dispatch tree.137- When a domain methodology skill is active, its rules govern; this skill fills138 the behavioral gaps that methodology skills assume but do not teach.139- Do not invoke this skill as a replacement for thinking — it is a checklist,140 not a substitute for analyzing the specific situation (P05).141- Do not turn this guidance into a mandatory test plan or a ban on unit tests. The142 system boundary and credible failure mode determine the smallest evidence.143- The rules are concrete expressions of P15/P02/P08/P05 for everyday development.144 They do not need a separate doctrine file; the interpretations are the doctrine.145146## Completion standard147148A task executed under this standard is ready when the agent can show: evidence149was read before action was taken, the smallest valid change was chosen, a150falsifiable acceptance condition was checked, and any remaining uncertainty is151explicitly recorded.