@event4u/agent-config 2.7.0 → 2.8.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.
Files changed (39) hide show
  1. package/.agent-src/personas/cmo.md +122 -0
  2. package/.agent-src/personas/customer-success-lead.md +126 -0
  3. package/.agent-src/personas/growth-pm.md +134 -0
  4. package/.agent-src/personas/revops.md +125 -0
  5. package/.agent-src/skills/activation-design/SKILL.md +160 -0
  6. package/.agent-src/skills/churn-prevention/SKILL.md +156 -0
  7. package/.agent-src/skills/content-funnel-design/SKILL.md +170 -0
  8. package/.agent-src/skills/deal-qualification-meddic/SKILL.md +165 -0
  9. package/.agent-src/skills/editorial-calendar/SKILL.md +161 -0
  10. package/.agent-src/skills/expansion-playbook/SKILL.md +171 -0
  11. package/.agent-src/skills/forecast-accuracy/SKILL.md +157 -0
  12. package/.agent-src/skills/fundraising-narrative/SKILL.md +189 -0
  13. package/.agent-src/skills/funnel-analysis/SKILL.md +26 -2
  14. package/.agent-src/skills/gtm-launch/SKILL.md +165 -0
  15. package/.agent-src/skills/messaging-architecture/SKILL.md +184 -0
  16. package/.agent-src/skills/onboarding-design/SKILL.md +158 -0
  17. package/.agent-src/skills/pipeline-strategy/SKILL.md +159 -0
  18. package/.agent-src/skills/positioning-strategy/SKILL.md +177 -0
  19. package/.agent-src/skills/retention-loops/SKILL.md +161 -0
  20. package/.agent-src/skills/subagent-orchestration/SKILL.md +1 -1
  21. package/.agent-src/skills/voice-and-tone-design/SKILL.md +163 -0
  22. package/.agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  23. package/.claude-plugin/marketplace.json +17 -2
  24. package/CHANGELOG.md +45 -169
  25. package/README.md +2 -2
  26. package/docs/architecture.md +2 -2
  27. package/docs/archive/CHANGELOG-pre-2.7.0.md +185 -0
  28. package/docs/catalog.md +19 -3
  29. package/docs/contracts/adr-gtm-context-spine.md +115 -0
  30. package/docs/contracts/command-surface-tiers.md +5 -0
  31. package/docs/contracts/context-spine.md +50 -12
  32. package/docs/contracts/cross-wing-handoff.md +3 -3
  33. package/docs/contracts/persona-schema.md +20 -3
  34. package/docs/guidelines/gtm-handoff.md +114 -0
  35. package/package.json +1 -1
  36. package/scripts/lint_context_spine_usage.py +4 -1
  37. package/scripts/schemas/persona.schema.json +5 -0
  38. package/scripts/schemas/skill.schema.json +2 -2
  39. package/scripts/skill_linter.py +177 -3
package/docs/catalog.md CHANGED
@@ -1,17 +1,18 @@
1
1
  # agent-config — Public Catalog
2
2
 
3
- Consumer-facing catalog of all **408 public artefacts** shipped by
3
+ Consumer-facing catalog of all **424 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 (174)
10
+ ## Skills (189)
11
11
 
12
12
  | kind | name | extra | description |
13
13
  |---|---|---|---|
14
14
  | skill | [`accessibility-auditor`](../.agent-src/skills/accessibility-auditor/SKILL.md) | | Use when reviewing UI for accessibility — WCAG 2.2 AA, keyboard nav, focus, ARIA, contrast, screen-reader semantics — even on 'is this a11y-OK?' or 'mach das barrierefrei'. |
15
+ | skill | [`activation-design`](../.agent-src/skills/activation-design/SKILL.md) | | Use when defining or auditing the activation event — aha-moment selection, retention correlation, falsifiable definition. Triggers on 'what is our aha moment', 'redefine activation'. |
15
16
  | skill | [`adr-create`](../.agent-src/skills/adr-create/SKILL.md) | | Use when capturing an architectural decision — naming the file, picking the next ADR number, filling Status / Context / Decision / Consequences, and regenerating the index — even without saying 'ADR'. |
16
17
  | skill | [`adversarial-review`](../.agent-src/skills/adversarial-review/SKILL.md) | | ONLY when user explicitly requests adversarial review, devil's advocate analysis, stress-testing a plan, or 'poke holes in this' — NOT for regular code review or design feedback. |
17
18
  | skill | [`agent-docs-writing`](../.agent-src/skills/agent-docs-writing/SKILL.md) | | Use when reading, creating, or updating agent documentation, module docs, roadmaps, or AGENTS.md. Understands the full .augment/, agents/, and copilot-instructions structure. |
@@ -31,12 +32,14 @@ are excluded.
31
32
  | skill | [`blast-radius-analyzer`](../.agent-src/skills/blast-radius-analyzer/SKILL.md) | | Use BEFORE editing shared code — enumerates every call site, event consumer, queue worker, API client, migration, and test that a planned change will touch, with a file:line citation per dependency. |
32
33
  | skill | [`bug-analyzer`](../.agent-src/skills/bug-analyzer/SKILL.md) | | Use when the user shares a Sentry error, Jira bug ticket, or error description and wants root cause analysis. Also for proactive bug hunting and code audits for hidden bugs. |
33
34
  | skill | [`check-refs`](../.agent-src/skills/check-refs/SKILL.md) | | Use when verifying cross-references between skills, rules, commands, guidelines, and context documents are not broken after edits, renames, or deletions. |
35
+ | skill | [`churn-prevention`](../.agent-src/skills/churn-prevention/SKILL.md) | | Use when designing churn defence — health-score signals, churn-cause split (involuntary / value / relationship / fit), early-warning loop. Triggers on 'why are accounts leaving'. |
34
36
  | skill | [`code-refactoring`](../.agent-src/skills/code-refactoring/SKILL.md) | | Use when the user says "refactor this", "rename class", or "move method". Safely refactors PHP code — finds all callers, updates downstream dependencies, and verifies with quality tools. |
35
37
  | skill | [`code-review`](../.agent-src/skills/code-review/SKILL.md) | | Use when the user says "review this", "check my code", or wants feedback on changes. Reviews for correctness, quality, security, and coding standards. |
36
38
  | skill | [`command-routing`](../.agent-src/skills/command-routing/SKILL.md) | | Use when the user invokes a slash command like /create-pr, /commit, /fix-ci, or pastes command file content — routes to the right command with context inference and GitHub API patterns. |
37
39
  | skill | [`command-writing`](../.agent-src/skills/command-writing/SKILL.md) | | Use when creating or editing a slash command in .agent-src.uncompressed/commands/ — frontmatter, numbered steps, safety gates — even when the user just says 'add a /command for X'. |
38
40
  | skill | [`competitive-positioning`](../.agent-src/skills/competitive-positioning/SKILL.md) | | Use when comparing this package to a peer / competitor — ours-vs-theirs verdict table, axis selection, adoption queue. Triggers on 'how do we compare to X', 'should we adopt their pattern'. |
