cfsa-antigravity 2.19.0 → 2.19.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.
Files changed (200) hide show
  1. package/package.json +1 -1
  2. package/template/.agent/kit-sync.md +3 -3
  3. package/template/.claude/commands/audit-ambiguity-execute.md +6 -0
  4. package/template/.claude/commands/audit-ambiguity-rubrics.md +6 -0
  5. package/template/.claude/commands/audit-ambiguity.md +6 -0
  6. package/template/.claude/commands/bootstrap-agents-fill.md +6 -0
  7. package/template/.claude/commands/bootstrap-agents-provision.md +6 -0
  8. package/template/.claude/commands/bootstrap-agents.md +6 -0
  9. package/template/.claude/commands/create-prd-architecture.md +6 -0
  10. package/template/.claude/commands/create-prd-compile.md +6 -0
  11. package/template/.claude/commands/create-prd-design-system.md +6 -0
  12. package/template/.claude/commands/create-prd-security.md +6 -0
  13. package/template/.claude/commands/create-prd-stack.md +6 -0
  14. package/template/.claude/commands/decompose-architecture-structure.md +6 -0
  15. package/template/.claude/commands/decompose-architecture-validate.md +6 -0
  16. package/template/.claude/commands/evolve-contract.md +6 -0
  17. package/template/.claude/commands/evolve-feature-cascade.md +6 -0
  18. package/template/.claude/commands/evolve-feature-classify.md +6 -0
  19. package/template/.claude/commands/evolve-feature.md +6 -0
  20. package/template/.claude/commands/ideate-discover.md +6 -0
  21. package/template/.claude/commands/ideate-extract.md +6 -0
  22. package/template/.claude/commands/ideate-validate.md +6 -0
  23. package/template/.claude/commands/implement-slice-setup.md +6 -0
  24. package/template/.claude/commands/implement-slice-tdd.md +6 -0
  25. package/template/.claude/commands/plan-phase-preflight.md +6 -0
  26. package/template/.claude/commands/plan-phase-write.md +6 -0
  27. package/template/.claude/commands/propagate-decision-apply.md +6 -0
  28. package/template/.claude/commands/propagate-decision-scan.md +6 -0
  29. package/template/.claude/commands/propagate-decision.md +6 -0
  30. package/template/.claude/commands/remediate-pipeline-assess.md +6 -0
  31. package/template/.claude/commands/remediate-pipeline-execute.md +6 -0
  32. package/template/.claude/commands/remediate-pipeline.md +6 -0
  33. package/template/.claude/commands/remediate-shard-split.md +6 -0
  34. package/template/.claude/commands/resolve-ambiguity.md +6 -0
  35. package/template/.claude/commands/setup-workspace-cicd.md +6 -0
  36. package/template/.claude/commands/setup-workspace-data.md +6 -0
  37. package/template/.claude/commands/setup-workspace-hosting.md +6 -0
  38. package/template/.claude/commands/setup-workspace-scaffold.md +6 -0
  39. package/template/.claude/commands/sync-kit.md +6 -0
  40. package/template/.claude/commands/update-architecture-map.md +6 -0
  41. package/template/.claude/commands/validate-phase-quality.md +6 -0
  42. package/template/.claude/commands/validate-phase-readiness.md +6 -0
  43. package/template/.claude/commands/verify-infrastructure.md +6 -0
  44. package/template/.claude/commands/write-architecture-spec-deepen.md +6 -0
  45. package/template/.claude/commands/write-architecture-spec-design.md +6 -0
  46. package/template/.claude/commands/write-be-spec-classify.md +6 -0
  47. package/template/.claude/commands/write-be-spec-write.md +6 -0
  48. package/template/.claude/commands/write-fe-spec-classify.md +6 -0
  49. package/template/.claude/commands/write-fe-spec-write.md +6 -0
  50. package/template/.claude/skills/accessibility/SKILL.md +522 -0
  51. package/template/.claude/skills/accessibility/references/WCAG.md +162 -0
  52. package/template/.claude/skills/accessibility/references/ia-spec-checklist.md +35 -0
  53. package/template/.claude/skills/adversarial-review/SKILL.md +90 -0
  54. package/template/.claude/skills/antigravity-workflows/SKILL.md +81 -0
  55. package/template/.claude/skills/antigravity-workflows/resources/implementation-playbook.md +36 -0
  56. package/template/.claude/skills/api-design-principles/SKILL.md +169 -0
  57. package/template/.claude/skills/api-design-principles/assets/api-design-checklist.md +155 -0
  58. package/template/.claude/skills/api-design-principles/assets/rest-api-template.py +182 -0
  59. package/template/.claude/skills/api-design-principles/references/graphql-schema-design.md +583 -0
  60. package/template/.claude/skills/api-design-principles/references/rest-best-practices.md +408 -0
  61. package/template/.claude/skills/api-design-principles/resources/implementation-playbook.md +513 -0
  62. package/template/.claude/skills/api-versioning/SKILL.md +166 -0
  63. package/template/.claude/skills/api-versioning/references/typescript.md +157 -0
  64. package/template/.claude/skills/architecture-mapping/SKILL.md +219 -0
  65. package/template/.claude/skills/bootstrap-agents/SKILL.md +258 -0
  66. package/template/.claude/skills/brainstorming/SKILL.md +177 -0
  67. package/template/.claude/skills/brand-guidelines/SKILL.md +44 -0
  68. package/template/.claude/skills/clean-code/SKILL.md +196 -0
  69. package/template/.claude/skills/clean-code/references/typescript.md +126 -0
  70. package/template/.claude/skills/code-review-pro/SKILL.md +152 -0
  71. package/template/.claude/skills/concise-planning/SKILL.md +107 -0
  72. package/template/.claude/skills/cross-layer-consistency/SKILL.md +117 -0
  73. package/template/.claude/skills/database-schema-design/SKILL.md +205 -0
  74. package/template/.claude/skills/database-schema-design/references/relational.md +228 -0
  75. package/template/.claude/skills/deployment-procedures/SKILL.md +241 -0
  76. package/template/.claude/skills/design-anti-cliche/SKILL.md +159 -0
  77. package/template/.claude/skills/design-direction/SKILL.md +45 -0
  78. package/template/.claude/skills/error-handling-patterns/SKILL.md +226 -0
  79. package/template/.claude/skills/error-handling-patterns/references/go.md +162 -0
  80. package/template/.claude/skills/error-handling-patterns/references/python.md +262 -0
  81. package/template/.claude/skills/error-handling-patterns/references/rust.md +112 -0
  82. package/template/.claude/skills/error-handling-patterns/references/typescript.md +178 -0
  83. package/template/.claude/skills/find-skills/SKILL.md +145 -0
  84. package/template/.claude/skills/git-advanced/SKILL.md +972 -0
  85. package/template/.claude/skills/git-workflow/SKILL.md +420 -0
  86. package/template/.claude/skills/idea-extraction/SKILL.md +644 -0
  87. package/template/.claude/skills/logging-best-practices/SKILL.md +192 -0
  88. package/template/.claude/skills/logging-best-practices/references/go.md +49 -0
  89. package/template/.claude/skills/logging-best-practices/references/python.md +52 -0
  90. package/template/.claude/skills/logging-best-practices/references/typescript.md +215 -0
  91. package/template/.claude/skills/migration-management/SKILL.md +200 -0
  92. package/template/.claude/skills/migration-management/references/relational.md +214 -0
  93. package/template/.claude/skills/minimalist-surgical-development/SKILL.md +135 -0
  94. package/template/.claude/skills/parallel-agents/SKILL.md +165 -0
  95. package/template/.claude/skills/parallel-debugging/SKILL.md +135 -0
  96. package/template/.claude/skills/parallel-feature-development/SKILL.md +157 -0
  97. package/template/.claude/skills/performance-budgeting/SKILL.md +144 -0
  98. package/template/.claude/skills/pipeline-rubrics/SKILL.md +51 -0
  99. package/template/.claude/skills/pipeline-rubrics/references/architecture-rubric.md +19 -0
  100. package/template/.claude/skills/pipeline-rubrics/references/be-rubric.md +21 -0
  101. package/template/.claude/skills/pipeline-rubrics/references/fe-rubric.md +20 -0
  102. package/template/.claude/skills/pipeline-rubrics/references/ia-rubric.md +19 -0
  103. package/template/.claude/skills/pipeline-rubrics/references/scoring.md +32 -0
  104. package/template/.claude/skills/pipeline-rubrics/references/vision-rubric.md +12 -0
  105. package/template/.claude/skills/prd-templates/SKILL.md +107 -0
  106. package/template/.claude/skills/prd-templates/references/architecture-completeness-checklist.md +28 -0
  107. package/template/.claude/skills/prd-templates/references/architecture-design-template.md +88 -0
  108. package/template/.claude/skills/prd-templates/references/be-spec-classification.md +41 -0
  109. package/template/.claude/skills/prd-templates/references/be-spec-template.md +107 -0
  110. package/template/.claude/skills/prd-templates/references/bootstrap-verification-protocol.md +50 -0
  111. package/template/.claude/skills/prd-templates/references/constraint-exploration.md +41 -0
  112. package/template/.claude/skills/prd-templates/references/data-placement-template.md +74 -0
  113. package/template/.claude/skills/prd-templates/references/decision-confirmation-protocol.md +68 -0
  114. package/template/.claude/skills/prd-templates/references/decision-propagation.md +121 -0
  115. package/template/.claude/skills/prd-templates/references/decomposition-templates.md +226 -0
  116. package/template/.claude/skills/prd-templates/references/deep-ideation-loading-protocol.md +114 -0
  117. package/template/.claude/skills/prd-templates/references/design-system-decisions.md +198 -0
  118. package/template/.claude/skills/prd-templates/references/design-system-prerequisite-check.md +18 -0
  119. package/template/.claude/skills/prd-templates/references/domain-exhaustion-criteria.md +37 -0
  120. package/template/.claude/skills/prd-templates/references/engagement-tier-protocol.md +58 -0
  121. package/template/.claude/skills/prd-templates/references/engineering-standards-template.md +126 -0
  122. package/template/.claude/skills/prd-templates/references/evolution-layer-guidance.md +91 -0
  123. package/template/.claude/skills/prd-templates/references/expansion-modes.md +27 -0
  124. package/template/.claude/skills/prd-templates/references/fe-classification-procedures.md +47 -0
  125. package/template/.claude/skills/prd-templates/references/fe-spec-template.md +90 -0
  126. package/template/.claude/skills/prd-templates/references/feature-ledger-protocol.md +149 -0
  127. package/template/.claude/skills/prd-templates/references/folder-seeding-protocol.md +77 -0
  128. package/template/.claude/skills/prd-templates/references/fractal-cx-template.md +58 -0
  129. package/template/.claude/skills/prd-templates/references/fractal-feature-template.md +93 -0
  130. package/template/.claude/skills/prd-templates/references/fractal-node-index-template.md +55 -0
  131. package/template/.claude/skills/prd-templates/references/gate-applicability.md +92 -0
  132. package/template/.claude/skills/prd-templates/references/ideation-crosscut-template.md +36 -0
  133. package/template/.claude/skills/prd-templates/references/ideation-index-template.md +111 -0
  134. package/template/.claude/skills/prd-templates/references/ideation-meta-template.md +126 -0
  135. package/template/.claude/skills/prd-templates/references/infrastructure-report-template.md +71 -0
  136. package/template/.claude/skills/prd-templates/references/input-classification.md +23 -0
  137. package/template/.claude/skills/prd-templates/references/map-guard-protocol.md +65 -0
  138. package/template/.claude/skills/prd-templates/references/operational-templates.md +116 -0
  139. package/template/.claude/skills/prd-templates/references/persona-completeness-gate.md +20 -0
  140. package/template/.claude/skills/prd-templates/references/placeholder-guard-template.md +21 -0
  141. package/template/.claude/skills/prd-templates/references/placeholder-workflow-mapping.md +50 -0
  142. package/template/.claude/skills/prd-templates/references/shard-boundary-analysis.md +103 -0
  143. package/template/.claude/skills/prd-templates/references/shard-split-remediation.md +157 -0
  144. package/template/.claude/skills/prd-templates/references/skill-loading-protocol.md +36 -0
  145. package/template/.claude/skills/prd-templates/references/slice-completion-gates.md +29 -0
  146. package/template/.claude/skills/prd-templates/references/spec-coverage-sweep.md +44 -0
  147. package/template/.claude/skills/prd-templates/references/surface-model.md +61 -0
  148. package/template/.claude/skills/prd-templates/references/tdd-testing-policy.md +39 -0
  149. package/template/.claude/skills/prd-templates/references/vision-template.md +57 -0
  150. package/template/.claude/skills/prd-templates/references/workflow-checkpoint-protocol.md +112 -0
  151. package/template/.claude/skills/prd-templates/references/write-verification-protocol.md +57 -0
  152. package/template/.claude/skills/prompt-engineer/SKILL.md +203 -0
  153. package/template/.claude/skills/regex-patterns/SKILL.md +333 -0
  154. package/template/.claude/skills/regex-patterns/references/go.md +44 -0
  155. package/template/.claude/skills/regex-patterns/references/javascript.md +63 -0
  156. package/template/.claude/skills/regex-patterns/references/python.md +77 -0
  157. package/template/.claude/skills/regex-patterns/references/rust.md +43 -0
  158. package/template/.claude/skills/resolve-ambiguity/SKILL.md +278 -0
  159. package/template/.claude/skills/security-scanning-security-hardening/SKILL.md +231 -0
  160. package/template/.claude/skills/session-continuity/SKILL.md +732 -0
  161. package/template/.claude/skills/session-continuity/protocols/01-session-resumption.md +38 -0
  162. package/template/.claude/skills/session-continuity/protocols/02-progress-generation.md +85 -0
  163. package/template/.claude/skills/session-continuity/protocols/03-progress-update.md +70 -0
  164. package/template/.claude/skills/session-continuity/protocols/04-pattern-extraction.md +60 -0
  165. package/template/.claude/skills/session-continuity/protocols/05-session-close.md +37 -0
  166. package/template/.claude/skills/session-continuity/protocols/06-decision-analysis.md +84 -0
  167. package/template/.claude/skills/session-continuity/protocols/07-spec-pipeline-generation.md +48 -0
  168. package/template/.claude/skills/session-continuity/protocols/08-spec-pipeline-update.md +55 -0
  169. package/template/.claude/skills/session-continuity/protocols/09-parallel-claim.md +122 -0
  170. package/template/.claude/skills/session-continuity/protocols/10-placeholder-verification-gate.md +83 -0
  171. package/template/.claude/skills/session-continuity/protocols/11-parallel-synthesis.md +21 -0
  172. package/template/.claude/skills/session-continuity/protocols/ambiguity-gates.md +48 -0
  173. package/template/.claude/skills/skill-creator/SKILL.md +203 -0
  174. package/template/.claude/skills/skill-creator/references/.gitkeep +0 -0
  175. package/template/.claude/skills/skill-creator/scripts/.gitkeep +0 -0
  176. package/template/.claude/skills/spec-writing/SKILL.md +110 -0
  177. package/template/.claude/skills/systematic-debugging/CREATION-LOG.md +119 -0
  178. package/template/.claude/skills/systematic-debugging/SKILL.md +297 -0
  179. package/template/.claude/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
  180. package/template/.claude/skills/systematic-debugging/condition-based-waiting.md +115 -0
  181. package/template/.claude/skills/systematic-debugging/defense-in-depth.md +122 -0
  182. package/template/.claude/skills/systematic-debugging/find-polluter.sh +63 -0
  183. package/template/.claude/skills/systematic-debugging/root-cause-tracing.md +169 -0
  184. package/template/.claude/skills/systematic-debugging/test-academic.md +14 -0
  185. package/template/.claude/skills/systematic-debugging/test-pressure-1.md +58 -0
  186. package/template/.claude/skills/systematic-debugging/test-pressure-2.md +68 -0
  187. package/template/.claude/skills/systematic-debugging/test-pressure-3.md +69 -0
  188. package/template/.claude/skills/tdd-workflow/SKILL.md +186 -0
  189. package/template/.claude/skills/tdd-workflow/references/typescript.md +231 -0
  190. package/template/.claude/skills/tech-stack-catalog/SKILL.md +49 -0
  191. package/template/.claude/skills/tech-stack-catalog/references/constraint-questions.md +237 -0
  192. package/template/.claude/skills/tech-stack-catalog/references/dev-tooling-decisions.md +37 -0
  193. package/template/.claude/skills/tech-stack-catalog/references/surface-decision-tables.md +69 -0
  194. package/template/.claude/skills/technical-writer/SKILL.md +242 -0
  195. package/template/.claude/skills/testing-strategist/SKILL.md +319 -0
  196. package/template/.claude/skills/testing-strategist/references/typescript.md +328 -0
  197. package/template/.claude/skills/verification-before-completion/SKILL.md +97 -0
  198. package/template/.claude/skills/workflow-automation/SKILL.md +166 -0
  199. package/template/.claude/skills/workflow-automation/references/inngest.md +88 -0
  200. package/template/.claude/skills/workflow-automation/references/temporal.md +64 -0
