@epiccontext/mcp 0.1.63 → 0.1.65
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/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +5 -4
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/sync.d.ts +2 -0
- package/dist/cli/commands/sync.d.ts.map +1 -1
- package/dist/cli/commands/sync.js +147 -70
- package/dist/cli/commands/sync.js.map +1 -1
- package/dist/cli/files.d.ts.map +1 -1
- package/dist/cli/files.js +560 -300
- package/dist/cli/files.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/mcp/tools/sync-all.d.ts.map +1 -1
- package/dist/mcp/tools/sync-all.js +42 -0
- package/dist/mcp/tools/sync-all.js.map +1 -1
- package/dist/mcp/tools/sync-from-app.d.ts.map +1 -1
- package/dist/mcp/tools/sync-from-app.js +30 -0
- package/dist/mcp/tools/sync-from-app.js.map +1 -1
- package/dist/mcp/tools/sync-to-app.d.ts.map +1 -1
- package/dist/mcp/tools/sync-to-app.js +29 -0
- package/dist/mcp/tools/sync-to-app.js.map +1 -1
- package/package.json +1 -1
package/dist/cli/files.js
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
import * as fs from "fs";
|
|
2
2
|
import * as path from "path";
|
|
3
3
|
import { getStorybookTemplateFiles } from "../templates/storybook.js";
|
|
4
|
-
// Example content for each block type -
|
|
4
|
+
// Example content for each block type - placed in hidden .examples/ folders during init
|
|
5
5
|
// These show AI agents the correct heading structure for each block type
|
|
6
|
+
// `subfolder` defines where real blocks of this type should be organized
|
|
6
7
|
// `frontmatterLinks` shows how to add schema refs and universal links in frontmatter
|
|
7
8
|
const BLOCK_TYPE_EXAMPLES = {
|
|
8
9
|
// Constitution
|
|
9
|
-
constraint: { body: `## No Third-Party Analytics
|
|
10
|
+
constraint: { subfolder: "constraints", body: `## No Third-Party Analytics
|
|
10
11
|
|
|
11
|
-
**
|
|
12
|
-
**Category:** privacy
|
|
12
|
+
**Type:** privacy
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
All analytics must be first-party. No external tracking scripts allowed. User privacy is a core value — third-party scripts introduce data leakage risks.
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
### Impact
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
- Cannot use Google Analytics, Mixpanel, or similar third-party tracking
|
|
19
|
+
- All user data must stay within our own infrastructure
|
|
20
|
+
- Limits vendor options for analytics tools
|
|
19
21
|
|
|
20
|
-
|
|
22
|
+
### Mitigation
|
|
21
23
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
-
|
|
25
|
-
|
|
26
|
-
- Server-side event tracking only` },
|
|
27
|
-
glossary: { body: `## Product-Specific Terms
|
|
24
|
+
- Build or self-host analytics (e.g., PostHog self-hosted, Plausible)
|
|
25
|
+
- Use server-side event tracking only
|
|
26
|
+
- Implement privacy-first analytics architecture from the start` },
|
|
27
|
+
glossary: { subfolder: "glossaries", body: `## Product-Specific Terms
|
|
28
28
|
|
|
29
29
|
| Term | Definition |
|
|
30
30
|
|------|-----------|
|
|
@@ -32,46 +32,60 @@ User privacy is a core value. Third-party scripts introduce data leakage risks.
|
|
|
32
32
|
| Block | A single piece of structured content |
|
|
33
33
|
| Section | A category grouping related blocks |` },
|
|
34
34
|
// Brand
|
|
35
|
-
brand_positioning: { body: `##
|
|
35
|
+
brand_positioning: { subfolder: "positioning", body: `## Brand Positioning: EpicContext
|
|
36
|
+
|
|
37
|
+
**Tagline:** Context that works for everyone
|
|
36
38
|
|
|
37
|
-
|
|
38
|
-
We believe product teams deserve a single source of truth for all context.
|
|
39
|
+
---
|
|
39
40
|
|
|
40
|
-
### HOW
|
|
41
|
-
By combining structured documentation with AI-powered workflows.
|
|
41
|
+
### Golden Circle (WHY -> HOW -> WHAT)
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
#### WHY - The Purpose
|
|
44
|
+
We believe product teams deserve a single source of truth for all context. Documentation should work for both humans and AI agents, not just collect dust in wikis.
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
#### HOW - The Unique Approach
|
|
47
|
+
By combining structured documentation with AI-powered workflows. Every piece of content has a schema, a status, and can be consumed by coding agents via MCP.
|
|
47
48
|
|
|
48
|
-
|
|
49
|
+
#### WHAT - The Products/Services
|
|
50
|
+
A context management platform for product teams that structures documentation into typed blocks, tracks completeness, and exports to multiple formats.
|
|
49
51
|
|
|
50
|
-
|
|
52
|
+
---
|
|
51
53
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
54
|
+
### Positioning Statement
|
|
55
|
+
|
|
56
|
+
> For **product teams who struggle with scattered documentation**,
|
|
57
|
+
>
|
|
58
|
+
> **EpicContext** is the **context management platform**
|
|
59
|
+
>
|
|
60
|
+
> that **provides a single source of truth for both humans and AI agents**
|
|
61
|
+
>
|
|
62
|
+
> unlike **traditional wikis and docs tools**,
|
|
63
|
+
>
|
|
64
|
+
> because **we structure content into typed blocks that AI coding agents can consume directly via MCP**.` },
|
|
65
|
+
brand_visual_identity: { subfolder: "visual-identity", body: `## Brand Visual Identity
|
|
55
66
|
|
|
56
|
-
###
|
|
67
|
+
### Usage Guidelines
|
|
57
68
|
|
|
58
|
-
|
|
59
|
-
|------|-----|-------|
|
|
60
|
-
| Brand Blue | #2563EB | Primary actions, links |
|
|
61
|
-
| Dark | #111827 | Text, headings |
|
|
62
|
-
| Light | #F9FAFB | Backgrounds |
|
|
69
|
+
Use the brand blue (#2563EB) for primary actions and links. Dark (#111827) for text and headings. Light (#F9FAFB) for backgrounds.
|
|
63
70
|
|
|
64
|
-
|
|
71
|
+
Typography: Inter for headings and body, JetBrains Mono for code. Minimum logo size is 24px height, always use SVG format.
|
|
65
72
|
|
|
66
|
-
|
|
67
|
-
**Heading Font:** Inter
|
|
68
|
-
**Mono Font:** JetBrains Mono
|
|
73
|
+
Always maintain sufficient contrast ratios (WCAG AA minimum). Use the primary palette for UI elements and the extended palette sparingly for accents.
|
|
69
74
|
|
|
70
|
-
|
|
75
|
+
### Do's
|
|
71
76
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
77
|
+
- Use consistent spacing (8px grid system)
|
|
78
|
+
- Maintain logo clear space (minimum 16px around logo)
|
|
79
|
+
- Use brand colors for interactive elements
|
|
80
|
+
- Apply the mono font for all code snippets and technical content
|
|
81
|
+
|
|
82
|
+
### Don'ts
|
|
83
|
+
|
|
84
|
+
- Don't stretch or distort the logo
|
|
85
|
+
- Don't use brand blue on dark backgrounds without checking contrast
|
|
86
|
+
- Don't mix more than 3 typeface weights on a single page
|
|
87
|
+
- Don't use gradients on the logo` },
|
|
88
|
+
brand_moodboard: { subfolder: "moodboards", body: `## Mood & Inspiration
|
|
75
89
|
|
|
76
90
|
### Visual Direction
|
|
77
91
|
Clean, modern, developer-friendly aesthetic with subtle warmth.
|
|
@@ -83,57 +97,105 @@ Clean, modern, developer-friendly aesthetic with subtle warmth.
|
|
|
83
97
|
|
|
84
98
|
### Color Mood
|
|
85
99
|
Professional blues with warm accent colors.` },
|
|
86
|
-
tone_of_voice: { body:
|
|
100
|
+
tone_of_voice: { subfolder: "tone-of-voice", body: `### Brand Personality
|
|
87
101
|
|
|
88
|
-
|
|
89
|
-
**Secondary:** The Supportive Teammate
|
|
102
|
+
Expert, approachable, clear, developer-friendly, pragmatic. We sound like a knowledgeable colleague who explains things simply — not a salesperson, not a professor.
|
|
90
103
|
|
|
91
|
-
|
|
104
|
+
**Archetype:** sage
|
|
92
105
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
106
|
+
### Tone Attributes
|
|
107
|
+
|
|
108
|
+
- Confident but not arrogant
|
|
109
|
+
- Technical but not jargon-heavy
|
|
110
|
+
- Helpful but not patronizing
|
|
111
|
+
- Direct but not blunt
|
|
112
|
+
- Professional but not corporate
|
|
113
|
+
|
|
114
|
+
### We Are...
|
|
115
|
+
|
|
116
|
+
- Clear and concise communicators
|
|
117
|
+
- Respectful of the reader's time
|
|
118
|
+
- Honest about limitations
|
|
119
|
+
- Focused on practical solutions
|
|
120
|
+
|
|
121
|
+
### We Are NOT...
|
|
122
|
+
|
|
123
|
+
- Overly casual or slangy
|
|
124
|
+
- Condescending or preachy
|
|
125
|
+
- Vague or hand-wavy
|
|
126
|
+
- Marketing-speak driven
|
|
127
|
+
|
|
128
|
+
### Writing Principles
|
|
98
129
|
|
|
99
|
-
|
|
130
|
+
1. Lead with the action — tell users what to do first
|
|
131
|
+
2. Use code examples whenever possible
|
|
132
|
+
3. Keep paragraphs under 3 sentences
|
|
133
|
+
4. Use bullet points for lists of 3+ items
|
|
134
|
+
5. Write in second person ("you") not third person
|
|
100
135
|
|
|
101
|
-
###
|
|
136
|
+
### Vocabulary
|
|
137
|
+
**Words We Use:**
|
|
102
138
|
- "workspace" not "organization"
|
|
103
139
|
- "block" not "document"
|
|
104
140
|
- "sync" not "upload"
|
|
141
|
+
- "context" not "documentation"
|
|
105
142
|
|
|
106
|
-
|
|
143
|
+
**Words We Avoid:**
|
|
107
144
|
- Jargon without explanation
|
|
108
145
|
- Passive voice
|
|
109
|
-
- Marketing buzzwords
|
|
110
|
-
|
|
146
|
+
- Marketing buzzwords ("revolutionary", "game-changing")
|
|
147
|
+
- Filler words ("basically", "simply", "just")
|
|
111
148
|
|
|
112
|
-
|
|
149
|
+
### Examples
|
|
150
|
+
**Good Example:**
|
|
151
|
+
Export your project context as markdown. Your AI coding agent reads it directly — no copy-pasting needed.
|
|
113
152
|
|
|
114
|
-
|
|
153
|
+
**Bad Example:**
|
|
154
|
+
Our revolutionary platform seamlessly enables teams to leverage cutting-edge AI-powered documentation synergies.
|
|
115
155
|
|
|
116
|
-
###
|
|
117
|
-
Write code with full product context. AI agents read structured docs, not scattered wikis.
|
|
156
|
+
### Grammar & Style
|
|
118
157
|
|
|
119
|
-
|
|
120
|
-
|
|
158
|
+
- Use sentence case for headings (not Title Case)
|
|
159
|
+
- Oxford comma always
|
|
160
|
+
- Use em dashes (—) not double hyphens
|
|
161
|
+
- Contractions are fine (don't, can't, you'll)
|
|
162
|
+
- American English spelling` },
|
|
163
|
+
messaging_framework: { subfolder: "messaging", body: `### Elevator Pitch
|
|
121
164
|
|
|
122
|
-
|
|
165
|
+
A context management platform that gives product teams a single source of truth — structured for both humans and AI agents. Write once, consume everywhere.
|
|
166
|
+
|
|
167
|
+
### Value Propositions
|
|
168
|
+
|
|
169
|
+
- **For Developers:** Write code with full product context. AI agents read structured docs, not scattered wikis.
|
|
170
|
+
- **For Product Managers:** Track documentation completeness across every section. Know what's missing at a glance.
|
|
171
|
+
- **For Teams:** One place for brand, product, technical, and user documentation. Always up to date.
|
|
172
|
+
|
|
173
|
+
### Key Messages
|
|
123
174
|
|
|
124
175
|
| Audience | Message |
|
|
125
176
|
|----------|---------|
|
|
126
177
|
| Developers | "Your AI coding assistant finally has context" |
|
|
127
|
-
| Product Managers | "See documentation gaps before they become problems"
|
|
178
|
+
| Product Managers | "See documentation gaps before they become problems" |
|
|
179
|
+
| Leadership | "Product documentation that actually gets maintained" |
|
|
180
|
+
|
|
181
|
+
### Calls to Action
|
|
182
|
+
|
|
183
|
+
- Primary: "Start for free"
|
|
184
|
+
- Secondary: "See how it works"
|
|
185
|
+
- Developer: "Try the MCP integration"
|
|
186
|
+
|
|
187
|
+
### Boilerplate
|
|
188
|
+
|
|
189
|
+
EpicContext is a context management platform for product teams. It structures documentation into typed blocks that are consumed by both humans and AI agents. Teams use EpicContext to keep product context complete, consistent, and accessible.` },
|
|
128
190
|
// Product
|
|
129
|
-
product_overview: { frontmatterLinks: `personas_ref: # Who this product is for
|
|
130
|
-
-
|
|
191
|
+
product_overview: { subfolder: "overviews", frontmatterLinks: `personas_ref: # Who this product is for
|
|
192
|
+
- example-persona
|
|
131
193
|
features_ref: # Key features
|
|
132
|
-
-
|
|
194
|
+
- example-feature
|
|
133
195
|
epics_ref: # Development epics
|
|
134
|
-
-
|
|
196
|
+
- example-epic
|
|
135
197
|
links: # Universal links
|
|
136
|
-
- target:
|
|
198
|
+
- target: example-competitor
|
|
137
199
|
label: inspired_by`, body: `### Vision
|
|
138
200
|
Become the standard way product teams manage context for both humans and AI.
|
|
139
201
|
|
|
@@ -147,30 +209,31 @@ Product teams scatter context across wikis, docs, Slack, and spreadsheets. AI ag
|
|
|
147
209
|
- Product managers tracking documentation completeness
|
|
148
210
|
- Developers who need product context while coding
|
|
149
211
|
- AI coding agents that consume structured documentation` },
|
|
150
|
-
feature: { subfolder: "features", frontmatterLinks: `product_ref:
|
|
212
|
+
feature: { subfolder: "features", frontmatterLinks: `product_ref: example-product-overview # Link to parent product
|
|
151
213
|
personas_ref: # Who benefits from this feature
|
|
152
|
-
-
|
|
214
|
+
- example-persona
|
|
153
215
|
links: # Universal links
|
|
154
|
-
- target:
|
|
216
|
+
- target: example-user-story
|
|
155
217
|
label: relates_to
|
|
156
|
-
- target:
|
|
218
|
+
- target: example-competitor
|
|
157
219
|
label: inspired_by`, body: `## Smart Notifications
|
|
158
220
|
|
|
221
|
+
Intelligent notification system that only alerts users about changes relevant to their role and current work.
|
|
222
|
+
|
|
159
223
|
**Priority:** high
|
|
160
224
|
**Status:** planned
|
|
161
225
|
|
|
162
|
-
### Description
|
|
163
|
-
Intelligent notification system that only alerts users about changes relevant to their role and current work.
|
|
164
|
-
|
|
165
226
|
### User Story
|
|
227
|
+
|
|
166
228
|
As a developer, I want to be notified only about changes to blocks I'm working on, so I'm not overwhelmed by noise.
|
|
167
229
|
|
|
168
230
|
### Acceptance Criteria
|
|
231
|
+
|
|
169
232
|
- [ ] Users can set notification preferences per section
|
|
170
233
|
- [ ] AI determines relevance based on recent activity
|
|
171
234
|
- [ ] Daily digest option available
|
|
172
235
|
- [ ] Mute specific blocks` },
|
|
173
|
-
product_strategy_canvas: { body: `## Product Strategy Canvas
|
|
236
|
+
product_strategy_canvas: { subfolder: "strategy", body: `## Product Strategy Canvas
|
|
174
237
|
|
|
175
238
|
### Target Customer
|
|
176
239
|
Small-to-medium product teams (5-50 people) using multiple tools for documentation.
|
|
@@ -186,7 +249,7 @@ The only documentation platform designed for both humans AND AI agents.
|
|
|
186
249
|
|
|
187
250
|
### Competitive Advantage
|
|
188
251
|
AI-native format, MCP integration, structured schemas for every content type.` },
|
|
189
|
-
feature_market_analysis: { body: `## AI-Assisted Documentation
|
|
252
|
+
feature_market_analysis: { subfolder: "market-analysis", body: `## AI-Assisted Documentation
|
|
190
253
|
|
|
191
254
|
### Market Opportunity
|
|
192
255
|
Growing demand for AI-integrated development tools. 68% of teams want AI help with documentation.
|
|
@@ -198,131 +261,213 @@ No current tool combines structured documentation with MCP-based AI agent integr
|
|
|
198
261
|
First-mover advantage in structured context for AI coding agents.` },
|
|
199
262
|
// Users
|
|
200
263
|
persona: { subfolder: "personas", frontmatterLinks: `jtbds_ref: # What jobs this persona has
|
|
201
|
-
-
|
|
264
|
+
- example-jtbd
|
|
202
265
|
journeys_ref: # Journey maps for this persona
|
|
203
|
-
-
|
|
266
|
+
- example-journey-map
|
|
204
267
|
links: # Universal links
|
|
205
|
-
- target:
|
|
268
|
+
- target: example-product-overview
|
|
206
269
|
label: relates_to
|
|
207
|
-
- target:
|
|
270
|
+
- target: example-user-story
|
|
208
271
|
label: relates_to`, body: `> "I need one place where all product context lives."
|
|
209
272
|
|
|
210
|
-
|
|
273
|
+
**Role:** Product Manager
|
|
274
|
+
**Primary Persona:** Yes
|
|
275
|
+
**Tech Comfort:** intermediate
|
|
276
|
+
|
|
277
|
+
## Profile
|
|
278
|
+
|
|
279
|
+
**Age:** 28-40
|
|
280
|
+
**Education:** Bachelor's in Business/Tech
|
|
281
|
+
**Location:** Urban, remote-first company
|
|
282
|
+
**Occupation:** Product Manager at SaaS startup
|
|
283
|
+
|
|
284
|
+
## Motivations
|
|
211
285
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
| Age | 28-40 |
|
|
216
|
-
| Experience | 3-8 years |
|
|
217
|
-
| Team Size | 5-20 |
|
|
286
|
+
- Wants the team to ship faster with fewer miscommunications
|
|
287
|
+
- Values clarity and completeness over perfection
|
|
288
|
+
- Motivated by reducing "knowledge gaps" in the team
|
|
218
289
|
|
|
219
290
|
## Goals
|
|
291
|
+
|
|
220
292
|
- Keep documentation complete and up-to-date
|
|
221
|
-
- Give developers the context they need
|
|
293
|
+
- Give developers the context they need without meetings
|
|
222
294
|
- Track what's documented and what's missing
|
|
223
295
|
|
|
224
|
-
##
|
|
225
|
-
|
|
226
|
-
-
|
|
296
|
+
## Pain Points
|
|
297
|
+
|
|
298
|
+
- Documentation scattered across Confluence, Google Docs, and Slack
|
|
299
|
+
- Can't tell what's outdated or incomplete
|
|
227
300
|
- Developers ask the same questions repeatedly
|
|
301
|
+
- No single source of truth for product context
|
|
228
302
|
|
|
229
303
|
## Behaviors
|
|
304
|
+
|
|
230
305
|
- Checks documentation status weekly
|
|
231
306
|
- Creates user stories with acceptance criteria
|
|
232
|
-
- Reviews AI-generated summaries
|
|
233
|
-
|
|
307
|
+
- Reviews AI-generated summaries
|
|
308
|
+
|
|
309
|
+
### Tools
|
|
310
|
+
Notion, Linear, Figma, Slack, Google Docs
|
|
311
|
+
|
|
312
|
+
## Jobs to Be Done
|
|
313
|
+
|
|
314
|
+
- When onboarding a new team member, I want to point them to one place with all context, so they ramp up quickly
|
|
315
|
+
- When planning a sprint, I want to see what documentation is missing, so nothing blocks development` },
|
|
316
|
+
jtbd: { subfolder: "jobs-to-be-done", frontmatterLinks: `persona_ref: example-persona # Who has this job
|
|
234
317
|
links: # Universal links
|
|
235
|
-
- target:
|
|
318
|
+
- target: example-user-story
|
|
236
319
|
label: relates_to
|
|
237
|
-
- target:
|
|
320
|
+
- target: example-feature
|
|
238
321
|
label: relates_to`, body: `## Keep Product Context Accessible
|
|
239
322
|
|
|
240
323
|
### Job Statement
|
|
324
|
+
|
|
241
325
|
When I'm onboarding a new team member, I want to point them to one place with all product context, so they can ramp up quickly without asking everyone questions.
|
|
242
326
|
|
|
243
|
-
###
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
327
|
+
### Situation
|
|
328
|
+
|
|
329
|
+
A new developer joins the team and needs to understand the product vision, technical stack, brand guidelines, and current priorities. Information is scattered across Confluence, Google Docs, Slack messages, and tribal knowledge.
|
|
330
|
+
|
|
331
|
+
### Motivation
|
|
332
|
+
|
|
333
|
+
- Feel confident the team has what they need to be productive
|
|
334
|
+
- Reduce anxiety about knowledge gaps across the organization
|
|
335
|
+
- Minimize repetitive questions from new hires
|
|
336
|
+
- Get new team members contributing code faster
|
|
247
337
|
|
|
248
|
-
###
|
|
249
|
-
- Feel confident the team has what they need
|
|
250
|
-
- Reduce anxiety about knowledge gaps
|
|
338
|
+
### Desired Outcome
|
|
251
339
|
|
|
252
|
-
|
|
253
|
-
-
|
|
254
|
-
-
|
|
255
|
-
-
|
|
256
|
-
journey_map: { subfolder: "journey-maps", frontmatterLinks: `persona_ref:
|
|
340
|
+
- New team members can self-serve all product context from one place
|
|
341
|
+
- Documentation is always current and complete
|
|
342
|
+
- Onboarding time is reduced from weeks to days
|
|
343
|
+
- Fewer interruptions to existing team members` },
|
|
344
|
+
journey_map: { subfolder: "journey-maps", frontmatterLinks: `persona_ref: example-persona # REQUIRED: Whose journey is this?
|
|
257
345
|
links: # Universal links
|
|
258
|
-
- target:
|
|
346
|
+
- target: example-feature
|
|
259
347
|
label: relates_to
|
|
260
|
-
- target:
|
|
348
|
+
- target: example-user-story
|
|
261
349
|
label: implements`, body: `## New User Onboarding Journey
|
|
262
350
|
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
**
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
**
|
|
351
|
+
User discovers the platform, signs up, and completes their first project setup.
|
|
352
|
+
|
|
353
|
+
**Persona:** example-persona
|
|
354
|
+
**Variant:** as-is
|
|
355
|
+
**Trigger:** User hears about the product from a colleague or finds it via search
|
|
356
|
+
|
|
357
|
+
## Phases
|
|
358
|
+
|
|
359
|
+
1. Discovery
|
|
360
|
+
2. Sign Up
|
|
361
|
+
3. First Use
|
|
362
|
+
|
|
363
|
+
## Steps
|
|
364
|
+
|
|
365
|
+
### Step 1: Finds the product
|
|
366
|
+
**Phase:** Discovery
|
|
367
|
+
**Actions:**
|
|
368
|
+
- Touchpoint: Search engine, colleague recommendation
|
|
369
|
+
|
|
370
|
+
**Experience:**
|
|
371
|
+
- activity: Curious about whether this solves their documentation problem
|
|
372
|
+
|
|
373
|
+
**Insights:**
|
|
374
|
+
- Landing page must immediately communicate the value proposition
|
|
375
|
+
|
|
376
|
+
### Step 2: Browses landing page
|
|
377
|
+
**Phase:** Discovery
|
|
378
|
+
**Actions:**
|
|
379
|
+
- Touchpoint: Landing page, feature overview
|
|
380
|
+
|
|
381
|
+
**Experience:**
|
|
382
|
+
- activity: Evaluating if this is worth trying
|
|
383
|
+
- need: Wants to see how it works before committing
|
|
384
|
+
|
|
385
|
+
### Step 3: Creates account
|
|
386
|
+
**Phase:** Sign Up
|
|
387
|
+
**Actions:**
|
|
388
|
+
- Touchpoint: Registration form, email verification
|
|
389
|
+
|
|
390
|
+
**Experience:**
|
|
391
|
+
- pain: Registration asks for too much information upfront (impact: -2)
|
|
392
|
+
- activity: Hopeful but impatient
|
|
393
|
+
|
|
394
|
+
**Insights:**
|
|
395
|
+
- Minimize required fields; collect additional info later
|
|
396
|
+
|
|
397
|
+
### Step 4: First project setup
|
|
398
|
+
**Phase:** First Use
|
|
399
|
+
**Actions:**
|
|
400
|
+
- Touchpoint: Dashboard, project creation wizard
|
|
401
|
+
|
|
402
|
+
**Experience:**
|
|
403
|
+
- pain: Unclear where to start — too many empty sections (impact: -2)
|
|
404
|
+
- gain: Templates pre-fill common sections (impact: +2)
|
|
405
|
+
|
|
406
|
+
**Insights:**
|
|
407
|
+
- Guided onboarding tour should highlight the 3 most important sections first
|
|
408
|
+
|
|
409
|
+
### Step 5: Fills in first blocks
|
|
410
|
+
**Phase:** First Use
|
|
411
|
+
**Actions:**
|
|
412
|
+
- Touchpoint: Block editor, section view
|
|
413
|
+
|
|
414
|
+
**Experience:**
|
|
415
|
+
- gain: Auto-save makes editing feel safe (impact: +1)
|
|
416
|
+
- activity: Starting to see the value
|
|
417
|
+
|
|
418
|
+
### Success Outcome
|
|
419
|
+
|
|
420
|
+
User has a project with at least 3 sections partially filled and understands the block-based structure.
|
|
421
|
+
|
|
422
|
+
### Key Insights
|
|
423
|
+
|
|
424
|
+
- Reduce sign-up friction by asking only email and password initially
|
|
425
|
+
- Provide a "quick start" template that pre-fills common sections
|
|
426
|
+
- Show progress percentage early to create momentum` },
|
|
290
427
|
// Research
|
|
291
428
|
competitor: { subfolder: "competitors", frontmatterLinks: `links: # Universal links to blocks this competitor analysis informs
|
|
292
|
-
- target:
|
|
429
|
+
- target: example-feature
|
|
293
430
|
label: informs
|
|
294
|
-
- target:
|
|
431
|
+
- target: example-product-overview
|
|
295
432
|
label: informs
|
|
296
|
-
- target:
|
|
433
|
+
- target: example-decision
|
|
297
434
|
label: references`, body: `## Linear
|
|
298
435
|
|
|
299
436
|
**Website:** https://linear.app
|
|
300
|
-
**
|
|
437
|
+
**Tagline:** Linear is a better way to build software
|
|
438
|
+
**Threat Level:** medium
|
|
301
439
|
|
|
302
|
-
|
|
303
|
-
Modern project management tool for software teams with fast UI and keyboard shortcuts.
|
|
304
|
-
|
|
305
|
-
### Target Market
|
|
306
|
-
Software development teams, startups to mid-market.
|
|
307
|
-
|
|
308
|
-
### Pricing
|
|
309
|
-
Free for small teams, $8/user/month for standard.
|
|
440
|
+
Modern project management tool for software teams with fast UI and keyboard shortcuts. Strong in issue tracking and sprint planning, but lacks documentation and AI agent features.
|
|
310
441
|
|
|
311
442
|
### Strengths
|
|
443
|
+
|
|
312
444
|
- Extremely fast and polished UI
|
|
313
|
-
- Great keyboard navigation
|
|
314
|
-
- GitHub integration
|
|
445
|
+
- Great keyboard navigation and shortcuts
|
|
446
|
+
- Tight GitHub integration
|
|
447
|
+
- Clean, focused design
|
|
315
448
|
|
|
316
449
|
### Weaknesses
|
|
317
|
-
|
|
318
|
-
-
|
|
319
|
-
- No
|
|
450
|
+
|
|
451
|
+
- Limited documentation features — no structured content
|
|
452
|
+
- No AI agent integration or MCP support
|
|
453
|
+
- No content export for AI consumption
|
|
454
|
+
- Focused on issue tracking, not product context
|
|
455
|
+
|
|
456
|
+
### Pricing
|
|
457
|
+
|
|
458
|
+
Free for small teams, $8/user/month for standard, $14/user/month for plus.
|
|
459
|
+
|
|
460
|
+
### Target Market
|
|
461
|
+
|
|
462
|
+
Software development teams at startups to mid-market (10-200 people). Engineering-led organizations that value speed and keyboard-driven workflows.
|
|
320
463
|
|
|
321
464
|
### Our Differentiators
|
|
465
|
+
|
|
322
466
|
- Structured documentation, not just task tracking
|
|
323
|
-
- AI-native MCP integration
|
|
324
|
-
- Content consumable by
|
|
325
|
-
|
|
467
|
+
- AI-native MCP integration for coding agents
|
|
468
|
+
- Content consumable by both humans and AI
|
|
469
|
+
- Full product context, not just development tasks` },
|
|
470
|
+
user_research: { subfolder: "user-research", body: `## User Research Interviews Q1
|
|
326
471
|
|
|
327
472
|
### Methodology
|
|
328
473
|
- 12 semi-structured interviews (45 min each)
|
|
@@ -359,7 +504,7 @@ Free for small teams, $8/user/month for standard.
|
|
|
359
504
|
|
|
360
505
|
The developer documentation tool market is growing at 13% CAGR. Key growth driver is AI integration demand.` },
|
|
361
506
|
// Technical
|
|
362
|
-
tech_stack: { body: `## Technology Stack
|
|
507
|
+
tech_stack: { subfolder: "stacks", body: `## Technology Stack
|
|
363
508
|
|
|
364
509
|
### Frontend
|
|
365
510
|
| Technology | Purpose | Version |
|
|
@@ -380,7 +525,7 @@ The developer documentation tool market is growing at 13% CAGR. Key growth drive
|
|
|
380
525
|
|-----------|---------|
|
|
381
526
|
| Vercel | Hosting |
|
|
382
527
|
| GitHub Actions | CI/CD |` },
|
|
383
|
-
architecture_diagram: { body: `## System Architecture
|
|
528
|
+
architecture_diagram: { subfolder: "architecture", body: `## System Architecture
|
|
384
529
|
|
|
385
530
|
**Level:** container
|
|
386
531
|
**Notation:** C4
|
|
@@ -398,30 +543,29 @@ High-level system architecture showing main containers and their interactions.
|
|
|
398
543
|
[API] --> [Database]
|
|
399
544
|
\`\`\`` },
|
|
400
545
|
integration: { subfolder: "integrations", frontmatterLinks: `decisions_ref: # Decisions related to this integration
|
|
401
|
-
-
|
|
546
|
+
- example-decision
|
|
402
547
|
links: # Universal links
|
|
403
|
-
- target:
|
|
548
|
+
- target: example-task
|
|
404
549
|
label: relates_to
|
|
405
|
-
- target:
|
|
550
|
+
- target: example-epic
|
|
406
551
|
label: relates_to`, body: `## GitHub Integration
|
|
407
552
|
|
|
408
|
-
**Provider:** GitHub
|
|
409
553
|
**Type:** oauth
|
|
410
554
|
**Status:** planned
|
|
411
555
|
|
|
412
|
-
|
|
413
|
-
|
|
556
|
+
Connect GitHub repositories to sync PRs, issues, and code context with project blocks.
|
|
557
|
+
|
|
558
|
+
**Documentation:** https://docs.github.com/en/rest
|
|
559
|
+
**Credentials:** Stored in environment variable GITHUB_TOKEN
|
|
414
560
|
|
|
415
|
-
###
|
|
416
|
-
**Base URL:** https://api.github.com
|
|
417
|
-
**Auth Method:** OAuth 2.0
|
|
418
|
-
**Rate Limit:** 5000 requests/hour
|
|
561
|
+
### Notes
|
|
419
562
|
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
563
|
+
- Uses OAuth 2.0 for user authentication
|
|
564
|
+
- Base URL: https://api.github.com
|
|
565
|
+
- Rate limit: 5000 requests/hour (authenticated)
|
|
566
|
+
- User connects GitHub account, app reads repository metadata
|
|
567
|
+
- PRs and issues are linked to relevant blocks automatically` },
|
|
568
|
+
dev_setup: { subfolder: "setup", body: `## Local Development Setup
|
|
425
569
|
|
|
426
570
|
### Prerequisites
|
|
427
571
|
- Node.js 20+
|
|
@@ -464,7 +608,7 @@ List all blocks for a project, optionally filtered by section.
|
|
|
464
608
|
]
|
|
465
609
|
}
|
|
466
610
|
\`\`\`` },
|
|
467
|
-
api_spec: { body: `## API Specification
|
|
611
|
+
api_spec: { subfolder: "api-specs", body: `## API Specification
|
|
468
612
|
|
|
469
613
|
**Version:** v1
|
|
470
614
|
**Base URL:** /api/v1
|
|
@@ -493,7 +637,7 @@ All endpoints require an API key passed in the X-API-Key header.` },
|
|
|
493
637
|
### Indexes
|
|
494
638
|
- Unique: (section_id, key)
|
|
495
639
|
- Index: status` },
|
|
496
|
-
data_schema: { body: `## Database Schema
|
|
640
|
+
data_schema: { subfolder: "schemas", body: `## Database Schema
|
|
497
641
|
|
|
498
642
|
### Overview
|
|
499
643
|
PostgreSQL database with JSONB content storage for flexible block schemas.
|
|
@@ -509,7 +653,7 @@ PostgreSQL database with JSONB content storage for flexible block schemas.
|
|
|
509
653
|
- JSONB for block values (flexible schema per type)
|
|
510
654
|
- UUID primary keys
|
|
511
655
|
- Row Level Security via Supabase` },
|
|
512
|
-
testing_strategy: { body: `## Testing Strategy
|
|
656
|
+
testing_strategy: { subfolder: "testing", body: `## Testing Strategy
|
|
513
657
|
|
|
514
658
|
### Philosophy
|
|
515
659
|
Test behavior, not implementation. Focus on user-facing functionality.
|
|
@@ -525,7 +669,7 @@ Test behavior, not implementation. Focus on user-facing functionality.
|
|
|
525
669
|
- API endpoint responses
|
|
526
670
|
- Block CRUD operations
|
|
527
671
|
- Export format correctness` },
|
|
528
|
-
cost_calculator: { body: `## Infrastructure Costs
|
|
672
|
+
cost_calculator: { subfolder: "costs", body: `## Infrastructure Costs
|
|
529
673
|
|
|
530
674
|
### Monthly Breakdown
|
|
531
675
|
| Service | Tier | Monthly Cost |
|
|
@@ -542,7 +686,7 @@ Test behavior, not implementation. Focus on user-facing functionality.
|
|
|
542
686
|
| 1,000 | $150 |
|
|
543
687
|
| 10,000 | $500 |` },
|
|
544
688
|
// Design System
|
|
545
|
-
storybook_link: { body: `## Component Library
|
|
689
|
+
storybook_link: { subfolder: "storybook", body: `## Component Library
|
|
546
690
|
|
|
547
691
|
**Storybook URL:** https://storybook.example.com
|
|
548
692
|
**Repository:** https://github.com/org/design-system
|
|
@@ -554,7 +698,7 @@ Test behavior, not implementation. Focus on user-facing functionality.
|
|
|
554
698
|
|
|
555
699
|
### Access
|
|
556
700
|
Requires EpicContext authentication token.` },
|
|
557
|
-
figma_embed: { body: `## Main Design File
|
|
701
|
+
figma_embed: { subfolder: "figma", body: `## Main Design File
|
|
558
702
|
|
|
559
703
|
**Figma URL:** https://figma.com/file/example
|
|
560
704
|
**Last Updated:** 2025-01-15
|
|
@@ -567,7 +711,7 @@ Requires EpicContext authentication token.` },
|
|
|
567
711
|
### Handoff Notes
|
|
568
712
|
Use Auto Layout for all new components. Follow 8px grid.` },
|
|
569
713
|
// Information Architecture
|
|
570
|
-
ia_tree: { body: `## Application Structure
|
|
714
|
+
ia_tree: { subfolder: "trees", body: `## Application Structure
|
|
571
715
|
|
|
572
716
|
### Description
|
|
573
717
|
Main navigation hierarchy for the web application.
|
|
@@ -601,7 +745,7 @@ Home
|
|
|
601
745
|
- status: draft, complete, empty
|
|
602
746
|
- audience: developer, designer, manager` },
|
|
603
747
|
// Metrics
|
|
604
|
-
metric: { body: `## Weekly Active Users
|
|
748
|
+
metric: { subfolder: "indicators", body: `## Weekly Active Users
|
|
605
749
|
|
|
606
750
|
**Metric Type:** kpi
|
|
607
751
|
**Category:** activation
|
|
@@ -617,7 +761,7 @@ Count distinct user IDs with any event in the last 7 days.
|
|
|
617
761
|
|
|
618
762
|
### Cadence
|
|
619
763
|
Measured weekly, reported in Monday standup.` },
|
|
620
|
-
north_star: { body: `## Blocks Completed Per Week
|
|
764
|
+
north_star: { subfolder: "north-stars", body: `## Blocks Completed Per Week
|
|
621
765
|
|
|
622
766
|
**Metric Type:** north_star
|
|
623
767
|
**Category:** activation
|
|
@@ -630,7 +774,7 @@ Total blocks marked as "complete" across all projects per week.
|
|
|
630
774
|
|
|
631
775
|
### Why This Metric
|
|
632
776
|
Blocks completed = documentation being actively maintained = product delivering value.` },
|
|
633
|
-
kpi: { body: `## Documentation Completeness
|
|
777
|
+
kpi: { subfolder: "kpis", body: `## Documentation Completeness
|
|
634
778
|
|
|
635
779
|
**Metric Type:** kpi
|
|
636
780
|
**Category:** activation
|
|
@@ -640,7 +784,7 @@ Blocks completed = documentation being actively maintained = product delivering
|
|
|
640
784
|
|
|
641
785
|
### Description
|
|
642
786
|
Percentage of blocks with status "complete" across all sections.` },
|
|
643
|
-
analytics_event: { body: `## block_completed
|
|
787
|
+
analytics_event: { subfolder: "events", body: `## block_completed
|
|
644
788
|
|
|
645
789
|
**Category:** activation
|
|
646
790
|
**Trigger:** User marks a block as complete
|
|
@@ -652,129 +796,169 @@ Percentage of blocks with status "complete" across all sections.` },
|
|
|
652
796
|
| section | string | Section the block belongs to |
|
|
653
797
|
| time_to_complete | number | Seconds from creation to completion |` },
|
|
654
798
|
// Decisions
|
|
655
|
-
decision: { frontmatterLinks: `epics_ref: # Epics affected by this decision
|
|
656
|
-
-
|
|
799
|
+
decision: { subfolder: "adrs", frontmatterLinks: `epics_ref: # Epics affected by this decision
|
|
800
|
+
- example-epic
|
|
657
801
|
integrations_ref: # Integrations related to this decision
|
|
658
|
-
-
|
|
802
|
+
- example-integration
|
|
659
803
|
links: # Universal links
|
|
660
|
-
- target:
|
|
804
|
+
- target: example-feature
|
|
661
805
|
label: informs
|
|
662
|
-
- target:
|
|
806
|
+
- target: example-competitor
|
|
663
807
|
label: references`, body: `## Use Supabase for Database
|
|
664
808
|
|
|
665
|
-
**Status:** accepted
|
|
666
809
|
**Date:** 2025-01-15
|
|
667
|
-
**
|
|
810
|
+
**Status:** accepted
|
|
668
811
|
|
|
669
812
|
### Context
|
|
670
|
-
|
|
813
|
+
|
|
814
|
+
Need a database solution that supports real-time subscriptions, built-in authentication, and JSONB storage for flexible block schemas.
|
|
671
815
|
|
|
672
816
|
### Options Considered
|
|
673
817
|
|
|
674
818
|
#### Option 1: Supabase
|
|
675
|
-
- **Pros:** Built-in auth, real-time, PostgreSQL, generous free tier
|
|
676
|
-
- **Cons:** Vendor lock-in, limited customization
|
|
819
|
+
- **Pros:** Built-in auth, real-time, PostgreSQL, generous free tier, Row Level Security
|
|
820
|
+
- **Cons:** Vendor lock-in, limited customization of auth flows
|
|
677
821
|
|
|
678
822
|
#### Option 2: PlanetScale
|
|
679
|
-
- **Pros:** MySQL, great scaling
|
|
680
|
-
- **Cons:** No JSONB support, separate auth needed
|
|
823
|
+
- **Pros:** MySQL, great scaling, branching workflow
|
|
824
|
+
- **Cons:** No JSONB support, separate auth needed, no real-time
|
|
681
825
|
|
|
682
826
|
### Decision
|
|
827
|
+
|
|
683
828
|
Choose Supabase for its combination of PostgreSQL, built-in auth, and real-time capabilities.
|
|
684
829
|
|
|
830
|
+
### Rationale
|
|
831
|
+
|
|
832
|
+
Supabase gives us PostgreSQL (needed for JSONB block storage), built-in auth (saves months of development), and real-time subscriptions (for collaborative editing). The trade-off of vendor lock-in is acceptable at our scale.
|
|
833
|
+
|
|
685
834
|
### Consequences
|
|
835
|
+
|
|
686
836
|
- Committed to PostgreSQL ecosystem
|
|
687
|
-
- Use Row Level Security for authorization
|
|
688
|
-
- Real-time updates available
|
|
689
|
-
|
|
837
|
+
- Use Row Level Security for authorization instead of custom middleware
|
|
838
|
+
- Real-time updates available out of the box
|
|
839
|
+
- Migration path exists to self-hosted Supabase if needed
|
|
840
|
+
|
|
841
|
+
### Evidence
|
|
842
|
+
|
|
843
|
+
- Supabase benchmarks show sub-50ms query times for our expected load
|
|
844
|
+
- Three comparable SaaS products successfully use Supabase at 10x our scale` },
|
|
845
|
+
meeting_notes: { subfolder: "meetings", body: `## Sprint Planning - Week 12
|
|
690
846
|
|
|
691
847
|
**Date:** 2025-03-15
|
|
848
|
+
**Type:** sprint_planning
|
|
692
849
|
**Attendees:** Engineering team
|
|
693
850
|
|
|
694
|
-
###
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
851
|
+
### Meeting Transcript
|
|
852
|
+
|
|
853
|
+
1. Reviewed completed work from last sprint — export API is 80% done
|
|
854
|
+
2. Discussed prioritization of upcoming features
|
|
855
|
+
3. Identified technical debt items: markdown parser edge cases, test coverage gaps
|
|
856
|
+
4. Agreed on sprint goals for next two weeks
|
|
698
857
|
|
|
699
858
|
### Decisions Made
|
|
700
|
-
|
|
859
|
+
|
|
860
|
+
- Prioritize export API completion for next sprint
|
|
701
861
|
- Defer dark mode to Q2
|
|
862
|
+
- Allocate 20% of sprint to technical debt
|
|
702
863
|
|
|
703
|
-
### Action Items
|
|
704
|
-
|
|
705
|
-
|
|
864
|
+
### Summary & Action Items
|
|
865
|
+
|
|
866
|
+
Sprint focus is completing the export system. Key actions:
|
|
867
|
+
- [ ] Create export API epic with remaining tasks
|
|
868
|
+
- [ ] Update roadmap to reflect Q2 dark mode timeline
|
|
869
|
+
- [ ] Schedule design review for export UI` },
|
|
706
870
|
// Development
|
|
707
|
-
epic: { subfolder: "epics", frontmatterLinks: `product_ref:
|
|
871
|
+
epic: { subfolder: "epics", frontmatterLinks: `product_ref: example-product-overview # Link to parent product
|
|
708
872
|
stories_ref: # List user stories in this epic
|
|
709
|
-
-
|
|
873
|
+
- example-user-story
|
|
710
874
|
links: # Universal links to related blocks across sections
|
|
711
|
-
- target:
|
|
875
|
+
- target: example-persona
|
|
712
876
|
label: relates_to
|
|
713
|
-
- target:
|
|
877
|
+
- target: example-decision
|
|
714
878
|
label: implements`, body: `## Context Export System
|
|
715
879
|
|
|
880
|
+
Enable teams to export their entire product context in multiple formats for AI agent consumption.
|
|
881
|
+
|
|
716
882
|
**Priority:** high
|
|
717
883
|
**Status:** planned
|
|
718
|
-
**Estimated Effort:** 3 sprints
|
|
719
884
|
|
|
720
|
-
###
|
|
721
|
-
Enable teams to export their entire product context in multiple formats for AI agent consumption.
|
|
885
|
+
### Goals
|
|
722
886
|
|
|
723
|
-
|
|
724
|
-
-
|
|
725
|
-
-
|
|
726
|
-
- JSON API endpoint
|
|
727
|
-
- MCP server integration
|
|
887
|
+
- Support markdown, llms.txt, and JSON export formats
|
|
888
|
+
- Enable AI coding agents to consume project context via MCP
|
|
889
|
+
- Provide both full-project and per-section exports
|
|
728
890
|
|
|
729
891
|
### Success Criteria
|
|
730
|
-
|
|
731
|
-
- [ ]
|
|
732
|
-
- [ ]
|
|
733
|
-
|
|
892
|
+
|
|
893
|
+
- [ ] Export generates valid markdown with correct frontmatter
|
|
894
|
+
- [ ] AI agents can consume exported context via MCP server
|
|
895
|
+
- [ ] Export updates automatically when content changes
|
|
896
|
+
- [ ] Per-section export available for focused context` },
|
|
897
|
+
user_story: { subfolder: "stories", frontmatterLinks: `epic_ref: example-epic # REQUIRED: Link to parent epic
|
|
734
898
|
personas_ref: # Who this story is for
|
|
735
|
-
-
|
|
899
|
+
- example-persona
|
|
736
900
|
links: # Universal links to related blocks
|
|
737
|
-
- target:
|
|
901
|
+
- target: example-feature
|
|
738
902
|
label: implements
|
|
739
|
-
- target:
|
|
903
|
+
- target: example-jtbd
|
|
740
904
|
label: relates_to`, body: `## Export Context as Markdown
|
|
741
905
|
|
|
906
|
+
Enable developers to export project context so AI coding agents can consume it.
|
|
907
|
+
|
|
742
908
|
**Priority:** high
|
|
743
909
|
**Status:** planned
|
|
744
|
-
**Story Points:** 5
|
|
745
910
|
|
|
746
911
|
### User Story
|
|
747
|
-
|
|
912
|
+
|
|
913
|
+
As a developer, I want to export my project context as markdown, so my AI coding agent can read it as structured documentation.
|
|
748
914
|
|
|
749
915
|
### Acceptance Criteria
|
|
916
|
+
|
|
750
917
|
- [ ] Export button on project settings page
|
|
751
|
-
- [ ] Generates valid markdown with frontmatter
|
|
752
|
-
- [ ] Includes all sections and blocks
|
|
753
|
-
- [ ] Downloads as .zip file` },
|
|
754
|
-
task: { subfolder: "tasks", frontmatterLinks: `story_ref:
|
|
918
|
+
- [ ] Generates valid markdown with YAML frontmatter
|
|
919
|
+
- [ ] Includes all sections and blocks grouped by section
|
|
920
|
+
- [ ] Downloads as .zip file with proper folder structure` },
|
|
921
|
+
task: { subfolder: "tasks", frontmatterLinks: `story_ref: example-user-story # REQUIRED: Link to parent user story
|
|
755
922
|
links: # Universal links to related blocks
|
|
756
|
-
- target:
|
|
923
|
+
- target: example-integration
|
|
757
924
|
label: depends_on
|
|
758
|
-
- target:
|
|
925
|
+
- target: example-decision
|
|
759
926
|
label: implements`, body: `## Implement Markdown Export API
|
|
760
927
|
|
|
761
|
-
|
|
928
|
+
Create a GET endpoint at /api/projects/[id]/markdown that generates a full markdown export of all project blocks.
|
|
929
|
+
|
|
762
930
|
**Status:** planned
|
|
763
931
|
**Estimated Hours:** 8
|
|
932
|
+
**Assignee:** backend-team
|
|
764
933
|
|
|
765
|
-
###
|
|
766
|
-
Create a GET endpoint at /api/projects/[id]/markdown that generates a full markdown export of all project blocks.
|
|
934
|
+
### Implementation Plan
|
|
767
935
|
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
936
|
+
1. Query all blocks for the project from database
|
|
937
|
+
2. Group blocks by section type
|
|
938
|
+
3. Apply markdown templates per block type from block-type-masters
|
|
939
|
+
4. Generate YAML frontmatter for each block
|
|
940
|
+
5. Bundle into downloadable zip with correct folder structure
|
|
941
|
+
6. Add caching to avoid regenerating unchanged blocks
|
|
773
942
|
|
|
774
|
-
###
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
943
|
+
### Technical Notes
|
|
944
|
+
|
|
945
|
+
Use the existing \`to-markdown.ts\` export functions. The markdown template is defined in each block type master's \`markdown.template\` field.
|
|
946
|
+
|
|
947
|
+
### Files Affected
|
|
948
|
+
|
|
949
|
+
- \`lib/export/to-markdown.ts\` — add zip bundling
|
|
950
|
+
- \`app/api/projects/[projectId]/markdown/route.ts\` — new endpoint
|
|
951
|
+
- \`lib/export/to-multi-file.ts\` — folder structure mapping
|
|
952
|
+
|
|
953
|
+
### Dependencies
|
|
954
|
+
|
|
955
|
+
- Block type masters must have markdown templates for all types
|
|
956
|
+
- Export auth middleware must be in place
|
|
957
|
+
|
|
958
|
+
### Outcome
|
|
959
|
+
|
|
960
|
+
Working GET endpoint that returns a zip file containing all project blocks as markdown files, organized by section.` },
|
|
961
|
+
roadmap: { subfolder: "roadmaps", body: `## Q1 2025 Roadmap
|
|
778
962
|
|
|
779
963
|
**Planning Horizon:** quarterly
|
|
780
964
|
|
|
@@ -794,7 +978,7 @@ Create a GET endpoint at /api/projects/[id]/markdown that generates a full markd
|
|
|
794
978
|
- Team invites
|
|
795
979
|
- Activity log
|
|
796
980
|
- Comments` },
|
|
797
|
-
impact_effort_matrix: { body: `## Product Prioritization Matrix
|
|
981
|
+
impact_effort_matrix: { subfolder: "matrices", body: `## Product Prioritization Matrix
|
|
798
982
|
|
|
799
983
|
### High Impact / Low Effort
|
|
800
984
|
- Smart notifications
|
|
@@ -813,7 +997,7 @@ Create a GET endpoint at /api/projects/[id]/markdown that generates a full markd
|
|
|
813
997
|
### Low Impact / High Effort
|
|
814
998
|
- Offline support
|
|
815
999
|
- Video embeds` },
|
|
816
|
-
kanban_board: { body: `## Sprint Board
|
|
1000
|
+
kanban_board: { subfolder: "boards", body: `## Sprint Board
|
|
817
1001
|
|
|
818
1002
|
### Backlog
|
|
819
1003
|
- Implement search
|
|
@@ -830,7 +1014,7 @@ Create a GET endpoint at /api/projects/[id]/markdown that generates a full markd
|
|
|
830
1014
|
- Project creation
|
|
831
1015
|
- Section navigation` },
|
|
832
1016
|
// Business Strategy
|
|
833
|
-
ogsm: { body: `## Annual OGSM
|
|
1017
|
+
ogsm: { subfolder: "ogsm", body: `## Annual OGSM
|
|
834
1018
|
|
|
835
1019
|
### Objective
|
|
836
1020
|
Become the leading context management platform for product teams.
|
|
@@ -851,7 +1035,7 @@ Become the leading context management platform for product teams.
|
|
|
851
1035
|
- Weekly active users growth rate
|
|
852
1036
|
- Conversion from free to paid
|
|
853
1037
|
- Feature adoption rate` },
|
|
854
|
-
business_model_canvas: { body: `## Business Model Canvas
|
|
1038
|
+
business_model_canvas: { subfolder: "canvases", body: `## Business Model Canvas
|
|
855
1039
|
|
|
856
1040
|
### Key Partners
|
|
857
1041
|
- AI tool providers (Anthropic, OpenAI)
|
|
@@ -873,28 +1057,43 @@ Become the leading context management platform for product teams.
|
|
|
873
1057
|
### Revenue Streams
|
|
874
1058
|
- SaaS subscription ($10-25/user/month)
|
|
875
1059
|
- Enterprise tier` },
|
|
876
|
-
swot_analysis: { body: `## SWOT Analysis
|
|
1060
|
+
swot_analysis: { subfolder: "swot", body: `## SWOT Analysis
|
|
877
1061
|
|
|
878
|
-
### Strengths
|
|
879
|
-
- First-mover in AI-native documentation
|
|
880
|
-
- Strong technical foundation
|
|
881
|
-
- MCP integration
|
|
1062
|
+
### Strengths (Internal, Helpful)
|
|
882
1063
|
|
|
883
|
-
|
|
884
|
-
-
|
|
885
|
-
-
|
|
886
|
-
-
|
|
1064
|
+
- First-mover in AI-native documentation space
|
|
1065
|
+
- Strong technical foundation with MCP integration
|
|
1066
|
+
- Structured block-based approach is unique in the market
|
|
1067
|
+
- Developer-friendly CLI and API
|
|
887
1068
|
|
|
888
|
-
###
|
|
889
|
-
- Growing AI tool adoption
|
|
890
|
-
- Developer tool market expanding
|
|
891
|
-
- Remote work driving documentation needs
|
|
1069
|
+
### Weaknesses (Internal, Harmful)
|
|
892
1070
|
|
|
893
|
-
|
|
894
|
-
-
|
|
895
|
-
-
|
|
896
|
-
-
|
|
897
|
-
|
|
1071
|
+
- Small team with limited bandwidth
|
|
1072
|
+
- No brand recognition yet in the market
|
|
1073
|
+
- Limited funding constrains marketing and hiring
|
|
1074
|
+
- Documentation of our own product is still incomplete
|
|
1075
|
+
|
|
1076
|
+
### Opportunities (External, Helpful)
|
|
1077
|
+
|
|
1078
|
+
- Growing AI tool adoption across development teams
|
|
1079
|
+
- Developer tool market expanding rapidly
|
|
1080
|
+
- Remote work driving documentation and context-sharing needs
|
|
1081
|
+
- MCP becoming a standard protocol for AI agent integrations
|
|
1082
|
+
|
|
1083
|
+
### Threats (External, Harmful)
|
|
1084
|
+
|
|
1085
|
+
- Large players (Notion, Confluence) adding AI features
|
|
1086
|
+
- New entrants with similar structured documentation vision
|
|
1087
|
+
- Market downturn reducing tool budgets at startups
|
|
1088
|
+
- Open-source alternatives could commoditize core features
|
|
1089
|
+
|
|
1090
|
+
### Key Action Items
|
|
1091
|
+
|
|
1092
|
+
- Double down on MCP integration as key differentiator
|
|
1093
|
+
- Build community around the open-source CLI before competitors catch up
|
|
1094
|
+
- Focus on developer experience to build organic growth
|
|
1095
|
+
- Secure partnerships with AI coding tool providers` },
|
|
1096
|
+
porters_five_forces: { subfolder: "porters", body: `## Porter's Five Forces Analysis
|
|
898
1097
|
|
|
899
1098
|
### Threat of New Entrants
|
|
900
1099
|
**Rating:** Medium
|
|
@@ -915,7 +1114,7 @@ Teams could use wikis, docs, or custom solutions.
|
|
|
915
1114
|
### Competitive Rivalry
|
|
916
1115
|
**Rating:** High
|
|
917
1116
|
Crowded market with well-funded competitors.` },
|
|
918
|
-
strategic_group_map: { body: `## Market Positioning Map
|
|
1117
|
+
strategic_group_map: { subfolder: "strategic-maps", body: `## Market Positioning Map
|
|
919
1118
|
|
|
920
1119
|
### Dimensions
|
|
921
1120
|
- **X-axis:** Target audience (Individual → Enterprise)
|
|
@@ -928,7 +1127,7 @@ We target the "developer sweet spot" — more powerful than Trello but simpler t
|
|
|
928
1127
|
1. **Launch:** Start with small teams
|
|
929
1128
|
2. **Grow:** Move to mid-market
|
|
930
1129
|
3. **Defend:** AI moat prevents commoditization` },
|
|
931
|
-
obeya_board: { body: `## Product Obeya Board
|
|
1130
|
+
obeya_board: { subfolder: "obeya", body: `## Product Obeya Board
|
|
932
1131
|
|
|
933
1132
|
### Vision & Strategy (North Wall)
|
|
934
1133
|
Platform vision: Make product context accessible to both humans and AI.
|
|
@@ -986,7 +1185,7 @@ Learn how product teams manage context documentation effectively. Discover tools
|
|
|
986
1185
|
4. Tools comparison
|
|
987
1186
|
5. Getting started guide` },
|
|
988
1187
|
// Environments
|
|
989
|
-
environment_link: { body: `## Production Environment
|
|
1188
|
+
environment_link: { subfolder: "environments", body: `## Production Environment
|
|
990
1189
|
|
|
991
1190
|
**URL:** https://app.example.com
|
|
992
1191
|
**Environment Type:** production
|
|
@@ -1001,7 +1200,7 @@ Learn how product teams manage context documentation effectively. Discover tools
|
|
|
1001
1200
|
- Uptime: Better Stack
|
|
1002
1201
|
- Errors: Sentry
|
|
1003
1202
|
- Analytics: PostHog` },
|
|
1004
|
-
release_note: { body: `## v1.2.0 - Export System
|
|
1203
|
+
release_note: { subfolder: "releases", body: `## v1.2.0 - Export System
|
|
1005
1204
|
|
|
1006
1205
|
**Version:** 1.2.0
|
|
1007
1206
|
**Date:** 2025-03-01
|
|
@@ -1035,7 +1234,7 @@ EpicContext is ready for public launch. Core features are complete, early users
|
|
|
1035
1234
|
### Recommendation
|
|
1036
1235
|
Proceed with public launch, focusing on developer community.` },
|
|
1037
1236
|
// Section Guide (generic - used across all sections)
|
|
1038
|
-
section_guide: { body: `## Overview
|
|
1237
|
+
section_guide: { subfolder: "guides", body: `## Overview
|
|
1039
1238
|
|
|
1040
1239
|
This section contains [description of section content].
|
|
1041
1240
|
|
|
@@ -1433,9 +1632,9 @@ export function readContextFolder(contextPath) {
|
|
|
1433
1632
|
}
|
|
1434
1633
|
}
|
|
1435
1634
|
else if (entry.isFile() && entry.name.endsWith(".md")) {
|
|
1436
|
-
// Skip README
|
|
1635
|
+
// Skip README and AI-GUIDE (examples are in hidden .examples/ folder, already skipped above)
|
|
1437
1636
|
const lowerName = entry.name.toLowerCase();
|
|
1438
|
-
if (lowerName !== "readme.md" && lowerName !== "ai-guide.md"
|
|
1637
|
+
if (lowerName !== "readme.md" && lowerName !== "ai-guide.md") {
|
|
1439
1638
|
const content = fs.readFileSync(fullPath, "utf-8");
|
|
1440
1639
|
files.push({
|
|
1441
1640
|
path: relativePath,
|
|
@@ -1601,9 +1800,9 @@ npx @epiccontext/mcp add-app ./apps/my-app --name "my-app"
|
|
|
1601
1800
|
}
|
|
1602
1801
|
}
|
|
1603
1802
|
/**
|
|
1604
|
-
* Generate
|
|
1803
|
+
* Generate example .md files inside a hidden `.examples/` folder in each section.
|
|
1605
1804
|
* These show AI agents the correct heading structure and format.
|
|
1606
|
-
* They are
|
|
1805
|
+
* They are hidden from file browsers (dot-prefixed folder) and skipped by push/import pipelines.
|
|
1607
1806
|
*/
|
|
1608
1807
|
/**
|
|
1609
1808
|
* Check if a section directory has any real (non-example, non-README) markdown files
|
|
@@ -1620,7 +1819,7 @@ function sectionHasRealBlocks(sectionDir) {
|
|
|
1620
1819
|
}
|
|
1621
1820
|
else if (entry.isFile() && entry.name.endsWith(".md")) {
|
|
1622
1821
|
const lower = entry.name.toLowerCase();
|
|
1623
|
-
if (lower !== "readme.md"
|
|
1822
|
+
if (lower !== "readme.md") {
|
|
1624
1823
|
return true;
|
|
1625
1824
|
}
|
|
1626
1825
|
}
|
|
@@ -1647,21 +1846,22 @@ function generateExampleFiles(contextPath, skipIfHasBlocks) {
|
|
|
1647
1846
|
// Skip sections that already have real blocks (upgrade mode)
|
|
1648
1847
|
if (skipIfHasBlocks && sectionsWithBlocks.has(info.folder))
|
|
1649
1848
|
continue;
|
|
1849
|
+
// Create the hidden .examples/ folder inside the section
|
|
1850
|
+
const examplesDir = path.join(contextPath, info.folder, ".examples");
|
|
1851
|
+
if (!fs.existsSync(examplesDir)) {
|
|
1852
|
+
fs.mkdirSync(examplesDir, { recursive: true });
|
|
1853
|
+
}
|
|
1650
1854
|
for (const blockType of info.blockTypes) {
|
|
1651
1855
|
const example = BLOCK_TYPE_EXAMPLES[blockType];
|
|
1652
1856
|
if (!example)
|
|
1653
1857
|
continue;
|
|
1654
|
-
//
|
|
1655
|
-
|
|
1656
|
-
if (
|
|
1657
|
-
|
|
1858
|
+
// Also create the actual subfolder (empty, for real blocks)
|
|
1859
|
+
const subfolderDir = path.join(contextPath, info.folder, example.subfolder);
|
|
1860
|
+
if (!fs.existsSync(subfolderDir)) {
|
|
1861
|
+
fs.mkdirSync(subfolderDir, { recursive: true });
|
|
1658
1862
|
}
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
fs.mkdirSync(targetDir, { recursive: true });
|
|
1662
|
-
}
|
|
1663
|
-
const filename = `_example-${blockType.replace(/_/g, "-")}.md`;
|
|
1664
|
-
const filePath = path.join(targetDir, filename);
|
|
1863
|
+
const filename = `${blockType.replace(/_/g, "-")}.md`;
|
|
1864
|
+
const filePath = path.join(examplesDir, filename);
|
|
1665
1865
|
// Don't overwrite existing example files
|
|
1666
1866
|
if (fs.existsSync(filePath))
|
|
1667
1867
|
continue;
|
|
@@ -1671,7 +1871,7 @@ function generateExampleFiles(contextPath, skipIfHasBlocks) {
|
|
|
1671
1871
|
const frontmatterLines = [
|
|
1672
1872
|
`type: ${blockType}`,
|
|
1673
1873
|
`section: ${sectionForFrontmatter}`,
|
|
1674
|
-
`key:
|
|
1874
|
+
`key: example-${blockType.replace(/_/g, "-")}`,
|
|
1675
1875
|
`name: "Example ${blockType.split("_").map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(" ")}"`,
|
|
1676
1876
|
`status: draft`,
|
|
1677
1877
|
`created: ${today}`,
|
|
@@ -1687,8 +1887,8 @@ ${frontmatterLines.join("\n")}
|
|
|
1687
1887
|
|
|
1688
1888
|
# Example: ${blockType.split("_").map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(" ")}
|
|
1689
1889
|
|
|
1690
|
-
> **This is an example file.**
|
|
1691
|
-
>
|
|
1890
|
+
> **This is an example file.** It shows the correct heading structure, format, and **how to link** for traceability.
|
|
1891
|
+
> Create your own blocks in the \`${example.subfolder}/\` folder next to this \`.examples/\` folder.
|
|
1692
1892
|
> Every block must trace back to what created it and forward to what it enables — see frontmatter above.
|
|
1693
1893
|
|
|
1694
1894
|
${example.body}
|
|
@@ -1805,6 +2005,10 @@ epicontext watch
|
|
|
1805
2005
|
- **Glossary**: Domain-specific terminology and definitions
|
|
1806
2006
|
- **Section Guide**: Overview and navigation for this section
|
|
1807
2007
|
|
|
2008
|
+
Organize files in subfolders:
|
|
2009
|
+
- \`constraints/\` - Constraint files
|
|
2010
|
+
- \`glossaries/\` - Glossary/terminology files
|
|
2011
|
+
|
|
1808
2012
|
This is the first section AI agents should read to understand project boundaries.`,
|
|
1809
2013
|
blockTypes: ["constraint", "glossary", "section_guide"],
|
|
1810
2014
|
},
|
|
@@ -1815,7 +2019,14 @@ This is the first section AI agents should read to understand project boundaries
|
|
|
1815
2019
|
- **Visual Identity**: Colors, typography, logo, icons, assets combined (use brand_visual_identity)
|
|
1816
2020
|
- **Brand Moodboard**: Inspiration and reference images for brand development
|
|
1817
2021
|
- **Tone of Voice**: Brand personality, voice archetype, vocabulary
|
|
1818
|
-
- **Messaging**: Elevator pitch, value propositions, CTAs
|
|
2022
|
+
- **Messaging**: Elevator pitch, value propositions, CTAs
|
|
2023
|
+
|
|
2024
|
+
Organize files in subfolders:
|
|
2025
|
+
- \`positioning/\` - Brand positioning files
|
|
2026
|
+
- \`visual-identity/\` - Visual identity files
|
|
2027
|
+
- \`moodboards/\` - Brand moodboard files
|
|
2028
|
+
- \`tone-of-voice/\` - Tone of voice files
|
|
2029
|
+
- \`messaging/\` - Messaging framework files`,
|
|
1819
2030
|
blockTypes: ["brand_positioning", "brand_visual_identity", "brand_moodboard", "tone_of_voice", "messaging_framework", "section_guide"],
|
|
1820
2031
|
},
|
|
1821
2032
|
"product": {
|
|
@@ -1825,7 +2036,14 @@ This is the first section AI agents should read to understand project boundaries
|
|
|
1825
2036
|
- **Features**: Individual feature definitions with acceptance criteria
|
|
1826
2037
|
- **Product Strategy Canvas**: Product-specific strategy and goals
|
|
1827
2038
|
- **Feature Market Analysis**: Competitive analysis for specific features
|
|
1828
|
-
- **Glossary**: Domain-specific terminology and definitions
|
|
2039
|
+
- **Glossary**: Domain-specific terminology and definitions
|
|
2040
|
+
|
|
2041
|
+
Organize files in subfolders:
|
|
2042
|
+
- \`overviews/\` - Product overview files
|
|
2043
|
+
- \`features/\` - Feature files
|
|
2044
|
+
- \`strategy/\` - Strategy canvas files
|
|
2045
|
+
- \`market-analysis/\` - Feature market analysis files
|
|
2046
|
+
- \`glossaries/\` - Glossary files`,
|
|
1829
2047
|
blockTypes: ["product_overview", "feature", "product_strategy_canvas", "feature_market_analysis", "glossary", "section_guide"],
|
|
1830
2048
|
},
|
|
1831
2049
|
"business-strategy": {
|
|
@@ -1836,7 +2054,15 @@ This is the first section AI agents should read to understand project boundaries
|
|
|
1836
2054
|
- **SWOT Analysis**: Strengths, weaknesses, opportunities, threats
|
|
1837
2055
|
- **Porter's Five Forces**: Competitive forces analysis
|
|
1838
2056
|
- **Strategic Group Map**: Market positioning visualization
|
|
1839
|
-
- **Obeya Board**: Visual management board
|
|
2057
|
+
- **Obeya Board**: Visual management board
|
|
2058
|
+
|
|
2059
|
+
Organize files in subfolders:
|
|
2060
|
+
- \`ogsm/\` - OGSM framework files
|
|
2061
|
+
- \`canvases/\` - Business model canvas files
|
|
2062
|
+
- \`swot/\` - SWOT analysis files
|
|
2063
|
+
- \`porters/\` - Porter's Five Forces files
|
|
2064
|
+
- \`strategic-maps/\` - Strategic group map files
|
|
2065
|
+
- \`obeya/\` - Obeya board files`,
|
|
1840
2066
|
blockTypes: ["ogsm", "business_model_canvas", "swot_analysis", "porters_five_forces", "strategic_group_map", "obeya_board", "section_guide"],
|
|
1841
2067
|
},
|
|
1842
2068
|
"users": {
|
|
@@ -1859,7 +2085,10 @@ Organize files in subfolders:
|
|
|
1859
2085
|
- **User Research**: Research documents with highlights and key insights
|
|
1860
2086
|
- **Research Data**: Tabular research data with charts and analysis
|
|
1861
2087
|
|
|
1862
|
-
Organize files in subfolders:
|
|
2088
|
+
Organize files in subfolders:
|
|
2089
|
+
- \`competitors/\` - Competitor analysis files
|
|
2090
|
+
- \`user-research/\` - User research files
|
|
2091
|
+
- \`data-research/\` - Research data files`,
|
|
1863
2092
|
blockTypes: ["competitor", "user_research", "research_data", "section_guide"],
|
|
1864
2093
|
},
|
|
1865
2094
|
"technical": {
|
|
@@ -1878,9 +2107,17 @@ Organize files in subfolders: \`competitors/\`, \`data-research/\``,
|
|
|
1878
2107
|
- **Cost Calculator**: Infrastructure and operational costs breakdown
|
|
1879
2108
|
|
|
1880
2109
|
Organize files in subfolders:
|
|
2110
|
+
- \`stacks/\` - Tech stack files
|
|
2111
|
+
- \`architecture/\` - Architecture diagram files
|
|
1881
2112
|
- \`integrations/\` - Integration files
|
|
2113
|
+
- \`constraints/\` - Constraint files
|
|
2114
|
+
- \`setup/\` - Dev setup files
|
|
1882
2115
|
- \`api/\` - API endpoint files
|
|
1883
|
-
- \`
|
|
2116
|
+
- \`api-specs/\` - API specification files
|
|
2117
|
+
- \`models/\` - Data model files
|
|
2118
|
+
- \`schemas/\` - Data schema files
|
|
2119
|
+
- \`testing/\` - Testing strategy files
|
|
2120
|
+
- \`costs/\` - Cost calculator files`,
|
|
1884
2121
|
blockTypes: ["tech_stack", "architecture_diagram", "integration", "constraint", "dev_setup", "api_endpoint", "api_spec", "data_model", "data_schema", "testing_strategy", "cost_calculator", "section_guide"],
|
|
1885
2122
|
},
|
|
1886
2123
|
"design-system": {
|
|
@@ -1891,6 +2128,10 @@ Organize files in subfolders:
|
|
|
1891
2128
|
- Use the storybook-template repo for easy setup
|
|
1892
2129
|
- **Figma Embed**: Link to Figma design files
|
|
1893
2130
|
|
|
2131
|
+
Organize files in subfolders:
|
|
2132
|
+
- \`storybook/\` - Storybook link files
|
|
2133
|
+
- \`figma/\` - Figma embed files
|
|
2134
|
+
|
|
1894
2135
|
Note: This section is for linking external design tools, not for documenting
|
|
1895
2136
|
components directly. Component documentation lives in Storybook.`,
|
|
1896
2137
|
blockTypes: ["storybook_link", "figma_embed", "section_guide"],
|
|
@@ -1906,6 +2147,10 @@ components directly. Component documentation lives in Storybook.`,
|
|
|
1906
2147
|
- Categories, tags, and content types
|
|
1907
2148
|
- Hierarchical organization of content
|
|
1908
2149
|
|
|
2150
|
+
Organize files in subfolders:
|
|
2151
|
+
- \`trees/\` - IA tree files
|
|
2152
|
+
- \`taxonomies/\` - Taxonomy files
|
|
2153
|
+
|
|
1909
2154
|
These blocks use visual editors in the EpicContext app.`,
|
|
1910
2155
|
blockTypes: ["ia_tree", "taxonomy", "section_guide"],
|
|
1911
2156
|
},
|
|
@@ -1919,6 +2164,12 @@ These blocks use visual editors in the EpicContext app.`,
|
|
|
1919
2164
|
- \`input\`: Leading indicators that drive other metrics
|
|
1920
2165
|
- **Analytics Events**: Event tracking definitions for implementation
|
|
1921
2166
|
|
|
2167
|
+
Organize files in subfolders:
|
|
2168
|
+
- \`indicators/\` - Metric files
|
|
2169
|
+
- \`north-stars/\` - North star metric files
|
|
2170
|
+
- \`kpis/\` - KPI files
|
|
2171
|
+
- \`events/\` - Analytics event files
|
|
2172
|
+
|
|
1922
2173
|
Use AARRR categories (acquisition, activation, retention, revenue, referral) for the \`category\` field.`,
|
|
1923
2174
|
blockTypes: ["metric", "north_star", "kpi", "analytics_event", "section_guide"],
|
|
1924
2175
|
},
|
|
@@ -1931,9 +2182,14 @@ Use AARRR categories (acquisition, activation, retention, revenue, referral) for
|
|
|
1931
2182
|
- Decision: What was decided?
|
|
1932
2183
|
- Rationale: Why this choice over alternatives?
|
|
1933
2184
|
- Consequences: What are the implications?
|
|
2185
|
+
- **Meeting Notes**: Sprint planning, retrospectives, key meetings
|
|
2186
|
+
|
|
2187
|
+
Organize files in subfolders:
|
|
2188
|
+
- \`adrs/\` - Architecture Decision Records
|
|
2189
|
+
- \`meetings/\` - Meeting notes
|
|
1934
2190
|
|
|
1935
2191
|
Good ADRs help future team members understand why things are built this way.`,
|
|
1936
|
-
blockTypes: ["decision", "section_guide"],
|
|
2192
|
+
blockTypes: ["decision", "meeting_notes", "section_guide"],
|
|
1937
2193
|
},
|
|
1938
2194
|
"development": {
|
|
1939
2195
|
description: "Epics, stories, tasks, and roadmaps",
|
|
@@ -1949,7 +2205,9 @@ Organize files in subfolders:
|
|
|
1949
2205
|
- \`epics/\` - Epic files
|
|
1950
2206
|
- \`stories/\` - User story files
|
|
1951
2207
|
- \`tasks/\` - Task/implementation plan files
|
|
1952
|
-
- \`roadmaps/\` - Roadmap files
|
|
2208
|
+
- \`roadmaps/\` - Roadmap files
|
|
2209
|
+
- \`matrices/\` - Impact/effort matrix files
|
|
2210
|
+
- \`boards/\` - Kanban board files`,
|
|
1953
2211
|
blockTypes: ["epic", "user_story", "task", "roadmap", "impact_effort_matrix", "kanban_board", "section_guide"],
|
|
1954
2212
|
},
|
|
1955
2213
|
"environments": {
|
|
@@ -1960,7 +2218,9 @@ Organize files in subfolders:
|
|
|
1960
2218
|
- **Release Notes**: Changelog and release documentation
|
|
1961
2219
|
- Version numbers, dates, and changes
|
|
1962
2220
|
|
|
1963
|
-
Organize files
|
|
2221
|
+
Organize files in subfolders:
|
|
2222
|
+
- \`environments/\` - Environment link files
|
|
2223
|
+
- \`releases/\` - Release note files`,
|
|
1964
2224
|
blockTypes: ["environment_link", "release_note", "section_guide"],
|
|
1965
2225
|
},
|
|
1966
2226
|
"marketing": {
|