@davidbalzan/groundwork 0.3.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.
Files changed (57) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +323 -0
  3. package/docs/DECISIONS.md +170 -0
  4. package/package.json +38 -0
  5. package/payload/doc-templates/COMMANDS.md +419 -0
  6. package/payload/doc-templates/DECISIONS.md +168 -0
  7. package/payload/doc-templates/FACTS.md +43 -0
  8. package/payload/doc-templates/GROUNDWORK_METHODOLOGY.md +1300 -0
  9. package/payload/doc-templates/STACK_MAP.md +90 -0
  10. package/payload/doc-templates/WORKSTREAMS.md +79 -0
  11. package/payload/doc-templates/_INDEX.md +54 -0
  12. package/payload/doc-templates/phases/README.md +36 -0
  13. package/payload/doc-templates/phases/templates/README.md +63 -0
  14. package/payload/doc-templates/phases/templates/TASK_TEMPLATE.md +302 -0
  15. package/payload/doc-templates/phases/templates/task_template_prompt.md +229 -0
  16. package/payload/doc-templates/templates/ARCHITECTURE_GUIDE_TEMPLATE.md +250 -0
  17. package/payload/doc-templates/templates/DESIGN_SYSTEM_TEMPLATE.md +336 -0
  18. package/payload/doc-templates/templates/DONE_TEMPLATE.md +21 -0
  19. package/payload/doc-templates/templates/PHASES_README_TEMPLATE.md +144 -0
  20. package/payload/doc-templates/templates/PHASE_README_TEMPLATE.md +142 -0
  21. package/payload/doc-templates/templates/PRD_TEMPLATE.md +348 -0
  22. package/payload/doc-templates/templates/PRODUCTION_ROADMAP_TEMPLATE.md +168 -0
  23. package/payload/doc-templates/templates/QUEUE_TEMPLATE.md +17 -0
  24. package/payload/doc-templates/templates/TECH_STACK_TEMPLATE.md +199 -0
  25. package/payload/scripts/check-task.mjs +98 -0
  26. package/payload/scripts/check-versions.mjs +113 -0
  27. package/payload/scripts/phase-status.mjs +69 -0
  28. package/payload/scripts/set-fact.mjs +86 -0
  29. package/payload/skills/add-data-layer/SKILL.md +129 -0
  30. package/payload/skills/check-task/SKILL.md +35 -0
  31. package/payload/skills/check-versions/SKILL.md +47 -0
  32. package/payload/skills/create-prd/SKILL.md +90 -0
  33. package/payload/skills/domain-model/SKILL.md +90 -0
  34. package/payload/skills/kickstart/SKILL.md +157 -0
  35. package/payload/skills/log-decision/SKILL.md +65 -0
  36. package/payload/skills/next/SKILL.md +65 -0
  37. package/payload/skills/plan-phase/SKILL.md +108 -0
  38. package/payload/skills/remember/SKILL.md +77 -0
  39. package/payload/skills/start-session/SKILL.md +52 -0
  40. package/payload/skills/update-workstreams/SKILL.md +60 -0
  41. package/src/cli.mjs +115 -0
  42. package/src/commands/add.mjs +39 -0
  43. package/src/commands/artifacts.mjs +24 -0
  44. package/src/commands/doctor.mjs +292 -0
  45. package/src/commands/init.mjs +147 -0
  46. package/src/commands/knowledge.mjs +148 -0
  47. package/src/commands/list.mjs +61 -0
  48. package/src/commands/status.mjs +96 -0
  49. package/src/commands/update.mjs +128 -0
  50. package/src/lib/adr-tripwire.mjs +171 -0
  51. package/src/lib/artifacts.mjs +124 -0
  52. package/src/lib/config.mjs +43 -0
  53. package/src/lib/fs.mjs +46 -0
  54. package/src/lib/log.mjs +22 -0
  55. package/src/lib/paths.mjs +36 -0
  56. package/src/lib/progress.mjs +26 -0
  57. package/src/lib/skills.mjs +42 -0
