shapeup-sdlc 1.6.2
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/.claude/settings.local.example.json +20 -0
- package/.claude-plugin/marketplace.json +16 -0
- package/.claude-plugin/plugin.json +18 -0
- package/.env.shapeup.example +14 -0
- package/AGENTS.md +133 -0
- package/LICENSE +21 -0
- package/README.md +362 -0
- package/SECURITY.md +72 -0
- package/bin/init.mjs +329 -0
- package/commands/build.md +14 -0
- package/commands/eval.md +15 -0
- package/commands/hammer.md +12 -0
- package/commands/orient.md +11 -0
- package/commands/qa.md +12 -0
- package/commands/retro.md +13 -0
- package/commands/scopes.md +14 -0
- package/commands/shape.md +12 -0
- package/commands/ship.md +53 -0
- package/commands/wire.md +11 -0
- package/hooks/anti-rationalization.mjs +244 -0
- package/hooks/compact-snapshot.mjs +47 -0
- package/hooks/gate-deadline.mjs +151 -0
- package/hooks/gate-intake.mjs +110 -0
- package/hooks/gate-l2.mjs +161 -0
- package/hooks/gate-zerowork.mjs +264 -0
- package/hooks/hooks.json +118 -0
- package/hooks/lib/decision.mjs +183 -0
- package/hooks/safety-spine.mjs +296 -0
- package/hooks/sandbox-guard.mjs +172 -0
- package/hooks/session-rehydrate.mjs +109 -0
- package/hooks/slop-cleaner.mjs +176 -0
- package/oracles/_shared.mjs +46 -0
- package/oracles/http-oracle.mjs +155 -0
- package/oracles/index.mjs +36 -0
- package/oracles/process-oracle.mjs +146 -0
- package/oracles/snapshot-oracle.mjs +119 -0
- package/oracles/test-oracle.mjs +138 -0
- package/package.json +49 -0
- package/skills/advisor-protocol/SKILL.md +171 -0
- package/skills/ba-pitch-analyzer/SKILL.md +175 -0
- package/skills/ba-pitch-analyzer/assets/templates/_index.tmpl.md +84 -0
- package/skills/ba-pitch-analyzer/assets/templates/api-feasibility.tmpl.md +65 -0
- package/skills/ba-pitch-analyzer/assets/templates/assess-report.tmpl.md +127 -0
- package/skills/ba-pitch-analyzer/assets/templates/contracts/be-service.contract.tmpl.md +62 -0
- package/skills/ba-pitch-analyzer/assets/templates/contracts/offline-storage.contract.tmpl.md +92 -0
- package/skills/ba-pitch-analyzer/assets/templates/contracts/third-party-api.contract.tmpl.md +66 -0
- package/skills/ba-pitch-analyzer/assets/templates/cross-context/context-map.tmpl.md +64 -0
- package/skills/ba-pitch-analyzer/assets/templates/cross-context/event-choreography.tmpl.md +77 -0
- package/skills/ba-pitch-analyzer/assets/templates/cross-context/migration-plan.tmpl.md +104 -0
- package/skills/ba-pitch-analyzer/assets/templates/cross-context/team-handoff.tmpl.md +79 -0
- package/skills/ba-pitch-analyzer/assets/templates/domain-model.tmpl.md +79 -0
- package/skills/ba-pitch-analyzer/assets/templates/feedback.tmpl.md +87 -0
- package/skills/ba-pitch-analyzer/assets/templates/integration.tmpl.md +64 -0
- package/skills/ba-pitch-analyzer/assets/templates/run-state.tmpl.md +77 -0
- package/skills/ba-pitch-analyzer/assets/templates/scope-summary.tmpl.md +105 -0
- package/skills/ba-pitch-analyzer/assets/templates/synthesis.tmpl.md +215 -0
- package/skills/ba-pitch-analyzer/assets/templates/task-board.tmpl.md +35 -0
- package/skills/ba-pitch-analyzer/assets/templates/task-spike.tmpl.md +86 -0
- package/skills/ba-pitch-analyzer/assets/templates/task.tmpl.md +84 -0
- package/skills/ba-pitch-analyzer/assets/templates/usecase.tmpl.md +105 -0
- package/skills/ba-pitch-analyzer/assets/templates/ux-behavior.tmpl.md +65 -0
- package/skills/ba-pitch-analyzer/references/contract-patterns.md +152 -0
- package/skills/ba-pitch-analyzer/references/ddd-patterns.md +173 -0
- package/skills/ba-pitch-analyzer/references/doc-schemas.md +275 -0
- package/skills/ba-pitch-analyzer/references/integration-analysis.md +152 -0
- package/skills/ba-pitch-analyzer/references/task-generation.md +623 -0
- package/skills/ba-pitch-analyzer/references/test-surface.md +102 -0
- package/skills/ba-pitch-analyzer/references/ux-behavior-patterns.md +269 -0
- package/skills/ba-pitch-analyzer/scripts/board-derive.mjs +241 -0
- package/skills/ba-pitch-analyzer/scripts/spec-lint.mjs +239 -0
- package/skills/coach/SKILL.md +202 -0
- package/skills/orient/SKILL.md +262 -0
- package/skills/qa-edge-hunter/SKILL.md +369 -0
- package/skills/scope-architect/SKILL.md +111 -0
- package/skills/scope-hammer/SKILL.md +186 -0
- package/skills/shapeup/SKILL.md +403 -0
- package/skills/shapeup/resources/breadboard-reflection.md +88 -0
- package/skills/shapeup/resources/breadboarding.md +334 -0
- package/skills/shapeup/resources/context-compaction.md +240 -0
- package/skills/shapeup/resources/framing-doc.md +92 -0
- package/skills/shapeup/resources/kickoff-doc.md +95 -0
- package/skills/shapeup/resources/shaping.md +194 -0
- package/skills/shapeup/resources/spike.md +86 -0
- package/skills/solution-architect/SKILL.md +129 -0
- package/skills/spec-evaluator/README.md +93 -0
- package/skills/spec-evaluator/SKILL.md +213 -0
- package/skills/spec-evaluator/references/anti-leniency.md +50 -0
- package/skills/spec-evaluator/references/dimension-contract.md +126 -0
- package/skills/spec-evaluator/references/dimensions/_registry.md +40 -0
- package/skills/spec-evaluator/references/dimensions/completeness.md +102 -0
- package/skills/spec-evaluator/references/dimensions/integration.md +129 -0
- package/skills/spec-evaluator/references/dimensions/performance.md +48 -0
- package/skills/spec-evaluator/references/dimensions/security.md +60 -0
- package/skills/spec-evaluator/references/dimensions/spec-conformance.md +134 -0
- package/skills/spec-evaluator/references/dimensions/tdd-surface.md +110 -0
- package/skills/spec-evaluator/references/dimensions/test-surface-conformance.md +100 -0
- package/skills/spec-evaluator/references/probing.md +177 -0
- package/skills/spec-evaluator/references/report-schema.md +101 -0
- package/skills/spec-evaluator/references/verdict-ledger.md +92 -0
- package/skills/spec-evaluator/scripts/verdict-ledger.mjs +166 -0
- package/skills/task-executor/SKILL.md +194 -0
- package/skills/tech-lead/README.md +71 -0
- package/skills/tech-lead/SKILL.md +459 -0
- package/skills/tech-lead/references/delegation.md +254 -0
- package/skills/tech-lead/references/gates.md +379 -0
- package/skills/tech-lead/references/invocation.md +45 -0
- package/skills/tech-lead/references/ledger-schema.md +214 -0
- package/skills/tech-lead/references/round-protocol.md +184 -0
- package/skills/tech-lead/references/state-model.md +66 -0
- package/skills/tech-lead/references/tiny-lane.md +52 -0
- package/skills/tech-lead/schemas/domain.schema.json +2294 -0
- package/skills/tech-lead/schemas/gate-answers.schema.json +92 -0
- package/skills/tech-lead/schemas/work-order.schema.json +21 -0
- package/skills/tech-lead/schemas/work-result.schema.json +40 -0
- package/skills/tech-lead/scripts/aegis-digest.mjs +124 -0
- package/skills/tech-lead/scripts/budget-check.mjs +156 -0
- package/skills/tech-lead/scripts/compile-order.mjs +518 -0
- package/skills/tech-lead/scripts/fit-check.mjs +196 -0
- package/skills/tech-lead/scripts/gate-answers.mjs +338 -0
- package/skills/tech-lead/scripts/ingest-result.mjs +270 -0
- package/skills/tech-lead/scripts/init-run.mjs +326 -0
- package/skills/tech-lead/scripts/lib/argv.mjs +224 -0
- package/skills/tech-lead/scripts/lib/contract-md.mjs +481 -0
- package/skills/tech-lead/scripts/lib/is-main.mjs +82 -0
- package/skills/tech-lead/scripts/lib/paths.mjs +278 -0
- package/skills/tech-lead/scripts/lib/ratchet-tree.mjs +112 -0
- package/skills/tech-lead/scripts/run-snapshot.mjs +269 -0
- package/skills/tech-lead/scripts/ship-report.mjs +275 -0
- package/skills/tech-lead/scripts/stats.mjs +423 -0
- package/skills/tech-lead/scripts/t0-verify.mjs +470 -0
- package/skills/tech-lead/scripts/trace-lint.mjs +367 -0
- package/skills/tech-lead/scripts/validate-envelope.mjs +283 -0
- package/skills/translator/README.md +66 -0
- package/skills/translator/SKILL.md +258 -0
- package/skills/translator/references/preservation-rules.md +102 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: migration-plan
|
|
3
|
+
feature: FEATURE_SLUG
|
|
4
|
+
skill_version: "2.5"
|
|
5
|
+
affected_tables: []
|
|
6
|
+
change_type: additive | breaking | destructive
|
|
7
|
+
backward_compatible: true | false
|
|
8
|
+
tags: [cross-context, migration]
|
|
9
|
+
depends_on: ["[[_cross-context/context-map]]"]
|
|
10
|
+
status: draft
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Migration Plan: FEATURE TITLE
|
|
14
|
+
|
|
15
|
+
> Generated only when feature modifies existing production schema.
|
|
16
|
+
> Each migration task maps to a TASK-M0N in tasks/_index.md.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Change Summary
|
|
21
|
+
|
|
22
|
+
| Table | Change Type | Breaking | Rollback Window |
|
|
23
|
+
|-------|------------|---------|----------------|
|
|
24
|
+
| `table_name` | add column / rename / drop | ✅ yes / ❌ no | 48h |
|
|
25
|
+
|
|
26
|
+
**Backward compatible:** YES / NO
|
|
27
|
+
**Estimated rows affected:** ~N rows
|
|
28
|
+
**Estimated migration time:** < Ns (no lock) / ~Ns (with lock)
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Migration Tasks
|
|
33
|
+
|
|
34
|
+
### TASK-M01 — [description, e.g. Add nullable columns]
|
|
35
|
+
|
|
36
|
+
```sql
|
|
37
|
+
-- UP
|
|
38
|
+
ALTER TABLE table_name ADD COLUMN col_name TYPE DEFAULT NULL;
|
|
39
|
+
|
|
40
|
+
-- ROLLBACK
|
|
41
|
+
ALTER TABLE table_name DROP COLUMN col_name;
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Lock type: **none** (nullable add) / **table lock** (not null without default)
|
|
45
|
+
Safe to run: during deploy / after deploy / off-hours only
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
### TASK-M02 — [description, e.g. Backfill existing rows]
|
|
50
|
+
|
|
51
|
+
```sql
|
|
52
|
+
-- UP (run in batches of 1000 to avoid lock escalation)
|
|
53
|
+
UPDATE table_name
|
|
54
|
+
SET col_name = [derived value]
|
|
55
|
+
WHERE col_name IS NULL
|
|
56
|
+
LIMIT 1000;
|
|
57
|
+
|
|
58
|
+
-- Verify
|
|
59
|
+
SELECT COUNT(*) FROM table_name WHERE col_name IS NULL;
|
|
60
|
+
-- Expected: 0
|
|
61
|
+
|
|
62
|
+
-- ROLLBACK: not needed (nullable — old code ignores new column)
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Estimated rows: ~N | Estimated time: ~Ns | Lock: none
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
### TASK-M03 — [description, e.g. Enforce NOT NULL constraint]
|
|
70
|
+
|
|
71
|
+
```sql
|
|
72
|
+
-- UP — only run after M02 verified
|
|
73
|
+
ALTER TABLE table_name ALTER COLUMN col_name SET NOT NULL;
|
|
74
|
+
|
|
75
|
+
-- ROLLBACK
|
|
76
|
+
ALTER TABLE table_name ALTER COLUMN col_name DROP NOT NULL;
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**Prerequisite:** M02 complete AND verified (0 null rows)
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Deploy Sequence
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
M01 ──► deploy app v[N] ──► verify (smoke test) ──► M02 ──► verify ──► M03
|
|
87
|
+
│ │
|
|
88
|
+
└─ rollback window: run ROLLBACK scripts in reverse order ◄────────────┘
|
|
89
|
+
M03-rollback → M02 (no-op) → M01-rollback
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Rollback window:** 48h after M03
|
|
93
|
+
**Rollback owner:** [team]
|
|
94
|
+
**Runbook location:** [link or path]
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Risk Assessment
|
|
99
|
+
|
|
100
|
+
| Risk | Likelihood | Impact | Mitigation |
|
|
101
|
+
|------|-----------|--------|-----------|
|
|
102
|
+
| Lock escalation on M03 | low | high — table unavailable | Run during low-traffic window |
|
|
103
|
+
| Backfill timeout on M02 | medium | medium — partial migration | Batch size 1000, resumable |
|
|
104
|
+
| App v[N-1] reads new column | low | low — nullable, ignored | Backward compatible by design |
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: team-handoff
|
|
3
|
+
feature: FEATURE_SLUG
|
|
4
|
+
skill_version: "2.5"
|
|
5
|
+
teams: []
|
|
6
|
+
tags: [cross-context, coordination]
|
|
7
|
+
depends_on:
|
|
8
|
+
- "[[_cross-context/context-map]]"
|
|
9
|
+
- "[[_cross-context/event-choreography]]"
|
|
10
|
+
status: draft
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Team Handoff: FEATURE TITLE
|
|
14
|
+
|
|
15
|
+
> Explicit interface contracts between teams.
|
|
16
|
+
> Each row is a commitment: From Team delivers Artifact by Ready-When condition.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Handoff Register
|
|
21
|
+
|
|
22
|
+
| From Team | To Team | Artifact | Ready When | Blocker Risk |
|
|
23
|
+
|-----------|---------|----------|-----------|-------------|
|
|
24
|
+
| [Team A] (API) | [Team B] (Mobile) | [[contracts/[repo].contract.md]] | TASK-00N done | 🔴 blocks Mobile TASK-00N |
|
|
25
|
+
| [Team B] (API) | [Team A] (API) | `EventName` schema | TASK-00N done | 🟡 blocks integration test |
|
|
26
|
+
| [Team B] (Mobile) | QA | E2E test cases | TASK-00N done | 🟡 blocks QA sprint entry |
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Blocking Dependencies
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
[Team B] CANNOT start TASK-00N ([description])
|
|
34
|
+
until [Team A] completes TASK-00N ([description])
|
|
35
|
+
Mitigation: use contract stub from [[contracts/[repo].contract.md]]
|
|
36
|
+
Stub ready: TASK-00N (unblocked — no dependency)
|
|
37
|
+
|
|
38
|
+
[Team C] CANNOT start integration tests
|
|
39
|
+
until [Team A] EventName schema is stable
|
|
40
|
+
Mitigation: use ⚠️ SPECULATIVE contract — mark tests as xfail until confirmed
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Parallel Work Windows
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
Wave 1 — No cross-team dependencies (start immediately):
|
|
49
|
+
[Team A]: TASK-001, TASK-002, TASK-003
|
|
50
|
+
[Team B]: TASK-004, TASK-005 (using contract stub)
|
|
51
|
+
|
|
52
|
+
Wave 2 — After Team A TASK-003 done:
|
|
53
|
+
[Team B]: TASK-006 (replace stub with real contract)
|
|
54
|
+
[Team C]: TASK-007 (integration tests — real contract available)
|
|
55
|
+
|
|
56
|
+
Wave 3 — After Wave 2 complete:
|
|
57
|
+
QA: E2E test suite
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Communication Protocol
|
|
63
|
+
|
|
64
|
+
| Trigger | Owner | Notify | Channel |
|
|
65
|
+
|---------|-------|--------|---------|
|
|
66
|
+
| Contract changes after stub distributed | [Team A] | [Team B], QA | [channel] |
|
|
67
|
+
| TASK-00N delayed > 1 day | [Team A] | [Team B] | [channel] |
|
|
68
|
+
| Schema breaking change detected | Any | All teams | [channel] |
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Definition of Done (Cross-Context)
|
|
73
|
+
|
|
74
|
+
Feature is complete when ALL of the following are true:
|
|
75
|
+
- [ ] All TASK-MNN migrations run and verified in staging
|
|
76
|
+
- [ ] All contracts have no remaining ⏳ TBD fields
|
|
77
|
+
- [ ] Event choreography happy path verified end-to-end
|
|
78
|
+
- [ ] All dead-letter scenarios have runbooks
|
|
79
|
+
- [ ] `synthesis.md` Health Dashboard — Coverage 🟢, Risk 🟢
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: domain-model
|
|
3
|
+
feature: FEATURE_SLUG
|
|
4
|
+
bounded_context: CONTEXT
|
|
5
|
+
entities: []
|
|
6
|
+
value_objects: []
|
|
7
|
+
domain_events: []
|
|
8
|
+
repositories: []
|
|
9
|
+
tags: [ddd]
|
|
10
|
+
depends_on: ["[[_index]]"]
|
|
11
|
+
status: draft
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Domain Model: FEATURE TITLE
|
|
15
|
+
|
|
16
|
+
## Bounded Context
|
|
17
|
+
`CONTEXT` context — owns [describe what this context is responsible for].
|
|
18
|
+
[Note any context boundaries: what this context does NOT own]
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Aggregate: [Name]
|
|
23
|
+
|
|
24
|
+
**Aggregate Root:** `[EntityName]`
|
|
25
|
+
|
|
26
|
+
**Invariants:**
|
|
27
|
+
- [invariant 1 — must be enforced by the aggregate root]
|
|
28
|
+
- [invariant 2]
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
[EntityName] (Aggregate Root)
|
|
32
|
+
├── id: [EntityName]Id (VO)
|
|
33
|
+
├── status: [EntityName]Status ([value1] | [value2] | [value3])
|
|
34
|
+
├── [field]: [Type]
|
|
35
|
+
└── [childEntity]: [ChildEntity][] (Entity, owned by root)
|
|
36
|
+
├── id: [ChildEntity]Id (VO)
|
|
37
|
+
└── [field]: [Type]
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**State Transitions:**
|
|
41
|
+
```
|
|
42
|
+
[state1] ──[method()]──► [state2] ──[method()]──► [state3]
|
|
43
|
+
└───[method()]────► [state4]
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Value Objects
|
|
49
|
+
|
|
50
|
+
| Value Object | Fields | Invariants |
|
|
51
|
+
|---|---|---|
|
|
52
|
+
| `[Name]Id` | value: string | UUID v4 format |
|
|
53
|
+
| `[Name]` | [fields] | [rule] |
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Domain Events
|
|
58
|
+
|
|
59
|
+
| Event | Emitted When | Payload Fields | Consumers |
|
|
60
|
+
|---|---|---|---|
|
|
61
|
+
| `[EntityName][PastTense]` | [trigger] | id, [fields] | [other contexts] |
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Repository Interfaces
|
|
66
|
+
|
|
67
|
+
```typescript
|
|
68
|
+
interface [EntityName]Repository {
|
|
69
|
+
findById(id: [EntityName]Id): Promise<[EntityName] | null>
|
|
70
|
+
save(entity: [EntityName]): Promise<void>
|
|
71
|
+
// [named business queries]
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Related
|
|
78
|
+
- [[ux-behavior]] — screen states map to aggregate status values
|
|
79
|
+
- [[usecases/_index]] — use cases that operate on this aggregate
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: feedback
|
|
3
|
+
feature: FEATURE_SLUG
|
|
4
|
+
sprint_date: YYYY-MM-DD
|
|
5
|
+
po_spec_accuracy: ~ # Fill after sprint: 1-5
|
|
6
|
+
dev_execution_accuracy: ~ # Fill after sprint: 1-5
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Post-Sprint Feedback: FEATURE TITLE
|
|
10
|
+
|
|
11
|
+
> Fill this document during sprint retro.
|
|
12
|
+
> Scores feed into `.claude/metrics.md` and drive SKILL improvements.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Scores
|
|
17
|
+
|
|
18
|
+
| Dimension | Score (1–5) | Meaning |
|
|
19
|
+
|-----------|-------------|---------|
|
|
20
|
+
| PO Spec Accuracy | ~ | Did generated docs reflect what PO intended? |
|
|
21
|
+
| Dev Execution Accuracy | ~ | Did tasks lead to correct implementation? |
|
|
22
|
+
|
|
23
|
+
**Score guide:**
|
|
24
|
+
- 5 — Perfect, no corrections needed
|
|
25
|
+
- 4 — Minor gaps, handled without blocking
|
|
26
|
+
- 3 — Moderate gaps, caused 1–2 clarification rounds
|
|
27
|
+
- 2 — Significant misalignment, rework required
|
|
28
|
+
- 1 — Spec was wrong, had to re-generate from scratch
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## PO Notes
|
|
33
|
+
|
|
34
|
+
*Fill after reviewing delivered implementation against original pitch intent.*
|
|
35
|
+
|
|
36
|
+
**What the spec got right:**
|
|
37
|
+
- ...
|
|
38
|
+
|
|
39
|
+
**What was missing or wrong:**
|
|
40
|
+
- ...
|
|
41
|
+
|
|
42
|
+
**Did the appetite hold?**
|
|
43
|
+
Estimated: N weeks/days | Actual: N weeks/days
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Dev Notes
|
|
48
|
+
|
|
49
|
+
*Fill during retro — be specific about which parts of the spec caused friction.*
|
|
50
|
+
|
|
51
|
+
**Specs that needed clarification mid-sprint:**
|
|
52
|
+
|
|
53
|
+
| Spec | What was unclear | What was needed |
|
|
54
|
+
|------|-----------------|-----------------|
|
|
55
|
+
| [[usecases/UC-Name]] | [description] | [what would have helped] |
|
|
56
|
+
| [[domain-model#Section]] | [description] | [what would have helped] |
|
|
57
|
+
|
|
58
|
+
**Specs that were well-written:**
|
|
59
|
+
- [[usecases/UC-Name]] — [why it worked well]
|
|
60
|
+
|
|
61
|
+
**Domain model accuracy:**
|
|
62
|
+
- [ ] Aggregate design matched reality
|
|
63
|
+
- [ ] Invariants were correct
|
|
64
|
+
- [ ] Repository interfaces were usable as-is
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Improvement Signals
|
|
69
|
+
|
|
70
|
+
*The most important section — drives SKILL v.next.*
|
|
71
|
+
*Flag which reference file or template needs updating.*
|
|
72
|
+
|
|
73
|
+
| Signal | Affects | Action |
|
|
74
|
+
|--------|---------|--------|
|
|
75
|
+
| [what was missing] | `references/[file].md` | [what to add/change] |
|
|
76
|
+
| [what was wrong] | `assets/templates/[file].tmpl.md` | [what to fix] |
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Update metrics.md
|
|
81
|
+
|
|
82
|
+
After filling this doc, update `.claude/metrics.md` with PO and Dev scores:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# The row for this feature should already exist from SKILL generation
|
|
86
|
+
# Just fill in the PO* and Dev* columns
|
|
87
|
+
```
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: integration
|
|
3
|
+
feature: FEATURE_SLUG
|
|
4
|
+
affected_services: []
|
|
5
|
+
domain_events_consumed: []
|
|
6
|
+
domain_events_produced: []
|
|
7
|
+
tags: [integration]
|
|
8
|
+
depends_on: ["[[domain-model]]", "[[usecases/_index]]"]
|
|
9
|
+
status: draft
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Integration Map: FEATURE TITLE
|
|
13
|
+
|
|
14
|
+
## Impact Summary
|
|
15
|
+
|
|
16
|
+
| System | Severity | Direction | Summary |
|
|
17
|
+
|--------|----------|-----------|---------|
|
|
18
|
+
| [package/service] | 🔴/🟡/🟢 | →/←/↔ | [one line] |
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## [Package / Service Name]
|
|
23
|
+
|
|
24
|
+
**Severity:** 🟢 Isolated
|
|
25
|
+
**Direction:** → produces
|
|
26
|
+
|
|
27
|
+
### What Changes
|
|
28
|
+
[1-3 sentences]
|
|
29
|
+
|
|
30
|
+
### Data Flow
|
|
31
|
+
```
|
|
32
|
+
[Feature] ──[event / call]──► [Service]
|
|
33
|
+
payload: { field1, field2 }
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Risk
|
|
37
|
+
[What breaks silently if coordination is missed]
|
|
38
|
+
|
|
39
|
+
### Mitigation
|
|
40
|
+
[How to prevent]
|
|
41
|
+
|
|
42
|
+
### Related Use Cases
|
|
43
|
+
- [[usecases/UC-Name]] — the UC whose tasks implement this integration point
|
|
44
|
+
(find the tasks via their `use_case_refs` on the LOCAL board — never link them here)
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
<!-- Repeat section for each affected system -->
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Event Coordination
|
|
53
|
+
|
|
54
|
+
| Event | Producer | Consumers | Deploy Order |
|
|
55
|
+
|-------|----------|-----------|-------------|
|
|
56
|
+
| `[EventName]` | this feature | [service A, service B] | consumers first |
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Environment Variables Required
|
|
61
|
+
|
|
62
|
+
| Variable | Service | Purpose |
|
|
63
|
+
|----------|---------|---------|
|
|
64
|
+
| `[VAR_NAME]` | [service] | [what it's for] |
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: run-state
|
|
3
|
+
feature: FEATURE_SLUG
|
|
4
|
+
last_run: YYYY-MM-DD
|
|
5
|
+
skill_version: "2.8"
|
|
6
|
+
lens: lite | standard
|
|
7
|
+
pitch_hash: HASH
|
|
8
|
+
assess_done: false
|
|
9
|
+
assess_l0_score: 0
|
|
10
|
+
assess_confidence: 0
|
|
11
|
+
phases_completed: []
|
|
12
|
+
phases_skipped: []
|
|
13
|
+
files_generated: []
|
|
14
|
+
human_edited_files: []
|
|
15
|
+
discovered_rounds: 0
|
|
16
|
+
upgrade_available: standard | cross-context | none
|
|
17
|
+
upgrade_adds: []
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Run State: FEATURE TITLE
|
|
21
|
+
|
|
22
|
+
> Internal file — do not edit manually.
|
|
23
|
+
> Used by skill to enable incremental upgrades and Phase 0 cache reuse.
|
|
24
|
+
|
|
25
|
+
## Phases
|
|
26
|
+
|
|
27
|
+
| Phase | Status | Skipped Reason |
|
|
28
|
+
|-------|--------|---------------|
|
|
29
|
+
| 0 Assess | ✅ done / ⬜ skipped | — |
|
|
30
|
+
| 1 Ingest | ✅ done / ♻️ cached | cached from Phase 0 |
|
|
31
|
+
| 1b API Feasibility | ✅ done / ⬜ skipped | no third-party detected |
|
|
32
|
+
| 2 DDD Analysis | ✅ done | — |
|
|
33
|
+
| 2b Contracts | ✅ done / ⬜ skipped | lite mode |
|
|
34
|
+
| 3 UX Behavior | ✅ done | — |
|
|
35
|
+
| 4 Use Cases | ✅ done | — |
|
|
36
|
+
| 5 Integration | ✅ done / ⬜ skipped | lite mode |
|
|
37
|
+
| 6 Tasks | ✅ done | — |
|
|
38
|
+
| 7a Audit | ✅ done | — |
|
|
39
|
+
| 7b Scope Summary | ✅ done | — |
|
|
40
|
+
| 7c Synthesis | ✅ done | — |
|
|
41
|
+
| 8 Index | ✅ done | — |
|
|
42
|
+
|
|
43
|
+
## Files Generated
|
|
44
|
+
|
|
45
|
+
<!-- Auto-populated after run — one entry per file -->
|
|
46
|
+
- path/to/file.md
|
|
47
|
+
|
|
48
|
+
## Human-Edited Files
|
|
49
|
+
|
|
50
|
+
<!-- Populated when upgrade detects mtime > generation timestamp -->
|
|
51
|
+
<!-- These files will NOT be overwritten on upgrade -->
|
|
52
|
+
- path/to/file.md — edited YYYY-MM-DD
|
|
53
|
+
|
|
54
|
+
## Upgrade Available
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# Check current upgrade options
|
|
58
|
+
/ba-pitch-analyzer --status shapeup/FEATURE_SLUG/spec/
|
|
59
|
+
|
|
60
|
+
# Upgrade to standard lens (adds contracts + integration + full synthesis)
|
|
61
|
+
/ba-pitch-analyzer --upgrade standard shapeup/FEATURE_SLUG/spec/
|
|
62
|
+
|
|
63
|
+
# Upgrade specific module only
|
|
64
|
+
/ba-pitch-analyzer --upgrade contracts shapeup/FEATURE_SLUG/spec/
|
|
65
|
+
/ba-pitch-analyzer --upgrade synthesis shapeup/FEATURE_SLUG/spec/
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Metrics
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
assess_tokens_est : N–N
|
|
72
|
+
actual_tokens : N (filled post-run)
|
|
73
|
+
assess_ucs_est : N
|
|
74
|
+
actual_ucs : N (filled post-run)
|
|
75
|
+
assess_tasks_est : N–N
|
|
76
|
+
actual_tasks : N (filled post-run)
|
|
77
|
+
```
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: scope-summary
|
|
3
|
+
feature: FEATURE_SLUG
|
|
4
|
+
generated_at: YYYY-MM-DD
|
|
5
|
+
total_tasks: 0
|
|
6
|
+
total_estimated_hours: 0
|
|
7
|
+
packages_touched: []
|
|
8
|
+
critical_path_length: 0
|
|
9
|
+
critical_path_tasks: []
|
|
10
|
+
external_blockers: []
|
|
11
|
+
audit_score: 0
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Feature Scope Summary: FEATURE TITLE
|
|
15
|
+
|
|
16
|
+
> Generated from task graph. Use this document in sprint planning.
|
|
17
|
+
> Audit score below 90 means spec needs human review before execution.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## At a Glance
|
|
22
|
+
|
|
23
|
+
| | |
|
|
24
|
+
|---|---|
|
|
25
|
+
| Total tasks | N |
|
|
26
|
+
| Estimated effort | Nh (~N days) |
|
|
27
|
+
| Packages touched | N |
|
|
28
|
+
| Critical path depth | N tasks |
|
|
29
|
+
| External blockers | N items before sprint can start |
|
|
30
|
+
| Spec audit score | N/100 [✅/⚠️/🚫] |
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Critical Path
|
|
35
|
+
|
|
36
|
+
The longest sequential chain — minimum time to complete if parallelized optimally.
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
TASK-NNN → TASK-NNN → TASK-NNN → TASK-NNN
|
|
40
|
+
Nh Nh Nh Nh
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Critical path estimate:** Nh total
|
|
44
|
+
*(All other work can happen in parallel alongside this chain)*
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Package Distribution
|
|
49
|
+
|
|
50
|
+
| Package | Tasks | Est. Hours | % of effort |
|
|
51
|
+
|---------|-------|------------|-------------|
|
|
52
|
+
| packages/shared | N | Nh | N% |
|
|
53
|
+
| apps/api | N | Nh | N% |
|
|
54
|
+
| apps/web | N | Nh | N% |
|
|
55
|
+
| **Total** | **N** | **Nh** | 100% |
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Parallel Opportunities
|
|
60
|
+
|
|
61
|
+
Tasks with no interdependency that can run simultaneously:
|
|
62
|
+
|
|
63
|
+
| Group | Tasks | Can start after |
|
|
64
|
+
|-------|-------|----------------|
|
|
65
|
+
| Group A | TASK-NNN, TASK-NNN | TASK-NNN completes |
|
|
66
|
+
| Group B | TASK-NNN | TASK-NNN completes |
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## External Blockers
|
|
71
|
+
|
|
72
|
+
Items that must be resolved BEFORE sprint starts:
|
|
73
|
+
|
|
74
|
+
**Environment Variables**
|
|
75
|
+
- [ ] `VAR_NAME` — [what it's for, where to get it]
|
|
76
|
+
|
|
77
|
+
**Third-party Setup**
|
|
78
|
+
- [ ] [Service] sandbox account — [how to obtain]
|
|
79
|
+
|
|
80
|
+
**Internal Dependencies**
|
|
81
|
+
- [ ] [Other team/service] must deploy [X] first — see [[integration#section]]
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Risks (from Pitch)
|
|
86
|
+
|
|
87
|
+
Carried from [[_index#Rabbit-Holes]]:
|
|
88
|
+
|
|
89
|
+
| Risk | Impact | Mitigation | Related UC |
|
|
90
|
+
|------|--------|------------|-----------|
|
|
91
|
+
| [risk] | high/med/low | [mitigation] | [[usecases/UC-Name]] |
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Execution Recommendation
|
|
96
|
+
|
|
97
|
+
<!-- Filled from spec-lint.mjs output -->
|
|
98
|
+
|
|
99
|
+
**Audit Score: N/100**
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
[✅ Ready for autonomous execution — run /execute-plan tasks/_index.md]
|
|
103
|
+
[⚠️ Review recommended — PO + Dev 15-min walkthrough before /execute-plan]
|
|
104
|
+
[🚫 Blocked — fix critical issues in Audit Report first]
|
|
105
|
+
```
|