39
41
  | skill | [`composer-packages`](../.agent-src/skills/composer-packages/SKILL.md) | | Use when building or maintaining a Composer library — versioning, Laravel integration, autoloading, publishing to private registries — even when the user says 'release a new version'. |
42
+ | skill | [`content-funnel-design`](../.agent-src/skills/content-funnel-design/SKILL.md) | | Use when mapping funnel-stage to content shape — conversion-pathway, content-as-system, leverage-point selection. Triggers on 'design our content funnel', 'why does mid-funnel leak'. |
40
43
  | skill | [`context-authoring`](../.agent-src/skills/context-authoring/SKILL.md) | | Use when filling in knowledge-layer context files — auth-model, tenant-boundaries, data-sensitivity, deployment-order, observability — interactive walkthrough that turns templates into reviewer fuel. |
41
44
  | skill | [`context-document`](../.agent-src/skills/context-document/SKILL.md) | | Use when the user says "create context", "document this area", or wants a structured snapshot of a codebase area for agent orientation. |
42
45
  | 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. |
@@ -47,6 +50,7 @@ are excluded.
47
50
  | 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. |
48
51
  | 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'. |
49
52
  | skill | [`dcf-modeling`](../.agent-src/skills/dcf-modeling/SKILL.md) | | Wing-4 valuation cognition for a CFO / finance-partner. Use when a deal, internal investment, or board ask names DCF, intrinsic value, WACC, terminal value, or 'what's it worth on a 5-year hold'. |