@@ -0,0 +1,336 @@
1
+ ---
2
+ title: "Design System Template"
3
+ tags: [groundwork/template]
4
+ aliases: []
5
+ ---
6
+
7
+ # [Project Name] - Design System
8
+
9
+ > Visual language reference for consistent UI across all frontend code. **Essential for AI agents** when generating components, layouts, and styling. All color values, spacing, and component patterns should reference this document.
10
+
11
+ ---
12
+
13
+ ## 🎨 Color Palette
14
+
15
+ ### Primary Colors
16
+
17
+ > The primary color family is used for main actions, active states, and brand identity elements.
18
+
19
+ - **Primary**: `#[hex]` — [Usage: main CTA buttons, active navigation, links. Describe the color, e.g., "Deep indigo"]
20
+ - **Primary Dark**: `#[hex]` — [Usage: hover states on primary elements, pressed states. Must meet 4.5:1 contrast with white text]
21
+ - **Primary Light**: `#[hex]` — [Usage: focus rings, selected backgrounds, subtle highlights. Low opacity for layering]
22
+
23
+ ### Secondary Colors (if applicable)
24
+
25
+ > Secondary colors complement the primary palette for less prominent actions and UI elements.
26
+
27
+ - **Secondary**: `#[hex]` — [Usage and color description, e.g., "Teal accent for secondary actions and data visualization"]
28
+ - **Accent**: `#[hex]` — [Usage and color description, e.g., "Warm amber for highlights, badges, and attention markers"]
29
+
30
+ ### Status Colors
31
+
32
+ > Semantic colors that communicate meaning. These should be consistent across all feedback UI.
33
+
34
+ - **Success**: `#[hex]` ([color name, e.g., "Emerald"]) — [Usage: positive feedback, completed states, confirmation messages. Must pair with success-light for backgrounds]
35
+ - **Warning**: `#[hex]` ([color name, e.g., "Amber"]) — [Usage: caution states, approaching limits, non-critical alerts. Avoid using as the only indicator — pair with text/icon]
36
+ - **Error**: `#[hex]` ([color name, e.g., "Rose"]) — [Usage: error states, destructive action confirmation, form validation failures. High contrast required for accessibility]
37
+ - **Info**: `#[hex]` ([color name, e.g., "Sky"]) — [Usage: informational banners, tooltips, neutral state indicators]
38
+
39
+ ### Neutral Scale
40
+
41
+ > Grays used for text, backgrounds, borders, and disabled states. The full scale ensures sufficient contrast at every level.
42
+
43
+ ```
44
+ 50 #[hex] — Page background (light mode base surface)
45
+ 100 #[hex] — Alternate/card background (subtle elevation without shadow)
46
+ 200 #[hex] — Borders, dividers, subtle separators
47
+ 300 #[hex] — Disabled text, placeholder text, inactive icons
48
+ 400 #[hex] — Tertiary text, metadata, timestamps
49
+ 500 #[hex] — Secondary text, labels, descriptions
50
+ 600 #[hex] — Icons, medium-emphasis text
51
+ 700 #[hex] — Primary body text (must meet 4.5:1 contrast on white)
52
+ 800 #[hex] — Emphasized text, subheadings
53
+ 900 #[hex] — Headings, high-emphasis text (maximum contrast)
54
+ ```
55
+
56
+ ### Dark Mode
57
+
58
+ > Dark mode inverts the surface hierarchy while maintaining readability and reducing eye strain. All color values must meet WCAG AA contrast requirements on dark surfaces.
59
+
60
+ ```
61
+ Surface: #[hex] — Page background (dark mode base, e.g., "Near-black, not pure #000")
62
+ Elevated: #[hex] — Card/modal background (subtle elevation above surface)
63
+ Muted: #[hex] — Alternate/inset background (lower emphasis areas)
64
+ Border: #[hex] — Borders, dividers (subtle, lower contrast than light mode)
65
+ Primary: #[hex] — Primary text on dark surface (off-white, not pure #FFF to reduce glare)
66
+ Secondary: #[hex] — Secondary/description text (reduced emphasis)
67
+ ```
68
+
69
+ ### CSS Custom Properties
70
+
71
+ > Define these in your global CSS or Tailwind theme. AI agents should use these variable names, not raw hex values.
72
+
73
+ ```css
74
+ /* Example — replace with your actual CSS variable implementation */
75
+ :root {
76
+ --color-primary: [hex];
77
+ --color-primary-dark: [hex];
78
+ --color-primary-light: [hex];
79
+ /* ... continue for all tokens above */
80
+ }
81
+
82
+ [data-theme="dark"] {
83
+ --color-surface: [hex];
84
+ --color-primary-text: [hex];
85
+ /* ... dark mode overrides */
86
+ }
87
+ ```
88
+
89
+ ---
90
+
91
+ ## ✏️ Typography
92
+
93
+ ### Font Stack
94
+
95
+ > Define font families with proper fallbacks. Include licensing notes and loading strategy.
96
+
97
+ ```css
98
+ --font-primary:
99
+ "[Primary Font Name, e.g., Inter]", [fallback stack, e.g.,
100
+ "system-ui, -apple-system, sans-serif"];
101
+ --font-mono:
102
+ "[Monospace Font Name, e.g., JetBrains Mono]", [fallback stack, e.g.,
103
+ "'Fira Code', 'Cascadia Code', monospace"];
104
+ ```
105
+
106
+ **Loading Strategy**: [How fonts are loaded — e.g., "Google Fonts via <link> with display=swap" or "Self-hosted woff2 with font-display: optional"]
107
+ **Licensing**: [Font license — e.g., "Inter: SIL Open Font License, free for commercial use"]
108
+
109
+ ### Type Scale
110
+
111
+ > Each level in the type scale has a specific semantic purpose. AI agents should match content type to the appropriate level.
112
+
113
+ | Name | Size | Line Height | Weight | Letter Spacing | Usage |
114
+ | ---------- | -------------- | ----------- | -------------------- | -------------- | ---------------------------------------------------------------- |
115
+ | Display | [X]px / [X]rem | [X] | [Bold/700] | [X]em | [Page titles, hero headings — used sparingly, max once per page] |
116
+ | Heading 1 | [X]px / [X]rem | [X] | [Semibold/600] | [X]em | [Section headings — primary content divisions] |
117
+ | Heading 2 | [X]px / [X]rem | [X] | [Semibold/600] | [X]em | [Subsection headings — secondary content grouping] |
118
+ | Body Large | [X]px / [X]rem | [X] | [Regular/400] | normal | [Lead paragraphs, feature descriptions — emphasis text] |
119
+ | Body | [X]px / [X]rem | [X] | [Regular/400] | normal | [Main content, paragraphs — the default text size] |
120
+ | Body Small | [X]px / [X]rem | [X] | [Regular/400] | normal | [Supporting text, captions, helper text below inputs] |
121
+ | Caption | [X]px / [X]rem | [X] | [Medium/500] | [X]em | [Labels, metadata, timestamps — often uppercase for labels] |
122
+ | Code | [X]px / [X]rem | [X] | [Regular/400 (mono)] | normal | [Inline code, code blocks, technical values — uses mono font] |
123
+
124
+ ---
125
+
126
+ ## 📐 Spacing Scale
127
+
128
+ > Consistent spacing creates visual rhythm and hierarchy. Use these values for padding, margin, and gap. Never use arbitrary pixel values.
129
+
130
+ ```
131
+ Token Value Usage Examples
132
+ ────── ────── ──────────────────────────────────────────────────
133
+ 1 4px Tight spacing: between icon and label, internal badge padding
134
+ 2 8px Compact: between related form fields, inline element gaps
135
+ 3 12px Default gap: between list items, card internal padding (small)
136
+ 4 16px Standard: component internal padding, gap between form groups
137
+ 5 20px Medium: space between card sections, modal padding
138
+ 6 24px Comfortable: space between content blocks, section padding
139
+ 8 32px Generous: space between major sections, card outer margin
140
+ 10 40px Large: page section dividers, hero padding
141
+ 12 48px Extra large: major layout gaps, page top/bottom padding
142
+ 16 64px Maximum: hero sections, major layout breathing room
143
+ ```
144
+
145
+ ### Layout-Specific Spacing
146
+
147
+ - **Page max width**: [X]px — [E.g., "1280px for content, 1440px for full-bleed"]
148
+ - **Page padding (mobile)**: [X]px — [Horizontal padding on small screens]
149
+ - **Page padding (desktop)**: [X]px — [Horizontal padding on large screens]
150
+ - **Card padding**: [X]px — [Standard card content padding]
151
+ - **Section gap**: [X]px — [Vertical space between major page sections]
152
+
153
+ ---
154
+
155
+ ## 🧩 Components
156
+
157
+ > Reference implementations for core components. AI agents should follow these patterns for consistency. Use the design tokens defined above — never hardcode colors or spacing.
158
+
159
+ ### Buttons
160
+
161
+ ```tsx
162
+ // Primary — Main call-to-action. Use sparingly: one primary button per section.
163
+ className="bg-[primary] text-white px-4 py-2 rounded-lg font-semibold
164
+ hover:bg-[primary-dark] active:scale-[0.98]
165
+ focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[primary]
166
+ disabled:opacity-50 disabled:cursor-not-allowed"
167
+
168
+ // Secondary — Supporting actions alongside a primary button.
169
+ className="bg-[neutral-100] text-[neutral-900] px-4 py-2 rounded-lg font-medium
170
+ hover:bg-[neutral-200] active:bg-[neutral-300]
171
+ dark:bg-[neutral-800] dark:text-[neutral-100] dark:hover:bg-[neutral-700]"
172
+
173
+ // Ghost — Tertiary actions, navigation, or low-emphasis contexts.
174
+ className="text-[neutral-600] px-4 py-2 rounded-lg font-medium
175
+ hover:bg-[neutral-100] active:bg-[neutral-200]
176
+ dark:text-[neutral-400] dark:hover:bg-[neutral-800]"
177
+
178
+ // Destructive — Delete, remove, or irreversible actions. Always requires confirmation.
179
+ className="bg-[error] text-white px-4 py-2 rounded-lg font-semibold
180
+ hover:bg-[error-dark] focus-visible:outline-[error]"
181
+ ```
182
+
183
+ **Button Sizes**:
184
+
185
+ - `sm`: `px-3 py-1.5 text-sm` — [Usage: inline actions, table rows, compact UI]
186
+ - `md`: `px-4 py-2 text-base` — [Usage: default size, forms, dialogs] (default)
187
+ - `lg`: `px-6 py-3 text-lg` — [Usage: hero CTAs, primary page actions, onboarding]
188
+
189
+ ### Cards
190
+
191
+ ```css
192
+ /* Standard card — the primary content container */
193
+ background: var(--color-surface); /* Light: white, Dark: elevated surface */
194
+ border: 1px solid var(--color-border); /* Subtle border, not shadow, for definition */
195
+ border-radius: 12px; /* Consistent rounding across all cards */
196
+ padding: [spacing-6]; /* 24px standard internal padding */
197
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); /* Minimal shadow — border does the work */
198
+
199
+ /* Card hover state (for interactive cards only) */
200
+ transition:
201
+ border-color 150ms ease-in-out,
202
+ box-shadow 150ms ease-in-out;
203
+ hover: border-color var(--color-primary-light);
204
+ hover: box-shadow 0 2px 8px rgba(0, 0, 0, 0.08);
205
+ ```
206
+
207
+ ### Inputs
208
+
209
+ ```css
210
+ /* Text input — standard form input */
211
+ background: var(--color-surface);
212
+ border: 1px solid var(--color-border);
213
+ border-radius: 8px;
214
+ padding: 10px 12px; /* Slightly more vertical padding for touch targets */
215
+ font-size: 14px; /* Body size for readability */
216
+ line-height: 1.5;
217
+ color: var(--color-primary-text);
218
+ transition:
219
+ border-color 150ms ease-in-out,
220
+ box-shadow 150ms ease-in-out;
221
+
222
+ /* Focus state — clearly visible but not jarring */
223
+ &:focus {
224
+ border-color: var(--color-primary);
225
+ box-shadow: 0 0 0 3px var(--color-primary-light);
226
+ outline: none;
227
+ }
228
+
229
+ /* Error state — red border with error message below */
230
+ &[aria-invalid="true"] {
231
+ border-color: var(--color-error);
232
+ box-shadow: 0 0 0 3px rgba([error-rgb], 0.15);
233
+ }
234
+
235
+ /* Disabled state */
236
+ &:disabled {
237
+ opacity: 0.5;
238
+ cursor: not-allowed;
239
+ background: var(--color-muted);
240
+ }
241
+ ```
242
+
243
+ ### Badges / Status Indicators
244
+
245
+ ```tsx
246
+ // Pattern for status badges — color communicates meaning, text provides context
247
+ // Success
248
+ className =
249
+ "inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-[success-light] text-[success-dark]";
250
+
251
+ // Warning
252
+ className =
253
+ "inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-[warning-light] text-[warning-dark]";
254
+
255
+ // Error
256
+ className =
257
+ "inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-[error-light] text-[error-dark]";
258
+ ```
259
+
260
+ ---
261
+
262
+ ## ♿ Accessibility
263
+
264
+ ### Contrast Requirements
265
+
266
+ > All text must meet WCAG 2.1 AA standards. Verify with a contrast checker tool when defining colors.
267
+
268
+ - **Normal text** (< 18px): Minimum **4.5:1** contrast ratio against background
269
+ - **Large text** (>= 18px or >= 14px bold): Minimum **3:1** contrast ratio
270
+ - **UI components** (icons, borders, focus indicators): Minimum **3:1** contrast ratio
271
+ - **Non-text contrast** (charts, graphs, data visualization): Minimum **3:1** contrast ratio
272
+
273
+ ### Focus States
274
+
275
+ > All interactive elements MUST have visible focus indicators for keyboard navigation.
276
+
277
+ - Focus ring: **2px solid** with **2px offset** — visible on all backgrounds
278
+ - Focus ring color: `var(--color-primary)` at **50% opacity** (or `var(--color-primary-light)`)
279
+ - Use `focus-visible` (not `focus`) to show focus ring only for keyboard navigation, not mouse clicks
280
+ - Tab order must follow logical reading order — never use `tabindex > 0`
281
+
282
+ ### Motion & Animation
283
+
284
+ > Respect user preferences for reduced motion. All animations must be optional.
285
+
286
+ - Default transition duration: **150ms** `ease-in-out` — [Quick enough to feel responsive, slow enough to perceive]
287
+ - Maximum animation duration: **300ms** — [Longer animations feel sluggish in utility UI]
288
+ - Respect `prefers-reduced-motion: reduce` — disable all non-essential animations
289
+ - Loading spinners and progress bars are exempt from reduced-motion (they communicate state)
290
+
291
+ ### Keyboard Navigation
292
+
293
+ - All interactive elements reachable via Tab key
294
+ - Enter/Space activates buttons and links
295
+ - Escape closes modals, dropdowns, and overlays
296
+ - Arrow keys navigate within menus, tabs, and lists
297
+
298
+ ---
299
+
300
+ ## 🖼️ Iconography
301
+
302
+ > Consistent icon usage reinforces the visual language. Choose one icon library and stick with it.
303
+
304
+ - **Library**: [Icon library name, e.g., "Lucide React" — include version and why this library was chosen]
305
+ - **Default size**: [X]px — [E.g., "20px (matching body text line height for inline usage)"]
306
+ - **Stroke width**: [X] — [E.g., "1.75 (slightly thinner than default 2 for a lighter feel)"]
307
+ - **Style**: [Outlined / Filled / Duotone — describe the chosen style and when to deviate, e.g., "Outlined for all UI chrome; filled only for active/selected states"]
308
+ - **Color**: [How icons inherit color — e.g., "Icons inherit text color via currentColor. Never hardcode icon colors."]
309
+
310
+ ### Icon Usage Guidelines
311
+
312
+ - **Navigation**: [Which icons represent nav items — be consistent across mobile/desktop]
313
+ - **Actions**: [Standard icons for common actions: edit, delete, save, close, search, filter]
314
+ - **Status**: [Icons paired with status colors: check-circle for success, alert-triangle for warning, x-circle for error]
315
+ - **Loading**: [Loading indicator pattern — spinner, skeleton, or progressive reveal]
316
+
317
+ ---
318
+
319
+ ## 📱 Responsive Breakpoints
320
+
321
+ > Define breakpoints and how the layout adapts at each level.
322
+
323
+ | Breakpoint | Width | Layout Behavior |
324
+ | ---------- | ------- | ------------------------------------------------------------------------------------------ |
325
+ | Mobile | [< X]px | [Describe layout — e.g., "Single column, full-width cards, hamburger nav, bottom tab bar"] |
326
+ | Tablet | [X-Y]px | [Describe layout — e.g., "Two-column grid for cards, sidebar collapses to overlay"] |
327
+ | Desktop | [> Y]px | [Describe layout — e.g., "Three-column layout, persistent sidebar, max-width container"] |
328
+
329
+ ---
330
+
331
+ ## 📝 Notes
332
+
333
+ - [Design tool reference — e.g., "Figma file: [link] — source of truth for mockups and component specs"]
334
+ - [Theme implementation — e.g., "Dark mode toggled via data-theme attribute on <html>, persisted in localStorage"]
335
+ - [Brand guidelines — e.g., "Logo usage rules: minimum clear space of 16px, never stretch or recolor"]
336
+ - [Revision process — e.g., "Design system changes require review: update this doc, update components, update Storybook"]
@@ -0,0 +1,21 @@
1
+ # DONE — <project>
2
+
3
+ The completion log — **append-only, the executor is the sole writer** (solo you, or an external
4
+ coordinator pulling from `docs/QUEUE.md`). On completing a queue item, append one line with the PR
5
+ ref. Nobody else writes here, and the executor writes nowhere else in the queue seam (it never
6
+ touches `docs/QUEUE.md`; the queue's writer prunes satisfied items there).
7
+
8
+ **Done-line format (pinned — required, not just an example):**
9
+
10
+ ```
11
+ - [x] <task> — owner/repo#N · YYYY-MM-DD
12
+ ```
13
+
14
+ Use the **em-dash `—` (U+2014)** before the PR ref and the **middot ` · ` (U+00B7)** before the
15
+ date — exact glyphs, not ASCII. Parsers that consume this file (e.g. the agent-coord-ui
16
+ BacklogPanel) split on those glyphs; an ASCII hyphen/period renders the panel empty.
17
+
18
+ ## Done
19
+
20
+ <!-- append here, one per line, in the pinned format above:
21
+ - [x] <task> — owner/repo#N · YYYY-MM-DD -->
@@ -0,0 +1,144 @@
1
+ ---
2
+ title: "Phases README Template"
3
+ tags: [groundwork/template]
4
+ aliases: []
5
+ ---
6
+
7
+ # Production Readiness Phases
8
+
9
+ > Navigation hub for all development phases. Provides a bird's-eye view of progress and links to detailed phase documentation.
10
+
11
+ ---
12
+
13
+ ## 📁 Phase Organization
14
+
15
+ Each phase has its own folder with standardized documentation:
16
+
17
+ - [[README]] — Phase overview, goals, deliverables, and success criteria (quick reference)
18
+ - `PHASE[N]_TASKS.md` — Detailed task breakdown with checkboxes, dependencies, sub-steps, and rollback plans (generated by `/plan-phase`)
19
+
20
+ ### How to Use This Document
21
+
22
+ 1. Check **Roadmap Overview** for current project status at a glance
23
+ 2. Click into the active phase folder for detailed task breakdown
24
+ 3. Update progress indicators as tasks are completed
25
+ 4. Review **Cross-Phase Dependencies** before starting a new phase
26
+
27
+ ---
28
+
29
+ ## 🗺️ Roadmap Overview
30
+
31
+ | Phase | Focus Area | Duration | Status | Progress |
32
+ | -------------------- | -------------------------------------------------------------------------------------------------------- | --------- | ----------------------------------------------- | ---------------------------------------------- |
33
+ | [Phase 1](./phase1/) | [Focus area — describe the primary theme, e.g., "Foundation: project setup, auth, core database schema"] | [X] weeks | [🟢 Complete / 🟡 In Progress / ⚪ Not Started] | [X/Y tasks — e.g., "5/5 tasks" or "3/7 tasks"] |
34
+ | [Phase 2](./phase2/) | [Focus area — e.g., "Core Features: main user workflows, business logic, API endpoints"] | [X] weeks | [Status] | [X/Y tasks] |
35
+ | [Phase 3](./phase3/) | [Focus area — e.g., "Polish & Production: security hardening, monitoring, performance, deployment"] | [X] weeks | [Status] | [X/Y tasks] |
36
+
37
+ ---
38
+
39
+ ## 📋 Phase Summaries
40
+
41
+ ### Phase 1: [Phase Name] ([X] weeks)
42
+
43
+ **Goal**: [One-liner measurable outcome — e.g., "A user can create an account, log in, and see a functional dashboard with real data from PostgreSQL"]
44
+
45
+ **Key Deliverables**:
46
+
47
+ - [Deliverable with scope — e.g., "User authentication: signup, login, logout, JWT token management with refresh"]
48
+ - [Deliverable with scope — e.g., "Database schema v1: core tables with migrations, seed data for development"]
49
+ - [Deliverable with scope — e.g., "API foundation: health check, CORS, error handling middleware, request logging"]
50
+
51
+ **Success Criteria**: [How we know it's done — e.g., "All auth flows work end-to-end, database migrations run cleanly, API returns proper error responses with correct HTTP status codes. Test coverage > 70% for auth module."]
52
+
53
+ **Risks & Mitigations**: [Primary risk — e.g., "Schema design uncertainty: mitigate by starting with minimal tables and using migrations for evolution"]
54
+
55
+ ---
56
+
57
+ ### Phase 2: [Phase Name] ([X] weeks)
58
+
59
+ **Goal**: [One-liner measurable outcome — describe the user-visible or system-visible outcome]
60
+
61
+ **Key Deliverables**:
62
+
63
+ - [Deliverable with scope — describe what's included and what's explicitly NOT included]
64
+ - [Deliverable with scope — include measurable acceptance criteria where possible]
65
+
66
+ **Success Criteria**: [How we know it's done — describe specific, testable conditions that must all be true]
67
+
68
+ **Depends On**: [What must be complete from Phase 1 — e.g., "Auth system, database schema, API middleware stack"]
69
+
70
+ ---
71
+
72
+ ### Phase 3: [Phase Name] ([X] weeks)
73
+
74
+ **Goal**: [One-liner measurable outcome]
75
+
76
+ **Key Deliverables**:
77
+
78
+ - [Deliverable with scope — e.g., "Rate limiting configured for all public endpoints"]
79
+ - [Deliverable with scope — e.g., "Error monitoring with alerting for error rate spikes"]
80
+
81
+ **Success Criteria**: [How we know it's done — e.g., "Application passes security audit checklist, monitoring dashboards show all services green, load test confirms < 200ms p95 under expected traffic"]
82
+
83
+ **Depends On**: [What must be complete from previous phases]
84
+
85
+ ---
86
+
87
+ ## 🔗 Cross-Phase Dependencies
88
+
89
+ > Understanding dependencies prevents starting work that will be blocked. Review before beginning each phase.
90
+
91
+ ```
92
+ Phase 1: [Foundation]
93
+ └──▶ Phase 2: [Core Features] (requires: auth, database, API foundation)
94
+ └──▶ Phase 3: [Production] (requires: all features functional and tested)
95
+ ```
96
+
97
+ | Dependency | Source Phase | Required By | Risk if Delayed |
98
+ | ----------------------------------------- | ------------ | ----------- | --------------------------------------------------------------------------------------- |
99
+ | [Dependency — e.g., "Auth system"] | Phase 1 | Phase 2 | [Impact — e.g., "Blocks all authenticated API endpoints and frontend protected routes"] |
100
+ | [Dependency — e.g., "Core API endpoints"] | Phase 2 | Phase 3 | [Impact — e.g., "Cannot performance test or add monitoring without real endpoints"] |
101
+
102
+ ---
103
+
104
+ ## 📊 Progress Tracking
105
+
106
+ - **Completed Phases**: 0/[N]
107
+ - **Current Phase**: Phase 1 — [Phase Name]
108
+ - **Current Task**: [Task name or "Phase not yet started"]
109
+ - **Overall Progress**: 0% — [X]/[Y] total tasks complete across all phases
110
+ - **Estimated Completion**: [Date or "TBD after Phase 1 retrospective"]
111
+
112
+ ### Milestone Log
113
+
114
+ | Date | Milestone | Notes |
115
+ | ------ | ------------------------------------- | ----------------------------------------------------------------------------- |
116
+ | [Date] | [Milestone — e.g., "Phase 1 started"] | [Context — e.g., "Initial kickstart complete, beginning auth implementation"] |
117
+
118
+ ---
119
+
120
+ ## 📐 Documentation Standards
121
+
122
+ > Every phase follows the same structure for consistency and AI-friendly navigation.
123
+
124
+ Each phase folder contains:
125
+
126
+ - **README.md** — Generated from `docs/templates/PHASE_README_TEMPLATE.md`:
127
+ - Phase overview with goal and target state
128
+ - Quick stats (tasks, files, coverage targets)
129
+ - Key deliverables organized by sprint/week
130
+ - Success criteria (functional, quality, architecture)
131
+ - Risks and dependencies
132
+ - **PHASE[N]\_TASKS.md** — Generated from `docs/phases/templates/TASK_TEMPLATE.md` via `/plan-phase`:
133
+ - Detailed task breakdown with checkbox sub-steps
134
+ - Dependencies and expected deliverables per task
135
+ - Rollback plans for risky tasks
136
+ - Progress tracking with completion metrics
137
+
138
+ ---
139
+
140
+ ## 🔗 Related Documents
141
+
142
+ - **[[PRODUCTION_ROADMAP|Production Roadmap]]** — High-level roadmap with current status and success metrics
143
+ - **[[WORKSTREAMS|Workstreams]]** — Live state of parallel work streams
144
+ - **[[DECISIONS|Decisions Log]]** — ADRs that affect phase planning and architecture
@@ -0,0 +1,142 @@
1
+ ---
2
+ title: "Phase README Template"
3
+ tags: [groundwork/template]
4
+ aliases: []
5
+ ---
6
+
7
+ # Phase [N]: [Phase Name]
8
+
9
+ **Duration**: [X] weeks — [Brief justification for estimate, e.g., "3 sprints based on task complexity analysis"]
10
+ **Status**: [🟢 Complete / 🟡 In Progress / ⚪ Not Started / 🔴 Blocked]
11
+ **Priority**: [🔴 Critical / 🟡 High / 🟢 Medium] — [Context for priority, e.g., "Foundation phase — blocks all subsequent phases"]
12
+
13
+ ---
14
+
15
+ ## 📋 Phase Overview
16
+
17
+ **Goal**: [One-liner measurable outcome — e.g., "Users can authenticate, access protected routes, and see a functional dashboard with real data from the database"]
18
+
19
+ **Current State**: [Where things stand before this phase begins — describe existing functionality, infrastructure, and quality level. E.g., "Project scaffolding exists with monorepo, basic API health endpoint, React starter shell. No auth, no database, no real features."]
20
+
21
+ **Target State**: [Where things should be after this phase completes — describe the delta in concrete terms. E.g., "Full auth flow (signup/login/logout/refresh), PostgreSQL with migrations, 5 core API endpoints, dashboard page consuming real data. Test coverage > 70% for new code."]
22
+
23
+ ---
24
+
25
+ ## 📊 Quick Stats
26
+
27
+ - **Sprints**: [N] ([Sprint names — e.g., "Setup, Core, Integration"])
28
+ - **Major Tasks**: [N] — [Brief description of task scope, e.g., "Each task represents a standalone deliverable that can be reviewed independently"]
29
+ - **New Files**: ~[N] files (~[N] lines) — [Estimated scope, e.g., "Based on similar features in comparable projects"]
30
+ - **Modified Files**: ~[N] files — [What existing files will change, e.g., "Mostly route registrations and type exports"]
31
+ - **Database Changes**: [Description if applicable — e.g., "3 new tables (users, sessions, profiles) with migration scripts" or "None — this phase is frontend-only"]
32
+ - **Test Coverage Target**: [N]%+ — [Scope of coverage, e.g., "Unit tests for all services, integration tests for API endpoints"]
33
+ - **Performance Target**: [Metric and target — e.g., "Auth endpoints respond < 100ms p95" or "Dashboard loads < 2s on 3G"]
34
+
35
+ ---
36
+
37
+ ## 🎯 Key Deliverables
38
+
39
+ ### Sprint 1: [Sprint Name — e.g., "Setup & Foundation"] (Week [X])
40
+
41
+ > [Sprint goal — one sentence describing what this sprint achieves]
42
+
43
+ - [🟢 Complete / 🟡 In Progress / ⚪ Pending / 🔴 Blocked] **[Deliverable name]** — [What this delivers and how to verify it, e.g., "Database schema with migration scripts. Verified by running migrations on clean database and seeding test data."]
44
+ - [Status] **[Deliverable name]** — [What this delivers and verification method]
45
+ - [Status] **[Deliverable name]** — [What this delivers and verification method]
46
+
47
+ ### Sprint 2: [Sprint Name — e.g., "Core Implementation"] (Week [X])
48
+
49
+ > [Sprint goal]
50
+
51
+ - [Status] **[Deliverable name]** — [Description and verification]
52
+ - [Status] **[Deliverable name]** — [Description and verification]
53
+
54
+ ### Sprint 3: [Sprint Name — e.g., "Integration & Testing"] (Week [X]-[Y])
55
+
56
+ > [Sprint goal]
57
+
58
+ - [Status] **[Deliverable name]** — [Description and verification]
59
+ - [Status] **[Deliverable name]** — [Description and verification]
60
+
61
+ ---
62
+
63
+ ## ✅ Success Criteria
64
+
65
+ > All criteria must be met before this phase is considered complete. Use these as a checklist during phase review.
66
+
67
+ ### Functional Requirements
68
+
69
+ - [ ] [Requirement with testable condition — e.g., "User can sign up with email/password, receives confirmation, and can log in with those credentials"]
70
+ - [ ] [Requirement with testable condition — e.g., "Protected API endpoints return 401 for unauthenticated requests and 200 with valid JWT"]
71
+ - [ ] [Requirement with testable condition — e.g., "Dashboard page loads and displays real data from the database within 2 seconds"]
72
+
73
+ ### Quality Requirements
74
+
75
+ - [ ] [Quality gate with measurable threshold — e.g., "Test coverage >= 70% for all new code (measured by coverage tool)"]
76
+ - [ ] [Quality gate — e.g., "Zero TypeScript errors: `pnpm typecheck` passes across all packages"]
77
+ - [ ] [Quality gate — e.g., "Zero linting errors: `pnpm lint` passes with no warnings"]
78
+ - [ ] [Quality gate — e.g., "All API endpoints return proper error responses (not 500s) for invalid input"]
79
+
80
+ ### Architecture Requirements
81
+
82
+ - [ ] [Architecture validation — e.g., "All new code follows feature-based organization as defined in ARCHITECTURE_GUIDE.md"]
83
+ - [ ] [Architecture validation — e.g., "No direct database access from route handlers — all queries go through service layer"]
84
+ - [ ] [Architecture validation — e.g., "Shared types used for all API request/response types — no inline type definitions"]
85
+
86
+ ---
87
+
88
+ ## ⚠️ Risks & Mitigation
89
+
90
+ | Risk | Impact | Likelihood | Mitigation Strategy |
91
+ | ----------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------- |
92
+ | [Specific risk — e.g., "Database schema needs revision mid-phase"] | [🔴 High / 🟡 Medium / 🟢 Low — explain impact, e.g., "Cascading changes to API and frontend"] | [🔴 High / 🟡 Medium / 🟢 Low] | [Concrete mitigation — e.g., "Start with minimal schema, use migrations for all changes, avoid premature optimization of queries"] |
93
+ | [Specific risk — e.g., "Third-party auth library has breaking changes"] | [Impact and explanation] | [Likelihood] | [Mitigation — e.g., "Pin dependency version, test upgrade path before adopting, have fallback auth implementation"] |
94
+ | [Specific risk — e.g., "Scope creep from discovered requirements"] | [Impact and explanation] | [Likelihood] | [Mitigation — e.g., "Strict scope boundary: anything not in deliverables list goes to Phase N+1 backlog"] |
95
+
96
+ ---
97
+
98
+ ## 🔗 Dependencies
99
+
100
+ - **Blocks**: [What this phase unblocks — e.g., "Phase 2 (Core Features) — cannot build authenticated features without auth system from this phase"]
101
+ - **Required (must have)**: [What must be done before this phase can start — e.g., "Project scaffolding: monorepo, build system, and dev environment must be functional" or "None — this is the first phase"]
102
+ - **Optional (nice to have)**: [Nice-to-have prerequisites that improve efficiency — e.g., "CI/CD pipeline: not required but speeds up validation" or "Design mockups: can start with wireframes and refine later"]
103
+
104
+ ### External Dependencies
105
+
106
+ - [External dependency — e.g., "Database provisioning: PostgreSQL instance must be available (Docker Compose handles this locally)"]
107
+ - [External dependency — e.g., "API keys: any third-party service credentials must be obtained and added to .env"]
108
+
109
+ ---
110
+
111
+ ## 🚀 Getting Started
112
+
113
+ ```bash
114
+ # 1. Ensure you're on the correct branch
115
+ git checkout -b feature/phase[N]-[name]
116
+
117
+ # 2. Review the detailed task plan (generated by /plan-phase)
118
+ # This file contains the step-by-step breakdown with checkboxes
119
+ cat docs/phases/phase[N]/PHASE[N]_TASKS.md
120
+
121
+ # 3. Check live workstreams
122
+ cat docs/WORKSTREAMS.md
123
+
124
+ # 4. Start with Task 1 (tasks are ordered by dependency — follow the sequence)
125
+ # Each task has sub-steps; complete all sub-steps before marking the task done
126
+ # Run tests after each task: [test command, e.g., "pnpm test"]
127
+ # Verify types after each task: [typecheck command, e.g., "pnpm typecheck"]
128
+ ```
129
+
130
+ ### Before Starting Checklist
131
+
132
+ - [ ] Read this README fully — understand the goal, deliverables, and success criteria
133
+ - [ ] Read the detailed task plan (PHASE[N]\_TASKS.md) — understand the full scope
134
+ - [ ] Ensure all **Required** dependencies are met
135
+ - [ ] Confirm development environment is working (`pnpm dev` starts without errors)
136
+ - [ ] Review relevant ADRs in [[DECISIONS]] that affect this phase
137
+
138
+ ---
139
+
140
+ ## ⏭️ Next Phase
141
+
142
+ After completion: → [Phase N+1: [Name]](../phase[N+1]/) — [Brief description of what the next phase covers and how this phase enables it]