@cofoundr/init 1.5.0

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 (74) hide show
  1. package/README.md +140 -0
  2. package/bin/cofoundr.mjs +10 -0
  3. package/content/.claude-plugin/plugin.json +18 -0
  4. package/content/README.md +227 -0
  5. package/content/agents/brand-intake.md +129 -0
  6. package/content/agents/consolidate.md +154 -0
  7. package/content/agents/launch-kit-detect.md +109 -0
  8. package/content/agents/spec-phase.md +131 -0
  9. package/content/commands/audit.md +137 -0
  10. package/content/commands/constitution.md +107 -0
  11. package/content/commands/document.md +155 -0
  12. package/content/commands/implement.md +108 -0
  13. package/content/commands/new-feature.md +188 -0
  14. package/content/commands/new-project.md +243 -0
  15. package/content/commands/next.md +129 -0
  16. package/content/commands/onboard.md +176 -0
  17. package/content/commands/plan.md +138 -0
  18. package/content/commands/quick-brief.md +95 -0
  19. package/content/commands/resume.md +99 -0
  20. package/content/commands/review.md +76 -0
  21. package/content/commands/rules-check.md +54 -0
  22. package/content/commands/scope-guard.md +33 -0
  23. package/content/commands/setup-skills.md +109 -0
  24. package/content/commands/specify.md +53 -0
  25. package/content/commands/tasks.md +91 -0
  26. package/content/commands/translate.md +197 -0
  27. package/content/manifest.json +59 -0
  28. package/content/scaffold/.cofoundr/README.md +67 -0
  29. package/content/scaffold/.cofoundr/constitution.md.tmpl +54 -0
  30. package/content/scaffold/.cofoundr/manifest.json.tmpl +15 -0
  31. package/content/scaffold/.cofoundr/memory/decisions.md.tmpl +19 -0
  32. package/content/scaffold/.cofoundr/memory/knowledge.md.tmpl +23 -0
  33. package/content/scaffold/.cofoundr/memory/project.md.tmpl +27 -0
  34. package/content/scaffold/.cofoundr/specs/README.md +38 -0
  35. package/content/scaffold/AGENTS.md.tmpl +74 -0
  36. package/content/templates/agents.md +144 -0
  37. package/content/templates/brand.md +180 -0
  38. package/content/templates/feature.md +70 -0
  39. package/content/templates/phases/phase-template/README.md +65 -0
  40. package/content/templates/phases/phase-template/decisions.md +52 -0
  41. package/content/templates/phases/phase-template/research.md +59 -0
  42. package/content/templates/phases/phase-template/spec.md +90 -0
  43. package/content/templates/phases/phase-template/tests.md +65 -0
  44. package/content/templates/phases/phase-template/ui-spec.md +75 -0
  45. package/content/templates/phases.md +234 -0
  46. package/content/templates/prd.md +89 -0
  47. package/content/templates/product.md +73 -0
  48. package/content/templates/rules.md +99 -0
  49. package/content/templates/tech.md +129 -0
  50. package/package.json +39 -0
  51. package/src/adapters/aider.mjs +35 -0
  52. package/src/adapters/claude-code.mjs +114 -0
  53. package/src/adapters/cline.mjs +46 -0
  54. package/src/adapters/codex.mjs +29 -0
  55. package/src/adapters/copilot.mjs +54 -0
  56. package/src/adapters/cursor.mjs +69 -0
  57. package/src/adapters/gemini.mjs +41 -0
  58. package/src/adapters/index.mjs +14 -0
  59. package/src/adapters/windsurf.mjs +69 -0
  60. package/src/cli.mjs +124 -0
  61. package/src/commands/doctor.mjs +90 -0
  62. package/src/commands/init.mjs +190 -0
  63. package/src/commands/list.mjs +28 -0
  64. package/src/commands/onboard.mjs +130 -0
  65. package/src/commands/remove.mjs +89 -0
  66. package/src/commands/sync.mjs +81 -0
  67. package/src/core/detect.mjs +121 -0
  68. package/src/core/fs.mjs +42 -0
  69. package/src/core/license.mjs +170 -0
  70. package/src/core/log.mjs +32 -0
  71. package/src/core/prompts.mjs +62 -0
  72. package/src/core/scaffold.mjs +179 -0
  73. package/src/core/source.mjs +54 -0
  74. package/src/core/version.mjs +10 -0