53
+ | skill | [`deal-qualification-meddic`](../.agent-src/skills/deal-qualification-meddic/SKILL.md) | | Use when qualifying or disqualifying a single deal — MEDDIC slots with evidence, inversion test, disqualification heuristic. Triggers on 'is this deal real', 'should we walk away'. |
50
54
  | skill | [`decision-record`](../.agent-src/skills/decision-record/SKILL.md) | | 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`. |
51
55
  | skill | [`deep-reading-analyst`](../.agent-src/skills/deep-reading-analyst/SKILL.md) | | Deep analysis of articles/long-form via thinking frameworks (SCQA, mental models, inversion) — 'analyze article', 'deep dive', 'extract insights', URL/text wanting depth not summary. |
52
56
  | skill | [`defense-in-depth`](../.agent-src/skills/defense-in-depth/SKILL.md) | | Use when validation needs entry, business-logic, environment, and instrumentation guards so a bad value cannot reach the failure point — turns a local bug fix into a structural one. |
@@ -58,20 +62,25 @@ are excluded.
58
62
  | skill | [`discovery-interview`](../.agent-src/skills/discovery-interview/SKILL.md) | | 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'. |
59
63
  | skill | [`docker`](../.agent-src/skills/docker/SKILL.md) | | Use when working with Docker — Dockerfile edits, docker-compose services, containers, or the dual-container (fast + Xdebug) setup — even when the user just says 'my container won't start'. |
60
64
  | skill | [`dto-creator`](../.agent-src/skills/dto-creator/SKILL.md) | | Use when the user says "create a DTO", "new data transfer object", or needs to convert request/response data into a typed PHP class. Creates DTOs with SimpleDto base class and attribute mapping. |
65
+ | skill | [`editorial-calendar`](../.agent-src/skills/editorial-calendar/SKILL.md) | | Use when shaping cadence — evergreen / campaign / reactive split, beat-mapping across channel stages, content-debt management. Triggers on 'plan our content cadence', 'what should we publish'. |
61
66
  | skill | [`eloquent`](../.agent-src/skills/eloquent/SKILL.md) | | Use when writing Eloquent models, relationships, scopes, or queries via Model:: — 'fetch users with their orders'. NOT for PHPStan output, non-Eloquent services, or raw SQL questions. |
62
67
  | skill | [`error-handling-patterns`](../.agent-src/skills/error-handling-patterns/SKILL.md) | | Use when picking a failure-reporting strategy — exceptions vs Result types, recoverable vs not, retry / circuit-breaker / graceful degradation — decision framework only, catalogues externalized. |
63
68
  | skill | [`estimate-ticket`](../.agent-src/skills/estimate-ticket/SKILL.md) | | Estimate a Jira/Linear ticket — 'estimate PROJ-123', 'wie groß ist das?', 'should we split this?' — size + risk + split + uncertainty, sibling of /refine-ticket, close-prompt. |
64
69
  | skill | [`existing-ui-audit`](../.agent-src/skills/existing-ui-audit/SKILL.md) | | Use BEFORE writing or editing any non-trivial UI — inventories components, design tokens, shadcn primitives, and reusable patterns into state.ui_audit. Hard gate for the ui directive set. |
70
+ | skill | [`expansion-playbook`](../.agent-src/skills/expansion-playbook/SKILL.md) | | Use when designing account-expansion mechanics — upsell vs cross-sell, expansion-trigger signals, NRR cognition. Triggers on 'lift NRR', 'when do we upsell vs cross-sell'. |
65
71
  | skill | [`fe-design`](../.agent-src/skills/fe-design/SKILL.md) | | Reference for frontend-design heuristics — component architecture, layout patterns, form/table design, responsive strategy, a11y, UX principles. Stack-agnostic; cited by directives/ui/design.py. |
66
72
  | skill | [`feature-planning`](../.agent-src/skills/feature-planning/SKILL.md) | | Use when the user says "plan a feature", "brainstorm", "explore this idea", or wants to go from idea to structured plan and roadmap. |
67
73
  | skill | [`file-editor`](../.agent-src/skills/file-editor/SKILL.md) | | Use when opening edited files in the user's IDE. Reads settings from .agent-settings.yml to determine IDE and whether auto-open is enabled. |
68
74
  | skill | [`finishing-a-development-branch`](../.agent-src/skills/finishing-a-development-branch/SKILL.md) | | Use when the feature is implementation-complete and the next step is 'ship it' — verifies, cleans up, and routes to merge/PR/park/discard — even when the user just says 'I'm done, what now?'. |
69
75
  | skill | [`flux`](../.agent-src/skills/flux/SKILL.md) | | Use when the project uses `livewire/flux` — dispatched by `directives/ui/{apply,review,polish}.py`. Covers Flux components, slots, variants, and form primitives. |
76
+ | skill | [`forecast-accuracy`](../.agent-src/skills/forecast-accuracy/SKILL.md) | | Use when constructing the forecast call — commit / best-case / pipeline categorisation, deal-level evidence test, accuracy retro-loop. Triggers on 'build the forecast', 'why does our commit miss'. |
70
77
  | skill | [`form-handler`](../.agent-src/skills/form-handler/SKILL.md) | | Use when designing or reviewing a form — validation timing, error display, submission lifecycle, optimistic UI, dirty/pristine state, idempotency — even on 'why does submit double-fire?'. |
78
+ | skill | [`fundraising-narrative`](../.agent-src/skills/fundraising-narrative/SKILL.md) | | Use when shaping a capital-raise pitch — why-now / why-us / why-this framing, market-size reasoning, traction-story construction. Triggers on 'tighten the pitch', 'why-now is weak'. |
71
79
  | skill | [`funnel-analysis`](../.agent-src/skills/funnel-analysis/SKILL.md) | | Use when diagnosing where a SaaS or product funnel leaks — visitor → signup → activation → paid → retained — channel-agnostic, conversion-rate-driven. |
72
80
  | skill | [`git-workflow`](../.agent-src/skills/git-workflow/SKILL.md) | | Use when working with Git — branch naming, commit messages, PR creation, rebasing, or the code review process — even when the user says 'push this' or 'merge the branch' without naming Git. |
73
81
  | skill | [`github-ci`](../.agent-src/skills/github-ci/SKILL.md) | | Use when working with GitHub Actions — workflow YAML, quality gates, test matrices, deployment triggers, reusable workflows — even when the user just says 'my CI is failing' or 'add a check'. |
74
82
  | skill | [`grafana`](../.agent-src/skills/grafana/SKILL.md) | | Use when working with Grafana — dashboards, Loki LogQL queries, alerting rules, monitoring panels — even when the user just says 'build me a dashboard' or 'query the logs' without naming Grafana. |
83
+ | skill | [`gtm-launch`](../.agent-src/skills/gtm-launch/SKILL.md) | | Use when sequencing a launch — alpha / beta / GA waves, audience-by-wave logic, narrative beats per wave, engineering-readiness gates. Triggers on 'plan the launch', 'sequence GA'. |
75
84
  | skill | [`guideline-writing`](../.agent-src/skills/guideline-writing/SKILL.md) | | Use when creating or editing a guideline in docs/guidelines/ — reference material cited by skills, no auto-triggers — even when the user just says 'write up our naming conventions'. |
76
85
  | skill | [`incident-commander`](../.agent-src/skills/incident-commander/SKILL.md) | | Use during or right after an incident — frames severity, sets comms cadence, drafts the post-mortem skeleton — even when the user just says 'production is down' or 'wir haben einen Vorfall'. |
77
86
  | skill | [`jira-integration`](../.agent-src/skills/jira-integration/SKILL.md) | | Use when the user says "check Jira", "create ticket", "update issue", or needs JQL queries, ticket transitions, or branch-to-ticket linking. |
@@ -102,12 +111,14 @@ are excluded.
102
111
  | skill | [`md-language-check`](../.agent-src/skills/md-language-check/SKILL.md) | | Use BEFORE saving any .md under .augment/, .agent-src*/, or agents/ — scans umlauts, German function words, and quoted German phrases outside DE:/EN: anchor blocks. Hard gate per language-and-tone. |
103
112
  | skill | [`memory-consolidation`](../.agent-src/skills/memory-consolidation/SKILL.md) | | Use when consolidating session signals into curated memory — four-phase loop ORIENT → GATHER → CONSOLIDATE → PRUNE. Triggers on 'mine my sessions', 'consolidate memory', 'review intake signals'. |
104
113
  | skill | [`merge-conflicts`](../.agent-src/skills/merge-conflicts/SKILL.md) | | Use when the user has merge conflicts or says "resolve conflicts". Understands conflict markers, resolution strategies, and verification workflow. |
114
+ | skill | [`messaging-architecture`](../.agent-src/skills/messaging-architecture/SKILL.md) | | Use when shaping the primary message, supporting proofs, and audience-by-message matrix from a locked positioning frame — before any copy or launch beat. Triggers on 'tighten the message stack'. |
105
115
  | skill | [`migration-architect`](../.agent-src/skills/migration-architect/SKILL.md) | | Use when shaping a non-trivial migration — rollout phases, dual-write windows, cutover sequencing, deprecation cycles — hands off to `migration-creator` for DDL once locked. |
106
116
  | skill | [`migration-creator`](../.agent-src/skills/migration-creator/SKILL.md) | | Use when the user says "create migration", "add column", or "new table". Creates migrations with correct table prefixes, column naming, and multi-tenant awareness. |
107
117
  | skill | [`mobile-e2e-strategy`](../.agent-src/skills/mobile-e2e-strategy/SKILL.md) | | Use when picking a mobile E2E framework — Detox / Appium / Maestro / XCUITest / Espresso — or planning iOS Simulator / Android Emulator coverage in CI for RN, Expo, or native apps. |
108
118
  | skill | [`module-management`](../.agent-src/skills/module-management/SKILL.md) | | Use when the user says "create module", "explore module", or works within app/Modules/. Understands module structure, auto-loading, route registration, and namespace conventions. |
109
119
  | skill | [`multi-tenancy`](../.agent-src/skills/multi-tenancy/SKILL.md) | | Use when working with the multi-tenant architecture — customer DB switching, FQDN routing, tenant isolation, or cross-tenant operations. |
110
120
  | skill | [`okr-tree-modeling`](../.agent-src/skills/okr-tree-modeling/SKILL.md) | | Use when decomposing a company objective into team OKRs, auditing a draft OKR tree, or stress-testing an existing one for measurability and laddering. |
121
+ | skill | [`onboarding-design`](../.agent-src/skills/onboarding-design/SKILL.md) | | Use when designing customer onboarding — time-to-first-value, milestone design, friction audit, drop-off diagnosis. Triggers on 'fix onboarding', 'why do new accounts churn fast'. |
111
122
  | skill | [`openapi`](../.agent-src/skills/openapi/SKILL.md) | | Use when documenting APIs — OpenAPI/Swagger, PHP attributes, Redocly validation, versioned specs — even when the user just says 'document this endpoint' without naming OpenAPI. |
112
123
  | skill | [`override-management`](../.agent-src/skills/override-management/SKILL.md) | | Creates and manages project-level overrides for shared skills, rules, and commands — extending or replacing originals from .augment/ with project-specific behavior in agents/overrides/. |
113
124
  | skill | [`performance`](../.agent-src/skills/performance/SKILL.md) | | Use when optimizing application performance — caching strategies, eager loading, query optimization, Redis patterns, or background job design. |
@@ -117,9 +128,11 @@ are excluded.
117
128
  | skill | [`php-coder`](../.agent-src/skills/php-coder/SKILL.md) | | Writes or edits PHP code — controllers, classes, type hints, SOLID refactors, modern idioms — even without naming PHP. NOT for writing tests (use pest-testing) or explaining PHP concepts. |
118
129
  | skill | [`php-debugging`](../.agent-src/skills/php-debugging/SKILL.md) | | Use when debugging PHP with Xdebug — breakpoints, step-through, dual-container setup, IDE configuration, header-based routing — even when the user just says 'why does this blow up on request X'. |
119
130
  | skill | [`php-service`](../.agent-src/skills/php-service/SKILL.md) | | Use when the user says 'create service', 'new service class', or needs a PHP service following SOLID principles with proper DI and repository usage. |
131
+ | skill | [`pipeline-strategy`](../.agent-src/skills/pipeline-strategy/SKILL.md) | | Use when designing or auditing a sales pipeline — stage exit criteria, per-cell conversion, coverage reasoning, leak detection. Triggers on 'tighten our pipeline', 'where is the leak'. |
120
132
  | skill | [`playwright-architect`](../.agent-src/skills/playwright-architect/SKILL.md) | | Use when shaping a Playwright suite — locator strategy, Page Object boundaries, fixture composition, flake-prevention architecture, CI-vs-local split — even on 'design our E2E tests'. |
121
133
  | skill | [`playwright-testing`](../.agent-src/skills/playwright-testing/SKILL.md) | | Use when writing Playwright E2E tests — browser automation, visual regression testing, Page Objects, fixtures, and reliable test patterns. |
122
134
  | skill | [`po-discovery`](../.agent-src/skills/po-discovery/SKILL.md) | | Use when shaping a fuzzy product ask into a refined backlog item — problem framing, user-story rewrite, AC tightening — even if the user just says 'help me write this ticket'. |
135
+ | skill | [`positioning-strategy`](../.agent-src/skills/positioning-strategy/SKILL.md) | | Use when locking the market frame — category, segment, alternative, point-of-view — before messaging, launch, or pricing rides on it. Triggers on 'who are we for', 'opposable audit'. |
123
136
  | skill | [`project-analysis-core`](../.agent-src/skills/project-analysis-core/SKILL.md) | | Use for the universal deep-analysis workflow: project discovery, version resolution, docs loading, architecture mapping, execution flow, and package research. |
124
137
  | skill | [`project-analysis-hypothesis-driven`](../.agent-src/skills/project-analysis-hypothesis-driven/SKILL.md) | | Use when a bug has multiple plausible causes across layers — competing hypotheses, validation loops, evidence-based conclusions — even when the user just says 'why is this happening?'. |
125
138
  | skill | [`project-analysis-laravel`](../.agent-src/skills/project-analysis-laravel/SKILL.md) | | Use for deep Laravel project analysis: boot flow, request lifecycle, container usage, Eloquent/data flow, async systems, and Laravel-specific failure patterns. |
@@ -144,6 +157,7 @@ are excluded.
144
157
  | 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'. |
145
158
  | 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. |
146
159
  | 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'. |
160
+ | skill | [`retention-loops`](../.agent-src/skills/retention-loops/SKILL.md) | | Use when designing product-led retention — habit formation, trigger-action-reward, network vs single-user loops. Triggers on 'why don't users come back', 'design a habit loop'. |
147
161
  | 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. |
148
162
  | skill | [`rice-prioritization`](../.agent-src/skills/rice-prioritization/SKILL.md) | | Use when ranking competing initiatives for a roadmap, breaking a tie between two features, or auditing a backlog for hidden low-value work via Reach × Impact × Confidence ÷ Effort. |
149
163
  | skill | [`risk-officer`](../.agent-src/skills/risk-officer/SKILL.md) | | Use when surfacing and prioritising risk before commit — blast-radius framing, mitigations, residual-risk verdict — even if the user just says 'what could go wrong here?'. |
@@ -184,6 +198,7 @@ are excluded.
184
198
  | skill | [`validate-feature-fit`](../.agent-src/skills/validate-feature-fit/SKILL.md) | | Validate whether a feature request fits the existing codebase — check for duplicates, contradictions, scope creep, and architectural misfit |
185
199
  | skill | [`verify-completion-evidence`](../.agent-src/skills/verify-completion-evidence/SKILL.md) | | Use when claiming 'done', suggesting a commit, push, or PR — runs the evidence gate so completion claims come from fresh output in this message, not memory or earlier runs. |
186
200
  | skill | [`voc-extract`](../.agent-src/skills/voc-extract/SKILL.md) | | 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'. |
201
+ | skill | [`voice-and-tone-design`](../.agent-src/skills/voice-and-tone-design/SKILL.md) | | Use when shaping brand voice — voice attributes, tone-by-context matrix, consistency review. Triggers on 'define our voice', 'why does our copy sound different on every surface'. |
187
202
  | skill | [`websocket`](../.agent-src/skills/websocket/SKILL.md) | | Use when building real-time features — WebSocket broadcasting, live updates, presence channels, connection state — even when the user just says 'push this to the client live'. |
188
203
 
189
204
  ## Rules (58)
@@ -360,7 +375,7 @@ are excluded.
360
375
  | 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 |
361
376
  | 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. |
362
377
 
363
- ## Guidelines (70)
378
+ ## Guidelines (71)
364
379
 
365
380
  | kind | name | category | description |
366
381
  |---|---|---|---|
@@ -404,6 +419,7 @@ are excluded.
404
419
  | guideline | [`cross-role-handoff`](../docs/guidelines/cross-role-handoff.md) | (root) | |
405
420
  | guideline | [`readme-size-and-splitting`](../docs/guidelines/docs/readme-size-and-splitting.md) | docs | |
406
421
  | guideline | [`playwright`](../docs/guidelines/e2e/playwright.md) | e2e | |
422
+ | guideline | [`gtm-handoff`](../docs/guidelines/gtm-handoff.md) | (root) | |
407
423
  | guideline | [`api-design`](../docs/guidelines/php/api-design.md) | php | |
408
424
  | guideline | [`artisan-commands`](../docs/guidelines/php/artisan-commands.md) | php | |
409
425
  | guideline | [`blade-ui`](../docs/guidelines/php/blade-ui.md) | php | |
@@ -0,0 +1,115 @@
1
+ ---
2
+ stability: beta
3
+ ---
4
+
5
+ # ADR — GTM context-spine: Wing-3 slot extension
6
+
7
+ > **Status:** Decided · 2026-05-13
8
+ > **Roadmap origin:** `agents/roadmaps/` (Block G — G1, archived after merge)
9
+ > **Builds on:** [`context-spine.md`](context-spine.md) — tri-slot
10
+ > contract (`product`, `team`, `repo`) locked at 3 by council Q1
11
+ > (2026-05-05 KEEP-3, unified-senior-roles iter 1).
12
+ > **Defers to:** [`cross-wing-handoff.md`](cross-wing-handoff.md) — typed
13
+ > handoff contract; orthogonal to slot membership.
14
+
15
+ ## Decision
16
+
17
+ The context-spine adds **three Wing-3-specific slots** under
18
+ `agents/context-spine/`: `channel-stage`, `funnel-stage`,
19
+ `customer-segment`. The schema enum in
20
+ [`scripts/schemas/skill.schema.json`](../../scripts/schemas/skill.schema.json)
21
+ extends from `{product, team, repo}` to
22
+ `{product, team, repo, channel-stage, funnel-stage, customer-segment}`.
23
+
24
+ The KEEP-3 lock from council Q1 applies to **cross-wing slots** —
25
+ slabs every senior wing might read. The Wing-3 slots are
26
+ **wing-scoped**: they exist for the GTM cluster (Block H, 16 skills)
27
+ and the GTM personas (Block I, 7 personas). Engineering, Foundation,
28
+ and Money / Strategy / Ops wings do not opt into them.
29
+
30
+ | Slot | Path | Typical content |
31
+ |---|---|---|
32
+ | `channel-stage` | `agents/context-spine/channel-stage.md` | Which channels the GTM motion uses (awareness · consideration · decision · retention · expansion), per-channel maturity, channel-cost band. Read by H1 (`positioning-strategy`), H2 (`messaging-architecture`), H3 (`gtm-launch`), H6 (`editorial-calendar`). |
33
+ | `funnel-stage` | `agents/context-spine/funnel-stage.md` | Funnel topology (top / mid / bottom / activation / retention), per-stage definition, exit-criteria for each. Read by H8 (`pipeline-strategy`), R1 (`funnel-analysis`), R2 (`activation-design`), R3 (`onboarding-design`). |
34
+ | `customer-segment` | `agents/context-spine/customer-segment.md` | ICP, persona-by-segment, ARR-band-by-segment. Read by H7 (`ICP`), H8 (`pipeline-strategy`), H9 (`MEDDIC`), R4 (`retention-loops`). |
35
+
36
+ ## Why this was a real question
37
+
38
+ Three options were on the table:
39
+
40
+ 1. **Force-fit into existing slots.** Stuff GTM context into the
41
+ `product` slab. Rejected: `product` is owned by the discovery wing
42
+ and a Wing-3 reader gets fuzzy semantics (channel maturity is not
43
+ product scope), Council Q1 explicitly fences `product` against
44
+ sprawl.
45
+ 2. **Wing-3-only frontmatter key.** Add `gtm_spine: [...]` as a
46
+ parallel field. Rejected: duplicates the read-discipline
47
+ mechanism, the lint gate, and the skill-author cognitive load.
48
+ Two spines is the slot-sprawl failure mode at a different layer.
49
+ 3. **Extend the spine, scope the slots.** Accepted: same mechanism,
50
+ same lint gate, same opt-in discipline; slot names carry the wing
51
+ scope (`channel-stage`, `funnel-stage`, `customer-segment` are
52
+ visibly GTM-shaped).
53
+
54
+ ## Citation-evidence gating — prospective
55
+
56
+ The existing § 5 policy requires ≥ 2 shipped skills citing the new
57
+ slot **before** the slot is added. For Wing-3 the citation chain is
58
+ **prospective**: the roadmap (G1 → H → I) ships citing skills in the
59
+ same iteration, ordered so G1 lands first to unblock H authoring.
60
+
61
+ The ADR is the gating artefact (not the citations). The Block-H
62
+ authoring procedure MUST cite ≥ 1 of the three new slots per skill
63
+ or carry a one-line ADR-opt-out comment in the skill body. The G2
64
+ linter (council Q7 boundary tests) enforces channel-agnosticism,
65
+ which is orthogonal — a skill can cite `channel-stage` for context
66
+ without prescribing channel-specific tactics.
67
+
68
+ This relaxation is **wing-bounded**: future wings adding their own
69
+ slots must either accumulate ≥ 2 citations from already-shipped
70
+ skills, **or** write a per-wing ADR that names the citing-skill
71
+ chain in the same iteration (the pattern this ADR establishes).
72
+
73
+ ## Migration plan for the existing senior catalog
74
+
75
+ - **No retrofitting required.** Existing senior skills
76
+ (`customer-research`, `funnel-analysis`, `po-discovery`,
77
+ `refine-ticket`, `rice-prioritization`, etc.) keep their current
78
+ `context_spine` declarations. They MAY add a Wing-3 slot if their
79
+ cognition genuinely reads it; they MUST NOT be retrofitted
80
+ mechanically.
81
+ - **Opt-out for off-wing skills.** Engineering / Foundation / Ops
82
+ senior skills do not need to mention the Wing-3 slots in any way.
83
+ The schema accepts subsets — declaring only `[product, team]`
84
+ remains valid.
85
+ - **Slot-file authoring is consumer-side.** The package ships the
86
+ contract; consumer projects fill `agents/context-spine/channel-stage.md`
87
+ etc. when adopting Wing-3 skills. Missing slot file is graceful
88
+ per § 4 of the contract.
89
+
90
+ ## Counter-evidence the agent should listen for
91
+
92
+ Three signals that this decision is wrong and the ADR needs revisiting:
93
+
94
+ 1. **Off-wing skills start declaring Wing-3 slots.** If an
95
+ Engineering skill cites `channel-stage`, the slot is misnamed or
96
+ the wing boundary is leaking. Re-scope the slot or rename it.
97
+ 2. **Wing-3 skills consistently ignore the slot they declared.** If
98
+ Block H skills declare `funnel-stage` but never quote it in their
99
+ procedure, the slot is decorative and should be deleted.
100
+ 3. **A fourth Wing-3 slot is proposed within the same iteration.**
101
+ That is slot-sprawl on the same wing — Block G2 boundary tests
102
+ should reject the addition until a follow-up ADR documents why
103
+ three slots are insufficient.
104
+
105
+ ## See also
106
+
107
+ - [`context-spine.md`](context-spine.md) § 2 (slot table — extended),
108
+ § 5 (slot-add policy — wing-bounded extension clause).
109
+ - [`scripts/schemas/skill.schema.json`](../../scripts/schemas/skill.schema.json)
110
+ — `context_spine.items.enum` extended in this ADR.
111
+ - `agents/roadmaps/` § Block G — the authorising roadmap (archived
112
+ after merge; this ADR is the durable record).
113
+ - [`.agent-src.uncompressed/rules/skill-quality.md`](../../.agent-src.uncompressed/rules/skill-quality.md)
114
+ § Senior-Tier Required Structure — the four blocks every senior
115
+ skill ships independently of spine opt-in.
@@ -1,3 +1,8 @@
1
+ ---
2
+ stability: beta
3
+ ---
4
+
5
+
1
6
  # Command Surface Tiers
2
7
 
3
8
  > **Status:** Active. Defines the tiering contract for the two
@@ -32,8 +32,11 @@ Three failure modes the spine prevents:
32
32
 
33
33
  ## § 2 — Slot definitions
34
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).
35
+ The spine has **three cross-wing slots** plus **per-wing extension
36
+ slots** authorized via ADR. Council Q1 verdict (2026-05-05, KEEP-3)
37
+ locks the cross-wing slot count at 3. Per-wing extensions follow § 5.
38
+
39
+ ### Cross-wing slots (locked at 3)
37
40
 
38
41
  | Slot | Path under `agents/context-spine/` | Owner | Typical content |
39
42
  |---|---|---|---|
@@ -41,6 +44,14 @@ KEEP-3): slot count is locked; extensions require an ADR (§ 5).
41
44
  | `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
