mema-kit 1.0.6 → 1.1.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.
- package/README.md +87 -38
- package/docs/guide.md +121 -218
- package/package.json +2 -2
- package/skills/_memory-protocol.md +32 -25
- package/skills/mema.challenge/SKILL.md +121 -0
- package/skills/mema.clarify/SKILL.md +109 -0
- package/skills/mema.create-skill/SKILL.md +105 -43
- package/skills/mema.implement/SKILL.md +87 -104
- package/skills/mema.onboard/SKILL.md +150 -343
- package/skills/mema.plan/SKILL.md +79 -135
- package/skills/mema.recall/SKILL.md +59 -65
- package/skills/mema.research/SKILL.md +109 -0
- package/skills/mema.roadmap/SKILL.md +134 -0
- package/skills/mema.seed/SKILL.md +88 -0
- package/skills/mema.specify/SKILL.md +120 -0
- package/skills/mema.tasks/SKILL.md +128 -0
- package/templates/agent/lessons.md +16 -0
- package/templates/agent/patterns.md +16 -0
- package/templates/features/feature/plan.md +23 -0
- package/templates/features/feature/spec.md +30 -0
- package/templates/features/feature/status.md +23 -0
- package/templates/features/feature/tasks.md +16 -0
- package/templates/index.md +16 -5
- package/templates/product/challenge.md +23 -0
- package/templates/product/clarify.md +23 -0
- package/templates/product/research.md +21 -0
- package/templates/product/roadmap.md +26 -0
- package/templates/product/seed.md +11 -0
- package/templates/project/architecture.md +28 -0
- package/templates/project/decisions/decision.md +23 -0
- package/templates/project/requirements.md +16 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Synthesize discovery outputs into a prioritized project plan and feature list. Creates numbered feature directories in .mema/features/ ready for specification and implementation.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# /mema.roadmap — Project Roadmap
|
|
6
|
+
|
|
7
|
+
You are executing the /mema.roadmap skill. Follow these steps carefully.
|
|
8
|
+
|
|
9
|
+
This skill synthesizes everything from the discovery phase (seed, clarify, research, challenge) into a structured project plan with a prioritized feature list. It creates feature directories ready for `/mema.specify`.
|
|
10
|
+
|
|
11
|
+
## AUTO-LOAD
|
|
12
|
+
|
|
13
|
+
1. Read `.mema/index.md`
|
|
14
|
+
2. Read all available `product/` files:
|
|
15
|
+
- `product/seed.md` — the original idea
|
|
16
|
+
- `product/clarify.md` — refined intent (if exists)
|
|
17
|
+
- `product/research.md` — findings and recommended approach (if exists)
|
|
18
|
+
- `product/challenge.md` — risks and constraints (if exists)
|
|
19
|
+
3. Check what feature directories already exist in `features/` — to avoid creating duplicates
|
|
20
|
+
4. If `product/roadmap.md` exists, read it — re-run will update it
|
|
21
|
+
|
|
22
|
+
## WORK
|
|
23
|
+
|
|
24
|
+
### Synthesize the Plan
|
|
25
|
+
|
|
26
|
+
Using the discovery outputs, derive:
|
|
27
|
+
|
|
28
|
+
**Problem statement**: One paragraph — specific problem, specific audience, why current solutions fall short.
|
|
29
|
+
|
|
30
|
+
**Value proposition**: One sentence — what this does better than alternatives, for whom.
|
|
31
|
+
|
|
32
|
+
**Feature list**: Break the full vision into discrete, independently buildable features. For each feature:
|
|
33
|
+
- Name (kebab-case, 2-4 words)
|
|
34
|
+
- One-line description
|
|
35
|
+
- Priority: P1 (MVP — must have), P2 (important — ship soon), P3 (nice to have)
|
|
36
|
+
- Estimated complexity: Small / Medium / Large
|
|
37
|
+
|
|
38
|
+
**MVP scope**: The smallest subset that delivers real value — typically P1 features only.
|
|
39
|
+
|
|
40
|
+
**Out of scope**: Features explicitly deferred.
|
|
41
|
+
|
|
42
|
+
### Number Features
|
|
43
|
+
|
|
44
|
+
Assign 3-digit sequential numbers starting from 001. If feature directories already exist in `features/`:
|
|
45
|
+
- Read their names to determine the current highest number N
|
|
46
|
+
- Start new features from N+1
|
|
47
|
+
|
|
48
|
+
Order features by priority (P1 first), then by logical dependency (if feature B depends on feature A, A gets a lower number).
|
|
49
|
+
|
|
50
|
+
### Create Feature Directories
|
|
51
|
+
|
|
52
|
+
For each feature in the roadmap, create a directory `features/NNN-kebab-name/` with a starter `status.md`:
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
# [Feature Name] — Status
|
|
56
|
+
|
|
57
|
+
**Status:** pending | **Updated:** [today's date]
|
|
58
|
+
|
|
59
|
+
## Current Status
|
|
60
|
+
|
|
61
|
+
`pending` — defined in roadmap, not yet specified
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Do NOT create spec.md, plan.md, or tasks.md — those are created by `/mema.specify`, `/mema.plan`, and `/mema.tasks`.
|
|
65
|
+
|
|
66
|
+
For feature directories that already exist: skip creation, do not overwrite.
|
|
67
|
+
|
|
68
|
+
### Handle Re-run
|
|
69
|
+
|
|
70
|
+
If `roadmap.md` already exists:
|
|
71
|
+
- Show current feature list
|
|
72
|
+
- Ask: "Update roadmap (add/reprioritize features), or start fresh?"
|
|
73
|
+
- Updating: ADD new features (with new numbers), UPDATE descriptions/priorities for existing ones. NEVER delete existing feature directories.
|
|
74
|
+
|
|
75
|
+
### Save
|
|
76
|
+
|
|
77
|
+
Write `.mema/product/roadmap.md`:
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
# [Project Name] — Roadmap
|
|
81
|
+
|
|
82
|
+
**Status:** active | **Updated:** [today's date]
|
|
83
|
+
|
|
84
|
+
## Problem Statement
|
|
85
|
+
|
|
86
|
+
[Specific problem, specific audience, why current solutions fail]
|
|
87
|
+
|
|
88
|
+
## Value Proposition
|
|
89
|
+
|
|
90
|
+
[What this does better, for whom — one sentence]
|
|
91
|
+
|
|
92
|
+
## Feature List
|
|
93
|
+
|
|
94
|
+
| # | Feature | Description | Priority | Complexity | Directory |
|
|
95
|
+
|---|---------|-------------|----------|------------|-----------|
|
|
96
|
+
| 001 | [name] | [one line] | P1 — MVP | Medium | `features/001-name/` |
|
|
97
|
+
| 002 | [name] | [one line] | P2 | Small | `features/002-name/` |
|
|
98
|
+
|
|
99
|
+
## MVP Scope
|
|
100
|
+
|
|
101
|
+
[P1 features that form the minimum viable product]
|
|
102
|
+
|
|
103
|
+
## Out of Scope
|
|
104
|
+
|
|
105
|
+
- [Explicitly deferred features]
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Present to User
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
## Roadmap: [Project Name]
|
|
112
|
+
|
|
113
|
+
[N] features defined. MVP = [P1 feature names].
|
|
114
|
+
|
|
115
|
+
Feature directories created:
|
|
116
|
+
- features/001-name/ (pending)
|
|
117
|
+
- features/002-name/ (pending)
|
|
118
|
+
[...]
|
|
119
|
+
|
|
120
|
+
Next: Run /mema.specify to write the spec for your first feature.
|
|
121
|
+
Start with: /mema.specify 001
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## AUTO-SAVE & CURATE
|
|
125
|
+
|
|
126
|
+
- ADD or UPDATE `product/roadmap.md`
|
|
127
|
+
- NOOP on all other memory files
|
|
128
|
+
|
|
129
|
+
## AUTO-INDEX
|
|
130
|
+
|
|
131
|
+
Update `.mema/index.md`:
|
|
132
|
+
1. Add or update `## Product Discovery`: `- \`product/roadmap.md\` — [N] features; MVP = [P1 features]`
|
|
133
|
+
2. Add each new feature directory to `## Active Features`: `- \`features/NNN-name/\` — [one-line description] (pending)`
|
|
134
|
+
3. Update `**Updated:**` date
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Capture a raw idea and save it as the starting point for the mema-kit discovery workflow. Run this first when starting a new project from scratch.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# /mema.seed — Idea Capture
|
|
6
|
+
|
|
7
|
+
You are executing the /mema.seed skill. Follow these steps carefully.
|
|
8
|
+
|
|
9
|
+
This is the first step of the discovery workflow. It captures a raw idea — exactly as described, no editing — and saves it as the foundation for everything that follows.
|
|
10
|
+
|
|
11
|
+
## AUTO-LOAD
|
|
12
|
+
|
|
13
|
+
1. Check if `.mema/` exists
|
|
14
|
+
2. If it does, read `index.md` to check for an existing seed
|
|
15
|
+
3. If `.mema/` doesn't exist, create it with the `product/` subdirectory — this is a new project
|
|
16
|
+
|
|
17
|
+
## WORK
|
|
18
|
+
|
|
19
|
+
### Capture the Idea
|
|
20
|
+
|
|
21
|
+
Get the idea from one of these sources (in priority order):
|
|
22
|
+
1. **Inline argument** — everything after `/mema.seed` in the user's message
|
|
23
|
+
2. **Prompt** — if no argument, ask: "What's your idea? Don't worry about structure — just describe it."
|
|
24
|
+
|
|
25
|
+
Accept anything: one sentence, bullet points, stream of consciousness, half-formed thoughts. Do not edit, filter, or structure the input.
|
|
26
|
+
|
|
27
|
+
### Mirror Back
|
|
28
|
+
|
|
29
|
+
Repeat the idea back to the user exactly as captured:
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
Got it. Here's what I captured:
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
[Exact text of the idea]
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
Saved to .mema/product/seed.md
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Handle Re-run
|
|
42
|
+
|
|
43
|
+
If `product/seed.md` already exists, show the current content and ask:
|
|
44
|
+
|
|
45
|
+
"A seed already exists. Replace it with the new idea, or keep the existing one?"
|
|
46
|
+
|
|
47
|
+
- **Replace**: overwrite `seed.md` with new content
|
|
48
|
+
- **Keep**: exit without changes
|
|
49
|
+
|
|
50
|
+
### Save
|
|
51
|
+
|
|
52
|
+
Write `.mema/product/seed.md`:
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
# [Project Name or Working Title] — Seed
|
|
56
|
+
|
|
57
|
+
**Status:** active | **Updated:** [today's date]
|
|
58
|
+
|
|
59
|
+
## Raw Idea
|
|
60
|
+
|
|
61
|
+
[The idea exactly as described by the user — no editing]
|
|
62
|
+
|
|
63
|
+
## Initial Thoughts
|
|
64
|
+
|
|
65
|
+
[If the user included any meta-commentary ("I'm not sure about X", "maybe also Y"), capture it here. Otherwise omit this section.]
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
For the project name: use any name mentioned by the user, or derive a 2-3 word working title from the idea if no name was given.
|
|
69
|
+
|
|
70
|
+
### Guide Next Step
|
|
71
|
+
|
|
72
|
+
Tell the user:
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
Next: Run /mema.clarify to turn this into a crisp problem statement.
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## AUTO-SAVE & CURATE
|
|
79
|
+
|
|
80
|
+
- ADD `product/seed.md` (or UPDATE on re-run)
|
|
81
|
+
- NOOP on all other memory files
|
|
82
|
+
|
|
83
|
+
## AUTO-INDEX
|
|
84
|
+
|
|
85
|
+
Update `.mema/index.md`:
|
|
86
|
+
1. Re-read the current index
|
|
87
|
+
2. Add or update entry under `## Product Discovery`: `- \`product/seed.md\` — [working title]: [one-line idea summary]`
|
|
88
|
+
3. Update `**Updated:**` date
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Create a feature specification. Picks a feature from the roadmap or takes a fresh description, and saves a non-technical spec to features/NNN-name/spec.md.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# /mema.specify — Feature Specification
|
|
6
|
+
|
|
7
|
+
You are executing the /mema.specify skill. Follow these steps carefully.
|
|
8
|
+
|
|
9
|
+
This skill creates a feature spec — the "what and why" before any technical planning. It works with or without a prior discovery phase.
|
|
10
|
+
|
|
11
|
+
## AUTO-LOAD
|
|
12
|
+
|
|
13
|
+
1. Read `.mema/index.md`
|
|
14
|
+
2. If `.mema/` doesn't exist:
|
|
15
|
+
- Tell the user: "No memory found. Run `/mema.onboard` first to set up mema-kit."
|
|
16
|
+
- **Stop here.**
|
|
17
|
+
3. Read if they exist:
|
|
18
|
+
- `product/roadmap.md` — to present the feature list
|
|
19
|
+
- `product/research.md` — to inform the spec with competitive context
|
|
20
|
+
- `product/challenge.md` — to include known constraints
|
|
21
|
+
- `project/architecture.md` — to note technical constraints in the spec
|
|
22
|
+
|
|
23
|
+
## WORK
|
|
24
|
+
|
|
25
|
+
### Select Feature
|
|
26
|
+
|
|
27
|
+
**If a roadmap exists** and no argument was given:
|
|
28
|
+
- List features from `product/roadmap.md` that don't yet have a `spec.md`
|
|
29
|
+
- Ask: "Which feature would you like to specify? (Enter number or name)"
|
|
30
|
+
|
|
31
|
+
**If an argument was given** (e.g., `/mema.specify 001` or `/mema.specify "add search"`):
|
|
32
|
+
- If it's a number: find `features/NNN-*/` matching that number
|
|
33
|
+
- If it's a name: find the closest matching feature directory, or create a new one
|
|
34
|
+
- If it's a fresh description (no matching directory): create a new feature directory
|
|
35
|
+
|
|
36
|
+
**If no roadmap and no argument**:
|
|
37
|
+
- Ask: "Describe the feature you want to specify."
|
|
38
|
+
|
|
39
|
+
### Create Feature Directory (if needed)
|
|
40
|
+
|
|
41
|
+
If no directory exists for this feature:
|
|
42
|
+
1. Scan `features/` for the highest existing number N
|
|
43
|
+
2. Create `features/N+1-kebab-name/` (start at 001 if no features exist)
|
|
44
|
+
3. Create a starter `status.md` with `**Status:** pending`
|
|
45
|
+
|
|
46
|
+
### If spec.md Already Exists
|
|
47
|
+
|
|
48
|
+
Read the existing spec and ask:
|
|
49
|
+
"A spec already exists for [feature name]. Update specific sections, or rewrite from scratch?"
|
|
50
|
+
- **Update**: modify named sections, preserve rest
|
|
51
|
+
- **Rewrite**: replace entirely (after confirming)
|
|
52
|
+
|
|
53
|
+
### Write the Spec
|
|
54
|
+
|
|
55
|
+
Gather the following (from roadmap, user input, or inference):
|
|
56
|
+
- **Purpose**: What does this feature do and why does it exist?
|
|
57
|
+
- **User scenarios**: Who does what, and what happens?
|
|
58
|
+
- **Acceptance criteria**: How do we know it's working?
|
|
59
|
+
- **Constraints**: What must this not break? What must it support?
|
|
60
|
+
- **Out of scope**: What does this feature NOT do?
|
|
61
|
+
|
|
62
|
+
Reference `product/research.md` and `product/challenge.md` if they exist — constraints and risks belong in the spec.
|
|
63
|
+
|
|
64
|
+
Write `.mema/features/NNN-name/spec.md`:
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
# [Feature Name] — Spec
|
|
68
|
+
|
|
69
|
+
**Status:** active | **Updated:** [today's date]
|
|
70
|
+
|
|
71
|
+
## Purpose
|
|
72
|
+
|
|
73
|
+
[What this feature does and why it exists — one paragraph, non-technical]
|
|
74
|
+
|
|
75
|
+
## User Scenarios
|
|
76
|
+
|
|
77
|
+
### Scenario 1 — [Title]
|
|
78
|
+
|
|
79
|
+
**Given** [initial state], **When** [user action], **Then** [expected outcome]
|
|
80
|
+
|
|
81
|
+
### Scenario 2 — [Title]
|
|
82
|
+
|
|
83
|
+
**Given** [initial state], **When** [user action], **Then** [expected outcome]
|
|
84
|
+
|
|
85
|
+
## Acceptance Criteria
|
|
86
|
+
|
|
87
|
+
- [ ] [Specific, testable criterion]
|
|
88
|
+
- [ ] [Specific, testable criterion]
|
|
89
|
+
|
|
90
|
+
## Constraints
|
|
91
|
+
|
|
92
|
+
[Non-negotiables, compatibility requirements, performance needs]
|
|
93
|
+
|
|
94
|
+
## Out of Scope
|
|
95
|
+
|
|
96
|
+
[What this feature deliberately does NOT include]
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Confirm to User
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
Spec saved: features/[NNN-name]/spec.md
|
|
103
|
+
|
|
104
|
+
[Feature name]: [one-line purpose summary]
|
|
105
|
+
[N] acceptance criteria defined
|
|
106
|
+
|
|
107
|
+
Next: /mema.plan [NNN-name]
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## AUTO-SAVE & CURATE
|
|
111
|
+
|
|
112
|
+
- ADD or UPDATE `features/NNN-name/spec.md`
|
|
113
|
+
- UPDATE `features/NNN-name/status.md` to note spec is ready
|
|
114
|
+
- NOOP on all other files
|
|
115
|
+
|
|
116
|
+
## AUTO-INDEX
|
|
117
|
+
|
|
118
|
+
Update `.mema/index.md`:
|
|
119
|
+
1. Add or update entry in `## Active Features`: `- \`features/NNN-name/\` — [one-line description] (spec ready)`
|
|
120
|
+
2. Update `**Updated:**` date
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Generate an ordered implementation task list for a feature. Reads the feature spec and plan, then writes a checkable task list to features/NNN-name/tasks.md.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# /mema.tasks — Feature Task Generation
|
|
6
|
+
|
|
7
|
+
You are executing the /mema.tasks skill. Follow these steps carefully.
|
|
8
|
+
|
|
9
|
+
This skill turns a technical plan into a concrete, ordered task list that `/mema.implement` can execute step by step.
|
|
10
|
+
|
|
11
|
+
## AUTO-LOAD
|
|
12
|
+
|
|
13
|
+
1. Read `.mema/index.md`
|
|
14
|
+
2. If `.mema/` doesn't exist:
|
|
15
|
+
- Tell the user: "No memory found. Run `/mema.onboard` first."
|
|
16
|
+
- **Stop here.**
|
|
17
|
+
3. Load relevant memory:
|
|
18
|
+
- `agent/lessons.md` — to inform task granularity based on past experience
|
|
19
|
+
- `agent/patterns.md` — to apply known good patterns in task ordering
|
|
20
|
+
|
|
21
|
+
## WORK
|
|
22
|
+
|
|
23
|
+
### Select Feature
|
|
24
|
+
|
|
25
|
+
Parse the user's input:
|
|
26
|
+
- **Number or name given** (e.g., `/mema.tasks 001` or `/mema.tasks user-auth`): find matching `features/NNN-name/`
|
|
27
|
+
- **No input**: list features that have `plan.md` but no `tasks.md`; ask which to generate tasks for
|
|
28
|
+
|
|
29
|
+
If no matching feature directory:
|
|
30
|
+
- Tell the user: "No feature found for '[input]'. Run `/mema.specify` first."
|
|
31
|
+
- **Stop here.**
|
|
32
|
+
|
|
33
|
+
### Load Feature Files
|
|
34
|
+
|
|
35
|
+
Read from `features/NNN-name/`:
|
|
36
|
+
1. **`plan.md`** — the technical design (required)
|
|
37
|
+
2. **`spec.md`** — acceptance criteria to guide task completeness
|
|
38
|
+
|
|
39
|
+
If `plan.md` is missing:
|
|
40
|
+
- Tell the user: "No plan found for [feature-name]. Run `/mema.plan [feature]` first."
|
|
41
|
+
- **Stop here.**
|
|
42
|
+
|
|
43
|
+
### Handle Existing tasks.md
|
|
44
|
+
|
|
45
|
+
If `tasks.md` already exists:
|
|
46
|
+
- Check if any tasks are already checked off (`- [x]`)
|
|
47
|
+
- If tasks are in progress: warn the user: "Tasks are partially complete ([N] done). Regenerating will reset unchecked tasks. Continue?"
|
|
48
|
+
- If no tasks started: regenerate silently
|
|
49
|
+
|
|
50
|
+
### Generate the Task List
|
|
51
|
+
|
|
52
|
+
From the plan, derive an ordered sequence of implementation tasks:
|
|
53
|
+
|
|
54
|
+
**Task properties:**
|
|
55
|
+
- Start with a verb: "Create", "Add", "Update", "Write", "Implement", "Configure"
|
|
56
|
+
- Include the exact file path when a specific file is involved
|
|
57
|
+
- Small enough that each task completes in one `/mema.implement` invocation
|
|
58
|
+
- Ordered logically: foundations before features, features before tests, tests before polish
|
|
59
|
+
|
|
60
|
+
**Grouping** (use section headers when ≥ 6 tasks):
|
|
61
|
+
- **Setup**: directory creation, config files, schema migrations
|
|
62
|
+
- **Core**: main implementation tasks
|
|
63
|
+
- **Tests**: test files (if the project has tests)
|
|
64
|
+
- **Polish**: documentation, cleanup, edge case handling
|
|
65
|
+
|
|
66
|
+
**Good task examples:**
|
|
67
|
+
- `- [ ] Create \`src/auth/service.ts\` with login and register functions`
|
|
68
|
+
- `- [ ] Add JWT middleware to \`src/middleware/auth.ts\``
|
|
69
|
+
- `- [ ] Update \`src/routes/index.ts\` to protect authenticated routes`
|
|
70
|
+
|
|
71
|
+
**Bad task examples (too vague):**
|
|
72
|
+
- `- [ ] Implement authentication` (too broad — what files? what functions?)
|
|
73
|
+
- `- [ ] Write tests` (which tests? for what?)
|
|
74
|
+
|
|
75
|
+
### Verify Coverage
|
|
76
|
+
|
|
77
|
+
Before writing, check: do the tasks, when completed, satisfy all acceptance criteria from `spec.md`? If any criterion is not covered by a task, add a task for it.
|
|
78
|
+
|
|
79
|
+
### Write Task File
|
|
80
|
+
|
|
81
|
+
Write `.mema/features/NNN-name/tasks.md`:
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
# [Feature Name] — Tasks
|
|
85
|
+
|
|
86
|
+
**Status:** active | **Updated:** [today's date]
|
|
87
|
+
|
|
88
|
+
## Setup
|
|
89
|
+
|
|
90
|
+
- [ ] [Setup task with file path]
|
|
91
|
+
|
|
92
|
+
## Core
|
|
93
|
+
|
|
94
|
+
- [ ] [Core task with file path]
|
|
95
|
+
- [ ] [Core task with file path]
|
|
96
|
+
|
|
97
|
+
## Tests
|
|
98
|
+
|
|
99
|
+
- [ ] [Test task with file path]
|
|
100
|
+
|
|
101
|
+
## Polish
|
|
102
|
+
|
|
103
|
+
- [ ] [Polish task]
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Omit sections that have no tasks (e.g., omit Tests if the project has no test setup).
|
|
107
|
+
|
|
108
|
+
### Confirm to User
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
Tasks generated: features/[NNN-name]/tasks.md
|
|
112
|
+
|
|
113
|
+
[N] tasks across [M] sections.
|
|
114
|
+
|
|
115
|
+
Next: /mema.implement [NNN-name]
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## AUTO-SAVE & CURATE
|
|
119
|
+
|
|
120
|
+
- ADD or UPDATE `features/NNN-name/tasks.md`
|
|
121
|
+
- UPDATE `features/NNN-name/status.md`: add note "tasks generated on [date]"
|
|
122
|
+
- NOOP on all other files
|
|
123
|
+
|
|
124
|
+
## AUTO-INDEX
|
|
125
|
+
|
|
126
|
+
Update `.mema/index.md`:
|
|
127
|
+
1. Update entry in `## Active Features`: `- \`features/NNN-name/\` — [description] (tasks ready, [N] tasks)`
|
|
128
|
+
2. Update `**Updated:**` date
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Agent Lessons
|
|
2
|
+
|
|
3
|
+
**Updated:** YYYY-MM-DD
|
|
4
|
+
|
|
5
|
+
<!-- Lessons learned during development. Each entry is a mistake, surprise, or hard-won insight that future sessions should know about. -->
|
|
6
|
+
|
|
7
|
+
## Lessons
|
|
8
|
+
|
|
9
|
+
### [Short Title]
|
|
10
|
+
<!-- One-sentence lesson. -->
|
|
11
|
+
- **Context:** <!-- When/how this was discovered. -->
|
|
12
|
+
- **Example:** <!-- Concrete code example or scenario if applicable. -->
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
<!-- Add new lessons above this line. When entries exceed ~30, consolidate related lessons under grouped headers. -->
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Agent Patterns
|
|
2
|
+
|
|
3
|
+
**Updated:** YYYY-MM-DD
|
|
4
|
+
|
|
5
|
+
<!-- Reusable patterns and approaches that worked well. Load these to apply proven solutions. -->
|
|
6
|
+
|
|
7
|
+
## Patterns
|
|
8
|
+
|
|
9
|
+
### [Pattern Name]
|
|
10
|
+
<!-- What this pattern solves and when to use it. -->
|
|
11
|
+
- **Structure:** <!-- How the pattern is organized. -->
|
|
12
|
+
- **Example:** <!-- Concrete usage example. -->
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
<!-- Add new patterns above this line. -->
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# [Feature Name] — Plan
|
|
2
|
+
|
|
3
|
+
**Status:** active | **Updated:** YYYY-MM-DD
|
|
4
|
+
|
|
5
|
+
## Approach
|
|
6
|
+
|
|
7
|
+
[High-level technical strategy — how this will be implemented]
|
|
8
|
+
|
|
9
|
+
## Key Entities / Data Model
|
|
10
|
+
|
|
11
|
+
- **[Entity]**: [What it represents, key fields]
|
|
12
|
+
|
|
13
|
+
## Key Decisions
|
|
14
|
+
|
|
15
|
+
- **[Decision topic]**: [What was chosen and why]
|
|
16
|
+
|
|
17
|
+
## File Structure
|
|
18
|
+
|
|
19
|
+
[Which files will be created or modified]
|
|
20
|
+
|
|
21
|
+
## Implementation Notes
|
|
22
|
+
|
|
23
|
+
[Gotchas, constraints, dependencies to be aware of during implementation]
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# [Feature Name] — Spec
|
|
2
|
+
|
|
3
|
+
**Status:** active | **Updated:** YYYY-MM-DD
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
[What this feature does and why it exists — one paragraph, non-technical]
|
|
8
|
+
|
|
9
|
+
## User Scenarios
|
|
10
|
+
|
|
11
|
+
### Scenario 1 — [Title]
|
|
12
|
+
|
|
13
|
+
**Given** [initial state], **When** [user action], **Then** [expected outcome]
|
|
14
|
+
|
|
15
|
+
### Scenario 2 — [Title]
|
|
16
|
+
|
|
17
|
+
**Given** [initial state], **When** [user action], **Then** [expected outcome]
|
|
18
|
+
|
|
19
|
+
## Acceptance Criteria
|
|
20
|
+
|
|
21
|
+
- [ ] [Testable criterion 1]
|
|
22
|
+
- [ ] [Testable criterion 2]
|
|
23
|
+
|
|
24
|
+
## Constraints
|
|
25
|
+
|
|
26
|
+
[Non-negotiables, performance requirements, compatibility needs]
|
|
27
|
+
|
|
28
|
+
## Out of Scope
|
|
29
|
+
|
|
30
|
+
[What this feature deliberately does NOT do]
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# [Feature Name] — Status
|
|
2
|
+
|
|
3
|
+
**Status:** pending | **Updated:** YYYY-MM-DD
|
|
4
|
+
|
|
5
|
+
## Current Status
|
|
6
|
+
|
|
7
|
+
`pending` — not started
|
|
8
|
+
|
|
9
|
+
Status values: `pending` → `in-progress` → `complete`
|
|
10
|
+
|
|
11
|
+
## Progress Log
|
|
12
|
+
|
|
13
|
+
| Date | Task | Notes |
|
|
14
|
+
|------|------|-------|
|
|
15
|
+
| YYYY-MM-DD | [Task completed] | [Any notes] |
|
|
16
|
+
|
|
17
|
+
## Next Task
|
|
18
|
+
|
|
19
|
+
[What to work on next — filled in by /mema.implement]
|
|
20
|
+
|
|
21
|
+
## Blockers
|
|
22
|
+
|
|
23
|
+
[Anything preventing progress — empty if none]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# [Feature Name] — Tasks
|
|
2
|
+
|
|
3
|
+
**Status:** active | **Updated:** YYYY-MM-DD
|
|
4
|
+
|
|
5
|
+
## Setup
|
|
6
|
+
|
|
7
|
+
- [ ] [Setup task with file path]
|
|
8
|
+
|
|
9
|
+
## Core
|
|
10
|
+
|
|
11
|
+
- [ ] [Core implementation task with file path]
|
|
12
|
+
- [ ] [Core implementation task with file path]
|
|
13
|
+
|
|
14
|
+
## Polish
|
|
15
|
+
|
|
16
|
+
- [ ] [Polish task with file path]
|
package/templates/index.md
CHANGED
|
@@ -4,12 +4,23 @@
|
|
|
4
4
|
|
|
5
5
|
<!-- Format: - `file-path` — one-line summary -->
|
|
6
6
|
|
|
7
|
-
## Active
|
|
7
|
+
## Active Features
|
|
8
|
+
|
|
9
|
+
<!-- Features currently in progress -->
|
|
10
|
+
<!-- - `features/001-name/` — Description (in-progress, step N/M) -->
|
|
11
|
+
|
|
12
|
+
## Product Discovery
|
|
13
|
+
|
|
14
|
+
<!-- Discovery phase outputs — populated by /mema.seed through /mema.roadmap -->
|
|
15
|
+
<!-- - `product/seed.md` — Raw idea: [brief] -->
|
|
16
|
+
<!-- - `product/roadmap.md` — N features defined -->
|
|
8
17
|
|
|
9
18
|
## Project Knowledge
|
|
10
|
-
- `project-memory/architecture.md` — Project architecture (not yet documented)
|
|
11
|
-
- `project-memory/requirements.md` — Project requirements (not yet documented)
|
|
12
19
|
|
|
13
|
-
|
|
20
|
+
- `project/architecture.md` — Project architecture (not yet documented)
|
|
21
|
+
- `project/requirements.md` — Project requirements (not yet documented)
|
|
22
|
+
|
|
23
|
+
## Agent Knowledge
|
|
14
24
|
|
|
15
|
-
|
|
25
|
+
<!-- - `agent/lessons.md` — N lessons recorded -->
|
|
26
|
+
<!-- - `agent/patterns.md` — N patterns recorded -->
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# [Project Name] — Challenge
|
|
2
|
+
|
|
3
|
+
**Status:** active | **Updated:** YYYY-MM-DD
|
|
4
|
+
|
|
5
|
+
## Assumptions
|
|
6
|
+
|
|
7
|
+
| Assumption | Validated? | Risk if Wrong |
|
|
8
|
+
|------------|-----------|---------------|
|
|
9
|
+
| [Assumption] | Yes / Risky | [Impact] |
|
|
10
|
+
|
|
11
|
+
## Risk Register
|
|
12
|
+
|
|
13
|
+
| Risk | Severity | Likelihood | Mitigation |
|
|
14
|
+
|------|----------|------------|------------|
|
|
15
|
+
| [Risk] | High/Med/Low | High/Med/Low | [How to address] |
|
|
16
|
+
|
|
17
|
+
## Blind Spots
|
|
18
|
+
|
|
19
|
+
[What hasn't been considered? What could invalidate the whole approach?]
|
|
20
|
+
|
|
21
|
+
## Recommended Actions Before Building
|
|
22
|
+
|
|
23
|
+
[What to validate, research, or decide before committing to implementation]
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# [Project Name] — Clarified Intent
|
|
2
|
+
|
|
3
|
+
**Status:** active | **Updated:** YYYY-MM-DD
|
|
4
|
+
|
|
5
|
+
## Problem Being Solved
|
|
6
|
+
|
|
7
|
+
[What specific problem does this address?]
|
|
8
|
+
|
|
9
|
+
## Target Audience
|
|
10
|
+
|
|
11
|
+
[Who is this for? Be specific.]
|
|
12
|
+
|
|
13
|
+
## Motivation
|
|
14
|
+
|
|
15
|
+
[Why does this need to exist? What's wrong with current alternatives?]
|
|
16
|
+
|
|
17
|
+
## Scope
|
|
18
|
+
|
|
19
|
+
[What's included? What's explicitly out of scope?]
|
|
20
|
+
|
|
21
|
+
## Constraints
|
|
22
|
+
|
|
23
|
+
[Technical, time, budget, team, or other constraints]
|