@zigrivers/scaffold 3.1.0 → 3.4.1
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/README.md +366 -40
- package/content/knowledge/core/test-skeleton-generation.md +313 -0
- package/{knowledge → content/knowledge}/execution/enhancement-workflow.md +1 -1
- package/content/knowledge/product/vision-innovation.md +273 -0
- package/{knowledge → content/knowledge}/tools/post-implementation-review-methodology.md +1 -1
- package/{pipeline → content/pipeline}/consolidation/workflow-audit.md +1 -1
- package/{pipeline → content/pipeline}/decisions/review-adrs.md +1 -1
- package/{pipeline → content/pipeline}/environment/design-system.md +1 -1
- package/{pipeline → content/pipeline}/finalization/implementation-playbook.md +2 -2
- package/{pipeline → content/pipeline}/foundation/tech-stack.md +1 -1
- package/{pipeline → content/pipeline}/modeling/review-domain-modeling.md +1 -1
- package/{pipeline → content/pipeline}/planning/implementation-plan-review.md +2 -1
- package/{pipeline → content/pipeline}/quality/review-testing.md +1 -1
- package/{pipeline → content/pipeline}/quality/story-tests.md +2 -2
- package/{pipeline → content/pipeline}/vision/innovate-vision.md +1 -1
- package/content/skills/mmr/SKILL.md +65 -0
- package/content/skills/multi-model-dispatch/SKILL.md +327 -0
- package/{agent-skills → content/skills}/scaffold-pipeline/SKILL.md +14 -8
- package/{agent-skills → content/skills}/scaffold-runner/SKILL.md +64 -19
- package/{tools → content/tools}/post-implementation-review.md +2 -2
- package/{tools → content/tools}/prompt-pipeline.md +7 -0
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/build.js +17 -1
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/build.test.js +6 -5
- package/dist/cli/commands/build.test.js.map +1 -1
- package/dist/cli/commands/info.test.js +2 -2
- package/dist/cli/commands/info.test.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +9 -0
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/init.test.js +6 -0
- package/dist/cli/commands/init.test.js.map +1 -1
- package/dist/cli/commands/list.test.js +8 -8
- package/dist/cli/commands/list.test.js.map +1 -1
- package/dist/cli/commands/run.test.js +4 -4
- package/dist/cli/commands/run.test.js.map +1 -1
- package/dist/cli/commands/skill.d.ts.map +1 -1
- package/dist/cli/commands/skill.js +16 -86
- package/dist/cli/commands/skill.js.map +1 -1
- package/dist/cli/commands/skill.test.js +27 -46
- package/dist/cli/commands/skill.test.js.map +1 -1
- package/dist/cli/middleware/project-root.d.ts.map +1 -1
- package/dist/cli/middleware/project-root.js +16 -0
- package/dist/cli/middleware/project-root.js.map +1 -1
- package/dist/cli/middleware/project-root.test.js +20 -0
- package/dist/cli/middleware/project-root.test.js.map +1 -1
- package/dist/core/adapters/gemini.js +2 -2
- package/dist/core/adapters/gemini.js.map +1 -1
- package/dist/core/adapters/gemini.test.js +1 -1
- package/dist/core/adapters/gemini.test.js.map +1 -1
- package/dist/core/skills/sync.d.ts +36 -0
- package/dist/core/skills/sync.d.ts.map +1 -0
- package/dist/core/skills/sync.js +119 -0
- package/dist/core/skills/sync.js.map +1 -0
- package/dist/core/skills/sync.test.d.ts +2 -0
- package/dist/core/skills/sync.test.d.ts.map +1 -0
- package/dist/core/skills/sync.test.js +166 -0
- package/dist/core/skills/sync.test.js.map +1 -0
- package/dist/e2e/commands.test.js +10 -10
- package/dist/e2e/commands.test.js.map +1 -1
- package/dist/e2e/knowledge.test.js +5 -4
- package/dist/e2e/knowledge.test.js.map +1 -1
- package/dist/index.js +0 -0
- package/dist/project/adopt.test.js +8 -8
- package/dist/project/adopt.test.js.map +1 -1
- package/dist/utils/fs.d.ts +5 -5
- package/dist/utils/fs.d.ts.map +1 -1
- package/dist/utils/fs.js +15 -15
- package/dist/utils/fs.js.map +1 -1
- package/dist/utils/fs.test.js +9 -9
- package/dist/utils/fs.test.js.map +1 -1
- package/dist/validation/index.test.js +2 -2
- package/dist/validation/index.test.js.map +1 -1
- package/package.json +3 -6
- package/skills/mmr/SKILL.md +65 -0
- package/skills/scaffold-pipeline/SKILL.md +3 -3
- /package/{knowledge → content/knowledge}/core/adr-craft.md +0 -0
- /package/{knowledge → content/knowledge}/core/ai-memory-management.md +0 -0
- /package/{knowledge → content/knowledge}/core/api-design.md +0 -0
- /package/{knowledge → content/knowledge}/core/automated-review-tooling.md +0 -0
- /package/{knowledge → content/knowledge}/core/claude-md-patterns.md +0 -0
- /package/{knowledge → content/knowledge}/core/coding-conventions.md +0 -0
- /package/{knowledge → content/knowledge}/core/database-design.md +0 -0
- /package/{knowledge → content/knowledge}/core/design-system-tokens.md +0 -0
- /package/{knowledge → content/knowledge}/core/dev-environment.md +0 -0
- /package/{knowledge → content/knowledge}/core/domain-modeling.md +0 -0
- /package/{knowledge → content/knowledge}/core/eval-craft.md +0 -0
- /package/{knowledge → content/knowledge}/core/git-workflow-patterns.md +0 -0
- /package/{knowledge → content/knowledge}/core/multi-model-review-dispatch.md +0 -0
- /package/{knowledge → content/knowledge}/core/operations-runbook.md +0 -0
- /package/{knowledge → content/knowledge}/core/project-structure-patterns.md +0 -0
- /package/{knowledge → content/knowledge}/core/review-step-template.md +0 -0
- /package/{knowledge → content/knowledge}/core/security-best-practices.md +0 -0
- /package/{knowledge → content/knowledge}/core/system-architecture.md +0 -0
- /package/{knowledge → content/knowledge}/core/task-decomposition.md +0 -0
- /package/{knowledge → content/knowledge}/core/task-tracking.md +0 -0
- /package/{knowledge → content/knowledge}/core/tech-stack-selection.md +0 -0
- /package/{knowledge → content/knowledge}/core/testing-strategy.md +0 -0
- /package/{knowledge → content/knowledge}/core/user-stories.md +0 -0
- /package/{knowledge → content/knowledge}/core/user-story-innovation.md +0 -0
- /package/{knowledge → content/knowledge}/core/ux-specification.md +0 -0
- /package/{knowledge → content/knowledge}/execution/task-claiming-strategy.md +0 -0
- /package/{knowledge → content/knowledge}/execution/tdd-execution-loop.md +0 -0
- /package/{knowledge → content/knowledge}/execution/worktree-management.md +0 -0
- /package/{knowledge → content/knowledge}/finalization/apply-fixes-and-freeze.md +0 -0
- /package/{knowledge → content/knowledge}/finalization/developer-onboarding.md +0 -0
- /package/{knowledge → content/knowledge}/finalization/implementation-playbook.md +0 -0
- /package/{knowledge → content/knowledge}/product/gap-analysis.md +0 -0
- /package/{knowledge → content/knowledge}/product/prd-craft.md +0 -0
- /package/{knowledge → content/knowledge}/product/prd-innovation.md +0 -0
- /package/{knowledge → content/knowledge}/product/vision-craft.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-adr.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-api-design.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-database-design.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-domain-modeling.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-implementation-tasks.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-methodology.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-operations.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-prd.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-security.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-system-architecture.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-testing-strategy.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-user-stories.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-ux-specification.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-vision.md +0 -0
- /package/{knowledge → content/knowledge}/tools/release-management.md +0 -0
- /package/{knowledge → content/knowledge}/tools/session-analysis.md +0 -0
- /package/{knowledge → content/knowledge}/tools/version-strategy.md +0 -0
- /package/{knowledge → content/knowledge}/validation/critical-path-analysis.md +0 -0
- /package/{knowledge → content/knowledge}/validation/cross-phase-consistency.md +0 -0
- /package/{knowledge → content/knowledge}/validation/decision-completeness.md +0 -0
- /package/{knowledge → content/knowledge}/validation/dependency-validation.md +0 -0
- /package/{knowledge → content/knowledge}/validation/implementability-review.md +0 -0
- /package/{knowledge → content/knowledge}/validation/scope-management.md +0 -0
- /package/{knowledge → content/knowledge}/validation/traceability.md +0 -0
- /package/{methodology → content/methodology}/README.md +0 -0
- /package/{methodology → content/methodology}/custom-defaults.yml +0 -0
- /package/{methodology → content/methodology}/deep.yml +0 -0
- /package/{methodology → content/methodology}/mvp.yml +0 -0
- /package/{pipeline → content/pipeline}/architecture/review-architecture.md +0 -0
- /package/{pipeline → content/pipeline}/architecture/system-architecture.md +0 -0
- /package/{pipeline → content/pipeline}/build/multi-agent-resume.md +0 -0
- /package/{pipeline → content/pipeline}/build/multi-agent-start.md +0 -0
- /package/{pipeline → content/pipeline}/build/new-enhancement.md +0 -0
- /package/{pipeline → content/pipeline}/build/quick-task.md +0 -0
- /package/{pipeline → content/pipeline}/build/single-agent-resume.md +0 -0
- /package/{pipeline → content/pipeline}/build/single-agent-start.md +0 -0
- /package/{pipeline → content/pipeline}/consolidation/claude-md-optimization.md +0 -0
- /package/{pipeline → content/pipeline}/decisions/adrs.md +0 -0
- /package/{pipeline → content/pipeline}/environment/ai-memory-setup.md +0 -0
- /package/{pipeline → content/pipeline}/environment/automated-pr-review.md +0 -0
- /package/{pipeline → content/pipeline}/environment/dev-env-setup.md +0 -0
- /package/{pipeline → content/pipeline}/environment/git-workflow.md +0 -0
- /package/{pipeline → content/pipeline}/finalization/apply-fixes-and-freeze.md +0 -0
- /package/{pipeline → content/pipeline}/finalization/developer-onboarding-guide.md +0 -0
- /package/{pipeline → content/pipeline}/foundation/beads.md +0 -0
- /package/{pipeline → content/pipeline}/foundation/coding-standards.md +0 -0
- /package/{pipeline → content/pipeline}/foundation/project-structure.md +0 -0
- /package/{pipeline → content/pipeline}/foundation/tdd.md +0 -0
- /package/{pipeline → content/pipeline}/integration/add-e2e-testing.md +0 -0
- /package/{pipeline → content/pipeline}/modeling/domain-modeling.md +0 -0
- /package/{pipeline → content/pipeline}/parity/platform-parity-review.md +0 -0
- /package/{pipeline → content/pipeline}/planning/implementation-plan.md +0 -0
- /package/{pipeline → content/pipeline}/pre/create-prd.md +0 -0
- /package/{pipeline → content/pipeline}/pre/innovate-prd.md +0 -0
- /package/{pipeline → content/pipeline}/pre/innovate-user-stories.md +0 -0
- /package/{pipeline → content/pipeline}/pre/review-prd.md +0 -0
- /package/{pipeline → content/pipeline}/pre/review-user-stories.md +0 -0
- /package/{pipeline → content/pipeline}/pre/user-stories.md +0 -0
- /package/{pipeline → content/pipeline}/quality/create-evals.md +0 -0
- /package/{pipeline → content/pipeline}/quality/operations.md +0 -0
- /package/{pipeline → content/pipeline}/quality/review-operations.md +0 -0
- /package/{pipeline → content/pipeline}/quality/review-security.md +0 -0
- /package/{pipeline → content/pipeline}/quality/security.md +0 -0
- /package/{pipeline → content/pipeline}/specification/api-contracts.md +0 -0
- /package/{pipeline → content/pipeline}/specification/database-schema.md +0 -0
- /package/{pipeline → content/pipeline}/specification/review-api.md +0 -0
- /package/{pipeline → content/pipeline}/specification/review-database.md +0 -0
- /package/{pipeline → content/pipeline}/specification/review-ux.md +0 -0
- /package/{pipeline → content/pipeline}/specification/ux-spec.md +0 -0
- /package/{pipeline → content/pipeline}/validation/critical-path-walkthrough.md +0 -0
- /package/{pipeline → content/pipeline}/validation/cross-phase-consistency.md +0 -0
- /package/{pipeline → content/pipeline}/validation/decision-completeness.md +0 -0
- /package/{pipeline → content/pipeline}/validation/dependency-graph-validation.md +0 -0
- /package/{pipeline → content/pipeline}/validation/implementability-dry-run.md +0 -0
- /package/{pipeline → content/pipeline}/validation/scope-creep-check.md +0 -0
- /package/{pipeline → content/pipeline}/validation/traceability-matrix.md +0 -0
- /package/{pipeline → content/pipeline}/vision/create-vision.md +0 -0
- /package/{pipeline → content/pipeline}/vision/review-vision.md +0 -0
- /package/{tools → content/tools}/dashboard.md +0 -0
- /package/{tools → content/tools}/release.md +0 -0
- /package/{tools → content/tools}/review-code.md +0 -0
- /package/{tools → content/tools}/review-pr.md +0 -0
- /package/{tools → content/tools}/session-analyzer.md +0 -0
- /package/{tools → content/tools}/update.md +0 -0
- /package/{tools → content/tools}/version-bump.md +0 -0
- /package/{tools → content/tools}/version.md +0 -0
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: test-skeleton-generation
|
|
3
|
+
description: Patterns for translating acceptance criteria into framework-specific test skeleton files
|
|
4
|
+
topics: [testing, test-generation, acceptance-criteria, tdd, test-skeletons]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Test Skeleton Generation
|
|
8
|
+
|
|
9
|
+
This knowledge covers the translation of user story acceptance criteria (Given/When/Then format) into framework-specific test skeleton files. Skeletons are pending/skipped test stubs — they document expected behavior and provide a TDD starting point, but contain no implementation logic.
|
|
10
|
+
|
|
11
|
+
This is distinct from testing strategy (`testing-strategy`), which covers overall test architecture, and user stories (`user-stories`), which covers story authoring. This knowledge bridges the two: given well-written ACs and a chosen test framework, produce a complete set of traceable test skeletons.
|
|
12
|
+
|
|
13
|
+
## Summary
|
|
14
|
+
|
|
15
|
+
- **Purpose**: Translate user story acceptance criteria (Given/When/Then) into pending test cases in the project's test framework, one test per AC.
|
|
16
|
+
- **Output format**: One test file per story (or per epic), with each AC as a pending/skipped test case that documents the expected behavior without implementing it.
|
|
17
|
+
- **Framework mapping**: `describe` = story, `it`/`test` = AC criterion. For frameworks without pending support, use `it.skip` or `@pytest.mark.skip` with the AC text as the test name.
|
|
18
|
+
- **Layer assignment**: Each test skeleton is tagged with its execution layer (unit, integration, e2e) based on what the AC tests — data validation = unit, API flow = integration, user workflow = e2e.
|
|
19
|
+
- **ID tracing**: Every test name includes the story ID and criterion ID (e.g., `US-3.2: Given a logged-in user...`) so implementation agents can trace tests back to requirements.
|
|
20
|
+
- **Story-tests-map**: A traceability matrix (`docs/story-tests-map.md`) maps every story to its test files, every AC to its test case, and assigns execution layers.
|
|
21
|
+
|
|
22
|
+
## Deep Guidance
|
|
23
|
+
|
|
24
|
+
### Scope Boundary
|
|
25
|
+
|
|
26
|
+
**In scope:**
|
|
27
|
+
- Translating GWT acceptance criteria into pending test stubs
|
|
28
|
+
- Assigning test execution layers (unit, integration, e2e)
|
|
29
|
+
- Creating the story-tests-map traceability matrix
|
|
30
|
+
- Framework-specific skeleton patterns (vitest, pytest, bats, Go, etc.)
|
|
31
|
+
- Test file naming and directory conventions
|
|
32
|
+
|
|
33
|
+
**Out of scope:**
|
|
34
|
+
- Implementing test logic (skeletons are stubs only)
|
|
35
|
+
- Choosing the test framework (read `docs/tech-stack.md`)
|
|
36
|
+
- Writing acceptance criteria (that's the user stories step)
|
|
37
|
+
- Test infrastructure setup (that's the TDD standards step)
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
### Translation Rules
|
|
42
|
+
|
|
43
|
+
**Given/When/Then to Test Structure:**
|
|
44
|
+
|
|
45
|
+
The GWT format maps directly to the Arrange/Act/Assert pattern used in every test framework:
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
Given [precondition] -> test setup / arrange
|
|
49
|
+
When [action] -> act / trigger
|
|
50
|
+
Then [expected outcome] -> assert / verify
|
|
51
|
+
And [additional outcome] -> additional assertion
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Multiple `Given` clauses become multiple setup steps. Multiple `Then` clauses become multiple assertions in the same test. `And` following a `Given` is another precondition; `And` following a `Then` is another assertion.
|
|
55
|
+
|
|
56
|
+
**Compound ACs:**
|
|
57
|
+
|
|
58
|
+
When an AC has multiple `When` clauses, each `When` is a separate test case. The common `Given` preconditions are shared setup (a `beforeEach` or fixture), and each `When/Then` pair becomes its own test.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
### Framework-Specific Patterns
|
|
63
|
+
|
|
64
|
+
#### vitest / jest (TypeScript/JavaScript)
|
|
65
|
+
|
|
66
|
+
```typescript
|
|
67
|
+
import { describe, it } from 'vitest';
|
|
68
|
+
|
|
69
|
+
describe('US-3: User can reset their password', () => {
|
|
70
|
+
it.skip('AC-3.1: Given a registered user, when they request a password reset, then a reset email is sent', () => {
|
|
71
|
+
// Arrange: registered user exists
|
|
72
|
+
// Act: request password reset
|
|
73
|
+
// Assert: reset email sent
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
it.skip('AC-3.2: Given a valid reset token, when the user submits a new password, then the password is updated', () => {
|
|
77
|
+
// Arrange: valid reset token exists
|
|
78
|
+
// Act: submit new password
|
|
79
|
+
// Assert: password updated in database
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
it.skip('AC-3.3: Given an expired reset token, when the user submits a new password, then an error is shown', () => {
|
|
83
|
+
// Arrange: expired reset token
|
|
84
|
+
// Act: submit new password
|
|
85
|
+
// Assert: error message displayed, password unchanged
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
#### pytest (Python)
|
|
91
|
+
|
|
92
|
+
```python
|
|
93
|
+
import pytest
|
|
94
|
+
|
|
95
|
+
class TestUS3UserCanResetPassword:
|
|
96
|
+
"""US-3: User can reset their password"""
|
|
97
|
+
|
|
98
|
+
@pytest.mark.skip(reason="skeleton")
|
|
99
|
+
def test_ac_3_1_given_registered_user_when_request_reset_then_email_sent(self):
|
|
100
|
+
"""AC-3.1: Given a registered user, when they request a password reset, then a reset email is sent"""
|
|
101
|
+
# Arrange: registered user exists
|
|
102
|
+
# Act: request password reset
|
|
103
|
+
# Assert: reset email sent
|
|
104
|
+
pass
|
|
105
|
+
|
|
106
|
+
@pytest.mark.skip(reason="skeleton")
|
|
107
|
+
def test_ac_3_2_given_valid_token_when_submit_password_then_updated(self):
|
|
108
|
+
"""AC-3.2: Given a valid reset token, when the user submits a new password, then the password is updated"""
|
|
109
|
+
# Arrange: valid reset token exists
|
|
110
|
+
# Act: submit new password
|
|
111
|
+
# Assert: password updated in database
|
|
112
|
+
pass
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
#### bats (Bash)
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
# US-3: User can reset their password
|
|
119
|
+
|
|
120
|
+
@test "AC-3.1: Given a registered user, when they request a password reset, then a reset email is sent" {
|
|
121
|
+
skip "skeleton"
|
|
122
|
+
# Arrange: registered user exists
|
|
123
|
+
# Act: request password reset
|
|
124
|
+
# Assert: reset email sent
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
@test "AC-3.2: Given a valid reset token, when the user submits a new password, then the password is updated" {
|
|
128
|
+
skip "skeleton"
|
|
129
|
+
# Arrange: valid reset token exists
|
|
130
|
+
# Act: submit new password
|
|
131
|
+
# Assert: password updated in database
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
#### Go testing
|
|
136
|
+
|
|
137
|
+
```go
|
|
138
|
+
func TestUS3_UserCanResetPassword(t *testing.T) {
|
|
139
|
+
t.Run("AC-3.1: Given a registered user, when they request a password reset, then a reset email is sent", func(t *testing.T) {
|
|
140
|
+
t.Skip("skeleton")
|
|
141
|
+
// Arrange: registered user exists
|
|
142
|
+
// Act: request password reset
|
|
143
|
+
// Assert: reset email sent
|
|
144
|
+
})
|
|
145
|
+
|
|
146
|
+
t.Run("AC-3.2: Given a valid reset token, when the user submits a new password, then the password is updated", func(t *testing.T) {
|
|
147
|
+
t.Skip("skeleton")
|
|
148
|
+
// Arrange: valid reset token exists
|
|
149
|
+
// Act: submit new password
|
|
150
|
+
// Assert: password updated in database
|
|
151
|
+
})
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### Framework-Specific Summary Table
|
|
156
|
+
|
|
157
|
+
| Framework | Story Group | Test Case | Pending Marker |
|
|
158
|
+
|-----------|------------|-----------|----------------|
|
|
159
|
+
| vitest/jest | `describe('US-3: Story title')` | `it('AC-3.1: Given X when Y then Z')` | `it.skip(...)` or `it.todo(...)` |
|
|
160
|
+
| pytest | `class TestUS3StoryTitle:` | `def test_ac_3_1_given_x_when_y_then_z(self):` | `@pytest.mark.skip(reason='skeleton')` |
|
|
161
|
+
| bats | comment block with story ID | `@test "AC-3.1: Given X when Y then Z"` | `skip "skeleton"` |
|
|
162
|
+
| Go testing | `func TestUS3_StoryTitle(t *testing.T)` | `t.Run("AC-3.1: Given X when Y then Z", ...)` | `t.Skip("skeleton")` |
|
|
163
|
+
| RSpec | `describe 'US-3: Story title'` | `it 'AC-3.1: ...'` | `xit 'AC-3.1: ...'` or `pending` |
|
|
164
|
+
| JUnit 5 | `@Nested class US3_StoryTitle` | `@Test @Disabled("skeleton")` | `@Disabled("skeleton")` |
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
### Layer Assignment Heuristic
|
|
169
|
+
|
|
170
|
+
Each test skeleton is tagged with its execution layer. This determines where the test runs in CI and what infrastructure it requires.
|
|
171
|
+
|
|
172
|
+
| AC Pattern | Layer | Example |
|
|
173
|
+
|------------|-------|---------|
|
|
174
|
+
| Validates input/output of a single function | Unit | "Then the email format is validated" |
|
|
175
|
+
| Tests interaction between components | Integration | "Then the order is saved to the database" |
|
|
176
|
+
| Tests a user-visible workflow end-to-end | E2E | "Then the user sees a confirmation page" |
|
|
177
|
+
| Tests error handling at a boundary | Integration | "Then a 400 error is returned with details" |
|
|
178
|
+
| Tests a non-functional requirement | Varies | Perf = benchmark, security = integration |
|
|
179
|
+
|
|
180
|
+
#### Layer Decision Rules
|
|
181
|
+
|
|
182
|
+
When the layer is ambiguous, apply these rules in order:
|
|
183
|
+
|
|
184
|
+
1. **Does the AC mention a UI element or user-visible state?** → E2E
|
|
185
|
+
2. **Does the AC cross a service or component boundary?** → Integration
|
|
186
|
+
3. **Does the AC test a single function's behavior with known inputs/outputs?** → Unit
|
|
187
|
+
4. **Does the AC test data persistence or retrieval?** → Integration
|
|
188
|
+
5. **Does the AC test an external service interaction?** → Integration (with mocks)
|
|
189
|
+
|
|
190
|
+
#### Layer Tags in Test Files
|
|
191
|
+
|
|
192
|
+
Add layer tags as comments or test metadata so CI can filter by layer:
|
|
193
|
+
|
|
194
|
+
```typescript
|
|
195
|
+
// @layer: integration
|
|
196
|
+
describe('US-3: User can reset their password', () => { ... });
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
```python
|
|
200
|
+
@pytest.mark.integration
|
|
201
|
+
class TestUS3UserCanResetPassword:
|
|
202
|
+
...
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
### Test File Naming and Organization
|
|
208
|
+
|
|
209
|
+
#### File Naming Convention
|
|
210
|
+
|
|
211
|
+
Test files follow the pattern: `{story-id}-{slug}.test.{ext}`
|
|
212
|
+
|
|
213
|
+
Examples:
|
|
214
|
+
- `us-1-user-registration.test.ts`
|
|
215
|
+
- `us-2-password-reset.test.ts`
|
|
216
|
+
- `us-3-profile-management.test.ts`
|
|
217
|
+
|
|
218
|
+
The story ID prefix ensures files sort in story order. The slug provides human-readable context.
|
|
219
|
+
|
|
220
|
+
#### Directory Structure
|
|
221
|
+
|
|
222
|
+
Test skeletons go in the acceptance test directory defined in `docs/project-structure.md`. If no convention exists, default to:
|
|
223
|
+
|
|
224
|
+
```
|
|
225
|
+
tests/
|
|
226
|
+
acceptance/
|
|
227
|
+
us-1-user-registration.test.ts
|
|
228
|
+
us-2-password-reset.test.ts
|
|
229
|
+
us-3-profile-management.test.ts
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
For projects that split tests by layer:
|
|
233
|
+
|
|
234
|
+
```
|
|
235
|
+
tests/
|
|
236
|
+
unit/
|
|
237
|
+
us-1-user-registration.unit.test.ts
|
|
238
|
+
integration/
|
|
239
|
+
us-1-user-registration.integration.test.ts
|
|
240
|
+
e2e/
|
|
241
|
+
us-1-user-registration.e2e.test.ts
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
### Story-Tests-Map Format
|
|
247
|
+
|
|
248
|
+
The `docs/story-tests-map.md` output maps every story to its test files. This is the primary traceability artifact.
|
|
249
|
+
|
|
250
|
+
```markdown
|
|
251
|
+
# Story-Tests Map
|
|
252
|
+
|
|
253
|
+
## Coverage Summary
|
|
254
|
+
|
|
255
|
+
| Metric | Value |
|
|
256
|
+
|--------|-------|
|
|
257
|
+
| Total stories | 12 |
|
|
258
|
+
| Stories with tests | 12 |
|
|
259
|
+
| Total ACs | 47 |
|
|
260
|
+
| ACs with test cases | 47 |
|
|
261
|
+
| Coverage | 100% |
|
|
262
|
+
|
|
263
|
+
## Traceability Matrix
|
|
264
|
+
|
|
265
|
+
| Story ID | Story Title | Test File | Layer | AC Count |
|
|
266
|
+
|----------|------------|-----------|-------|----------|
|
|
267
|
+
| US-1 | User registration | tests/acceptance/us-1-registration.test.ts | integration | 4 |
|
|
268
|
+
| US-2 | Password reset | tests/acceptance/us-2-password-reset.test.ts | e2e | 3 |
|
|
269
|
+
| US-3 | Profile management | tests/acceptance/us-3-profile.test.ts | unit | 5 |
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
The map must be updated whenever stories are added, removed, or have ACs changed. In update mode, new rows are appended and the coverage summary is recalculated.
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
### Handling Edge Cases
|
|
277
|
+
|
|
278
|
+
#### Stories Without GWT Format
|
|
279
|
+
|
|
280
|
+
If acceptance criteria are not in Given/When/Then format, convert them:
|
|
281
|
+
- "Users can search by keyword" → "Given a user on the search page, when they enter a keyword and submit, then matching results are displayed"
|
|
282
|
+
- Preserve the original AC text as a comment in the test case
|
|
283
|
+
|
|
284
|
+
#### Stories With Many ACs
|
|
285
|
+
|
|
286
|
+
Stories with more than 10 ACs may indicate the story is too large. Flag this in the story-tests-map but generate all skeletons regardless — the story decomposition is a separate concern.
|
|
287
|
+
|
|
288
|
+
#### Shared Preconditions
|
|
289
|
+
|
|
290
|
+
When multiple ACs share the same `Given` precondition, use the framework's shared setup:
|
|
291
|
+
- vitest/jest: `beforeEach` or `beforeAll`
|
|
292
|
+
- pytest: `@pytest.fixture`
|
|
293
|
+
- bats: `setup()`
|
|
294
|
+
- Go: helper function called at the start of each subtest
|
|
295
|
+
|
|
296
|
+
#### Negative Test Cases
|
|
297
|
+
|
|
298
|
+
For deep methodology, generate negative test cases for each happy-path AC:
|
|
299
|
+
- "Given X, when Y, then Z" → also generate "Given NOT X, when Y, then error"
|
|
300
|
+
- Negative cases get their own AC IDs: `AC-3.1-NEG`
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
304
|
+
### Anti-Patterns
|
|
305
|
+
|
|
306
|
+
- Don't implement test logic — skeletons are pending/skipped stubs only
|
|
307
|
+
- Don't combine multiple ACs into one test — one AC = one test case
|
|
308
|
+
- Don't omit the story/criterion ID from test names — traceability is the point
|
|
309
|
+
- Don't guess the test framework — read `docs/tech-stack.md` and `docs/tdd-standards.md`
|
|
310
|
+
- Don't create test files outside the project's test directory convention
|
|
311
|
+
- Don't add assertion logic to skeletons — that's the implementation agent's job
|
|
312
|
+
- Don't generate skeletons for non-functional requirements unless they have explicit ACs
|
|
313
|
+
- Don't skip the story-tests-map — it's the verification artifact that proves coverage
|
|
@@ -42,7 +42,7 @@ Read these documents in order before proposing any changes:
|
|
|
42
42
|
1. **Product vision** (`docs/vision.md` or equivalent) — understand the project's purpose and direction
|
|
43
43
|
2. **PRD** (`docs/prd.md`) — understand existing requirements and constraints
|
|
44
44
|
3. **User stories** (`docs/user-stories.md`) — understand who uses the system and how
|
|
45
|
-
4. **Architecture** (`docs/architecture.md` or ADRs) — understand the technical structure
|
|
45
|
+
4. **Architecture** (`docs/system-architecture.md` or ADRs) — understand the technical structure
|
|
46
46
|
5. **Coding standards** (`docs/coding-standards.md`) — understand conventions you must follow
|
|
47
47
|
6. **TDD standards** (`docs/tdd-standards.md`) — understand testing expectations
|
|
48
48
|
7. **Project structure** (`docs/project-structure.md`) — understand where code lives
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: vision-innovation
|
|
3
|
+
description: Techniques for discovering strategic innovation opportunities in product vision
|
|
4
|
+
topics: [innovation, vision, strategy, competitive-positioning, ecosystem, market-opportunities]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Vision Innovation
|
|
8
|
+
|
|
9
|
+
This knowledge covers strategic-level innovation — discovering market positioning opportunities, ecosystem plays, contrarian bets, and AI-native rethinking that belong in the product vision. It operates at the strategic scope level: how should this product be positioned in the market?
|
|
10
|
+
|
|
11
|
+
This is distinct from PRD innovation (`prd-innovation`), which covers feature-level gaps, and user story innovation (`user-story-innovation`), which covers UX-level enhancements. If an idea is about a specific feature or UX improvement, it belongs in those respective knowledge entries, not here.
|
|
12
|
+
|
|
13
|
+
## Summary
|
|
14
|
+
|
|
15
|
+
- **Scope**: Strategic-level innovation (market positioning, ecosystem plays, contrarian bets, AI-native capabilities). Feature-level innovation belongs in PRD innovation (`prd-innovation`); UX-level improvements belong in user story innovation (`user-story-innovation`).
|
|
16
|
+
- **Adjacent market discovery**: Look for underserved segments adjacent to the primary target — same problem in different industries, same users with upstream/downstream needs, or existing users with unmet complementary needs.
|
|
17
|
+
- **Ecosystem thinking**: Identify integration points, platform plays, and data network effects — where does the product become more valuable as usage grows or connections multiply?
|
|
18
|
+
- **Contrarian positioning**: Challenge assumptions the market takes for granted — what would a solution look like if you ignored the dominant UX pattern, pricing model, or distribution channel?
|
|
19
|
+
- **AI-native opportunities**: Capabilities only possible with AI (real-time personalization, natural language interfaces, predictive workflows, automated quality feedback) that would be impractical to build conventionally.
|
|
20
|
+
- **Evaluation framework**: Strategic fit x Defensibility x Timing. Must-have for vision = high strategic fit with defensibility, achievable in v1 timeline.
|
|
21
|
+
|
|
22
|
+
## Deep Guidance
|
|
23
|
+
|
|
24
|
+
### Scope Boundary
|
|
25
|
+
|
|
26
|
+
**In scope:**
|
|
27
|
+
- Market positioning and competitive strategy
|
|
28
|
+
- Adjacent market and segment identification
|
|
29
|
+
- Ecosystem and platform plays
|
|
30
|
+
- Network effect opportunities
|
|
31
|
+
- Contrarian bets and assumption challenges
|
|
32
|
+
- AI-native strategic rethinking of the product concept
|
|
33
|
+
- Business model innovation (pricing, distribution, partnerships)
|
|
34
|
+
|
|
35
|
+
**Out of scope:**
|
|
36
|
+
- Specific feature ideas (belongs in PRD innovation)
|
|
37
|
+
- UX improvements to existing features (belongs in user story innovation)
|
|
38
|
+
- Implementation details (belongs in ADRs and architecture docs)
|
|
39
|
+
- Operational concerns (belongs in operations planning)
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
### Strategic Innovation Framework
|
|
44
|
+
|
|
45
|
+
Apply these lenses sequentially. Each builds on the previous:
|
|
46
|
+
|
|
47
|
+
**1. Market Landscape Scan**
|
|
48
|
+
- Who are the 3-5 closest competitors? What do they all assume?
|
|
49
|
+
- Which customer segments are poorly served by existing solutions?
|
|
50
|
+
- What friction points exist in the current adoption/onboarding flow industry-wide?
|
|
51
|
+
- Are there geographic, regulatory, or industry verticals where existing solutions don't work?
|
|
52
|
+
- What recent market shifts (technology, regulation, cultural) create new openings?
|
|
53
|
+
|
|
54
|
+
**2. Ecosystem & Platform Analysis**
|
|
55
|
+
- What data does this product generate that others would find valuable?
|
|
56
|
+
- What integrations would make this product "sticky" (hard to leave)?
|
|
57
|
+
- Could this product become a platform that others build on?
|
|
58
|
+
- What network effects are possible (direct: more users = more value; indirect: more content/data = better product)?
|
|
59
|
+
- Where could partnerships create mutual value that neither party could achieve alone?
|
|
60
|
+
|
|
61
|
+
**3. Contrarian & Blue Ocean Opportunities**
|
|
62
|
+
- What would the product look like if it cost 10x less? 10x more?
|
|
63
|
+
- What if the primary interface were voice? Chat? No interface at all?
|
|
64
|
+
- What if the product solved the problem *before* the user knew they had it?
|
|
65
|
+
- Which "table stakes" features could be dropped entirely for a specific segment?
|
|
66
|
+
- What assumptions about the target user are untested?
|
|
67
|
+
|
|
68
|
+
**4. AI-Native Capabilities**
|
|
69
|
+
- Where can the product anticipate user intent rather than waiting for commands?
|
|
70
|
+
- What manual steps could be eliminated with LLM-powered analysis?
|
|
71
|
+
- Where can the product learn from usage patterns without explicit configuration?
|
|
72
|
+
- What would a "copilot" experience look like for this domain?
|
|
73
|
+
- Which competitive advantages become possible only with AI at the core?
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
### Adjacent Market Discovery
|
|
78
|
+
|
|
79
|
+
Adjacent markets are the highest-value innovation targets because they leverage existing product capabilities for new audiences.
|
|
80
|
+
|
|
81
|
+
#### Discovery Techniques
|
|
82
|
+
|
|
83
|
+
**Same problem, different industry:**
|
|
84
|
+
The product solves a problem for industry A. Which other industries have the same problem with slightly different constraints? Example: project management for software teams → project management for construction, legal, or healthcare teams.
|
|
85
|
+
|
|
86
|
+
**Same users, upstream/downstream needs:**
|
|
87
|
+
The product's target users have needs before and after they use the product. What happens before they arrive? What do they do with the output? Example: a reporting tool's users need data collection upstream and presentation downstream.
|
|
88
|
+
|
|
89
|
+
**Existing users, unmet complementary needs:**
|
|
90
|
+
What do current target users also struggle with that the product could address? Example: a CRM user also needs contract management, scheduling, and billing.
|
|
91
|
+
|
|
92
|
+
#### Evaluation
|
|
93
|
+
|
|
94
|
+
For each adjacent market:
|
|
95
|
+
- Size: Is the adjacent market large enough to justify the positioning shift?
|
|
96
|
+
- Overlap: How much of the existing product applies without modification?
|
|
97
|
+
- Competition: Is the adjacent market underserved or already crowded?
|
|
98
|
+
- Brand stretch: Can the product credibly serve both the original and adjacent markets?
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
### Ecosystem & Platform Thinking
|
|
103
|
+
|
|
104
|
+
Products that become platforms or ecosystem hubs are harder to displace and grow more valuable over time.
|
|
105
|
+
|
|
106
|
+
#### Integration Strategy
|
|
107
|
+
|
|
108
|
+
Identify the top 5-10 tools in the target user's workflow. For each:
|
|
109
|
+
- Does integrating with this tool make the product more valuable?
|
|
110
|
+
- Does the integration create switching costs (data flows that are hard to replicate)?
|
|
111
|
+
- Is the integration bidirectional (data flows both ways)?
|
|
112
|
+
|
|
113
|
+
#### Data Network Effects
|
|
114
|
+
|
|
115
|
+
The most defensible products generate data that makes the product better:
|
|
116
|
+
- Usage data that improves recommendations or predictions
|
|
117
|
+
- Aggregated data that provides benchmarks or insights
|
|
118
|
+
- Content created by users that attracts other users
|
|
119
|
+
- Training data that improves AI capabilities over time
|
|
120
|
+
|
|
121
|
+
#### Platform Potential
|
|
122
|
+
|
|
123
|
+
Could third parties build on this product? Signs of platform potential:
|
|
124
|
+
- The product has a natural extension point (plugins, templates, integrations)
|
|
125
|
+
- Users want to customize the product beyond what's built-in
|
|
126
|
+
- The product generates data or output that others want to consume
|
|
127
|
+
- There's a community of practitioners who would build for peers
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
### Contrarian Positioning
|
|
132
|
+
|
|
133
|
+
The most differentiated products challenge at least one industry assumption. Contrarian positioning creates separation from competitors who all look the same.
|
|
134
|
+
|
|
135
|
+
#### Assumption Mapping
|
|
136
|
+
|
|
137
|
+
List the 5-10 things "everyone knows" about the product category:
|
|
138
|
+
- The standard pricing model (subscription, per-seat, usage-based)
|
|
139
|
+
- The standard distribution channel (direct sales, self-serve, marketplace)
|
|
140
|
+
- The standard UX pattern (dashboard, wizard, chat, forms)
|
|
141
|
+
- The standard feature set (what every competitor has)
|
|
142
|
+
- The standard target user (who everyone is selling to)
|
|
143
|
+
|
|
144
|
+
For each assumption, ask: "What if the opposite were true?" Most answers will be absurd. One or two will be genuinely interesting.
|
|
145
|
+
|
|
146
|
+
#### Blue Ocean Signals
|
|
147
|
+
|
|
148
|
+
A blue ocean opportunity exists when:
|
|
149
|
+
- Competitors are converging on identical positioning
|
|
150
|
+
- Users are forced to choose based on price because products are indistinguishable
|
|
151
|
+
- A significant user segment is overserved (paying for features they don't use)
|
|
152
|
+
- A significant user segment is underserved (can't afford or can't find a solution)
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
### AI-Native Rethinking
|
|
157
|
+
|
|
158
|
+
If this product were conceived today with AI capabilities assumed from day one, what changes fundamentally?
|
|
159
|
+
|
|
160
|
+
#### Categories of AI-Native Innovation
|
|
161
|
+
|
|
162
|
+
**Anticipatory experiences:**
|
|
163
|
+
The product acts before the user asks. Instead of "search for X," the product surfaces X when the user is likely to need it. This requires understanding user intent from context.
|
|
164
|
+
|
|
165
|
+
**Natural language as primary interface:**
|
|
166
|
+
Instead of forms, menus, and buttons, the user describes what they want in natural language. The product interprets intent, executes actions, and confirms results. This isn't a chatbot bolted on — it's a fundamentally different interaction model.
|
|
167
|
+
|
|
168
|
+
**Automated quality and feedback:**
|
|
169
|
+
The product continuously evaluates its own output and the user's work, providing real-time feedback, suggestions, and corrections without being asked.
|
|
170
|
+
|
|
171
|
+
**Personalization without configuration:**
|
|
172
|
+
The product adapts to each user's patterns, preferences, and context without requiring explicit settings or preferences. The more the user uses it, the better it gets.
|
|
173
|
+
|
|
174
|
+
#### AI-Native vs. AI-Augmented
|
|
175
|
+
|
|
176
|
+
- **AI-native**: The product could not exist without AI. The core value proposition depends on AI capabilities.
|
|
177
|
+
- **AI-augmented**: The product exists without AI, but AI makes it better. AI is a feature, not the foundation.
|
|
178
|
+
|
|
179
|
+
Vision innovation should prioritize AI-native opportunities over AI-augmented ones. AI-augmented features are better suited for PRD innovation.
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
### Evaluation Criteria
|
|
184
|
+
|
|
185
|
+
For each innovation opportunity, evaluate on four dimensions:
|
|
186
|
+
|
|
187
|
+
#### Strategic Fit
|
|
188
|
+
- Does it reinforce the vision's core thesis?
|
|
189
|
+
- Does it serve the same target users or adjacent ones?
|
|
190
|
+
- Does it align with the stated guiding principles?
|
|
191
|
+
- Would including it make the vision more coherent or less?
|
|
192
|
+
|
|
193
|
+
#### Defensibility
|
|
194
|
+
- Is this hard for competitors to replicate?
|
|
195
|
+
- Does it create switching costs, network effects, or data advantages?
|
|
196
|
+
- Does it require capabilities or relationships that take time to build?
|
|
197
|
+
- Would a well-funded competitor need more than money to catch up?
|
|
198
|
+
|
|
199
|
+
#### Timing
|
|
200
|
+
- Is this a v1 differentiator or a future roadmap item?
|
|
201
|
+
- Are the enabling technologies mature enough to deliver reliably?
|
|
202
|
+
- Is the market ready for this approach, or would it need education?
|
|
203
|
+
- Does this need to be first-mover or can it be fast-follower?
|
|
204
|
+
|
|
205
|
+
#### Feasibility
|
|
206
|
+
- Can current AI capabilities deliver this reliably?
|
|
207
|
+
- Does the team have the expertise to execute this?
|
|
208
|
+
- Are the required data sources and integrations available?
|
|
209
|
+
- What's the minimum viable version of this innovation?
|
|
210
|
+
|
|
211
|
+
### Decision Framework
|
|
212
|
+
|
|
213
|
+
| | High Defensibility | Low Defensibility |
|
|
214
|
+
|---|---|---|
|
|
215
|
+
| **High Strategic Fit** | Must-have for vision | Evaluate timing — good if early-mover |
|
|
216
|
+
| **Low Strategic Fit** | Backlog — may pivot into relevance | Reject — distraction |
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
### Presenting Strategic Innovations
|
|
221
|
+
|
|
222
|
+
Group innovations by dimension (market, ecosystem, contrarian, AI-native) for structured decision-making. For each innovation:
|
|
223
|
+
|
|
224
|
+
1. **What**: The strategic innovation in one sentence
|
|
225
|
+
2. **Why**: Strategic rationale tied to the vision's goals or gaps
|
|
226
|
+
3. **Impact**: How much stronger the product positioning becomes (high / medium / low)
|
|
227
|
+
4. **Defensibility**: How hard this is to replicate (high / medium / low)
|
|
228
|
+
5. **Timing**: v1 differentiator or future roadmap
|
|
229
|
+
6. **Recommendation**: Must-have for vision, backlog, or reject
|
|
230
|
+
|
|
231
|
+
### Example Innovation Finding
|
|
232
|
+
|
|
233
|
+
```markdown
|
|
234
|
+
## Innovation Finding: Ecosystem Data Benchmark Play
|
|
235
|
+
|
|
236
|
+
**Dimension:** Ecosystem & Platform
|
|
237
|
+
**Applies to:** Vision section "Market Positioning"
|
|
238
|
+
|
|
239
|
+
**Current positioning:** The product is a standalone tool for individual teams.
|
|
240
|
+
|
|
241
|
+
**Proposed strategic shift:** Position as an ecosystem hub that aggregates
|
|
242
|
+
anonymized usage data across customers to provide industry benchmarks.
|
|
243
|
+
Individual teams get better by seeing how they compare to peers.
|
|
244
|
+
|
|
245
|
+
**Strategic rationale:** Competitors are standalone tools competing on features.
|
|
246
|
+
An ecosystem play creates a data network effect — each new customer makes the
|
|
247
|
+
benchmarks more valuable for all customers, creating a defensibility moat that
|
|
248
|
+
feature competition cannot replicate.
|
|
249
|
+
|
|
250
|
+
**Impact:** High — transforms positioning from "better tool" to "smarter tool
|
|
251
|
+
that gets better with scale."
|
|
252
|
+
|
|
253
|
+
**Defensibility:** High — requires critical mass of data that a new entrant
|
|
254
|
+
cannot shortcut.
|
|
255
|
+
|
|
256
|
+
**Timing:** v1 foundation, v2+ full realization. v1 needs data collection
|
|
257
|
+
infrastructure and basic benchmarks. Full benchmarking suite is a roadmap item.
|
|
258
|
+
|
|
259
|
+
**Recommendation:** Must-have for vision. Include data collection and basic
|
|
260
|
+
benchmarks in v1 scope. Full benchmark platform is backlog.
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
### Anti-Patterns
|
|
266
|
+
|
|
267
|
+
- Don't innovate on commodity features (auth, billing, CRUD) — these should be standard
|
|
268
|
+
- Don't propose innovations that require the product to be successful first (network effects for a product with zero users need a bootstrap strategy)
|
|
269
|
+
- Don't confuse "technically interesting" with "strategically valuable"
|
|
270
|
+
- Don't ignore the user's stated vision — innovations should extend it, not replace it
|
|
271
|
+
- Don't conflate strategic innovation with feature requests — "add a dashboard" is a feature, "position as the intelligence layer for the industry" is strategic
|
|
272
|
+
- Don't propose more than 5-7 innovations — decision fatigue reduces quality of choices
|
|
273
|
+
- Don't present all innovations as must-haves — honest triage builds trust and produces better decisions
|
|
@@ -44,7 +44,7 @@ Review the whole codebase for systemic concerns:
|
|
|
44
44
|
Codex and Gemini cannot read files directly. Build a context bundle:
|
|
45
45
|
|
|
46
46
|
1. Full file tree (excluding node_modules, .git, dist, build, coverage)
|
|
47
|
-
2. Architecture docs (docs/architecture.md, docs/adrs/*.md if present)
|
|
47
|
+
2. Architecture docs (docs/system-architecture.md, docs/adrs/*.md if present)
|
|
48
48
|
3. Coding standards (docs/coding-standards.md)
|
|
49
49
|
4. Up to 15 strategically selected files:
|
|
50
50
|
- Entry points (main.*, index.*, app.*, server.* at root/src level)
|
|
@@ -5,7 +5,7 @@ summary: "Audits every document that mentions workflow (CLAUDE.md, git-workflow,
|
|
|
5
5
|
phase: "consolidation"
|
|
6
6
|
order: 1120
|
|
7
7
|
dependencies: [claude-md-optimization]
|
|
8
|
-
outputs: [CLAUDE.md, docs/git-workflow.md]
|
|
8
|
+
outputs: [CLAUDE.md, docs/git-workflow.md, docs/coding-standards.md, tasks/lessons.md]
|
|
9
9
|
conditional: null
|
|
10
10
|
reads: [operations]
|
|
11
11
|
knowledge-base: [cross-phase-consistency, claude-md-patterns, git-workflow-patterns]
|
|
@@ -31,7 +31,7 @@ independent review validation.
|
|
|
31
31
|
- docs/reviews/adrs/gemini-review.json (depth 4+, if available) — raw Gemini findings
|
|
32
32
|
|
|
33
33
|
## Quality Criteria
|
|
34
|
-
- (mvp)
|
|
34
|
+
- (mvp) Contradiction check executed with findings documented
|
|
35
35
|
- (mvp) Every finding categorized P0-P3 with specific ADR number, section, and issue. Severity definitions: P0 = Breaks downstream work. P1 = Prevents quality milestone. P2 = Known tech debt. P3 = Polish.
|
|
36
36
|
- (deep) Missing decisions identified and documented
|
|
37
37
|
- (mvp) Contradictions resolved
|
|
@@ -5,7 +5,7 @@ summary: "Creates a visual language — color palette (WCAG-compliant), typograp
|
|
|
5
5
|
phase: "environment"
|
|
6
6
|
order: 320
|
|
7
7
|
dependencies: [dev-env-setup]
|
|
8
|
-
outputs: [docs/design-system.md,
|
|
8
|
+
outputs: [docs/design-system.md, docs/coding-standards.md]
|
|
9
9
|
reads: [create-prd]
|
|
10
10
|
conditional: "if-needed"
|
|
11
11
|
knowledge-base: [design-system-tokens]
|
|
@@ -4,9 +4,9 @@ description: Create the playbook that AI agents follow during implementation
|
|
|
4
4
|
summary: "Writes the playbook agents reference during every coding session — task execution order, which docs to read before each task, the TDD loop to follow, quality gates to pass, and the handoff format between agents."
|
|
5
5
|
phase: "finalization"
|
|
6
6
|
order: 1430
|
|
7
|
-
dependencies: [developer-onboarding-guide]
|
|
7
|
+
dependencies: [developer-onboarding-guide, implementation-plan]
|
|
8
8
|
outputs: [docs/implementation-playbook.md]
|
|
9
|
-
reads: [story-tests, create-evals, implementation-plan, database-schema, api-contracts, ux-spec, design-system, system-architecture, tdd, coding-standards, security, operations, domain-modeling, adrs, create-prd, project-structure]
|
|
9
|
+
reads: [story-tests, create-evals, implementation-plan, database-schema, api-contracts, ux-spec, design-system, system-architecture, tdd, coding-standards, security, operations, domain-modeling, adrs, create-prd, project-structure, git-workflow, user-stories]
|
|
10
10
|
conditional: null
|
|
11
11
|
knowledge-base: [implementation-playbook]
|
|
12
12
|
---
|
|
@@ -41,7 +41,7 @@ about ecosystem maturity, alternatives, and gotchas.
|
|
|
41
41
|
- (mvp) Every choice is a decision, not a menu of options
|
|
42
42
|
- (mvp) Quick Reference section lists every dependency with version
|
|
43
43
|
- (deep) Each technology choice documents AI compatibility assessment (training data availability, convention strength); total direct dependencies counted and justified
|
|
44
|
-
- (depth 4+) Multi-model
|
|
44
|
+
- (depth 4+) Multi-model findings synthesized: Consensus (all models agree), Majority (2+ models agree), or Divergent (models disagree — present to user for decision)
|
|
45
45
|
|
|
46
46
|
## Methodology Scaling
|
|
47
47
|
- **deep**: Comprehensive research with competitive analysis for each category.
|
|
@@ -30,7 +30,7 @@ independent review validation.
|
|
|
30
30
|
- docs/reviews/domain-modeling/gemini-review.json (depth 4+, if available) — raw Gemini findings
|
|
31
31
|
|
|
32
32
|
## Quality Criteria
|
|
33
|
-
- (mvp)
|
|
33
|
+
- (mvp) Consistency check executed with blocking issues documented
|
|
34
34
|
- (mvp) Every finding categorized by severity (P0-P3). Severity definitions: P0 = Breaks downstream work. P1 = Prevents quality milestone. P2 = Known tech debt. P3 = Polish.
|
|
35
35
|
- (mvp) Fix plan created for P0 and P1 findings
|
|
36
36
|
- (mvp) Fixes applied and re-validated
|