45
  | `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
46
 
47
+ ### Wing-3 slots (GTM and Growth — added 2026-05-13 per [`adr-gtm-context-spine.md`](adr-gtm-context-spine.md))
48
+
49
+ | Slot | Path under `agents/context-spine/` | Owner | Typical content |
50
+ |---|---|---|---|
51
+ | `channel-stage` | `channel-stage.md` | GTM / Marketing wing | Which channels the GTM motion uses (awareness · consideration · decision · retention · expansion), per-channel maturity, channel-cost band. Read by `positioning-strategy`, `messaging-architecture`, `gtm-launch`, `editorial-calendar`. |
52
+ | `funnel-stage` | `funnel-stage.md` | Growth / RevOps wing | Funnel topology (top / mid / bottom / activation / retention), per-stage definition, exit-criteria for each. Read by `pipeline-strategy`, `funnel-analysis`, `activation-design`, `onboarding-design`. |
53
+ | `customer-segment` | `customer-segment.md` | Sales / CS wing | ICP, persona-by-segment, ARR-band-by-segment. Read by `ICP`, `pipeline-strategy`, `MEDDIC`, `retention-loops`. |
54
+
44
55
  Slots are markdown files. Each is **≤ 200 lines**; longer means the
45
56
  slot is doing two jobs and the author should split or trim. Empty /
46
57
  missing slot is allowed — the citing skill MUST handle absence
@@ -64,9 +75,10 @@ Rules:
64
75
 
65
76
  - The key is **optional**. Senior skills MAY ship without it; the
66
77
  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`.
