@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.
- package/LICENSE +21 -0
- package/README.md +323 -0
- package/docs/DECISIONS.md +170 -0
- package/package.json +38 -0
- package/payload/doc-templates/COMMANDS.md +419 -0
- package/payload/doc-templates/DECISIONS.md +168 -0
- package/payload/doc-templates/FACTS.md +43 -0
- package/payload/doc-templates/GROUNDWORK_METHODOLOGY.md +1300 -0
- package/payload/doc-templates/STACK_MAP.md +90 -0
- package/payload/doc-templates/WORKSTREAMS.md +79 -0
- package/payload/doc-templates/_INDEX.md +54 -0
- package/payload/doc-templates/phases/README.md +36 -0
- package/payload/doc-templates/phases/templates/README.md +63 -0
- package/payload/doc-templates/phases/templates/TASK_TEMPLATE.md +302 -0
- package/payload/doc-templates/phases/templates/task_template_prompt.md +229 -0
- package/payload/doc-templates/templates/ARCHITECTURE_GUIDE_TEMPLATE.md +250 -0
- package/payload/doc-templates/templates/DESIGN_SYSTEM_TEMPLATE.md +336 -0
- package/payload/doc-templates/templates/DONE_TEMPLATE.md +21 -0
- package/payload/doc-templates/templates/PHASES_README_TEMPLATE.md +144 -0
- package/payload/doc-templates/templates/PHASE_README_TEMPLATE.md +142 -0
- package/payload/doc-templates/templates/PRD_TEMPLATE.md +348 -0
- package/payload/doc-templates/templates/PRODUCTION_ROADMAP_TEMPLATE.md +168 -0
- package/payload/doc-templates/templates/QUEUE_TEMPLATE.md +17 -0
- package/payload/doc-templates/templates/TECH_STACK_TEMPLATE.md +199 -0
- package/payload/scripts/check-task.mjs +98 -0
- package/payload/scripts/check-versions.mjs +113 -0
- package/payload/scripts/phase-status.mjs +69 -0
- package/payload/scripts/set-fact.mjs +86 -0
- package/payload/skills/add-data-layer/SKILL.md +129 -0
- package/payload/skills/check-task/SKILL.md +35 -0
- package/payload/skills/check-versions/SKILL.md +47 -0
- package/payload/skills/create-prd/SKILL.md +90 -0
- package/payload/skills/domain-model/SKILL.md +90 -0
- package/payload/skills/kickstart/SKILL.md +157 -0
- package/payload/skills/log-decision/SKILL.md +65 -0
- package/payload/skills/next/SKILL.md +65 -0
- package/payload/skills/plan-phase/SKILL.md +108 -0
- package/payload/skills/remember/SKILL.md +77 -0
- package/payload/skills/start-session/SKILL.md +52 -0
- package/payload/skills/update-workstreams/SKILL.md +60 -0
- package/src/cli.mjs +115 -0
- package/src/commands/add.mjs +39 -0
- package/src/commands/artifacts.mjs +24 -0
- package/src/commands/doctor.mjs +292 -0
- package/src/commands/init.mjs +147 -0
- package/src/commands/knowledge.mjs +148 -0
- package/src/commands/list.mjs +61 -0
- package/src/commands/status.mjs +96 -0
- package/src/commands/update.mjs +128 -0
- package/src/lib/adr-tripwire.mjs +171 -0
- package/src/lib/artifacts.mjs +124 -0
- package/src/lib/config.mjs +43 -0
- package/src/lib/fs.mjs +46 -0
- package/src/lib/log.mjs +22 -0
- package/src/lib/paths.mjs +36 -0
- package/src/lib/progress.mjs +26 -0
- 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]
|