@event4u/agent-config 1.34.0 → 1.36.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/memory/load.md +69 -0
- package/.agent-src/commands/memory/mine-session.md +151 -0
- package/.agent-src/commands/memory/promote.md +35 -0
- package/.agent-src/commands/memory/propose.md +10 -1
- package/.agent-src/commands/memory.md +5 -3
- package/.agent-src/commands/roadmap/process-full.md +20 -15
- package/.agent-src/contexts/authority/scope-mechanics.md +36 -0
- package/.agent-src/contexts/execution/autonomy-detection.md +7 -7
- package/.agent-src/contexts/execution/roadmap-process-loop.md +16 -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/rules/autonomous-execution.md +25 -0
- package/.agent-src/rules/scope-control.md +12 -5
- 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/memory-consolidation/SKILL.md +216 -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 +14 -0
- package/.claude-plugin/marketplace.json +9 -1
- package/CHANGELOG.md +64 -0
- package/README.md +3 -3
- package/config/agent-settings.template.yml +35 -0
- package/docs/architecture.md +3 -3
- package/docs/catalog.md +14 -5
- package/docs/contracts/agent-memory-contract.md +15 -1
- package/docs/contracts/command-clusters.md +1 -1
- package/docs/contracts/context-spine.md +133 -0
- package/docs/contracts/file-ownership-matrix.json +388 -0
- package/docs/contracts/mental-models.md +336 -0
- package/docs/getting-started.md +1 -1
- package/docs/guidelines/agent-infra/engineering-memory-data-format.md +52 -0
- package/docs/guidelines/cross-role-handoff.md +127 -0
- package/package.json +1 -1
- package/scripts/check_memory.py +106 -4
- package/scripts/check_references.py +1 -0
- package/scripts/lint_context_spine_usage.py +133 -0
- package/scripts/lint_roadmap_complexity.py +87 -3
- package/scripts/mine_session.py +279 -0
- package/scripts/schemas/skill.schema.json +9 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: customer-research
|
|
3
|
+
description: "Use when shaping a discovery slice — JTBD-framed interview guide, switch-event focus, verbatim quotes not summaries. Triggers on 'talk to users', 'why did they cancel', 'before we build X'."
|
|
4
|
+
status: active
|
|
5
|
+
tier: senior
|
|
6
|
+
source: package
|
|
7
|
+
domain: product
|
|
8
|
+
context_spine: [product]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# customer-research
|
|
12
|
+
|
|
13
|
+
## When to use
|
|
14
|
+
|
|
15
|
+
- A backlog item is fuzzy because no one has talked to a current user about the underlying job in the last quarter.
|
|
16
|
+
- A churn or refund spike needs a switch-event explanation, not a feature gap list.
|
|
17
|
+
- A product owner is about to write AC for a feature that has not been validated against a real user job.
|
|
18
|
+
|
|
19
|
+
Do NOT use for quantitative funnel diagnosis (see `funnel-analysis`),
|
|
20
|
+
RICE-style ranking (see `rice-prioritization`), or surveying at scale —
|
|
21
|
+
this skill is about depth-5-to-10 interviews, not statistics.
|
|
22
|
+
|
|
23
|
+
## Cognition cluster
|
|
24
|
+
|
|
25
|
+
- **Mental model 2 — Jobs-to-be-Done.** Frames every question against
|
|
26
|
+
the **switch event**: what caused the user to fire the previous
|
|
27
|
+
solution? See [`docs/contracts/mental-models.md`](../../../docs/contracts/mental-models.md) § 2.
|
|
28
|
+
- **Mental model 3 — Pareto principle.** A research week that
|
|
29
|
+
produces 12 distinct insights is usually re-discovering the same
|
|
30
|
+
three. See `mental-models.md` § 3.
|
|
31
|
+
|
|
32
|
+
## Procedure
|
|
33
|
+
|
|
34
|
+
### Step 0: Frame the job
|
|
35
|
+
|
|
36
|
+
1. Write one sentence: *"Users hire \<thing\> to make progress in \<situation\>, when motivated by \<pressure\>, expecting \<outcome\>."* If you cannot finish the sentence, the discovery slice is not yet shaped — stop and route to `po-discovery`.
|
|
37
|
+
2. Read the **product** slot of the [context-spine](../../../docs/contracts/context-spine.md) (if the consumer project has filled it) for bounded scope, and the **team** slot for the senior PO / researcher handoff target. Skip if absent — note in the brief.
|
|
38
|
+
3. Identify **one** competing solution the user might fire. Multiple competitors per session blurs the switch event.
|
|
39
|
+
|
|
40
|
+
### Step 1: Recruit the right 5–8
|
|
41
|
+
|
|
42
|
+
1. Recruit **switchers** (joined in last 60 days) and **leavers**
|
|
43
|
+
(cancelled in last 60 days). Long-tenure power-users go in a
|
|
44
|
+
separate bucket — they explain habits, not jobs.
|
|
45
|
+
2. 5 minimum, 8 maximum. Saturation hits around 6 in a tightly
|
|
46
|
+
scoped job — the Pareto cut. Beyond 8 is research theatre.
|
|
47
|
+
3. Avoid friends, employees, beta-program over-talkers — selection bias is the failure mode that survives the AC.
|
|
48
|
+
|
|
49
|
+
### Step 2: Run the interview
|
|
50
|
+
|
|
51
|
+
1. Open with the **switch event**: *"Walk me through the day you decided to start using \<product\>."* Time, place, trigger, alternative considered.
|
|
52
|
+
2. Past behaviour, not hypothetical. Replace *"would you use"* with *"the last time you needed X, what did you do?"*.
|
|
53
|
+
3. Capture **quotes**, not summaries. Verbatim quotes survive the AC; paraphrases get re-interpreted into pre-existing beliefs.
|
|
54
|
+
4. Listen for the **anxiety / habit** pair — what they feared in switching, what habit died.
|
|
55
|
+
|
|
56
|
+
### Step 3: Code the evidence
|
|
57
|
+
|
|
58
|
+
1. One quote per insight. Tag each with: switch-event, anxiety, habit, expected-outcome, unexpected-outcome.
|
|
59
|
+
2. An insight without a quote is a hypothesis, not a finding — mark it.
|
|
60
|
+
3. Frequency-rank by how many distinct interviewees touched the insight (≥ 3 is signal; 1 is anecdote).
|
|
61
|
+
|
|
62
|
+
### Step 4: Hand back
|
|
63
|
+
|
|
64
|
+
1. Produce the three artifacts (see `## Output`).
|
|
65
|
+
2. Hand the brief to the senior PO. Do **not** translate findings into AC inside this skill — that is `refine-ticket`'s job.
|
|
66
|
+
|
|
67
|
+
## Related Skills
|
|
68
|
+
|
|
69
|
+
**WHEN to use this**
|
|
70
|
+
|
|
71
|
+
- The unit of analysis is **a real user's switch event**.
|
|
72
|
+
- Discovery is fuzzy and the team is about to ship without validation.
|
|
73
|
+
- A retention or churn spike needs a narrative, not a metric.
|
|
74
|
+
|
|
75
|
+
**WHEN NOT to use this**
|
|
76
|
+
|
|
77
|
+
- Quantitative drop-off across stages — route to [`funnel-analysis`](../funnel-analysis/SKILL.md).
|
|
78
|
+
- Ranking competing initiatives — route to [`rice-prioritization`](../rice-prioritization/SKILL.md).
|
|
79
|
+
- Reframing a fuzzy product ask before any user contact — route to [`po-discovery`](../po-discovery/SKILL.md).
|
|
80
|
+
- AC sharpening on an already-validated ticket — route to [`refine-ticket`](../refine-ticket/SKILL.md).
|
|
81
|
+
|
|
82
|
+
## When the agent should load this
|
|
83
|
+
|
|
84
|
+
- "We need to talk to users before we build X."
|
|
85
|
+
- "Why are people churning at month 2?"
|
|
86
|
+
- "Run customer research on the new pricing tier."
|
|
87
|
+
- "I keep guessing what the user wants — let's actually ask."
|
|
88
|
+
- "Before refining this ticket, do we know the real job?"
|
|
89
|
+
|
|
90
|
+
## Output
|
|
91
|
+
|
|
92
|
+
1. **`research-brief.md`** — frame sentence, recruit criteria, target sample, JTBD focal job, list of competing solutions in scope. Pre-interview artifact.
|
|
93
|
+
2. **`evidence-log.md`** — one row per insight: quote · interviewee ID · tag (switch / anxiety / habit / outcome) · frequency. Sorted by frequency descending. Verbatim only.
|
|
94
|
+
3. **`switch-event-summary.md`** — narrative of the dominant switch event(s) the research surfaced, with ≥ 3 supporting quotes per claim. Hand-off artifact for [`refine-ticket`](../refine-ticket/SKILL.md) and the senior product owner persona (currently [`product-owner`](../../personas/product-owner.md); senior persona shipping in next plate).
|
|
95
|
+
|
|
96
|
+
## Gotcha
|
|
97
|
+
|
|
98
|
+
- Asking *"would you use"* contaminates the answer with politeness; ground every question in past behaviour.
|
|
99
|
+
- One articulate interviewee can swamp evidence-log. Frequency-rank by distinct people, not distinct quotes.
|
|
100
|
+
- Tagging too aggressively pre-interview hides surprise findings — leave room for `unexpected-outcome`.
|
|
101
|
+
- A research week without ≥ 3 disqualified hypotheses is suspect — research that confirms everything is research that asked nothing.
|
|
102
|
+
|
|
103
|
+
## Do NOT
|
|
104
|
+
|
|
105
|
+
- Do NOT translate findings into acceptance criteria inside this skill — hand off to `refine-ticket`.
|
|
106
|
+
- Do NOT recruit only happy users; switchers and leavers carry the switch-event signal, satisfied users do not.
|
|
107
|
+
- Do NOT skip the frame sentence. An unframed interview produces 50 quotes about 8 different jobs.
|
|
108
|
+
|
|
109
|
+
## Runnable example
|
|
110
|
+
|
|
111
|
+
Pricing-tier churn at month 2:
|
|
112
|
+
|
|
113
|
+
- Frame: *"Customers hire \<product\> to make progress in \<weekly reporting\>, motivated by \<board cadence\>, expecting \<one-click roll-up\>."*
|
|
114
|
+
- Recruit: 6 leavers (cancelled within 30 days of month 2), 2 switchers from competitor C.
|
|
115
|
+
- Interview: open with *"Walk me through the day you decided to cancel."* Capture verbatim.
|
|
116
|
+
- Output: `evidence-log.md` shows 5 of 8 cite the *manual export step* as the cancellation trigger — switch-event signal, ≥ 3 frequency. `switch-event-summary.md` recommends the senior PO scope a discovery slice on the export step, not the report itself.
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: decision-record
|
|
3
3
|
description: "Use when locking a trade-off, structuring an ADR draft, or wiring supersession chains — frames options · trade-offs · consequences before the file is written by `adr-create`."
|
|
4
|
+
status: active
|
|
5
|
+
tier: senior
|
|
6
|
+
source: package
|
|
7
|
+
domain: process
|
|
8
|
+
context_spine: [team]
|
|
4
9
|
personas:
|
|
5
10
|
- senior-engineer
|
|
6
11
|
- critical-challenger
|
|
7
12
|
- product-owner
|
|
8
|
-
source: package
|
|
9
|
-
domain: process
|
|
10
13
|
---
|
|
11
14
|
|
|
12
15
|
# decision-record
|
|
@@ -37,6 +40,26 @@ Do NOT use when:
|
|
|
37
40
|
- The user wants a feature plan, not a decision — route to the
|
|
38
41
|
planning command instead.
|
|
39
42
|
|
|
43
|
+
## Cognition cluster
|
|
44
|
+
|
|
45
|
+
- **Mental model 4 — Second-order thinking.** Every decision unlocks
|
|
46
|
+
some futures and locks out others; the consequences block names
|
|
47
|
+
what becomes harder, not just what becomes easier. See
|
|
48
|
+
[`docs/contracts/mental-models.md`](../../../docs/contracts/mental-models.md) § 4.
|
|
49
|
+
- **Mental model 6 — Theory of constraints.** A decision that does
|
|
50
|
+
not move the binding constraint is theatre; if the trade-off matrix
|
|
51
|
+
scores every option the same on the constraint that matters, the
|
|
52
|
+
options are fungible — surface and stop. See `mental-models.md` § 6.
|
|
53
|
+
- **Mental model 10 — Reversible vs irreversible.** Two-way doors
|
|
54
|
+
get a one-page record; one-way doors get the full options +
|
|
55
|
+
consequences + supersession chain. The reversibility row of the
|
|
56
|
+
matrix decides which template fires. See `mental-models.md` § 10.
|
|
57
|
+
- **Team context-spine slot.** Read the **team** slot of the
|
|
58
|
+
[context-spine](../../../docs/contracts/context-spine.md) to
|
|
59
|
+
capture who is bound by the decision (review groups, on-call
|
|
60
|
+
rotation). Skip if the consumer project has not filled it; note in
|
|
61
|
+
the record.
|
|
62
|
+
|
|
40
63
|
## Procedure
|
|
41
64
|
|
|
42
65
|
### 1. State the decision in one sentence
|
|
@@ -93,7 +116,39 @@ If this decision overrides a prior ADR:
|
|
|
93
116
|
Output the structured payload (below). The user — or
|
|
94
117
|
`adr-create` — turns it into the file.
|
|
95
118
|
|
|
96
|
-
##
|
|
119
|
+
## Related Skills
|
|
120
|
+
|
|
121
|
+
**WHEN to use this**
|
|
122
|
+
|
|
123
|
+
- The team is about to lock a non-trivial choice and the trade-offs
|
|
124
|
+
need to survive the conversation that produced them.
|
|
125
|
+
- A prior ADR is being overridden and the supersession chain needs
|
|
126
|
+
explicit "what changed in the world" rationale.
|
|
127
|
+
- A planning thread has surfaced ≥ 2 viable options and silence is
|
|
128
|
+
about to pick one by attrition.
|
|
129
|
+
|
|
130
|
+
**WHEN NOT to use this**
|
|
131
|
+
|
|
132
|
+
- The choice splits stakeholders along role lines (PO vs ops, eng vs
|
|
133
|
+
support) — start with [`stakeholder-tradeoff`](../stakeholder-tradeoff/SKILL.md);
|
|
134
|
+
this skill locks the choice **after** the human cost is mapped.
|
|
135
|
+
- The output is the ADR file itself (numbering, index regen) — route
|
|
136
|
+
to [`adr-create`](../adr-create/SKILL.md); this skill produces the
|
|
137
|
+
payload, not the file.
|
|
138
|
+
- The risk shape is the dominant question — route to
|
|
139
|
+
[`risk-officer`](../risk-officer/SKILL.md) first, then return.
|
|
140
|
+
- The decision is reversible and cheap — write a one-line note and
|
|
141
|
+
move on; ADRs are for irreversible or expensive constraints.
|
|
142
|
+
|
|
143
|
+
## When the agent should load this
|
|
144
|
+
|
|
145
|
+
- "Lass uns das festzurren."
|
|
146
|
+
- "Welche Option ziehen wir und warum?"
|
|
147
|
+
- "Wir müssen ein ADR draus machen."
|
|
148
|
+
- "Trade-off-Matrix für X vs Y."
|
|
149
|
+
- "Diese Entscheidung überschreibt das alte ADR-NN."
|
|
150
|
+
|
|
151
|
+
## Output
|
|
97
152
|
|
|
98
153
|
```
|
|
99
154
|
Decision: <one sentence>
|
|
@@ -141,3 +196,23 @@ Next: /adr-create with the payload above
|
|
|
141
196
|
- Do NOT pad option counts to look thorough; two real options beat
|
|
142
197
|
four straw men.
|
|
143
198
|
- Do NOT silently update an old ADR; supersession is explicit.
|
|
199
|
+
|
|
200
|
+
## Runnable example
|
|
201
|
+
|
|
202
|
+
Replacing the in-house cron runner with a managed scheduler:
|
|
203
|
+
|
|
204
|
+
- Decision: *"We need to decide between keeping the in-house cron
|
|
205
|
+
runner and migrating to the managed scheduler because the on-call
|
|
206
|
+
rotation has paged on missed-run incidents three times in 60 days."*
|
|
207
|
+
- Options: (1) keep in-house + add monitoring; (2) migrate to
|
|
208
|
+
managed scheduler; (3) do nothing.
|
|
209
|
+
- Matrix rows that **separate** options: implementation cost,
|
|
210
|
+
operational load, blast radius on outage, reversibility.
|
|
211
|
+
- Locked: *"We pick the managed scheduler."*
|
|
212
|
+
- Consequences: `+` on-call gets paged on scheduler infra, not
|
|
213
|
+
application code. `–` job definitions move to a vendor format,
|
|
214
|
+
raising migration cost if we leave. `✗` we cannot run jobs in the
|
|
215
|
+
app process anymore — assumes vendor uptime.
|
|
216
|
+
- Supersedes: ADR-014 *"in-house cron runner"*; trigger = three
|
|
217
|
+
missed-run pages in 60 days now exceed the SLO budget.
|
|
218
|
+
- Next: `/adr-create` with the payload, append `supersedes: ADR-014`.
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: discovery-interview
|
|
3
|
+
description: "Use when running discovery interviews — question-bank build, bias audit, insight extraction. Triggers on 'audit my guide', 'extract insights from transcript', 'is my hypothesis falsifiable'."
|
|
4
|
+
status: active
|
|
5
|
+
tier: senior
|
|
6
|
+
source: package
|
|
7
|
+
domain: product
|
|
8
|
+
context_spine: [product]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# discovery-interview
|
|
12
|
+
|
|
13
|
+
## When to use
|
|
14
|
+
|
|
15
|
+
- A discovery slice has been framed (`customer-research` ran), but the interview guide is still rough or untested.
|
|
16
|
+
- A transcript exists and the team needs structured insight extraction, not narrative summary.
|
|
17
|
+
- An interview round produced surprising findings; a bias audit is needed before the team acts on them.
|
|
18
|
+
|
|
19
|
+
Do NOT use for the upstream framing of the discovery slice (frame
|
|
20
|
+
sentence, recruit criteria, JTBD focal job) — that is
|
|
21
|
+
[`customer-research`](../customer-research/SKILL.md). Do NOT use for
|
|
22
|
+
quantitative survey design or scale-bound research.
|
|
23
|
+
|
|
24
|
+
## Cognition cluster
|
|
25
|
+
|
|
26
|
+
- **Mental model 22 — Data-informed, not data-driven.** Interview
|
|
27
|
+
data is signal at low N; treat it as evidence to reason with, not
|
|
28
|
+
a vote count. See
|
|
29
|
+
[`docs/contracts/mental-models.md`](../../../docs/contracts/mental-models.md) § 22.
|
|
30
|
+
- **Mental model 15 — Signal vs noise.** A vivid quote from one
|
|
31
|
+
articulate user can swamp three muted but consistent signals;
|
|
32
|
+
frequency-rank by distinct people, never by quote count. See
|
|
33
|
+
`mental-models.md` § 15.
|
|
34
|
+
- **Mental model 28 — Eisenhower matrix.** Sort post-interview
|
|
35
|
+
insights into urgent / important quadrants so the team acts on
|
|
36
|
+
high-importance signals, not the loudest ones. See
|
|
37
|
+
`mental-models.md` § 28.
|
|
38
|
+
- **Product context-spine slot.** Read **product** for the focal job
|
|
39
|
+
+ competitor names; do **not** re-derive these inside this skill.
|
|
40
|
+
See [`context-spine`](../../../docs/contracts/context-spine.md).
|
|
41
|
+
|
|
42
|
+
## Procedure
|
|
43
|
+
|
|
44
|
+
### 1. Build the question bank
|
|
45
|
+
|
|
46
|
+
1. Anchor on the **switch event** from `customer-research`. The
|
|
47
|
+
first question is always *"Walk me through the day you decided
|
|
48
|
+
to ..."* — never *"would you ..."*.
|
|
49
|
+
2. Three layers:
|
|
50
|
+
- **Past behaviour** (what did you do? when? alternative considered?)
|
|
51
|
+
- **Anxiety / habit** (what feared in switching? what habit died?)
|
|
52
|
+
- **Outcome** (what changed for you? expected? unexpected?)
|
|
53
|
+
3. Cap at 8 open questions per 45-min slot. Beyond that, the
|
|
54
|
+
interview becomes a survey delivered in person.
|
|
55
|
+
|
|
56
|
+
### 2. Audit the bank for bias
|
|
57
|
+
|
|
58
|
+
Before running, inspect each question and review the bank against the
|
|
59
|
+
four common biases:
|
|
60
|
+
|
|
61
|
+
- **Leading** — *"Don't you think X is annoying?"* → rewrite as past
|
|
62
|
+
behaviour.
|
|
63
|
+
- **Hypothetical** — *"Would you use Y?"* → replace with *"Last
|
|
64
|
+
time you needed Y, what did you do?"*.
|
|
65
|
+
- **Confirmation** — every question presupposes the team's hypothesis
|
|
66
|
+
is correct. At least two questions must be able to **disconfirm** it.
|
|
67
|
+
- **Recall ceiling** — questions that ask for events ≥ 90 days back
|
|
68
|
+
produce confabulation; bound the timeframe.
|
|
69
|
+
|
|
70
|
+
A bank that survives the audit unchanged is suspect — re-read.
|
|
71
|
+
|
|
72
|
+
### 3. Run-time discipline
|
|
73
|
+
|
|
74
|
+
1. Open with the switch event. Stay silent for 8 seconds after the
|
|
75
|
+
user finishes; the second answer is usually the truer one.
|
|
76
|
+
2. Capture verbatim, not paraphrase. *"It made me anxious"* is data;
|
|
77
|
+
*"the user expressed concern"* is interpretation.
|
|
78
|
+
3. Probe with *"tell me more about X"* on any anxiety / habit
|
|
79
|
+
mention; do not switch topics until the thread is exhausted.
|
|
80
|
+
|
|
81
|
+
### 4. Extract insights
|
|
82
|
+
|
|
83
|
+
For each transcript:
|
|
84
|
+
|
|
85
|
+
1. One quote per insight. Tag: switch / anxiety / habit /
|
|
86
|
+
expected-outcome / unexpected-outcome / disconfirmation.
|
|
87
|
+
2. Frequency-rank by distinct interviewees (≥ 3 = signal; 1 = anecdote).
|
|
88
|
+
3. Mark **disconfirmations** explicitly — these are the most
|
|
89
|
+
valuable rows, because they are the cheapest to ignore.
|
|
90
|
+
|
|
91
|
+
### 5. Hand back
|
|
92
|
+
|
|
93
|
+
Produce the three artifacts (see `## Output`); hand the disconfirmation
|
|
94
|
+
log to whoever owns the original hypothesis.
|
|
95
|
+
|
|
96
|
+
## Related Skills
|
|
97
|
+
|
|
98
|
+
**WHEN to use this**
|
|
99
|
+
|
|
100
|
+
- The discovery slice is framed and the interview guide / transcript
|
|
101
|
+
is the unit of work.
|
|
102
|
+
- A round of interviews ran and the insights need structured extraction
|
|
103
|
+
(frequency-ranked, bias-audited, disconfirmations highlighted).
|
|
104
|
+
|
|
105
|
+
**WHEN NOT to use this**
|
|
106
|
+
|
|
107
|
+
- The slice itself is unframed — start with
|
|
108
|
+
[`customer-research`](../customer-research/SKILL.md); this skill
|
|
109
|
+
inherits its frame, never re-derives it.
|
|
110
|
+
- The signal needs to come from existing artefacts (issues, PRs, errors)
|
|
111
|
+
rather than a live interview — route to [`voc-extract`](../voc-extract/SKILL.md).
|
|
112
|
+
- Insights translate into AC for a ticket — hand off to
|
|
113
|
+
[`refine-ticket`](../refine-ticket/SKILL.md).
|
|
114
|
+
- The output is a quantitative funnel — route to
|
|
115
|
+
[`funnel-analysis`](../funnel-analysis/SKILL.md).
|
|
116
|
+
|
|
117
|
+
## When the agent should load this
|
|
118
|
+
|
|
119
|
+
- "Hilf mir den Interview-Leitfaden auditieren."
|
|
120
|
+
- "Welche Fragen sind biased?"
|
|
121
|
+
- "Extract die Insights aus diesem Transkript."
|
|
122
|
+
- "Wir haben 6 Interviews geführt — was ist Signal, was ist Anekdote?"
|
|
123
|
+
- "Ist meine Hypothese widerlegbar mit dem aktuellen Frageset?"
|
|
124
|
+
|
|
125
|
+
## Output
|
|
126
|
+
|
|
127
|
+
1. **`question-bank.md`** — 8 open questions, each tagged
|
|
128
|
+
past-behaviour / anxiety-habit / outcome; bias-audit notes per
|
|
129
|
+
rewritten question.
|
|
130
|
+
2. **`insight-log.md`** — one row per insight: quote · interviewee
|
|
131
|
+
ID · tag · distinct-people frequency. Sorted descending. Verbatim.
|
|
132
|
+
3. **`disconfirmation-log.md`** — each row names the original
|
|
133
|
+
hypothesis, the interview-derived disconfirmation, and the named
|
|
134
|
+
owner who must respond before the team acts on the round.
|
|
135
|
+
|
|
136
|
+
## Gotcha
|
|
137
|
+
|
|
138
|
+
- A bank that survived the audit unchanged is rare; usually means
|
|
139
|
+
the audit was rushed, not that the bank was perfect.
|
|
140
|
+
- One articulate interviewee biases insight-extraction toward their
|
|
141
|
+
vocabulary — frequency-rank by people, not quotes.
|
|
142
|
+
- Disconfirmations are the cheapest insight to ignore and the most
|
|
143
|
+
valuable to act on; the log exists so they survive the round.
|
|
144
|
+
|
|
145
|
+
## Do NOT
|
|
146
|
+
|
|
147
|
+
- Do NOT re-derive the frame inside this skill — read the **product**
|
|
148
|
+
spine slot or hand back to `customer-research`.
|
|
149
|
+
- Do NOT translate insights into AC inside this skill — that is
|
|
150
|
+
`refine-ticket`.
|
|
151
|
+
- Do NOT collapse disconfirmations into "we also heard X" prose;
|
|
152
|
+
they earn their own log.
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: launch-readiness
|
|
3
|
+
description: "Use before merging a release-shaped PR — pre-merge checklist, rollout plan, rollback criteria, ops handoff. Triggers on 'ready to ship', 'launch checklist', 'rollout plan for X'."
|
|
4
|
+
status: active
|
|
5
|
+
tier: senior
|
|
6
|
+
source: package
|
|
7
|
+
domain: process
|
|
8
|
+
context_spine: [team, product]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# launch-readiness
|
|
12
|
+
|
|
13
|
+
## When to use
|
|
14
|
+
|
|
15
|
+
- A change is about to merge that crosses a release boundary (new feature on `main`, version bump, public-facing comms attached).
|
|
16
|
+
- An ops handoff is implied — the on-call rotation, support team, or downstream consumers need to know.
|
|
17
|
+
- A rollback criterion has not been written down yet.
|
|
18
|
+
|
|
19
|
+
Do NOT use for routine internal merges
|
|
20
|
+
([`finishing-a-development-branch`](../finishing-a-development-branch/SKILL.md))
|
|
21
|
+
or for the comms text itself ([`release-comms`](../release-comms/SKILL.md)).
|
|
22
|
+
This skill produces the **decision** to ship and the rollback contract.
|
|
23
|
+
|
|
24
|
+
## Cognition cluster
|
|
25
|
+
|
|
26
|
+
- **Mental model 10 — Reversible vs irreversible.** Map every step
|
|
27
|
+
of the rollout to a reversibility class; the rollback criteria
|
|
28
|
+
must name the irreversible steps and the abort threshold for each.
|
|
29
|
+
See [`docs/contracts/mental-models.md`](../../../docs/contracts/mental-models.md) § 10.
|
|
30
|
+
- **Mental model 29 — Pre-mortems.** Imagine the rollout failed in
|
|
31
|
+
six hours; what failed first? The pre-mortem becomes the rollback
|
|
32
|
+
criteria, not a separate document. See `mental-models.md` § 29.
|
|
33
|
+
- **Mental model 4 — Second-order thinking.** Enumerate what
|
|
34
|
+
becomes harder *after* the launch (rollback cost, contributor
|
|
35
|
+
ergonomics, doc churn). See `mental-models.md` § 4.
|
|
36
|
+
- **Team + product context-spine slots.** Read **team** for the
|
|
37
|
+
on-call rotation and ops handoff path; read **product** for the
|
|
38
|
+
segment / cohort exposure of the rollout. See
|
|
39
|
+
[`context-spine`](../../../docs/contracts/context-spine.md).
|
|
40
|
+
|
|
41
|
+
## Procedure
|
|
42
|
+
|
|
43
|
+
### 1. Identify the launch shape
|
|
44
|
+
|
|
45
|
+
One sentence: *"This change ships **X** to **segment Y** behind
|
|
46
|
+
**rollout mechanism Z**."* If you cannot, the change is not
|
|
47
|
+
release-shaped; route to `finishing-a-development-branch`.
|
|
48
|
+
|
|
49
|
+
### 2. Inspect the pre-merge checklist
|
|
50
|
+
|
|
51
|
+
Walk the diff with the following gates:
|
|
52
|
+
|
|
53
|
+
- Tests green on the integration suite (cite the run).
|
|
54
|
+
- Quality gates green (PHPStan / linters / type-checks).
|
|
55
|
+
- Migrations are reversible OR the irreversibility is explicit.
|
|
56
|
+
- Feature flag / kill switch named, default off unless intended.
|
|
57
|
+
- Doc / changelog / release notes present (hand off to
|
|
58
|
+
[`release-comms`](../release-comms/SKILL.md) for the prose).
|
|
59
|
+
- Rollback path tested at least mentally; named in step 4.
|
|
60
|
+
|
|
61
|
+
Cells without evidence block the launch — surface, do not
|
|
62
|
+
hand-wave.
|
|
63
|
+
|
|
64
|
+
### 3. Plan the rollout
|
|
65
|
+
|
|
66
|
+
- **Mechanism** — flag, canary cohort, blue-green, immediate.
|
|
67
|
+
- **Order** — internal → trusted segment → general; cite the
|
|
68
|
+
segment per stage from the **product** spine slot.
|
|
69
|
+
- **Telemetry** — the metric that **proves** rollout health.
|
|
70
|
+
- **Owner** — named role per stage (not name); from the **team**
|
|
71
|
+
spine slot.
|
|
72
|
+
|
|
73
|
+
### 4. Write rollback criteria
|
|
74
|
+
|
|
75
|
+
For each stage:
|
|
76
|
+
|
|
77
|
+
- **Trip wire** — the metric value that fires rollback.
|
|
78
|
+
- **Decision window** — how long the trip wire must hold.
|
|
79
|
+
- **Abort path** — what the on-call does (revert PR, flip flag,
|
|
80
|
+
drain queue), pre-rehearsed.
|
|
81
|
+
- **Irreversible steps** — explicit list; if any irreversible step
|
|
82
|
+
is in scope, the launch needs a written sign-off, not implicit.
|
|
83
|
+
|
|
84
|
+
Pre-mortem rule: every trip wire must answer *"what would have
|
|
85
|
+
caused this in six hours?"* If you cannot, the trip wire is wrong.
|
|
86
|
+
|
|
87
|
+
### 5. Ops handoff
|
|
88
|
+
|
|
89
|
+
- Who is paged on which alert (from **team** spine slot).
|
|
90
|
+
- Where the rollback runbook lives (link).
|
|
91
|
+
- Date / time of the handoff conversation; sign-off from the
|
|
92
|
+
receiving role.
|
|
93
|
+
|
|
94
|
+
### 6. Hand back
|
|
95
|
+
|
|
96
|
+
Hand the artefact below to whoever requested the launch decision;
|
|
97
|
+
route comms to [`release-comms`](../release-comms/SKILL.md) and
|
|
98
|
+
post-launch metrics tracking to the team's monitoring stack.
|
|
99
|
+
|
|
100
|
+
## Related Skills
|
|
101
|
+
|
|
102
|
+
**WHEN to use this**
|
|
103
|
+
|
|
104
|
+
- A release-shaped PR is about to merge.
|
|
105
|
+
- Rollback criteria need to land in writing before the merge button
|
|
106
|
+
is pressed.
|
|
107
|
+
- Ops handoff is implied and not yet executed.
|
|
108
|
+
|
|
109
|
+
**WHEN NOT to use this**
|
|
110
|
+
|
|
111
|
+
- The change is internal and routine — route to
|
|
112
|
+
[`finishing-a-development-branch`](../finishing-a-development-branch/SKILL.md).
|
|
113
|
+
- The output is the public comms — route to
|
|
114
|
+
[`release-comms`](../release-comms/SKILL.md).
|
|
115
|
+
- The rollout decision involves stakeholder conflict — route to
|
|
116
|
+
[`stakeholder-tradeoff`](../stakeholder-tradeoff/SKILL.md) first.
|
|
117
|
+
- The decision is reversible-and-cheap — write a one-line note,
|
|
118
|
+
skip the full artefact.
|
|
119
|
+
|
|
120
|
+
## When the agent should load this
|
|
121
|
+
|
|
122
|
+
- "Sind wir launch-ready?"
|
|
123
|
+
- "Bau mir die Rollback-Kriterien für Phase X."
|
|
124
|
+
- "Ops-Handoff für die Release morgen."
|
|
125
|
+
- "Was bricht, wenn wir den Flag flippen?"
|
|
126
|
+
- "Pre-merge-Checklist für PR #N."
|
|
127
|
+
|
|
128
|
+
## Output
|
|
129
|
+
|
|
130
|
+
1. **Launch shape** — one-sentence statement of the change.
|
|
131
|
+
2. **Pre-merge checklist** — gate · status · evidence (citation).
|
|
132
|
+
3. **Rollout plan** — stages × mechanism · order · telemetry · owner.
|
|
133
|
+
4. **Rollback contract** — per stage: trip wire · decision window ·
|
|
134
|
+
abort path · irreversible steps.
|
|
135
|
+
5. **Ops handoff** — pager mapping · runbook link · sign-off.
|
|
136
|
+
6. **Outstanding** — anything blocking the launch; explicit, not
|
|
137
|
+
collapsed.
|
|
138
|
+
|
|
139
|
+
## Gotcha
|
|
140
|
+
|
|
141
|
+
- A checklist with all green and no citations is theatre; every
|
|
142
|
+
green needs an artefact.
|
|
143
|
+
- A trip wire without a decision window is unactionable — *"if
|
|
144
|
+
errors spike"* is not a trigger; *"5xx > 2% for 10 min"* is.
|
|
145
|
+
- Irreversible steps without written sign-off are the most common
|
|
146
|
+
post-mortem ancestor — surface, do not skip.
|
|
147
|
+
|
|
148
|
+
## Do NOT
|
|
149
|
+
|
|
150
|
+
- Do NOT write the comms text here — that is `release-comms`.
|
|
151
|
+
- Do NOT lock the rollback contract verbally — it lives in the
|
|
152
|
+
output block, citable.
|
|
153
|
+
- Do NOT let any stage own itself — every stage names a role from
|
|
154
|
+
the **team** spine slot.
|
|
155
|
+
- Do NOT hand the artefact to a receiver who has not signed off on
|
|
156
|
+
ops handoff.
|