78
+ - Values are restricted to the slot names in § 2: cross-wing
79
+ (`product`, `team`, `repo`) plus wing-scoped extensions
80
+ (`channel-stage`, `funnel-stage`, `customer-segment`). Unknown
81
+ values fail `task lint-skills` with `unknown_context_spine_slot`.
70
82
  - Reads MUST be opt-in and explicit. A skill body that says *"reads
71
83
  `agents/context-spine/product.md` if present"* without declaring
72
84
  the slot in frontmatter is **incorrect** — it bypasses the lint
@@ -91,8 +103,13 @@ file does not break the skill).
91
103
 
92
104
  ## § 5 — Slot-add policy
93
105
 
94
- Adding a fourth slot is **structurally allowed but procedurally
95
- expensive**. Two preconditions:
106
+ Two tracks: **cross-wing** (locked at 3, citations-first) and
107
+ **wing-scoped** (per-wing ADR, citations prospective).
108
+
109
+ ### Cross-wing track — citations-first
110
+
111
+ Adding a fourth **cross-wing** slot (one every wing might read) is
112
+ **structurally allowed but procedurally expensive**. Two preconditions:
96
113
 
97
114
  1. **Citation evidence.** ≥ 2 shipped senior skills declare the new
98
115
  slot in their frontmatter and cite it in the body, with PRs