@@ -0,0 +1,74 @@
1
+ # {{PROJECT_NAME}}
2
+
3
+ > This is the project's universal AI-agent context file. Every modern coding agent — Claude Code, Cursor, Windsurf, Cline, Codex, Aider, GitHub Copilot, Gemini, Goose, Junie, Kilo, Roo, Zed — reads `AGENTS.md` at the repository root before working on this project.
4
+ >
5
+ > Keep this file short. Detail belongs in the documents it links to.
6
+
7
+ ## Project
8
+
9
+ {{PROJECT_DESCRIPTION}}
10
+
11
+ ## How to work in this repo
12
+
13
+ 1. **Read the constitution before changing anything.**
14
+ The project's non-negotiable rules live in `.cofoundr/constitution.md`. The `Never` section is binding. If a user instruction conflicts with a Never rule, follow the rule and explain why.
15
+
16
+ 2. **Use the spec as source of truth.**
17
+ The active specification lives in:
18
+ - `docs/product.md` — what the product is and who it's for
19
+ - `docs/prd.md` — features with acceptance criteria
20
+ - `docs/tech.md` — stack, data model, integrations
21
+ - `docs/phases.md` — milestones, phases, HALT conditions
22
+ - `.cofoundr/specs/` — feature- and phase-level specs
23
+ - `.cofoundr/memory/codebase.md` — architecture map (refresh with `/cofoundr:onboard`)
24
+ - `.cofoundr/memory/decisions.md` — append-only decisions log
25
+
26
+ 3. **Use the workflow commands.**
27
+ The project ships a tool-agnostic command set under `.cofoundr/commands/`. To invoke one, the user will say `/cofoundr:<command>` or `cofoundr <command>` — read the matching `.cofoundr/commands/<name>.md` and follow its instructions exactly. Do not paraphrase. Do not skip steps.
28
+
29
+ Available commands:
30
+
31
+ - **Planning:** `quick-brief`, `new-project`, `plan`, `next`, `new-feature`
32
+ - **Spec-driven (SDD):** `constitution`, `specify`, `tasks`, `implement`
33
+ - **Brownfield:** `onboard`, `document`, `audit`
34
+ - **Guardrails:** `scope-guard`, `rules-check`, `review`
35
+ - **Comms / setup:** `translate`, `setup-skills`, `resume`
36
+
37
+ 4. **Pick up where the last session left off.**
38
+ Always run `/cofoundr:resume` first. It surfaces active feature docs and the next unchecked task and waits for confirmation before any code is written.
39
+
40
+ ## Build, test, run
41
+
42
+ {{BUILD_INSTRUCTIONS}}
43
+
44
+ ## Code conventions
45
+
46
+ {{CODE_CONVENTIONS}}
47
+
48
+ ## Commit conventions
49
+
50
+ - One commit per task. Format: `<phase or feature>: T<N> <imperative summary>`.
51
+ - Never commit `.env`, key files, or secrets.
52
+ - Never use `--no-verify` or skip pre-commit hooks unless the user explicitly authorized it.
53
+
54
+ ## Things to never do
55
+
56
+ The full Never list lives in `.cofoundr/constitution.md`. Read it. The most-violated rules:
57
+
58
+ - Never put secrets in client bundles.
59
+ - Never deploy tables without row-level security.
60
+ - Never enforce auth only client-side.
61
+ - Never use `DROP`, `TRUNCATE`, `rm -rf`, or `--force` without explicit user confirmation.
62
+ - Never pass user input to `exec`, `eval`, or raw SQL.
63
+ - Never use `any` in TypeScript.
64
+
65
+ ## Tool-specific notes
66
+
67
+ This project is configured for the following AI tools. Tool-specific shims live next to this file:
68
+
69
+ {{TOOL_SHIMS}}
70
+
71
+ If your tool isn't listed, this file (`AGENTS.md`) is enough — it is the open standard read by every modern coding agent.
72
+
73
+ ---
74
+ <sub>Managed by **CoFoundr**. Run `npx @cofoundr/init sync` to refresh the per-tool shims after a CoFoundr upgrade.</sub>
@@ -0,0 +1,144 @@
1
+ ---
2
+ description: "Pointer file — read this first, then follow the read order below"
3
+ tags: [steering, spec, boundaries]
4
+ ---
5
+
6
+ # AI Assistant Configuration
7
+
8
+ <!-- HOW-TO: This is the first file your AI assistant reads. It tells the AI where to find everything else, what conventions to follow, and what boundaries to respect. Think of it as the AI's onboarding document. -->
9
+
10
+ ## TL;DR
11
+
12
+ <!-- HOW-TO: ≤60 words. State the assistant's role, its read order, and its single most important constraint. -->
13
+
14
+ *You are a coding assistant for TaskPilot, a daily planner for solo founders. Read the files below in order before writing any code. Your most important constraint: never use secret keys in client-side code. When in doubt, check rules.md before proceeding.*
15
+
16
+ ## Read Order
17
+
18
+ <!-- HOW-TO: The AI reads these files in this order at the start of every session. Each file has a single purpose — don't merge them. -->
19
+
20
+ 1. **product.md** — What we're building and why (problem, user, solution, non-goals)
21
+ 2. **prd.md** — What ships in v1 with acceptance criteria for every feature
22
+ 3. **tech.md** — Stack decisions, database schema, API endpoints, integrations
23
+ 4. **rules.md** — Non-negotiable rules, ask-first items, and hard stops
24
+ 5. **phases.md** — Build roadmap with milestones, phases, tasks, and verify checkpoints
25
+ 6. **docs/ACTIVE.md** — Active feature docs (if any) — loaded automatically, contains current in-progress feature state
26
+
27
+ ## Commands
28
+
29
+ <!-- HOW-TO: Define what the AI should do when given common instructions. Be explicit — AI assistants follow patterns better than open-ended instructions. -->
30
+
31
+ **"Start building"** or **"Begin Phase X":**
32
+ 1. CLAUDE.md auto-loads the spec files — confirm you can see product.md, prd.md, tech.md, rules.md, phases.md, agents.md in context
33
+ 2. Check `phases.md` for the current milestone, current phase, and next incomplete task
34
+ 3. If working on a feature, confirm the feature doc in `docs/features/` is loaded via ACTIVE.md
35
+ 4. Read the task's file paths and acceptance criteria
36
+ 5. Implement the task
37
+ 6. Run the verify check and confirm it passes
38
+ 7. Check off the completed task in the feature doc and update Session Notes
39
+ 8. Commit with a descriptive message referencing the task number
40
+
41
+ **"Add a feature":**
42
+ 1. Check if the feature exists in `prd.md` — if not, ask before proceeding
43
+ 2. Check `tech.md` for relevant stack and schema information
44
+ 3. Check `rules.md` for any applicable constraints
45
+ 4. Implement and verify against acceptance criteria
46
+ 5. Commit
47
+
48
+ **"Fix a bug":**
49
+ 1. Reproduce the bug first — don't fix what you can't see
50
+ 2. Check `rules.md` before making any changes
51
+ 3. Fix with the smallest possible change
52
+ 4. Verify the fix doesn't break existing functionality
53
+ 5. Commit with a message describing the bug and the fix
54
+
55
+ ## Testing
56
+
57
+ <!-- HOW-TO: Define your testing expectations. Be specific about what "tested" means for this project. -->
58
+
59
+ - Run `npx next build` before every commit — if it doesn't build, it doesn't ship
60
+ - Test the happy path manually after every task (use the verify block in `phases.md`)
61
+ - Write unit tests for utility functions in `src/lib/`
62
+ - Write integration tests for API routes in `src/app/api/`
63
+ - Test the happy path first, then edge cases
64
+ - Never commit code that produces TypeScript errors or console warnings
65
+
66
+ ## Structure
67
+
68
+ <!-- HOW-TO: Define your project's file organization so the AI doesn't invent its own. -->
69
+
70
+ ```
71
+ src/
72
+ app/ # Next.js App Router pages and API routes
73
+ api/ # Server-side API routes (secrets live here)
74
+ integrations/ # OAuth connect/callback routes per provider
75
+ pull/ # Morning pull trigger
76
+ tasks/ # Task CRUD operations
77
+ webhooks/ # Inngest, Stripe webhook receivers
78
+ login/ # Auth pages
79
+ settings/ # User settings (integrations, pull time)
80
+ page.tsx # Main daily focus view
81
+ components/ # React components (no server-side logic)
82
+ lib/ # Shared utilities, clients, types
83
+ integrations/ # Provider-specific fetchers (Slack, Trello, Linear)
84
+ inngest/ # Background job definitions
85
+ supabase.ts # Supabase client (browser + server)
86
+ types/ # TypeScript type definitions
87
+ supabase/
88
+ migrations/ # SQL migration files (numbered)
89
+ ```
90
+
91
+ ## Style
92
+
93
+ <!-- HOW-TO: Code style rules the AI must follow. Be opinionated — vague style guides produce inconsistent code. -->
94
+
95
+ - TypeScript strict mode — no `any`, no `@ts-ignore`, no type assertions unless truly necessary
96
+ - Use `async/await` over `.then()` chains
97
+ - Use named exports, not default exports (except for Next.js pages)
98
+ - Component files: PascalCase (`TaskList.tsx`)
99
+ - Utility files: camelCase (`formatDate.ts`)
100
+ - API routes: kebab-case directories (`/api/integrations/slack/connect/`)
101
+ - Use early returns to reduce nesting
102
+ - Maximum function length: 40 lines — extract helpers if longer
103
+ - All user-facing strings in component files, not buried in utility functions
104
+
105
+ ## Git
106
+
107
+ <!-- HOW-TO: Git conventions for consistent history. The AI should follow these for every commit. -->
108
+
109
+ - **Commit message format:** `type(scope): description` (e.g., `feat(auth): add Supabase login flow`)
110
+ - **Types:** `feat`, `fix`, `refactor`, `chore`, `docs`, `test`
111
+ - **Branch naming:** `phase-X/task-description` (e.g., `phase-1/slack-oauth`)
112
+ - Commit after every completed task, not at the end of a session
113
+ - Never commit with failing TypeScript checks
114
+ - Never commit `.env` files or secrets
115
+
116
+ ## Boundaries
117
+
118
+ <!-- HOW-TO: This section exists to prevent the AI from reinventing rules that already live in rules.md. Point there, don't duplicate. Duplication leads to contradictions when one copy gets updated and the other doesn't. -->
119
+
120
+ See `rules.md` for the full **Always / Ask First / Never** rule set. Do not duplicate rules here — `rules.md` is the single source of truth for behavioral constraints.
121
+
122
+ When uncertain about whether an action is allowed, check `rules.md` before proceeding. If the action isn't covered by any rule, ask the user.
123
+
124
+ ## Session Management
125
+
126
+ <!-- HOW-TO: AI coding tools degrade over long conversations — they start hallucinating, forgetting context, and making mistakes. Starting a fresh chat for each phase prevents this. The CLAUDE.md file in the project root auto-loads all spec files and runs the Session Start Protocol automatically. -->
127
+
128
+ - **Run `/cofoundr:resume` at the start of every session.** This is the first command you type, before anything else. It reads the active feature docs (or phases.md if no active feature), presents a recap of where things stand, and waits for your confirmation before any code is written. Do not skip it — without it the AI starts with stale assumptions.
129
+ - **CLAUDE.md handles spec context automatically.** All six spec files and active feature docs load the moment you open a session in the project folder. No manual pasting.
130
+ - **Start a fresh chat for each phase.** Long sessions degrade model quality — close and reopen when you move to the next phase.
131
+ - **Update the feature doc before ending a session.** Add a Session Notes entry: what was done, what's next, decisions made, risks. This is what the next session's recap will read.
132
+ - **If the AI gets confused, start over.** Close the chat and open a new one. A fresh context is faster than correcting a confused model.
133
+
134
+ ## Session Start Protocol
135
+
136
+ <!-- HOW-TO: This section is also encoded in CLAUDE.md, so it runs automatically. It is repeated here so the AI has the rationale, not just the rule. -->
137
+
138
+ At the start of every session, before any code, edits, or commands:
139
+
140
+ 1. Check `docs/ACTIVE.md` for active feature imports.
141
+ 2. **Active features present:** Read the most recent Session Notes entry from each feature doc. Present a recap (what was done, what is next, any blockers). Ask: "Does this still reflect where things stand?" Wait for confirmation or corrections.
142
+ 3. **No active features:** Read `docs/phases.md`. Find the last checked task and first unchecked task. Present: "You are on [Milestone / Phase]. Next task: [name and file]. Ready to continue?" Wait for confirmation.
143
+
144
+ The purpose of this gate: the session notes were written by the last session's AI, which had context this session does not have. The recap surfaces that context explicitly and gives the human a chance to correct anything that has changed — a decision made offline, a blocker resolved, a direction change. Skipping this step means the AI starts with stale assumptions.
@@ -0,0 +1,180 @@
1
+ ---
2
+ description: >
3
+ Brand spec for the product. Generated by the brand-intake subagent during
4
+ planning. Every ui-spec.md across phases references this file for color,
5
+ type, voice, and kit integration tokens. Keep this file authoritative —
6
+ if a component contradicts brand.md, the component is wrong.
7
+ ---
8
+
9
+ # Brand — [Product Name]
10
+
11
+ ## TL;DR
12
+
13
+ <!-- ≤60 words: the voice in one phrase, the accent color by name, the type system by name, and the three reference products. Example: "Confident and plain-spoken. Deep green accent ('#0C8A4E', 'forest'). Inter for UI, Source Serif for marketing long-form. Sits between Linear's precision and Basecamp's warmth, next to Stripe." -->
14
+
15
+ ---
16
+
17
+ ## Voice
18
+
19
+ <!-- One paragraph describing how the product sounds. Pull from product.md's TL;DR and target-user paragraphs. Then 3 do/don't examples specific to this product's domain. -->
20
+
21
+ **Tone:** [one-line descriptor]
22
+
23
+ **Do:**
24
+
25
+ - [Example of on-brand copy: "Your Meta ads, on autopilot."]
26
+ - [Example of on-brand copy: "Dana runs her ads in 2 minutes a day."]
27
+ - [Example of on-brand copy: "We spotted a fatigued ad. Here's what to do about it."]
28
+
29
+ **Don't:**
30
+
31
+ - [Off-brand: "Revolutionize your ads with AI-powered analytics!"]
32
+ - [Off-brand: "Leverage cutting-edge machine learning…"]
33
+ - [Off-brand: "Unlock the full potential of your marketing funnel."]
34
+
35
+ ---
36
+
37
+ ## Palette
38
+
39
+ <!-- Every color is a hex value. If Launch Kit, these feed the Kit integration block below. -->
40
+
41
+ - **Accent primary:** `#______` (name: _________)
42
+ - **Accent secondary / hover:** `#______`
43
+ - **Neutral 50 (background):** `#______`
44
+ - **Neutral 500 (body text):** `#______`
45
+ - **Neutral 900 (headings):** `#______`
46
+ - **Success:** `#______`
47
+ - **Warning:** `#______`
48
+ - **Error:** `#______`
49
+
50
+ <!-- HOW-TO: the accent is used sparingly (primary CTAs, active tab indicators, key metric callouts). Overusing it kills the signal. Neutrals do 80% of the visual work. -->
51
+
52
+ ---
53
+
54
+ ## Type
55
+
56
+ - **Heading family:** [font name + weight, e.g. `Inter 600`]
57
+ - **Body family:** [font name + weight, e.g. `Inter 400`]
58
+ - **Mono family (if dev-facing):** [font name, e.g. `JetBrains Mono`]
59
+ - **Scale:**
60
+ - `display` — [size/line-height, e.g. 48/56]
61
+ - `h1` — [e.g. 32/40]
62
+ - `h2` — [e.g. 24/32]
63
+ - `h3` — [e.g. 20/28]
64
+ - `body` — [e.g. 16/24 default]
65
+ - `small` — [e.g. 14/20]
66
+
67
+ <!-- HOW-TO: name real fonts, not generic categories. If a custom font was named, verify it is available on a free source (Google Fonts, Fontshare) and cite the source URL. -->
68
+
69
+ ---
70
+
71
+ ## Spacing
72
+
73
+ <!-- Grid the kit already uses. Default: 4px base, Tailwind-compatible steps 1-24 (0.25rem to 6rem). Only change if the reference products signal tighter or looser density. -->
74
+
75
+ - **Base unit:** 4px
76
+ - **Default step:** 16px (4)
77
+ - **Section padding:** 48px (12) mobile, 96px (24) desktop
78
+ - **Card padding:** 24px (6)
79
+ - **Form gap:** 16px (4) between fields, 24px between groups
80
+
81
+ ---
82
+
83
+ ## Imagery
84
+
85
+ <!-- One paragraph. Photography, illustration, or both? Style descriptors. If the product needs AI-generated creative (AdPilot-style), note the prompt anchors. -->
86
+
87
+ **Primary medium:** [photography | illustration | both]
88
+
89
+ **Style descriptors:** [e.g. "clean product shots on neutral backgrounds, soft natural light, no flat-lay, no stock-photo staging"]
90
+
91
+ **AI-generation prompt anchors (if applicable):** [e.g. "minimal, DTC-indie, warm tones, brand-consistent with the three reference products named above"]
92
+
93
+ ---
94
+
95
+ ## Reference material
96
+
97
+ <!-- The three products named during intake. One line each describing what they contribute to the feel. -->
98
+
99
+ 1. **[Product 1]** — [what it contributes, e.g. "precision typography and zero visual noise"]
100
+ 2. **[Product 2]** — [what it contributes]
101
+ 3. **[Product 3]** — [what it contributes]
102
+
103
+ ---
104
+
105
+ ## Copy rules
106
+
107
+ **Use:**
108
+
109
+ - [Pattern, e.g. "State the numbers. 'CTR dropped 28%' beats 'performance declined'."]
110
+ - [Pattern, e.g. "Write for Dana specifically, not 'marketers' as a category."]
111
+ - [Pattern, e.g. "One idea per sentence. Two at most."]
112
+
113
+ **Avoid:**
114
+
115
+ - [Anti-pattern, e.g. "Jargon: 'leverage,' 'synergy,' 'unlock'"]
116
+ - [Anti-pattern, e.g. "Superlatives: 'best-in-class,' 'revolutionary,' 'industry-leading'"]
117
+ - [Anti-pattern, e.g. "Promise language without evidence: 'AdPilot will grow your revenue'"]
118
+
119
+ ---
120
+
121
+ ## Kit integration
122
+
123
+ <!-- Only populated when launch-kit-detect returns `launch-kit`. The blocks below paste into apps/web/styles/globals.css and apps/web/tailwind.config.ts. -->
124
+
125
+ ### globals.css — CSS custom properties
126
+
127
+ ```css
128
+ :root {
129
+ --brand-accent: #______;
130
+ --brand-accent-hover: #______;
131
+ --brand-neutral-50: #______;
132
+ --brand-neutral-500: #______;
133
+ --brand-neutral-900: #______;
134
+ --brand-success: #______;
135
+ --brand-warning: #______;
136
+ --brand-error: #______;
137
+ }
138
+
139
+ :root.dark {
140
+ /* Dark-mode overrides. Only override what changes. */
141
+ --brand-neutral-50: #______;
142
+ --brand-neutral-500: #______;
143
+ --brand-neutral-900: #______;
144
+ }
145
+ ```
146
+
147
+ ### tailwind.config.ts — theme extension
148
+
149
+ ```ts
150
+ // apps/web/tailwind.config.ts
151
+ export default {
152
+ theme: {
153
+ extend: {
154
+ colors: {
155
+ brand: {
156
+ DEFAULT: 'var(--brand-accent)',
157
+ hover: 'var(--brand-accent-hover)',
158
+ success: 'var(--brand-success)',
159
+ warning: 'var(--brand-warning)',
160
+ error: 'var(--brand-error)',
161
+ },
162
+ },
163
+ fontFamily: {
164
+ sans: ['[heading family]', 'ui-sans-serif', 'system-ui'],
165
+ serif: ['[body family]', 'ui-serif'],
166
+ mono: ['[mono family]', 'ui-monospace'],
167
+ },
168
+ },
169
+ },
170
+ };
171
+ ```
172
+
173
+ <!-- When ui-spec.md files reference `brand.accent` or `brand.type.heading`, they map to these tokens. -->
174
+
175
+ ---
176
+
177
+ ## Maintenance
178
+
179
+ - This file is append-only for copy rules and reference material. Colors and type can be revised but log the change inline (`<!-- revised YYYY-MM-DD: accent shifted from #X to #Y because … -->`).
180
+ - Any ui-spec.md that hardcodes a color or font name instead of referencing a brand token is a violation. `/cofoundr:review` should flag these.
@@ -0,0 +1,70 @@
1
+ ---
2
+ description: >
3
+ Living document for [Feature Name]. Created by /cofoundr:new-feature.
4
+ Update this file as work progresses — at the end of every session, before
5
+ every commit, and whenever a blocker is hit or resolved.
6
+ Loaded automatically in every Claude session via ACTIVE.md.
7
+ ---
8
+
9
+ # Feature: [Feature Name]
10
+
11
+ ## TL;DR
12
+ <!-- ≤30 words: what this feature does, who it's for, and which milestone it belongs to -->
13
+
14
+ **Status:** `In Progress`
15
+ **Milestone:** Milestone [N] — [Milestone Name]
16
+ **Phase:** Phase [N.N] — [Phase Name]
17
+ **Added:** [date]
18
+ **Last updated:** [date]
19
+
20
+ ---
21
+
22
+ ## Acceptance Criteria
23
+ <!-- Observable behaviors a non-technical founder can verify by looking at the screen.
24
+ Good: "User sees a confirmation message within 5 seconds of submitting."
25
+ Bad: "POST /api/feature returns 200." -->
26
+
27
+ - [ ] ...
28
+ - [ ] ...
29
+ - [ ] ...
30
+
31
+ ## Dependencies
32
+ <!-- What must already exist before this feature can be built. Reference the phase that provides each dependency. -->
33
+
34
+ - [Phase N] provides: ...
35
+ - External: ...
36
+
37
+ ## Scope Boundaries
38
+ <!-- What this feature explicitly does NOT do. Every boundary here prevents a future scope-creep argument. -->
39
+
40
+ - Not ...
41
+ - Not ...
42
+
43
+ ---
44
+
45
+ ## Build Progress
46
+
47
+ ### Tasks
48
+ <!-- Check off as work is completed. Add the date completed in brackets. Add [BLOCKED: reason] inline for blockers. -->
49
+
50
+ - [ ] Task 1 — `[file/path]`
51
+ - [ ] Task 2 — `[file/path]`
52
+ - [ ] Task 3 — `[file/path]`
53
+
54
+ ### Blockers
55
+ <!-- Active blockers only. Remove the line when resolved. -->
56
+
57
+ *None*
58
+
59
+ ---
60
+
61
+ ## Session Notes
62
+ <!-- One entry per session. Newest at top. This is the handover mechanism — the next session
63
+ reads this section first to know exactly where things stand. Be specific: what was done,
64
+ what decision was made and why, what is next, what is risky. -->
65
+
66
+ **[date] — [Status: started / continued / completed / blocked]**
67
+ Done: ...
68
+ Next: ...
69
+ Decisions: ...
70
+ Risks: ...
@@ -0,0 +1,65 @@
1
+ ---
2
+ description: >
3
+ Plain-English spec for Phase [N]. Written before any code. The AI reads
4
+ spec.md to build; humans read this to gut-check we're building the right
5
+ thing. Generated by /cofoundr:next during planning.
6
+ ---
7
+
8
+ # Phase [N] — [Phase Name]
9
+
10
+ ## TL;DR
11
+ <!-- ≤60 words in plain English. What ships at the end of this phase, who it's for, and why it matters. No acronyms, no jargon. -->
12
+
13
+ ---
14
+
15
+ ## What ships
16
+
17
+ <!-- One paragraph. The observable outcome when this phase completes. A non-technical founder should read this and be able to describe the phase's output to an investor without opening any other file. -->
18
+
19
+ ---
20
+
21
+ ## Who this is for
22
+
23
+ <!-- Which user persona does this phase move forward? Reference the user from product.md by name and situation. If this phase only benefits a subset of users, say which. -->
24
+
25
+ ---
26
+
27
+ ## What's in scope
28
+
29
+ <!-- 3-6 bullets. Concrete capabilities that exist when this phase is done. Each line should be something a human can click or see. -->
30
+
31
+ - ...
32
+ - ...
33
+ - ...
34
+
35
+ ## What's explicitly out of scope
36
+
37
+ <!-- 2-4 bullets. Things a founder might expect from this phase that are deferred. Name the phase or milestone where each deferred item is handled. -->
38
+
39
+ - Not ... (deferred to Phase [N])
40
+ - Not ... (deferred to Phase [N])
41
+
42
+ ## Dependencies
43
+
44
+ <!-- What earlier phases must be complete for this one to start. Name the phase and the specific artifact it provides. -->
45
+
46
+ - Phase [N] provides: [artifact]
47
+ - External: [e.g. Meta App registered in developer.facebook.com]
48
+
49
+ ## Success looks like
50
+
51
+ <!-- 3-5 observable success criteria. A founder running through the app should be able to tick each one. Copy these into tests.md as the happy-path checklist. -->
52
+
53
+ - [ ] ...
54
+ - [ ] ...
55
+ - [ ] ...
56
+
57
+ ## Effort estimate
58
+
59
+ <!-- Rough calendar estimate for a solo founder with AI tooling. Cite the complexity calibration from tech.md (simple / standard / complex). If Launch Kit, estimate assumes kit subagents and helpers are available. -->
60
+
61
+ *Estimate: [N] days. Calibration: [simple | standard | complex].*
62
+
63
+ ---
64
+
65
+ <!-- When this file is complete, spec.md starts. README.md is the pre-build gut-check; spec.md is the AI's build manual. -->
@@ -0,0 +1,52 @@
1
+ ---
2
+ description: >
3
+ Decision log for Phase [N]. Every non-trivial choice that shaped the spec,
4
+ with its rationale and the alternatives considered. Append-only during
5
+ planning; append-only during build. Generated by /cofoundr:next during planning.
6
+ ---
7
+
8
+ # Phase [N] — Decisions Log
9
+
10
+ ## TL;DR
11
+ <!-- ≤60 words. The 2-3 most load-bearing decisions for this phase. These are the ones future-you will thank present-you for writing down. -->
12
+
13
+ ---
14
+
15
+ ## Decisions
16
+
17
+ <!-- One block per decision. Append, do not edit. If a decision is later reversed, add a new "Reversed" block rather than deleting. -->
18
+
19
+ ### [YYYY-MM-DD] — [Decision name]
20
+
21
+ - **Decision:** ...
22
+ - **Rationale:** ...
23
+ - **Alternatives considered:**
24
+ - ... (rejected because ...)
25
+ - ... (rejected because ...)
26
+ - **Decided by:** [founder | AI-with-founder-confirmation]
27
+ - **Reversible?** [yes | no | costly]
28
+
29
+ ---
30
+
31
+ ## Open decisions
32
+
33
+ <!-- Decisions still unresolved. Each has a target resolution date and the blocker. Move to the main list above once resolved. -->
34
+
35
+ - **[Open decision name]**
36
+ - Target: [YYYY-MM-DD]
37
+ - Blocker: ...
38
+ - Options under consideration: ...
39
+
40
+ ## Reversed
41
+
42
+ <!-- Decisions that were made and later changed. Each names the original decision, what was wrong about it, and what replaced it. These are the most valuable history entries — they prevent repeating a mistake. -->
43
+
44
+ ### [YYYY-MM-DD] — [Decision name] — Reversed
45
+
46
+ - **Original:** ...
47
+ - **Why reversed:** ...
48
+ - **Replaced by:** ...
49
+
50
+ ---
51
+
52
+ <!-- decisions.md is the memory of this phase's judgement calls. Treat it as append-only. A thin decisions.md is fine; a missing one is not. -->
@@ -0,0 +1,59 @@
1
+ ---
2
+ description: >
3
+ Research notes for Phase [N]. Competitor findings, prior art, API quirks,
4
+ and gotchas. Written before the spec so the spec can benefit. Generated by
5
+ /cofoundr:next during planning.
6
+ ---
7
+
8
+ # Phase [N] — Research
9
+
10
+ ## TL;DR
11
+ <!-- ≤60 words. The 2-3 most important findings from research that shaped the spec. If there were no surprises, say so and cite what was confirmed. -->
12
+
13
+ ---
14
+
15
+ ## Competitor findings
16
+
17
+ <!-- How do other products solve the same problem this phase addresses? Name them. What works well, what is clunky, what we'll copy, what we'll deliberately avoid. At least 2 competitors, each with specifics — no hand-waving. -->
18
+
19
+ ### [Competitor 1]
20
+
21
+ - **Approach:** ...
22
+ - **Works well:** ...
23
+ - **Clunky:** ...
24
+ - **Our response:** ...
25
+
26
+ ### [Competitor 2]
27
+
28
+ - ...
29
+
30
+ ## Prior art
31
+
32
+ <!-- GitHub projects, blog posts, documentation pages, existing kit patterns that inform this phase. Link each. If a pattern from the Launch Kit's subagents (kit-db-expert, kit-guardrails, etc.) applies, name it and what it gives us. -->
33
+
34
+ - [Link / ref] — [what it gives us]
35
+ - ...
36
+
37
+ ## API specifics
38
+
39
+ <!-- Quirks and gotchas of any external API this phase talks to. Rate limits, auth flows, sandbox-vs-production differences, deprecation timelines. Cite the source (docs URL + date read). -->
40
+
41
+ - **[API name]**
42
+ - Quirk: ...
43
+ - Source: [URL], read [date]
44
+
45
+ ## Gotchas
46
+
47
+ <!-- Things we'd have hit mid-build if we hadn't done this research. One bullet per gotcha, with the evidence and the mitigation we're adopting. -->
48
+
49
+ - ...
50
+
51
+ ## Open questions
52
+
53
+ <!-- Items that research couldn't resolve and need a decision before or during the spec. Move each to decisions.md once resolved. -->
54
+
55
+ - ...
56
+
57
+ ---
58
+
59
+ <!-- When research.md is complete, the spec and UI spec can use it as a grounding reference. If new questions arise during spec.md authoring, add them here and either resolve or log in decisions.md. -->