
Spec Tech
- 78 installs
- 1 repo stars
- Updated August 3, 2026
- davidlee/doctrine
Authors and revises the technical specification for a capability, recording durable architecture and mechanism as first-class Doctrine entities with a validated relational spine.
About
Guides authoring the technical spec that sits downstream of the product spec and upstream of per-slice design, capturing components, boundaries, decisions and contracts. A developer uses it when recording durable architecture and mechanism as Doctrine spec entities rather than a single change's design.
- Manages a tech spec as three coordinated writes: scaffold, hand-edit the TOML spine, then add requirements
- Relational spine places every spec in the corpus tree, gated by spec validate for FK integrity
Spec Tech by the numbers
- 78 all-time installs (skills.sh)
- Ranked #699 of 1,879 Documentation skills by installs in the Skillselion catalog
- Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/davidlee/doctrine --skill spec-techAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 78 |
|---|---|
| repo stars | ★ 1 |
| Last updated | August 3, 2026 |
| Repository | davidlee/doctrine ↗ |
What it does
Authors and revises the technical specification for a capability, recording durable architecture and mechanism as first-class Doctrine entities with a validated relational spine.
Files
Spec Tech
You are authoring the technical spec — the how, downstream of the product spec (/spec-product) and upstream of per-slice design (/design). The entity engine (TOML+MD tiers, relations, show command) is documented in [[mem.concept.doctrine.entity-engine]].
Structural. Doctrine manages specs as first-class entities — a tech spec is
the same three coordinated writes as a product spec: scaffold with spec new(subtype/title/slug only), hand-edit the spine and flat fields into
spec-NNN.toml, thenspec req addits requirements. Useshowto read the
reassembled whole,validatefor FK integrity,listfor the corpus (flags in
--help; verb model inusing-doctrine.md). Identity, the relational spine, and
flat fields (incl.c4_level,[[source]]anchors) live inspec-NNN.toml, the
narrative inspec-NNN.md; requirements are peer entities (REQ-NNN) membered
via members.toml; tech-only spec→spec edges are written with `doctrine specinteractions add/remove` (not hand-authored). **There is no CLI flag for thespine — it is authored TOML, and
spec validate is the integrity gate.**Capture the durable architecture and mechanism:
- the shape of the solution — components, boundaries, data flow, invariants
- the key technical decisions and their rationale (link relevant ADRs)
- interfaces and contracts that outlive any single change
- constraints the implementation must honour
The relational spine places every spec in the corpus tree (all hand-edited TOML, gated by spec validate):
descends_from— tech→PRD, single-valued, a validated FK to the product intent
this capability realises.
parent— a single parent, acyclic containment (the C4 decomposition).- Containment is never a peer edge.
parentis never expressed as an
interactions edge, and an interactions edge is never containment (PRD-012 principle) — decomposition and peer uses/calls are distinct axes.
C4 altitude. Hand-authored specs normally stop at the container/component level; code-level (C4 level 4) specs are exceptional, authored only when a unit of mechanism genuinely needs that resolution.
Posture is dual. A tech spec may be retrospective (the shipped how) or forward-intent (SPEC-001/SPEC-002 style, describing an unbuilt engine) — both are legal, provided planned stays distinguishable from verified. Requirements are REQ-NNN entities at status pending; there are no coverage tables and no status derivation — observed coverage is reconciled, never inferred from the spec.
The exemplar trio locks the three canonical shapes — read them with spec show before authoring:
- SPEC-003 (
context) — the whole-system synthesis: anchor-free, noparent,
no descends_from; names the containers and their composition, never restating any one container's mechanism.
- SPEC-004 (
container) —parentonly, no descent: a mechanism container
whose children carry the per-capability descent.
- SPEC-005 (
component) —parent+descends_from: the thin (not anaemic)
capability shape — kind-specific contracts only, shared mechanism cited via the parent, never restated.
Keep it evergreen. A single change's concrete design — current vs target behaviour, code-impact, verification — belongs in that slice's /design, not here. If a decision is project-global and load-bearing, it may be an ADR (doctrine adr new) rather than spec prose.