@@ -103,21 +120,42 @@ expensive**. Two preconditions:
103
120
  the migration plan for the existing senior catalog (do they
104
121
  declare the new slot, do they ignore it, do they get retrofitted).
105
122
 
123
+ ### Wing-scoped track — per-wing ADR, prospective citations
124
+
125
+ A wing may add **its own slots** for cognition specific to that wing
126
+ (e.g. Wing-3 `channel-stage`, `funnel-stage`, `customer-segment`).
127
+ Preconditions:
128
+
129
+ 1. **Per-wing ADR.** One ADR under `docs/contracts/` named
130
+ `adr-<wing>-context-spine.md` names the slots, the cognition gap,
131
+ the citing-skill chain in the same iteration, and the off-wing
132
+ migration plan (off-wing skills do **not** retrofit).
133
+ 2. **Prospective citations.** The ADR-naming iteration must ship
134
+ ≥ 2 skills citing each new slot before the iteration closes.
135
+ Drafts and roadmap items inside the same iteration **do** count
136
+ for prospective gating; cross-iteration citations do not.
137
+
138
+ Existing wing-3 reference: [`adr-gtm-context-spine.md`](adr-gtm-context-spine.md).
139
+
140
+ ### Schema and changelog rules — both tracks
141
+
106
142
  The ADR ships with the schema bump (`scripts/schemas/skill.schema.json`
107
143
  extends the `context_spine` enum) and a CHANGELOG entry under
108
144
  `### Breaking` if the new enum value tightens an existing skill's
109
145
  declaration.
110
146
 
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.
147
+ This policy mitigates the slot-sprawl failure mode: "cross-wing
148
+ locked at 3 + wing-scoped via per-wing ADR" is the brake. ADRs are
149
+ the single growth lever; no consumer-side override exists.
114
150
 
115
151
  ## § 6 — Author checklist
116
152
 
117
153
  Before shipping a senior skill that opts into the spine:
118
154
 
119
- - [ ] Frontmatter declares `context_spine:` with values from
120
- `{product, team, repo}`.
155
+ - [ ] Frontmatter declares `context_spine:` with values from the
156
+ cross-wing slots (`product`, `team`, `repo`) and/or wing-scoped
157
+ slots authorized via per-wing ADR (e.g. Wing-3:
158
+ `channel-stage`, `funnel-stage`, `customer-segment`).
121
159
  - [ ] Skill body cites `agents/context-spine/<slot>.md` near the top
122
160
  (one link per declared slot).
123
161
  - [ ] Procedure handles missing-slot gracefully — falls back to the
@@ -101,10 +101,10 @@ mirrors `lint_skills` (`file:line:reason`).
101
101
 
102
102
  Three shipped chains across the suite illustrate the contract:
103
103
 
104
- ### W3 launch chain — `positioning` → `messaging-architecture` → `gtm-launch`
104
+ ### W3 launch chain — `positioning-strategy` → `messaging-architecture` → `gtm-launch`
105
105
 
106
- - `positioning` (H1) owns category framing.
107
- - `messaging-architecture` (H2) **composes** `positioning` — primary
106
+ - `positioning-strategy` (H1) owns category framing.
107
+ - `messaging-architecture` (H2) **composes** `positioning-strategy` — primary
108
108
  message + supporting proofs derive from H1's point-of-view output.
109
109
  - `gtm-launch` (H3) **composes** `messaging-architecture` plus
110
110
  `release-comms` (unified-senior-roles Block L) — launch sequencing
@@ -22,6 +22,7 @@ tiers, a 5-section spine for Core, and a 7-section spine for Specialist
22
22
  | `role` | string | yes | human-readable role name |
23
23
  | `description` | string | yes | one sentence, ≤ 160 chars |
24
24
  | `tier` | enum | yes | `core` \| `specialist` |
25
+ | `wing` | int | optional | `1`\|`2`\|`3`\|`4` — cognition cluster per [`package-self-orientation § The four wings`](package-self-orientation.md#the-four-wings); raises the specialist size cap for denser wings |
25
26
  | `mode` | string | optional | advisory link to a role-contract workflow mode |
26
27
  | `version` | string | yes | semver; bump on breaking changes |
27
28
  | `source` | enum | yes | `package` \| `project` |
@@ -77,13 +78,28 @@ beyond the global line cap).
77
78
 
78
79
  ## § 4 — Size budgets
79
80
 
