@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,123 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: release-comms
|
|
3
|
+
description: "Use when turning a shipped changelog into a release narrative — value-not-feature framing, audience-segmented surfaces, one source of truth. Triggers on 'announce the release', 'write changelog post'."
|
|
4
|
+
status: active
|
|
5
|
+
tier: senior
|
|
6
|
+
source: package
|
|
7
|
+
domain: product
|
|
8
|
+
context_spine: [product, team]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# release-comms
|
|
12
|
+
|
|
13
|
+
## When to use
|
|
14
|
+
|
|
15
|
+
- Release shipping with user-facing change, team about to send feature-list email.
|
|
16
|
+
- Changelog draft reads like commit log — engineering-honest, unparseable for user.
|
|
17
|
+
- Multiple comms surfaces (in-app, email, social, docs) about to be written by different people from same release.
|
|
18
|
+
|
|
19
|
+
Do NOT use for incident comms (see `incident-commander`),
|
|
20
|
+
deprecation announcements needing legal sign-off, or pre-release
|
|
21
|
+
discovery — this skill assumes change is **shipped**.
|
|
22
|
+
|
|
23
|
+
## Cognition cluster
|
|
24
|
+
|
|
25
|
+
- **Mental model 16 — Leading vs. lagging indicators.** Release note
|
|
26
|
+
is lagging artifact; leading version = in-app prompt that fired
|
|
27
|
+
before user found change-log. See
|
|
28
|
+
[`docs/contracts/mental-models.md`](../../../docs/contracts/mental-models.md) § 16.
|
|
29
|
+
- **Value-not-feature heuristic.** Every paragraph passes *"so the
|
|
30
|
+
user can ___"* completion. Failing rows go back for re-write.
|
|
31
|
+
|
|
32
|
+
## Procedure
|
|
33
|
+
|
|
34
|
+
### Step 0: Ground the release
|
|
35
|
+
|
|
36
|
+
1. Read merged PR list / changelog block / release branch diff. Release = **what**; comms = **so what**. Conflate the two → ship marketing.
|
|
37
|
+
2. Read **product** and **team** slots of [context-spine](../../../docs/contracts/context-spine.md) (if consumer filled them) for bounded scope and cadence — surface choice depends on cadence (weekly: in-app + log; quarterly: email + post; major: all four).
|
|
38
|
+
3. Identify **single dominant change** the release ships. Three "headliners" reads as three half-announcements.
|
|
39
|
+
|
|
40
|
+
### Step 1: Audience-segment
|
|
41
|
+
|
|
42
|
+
1. Three audiences max: **active user**, **at-risk / lapsed user**, **prospect**. More fragments message; fewer hides routing.
|
|
43
|
+
2. Per audience, write one sentence: *"After this release, you can …"* completing with user-side verb, not product-side feature.
|
|
44
|
+
3. If two audiences end up with same sentence, collapse — segmentation that does not change message = theatre.
|
|
45
|
+
|
|
46
|
+
### Step 2: Map surfaces to audiences
|
|
47
|
+
|
|
48
|
+
1. **Changelog** (always) — engineers + power users; truthful, dense, link-heavy. Source of truth — every other surface points back here.
|
|
49
|
+
2. **In-app prompt** — active users; ≤ 1 sentence + 1 CTA; fires for users whose past behaviour predicts they'll touch the new path.
|
|
50
|
+
3. **Email** — at-risk / lapsed; one headline value, one CTA, one paragraph of context. No feature lists.
|
|
51
|
+
4. **Social / blog** — prospect; the **why**, not the **what** — frame against user job (cite [`customer-research`](../customer-research/SKILL.md) if switch-event surfaced).
|
|
52
|
+
|
|
53
|
+
Cut surfaces aggressively. Weekly release does not need blog post.
|
|
54
|
+
|
|
55
|
+
### Step 3: Draft each surface from the changelog
|
|
56
|
+
|
|
57
|
+
1. Open changelog. Per surface, copy dominant change line, then **rewrite verb subject** from "we" to "you".
|
|
58
|
+
2. Strip qualifiers ("now", "even better", "lightning-fast"). Noise, not signal.
|
|
59
|
+
3. Run *"so the user can ___"* completion on every paragraph. Failing paragraphs cut, not edited.
|
|
60
|
+
|
|
61
|
+
### Step 4: Truth-check
|
|
62
|
+
|
|
63
|
+
1. Every claim links back to changelog row or doc URL. Unsourced claim → cut.
|
|
64
|
+
2. No tense games — past for shipped, future for coming-soon (and only if date is committed). "Roadmap" lives outside this skill.
|
|
65
|
+
3. Names match product surface. In-app says "Reports" and email says "Insights" → user fires lookup tax.
|
|
66
|
+
|
|
67
|
+
### Step 5: Hand off
|
|
68
|
+
|
|
69
|
+
1. Produce four artifacts (see `## Output`).
|
|
70
|
+
2. Hand to whoever owns send. Do not embed scheduling or A/B test plans here — that is RevOps.
|
|
71
|
+
|
|
72
|
+
## Related Skills
|
|
73
|
+
|
|
74
|
+
**WHEN to use this**
|
|
75
|
+
|
|
76
|
+
- Change is **shipped** and needs to reach existing users.
|
|
77
|
+
- Multiple comms surfaces written by different people from same source.
|
|
78
|
+
- Team about to default to feature-list email.
|
|
79
|
+
|
|
80
|
+
**WHEN NOT to use this**
|
|
81
|
+
|
|
82
|
+
- Production incident comms → [`incident-commander`](../incident-commander/SKILL.md).
|
|
83
|
+
- Pre-release discovery / validation → [`customer-research`](../customer-research/SKILL.md).
|
|
84
|
+
- Funnel-stage diagnostics post-release → [`funnel-analysis`](../funnel-analysis/SKILL.md).
|
|
85
|
+
- Ranking which release to comms next → [`rice-prioritization`](../rice-prioritization/SKILL.md).
|
|
86
|
+
|
|
87
|
+
## When the agent should load this
|
|
88
|
+
|
|
89
|
+
- "Write the release notes for sprint 47."
|
|
90
|
+
- "We're shipping the new export — how do we announce it?"
|
|
91
|
+
- "Draft the changelog email for last week's batch."
|
|
92
|
+
- "What's the in-app prompt copy for the redesign?"
|
|
93
|
+
- "Turn the merged PR list into something users can read."
|
|
94
|
+
|
|
95
|
+
## Output
|
|
96
|
+
|
|
97
|
+
1. **`release-narrative.md`** — single source of truth: dominant change, audiences (1–3), per-audience *"After this release, you can …"* sentence, links to source changelog rows.
|
|
98
|
+
2. **`changelog-entry.md`** — engineer-honest, dense, link-heavy block ready to paste into project's changelog.
|
|
99
|
+
3. **`comms-pack.md`** — per-surface drafts (in-app prompt, email, optional social/blog), each ≤ surface's hard cap, each pointing back to `changelog-entry.md`.
|
|
100
|
+
4. **`comms-checklist.md`** — pre-send checks: every claim sourced, names consistent across surfaces, audience match, "so the user can …" completion passing on every paragraph. Hand-off artifact for senior PO ([`product-owner`](../../personas/product-owner.md)).
|
|
101
|
+
|
|
102
|
+
## Gotcha
|
|
103
|
+
|
|
104
|
+
- Default failure mode = feature-list email — written to make engineering feel seen, not to help user.
|
|
105
|
+
- Marketing puffery ("revolutionary", "delightful") fails source check; cut on sight.
|
|
106
|
+
- Two surfaces using different names for same thing = highest-frequency support-ticket trigger after release.
|
|
107
|
+
- Hidden coming-soon claims in past-tense paragraphs erode trust faster than missing the comms entirely.
|
|
108
|
+
|
|
109
|
+
## Do NOT
|
|
110
|
+
|
|
111
|
+
- Do NOT promote coming-soon item alongside shipped items — user cannot tell which is which and stops trusting next note.
|
|
112
|
+
- Do NOT let long-tail change steal the headline — dominant change earns headline, long tail goes in changelog.
|
|
113
|
+
- Do NOT ship surfaces without truth-check pass; unsourced claim survives in social longer than release does.
|
|
114
|
+
|
|
115
|
+
## Runnable example
|
|
116
|
+
|
|
117
|
+
Sprint 47 ships a one-click monthly export and three small bug fixes:
|
|
118
|
+
|
|
119
|
+
- Dominant change: one-click export. Bug fixes go in changelog only.
|
|
120
|
+
- Audiences: active user (will use it), at-risk (export friction was churn trigger per [`customer-research`](../customer-research/SKILL.md) evidence-log).
|
|
121
|
+
- "After this release, you can pull a board-ready monthly report in one click." (active, at-risk — same sentence ⇒ collapse to one).
|
|
122
|
+
- Surfaces: changelog (full), in-app prompt to active users on next month-end, email to at-risk cohort with same sentence and one CTA. No social.
|
|
123
|
+
- Truth-check: claim links to export PR; "one click" is literal — verified against shipped UI.
|
|
@@ -162,6 +162,6 @@ to every roadmap you author.
|
|
|
162
162
|
|
|
163
163
|
## Examples
|
|
164
164
|
|
|
165
|
-
Browse `agents/roadmaps/` (active
|
|
165
|
+
Browse `agents/roadmaps/` (active set) and `agents/roadmaps/archive/`
|
|
166
166
|
(closed work) for canonical structural / tactical / structural-with-council
|
|
167
167
|
examples.
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: stakeholder-tradeoff
|
|
3
3
|
description: "Use when stakeholders pull a decision in different directions — frames each lens, builds a trade-off matrix, surfaces the cost of every choice — even if the user just says 'PO and ops disagree'."
|
|
4
|
+
status: active
|
|
5
|
+
tier: senior
|
|
6
|
+
source: package
|
|
7
|
+
domain: product
|
|
8
|
+
context_spine: [team, product]
|
|
4
9
|
personas:
|
|
5
10
|
- product-owner
|
|
6
11
|
- stakeholder
|
|
7
12
|
- critical-challenger
|
|
8
|
-
source: package
|
|
9
|
-
domain: product
|
|
10
13
|
---
|
|
11
14
|
|
|
12
15
|
# stakeholder-tradeoff
|
|
@@ -38,6 +41,26 @@ Do NOT use when:
|
|
|
38
41
|
- The trade-off is risk-only — route to
|
|
39
42
|
[`risk-officer`](../risk-officer/SKILL.md).
|
|
40
43
|
|
|
44
|
+
## Cognition cluster
|
|
45
|
+
|
|
46
|
+
- **Mental model 5 — Opportunity cost.** Every `+` on the matrix is
|
|
47
|
+
also an opportunity cost on the stakeholders not getting that
|
|
48
|
+
benefit; the matrix only earns its keep when it surfaces who pays
|
|
49
|
+
for the chosen `+`. See
|
|
50
|
+
[`docs/contracts/mental-models.md`](../../../docs/contracts/mental-models.md) § 5.
|
|
51
|
+
- **Mental model 27 — Outcome over output.** Picking the option with
|
|
52
|
+
the most checkmarks is output theatre; pick the option whose `–`
|
|
53
|
+
cells land on stakeholders who can execute mitigations. See
|
|
54
|
+
`mental-models.md` § 27.
|
|
55
|
+
- **Mental model 29 — Pre-mortems.** For the recommended option,
|
|
56
|
+
state the failure mode each `–`-bearing stakeholder will name in
|
|
57
|
+
six months. If you cannot, the lens is incomplete — re-interview.
|
|
58
|
+
See `mental-models.md` § 29.
|
|
59
|
+
- **Team + product context-spine slots.** Read **team** for the
|
|
60
|
+
silent-stakeholders inventory (on-call, support, finance) and
|
|
61
|
+
**product** for end-user / segment lenses (free vs paid, region,
|
|
62
|
+
cohort). See [`context-spine`](../../../docs/contracts/context-spine.md).
|
|
63
|
+
|
|
41
64
|
## Procedure
|
|
42
65
|
|
|
43
66
|
### 1. Identify the stakeholders
|
|
@@ -98,7 +121,40 @@ everywhere, the trade-off paragraph names a concrete cost (not just
|
|
|
98
121
|
cells the named owner can execute. Ensure no silent stakeholder
|
|
99
122
|
column is missing.
|
|
100
123
|
|
|
101
|
-
##
|
|
124
|
+
## Related Skills
|
|
125
|
+
|
|
126
|
+
**WHEN to use this**
|
|
127
|
+
|
|
128
|
+
- A request crosses two stakeholder lenses (eng ↔ PO, PO ↔ ops, ops
|
|
129
|
+
↔ infra) and the trade-off is **not yet code**.
|
|
130
|
+
- The room agrees on the goal but disagrees on who absorbs the cost.
|
|
131
|
+
- A roadmap step has *un*declared trade-offs that need surfacing
|
|
132
|
+
before commit.
|
|
133
|
+
|
|
134
|
+
**WHEN NOT to use this**
|
|
135
|
+
|
|
136
|
+
- The conflict surfaces **inside an open PR** (test-coverage fails
|
|
137
|
+
but PO wants to ship) — start with `code-review-multi-lens`
|
|
138
|
+
(sibling C8); a C8 verdict that surfaces stakeholder conflict
|
|
139
|
+
becomes input to this skill for escalation. Boundary prose lives
|
|
140
|
+
in [`docs/guidelines/cross-role-handoff.md`](../../../docs/guidelines/cross-role-handoff.md).
|
|
141
|
+
- The trade-off is purely technical (perf vs storage, sync vs async)
|
|
142
|
+
— route to [`decision-record`](../decision-record/SKILL.md).
|
|
143
|
+
- The dominant axis is risk, not stakeholder cost — route to
|
|
144
|
+
[`risk-officer`](../risk-officer/SKILL.md).
|
|
145
|
+
- The output is the locked decision artifact — hand off to
|
|
146
|
+
[`decision-record`](../decision-record/SKILL.md) once the matrix
|
|
147
|
+
is built.
|
|
148
|
+
|
|
149
|
+
## When the agent should load this
|
|
150
|
+
|
|
151
|
+
- "Wer zahlt was bei dieser Entscheidung?"
|
|
152
|
+
- "PO und Ops sind sich uneinig — wir brauchen Klarheit."
|
|
153
|
+
- "Was ist der Trade-off zwischen X und Y für die einzelnen Lenses?"
|
|
154
|
+
- "Stakeholder-Konflikt vor dem Commit auflösen."
|
|
155
|
+
- "Diese Roadmap-Phase hat undeclared trade-offs."
|
|
156
|
+
|
|
157
|
+
## Output
|
|
102
158
|
|
|
103
159
|
The trade-off report is a single block with these ordered fields:
|
|
104
160
|
|
|
@@ -147,3 +203,35 @@ Next: /decision-record to lock the choice
|
|
|
147
203
|
if it exists, the trade-off was imaginary; surface that.
|
|
148
204
|
- Do NOT lock the choice in this skill; hand off to
|
|
149
205
|
`decision-record`.
|
|
206
|
+
|
|
207
|
+
## Runnable example
|
|
208
|
+
|
|
209
|
+
A pricing-page rewrite that ships faster vs gives ops more lead time:
|
|
210
|
+
|
|
211
|
+
- Decision: *"Should the pricing-page rewrite ship in 2 weeks
|
|
212
|
+
(option A) or 4 weeks with a managed rollout (option B)?"*
|
|
213
|
+
- Stakeholders:
|
|
214
|
+
- **PO** wants: revenue lift on Q-end · fears: churn signal in
|
|
215
|
+
the noise · trades: copy polish for time-to-ship.
|
|
216
|
+
- **On-call eng** wants: change window outside Friday · fears:
|
|
217
|
+
Saturday paging on a marketing rollout · trades: shippable A/B
|
|
218
|
+
framework for a deploy gate.
|
|
219
|
+
- **Support lead** wants: scripted answers for the new tier ·
|
|
220
|
+
fears: ticket-volume spike unprepared · trades: depth of
|
|
221
|
+
answers for breadth.
|
|
222
|
+
- **End-user (free tier)** wants: clear "what stays free" line ·
|
|
223
|
+
fears: silent paywall on a feature they rely on · trades:
|
|
224
|
+
nothing — silent stakeholder.
|
|
225
|
+
- Matrix splits hardest on **operational load** (option A: `–` for
|
|
226
|
+
on-call + support, `+` for PO) and **clarity for end-users**
|
|
227
|
+
(option B: `+` for support + end-user, `–` for PO timing).
|
|
228
|
+
- Trade-off in plain language: *"Option A means PO hits Q-end, but
|
|
229
|
+
on-call carries a marketing-rollout pager and support eats ticket
|
|
230
|
+
spikes blind. Option B means support and end-users land softly,
|
|
231
|
+
but PO slips two weeks past Q-end."*
|
|
232
|
+
- Recommendation: option B. Rationale: the `–` cells in option A
|
|
233
|
+
land on stakeholders who **cannot** mitigate from inside the
|
|
234
|
+
rollout (free-tier user has no voice in the room).
|
|
235
|
+
- Next: `/decision-record` to lock option B; the supersession chain
|
|
236
|
+
cites the original "ship by Q-end" mandate as the constraint that
|
|
237
|
+
changed.
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: voc-extract
|
|
3
|
+
description: "Use when extracting Voice-of-Customer themes from existing artefacts — GH issues, PR threads, Sentry patterns. Triggers on 'what are users saying', 'recurring complaints', 'top themes'."
|
|
4
|
+
status: active
|
|
5
|
+
tier: senior
|
|
6
|
+
source: package
|
|
7
|
+
domain: product
|
|
8
|
+
context_spine: [product]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# voc-extract
|
|
12
|
+
|
|
13
|
+
## When to use
|
|
14
|
+
|
|
15
|
+
- A backlog or planning round needs grounded user-voice signal, not anecdotes.
|
|
16
|
+
- A round of bug reports / feature requests / Sentry events has accumulated and the team needs themes with citation per theme.
|
|
17
|
+
- A roadmap proposal needs a "what users keep telling us" backing section.
|
|
18
|
+
|
|
19
|
+
Do NOT use this skill for live interviews
|
|
20
|
+
([`discovery-interview`](../discovery-interview/SKILL.md)) or for
|
|
21
|
+
quantitative funnel diagnosis ([`funnel-analysis`](../funnel-analysis/SKILL.md)).
|
|
22
|
+
|
|
23
|
+
## Bounded scope
|
|
24
|
+
|
|
25
|
+
- **Read-only on artefacts the host already has** — local repo issues
|
|
26
|
+
(`gh issue list`), PR discussions (`gh pr view`), Sentry projects
|
|
27
|
+
the team owns. No external scrape, no SaaS API calls.
|
|
28
|
+
- **Chat-export sourcing (Discord, Slack) is deferred** pending
|
|
29
|
+
privacy review (council Q5, SHIP-WITHOUT). If a request asks for
|
|
30
|
+
chat-derived VoC, refuse and route the user to a privacy review.
|
|
31
|
+
- **No PII surfacing** — quotes are paraphrased to remove names,
|
|
32
|
+
emails, tenant identifiers; verbatim is reserved for product-team
|
|
33
|
+
artefacts inside the repo.
|
|
34
|
+
|
|
35
|
+
## Cognition cluster
|
|
36
|
+
|
|
37
|
+
- **Mental model 15 — Signal vs noise.** A loud single reporter
|
|
38
|
+
swamps quiet recurring patterns; rank by **distinct authors**, not
|
|
39
|
+
comment count. See
|
|
40
|
+
[`docs/contracts/mental-models.md`](../../../docs/contracts/mental-models.md) § 15.
|
|
41
|
+
- **Mental model 14 — Pareto.** Roughly 20% of themes carry 80% of
|
|
42
|
+
the contact volume; cut the long tail explicitly so the team acts
|
|
43
|
+
on the head. See `mental-models.md` § 14.
|
|
44
|
+
- **Mental model 22 — Data-informed, not data-driven.** Issue counts
|
|
45
|
+
are evidence, not voting; weight by recency, severity, and segment
|
|
46
|
+
before recommending. See `mental-models.md` § 22.
|
|
47
|
+
- **Product context-spine slot.** Read **product** for segments,
|
|
48
|
+
non-goals, and focal jobs; do not surface themes that fall outside
|
|
49
|
+
the declared scope without a scope-violation flag. See
|
|
50
|
+
[`context-spine`](../../../docs/contracts/context-spine.md).
|
|
51
|
+
|
|
52
|
+
## Procedure
|
|
53
|
+
|
|
54
|
+
### 1. Inventory the source artefacts
|
|
55
|
+
|
|
56
|
+
Identify what is in scope **for this run**:
|
|
57
|
+
|
|
58
|
+
- `gh issue list --state all --limit N` per repo.
|
|
59
|
+
- `gh pr list --state all --limit N` per repo.
|
|
60
|
+
- Sentry project names + date window.
|
|
61
|
+
|
|
62
|
+
Capture counts and date window in the output header so the verdict
|
|
63
|
+
is reproducible.
|
|
64
|
+
|
|
65
|
+
### 2. Inspect each artefact and tag
|
|
66
|
+
|
|
67
|
+
Per artefact, capture:
|
|
68
|
+
|
|
69
|
+
- **Theme tag** (free-text, normalised in step 3).
|
|
70
|
+
- **Author** (distinct identity).
|
|
71
|
+
- **Severity** — blocking / friction / wish / praise.
|
|
72
|
+
- **Segment** — derived from the **product** spine slot.
|
|
73
|
+
- **Citation** — `repo#123`, PR URL, Sentry issue ID.
|
|
74
|
+
|
|
75
|
+
### 3. Normalise and rank
|
|
76
|
+
|
|
77
|
+
Cluster theme tags into 5–12 themes max. For each:
|
|
78
|
+
|
|
79
|
+
- **Distinct-author count** (the rank key).
|
|
80
|
+
- **Severity mix** (blocking-share matters more than wish-share).
|
|
81
|
+
- **Recency** — last 90 days vs older; weight 2× recent.
|
|
82
|
+
- **Segment skew** — does the theme cluster in one segment?
|
|
83
|
+
|
|
84
|
+
Drop themes with `< 3` distinct authors **unless** severity is
|
|
85
|
+
blocking or the theme is brand-new in the recency window.
|
|
86
|
+
|
|
87
|
+
### 4. Build the theme report and validate
|
|
88
|
+
|
|
89
|
+
One row per theme. Columns: **theme · distinct authors · severity
|
|
90
|
+
mix · recency · segment skew · representative citations (≤ 3) ·
|
|
91
|
+
proposed next step (refine / probe / defer)**.
|
|
92
|
+
|
|
93
|
+
Validate the report before handing back: verify each row cites
|
|
94
|
+
≥ 1 artefact, check that distinct-author counts match the source
|
|
95
|
+
inventory from step 1, confirm no PII leaked into the citations,
|
|
96
|
+
and ensure no theme rated `defer` lacks a written rationale.
|
|
97
|
+
|
|
98
|
+
### 5. Surface scope violations
|
|
99
|
+
|
|
100
|
+
Themes that fall outside the **product** spine slot's declared scope
|
|
101
|
+
go into a `scope-violation.md` block, never silently into the main
|
|
102
|
+
report. The team decides whether to expand scope or close the door.
|
|
103
|
+
|
|
104
|
+
### 6. Hand back
|
|
105
|
+
|
|
106
|
+
Route refine candidates to [`refine-ticket`](../refine-ticket/SKILL.md);
|
|
107
|
+
route probe candidates (need live interview) to
|
|
108
|
+
[`discovery-interview`](../discovery-interview/SKILL.md); defer the
|
|
109
|
+
rest with explicit rationale.
|
|
110
|
+
|
|
111
|
+
## Related Skills
|
|
112
|
+
|
|
113
|
+
**WHEN to use this**
|
|
114
|
+
|
|
115
|
+
- The signal needs to come from existing repo / Sentry artefacts.
|
|
116
|
+
- The output is a theme list with citation, not narrative summary.
|
|
117
|
+
- A roadmap proposal needs grounded VoC backing.
|
|
118
|
+
|
|
119
|
+
**WHEN NOT to use this**
|
|
120
|
+
|
|
121
|
+
- The signal needs a live conversation — route to
|
|
122
|
+
[`discovery-interview`](../discovery-interview/SKILL.md).
|
|
123
|
+
- The artefacts are chat-export sourced (Discord, Slack) — refuse
|
|
124
|
+
and route to a privacy review (deferred per bounded scope).
|
|
125
|
+
- The output is a quantitative funnel — route to
|
|
126
|
+
[`funnel-analysis`](../funnel-analysis/SKILL.md).
|
|
127
|
+
- A theme is already a ticket candidate — route directly to
|
|
128
|
+
[`refine-ticket`](../refine-ticket/SKILL.md).
|
|
129
|
+
|
|
130
|
+
## When the agent should load this
|
|
131
|
+
|
|
132
|
+
- "Was sagen die User wirklich?"
|
|
133
|
+
- "Top-Themen aus den letzten 90 Tagen Issues."
|
|
134
|
+
- "Welche Sentry-Patterns sind recurring?"
|
|
135
|
+
- "Backe der Roadmap-Phase ein VoC-Block dazu."
|
|
136
|
+
- "Gibt es ein Segment, das uns überproportional pingt?"
|
|
137
|
+
|
|
138
|
+
## Output
|
|
139
|
+
|
|
140
|
+
1. **Header** — sources scanned, counts, date window, scope notes.
|
|
141
|
+
2. **Theme report table** — themes, distinct authors, severity mix,
|
|
142
|
+
recency, segment skew, citations, next step.
|
|
143
|
+
3. **Scope-violation block** — themes outside the product spine
|
|
144
|
+
slot, explicit, never collapsed into the main table.
|
|
145
|
+
4. **Routing list** — refine / probe / defer rows with the named
|
|
146
|
+
downstream skill per theme.
|
|
147
|
+
|
|
148
|
+
## Gotcha
|
|
149
|
+
|
|
150
|
+
- One articulate user can own three themes; rank by distinct authors
|
|
151
|
+
or you ship their backlog.
|
|
152
|
+
- A theme with no recency (all > 90 days) is archaeology, not VoC;
|
|
153
|
+
flag it explicitly.
|
|
154
|
+
- Chat-export requests are tempting (Discord copy-paste); refuse
|
|
155
|
+
per bounded scope until the privacy review lands.
|
|
156
|
+
|
|
157
|
+
## Do NOT
|
|
158
|
+
|
|
159
|
+
- Do NOT scrape external sources or hit SaaS APIs the team does not
|
|
160
|
+
already own.
|
|
161
|
+
- Do NOT surface PII; paraphrase before quoting.
|
|
162
|
+
- Do NOT collapse scope-violations into the main table.
|
|
163
|
+
- Do NOT lock decisions inside this skill — hand off to
|
|
164
|
+
`refine-ticket` or `decision-record`.
|
|
@@ -43,6 +43,15 @@ Templates for roadmap files stored in `agents/roadmaps/` or `app/Modules/{Module
|
|
|
43
43
|
or budget-invariant changes; multi-round council, file-ownership
|
|
44
44
|
matrices, > 600 lines. Enforced by `task lint-roadmap-complexity`.
|
|
45
45
|
Standard: [`docs/contracts/roadmap-complexity-standard.md`](../docs/contracts/roadmap-complexity-standard.md).
|
|
46
|
+
16. **No time-boxed plates, no visible-horizon sections.** Roadmaps describe
|
|
47
|
+
scope and phase ordering, not week-by-week commitments. No
|
|
48
|
+
`## Horizon (N-week visible plate)` sections, "Inside / outside the
|
|
49
|
+
plate" framings, `In-plate?` columns, or `**Out-of-plate.**` /
|
|
50
|
+
`**Out-of-horizon.**` / `(out-of-horizon, gated on Phase N)` suffixes.
|
|
51
|
+
AI execution does not operate on calendar plates; scope ordering and
|
|
52
|
+
dependency gates suffice. Pacing is the user's call, decided per turn
|
|
53
|
+
— never encoded into the plan. Enforced by `task lint-roadmap-complexity`
|
|
54
|
+
(plate-token detection).
|
|
46
55
|
|
|
47
56
|
---
|
|
48
57
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
},
|
|
7
7
|
"metadata": {
|
|
8
8
|
"description": "Shared agent configuration \u2014 skills for AI coding tools (Claude Code, Augment, Cursor, Cline, Windsurf, Gemini CLI).",
|
|
9
|
-
"version": "1.
|
|
9
|
+
"version": "1.35.0"
|
|
10
10
|
},
|
|
11
11
|
"plugins": [
|
|
12
12
|
{
|
|
@@ -59,6 +59,7 @@
|
|
|
59
59
|
"./.claude/skills/commit",
|
|
60
60
|
"./.claude/skills/commit-in-chunks",
|
|
61
61
|
"./.claude/skills/composer-packages",
|
|
62
|
+
"./.claude/skills/competitive-positioning",
|
|
62
63
|
"./.claude/skills/compress",
|
|
63
64
|
"./.claude/skills/context",
|
|
64
65
|
"./.claude/skills/context-authoring",
|
|
@@ -76,6 +77,7 @@
|
|
|
76
77
|
"./.claude/skills/council-pr",
|
|
77
78
|
"./.claude/skills/create-pr",
|
|
78
79
|
"./.claude/skills/create-pr-description-only",
|
|
80
|
+
"./.claude/skills/customer-research",
|
|
79
81
|
"./.claude/skills/dashboard-design",
|
|
80
82
|
"./.claude/skills/data-flow-mapper",
|
|
81
83
|
"./.claude/skills/database",
|
|
@@ -88,6 +90,7 @@
|
|
|
88
90
|
"./.claude/skills/design-review",
|
|
89
91
|
"./.claude/skills/devcontainer",
|
|
90
92
|
"./.claude/skills/developer-like-execution",
|
|
93
|
+
"./.claude/skills/discovery-interview",
|
|
91
94
|
"./.claude/skills/docker",
|
|
92
95
|
"./.claude/skills/dto-creator",
|
|
93
96
|
"./.claude/skills/e2e-heal",
|
|
@@ -145,6 +148,7 @@
|
|
|
145
148
|
"./.claude/skills/laravel-reverb",
|
|
146
149
|
"./.claude/skills/laravel-scheduling",
|
|
147
150
|
"./.claude/skills/laravel-validation",
|
|
151
|
+
"./.claude/skills/launch-readiness",
|
|
148
152
|
"./.claude/skills/learning-to-rule-or-skill",
|
|
149
153
|
"./.claude/skills/lint-skills",
|
|
150
154
|
"./.claude/skills/livewire",
|
|
@@ -219,6 +223,7 @@
|
|
|
219
223
|
"./.claude/skills/receiving-code-review",
|
|
220
224
|
"./.claude/skills/refine-prompt",
|
|
221
225
|
"./.claude/skills/refine-ticket",
|
|
226
|
+
"./.claude/skills/release-comms",
|
|
222
227
|
"./.claude/skills/repomix-packer",
|
|
223
228
|
"./.claude/skills/requesting-code-review",
|
|
224
229
|
"./.claude/skills/research",
|
|
@@ -279,6 +284,7 @@
|
|
|
279
284
|
"./.claude/skills/using-git-worktrees",
|
|
280
285
|
"./.claude/skills/validate-feature-fit",
|
|
281
286
|
"./.claude/skills/verify-completion-evidence",
|
|
287
|
+
"./.claude/skills/voc-extract",
|
|
282
288
|
"./.claude/skills/websocket",
|
|
283
289
|
"./.claude/skills/work"
|
|
284
290
|
]
|
package/CHANGELOG.md
CHANGED
|
@@ -318,6 +318,40 @@ our recommendation order, not its support status.
|
|
|
318
318
|
users" tension without removing any path that an existing user
|
|
319
319
|
might rely on.
|
|
320
320
|
|
|
321
|
+
## [1.35.0](https://github.com/event4u-app/agent-config/compare/1.34.0...1.35.0) (2026-05-10)
|
|
322
|
+
|
|
323
|
+
### Features
|
|
324
|
+
|
|
325
|
+
* **personas:** add three Wave-2 specialist personas ([fafe78c](https://github.com/event4u-app/agent-config/commit/fafe78cd1d6ec4aa7edb9e6ebbe8bc61f661818d))
|
|
326
|
+
* **skills:** add four senior product/strategy skills ([35e399d](https://github.com/event4u-app/agent-config/commit/35e399d4a805217d4e01a70b8795583eb11b046e))
|
|
327
|
+
* **skills:** promote decision-record and stakeholder-tradeoff to tier:senior ([dec2369](https://github.com/event4u-app/agent-config/commit/dec2369ec8e273b29d701ba72c9283b47d545732))
|
|
328
|
+
* **lint:** enforce context_spine slot citation in skill bodies ([2283472](https://github.com/event4u-app/agent-config/commit/22834723003ce515f6067ec228f273e13bf71cb2))
|
|
329
|
+
* **lint:** detect plate/horizon convention in lint-roadmap-complexity ([8dcd6c1](https://github.com/event4u-app/agent-config/commit/8dcd6c1c4d9f772df2495e114a1b1a03c64022dc))
|
|
330
|
+
* **personas:** upgrade product-owner to senior specialist ([e46fdad](https://github.com/event4u-app/agent-config/commit/e46fdadfd9645de6f07ee7516d265760f739ba73))
|
|
331
|
+
* **skills:** add senior customer-research and release-comms ([fb17b8f](https://github.com/event4u-app/agent-config/commit/fb17b8f1641cd26ceeb405537711bacd1059317d))
|
|
332
|
+
* **contracts:** add context-spine, mental-models, and cross-role-handoff ([a8bd106](https://github.com/event4u-app/agent-config/commit/a8bd106e77a092da385461aec508a8959179559d))
|
|
333
|
+
|
|
334
|
+
### Bug Fixes
|
|
335
|
+
|
|
336
|
+
* **skills:** cite team spine slot in customer-research ([9279606](https://github.com/event4u-app/agent-config/commit/9279606fedc60377306c80a14c6379577233ce3d))
|
|
337
|
+
* **skill:** drop unused 'team' slot from customer-research context_spine ([e581c66](https://github.com/event4u-app/agent-config/commit/e581c664237f23c9804bce95fd0e8436d33d8bec))
|
|
338
|
+
* **context-spine:** drop transient roadmap references ([a2e17c7](https://github.com/event4u-app/agent-config/commit/a2e17c7ef287b89a92aa296f8eb519ced78e3dcd))
|
|
339
|
+
|
|
340
|
+
### Chores
|
|
341
|
+
|
|
342
|
+
* **sync:** refresh compression hashes after main merge ([2689a99](https://github.com/event4u-app/agent-config/commit/2689a9959c0d8f5bb0b00a8b4cbc73485b81086d))
|
|
343
|
+
* **generate-tools:** register new skills + personas in distribution layers ([1c8081d](https://github.com/event4u-app/agent-config/commit/1c8081d54b14214ac5163986784af1f4e505aa7d))
|
|
344
|
+
* **roadmap:** archive road-to-unified-senior-roles, refresh dashboard ([0f7a203](https://github.com/event4u-app/agent-config/commit/0f7a203c9f3a6cb97837db52906fa7bd6ff9134a))
|
|
345
|
+
* **sync:** refresh compression hash for customer-research ([5296bd1](https://github.com/event4u-app/agent-config/commit/5296bd13976e105ff128a90de05de78183745f67))
|
|
346
|
+
* **sync:** refresh compression hashes after roadmap-plate removal ([75d06e1](https://github.com/event4u-app/agent-config/commit/75d06e1ec33d9472fd8ae4a08f5efd526b577905))
|
|
347
|
+
* **roadmaps:** strip plate/horizon framing from 7 active roadmaps ([186f98e](https://github.com/event4u-app/agent-config/commit/186f98e8fa3405927e5543c41f4ce797b46eaedf))
|
|
348
|
+
* **infra:** drop horizon-marker handling from process-loop and process-full ([9f9b968](https://github.com/event4u-app/agent-config/commit/9f9b9681f9b9d21305a69e3c413dc4b8ff7d5a9a))
|
|
349
|
+
* **template:** forbid time-boxed plates in roadmap template (rule 16) ([12748c2](https://github.com/event4u-app/agent-config/commit/12748c2e3354e324b2d4b889ecda5655f3286738))
|
|
350
|
+
* **ownership:** regenerate ownership matrix ([33d3775](https://github.com/event4u-app/agent-config/commit/33d37755e4af051df73cfae6b6c6ccc4981202e1))
|
|
351
|
+
* **sync:** regenerate counts, hashes, and roadmap progress ([e4397f8](https://github.com/event4u-app/agent-config/commit/e4397f83bf5c5b10c47f926a4eb605d8e6074063))
|
|
352
|
+
|
|
353
|
+
Tests: 2606 (+0 since 1.34.0)
|
|
354
|
+
|
|
321
355
|
## [1.34.0](https://github.com/event4u-app/agent-config/compare/1.33.0...1.34.0) (2026-05-10)
|
|
322
356
|
|
|
323
357
|
### Features
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@ Give your AI agents an audit-disciplined orchestration contract — testing, Git
|
|
|
7
7
|
> Your agent picks up the project's stack, runs tests, prepares PRs, fixes CI — and follows your team's coding standards while doing it. Stack-aware skill sets ship for PHP (Laravel · Symfony · Zend/Laminas), JavaScript (Next.js · React · Node), and cross-stack concerns (API · testing · security · observability).
|
|
8
8
|
|
|
9
9
|
<p align="center">
|
|
10
|
-
<strong>
|
|
10
|
+
<strong>173 Skills</strong> · <strong>60 Rules</strong> · <strong>103 Commands</strong> · <strong>69 Guidelines</strong> · <strong>8 AI Tools</strong>
|
|
11
11
|
</p>
|
|
12
12
|
|
|
13
13
|
---
|
|
@@ -368,7 +368,7 @@ Every developer gets the same behavior. No per-user setup needed.
|
|
|
368
368
|
native slash-commands)
|
|
369
369
|
|
|
370
370
|
> **What this means in practice:** Augment Code and Claude Code get the full
|
|
371
|
-
> package (rules +
|
|
371
|
+
> package (rules + 173 skills + 103 native commands). Cursor, Cline, Windsurf,
|
|
372
372
|
> Gemini CLI, and GitHub Copilot only get the **rules** natively; skills and
|
|
373
373
|
> commands are available to them as documentation the agent can read, not as
|
|
374
374
|
> first-class features.
|
package/docs/architecture.md
CHANGED
|
@@ -96,10 +96,10 @@ fails on any source-side violation, without producing artifacts.
|
|
|
96
96
|
|
|
97
97
|
| Layer | Count | Purpose |
|
|
98
98
|
|---|---|---|
|
|
99
|
-
| **Skills** |
|
|
99
|
+
| **Skills** | 173 | On-demand expertise — stack analysis (Laravel · Symfony · Zend / Laminas · Next.js · React · Node), testing, Docker, API design, security, observability, … |
|
|
100
100
|
| **Rules** | 60 | Always-active constraints — coding standards, scope control, verification, language-and-tone, agent-authority |
|
|
101
101
|
| **Commands** | 103 | Slash-command workflows — `/commit`, `/create-pr`, `/fix ci`, `/optimize skills`, `/feature plan`, `/work`, `/implement-ticket`, `/compress`, … |
|
|
102
|
-
| **Guidelines** |
|
|
102
|
+
| **Guidelines** | 69 | Reference material cited by skills — PHP patterns, Eloquent, Playwright, agent-infra, … |
|
|
103
103
|
| **Templates** | 7 | Scaffolds for features, roadmaps, contexts, skills, overrides |
|
|
104
104
|
| **Contexts** | 5 | Shared knowledge about the system itself |
|
|
105
105
|
|
package/docs/catalog.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# agent-config — Public Catalog
|
|
2
2
|
|
|
3
|
-
Consumer-facing catalog of all **
|
|
3
|
+
Consumer-facing catalog of all **398 public artefacts** shipped by
|
|
4
4
|
this package. Internal package-maintenance rules and deprecation shims
|
|
5
5
|
are excluded.
|
|
6
6
|
|
|
7
7
|
> **Regenerate:** `python3 scripts/generate_index.py`
|
|
8
8
|
> Auto-generated — do not edit manually.
|
|
9
9
|
|
|
10
|
-
## Skills (
|
|
10
|
+
## Skills (169)
|
|
11
11
|
|
|
12
12
|
| kind | name | extra | description |
|
|
13
13
|
|---|---|---|---|
|
|
@@ -41,6 +41,7 @@ are excluded.
|
|
|
41
41
|
| skill | [`conventional-commits-writing`](../.agent-src/skills/conventional-commits-writing/SKILL.md) | | Use when writing commit messages or squash-merge titles — `feat:`, `fix:`, `chore:`, scopes, breaking changes — even when the user just says 'commit this' without naming Conventional Commits. |
|
|
42
42
|
| skill | [`copilot-agents-optimization`](../.agent-src/skills/copilot-agents-optimization/SKILL.md) | | Use when optimizing AGENTS.md or copilot-instructions.md — deduplicates against .augment/ content, enforces line budgets, and focuses each file on its audience. |
|
|
43
43
|
| skill | [`copilot-config`](../.agent-src/skills/copilot-config/SKILL.md) | | Use when configuring GitHub Copilot — copilot-instructions.md, PR review patterns, output optimization — even when the user just says 'tune Copilot' or 'why is Copilot commenting on X'. |
|
|
44
|
+
| skill | [`customer-research`](../.agent-src/skills/customer-research/SKILL.md) | | 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'. |
|
|
44
45
|
| skill | [`dashboard-design`](../.agent-src/skills/dashboard-design/SKILL.md) | | Use when designing monitoring dashboards — visualization selection, layout principles, observability strategies (RED/USE/Golden Signals), and data storytelling. |
|
|
45
46
|
| skill | [`data-flow-mapper`](../.agent-src/skills/data-flow-mapper/SKILL.md) | | Use BEFORE editing code that touches user data — traces the value from entry → validation → transformation → storage → egress, every hop cited with file:line. |
|
|
46
47
|
| skill | [`database`](../.agent-src/skills/database/SKILL.md) | | Use when working with database architecture, MariaDB/MySQL tuning, indexing strategies, slow queries, or multi-connection patterns — even when the user just says 'this query is slow'. |
|
|
@@ -136,6 +137,7 @@ are excluded.
|
|
|
136
137
|
| skill | [`receiving-code-review`](../.agent-src/skills/receiving-code-review/SKILL.md) | | Use when processing code review feedback (bot or human) before changing anything — triages, verifies, and pushes back with technical reasoning — even when the user just says 'fix the comments'. |
|
|
137
138
|
| skill | [`refine-prompt`](../.agent-src/skills/refine-prompt/SKILL.md) | | Reconstruct a free-form prompt into actionable AC + assumptions + confidence band before the engine plans — '/work \"…\"', 'baue X', 'ist der Prompt klar genug für die Engine?'. |
|
|
138
139
|
| skill | [`refine-ticket`](../.agent-src/skills/refine-ticket/SKILL.md) | | Refine a Jira/Linear ticket before planning — 'refine ticket', 'tighten AC on PROJ-123', 'ist das Ticket klar?' — rewritten ticket, Top-5 risks, persona voices, sub-skills orchestrated, close-prompt. |
|
|
140
|
+
| skill | [`release-comms`](../.agent-src/skills/release-comms/SKILL.md) | | Use when turning a shipped changelog into a release narrative — value-not-feature framing, audience-segmented surfaces, one source of truth. Triggers on 'announce the release', 'write changelog post'. |
|
|
139
141
|
| skill | [`repomix-packer`](../.agent-src/skills/repomix-packer/SKILL.md) | | Use when packaging a codebase to a single AI-friendly file for LLM analysis — local or remote, XML/Markdown/JSON, token counting, gitignore filtering, peer-side `repomix` CLI. |
|
|
140
142
|
| skill | [`requesting-code-review`](../.agent-src/skills/requesting-code-review/SKILL.md) | | Use when asking for a review or creating a PR — self-review first, frame the right context, test plan included — even when the user just says 'open a PR' or 'ready to merge'. |
|
|
141
143
|
| skill | [`review-routing`](../.agent-src/skills/review-routing/SKILL.md) | | Use when preparing a PR description, suggesting reviewers, or flagging risk — produces owner-mapped roles plus historical bug-pattern matches from project-local YAML. |
|
|
@@ -349,7 +351,7 @@ are excluded.
|
|
|
349
351
|
| command | [`upstream-contribute`](../.agent-src/commands/upstream-contribute.md) | | Contribute a learning, skill, rule, or fix from a consumer project back to the shared agent-config package |
|
|
350
352
|
| command | [`work`](../.agent-src/commands/work.md) | | Drive a free-form prompt end-to-end through refine → score → plan → implement → test → verify → report — Option-A loop over the `work_engine` Python engine, confidence-band gated, no auto-git. |
|
|
351
353
|
|
|
352
|
-
## Guidelines (
|
|
354
|
+
## Guidelines (69)
|
|
353
355
|
|
|
354
356
|
| kind | name | category | description |
|
|
355
357
|
|---|---|---|---|
|
|
@@ -389,6 +391,7 @@ are excluded.
|
|
|
389
391
|
| guideline | [`verify-before-complete-demos`](../docs/guidelines/agent-infra/verify-before-complete-demos.md) | agent-infra | |
|
|
390
392
|
| guideline | [`augment-portability-patterns`](../docs/guidelines/augment-portability-patterns.md) | (root) | |
|
|
391
393
|
| guideline | [`code-clarity`](../docs/guidelines/code-clarity.md) | (root) | |
|
|
394
|
+
| guideline | [`cross-role-handoff`](../docs/guidelines/cross-role-handoff.md) | (root) | |
|
|
392
395
|
| guideline | [`readme-size-and-splitting`](../docs/guidelines/docs/readme-size-and-splitting.md) | docs | |
|
|
393
396
|
| guideline | [`playwright`](../docs/guidelines/e2e/playwright.md) | e2e | |
|
|
394
397
|
| guideline | [`api-design`](../docs/guidelines/php/api-design.md) | php | |
|