@event4u/agent-config 1.34.0 → 1.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agent-src/commands/roadmap/process-full.md +17 -15
- package/.agent-src/contexts/execution/roadmap-process-loop.md +11 -10
- package/.agent-src/personas/discovery-lead.md +99 -0
- package/.agent-src/personas/product-owner.md +71 -52
- package/.agent-src/personas/revops-maintainer.md +100 -0
- package/.agent-src/personas/tech-writer.md +99 -0
- package/.agent-src/skills/competitive-positioning/SKILL.md +152 -0
- package/.agent-src/skills/customer-research/SKILL.md +116 -0
- package/.agent-src/skills/decision-record/SKILL.md +78 -3
- package/.agent-src/skills/discovery-interview/SKILL.md +152 -0
- package/.agent-src/skills/launch-readiness/SKILL.md +156 -0
- package/.agent-src/skills/release-comms/SKILL.md +123 -0
- package/.agent-src/skills/roadmap-writing/SKILL.md +1 -1
- package/.agent-src/skills/stakeholder-tradeoff/SKILL.md +91 -3
- package/.agent-src/skills/voc-extract/SKILL.md +164 -0
- package/.agent-src/templates/roadmaps.md +9 -0
- package/.claude-plugin/marketplace.json +7 -1
- package/CHANGELOG.md +34 -0
- package/README.md +2 -2
- package/docs/architecture.md +2 -2
- package/docs/catalog.md +6 -3
- package/docs/contracts/context-spine.md +133 -0
- package/docs/contracts/file-ownership-matrix.json +110 -0
- package/docs/contracts/mental-models.md +336 -0
- package/docs/guidelines/cross-role-handoff.md +127 -0
- package/package.json +1 -1
- package/scripts/lint_context_spine_usage.py +133 -0
- package/scripts/lint_roadmap_complexity.py +37 -0
- package/scripts/schemas/skill.schema.json +9 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
---
|
|
2
|
+
stability: stable
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
# Context-Spine Contract
|
|
7
|
+
|
|
8
|
+
> **Status:** active · **Stability:** stable · **Owner:** unified-senior-roles Block K1
|
|
9
|
+
> · **Lint gate:** `task lint-skills` (frontmatter shape only — slot semantics are author-side)
|
|
10
|
+
|
|
11
|
+
Senior skills repeatedly need three slabs of context that the user
|
|
12
|
+
already supplied earlier in the project: **what the product is**,
|
|
13
|
+
**who the team is**, **what the repo looks like**. The context-spine
|
|
14
|
+
mechanic captures those slabs once per project and lets every senior
|
|
15
|
+
skill cite the slot it needs — without re-asking the user, without
|
|
16
|
+
re-reading the manifest tree on every entry.
|
|
17
|
+
|
|
18
|
+
## § 1 — Purpose
|
|
19
|
+
|
|
20
|
+
Three failure modes the spine prevents:
|
|
21
|
+
|
|
22
|
+
1. **Repeat-the-context tax** — every senior skill restates "what is
|
|
23
|
+
this project / what does the team do / where does the code live"
|
|
24
|
+
to the user. The spine factors that into shared slots.
|
|
25
|
+
2. **Implicit-read drift** — a skill silently reads `composer.json` /
|
|
26
|
+
`README.md` / `package.json` to infer context, gets stale
|
|
27
|
+
information, and bakes it into the artifact. Spine reads are
|
|
28
|
+
**opt-in via frontmatter**, never implicit.
|
|
29
|
+
3. **Cross-role bikeshed** — Wave-2 personas (Block N) and Wing-3 / 4
|
|
30
|
+
senior skills argue over whose context-doc is canonical. The spine
|
|
31
|
+
names three slots and freezes the count.
|
|
32
|
+
|
|
33
|
+
## § 2 — Slot definitions
|
|
34
|
+
|
|
35
|
+
The spine has **exactly three slots**. Council Q1 verdict (2026-05-05,
|
|
36
|
+
KEEP-3): slot count is locked; extensions require an ADR (§ 5).
|
|
37
|
+
|
|
38
|
+
| Slot | Path under `agents/context-spine/` | Owner | Typical content |
|
|
39
|
+
|---|---|---|---|
|
|
40
|
+
| `product` | `product.md` | Product / discovery wing | What the product **is**, who it serves, the problem it solves, the JTBD framing, the bounded scope. Read by Block-L senior PO / discovery skills. |
|
|
41
|
+
| `team` | `team.md` | RevOps / maintainer wing | Who **maintains** this codebase, how decisions are made, review-routing conventions, cadence (release rhythm, planning ritual). Read by review-routing, finishing-a-development-branch, persona overrides. |
|
|
42
|
+
| `repo` | `repo.md` | Engineering wing | What the codebase **is** at the file-tree level: stack one-liner, primary languages, top-level module map, deploy target. Read by analysis skills, blast-radius-analyzer, project-analysis-* skills. |
|
|
43
|
+
|
|
44
|
+
Slots are markdown files. Each is **≤ 200 lines**; longer means the
|
|
45
|
+
slot is doing two jobs and the author should split or trim. Empty /
|
|
46
|
+
missing slot is allowed — the citing skill MUST handle absence
|
|
47
|
+
gracefully and fall back to its existing read paths.
|
|
48
|
+
|
|
49
|
+
## § 3 — Frontmatter opt-in
|
|
50
|
+
|
|
51
|
+
A senior skill declares which slots it reads via the `context_spine`
|
|
52
|
+
frontmatter array:
|
|
53
|
+
|
|
54
|
+
```yaml
|
|
55
|
+
---
|
|
56
|
+
name: customer-research
|
|
57
|
+
tier: senior
|
|
58
|
+
context_spine: [product, team]
|
|
59
|
+
...
|
|
60
|
+
---
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Rules:
|
|
64
|
+
|
|
65
|
+
- The key is **optional**. Senior skills MAY ship without it; the
|
|
66
|
+
default (`[]`) means the skill does not read the spine.
|
|
67
|
+
- Values are restricted to the literal slot names: `product`, `team`,
|
|
68
|
+
`repo`. Unknown values fail `task lint-skills` with
|
|
69
|
+
`unknown_context_spine_slot`.
|
|
70
|
+
- Reads MUST be opt-in and explicit. A skill body that says *"reads
|
|
71
|
+
`agents/context-spine/product.md` if present"* without declaring
|
|
72
|
+
the slot in frontmatter is **incorrect** — it bypasses the lint
|
|
73
|
+
gate and the user's expectation that the spine read is visible.
|
|
74
|
+
- The frontmatter value is the **contract**. The skill body cites
|
|
75
|
+
`agents/context-spine/<slot>.md` once near the top and lets the
|
|
76
|
+
reader follow the link if they care.
|
|
77
|
+
|
|
78
|
+
## § 4 — No implicit reads
|
|
79
|
+
|
|
80
|
+
The spine is a **discipline**, not a runtime. There is no Python
|
|
81
|
+
loader that injects spine content into a skill's prompt. The agent
|
|
82
|
+
loading a senior skill reads the skill body, sees the
|
|
83
|
+
`context_spine: [...]` declaration, and — if the slot files exist
|
|
84
|
+
— quotes them inline before executing the skill's procedure. The
|
|
85
|
+
skill body MUST NOT state a behavior that depends on the spine being
|
|
86
|
+
read; absence is recoverable, presence is a bonus.
|
|
87
|
+
|
|
88
|
+
This keeps the spine cheap (no orchestration plumbing), explicit
|
|
89
|
+
(every read is in frontmatter), and reversible (deleting the slot
|
|
90
|
+
file does not break the skill).
|
|
91
|
+
|
|
92
|
+
## § 5 — Slot-add policy
|
|
93
|
+
|
|
94
|
+
Adding a fourth slot is **structurally allowed but procedurally
|
|
95
|
+
expensive**. Two preconditions:
|
|
96
|
+
|
|
97
|
+
1. **Citation evidence.** ≥ 2 shipped senior skills declare the new
|
|
98
|
+
slot in their frontmatter and cite it in the body, with PRs
|
|
99
|
+
merged to `main`. Drafts and roadmap items do not count.
|
|
100
|
+
2. **ADR.** A new ADR under `docs/contracts/` named
|
|
101
|
+
`adr-context-spine-slot-<name>.md` documents the cognition gap
|
|
102
|
+
the existing three slots cannot fill, the slot's owner wing, and
|
|
103
|
+
the migration plan for the existing senior catalog (do they
|
|
104
|
+
declare the new slot, do they ignore it, do they get retrofitted).
|
|
105
|
+
|
|
106
|
+
The ADR ships with the schema bump (`scripts/schemas/skill.schema.json`
|
|
107
|
+
extends the `context_spine` enum) and a CHANGELOG entry under
|
|
108
|
+
`### Breaking` if the new enum value tightens an existing skill's
|
|
109
|
+
declaration.
|
|
110
|
+
|
|
111
|
+
This policy mitigates the slot-sprawl failure mode: "tri-slot locked
|
|
112
|
+
at 3 + ADR-gated growth" is the brake. The ADR is the single growth
|
|
113
|
+
lever; no consumer-side override exists.
|
|
114
|
+
|
|
115
|
+
## § 6 — Author checklist
|
|
116
|
+
|
|
117
|
+
Before shipping a senior skill that opts into the spine:
|
|
118
|
+
|
|
119
|
+
- [ ] Frontmatter declares `context_spine:` with values from
|
|
120
|
+
`{product, team, repo}`.
|
|
121
|
+
- [ ] Skill body cites `agents/context-spine/<slot>.md` near the top
|
|
122
|
+
(one link per declared slot).
|
|
123
|
+
- [ ] Procedure handles missing-slot gracefully — falls back to the
|
|
124
|
+
skill's existing read path, never errors out.
|
|
125
|
+
- [ ] `task lint-skills` passes with no `unknown_context_spine_slot`.
|
|
126
|
+
|
|
127
|
+
## See also
|
|
128
|
+
|
|
129
|
+
- `.agent-src.uncompressed/rules/skill-quality.md` § Senior-Tier
|
|
130
|
+
Required Structure — the four blocks every `tier: senior` skill
|
|
131
|
+
ships independently of spine opt-in.
|
|
132
|
+
- `docs/contracts/cross-wing-handoff.md` — typed handoffs between
|
|
133
|
+
senior skills; orthogonal to the spine (composition vs context).
|
|
@@ -1452,6 +1452,12 @@
|
|
|
1452
1452
|
"load_context": [],
|
|
1453
1453
|
"load_context_eager": []
|
|
1454
1454
|
},
|
|
1455
|
+
".agent-src.uncompressed/skills/customer-research/SKILL.md": {
|
|
1456
|
+
"kind": "skill",
|
|
1457
|
+
"rule_type": null,
|
|
1458
|
+
"load_context": [],
|
|
1459
|
+
"load_context_eager": []
|
|
1460
|
+
},
|
|
1455
1461
|
".agent-src.uncompressed/skills/dashboard-design/SKILL.md": {
|
|
1456
1462
|
"kind": "skill",
|
|
1457
1463
|
"rule_type": null,
|
|
@@ -2022,6 +2028,12 @@
|
|
|
2022
2028
|
"load_context": [],
|
|
2023
2029
|
"load_context_eager": []
|
|
2024
2030
|
},
|
|
2031
|
+
".agent-src.uncompressed/skills/release-comms/SKILL.md": {
|
|
2032
|
+
"kind": "skill",
|
|
2033
|
+
"rule_type": null,
|
|
2034
|
+
"load_context": [],
|
|
2035
|
+
"load_context_eager": []
|
|
2036
|
+
},
|
|
2025
2037
|
".agent-src.uncompressed/skills/repomix-packer/SKILL.md": {
|
|
2026
2038
|
"kind": "skill",
|
|
2027
2039
|
"rule_type": null,
|
|
@@ -4822,6 +4834,20 @@
|
|
|
4822
4834
|
"via": "self",
|
|
4823
4835
|
"depth": 0
|
|
4824
4836
|
},
|
|
4837
|
+
{
|
|
4838
|
+
"source": ".agent-src.uncompressed/personas/product-owner.md",
|
|
4839
|
+
"target": ".agent-src.uncompressed/skills/customer-research/SKILL.md",
|
|
4840
|
+
"type": "READ_ONLY",
|
|
4841
|
+
"via": "body_link",
|
|
4842
|
+
"depth": 1
|
|
4843
|
+
},
|
|
4844
|
+
{
|
|
4845
|
+
"source": ".agent-src.uncompressed/personas/product-owner.md",
|
|
4846
|
+
"target": ".agent-src.uncompressed/skills/release-comms/SKILL.md",
|
|
4847
|
+
"type": "READ_ONLY",
|
|
4848
|
+
"via": "body_link",
|
|
4849
|
+
"depth": 1
|
|
4850
|
+
},
|
|
4825
4851
|
{
|
|
4826
4852
|
"source": ".agent-src.uncompressed/personas/qa.md",
|
|
4827
4853
|
"target": ".agent-src.uncompressed/personas/qa.md",
|
|
@@ -6488,6 +6514,48 @@
|
|
|
6488
6514
|
"via": "self",
|
|
6489
6515
|
"depth": 0
|
|
6490
6516
|
},
|
|
6517
|
+
{
|
|
6518
|
+
"source": ".agent-src.uncompressed/skills/customer-research/SKILL.md",
|
|
6519
|
+
"target": ".agent-src.uncompressed/personas/product-owner.md",
|
|
6520
|
+
"type": "READ_ONLY",
|
|
6521
|
+
"via": "body_link",
|
|
6522
|
+
"depth": 1
|
|
6523
|
+
},
|
|
6524
|
+
{
|
|
6525
|
+
"source": ".agent-src.uncompressed/skills/customer-research/SKILL.md",
|
|
6526
|
+
"target": ".agent-src.uncompressed/skills/customer-research/SKILL.md",
|
|
6527
|
+
"type": "WRITE",
|
|
6528
|
+
"via": "self",
|
|
6529
|
+
"depth": 0
|
|
6530
|
+
},
|
|
6531
|
+
{
|
|
6532
|
+
"source": ".agent-src.uncompressed/skills/customer-research/SKILL.md",
|
|
6533
|
+
"target": ".agent-src.uncompressed/skills/funnel-analysis/SKILL.md",
|
|
6534
|
+
"type": "READ_ONLY",
|
|
6535
|
+
"via": "body_link",
|
|
6536
|
+
"depth": 1
|
|
6537
|
+
},
|
|
6538
|
+
{
|
|
6539
|
+
"source": ".agent-src.uncompressed/skills/customer-research/SKILL.md",
|
|
6540
|
+
"target": ".agent-src.uncompressed/skills/po-discovery/SKILL.md",
|
|
6541
|
+
"type": "READ_ONLY",
|
|
6542
|
+
"via": "body_link",
|
|
6543
|
+
"depth": 1
|
|
6544
|
+
},
|
|
6545
|
+
{
|
|
6546
|
+
"source": ".agent-src.uncompressed/skills/customer-research/SKILL.md",
|
|
6547
|
+
"target": ".agent-src.uncompressed/skills/refine-ticket/SKILL.md",
|
|
6548
|
+
"type": "READ_ONLY",
|
|
6549
|
+
"via": "body_link",
|
|
6550
|
+
"depth": 1
|
|
6551
|
+
},
|
|
6552
|
+
{
|
|
6553
|
+
"source": ".agent-src.uncompressed/skills/customer-research/SKILL.md",
|
|
6554
|
+
"target": ".agent-src.uncompressed/skills/rice-prioritization/SKILL.md",
|
|
6555
|
+
"type": "READ_ONLY",
|
|
6556
|
+
"via": "body_link",
|
|
6557
|
+
"depth": 1
|
|
6558
|
+
},
|
|
6491
6559
|
{
|
|
6492
6560
|
"source": ".agent-src.uncompressed/skills/dashboard-design/SKILL.md",
|
|
6493
6561
|
"target": ".agent-src.uncompressed/skills/dashboard-design/SKILL.md",
|
|
@@ -8056,6 +8124,48 @@
|
|
|
8056
8124
|
"via": "body_link",
|
|
8057
8125
|
"depth": 1
|
|
8058
8126
|
},
|
|
8127
|
+
{
|
|
8128
|
+
"source": ".agent-src.uncompressed/skills/release-comms/SKILL.md",
|
|
8129
|
+
"target": ".agent-src.uncompressed/personas/product-owner.md",
|
|
8130
|
+
"type": "READ_ONLY",
|
|
8131
|
+
"via": "body_link",
|
|
8132
|
+
"depth": 1
|
|
8133
|
+
},
|
|
8134
|
+
{
|
|
8135
|
+
"source": ".agent-src.uncompressed/skills/release-comms/SKILL.md",
|
|
8136
|
+
"target": ".agent-src.uncompressed/skills/customer-research/SKILL.md",
|
|
8137
|
+
"type": "READ_ONLY",
|
|
8138
|
+
"via": "body_link",
|
|
8139
|
+
"depth": 1
|
|
8140
|
+
},
|
|
8141
|
+
{
|
|
8142
|
+
"source": ".agent-src.uncompressed/skills/release-comms/SKILL.md",
|
|
8143
|
+
"target": ".agent-src.uncompressed/skills/funnel-analysis/SKILL.md",
|
|
8144
|
+
"type": "READ_ONLY",
|
|
8145
|
+
"via": "body_link",
|
|
8146
|
+
"depth": 1
|
|
8147
|
+
},
|
|
8148
|
+
{
|
|
8149
|
+
"source": ".agent-src.uncompressed/skills/release-comms/SKILL.md",
|
|
8150
|
+
"target": ".agent-src.uncompressed/skills/incident-commander/SKILL.md",
|
|
8151
|
+
"type": "READ_ONLY",
|
|
8152
|
+
"via": "body_link",
|
|
8153
|
+
"depth": 1
|
|
8154
|
+
},
|
|
8155
|
+
{
|
|
8156
|
+
"source": ".agent-src.uncompressed/skills/release-comms/SKILL.md",
|
|
8157
|
+
"target": ".agent-src.uncompressed/skills/release-comms/SKILL.md",
|
|
8158
|
+
"type": "WRITE",
|
|
8159
|
+
"via": "self",
|
|
8160
|
+
"depth": 0
|
|
8161
|
+
},
|
|
8162
|
+
{
|
|
8163
|
+
"source": ".agent-src.uncompressed/skills/release-comms/SKILL.md",
|
|
8164
|
+
"target": ".agent-src.uncompressed/skills/rice-prioritization/SKILL.md",
|
|
8165
|
+
"type": "READ_ONLY",
|
|
8166
|
+
"via": "body_link",
|
|
8167
|
+
"depth": 1
|
|
8168
|
+
},
|
|
8059
8169
|
{
|
|
8060
8170
|
"source": ".agent-src.uncompressed/skills/repomix-packer/SKILL.md",
|
|
8061
8171
|
"target": ".agent-src.uncompressed/commands/analyze-reference-repo.md",
|
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
---
|
|
2
|
+
stability: stable
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
# Mental Models — Top-30 Cross-Role Reference
|
|
7
|
+
|
|
8
|
+
> **Status:** active · **Stability:** stable · **Owner:** unified-senior-roles Block K4
|
|
9
|
+
> · **Hard cap:** 30 models · **R23 mitigation:** additions require removing one (zero-sum)
|
|
10
|
+
|
|
11
|
+
A ranked, citation-only reference. Senior skills cite a model by
|
|
12
|
+
its number when the cognition step it triggers needs framing prose
|
|
13
|
+
the skill would otherwise re-invent. The doc is not auto-loaded
|
|
14
|
+
and never appears in a prompt unless a skill names a row.
|
|
15
|
+
|
|
16
|
+
## How this list was built
|
|
17
|
+
|
|
18
|
+
Council iter-1 (Anthropic `claude-sonnet-4-5` + OpenAI `gpt-4o`,
|
|
19
|
+
2026-05-05) Q2 verdict: **Ranked Top-30**, cross-role bias.
|
|
20
|
+
Channel-specific (CAC/LTV-as-model, ad-auction, SEO keyword),
|
|
21
|
+
C-suite strategy (Blue Ocean, Porter's Five Forces), and sales
|
|
22
|
+
pipeline (BANT, MEDDIC) **explicitly cut** — they are domain
|
|
23
|
+
heuristics, not cross-role cognition tools. Additions require
|
|
24
|
+
removing one.
|
|
25
|
+
|
|
26
|
+
Each entry: title · domain · ≤ 8-line summary · one citation example
|
|
27
|
+
from a shipped skill (path is the proof of provenance, not a load
|
|
28
|
+
instruction).
|
|
29
|
+
|
|
30
|
+
## The 30 models
|
|
31
|
+
|
|
32
|
+
### 1. First-principles thinking
|
|
33
|
+
|
|
34
|
+
Strip the problem to assumptions you can defend from physics, contract,
|
|
35
|
+
or hard data. Re-derive the answer from those, not by analogy to past
|
|
36
|
+
decisions. The expensive part is identifying which "principle" is
|
|
37
|
+
actually load-bearing vs. inherited belief; the cheap part is the
|
|
38
|
+
re-derivation. Use when an inherited approach feels stale and you
|
|
39
|
+
suspect the real constraint moved.
|
|
40
|
+
*Cited by:* `.agent-src.uncompressed/skills/improve-before-implement/`
|
|
41
|
+
(challenges weak requirements before code is written).
|
|
42
|
+
|
|
43
|
+
### 2. Jobs-to-be-Done (JTBD)
|
|
44
|
+
|
|
45
|
+
A user "hires" a product to make progress in a specific situation;
|
|
46
|
+
the job is the situation × motivation × expected outcome, not the
|
|
47
|
+
demographic. The unit of analysis is the **switch event** — what
|
|
48
|
+
caused them to fire the previous solution. JTBD reframes feature
|
|
49
|
+
requests as evidence of an unmet job, not feature gaps.
|
|
50
|
+
*Cited by:* `.agent-src.uncompressed/skills/po-discovery/`
|
|
51
|
+
(reframes fuzzy product asks via job-shape).
|
|
52
|
+
|
|
53
|
+
### 3. Pareto principle (80/20)
|
|
54
|
+
|
|
55
|
+
Roughly 80% of effects come from 20% of causes. The lift is in
|
|
56
|
+
**identifying** the 20% — which user segment, which test failure,
|
|
57
|
+
which N+1 query — not in re-stating the ratio. Anti-pattern: using
|
|
58
|
+
80/20 as permission to ignore the long tail without measuring it.
|
|
59
|
+
*Cited by:* `.agent-src.uncompressed/skills/performance-analysis/`
|
|
60
|
+
(N+1 detection prioritizes the 20% of queries causing 80% of latency).
|
|
61
|
+
|
|
62
|
+
### 4. Second-order thinking
|
|
63
|
+
|
|
64
|
+
Ask "and then what?" until the chain breaks down. First-order picks
|
|
65
|
+
what looks best now; second-order weighs the consequences of the
|
|
66
|
+
consequences. Most "obvious" decisions die at second-order — the
|
|
67
|
+
optimization that ships now creates the maintenance debt that kills
|
|
68
|
+
velocity in 6 months.
|
|
69
|
+
*Cited by:* `.agent-src.uncompressed/skills/adversarial-review/`
|
|
70
|
+
(stress-tests a plan by walking past the immediate verdict).
|
|
71
|
+
|
|
72
|
+
### 5. Opportunity cost
|
|
73
|
+
|
|
74
|
+
The real cost of any choice is the **next-best alternative you did
|
|
75
|
+
not pick**, not the dollar / time spent. A 2-week feature is not
|
|
76
|
+
"2 weeks expensive" — it is the highest-value 2-week feature you
|
|
77
|
+
chose not to ship instead. Naming the alternative makes the cost
|
|
78
|
+
legible; pretending there isn't one is the failure mode.
|
|
79
|
+
*Cited by:* `.agent-src.uncompressed/skills/rice-prioritization/`
|
|
80
|
+
(scores compete for capacity; non-shipped items are the cost basis).
|
|
81
|
+
|
|
82
|
+
### 6. Theory of constraints
|
|
83
|
+
|
|
84
|
+
System throughput is bounded by exactly one constraint at a time.
|
|
85
|
+
Improving any non-constraint resource is local optimization with
|
|
86
|
+
zero system effect — usually negative, since it loads the actual
|
|
87
|
+
constraint harder. The discipline: identify, exploit, subordinate,
|
|
88
|
+
elevate, then find the next constraint.
|
|
89
|
+
*Cited by:* `.agent-src.uncompressed/skills/funnel-analysis/`
|
|
90
|
+
(identifies the single funnel stage that bounds conversion throughput).
|
|
91
|
+
|
|
92
|
+
### 7. MVP (Minimum Viable Product)
|
|
93
|
+
|
|
94
|
+
The smallest thing that produces real evidence about whether the
|
|
95
|
+
hypothesis holds. MVP is a **measurement instrument**, not a
|
|
96
|
+
junior-grade product. The trap is shipping an MVP that cannot
|
|
97
|
+
distinguish "user behavior validates the hypothesis" from "user
|
|
98
|
+
behavior was driven by something else"; that is just a small
|
|
99
|
+
product.
|
|
100
|
+
*Cited by:* `.agent-src.uncompressed/skills/po-discovery/`
|
|
101
|
+
(scopes a discovery slice that produces a learning, not a feature).
|
|
102
|
+
|
|
103
|
+
### 8. Build-Measure-Learn
|
|
104
|
+
|
|
105
|
+
A loop: build the smallest test, measure the actual signal, decide
|
|
106
|
+
to persevere or pivot. The skill is in **shortening the loop** —
|
|
107
|
+
weeks beat months because months let teams rationalize a failed
|
|
108
|
+
hypothesis. The loop is the artefact; any individual cycle is just
|
|
109
|
+
one iteration.
|
|
110
|
+
*Cited by:* `.agent-src.uncompressed/skills/test-driven-development/`
|
|
111
|
+
(the build-measure-learn loop applied to one function at a time).
|
|
112
|
+
|
|
113
|
+
### 9. Hypothesis-driven development
|
|
114
|
+
|
|
115
|
+
State the hypothesis as a falsifiable sentence with a metric and a
|
|
116
|
+
threshold **before** writing the code. "If we do X, metric Y will
|
|
117
|
+
move by Z." Without the threshold, the team will declare any
|
|
118
|
+
movement victory. With it, the team learns from the misses.
|
|
119
|
+
*Cited by:* `.agent-src.uncompressed/skills/project-analysis-hypothesis-driven/`
|
|
120
|
+
(competing hypotheses + validation loops + evidence-based conclusions).
|
|
121
|
+
|
|
122
|
+
### 10. Reversible vs. irreversible decisions
|
|
123
|
+
|
|
124
|
+
One-way doors deserve a high bar; two-way doors deserve a low bar
|
|
125
|
+
plus speed. The bias under uncertainty: shipping a reversible
|
|
126
|
+
decision early is almost always cheaper than the meeting required
|
|
127
|
+
to decide. The skill is recognizing irreversibility — usually data
|
|
128
|
+
shape, public API surface, or hiring.
|
|
129
|
+
*Cited by:* `.agent-src.uncompressed/skills/decision-record/`
|
|
130
|
+
(records the reversal-criteria so the irreversibility verdict is auditable).
|
|
131
|
+
|
|
132
|
+
### 11. DX as first-class concern
|
|
133
|
+
|
|
134
|
+
Developer experience is a leading indicator of throughput; it is not
|
|
135
|
+
a polish task. Slow tests, fragile local setup, and surprising tool
|
|
136
|
+
output compound — every developer pays the tax every day. Treat DX
|
|
137
|
+
issues like user-facing bugs, with severity and SLA. The compounding
|
|
138
|
+
math makes "fix it later" almost always wrong.
|
|
139
|
+
*Cited by:* `.agent-src.uncompressed/skills/test-performance/`
|
|
140
|
+
(test-suite latency is a developer-facing metric, optimized as such).
|
|
141
|
+
|
|
142
|
+
### 12. Conway's Law
|
|
143
|
+
|
|
144
|
+
The systems an organization builds mirror its communication structure.
|
|
145
|
+
Re-orgs propagate to architecture; architecture changes that fight the
|
|
146
|
+
org chart fail. The lever is bidirectional: pick the architecture you
|
|
147
|
+
want, then engineer the communication paths that produce it.
|
|
148
|
+
*Cited by:* `.agent-src.uncompressed/skills/api-design/`
|
|
149
|
+
(bounded-context choices follow team boundaries, not the other way around).
|
|
150
|
+
|
|
151
|
+
### 13. Occam's Razor
|
|
152
|
+
|
|
153
|
+
Among hypotheses that fit the evidence equally well, prefer the one
|
|
154
|
+
that introduces the fewest new entities. In debugging, the boring
|
|
155
|
+
explanation (typo, off-by-one, stale cache) is usually correct. The
|
|
156
|
+
trap is **assuming** instead of **falsifying** — Occam suggests
|
|
157
|
+
order of investigation, not a verdict.
|
|
158
|
+
*Cited by:* `.agent-src.uncompressed/skills/systematic-debugging/`
|
|
159
|
+
(reproduce → isolate → hypothesize, simplest hypothesis first).
|
|
160
|
+
|
|
161
|
+
### 14. Meadows leverage points
|
|
162
|
+
|
|
163
|
+
Donella Meadows' ranking: the highest-leverage interventions in a
|
|
164
|
+
system are paradigm shifts, then goals, then rules — far above
|
|
165
|
+
parameter tweaks. Most "improvement" effort fights parameters
|
|
166
|
+
(numbers, delays) at the bottom of the ranking. Climb the ranking
|
|
167
|
+
before optimizing.
|
|
168
|
+
*Cited by:* `.agent-src.uncompressed/skills/architecture-review-lens/`
|
|
169
|
+
(boundary / dependency-direction issues are higher-leverage than tweaks).
|
|
170
|
+
|
|
171
|
+
### 15. Signal vs. noise
|
|
172
|
+
|
|
173
|
+
Every metric is a sum of underlying signal and measurement noise.
|
|
174
|
+
A change of size N is meaningful only if N exceeds the noise floor
|
|
175
|
+
for that metric × that horizon. The discipline: estimate the noise
|
|
176
|
+
band first, then evaluate the change. Without the noise band, every
|
|
177
|
+
movement looks like a trend.
|
|
178
|
+
*Cited by:* `.agent-src.uncompressed/skills/funnel-analysis/`
|
|
179
|
+
(stage-to-stage drop is read against the typical week-on-week noise).
|
|
180
|
+
|
|
181
|
+
### 16. Leading vs. lagging indicators
|
|
182
|
+
|
|
183
|
+
Lagging indicators (revenue, churn, retention) are accurate and
|
|
184
|
+
late. Leading indicators (activation events, repeat-use, support
|
|
185
|
+
volume) are noisy and early. Operating on lagging alone means the
|
|
186
|
+
team learns about problems after they cost money. Pair them: lagging
|
|
187
|
+
is the score, leading is the steering wheel.
|
|
188
|
+
*Cited by:* `.agent-src.uncompressed/skills/dashboard-design/`
|
|
189
|
+
(RED / USE / Golden Signals split leading from lagging explicitly).
|
|
190
|
+
|
|
191
|
+
### 17. Churn as health metric
|
|
192
|
+
|
|
193
|
+
Retention curves expose what acquisition cannot: whether the product
|
|
194
|
+
delivers ongoing value. A flat retention tail means the product
|
|
195
|
+
works for the survivors; a sliding tail means the underlying job is
|
|
196
|
+
not getting done. Churn is upstream of CAC payback — fix it first,
|
|
197
|
+
then scale.
|
|
198
|
+
*Cited by:* `.agent-src.uncompressed/skills/funnel-analysis/`
|
|
199
|
+
(retention bend distinguishes activation problems from product-fit).
|
|
200
|
+
|
|
201
|
+
### 18. Pull vs. push systems
|
|
202
|
+
|
|
203
|
+
Pull systems start work when downstream capacity opens; push systems
|
|
204
|
+
start work when upstream capacity is free. Push optimizes individual
|
|
205
|
+
utilization, pull optimizes flow. Most software teams claim pull and
|
|
206
|
+
operate push (queues filling up, sprints overcommitted, WIP
|
|
207
|
+
unmanaged). The fix is WIP limits, not motivation.
|
|
208
|
+
*Cited by:* `.agent-src.uncompressed/skills/laravel-horizon/`
|
|
209
|
+
(queue-balance strategies are pull-vs-push policy in concrete form).
|
|
210
|
+
|
|
211
|
+
### 19. Shift-left
|
|
212
|
+
|
|
213
|
+
Move quality / security / accessibility checks earlier in the
|
|
214
|
+
lifecycle — to the developer's machine, the PR, the design — where
|
|
215
|
+
the cost of fixing is order-of-magnitude lower. The trade-off:
|
|
216
|
+
shift-left adds friction at the front; the math holds when defect
|
|
217
|
+
escape rate drops faster than the friction cost.
|
|
218
|
+
*Cited by:* `.agent-src.uncompressed/skills/threat-modeling/`
|
|
219
|
+
(threats enumerated before implementation, not after pen-test).
|
|
220
|
+
|
|
221
|
+
### 20. Latency vs. throughput
|
|
222
|
+
|
|
223
|
+
Optimizing one usually hurts the other; the trade-off is structural,
|
|
224
|
+
not implementation-detail. Batch processing trades latency for
|
|
225
|
+
throughput; real-time pipelines trade throughput for latency. The
|
|
226
|
+
mistake is optimizing without naming which one matters for the user
|
|
227
|
+
job at hand.
|
|
228
|
+
*Cited by:* `.agent-src.uncompressed/skills/database/`
|
|
229
|
+
(index strategy and query batching surface the trade-off explicitly).
|
|
230
|
+
|
|
231
|
+
### 21. Trust boundaries
|
|
232
|
+
|
|
233
|
+
Every system has explicit lines across which inputs cannot be
|
|
234
|
+
trusted: client → server, tenant A → tenant B, free tier → paid
|
|
235
|
+
tier, public endpoint → internal service. Threats enter at boundary
|
|
236
|
+
crossings; defense lives at the crossing, not deeper. Drawing the
|
|
237
|
+
boundary correctly is half the security work.
|
|
238
|
+
*Cited by:* `.agent-src.uncompressed/skills/threat-modeling/`
|
|
239
|
+
(produces trust boundaries + abuse cases mapped to files).
|
|
240
|
+
|
|
241
|
+
### 22. Defense in depth
|
|
242
|
+
|
|
243
|
+
No single control is sufficient; layer entry validation, business
|
|
244
|
+
rules, environment hardening, and instrumentation so a bypass at
|
|
245
|
+
one layer is caught at the next. The trap is mistaking redundancy
|
|
246
|
+
for security theatre — each layer must have an independent failure
|
|
247
|
+
mode, not a copy of the previous one.
|
|
248
|
+
*Cited by:* `.agent-src.uncompressed/skills/defense-in-depth/`
|
|
249
|
+
(turns local fix into structural one across four guard layers).
|
|
250
|
+
|
|
251
|
+
### 23. Blast radius
|
|
252
|
+
|
|
253
|
+
Before changing shared code, enumerate every call site, event
|
|
254
|
+
consumer, queue worker, API client, migration, and test that the
|
|
255
|
+
change touches. The radius is the work; the diff is the artefact.
|
|
256
|
+
Underestimating radius is the failure mode that breaks production
|
|
257
|
+
when the change "looked small".
|
|
258
|
+
*Cited by:* `.agent-src.uncompressed/skills/blast-radius-analyzer/`
|
|
259
|
+
(file:line citation per dependency, BEFORE the edit).
|
|
260
|
+
|
|
261
|
+
### 24. Iron triangle (scope / time / quality)
|
|
262
|
+
|
|
263
|
+
Scope, time, and quality are coupled — fix two, the third moves.
|
|
264
|
+
Pretending to fix all three is how teams ship at low quality and
|
|
265
|
+
call it on-time. The honest move is naming which two are fixed and
|
|
266
|
+
which one absorbs the variance, BEFORE the work starts.
|
|
267
|
+
*Cited by:* `.agent-src.uncompressed/skills/refine-ticket/`
|
|
268
|
+
(AC sharpening forces explicit scope decisions before estimation).
|
|
269
|
+
|
|
270
|
+
### 25. Definition of Done
|
|
271
|
+
|
|
272
|
+
A shared, auditable description of what "done" means for a unit of
|
|
273
|
+
work — tests, docs, deployment, comms. Without one, every team
|
|
274
|
+
member ships their personal threshold and disputes downstream. The
|
|
275
|
+
discipline is making it visible, agreed, and consistently applied —
|
|
276
|
+
not the specific items on it.
|
|
277
|
+
*Cited by:* `.agent-src.uncompressed/skills/verify-completion-evidence/`
|
|
278
|
+
(fresh evidence is required before any "done" claim).
|
|
279
|
+
|
|
280
|
+
### 26. Postmortem-driven learning
|
|
281
|
+
|
|
282
|
+
Incidents are signal-rich; the team that captures the signal beats
|
|
283
|
+
the team that hides the incident. Blameless postmortems separate
|
|
284
|
+
contribution from blame, surface systemic causes, and produce
|
|
285
|
+
mitigations that reduce future incident rate — not just the count
|
|
286
|
+
of one-off fixes.
|
|
287
|
+
*Cited by:* `.agent-src.uncompressed/skills/incident-commander/`
|
|
288
|
+
(severity framing + comms cadence + post-mortem skeleton).
|
|
289
|
+
|
|
290
|
+
### 27. Tech debt as interest
|
|
291
|
+
|
|
292
|
+
Tech debt has a principal (the shortcut taken) and an interest
|
|
293
|
+
payment (the ongoing tax on velocity). Carrying the debt is the
|
|
294
|
+
right call when the principal is repayable and the interest is
|
|
295
|
+
small; the failure is treating ongoing high-interest debt as a
|
|
296
|
+
fixed cost. Track it like a balance sheet.
|
|
297
|
+
*Cited by:* `.agent-src.uncompressed/skills/tech-debt-tracker/`
|
|
298
|
+
(interest-vs-principal framing, prioritisation by carrying cost).
|
|
299
|
+
|
|
300
|
+
### 28. Mise en place
|
|
301
|
+
|
|
302
|
+
Prepare every input — data, fixtures, dependencies, decisions —
|
|
303
|
+
before the cooking step starts. Switching between prep and cook is
|
|
304
|
+
where errors enter. In software, the analogue is staged commits,
|
|
305
|
+
prepared test fixtures, and decisions locked before implementation.
|
|
306
|
+
The discipline is the savings, not the metaphor.
|
|
307
|
+
*Cited by:* `.agent-src.uncompressed/skills/existing-ui-audit/`
|
|
308
|
+
(inventory before any non-trivial UI edit, hard gate).
|
|
309
|
+
|
|
310
|
+
### 29. Premortem
|
|
311
|
+
|
|
312
|
+
Before kickoff, assume the project failed and ask why — names the
|
|
313
|
+
risks the team already knows but has not voiced. The trick is the
|
|
314
|
+
past-tense framing; "what could go wrong" surfaces less than "it
|
|
315
|
+
failed, what happened". Cheap; high signal-to-noise; the residual
|
|
316
|
+
output is a risk register the team actually defends.
|
|
317
|
+
*Cited by:* `.agent-src.uncompressed/skills/risk-officer/`
|
|
318
|
+
(blast-radius framing, mitigations, residual-risk verdict pre-commit).
|
|
319
|
+
|
|
320
|
+
### 30. Inversion
|
|
321
|
+
|
|
322
|
+
Instead of asking "how do I succeed at X?", ask "how would I
|
|
323
|
+
guarantee failure at X?" — then avoid that. Inversion exposes the
|
|
324
|
+
non-obvious failure modes that direct planning misses, especially
|
|
325
|
+
in security, ops, and people problems where the failure surface is
|
|
326
|
+
larger than the success surface.
|
|
327
|
+
*Cited by:* `.agent-src.uncompressed/skills/adversarial-review/`
|
|
328
|
+
(devil's-advocate stress-test poking holes in a plan).
|
|
329
|
+
|
|
330
|
+
## Adding or removing a model
|
|
331
|
+
|
|
332
|
+
Hard cap is 30. Adding a 31st requires removing one and naming the
|
|
333
|
+
swap in the PR description — the council verdict (R23) is that the
|
|
334
|
+
list earns its weight only if every entry is load-bearing. Removal
|
|
335
|
+
criteria: ≤ 1 citation across the catalog after one minor release,
|
|
336
|
+
or superseded by a more general entry.
|