81
+ Base caps by tier:
82
+
80
83
  | Tier | Section count | Line cap | Rationale |
81
84
  |---|---|---|---|
82
85
  | `core` | 5 | ≤ 120 | always-loaded, stay lean |
83
86
  | `specialist` | 7 | ≤ 100 | opt-in, denser per section |
84
87
 
85
- The line cap is enforced by `lint-skills` against the full file
86
- including frontmatter and trailing blank line.
88
+ Wing-scoped overrides for the `specialist` tier (Wings 3 and 4 carry
89
+ denser cognition than Wings 1 and 2 funnel × channel × lifecycle for
90
+ GTM, finance × org × strategy for Money/Ops — so the seven-section
91
+ spine needs more room to land without amputating Workflows):
92
+
93
+ | Tier | Wing | Line cap |
94
+ |---|---|---|
95
+ | `specialist` | 1 (Engineering) | ≤ 100 |
96
+ | `specialist` | 2 (Product + Foundation) | ≤ 100 |
97
+ | `specialist` | 3 (GTM + Growth) | ≤ 140 |
98
+ | `specialist` | 4 (Money + Strategy + Ops) | ≤ 140 |
99
+
100
+ Personas without a `wing:` field fall back to the tier baseline. The
101
+ line cap is enforced by `lint-skills` against the full file including
102
+ frontmatter and trailing blank line.
87
103
 
88
104
  ## § 5 — Schema enforcement
89
105
 
@@ -91,8 +107,9 @@ The linter (A2 work) enforces:
91
107
 
92
108
  - frontmatter shape (table in § 1)
93
109
  - tier enum
110
+ - wing enum (when present)
94
111
  - required sections per tier (§ 3)
95
- - size budget per tier (§ 4)
112
+ - size budget per tier — wing override applied when `wing:` is set (§ 4)
96
113
  - ≥ 3 bullets in `Unique Questions`
97
114
  - `id` matches filename stem
98
115
  - description ≤ 160 chars
@@ -0,0 +1,114 @@
1
+ # GTM Handoff
2
+
3
+ Wing-3-specific prose for the three load-bearing senior-skill chains
4
+ in the GTM + Growth cluster. The mechanical contract — initiator →
5
+ delegated(input) → output-artifact, lint rules, worktree boundary —
6
+ lives in [`docs/contracts/cross-wing-handoff.md`](../contracts/cross-wing-handoff.md).
7
+ The cross-wing routing prose (when to hand off at all, L4 / C8
8
+ boundary, decision tree) lives in
9
+ [`docs/guidelines/cross-role-handoff.md`](cross-role-handoff.md).
10
+ This guideline covers **what crosses each Wing-3 boundary**, **what
11
+ the typed artifact looks like**, and **who owns the failure mode
12
+ when the chain breaks**.
13
+
14
+ Cycle / dangling / tier-mismatch enforcement is not duplicated here —
15
+ `task lint-handoffs` (per cross-wing-handoff § 4) is the mechanical
16
+ gate.
17
+
18
+ ## Chain 1 — brand → channel
19
+
20
+ Five-step chain that turns a category point-of-view into a shipped
21
+ funnel of channel artifacts. CMO cluster owns every step.
22
+
23
+ ```
24
+ positioning-strategy (H1)
25
+ → messaging-architecture (H2)
26
+ → gtm-launch (H3)
27
+ → editorial-calendar (H4)
28
+ → content-funnel-design (H5)
29
+ ```
30
+
31
+ | Step | Hands off when | Typed artifact crossing the boundary | Failure-mode owner |
32
+ |---|---|---|---|
33
+ | H1 → H2 | Category framing + opposable-positioning audit locked. | `positioning-statement.md` — "we are X for Y, not Z" + point-of-view paragraph + opposable-positioning matrix. | H1 owns drift: if H2 cannot derive proofs from the statement, H1's POV is too soft. |
34
+ | H2 → H3 | Primary message + supporting proofs + audience-by-message matrix locked. | `messaging-stack.md` — primary message, three supporting proofs, audience-message matrix, narrative beats. | H2 owns drift: if H3's wave-by-wave narrative drifts, the proofs were the wrong shape. |
35
+ | H3 → H4 | Launch sequencing (alpha → beta → GA) + audience-wave logic locked; engineering-readiness signals attached. | `launch-plan.md` — wave list, narrative beats per wave, dependency map, go / no-go signals. | H3 owns drift: missing engineering-readiness signal = H3 shipped a plan that cannot land. |
36
+ | H4 → H5 | Cadence cognition (evergreen vs campaign vs reactive) + beat-mapping locked. | `editorial-calendar.md` — cadence per audience, beat-to-asset map, content-debt ledger. | H4 owns drift: a calendar that does not map beats to funnel stages cannot be designed against. |
37
+ | H5 self-closes | Funnel-stage-to-content-shape mapping + conversion-pathway design locked. | `content-funnel.md` — per-stage asset shapes, conversion pathways, leading indicators. | H5 owns drift: any stage without a content shape is a broken funnel hand-back to H4. |
38
+
39
+ H5 also **composes** `funnel-analysis` (H14, Chain 3) — the funnel
40
+ diagnostic feeds the conversion-pathway design without H5 absorbing
41
+ funnel-diagnostic cognition.
42
+
43
+ ## Chain 2 — discovery → pipeline
44
+
45
+ Five-step chain that turns customer research into a forecast-able
46
+ pipeline. Spans the Discovery → RevOps boundary inside Wing 3 and
47
+ hands the forecast call back to the Wing-4 finance-partner.
48
+
49
+ ```
50
+ customer-research (L1, shipped)
51
+ → ideal-customer-profile artifact
52
+ → pipeline-strategy (H8)
53
+ → deal-qualification-meddic (H9)
54
+ → forecast-accuracy (H10) → forecasting (Wing-4 O2)
55
+ ```
56
+
57
+ | Step | Hands off when | Typed artifact crossing the boundary | Failure-mode owner |
58
+ |---|---|---|---|
59
+ | `customer-research` → H8 | Switch-event interviews + JTBD framing complete; ICP synthesized from verbatims. | `icp.md` — segment definition, switch events, JTBD frame, anti-ICP. | `customer-research` owns drift: an ICP without anti-ICP boundaries leaks into H8 stage definitions. |
60
+ | H8 → H9 | Stage definitions + conversion-rate targets + coverage reasoning locked. | `pipeline-shape.md` — stage list, per-stage conversion target, coverage ratio, leak map. | H8 owns drift: stages H9 cannot disqualify against = H8 stage definitions were not orthogonal. |
61
+ | H9 → H10 | MEDDIC qualification rubric + disqualification heuristics locked. | `qualification-rubric.md` — MEDDIC fields per stage, disqualification triggers, champion-test. | H9 owns drift: forecasts that ignore disqualification heuristics inflate; H9 owns the rubric. |
62
+ | H10 → Wing-4 O2 | Forecast call constructed (commit / best-case / pipeline) against the `forecast-construction-shape` ADR. | `forecast-band.json` — commit value, best-case value, pipeline value, confidence band, retro signature. | **Interface contract owned by O2** (per cross-wing-handoff § 5 / W4 chain): if the ADR drifts, O2 breaks the contract, not H10. |
63
+
64
+ H10's parallel-development rule (starts after O2-interface ≥ 100 %,
65
+ runs in parallel with O2 implementation) is recorded in the roadmap
66
+ H10 entry and the contract — not duplicated here.
67
+
68
+ ## Chain 3 — funnel → retention
69
+
70
+ Six-step chain that turns funnel diagnostics into a retention and
71
+ expansion system. Growth PM cluster owns the first three steps,
72
+ Customer Success cluster owns the last three; the H15 → H12 boundary
73
+ crosses the cluster line inside Wing 3.
74
+
75
+ ```
76
+ funnel-analysis (H14)
77
+ → activation-design (H16)
78
+ → onboarding-design (H11)
79
+ → retention-loops (H15)
80
+ → churn-prevention (H12)
81
+ → expansion-playbook (H13)
82
+ ```
83
+
84
+ | Step | Hands off when | Typed artifact crossing the boundary | Failure-mode owner |
85
+ |---|---|---|---|
86
+ | H14 → H16 | Funnel-stage diagnostics + leaky-bucket-vs-growth-loop classification + leading-indicator selection locked. | `funnel-diagnostic.md` — per-stage drop-off, loop classification, leading indicators, cohort behavior. | H14 owns drift: an unselected leading indicator leaves H16 without an aha-moment signal. |
87
+ | H16 → H11 | Aha-moment definition + activation-event selection + activation-funnel construction locked. | `activation-spec.md` — aha-moment, activation event, activation-funnel stages, leading-vs-lagging indicators. | H16 owns drift: an activation event H11 cannot instrument is the wrong event. |
88
+ | H11 → H15 | Time-to-first-value reasoning + milestone design + friction audit locked. | `onboarding-flow.md` — milestone list, time-to-value target, friction-audit findings, drop-off diagnosis. | H11 owns drift: milestones without retention hooks force H15 to re-derive habit cognition. |
89
+ | H15 → H12 | Habit-formation reasoning + trigger-action-reward design + loop classification locked. | `retention-loop.md` — trigger / action / reward triple, loop classification, network-vs-single-user signal. | H15 owns drift: a loop that does not surface a health signal leaves H12 without an early warning. |
90
+ | H12 → H13 | Health-score signal design + churn-cause classification + early-warning loop locked. | `churn-signals.md` — health-score schema, churn-cause buckets, early-warning thresholds. | H12 owns drift: a health signal H13 cannot read against expansion triggers blocks NRR cognition. Also feeds **back to Wing-4 forecasting** per the cross-skill map. |
91
+ | H13 self-closes | Account-expansion patterns + upsell-vs-cross-sell reasoning + NRR cognition locked. | `expansion-playbook.md` — expansion patterns, trigger signals, NRR levers. | H13 owns drift: expansion triggers that ignore churn signals double-count growth. |
92
+
93
+ ## Reading the failure-mode column
94
+
95
+ The column answers one question: **when a downstream skill cannot
96
+ do its job, which upstream skill rewrites its artifact?** The owner
97
+ is the **upstream** skill, not the consumer — drift is always a
98
+ producer-side fix. This mirrors the W4 / W3 forecasting chain in
99
+ the contract (O2 owns the interface; H10 only consumes it).
100
+
101
+ ## See also
102
+
103
+ - [`docs/contracts/cross-wing-handoff.md`](../contracts/cross-wing-handoff.md)
104
+ — typed-handoff mechanical contract; `task lint-handoffs` enforces
105
+ cycles, dangling references, and tier mismatches over the graph.
106
+ - [`docs/guidelines/cross-role-handoff.md`](cross-role-handoff.md)
107
+ — when to hand off at all, how to phrase the routing, L4 / C8
108
+ boundary.
109
+ - [`docs/contracts/context-spine.md`](../contracts/context-spine.md)
110
+ § Wing-3 slots — `channel-stage`, `funnel-stage`,
111
+ `customer-segment`; every chain step opts into ≥ 1 slot.
112
+ - `agents/roadmaps/` § Block H (archived after merge) — the
113
+ sixteen H-skills this guideline maps; pending skills appear here
114
+ as backtick slugs until shipped.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@event4u/agent-config",
3
- "version": "2.7.0",
3
+ "version": "2.8.0",
4
4
  "description": "Shared agent configuration \u2014 skills, rules, commands, guidelines, and templates for AI coding tools",