@@ -0,0 +1,231 @@
1
+ # TypeScript TDD Patterns
2
+
3
+ Language-specific patterns for the `tdd-workflow` skill. Read `SKILL.md` first for universal methodology.
4
+
5
+ ---
6
+
7
+ ## Test Frameworks
8
+
9
+ | Tool | Purpose |
10
+ |------|---------|
11
+ | **Jest** or **Vitest** | Unit + integration test runner |
12
+ | **React Testing Library** | Component testing (user-centric) |
13
+ | **Playwright** | E2E browser automation |
14
+
15
+ ## Commands
16
+
17
+ ```bash
18
+ # Run tests
19
+ npm test
20
+
21
+ # Watch mode
22
+ npm test -- --watch
23
+
24
+ # Coverage report
25
+ npm run test:coverage
26
+
27
+ # E2E tests
28
+ npx playwright test
29
+ ```
30
+
31
+ ## Unit Test Pattern (Jest/Vitest)
32
+
33
+ ```typescript
34
+ import { render, screen, fireEvent } from '@testing-library/react'
35
+ import { Button } from './Button'
36
+
37
+ describe('Button Component', () => {
38
+ it('renders with correct text', () => {
39
+ render(<Button>Click me</Button>)
40
+ expect(screen.getByText('Click me')).toBeInTheDocument()
41
+ })
42
+
43
+ it('calls onClick when clicked', () => {
44
+ const handleClick = jest.fn()
45
+ render(<Button onClick={handleClick}>Click</Button>)
46
+
47
+ fireEvent.click(screen.getByRole('button'))
48
+
49
+ expect(handleClick).toHaveBeenCalledTimes(1)
50
+ })
51
+
52
+ it('is disabled when disabled prop is true', () => {
53
+ render(<Button disabled>Click</Button>)
54
+ expect(screen.getByRole('button')).toBeDisabled()
55
+ })
56
+ })
57
+ ```
58
+
59
+ ## API Integration Test Pattern
60
+
61
+ ```typescript
62
+ import { NextRequest } from 'next/server'
63
+ import { GET } from './route'
64
+
65
+ describe('GET /api/markets', () => {
66
+ it('returns markets successfully', async () => {
67
+ const request = new NextRequest('http://localhost/api/markets')
68
+ const response = await GET(request)
69
+ const data = await response.json()
70
+
71
+ expect(response.status).toBe(200)
72
+ expect(data.success).toBe(true)
73
+ expect(Array.isArray(data.data)).toBe(true)
74
+ })
75
+
76
+ it('validates query parameters', async () => {
77
+ const request = new NextRequest('http://localhost/api/markets?limit=invalid')
78
+ const response = await GET(request)
79
+
80
+ expect(response.status).toBe(400)
81
+ })
82
+
83
+ it('handles database errors gracefully', async () => {
84
+ // Mock database failure
85
+ const request = new NextRequest('http://localhost/api/markets')
86
+ // Test error handling
87
+ })
88
+ })
89
+ ```
90
+
91
+ ## E2E Test Pattern (Playwright)
92
+
93
+ ```typescript
94
+ import { test, expect } from '@playwright/test'
95
+
96
+ test('user can search and filter markets', async ({ page }) => {
97
+ await page.goto('/')
98
+ await page.click('a[href="/markets"]')
99
+
100
+ await expect(page.locator('h1')).toContainText('Markets')
101
+
102
+ await page.fill('input[placeholder="Search markets"]', 'election')
103
+ await page.waitForTimeout(600)
104
+
105
+ const results = page.locator('[data-testid="market-card"]')
106
+ await expect(results).toHaveCount(5, { timeout: 5000 })
107
+
108
+ const firstResult = results.first()
109
+ await expect(firstResult).toContainText('election', { ignoreCase: true })
110
+
111
+ await page.click('button:has-text("Active")')
112
+ await expect(results).toHaveCount(3)
113
+ })
114
+ ```
115
+
116
+ ## File Organization
117
+
118
+ ```
119
+ src/
120
+ ├── components/
121
+ │ ├── Button/
122
+ │ │ ├── Button.tsx
123
+ │ │ ├── Button.test.tsx # Unit tests
124
+ │ │ └── Button.stories.tsx # Storybook
125
+ │ └── MarketCard/
126
+ │ ├── MarketCard.tsx
127
+ │ └── MarketCard.test.tsx
128
+ ├── app/
129
+ │ └── api/
130
+ │ └── markets/
131
+ │ ├── route.ts
132
+ │ └── route.test.ts # Integration tests
133
+ └── e2e/
134
+ ├── markets.spec.ts # E2E tests
135
+ ├── trading.spec.ts
136
+ └── auth.spec.ts
137
+ ```
138
+
139
+ ## Mocking External Services
140
+
141
+ ```typescript
142
+ // Supabase mock
143
+ jest.mock('@/lib/supabase', () => ({
144
+ supabase: {
145
+ from: jest.fn(() => ({
146
+ select: jest.fn(() => ({
147
+ eq: jest.fn(() => Promise.resolve({
148
+ data: [{ id: 1, name: 'Test Market' }],
149
+ error: null
150
+ }))
151
+ }))
152
+ }))
153
+ }
154
+ }))
155
+
156
+ // Redis mock
157
+ jest.mock('@/lib/redis', () => ({
158
+ searchMarketsByVector: jest.fn(() => Promise.resolve([
159
+ { slug: 'test-market', similarity_score: 0.95 }
160
+ ])),
161
+ checkRedisHealth: jest.fn(() => Promise.resolve({ connected: true }))
162
+ }))
163
+
164
+ // OpenAI mock
165
+ jest.mock('@/lib/openai', () => ({
166
+ generateEmbedding: jest.fn(() => Promise.resolve(
167
+ new Array(1536).fill(0.1) // Mock 1536-dim embedding
168
+ ))
169
+ }))
170
+ ```
171
+
172
+ ## Coverage Thresholds
173
+
174
+ ```json
175
+ {
176
+ "jest": {
177
+ "coverageThresholds": {
178
+ "global": {
179
+ "branches": 80,
180
+ "functions": 80,
181
+ "lines": 80,
182
+ "statements": 80
183
+ }
184
+ }
185
+ }
186
+ }
187
+ ```
188
+
189
+ ## CI/CD Integration
190
+
191
+ ```yaml
192
+ # GitHub Actions
193
+ - name: Run Tests
194
+ run: npm test -- --coverage
195
+ - name: Upload Coverage
196
+ uses: codecov/codecov-action@v3
197
+ ```
198
+
199
+ ## Assertion Examples
200
+
201
+ ### ❌ Shallow (BANNED)
202
+ ```typescript
203
+ expect(result).toBeDefined()
204
+ expect(result).toBeTruthy()
205
+ expect(response.status).toBe(200) // alone — doesn't verify body
206
+ ```
207
+
208
+ ### ✅ Deep (REQUIRED)
209
+ ```typescript
210
+ expect(result).toEqual({
211
+ id: expect.any(String),
212
+ name: 'Test Market',
213
+ status: 'active',
214
+ trades: expect.arrayContaining([
215
+ expect.objectContaining({ amount: 100 })
216
+ ])
217
+ })
218
+ ```
219
+
220
+ ## Selector Guidance
221
+
222
+ ### ❌ Brittle
223
+ ```typescript
224
+ await page.click('.css-class-xyz')
225
+ ```
226
+
227
+ ### ✅ Semantic
228
+ ```typescript
229
+ await page.click('button:has-text("Submit")')
230
+ await page.click('[data-testid="submit-button"]')
231
+ ```
@@ -0,0 +1,49 @@
1
+ ---
2
+ name: tech-stack-catalog
3
+ description: "Per-surface tech stack decision tables and development tooling options. Use during /create-prd-stack to present constraint-filtered options to the user."
4
+ category: reference
5
+ risk: none
6
+ source: self
7
+ date_added: "2026-02-28"
8
+ ---
9
+
10
+ # Tech Stack Catalog
11
+
12
+ Reference tables for tech stack decisions organized by project surface type. Used by `/create-prd-stack` to present constraint-filtered options.
13
+
14
+ ## When to Use This Skill
15
+
16
+ - During `/create-prd-stack` — load the decision tables for each applicable surface
17
+ - When adding a new surface to an existing project
18
+ - When evaluating tech stack alternatives
19
+
20
+ ## How to Use
21
+
22
+ 1. Read the project's surface classification from `docs/plans/ideation/meta/constraints.md`
23
+ 2. Load `references/surface-decision-tables.md` for the applicable surface sections
24
+ 3. Filter options using constraint questions before presenting
25
+ 4. Load `references/dev-tooling-decisions.md` for development tooling
26
+
27
+ ## Reference Files
28
+
29
+ | File | Contents |
30
+ |------|----------|
31
+ | `references/surface-decision-tables.md` | Universal, web, desktop, mobile, CLI, multi-surface decision axes |
32
+ | `references/dev-tooling-decisions.md` | Package manager, test runner, linter, type checker + bootstrap keys |
33
+ | `references/constraint-questions.md` | Per-axis constraint questions for filtering options |
34
+
35
+ ## Option Presentation Format
36
+
37
+ For each axis, filter options using constraints, then present:
38
+
39
+ | # | Option | Strengths | Risks | Fit |
40
+ |---|--------|-----------|-------|-----|
41
+ | 1 | [Option] | ... | ... | [/5] |
42
+ | H | **Hybrid** | [Combine elements] | ... | [/5] |
43
+
44
+ > **Recommendation**: Based on constraints [list], **Option [N]** scores highest because [rationale].
45
+
46
+ ## Related Skills
47
+
48
+ - `design-direction` — visual direction interview (runs during stack decisions)
49
+ - `brainstorming` — one-decision-at-a-time approach
@@ -0,0 +1,237 @@
1
+ # Constraint Questions
2
+
3
+ Per-axis constraint questions with mandatory ideation grounding. Every axis has two tiers of questions and a citation gate.
4
+
5
+ ## How to Use This File
6
+
7
+ For **each** tech stack axis:
8
+
9
+ 1. **Tier 1 — Self-answer from ideation**: Answer these questions by reading the ideation files listed in the **Required Reads** column. Do NOT ask the user these questions — you already have the answers in the ideation output. Write a 3-5 bullet **Ideation Synthesis** summarizing what you found.
10
+ 2. **Cite-or-Stop Gate**: Your Ideation Synthesis must contain ≥ 2 project-specific findings with file citations (e.g., "From `diagnostics/diagnostics-index.md`: multi-agent orchestration requires persistent task queues"). If you cannot produce 2 citations → you have not read deeply enough → **STOP** and read the deep dives and CX files before continuing.
11
+ 3. **Tier 2 — Ask the user**: Only after passing the citation gate, ask these questions to the user. These are things only the user can answer (budget, team expertise, preferences).
12
+ 4. **Present options**: Combine ideation synthesis + user answers to filter and score options. Your recommendation MUST cite ideation findings as supporting evidence.
13
+
14
+ > ❌ **Anti-pattern**: Presenting generic strengths/risks like "Good ecosystem support" or "Scalable" without tying them to a specific ideation finding. Every strength/risk in the option table must reference a concrete project requirement from the ideation output.
15
+
16
+ ---
17
+
18
+ ## Hosting
19
+
20
+ ### Required Reads
21
+
22
+ | File Pattern | What to Extract |
23
+ |---|---|
24
+ | `meta/constraints.md` → `## Project Surfaces` | Which surfaces need hosting (web, API, desktop distribution, mobile distribution) |
25
+ | `meta/constraints.md` → compliance section | Data residency, regulatory requirements that constrain hosting region/provider |
26
+ | Every domain `{domain}-index.md` | Features requiring edge compute, real-time, WebSocket, or heavy compute |
27
+ | CX files (`ideation-cx.md` + domain CX) | Cross-surface data flow that affects deployment topology |
28
+ | Deep dives with latency or performance mentions | P95 requirements, geographic distribution needs |
29
+
30
+ ### Tier 1 — Self-answer from ideation
31
+
32
+ - What surfaces need hosting and what type of hosting each requires (static, SSR, API, worker)?
33
+ - Are there latency-sensitive features that require edge deployment?
34
+ - Are there compliance or data residency constraints that limit hosting geography?
35
+ - Do any features require persistent connections (WebSocket, SSE) that affect hosting choice?
36
+ - What is the deployment topology implied by the architecture (monolith, microservices, serverless)?
37
+
38
+ ### Tier 2 — Ask the user
39
+
40
+ - Is there an existing cloud provider or hosting preference?
41
+ - What is the monthly hosting budget ceiling?
42
+ - How much operational complexity is acceptable (managed vs self-hosted)?
43
+
44
+ ---
45
+
46
+ ## Database / Persistence
47
+
48
+ ### Required Reads
49
+
50
+ | File Pattern | What to Extract |
51
+ |---|---|
52
+ | Every domain `{domain}-index.md` | Entity types, relationship complexity, data cardinality |
53
+ | Deep dives with data model mentions | Graph relationships, hierarchical data, polymorphic entities |
54
+ | Deep dives with search/query mentions | Full-text search, faceted search, complex query patterns |
55
+ | Deep dives with sync/real-time mentions | Offline-first, CRDT, conflict resolution, real-time subscriptions |
56
+ | CX files | Cross-domain entity ownership, shared entities, data flow direction |
57
+ | `meta/constraints.md` | PII fields, compliance (HIPAA/PCI/GDPR) affecting data placement |
58
+
59
+ ### Tier 1 — Self-answer from ideation
60
+
61
+ - What are the primary entity types and their relationships (flat, hierarchical, graph)?
62
+ - Are there features requiring graph traversal (e.g., dependency chains, social connections, multi-hop queries)?
63
+ - Are there features requiring full-text search, vector similarity, or faceted filtering?
64
+ - What are the read/write patterns implied by the feature workflows (read-heavy dashboards, write-heavy logging, balanced CRUD)?
65
+ - Are there real-time or offline-first requirements that affect database choice?
66
+ - Do any entities require time-series storage (metrics, audit logs, sensor data)?
67
+ - What PII fields exist and what isolation boundaries are required?
68
+
69
+ ### Tier 2 — Ask the user
70
+
71
+ - Is there existing database expertise or infrastructure to leverage?
72
+ - Are there multi-tenancy requirements the ideation didn't capture?
73
+ - Budget constraints for managed database services?
74
+
75
+ > **Note**: Database is handled by the Persistence Map Interview in `create-prd-stack.md`. These questions feed into that interview — they do not replace it.
76
+
77
+ ---
78
+
79
+ ## Auth Provider
80
+
81
+ ### Required Reads
82
+
83
+ | File Pattern | What to Extract |
84
+ |---|---|
85
+ | Every domain `{domain}-index.md` → Role Matrix | All roles, permission levels (Full/Config/Read-only/None), per-domain access |
86
+ | `meta/constraints.md` → compliance section | COPPA, GDPR, age restrictions, SSO requirements |
87
+ | Domain deep dives with access control mentions | Multi-tenant isolation, resource ownership, escalation paths |
88
+ | CX files | Trust boundaries across domains, cross-domain permission handoff |
89
+
90
+ ### Tier 1 — Self-answer from ideation
91
+
92
+ - How many distinct roles exist and what are their permission boundaries?
93
+ - Is there a multi-tenant model (org-level isolation, workspace-level, etc.)?
94
+ - Are there age restrictions or minor-handling requirements (COPPA)?
95
+ - Do any features require granular resource-level permissions (ABAC) vs role-based (RBAC)?
96
+ - Are there third-party integration points that need OAuth/API key authentication?
97
+ - Does the app need social login, SSO/SAML, or enterprise federation?
98
+
99
+ ### Tier 2 — Ask the user
100
+
101
+ - Is social login (Google, GitHub, Apple, etc.) required? Which providers?
102
+ - Is SSO/SAML needed for enterprise customers?
103
+ - Budget for auth provider (free tier vs paid)?
104
+ - Team experience with specific auth providers?
105
+
106
+ ---
107
+
108
+ ## Frontend Framework
109
+
110
+ ### Required Reads
111
+
112
+ | File Pattern | What to Extract |
113
+ |---|---|
114
+ | `meta/constraints.md` → `## Project Surfaces` | Web surface type (app, content site, hybrid), SEO requirements |
115
+ | Every domain `{domain}-index.md` | UI complexity per domain — forms, dashboards, real-time views, interactive editors |
116
+ | Deep dives with UI/interaction mentions | Complex interaction patterns (drag-drop, canvas, WYSIWYG, collaborative editing) |
117
+ | Deep dives with real-time mentions | Live updates, WebSocket-driven UI, optimistic updates |
118
+ | CX files | Cross-domain navigation patterns, shared UI state requirements |
119
+
120
+ ### Tier 1 — Self-answer from ideation
121
+
122
+ - Is SSR required for SEO or first-paint performance, or is this a pure SPA?
123
+ - How complex are the interactive patterns (simple forms vs complex editors vs canvas-based)?
124
+ - Are there real-time UI requirements (live dashboards, collaborative editing)?
125
+ - What is the page count / route complexity implied by the feature inventory?
126
+ - Are there offline-first or PWA requirements that affect framework choice?
127
+ - Does the app need to share code with other surfaces (mobile, desktop)?
128
+
129
+ ### Tier 2 — Ask the user
130
+
131
+ - Team framework experience or preference?
132
+ - Is there an existing frontend codebase to integrate with?
133
+ - Performance priority: bundle size vs DX vs ecosystem maturity?
134
+
135
+ ---
136
+
137
+ ## Backend Framework / Runtime
138
+
139
+ ### Required Reads
140
+
141
+ | File Pattern | What to Extract |
142
+ |---|---|
143
+ | `meta/constraints.md` → `## Project Surfaces` | Backend surface type (API-only, BFF, monolith) |
144
+ | Every domain `{domain}-index.md` | Feature complexity — CRUD-heavy vs computation-heavy vs orchestration-heavy |
145
+ | Deep dives with AI/ML mentions | AI orchestration, model serving, agent coordination |
146
+ | Deep dives with integration mentions | External API calls, webhook handling, queue processing |
147
+ | CX files | Cross-domain business logic, shared middleware requirements |
148
+
149
+ ### Tier 1 — Self-answer from ideation
150
+
151
+ - What type of backend logic dominates — simple CRUD, complex business rules, AI orchestration, or data pipelines?
152
+ - Are there features requiring long-running processes (agents, batch jobs, async workflows)?
153
+ - What are the latency requirements (P95 targets from deep dives)?
154
+ - Is there a need for background job processing or event-driven architecture?
155
+ - Does the backend need to serve multiple surfaces with different protocols (REST for web, gRPC for internal)?
156
+ - Are there cold-start sensitivity constraints (serverless viability)?
157
+
158
+ ### Tier 2 — Ask the user
159
+
160
+ - Team language/framework expertise?
161
+ - Deployment target preference (traditional server, serverless, edge)?
162
+ - Is there an existing backend to extend vs greenfield?
163
+
164
+ ---
165
+
166
+ ## API Layer
167
+
168
+ ### Required Reads
169
+
170
+ | File Pattern | What to Extract |
171
+ |---|---|
172
+ | Every domain `{domain}-index.md` | Query complexity per domain — simple lookups vs complex filtered/nested queries |
173
+ | Deep dives with data fetching mentions | Over-fetching risks, real-time subscription needs, batch query patterns |
174
+ | CX files | Cross-domain data aggregation, BFF patterns, gateway needs |
175
+ | `meta/constraints.md` → `## Project Surfaces` | Number of consuming surfaces (affects API style choice) |
176
+
177
+ ### Tier 1 — Self-answer from ideation
178
+
179
+ - How varied are the data fetching patterns (uniform CRUD vs highly variable query shapes)?
180
+ - Are there features requiring real-time subscriptions?
181
+ - How many surfaces consume the API (affects REST vs GraphQL vs tRPC calculus)?
182
+ - Is there a need for API-to-API communication (microservice internal APIs)?
183
+ - Are there complex nested data requirements that would benefit from flexible query languages?
184
+
185
+ ### Tier 2 — Ask the user
186
+
187
+ - Is the API public-facing (needs REST + OpenAPI) or internal-only (tRPC viable)?
188
+ - Team experience with GraphQL vs REST vs tRPC?
189
+ - Is API versioning a concern (breaking change frequency)?
190
+
191
+ ---
192
+
193
+ ## CI/CD
194
+
195
+ ### Required Reads
196
+
197
+ | File Pattern | What to Extract |
198
+ |---|---|
199
+ | `meta/constraints.md` → `## Project Surfaces` | Number of deployable surfaces (affects pipeline complexity) |
200
+ | `meta/constraints.md` → compliance section | Audit requirements, approval gates, compliance-mandated scanning |
201
+
202
+ ### Tier 1 — Self-answer from ideation
203
+
204
+ - How many independently deployable artifacts exist?
205
+ - Are there compliance requirements mandating specific CI/CD gates (security scanning, approval workflows)?
206
+ - Is the project monorepo or polyrepo (affects CI/CD tooling)?
207
+
208
+ ### Tier 2 — Ask the user
209
+
210
+ - Is there an existing CI/CD provider?
211
+ - Deployment frequency expectations (continuous vs scheduled)?
212
+ - Are manual approval gates needed for production deploys?
213
+
214
+ ---
215
+
216
+ ## Monitoring / Observability
217
+
218
+ ### Required Reads
219
+
220
+ | File Pattern | What to Extract |
221
+ |---|---|
222
+ | Deep dives with performance/SLA mentions | Which features have SLA requirements driving alert thresholds |
223
+ | `meta/constraints.md` → compliance section | Audit logging requirements, log retention mandates |
224
+ | Every domain `{domain}-index.md` | Features with error-sensitive flows (payments, auth, data sync) |
225
+
226
+ ### Tier 1 — Self-answer from ideation
227
+
228
+ - Which features are error-critical (payment flows, auth, data integrity)?
229
+ - Are there SLA or uptime requirements from the ideation?
230
+ - What audit logging is mandated by compliance?
231
+ - Are there features requiring distributed tracing (multi-service request paths)?
232
+
233
+ ### Tier 2 — Ask the user
234
+
235
+ - Is there an existing monitoring stack?
236
+ - Budget for monitoring services?
237
+ - On-call expectations (who gets alerted)?
@@ -0,0 +1,37 @@
1
+ # Development Tooling Decisions
2
+
3
+ ## Tooling axes
4
+
5
+ | Tool | Question |
6
+ |------|----------|
7
+ | **Package manager / build system** | pnpm, npm, yarn, bun, cargo, go modules, pip/poetry? |
8
+ | **Test runner** | Vitest, Jest, pytest, cargo test, go test, XCTest? |
9
+ | **Linter** | ESLint, Biome, Ruff, clippy, golangci-lint? |
10
+ | **Type checker** | TypeScript (tsc), mypy, Rust compiler, Go compiler? |
11
+ | **Build command** | What builds the project for production? |
12
+
13
+ ## Bootstrap keys to fire after confirmation
14
+
15
+ After the user confirms all development tooling, fire bootstrap with `PIPELINE_STAGE=create-prd` and ALL of these keys:
16
+
17
+ - `PACKAGE_MANAGER` — the confirmed package manager (e.g., `pnpm`)
18
+ - `TEST_RUNNER` — the confirmed test runner (e.g., `vitest`)
19
+ - `LINTER` — the confirmed linter (e.g., `eslint`)
20
+ - `TYPE_CHECKER` — the confirmed type checker (e.g., `tsc`)
21
+ - `TEST_COMMAND` — derived from package manager + test runner (e.g., `pnpm test`)
22
+ - `TEST_WATCH_COMMAND` — derived test watch command (e.g., `pnpm test:watch`)
23
+ - `TEST_COVERAGE_COMMAND` — derived coverage command (e.g., `pnpm test:coverage`)
24
+ - `LINT_COMMAND` — derived lint command (e.g., `pnpm lint`)
25
+ - `LINT_FIX_COMMAND` — derived lint fix command (e.g., `pnpm lint:fix`)
26
+ - `FORMAT_COMMAND` — derived format command (e.g., `pnpm format`)
27
+ - `TYPE_CHECK_COMMAND` — derived type-check command (e.g., `pnpm type-check`)
28
+ - `BUILD_COMMAND` — derived build command (e.g., `pnpm build`)
29
+ - `VALIDATION_COMMAND` — the full validation pipeline (e.g., `pnpm test && pnpm lint && pnpm type-check && pnpm build`)
30
+
31
+ This fills command placeholders in `commands.md`, `workflow.md`, `implement-slice-tdd.md`, and `validate-phase.md`.
32
+
33
+ ## Validation command derivation
34
+
35
+ ```
36
+ {{BUILD_TOOL}} test && {{BUILD_TOOL}} lint && {{BUILD_TOOL}} type-check && {{BUILD_TOOL}} build
37
+ ```
@@ -0,0 +1,69 @@
1
+ # Surface Decision Tables
2
+
3
+ ## Universal decisions (all project types)
4
+
5
+ | Axis | Decision Needed |
6
+ |------|----------------|
7
+ | **Primary language(s)** | TypeScript, Rust, Go, Python, Swift, Kotlin, C++, etc. |
8
+ | **Database** | ⚠️ **Handled by Persistence Map Interview** in `create-prd-stack.md` — do NOT process as a single axis. Covers primary, vector, graph, cache, and time-series sub-keys. |
9
+ | **Auth provider** | Firebase vs Auth0 vs Clerk vs custom vs OS-level keychain |
10
+ | **CI/CD** | GitHub Actions vs GitLab CI vs custom |
11
+ | **Monitoring** | Sentry vs Datadog vs custom |
12
+
13
+ ## Web surface decisions
14
+
15
+ | Axis | Decision Needed |
16
+ |------|----------------|
17
+ | **Frontend framework** | SSR vs SSG vs hybrid, which framework (Next.js, Astro, SvelteKit, etc.) |
18
+ | **Backend runtime** | Edge workers vs traditional server vs serverless |
19
+ | **Hosting** | Cloudflare vs Vercel vs AWS vs self-hosted |
20
+ | **CDN/Assets** | Provider-native vs S3 vs Cloudinary |
21
+
22
+ ## Desktop surface decisions
23
+
24
+ | Axis | Decision Needed |
25
+ |------|----------------|
26
+ | **UI framework** | Tauri vs Electron vs native (GTK, Qt, SwiftUI, WPF, WinUI) |
27
+ | **Cross-platform strategy** | Single OS, cross-platform with shared UI (Tauri, Electron, Flutter Desktop), or cross-platform with native UI per OS |
28
+ | **Local data storage** | SQLite vs LevelDB vs filesystem vs embedded DB (RocksDB, etc.) |
29
+ | **Distribution** | Installer type (MSI, DMG, AppImage, Flatpak), auto-updater strategy (Sparkle, squirrel, custom) |
30
+ | **OS targets** | Windows, macOS, Linux — which combinations and minimum versions? |
31
+
32
+ ## Mobile surface decisions
33
+
34
+ | Axis | Decision Needed |
35
+ |------|----------------|
36
+ | **Framework** | Native per-platform (Swift/Kotlin) vs cross-platform (React Native, Flutter, .NET MAUI, Kotlin Multiplatform) |
37
+ | **Cross-platform strategy** | iOS-only, Android-only, or both? Shared codebase or separate? |
38
+ | **Local data storage** | SQLite, Realm, Core Data, Room |
39
+ | **Distribution** | App Store, Play Store, enterprise sideload, TestFlight/Firebase App Distribution |
40
+ | **OS targets** | iOS minimum version, Android minimum API level |
41
+
42
+ ## Desktop + Mobile shared decisions
43
+
44
+ Some frameworks support building for **both** desktop and mobile from one codebase. If the vision indicates this is desired:
45
+
46
+ | Axis | Decision Needed |
47
+ |------|----------------|
48
+ | **Shared framework** | Flutter (desktop + mobile + web), Kotlin Multiplatform, .NET MAUI, Compose Multiplatform |
49
+ | **Shared vs platform-specific UI** | Fully shared UI, shared logic with native UI per platform, or hybrid? |
50
+ | **Platform-specific features** | What functionality requires native code per platform? (file system, notifications, hardware access) |
51
+
52
+ ## CLI surface decisions
53
+
54
+ | Axis | Decision Needed |
55
+ |------|----------------|
56
+ | **Language** | Rust (clap), Go (cobra), Python (click/typer), Node (commander/yargs) |
57
+ | **Distribution** | npm, cargo, homebrew, apt, binary releases (goreleaser, cross) |
58
+ | **Shell integration** | Tab completions, man pages, config file format (TOML, YAML, JSON) |
59
+
60
+ ## Multi-surface connection decisions (2+ connected surfaces)
61
+
62
+ | Axis | Decision Needed |
63
+ |------|----------------|
64
+ | **Shared API protocol** | REST vs gRPC vs GraphQL vs WebSocket between surfaces |
65
+ | **Sync strategy** | Real-time (WebSocket/SSE), eventual consistency (message queue), batch (cron), offline-first (CRDT/merge) |
66
+ | **Shared contract layer** | How are data shapes shared? Monorepo with shared package? Published npm/crate package? Code generation from OpenAPI/protobuf? |
67
+ | **Auth federation** | Shared auth server with SSO? OAuth2 token exchange? Separate auth per surface? |
68
+ | **Conflict resolution** | Last-write-wins, operational transform, CRDT, manual resolution, server-authoritative |
69
+ | **Offline support** | Which surfaces work offline? What data is cached locally? How are conflicts resolved on reconnect? |