5
5
  "license": "MIT",
6
6
  "private": false,
@@ -31,7 +31,10 @@ SKILL_GLOBS = (
31
31
  ".agent-src.uncompressed/skills/**/SKILL.md",
32
32
  ".agent-src/skills/**/SKILL.md",
33
33
  )
34
- VALID_SLOTS = ("product", "team", "repo")
34
+ VALID_SLOTS = (
35
+ "product", "team", "repo",
36
+ "channel-stage", "funnel-stage", "customer-segment",
37
+ )
35
38
 
36
39
  CONTEXT_SPINE_PAT = re.compile(
37
40
  r"^context_spine:\s*\[([^\]]*)\]\s*$", re.MULTILINE
@@ -26,6 +26,11 @@
26
26
  "type": "string",
27
27
  "enum": ["core", "specialist"]
28
28
  },
29
+ "wing": {
30
+ "type": "integer",
31
+ "enum": [1, 2, 3, 4],
32
+ "description": "Cognition wing per docs/contracts/package-self-orientation.md § The four wings. Optional. Raises the specialist size cap (persona-schema § 4)."
33
+ },
29
34
  "mode": {
30
35
  "type": "string",
31
36
  "enum": ["developer", "reviewer", "tester", "product-owner", "incident", "planner"]
@@ -72,9 +72,9 @@
72
72
  "uniqueItems": true,
73
73
  "items": {
74
74
  "type": "string",
75
- "enum": ["product", "team", "repo"]
75
+ "enum": ["product", "team", "repo", "channel-stage", "funnel-stage", "customer-segment"]
76
76
  },
77
- "description": "Senior-skill opt-in for the tri-slot context spine. Declares which slots under agents/context-spine/ the skill expects to read (product, team, repo). Council Q1 (KEEP-3) locks the slot count at 3; additions require 2 citing skills + ADR per docs/contracts/context-spine.md § 5."
77
+ "description": "Senior-skill opt-in for the context spine. Declares which slots under agents/context-spine/ the skill expects to read. Cross-wing slots (product, team, repo) are locked at 3 by council Q1 (KEEP-3); wing-scoped slots (channel-stage, funnel-stage, customer-segment — Wing-3 GTM) follow the per-wing ADR track in docs/contracts/context-spine.md § 5. Wing-3 slots authorized by docs/contracts/adr-gtm-context-spine.md."
78
78
  },
79
79
  "execution": {
80
80
  "type": "object",