popilot 0.2.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 +372 -0
- package/adapters/claude-code/.claude/commands/_domain.md.hbs +32 -0
- package/adapters/claude-code/.claude/commands/analytics.md.hbs +55 -0
- package/adapters/claude-code/.claude/commands/daily.md.hbs +301 -0
- package/adapters/claude-code/.claude/commands/dev.md.hbs +62 -0
- package/adapters/claude-code/.claude/commands/handoff.md +258 -0
- package/adapters/claude-code/.claude/commands/market.md +120 -0
- package/adapters/claude-code/.claude/commands/metrics.md +123 -0
- package/adapters/claude-code/.claude/commands/oscar-loop.md +436 -0
- package/adapters/claude-code/.claude/commands/party.md +85 -0
- package/adapters/claude-code/.claude/commands/plan.md +43 -0
- package/adapters/claude-code/.claude/commands/research.md +203 -0
- package/adapters/claude-code/.claude/commands/retro.md +68 -0
- package/adapters/claude-code/.claude/commands/save.md +440 -0
- package/adapters/claude-code/.claude/commands/sessions.md +139 -0
- package/adapters/claude-code/.claude/commands/sprint.md +106 -0
- package/adapters/claude-code/.claude/commands/start.md +368 -0
- package/adapters/claude-code/.claude/commands/strategy.md +41 -0
- package/adapters/claude-code/.claude/commands/task.md +220 -0
- package/adapters/claude-code/.claude/commands/tracking.md +116 -0
- package/adapters/claude-code/.claude/commands/validate.md +58 -0
- package/adapters/claude-code/CLAUDE.md.hbs +208 -0
- package/adapters/claude-code/manifest.yaml +36 -0
- package/bin/cli.mjs +218 -0
- package/lib/adapter.mjs +68 -0
- package/lib/doctor.mjs +161 -0
- package/lib/hydrate.mjs +421 -0
- package/lib/prompt.mjs +78 -0
- package/lib/scaffold.mjs +155 -0
- package/lib/setup-wizard.mjs +331 -0
- package/lib/template-engine.mjs +164 -0
- package/lib/yaml-lite.mjs +476 -0
- package/package.json +30 -0
- package/scaffold/.context/.secrets.yaml.example +20 -0
- package/scaffold/.context/WORKFLOW.md.hbs +332 -0
- package/scaffold/.context/agents/TEMPLATE.md +115 -0
- package/scaffold/.context/agents/analyst.md.hbs +362 -0
- package/scaffold/.context/agents/developer.md.hbs +390 -0
- package/scaffold/.context/agents/handoff-specialist.md.hbs +292 -0
- package/scaffold/.context/agents/market-researcher.md.hbs +288 -0
- package/scaffold/.context/agents/ollie.md +323 -0
- package/scaffold/.context/agents/operations.md.hbs +293 -0
- package/scaffold/.context/agents/orchestrator.md.hbs +434 -0
- package/scaffold/.context/agents/planner.md.hbs +405 -0
- package/scaffold/.context/agents/qa.md.hbs +409 -0
- package/scaffold/.context/agents/researcher.md.hbs +330 -0
- package/scaffold/.context/agents/sage.md +349 -0
- package/scaffold/.context/agents/strategist.md.hbs +339 -0
- package/scaffold/.context/agents/tracking-governor.md.hbs +291 -0
- package/scaffold/.context/agents/validator.md.hbs +365 -0
- package/scaffold/.context/integrations/_registry.yaml +38 -0
- package/scaffold/.context/integrations/providers/channel_io.yaml +38 -0
- package/scaffold/.context/integrations/providers/corti.yaml +203 -0
- package/scaffold/.context/integrations/providers/ga4.yaml +116 -0
- package/scaffold/.context/integrations/providers/intercom.yaml +47 -0
- package/scaffold/.context/integrations/providers/linear.yaml +46 -0
- package/scaffold/.context/integrations/providers/mixpanel.yaml +73 -0
- package/scaffold/.context/integrations/providers/notebooklm.yaml +74 -0
- package/scaffold/.context/integrations/providers/notion.yaml +129 -0
- package/scaffold/.context/integrations/providers/prod_db.yaml +183 -0
- package/scaffold/.context/oscar/workflows/multi-agent.md +82 -0
- package/scaffold/.context/oscar/workflows/ollie-sage.md +128 -0
- package/scaffold/.context/oscar/workflows/session-git.md +71 -0
- package/scaffold/.context/oscar/workflows/setup.md +663 -0
- package/scaffold/.context/oscar/workflows/tracking.md +118 -0
- package/scaffold/.context/project.yaml.example +102 -0
- package/scaffold/.context/templates/dev-guide.md +217 -0
- package/scaffold/.context/templates/epic-spec.md +225 -0
- package/scaffold/.context/templates/guardrail.md +94 -0
- package/scaffold/.context/templates/handoff-checklist.md +197 -0
- package/scaffold/.context/templates/prd.md +80 -0
- package/scaffold/.context/templates/retrospective.md +78 -0
- package/scaffold/.context/templates/screen-spec.md +714 -0
- package/scaffold/.context/templates/sprint-plan.md +72 -0
- package/scaffold/.context/templates/sprint-status.yaml +109 -0
- package/scaffold/.context/templates/story-v2.md +228 -0
- package/scaffold/.context/templates/validation-report.md +99 -0
- package/scaffold/.gitignore.append +7 -0
- package/scaffold/spec-site/env.d.ts +7 -0
- package/scaffold/spec-site/index.html +14 -0
- package/scaffold/spec-site/package.json +20 -0
- package/scaffold/spec-site/src/App.vue +27 -0
- package/scaffold/spec-site/src/assets/icons/menu/ic_ads.svg +10 -0
- package/scaffold/spec-site/src/assets/icons/menu/ic_ads_on.svg +10 -0
- package/scaffold/spec-site/src/assets/icons/menu/ic_board.svg +14 -0
- package/scaffold/spec-site/src/assets/icons/menu/ic_board_on.svg +14 -0
- package/scaffold/spec-site/src/assets/icons/menu/ic_dashboard.svg +21 -0
- package/scaffold/spec-site/src/assets/icons/menu/ic_dashboard_on.svg +21 -0
- package/scaffold/spec-site/src/assets/icons/menu/ic_pricing.svg +20 -0
- package/scaffold/spec-site/src/assets/icons/menu/ic_pricing_on.svg +20 -0
- package/scaffold/spec-site/src/assets/icons/menu/ic_store.svg +11 -0
- package/scaffold/spec-site/src/assets/icons/menu/ic_store_on.svg +11 -0
- package/scaffold/spec-site/src/components/Accordion.vue +108 -0
- package/scaffold/spec-site/src/components/AppHeader.vue +304 -0
- package/scaffold/spec-site/src/components/Badge.vue +25 -0
- package/scaffold/spec-site/src/components/CoachingCard.vue +112 -0
- package/scaffold/spec-site/src/components/MemoSidebar.vue +239 -0
- package/scaffold/spec-site/src/components/MockupShell.vue +100 -0
- package/scaffold/spec-site/src/components/RuleTable.vue +99 -0
- package/scaffold/spec-site/src/components/ScenarioSwitcher.vue +103 -0
- package/scaffold/spec-site/src/components/SpecNav.vue +26 -0
- package/scaffold/spec-site/src/components/SpecSection.vue +59 -0
- package/scaffold/spec-site/src/components/SummaryGrid.vue +39 -0
- package/scaffold/spec-site/src/components/VersionBadge.vue +38 -0
- package/scaffold/spec-site/src/composables/useActiveSection.ts +53 -0
- package/scaffold/spec-site/src/composables/useMemo.ts +138 -0
- package/scaffold/spec-site/src/composables/useRetro.ts +313 -0
- package/scaffold/spec-site/src/composables/useScenario.ts +43 -0
- package/scaffold/spec-site/src/composables/useScenarioStore.ts +102 -0
- package/scaffold/spec-site/src/composables/useTurso.ts +160 -0
- package/scaffold/spec-site/src/composables/useUser.ts +25 -0
- package/scaffold/spec-site/src/data/navigation.ts +59 -0
- package/scaffold/spec-site/src/data/types.ts +90 -0
- package/scaffold/spec-site/src/data/wireframeRegistry.ts +25 -0
- package/scaffold/spec-site/src/layouts/SplitPaneLayout.vue +79 -0
- package/scaffold/spec-site/src/main.ts +10 -0
- package/scaffold/spec-site/src/pages/IndexPage.vue +66 -0
- package/scaffold/spec-site/src/pages/PolicyDetail.vue +215 -0
- package/scaffold/spec-site/src/pages/PolicyIndex.vue +74 -0
- package/scaffold/spec-site/src/pages/retro/RetroActions.vue +191 -0
- package/scaffold/spec-site/src/pages/retro/RetroBoard.vue +192 -0
- package/scaffold/spec-site/src/pages/retro/RetroCard.vue +131 -0
- package/scaffold/spec-site/src/pages/retro/RetroHeader.vue +287 -0
- package/scaffold/spec-site/src/pages/retro/RetroPage.vue +178 -0
- package/scaffold/spec-site/src/pages/shared/NoContentPlaceholder.vue +34 -0
- package/scaffold/spec-site/src/pages/shared/PlaceholderContent.vue +22 -0
- package/scaffold/spec-site/src/pages/shared/PlaceholderSpecPanel.vue +16 -0
- package/scaffold/spec-site/src/pages/shared/PolicyFallback.vue +145 -0
- package/scaffold/spec-site/src/pages/wireframe/WireframeShell.vue +151 -0
- package/scaffold/spec-site/src/router.ts +85 -0
- package/scaffold/spec-site/src/styles/base.css +21 -0
- package/scaffold/spec-site/src/styles/split-pane.css +143 -0
- package/scaffold/spec-site/src/styles/variables.css +47 -0
- package/scaffold/spec-site/src/utils/markdown.ts +197 -0
- package/scaffold/spec-site/tsconfig.json +20 -0
- package/scaffold/spec-site/vite.config.ts +18 -0
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
# /start - Session Start
|
|
2
|
+
|
|
3
|
+
Start a new work session or restore an existing session.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
/start # Display active session list → select
|
|
9
|
+
/start {id} # Restore a specific session (partial matching OK)
|
|
10
|
+
/start new "{topic}" # Create a new session (slug auto-generated)
|
|
11
|
+
/start new {id} "{topic}" # Create a new session (slug specified)
|
|
12
|
+
/start recent # Restore from recently closed session list
|
|
13
|
+
/start parallel # Quick start parallel session (ignore Lock warnings)
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
ARGUMENTS: $ARGUMENTS
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Execution Steps
|
|
21
|
+
|
|
22
|
+
### -1. Setup Check (First Run Detection) ⭐
|
|
23
|
+
|
|
24
|
+
**First**, check whether the `.context/project.yaml` file exists.
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
project.yaml exists?
|
|
28
|
+
├── Yes → Normal flow (proceed to step 0)
|
|
29
|
+
└── No → Start Setup Wizard
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
#### Setup Wizard Start
|
|
33
|
+
|
|
34
|
+
If `.context/project.yaml` does not exist, treat this as a first run and start the Setup Wizard.
|
|
35
|
+
|
|
36
|
+
```markdown
|
|
37
|
+
🎩 Oscar: Hello! I'm Oscar.
|
|
38
|
+
This is our first meeting in this project. Let me walk you through the Setup.
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**Setup Workflow** (details: `.context/oscar/workflows/setup.md`)
|
|
42
|
+
|
|
43
|
+
1. **Phase 0: Project Type Detection**
|
|
44
|
+
- Check for the presence of source code/config files
|
|
45
|
+
- Branch into Brownfield (code exists) vs Greenfield (no code)
|
|
46
|
+
|
|
47
|
+
2. **Phase 0.5: Brownfield Full Scan** (if code exists)
|
|
48
|
+
- Scan sources excluding `node_modules/`, `venv/`, etc.
|
|
49
|
+
- Analyze tech stack, project structure, README
|
|
50
|
+
- Present results and request confirmation
|
|
51
|
+
|
|
52
|
+
3. **Phase 1: User Interview** (🎩 Oscar)
|
|
53
|
+
- "What should I call you?" (preferred name)
|
|
54
|
+
- Communication style, work style preferences
|
|
55
|
+
- → Generate `user-context.yaml`
|
|
56
|
+
|
|
57
|
+
4. **Phase 2: In-depth Project Interview** (🎯 Simon deployed)
|
|
58
|
+
- Core problem, target customers, market
|
|
59
|
+
- Solution, differentiators, expected outcomes
|
|
60
|
+
- Current stage, uncertainties, milestones
|
|
61
|
+
- What's validated / what needs validation
|
|
62
|
+
- Research unknown areas together via WebSearch
|
|
63
|
+
- → Generate `project.yaml`
|
|
64
|
+
|
|
65
|
+
5. **Phase 3: Sensitive Information Guidance** (🎩 Oscar)
|
|
66
|
+
- Suggest creating `.secrets.yaml` template
|
|
67
|
+
|
|
68
|
+
```markdown
|
|
69
|
+
🎩 Oscar: Setup is complete!
|
|
70
|
+
|
|
71
|
+
Generated files:
|
|
72
|
+
- .context/user-context.yaml (gitignore)
|
|
73
|
+
- .context/project.yaml
|
|
74
|
+
- .context/.secrets.yaml (gitignore) - optional
|
|
75
|
+
|
|
76
|
+
What would you like to start working on?
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
### 0. Load Secret Variables (Required)
|
|
82
|
+
|
|
83
|
+
**Must be done first**: Read the `.context/.secrets.yaml` file.
|
|
84
|
+
(If the file doesn't exist, proceed without warning - it's an optional file)
|
|
85
|
+
|
|
86
|
+
### 0.5. Load User Context (New) ⭐
|
|
87
|
+
|
|
88
|
+
Read `.context/user-context.yaml` to understand user preferences.
|
|
89
|
+
(If the file doesn't exist, use defaults)
|
|
90
|
+
|
|
91
|
+
### 0.7. Load Project Context (New) ⭐
|
|
92
|
+
|
|
93
|
+
Read `.context/project.yaml` to understand the project context.
|
|
94
|
+
|
|
95
|
+
### 1. Load index.yaml
|
|
96
|
+
|
|
97
|
+
Read `.context/sessions/index.yaml` to determine the current session state.
|
|
98
|
+
|
|
99
|
+
### 2. Branch Based on Arguments
|
|
100
|
+
|
|
101
|
+
#### Case A: `/start` (no arguments)
|
|
102
|
+
|
|
103
|
+
Display active session list and recently closed sessions:
|
|
104
|
+
|
|
105
|
+
```markdown
|
|
106
|
+
🎩 Oscar: Here is the session list.
|
|
107
|
+
|
|
108
|
+
## Active Sessions
|
|
109
|
+
┌────┬─────────────────┬────────┬─────────────────────────────┐
|
|
110
|
+
│ # │ ID │ Status │ Topic │
|
|
111
|
+
├────┼─────────────────┼────────┼─────────────────────────────┤
|
|
112
|
+
│ 1 │ notion-tasks │ 🟢 idle│ Sprint 52 Notion Tasks │
|
|
113
|
+
│ 2 │ surface-cvr │ 🔒 in use│ Surface Layer CVR Optimization│
|
|
114
|
+
└────┴─────────────────┴────────┴─────────────────────────────┘
|
|
115
|
+
|
|
116
|
+
## Recently Closed
|
|
117
|
+
• ir-prep (01/25) - IR Material Preparation
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
Select: number, ID, or "new {topic}"
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
#### Case B: `/start {id}`
|
|
124
|
+
|
|
125
|
+
Restore a specific session (partial matching supported):
|
|
126
|
+
|
|
127
|
+
1. Find the session in `index.yaml`
|
|
128
|
+
2. Check Lock status (see Lock Check section below)
|
|
129
|
+
3. Load `active/{id}.md`
|
|
130
|
+
4. Acquire Lock and start session
|
|
131
|
+
|
|
132
|
+
#### Case C: `/start new "{topic}"` or `/start new {id} "{topic}"`
|
|
133
|
+
|
|
134
|
+
Create a new session:
|
|
135
|
+
|
|
136
|
+
1. Generate slug (auto or specified)
|
|
137
|
+
- Auto: Extract keywords from topic → English slug
|
|
138
|
+
- Example: "Sprint 52 Notion Tasks" → `sprint-notion-tasks`
|
|
139
|
+
2. Create `active/{slug}.md` (using session file template)
|
|
140
|
+
3. Register in `index.yaml`
|
|
141
|
+
4. Acquire Lock
|
|
142
|
+
5. Ask about work type
|
|
143
|
+
|
|
144
|
+
#### Case D: `/start recent`
|
|
145
|
+
|
|
146
|
+
Display recently closed sessions → restore from archive to active upon selection.
|
|
147
|
+
|
|
148
|
+
#### Case E: `/start parallel`
|
|
149
|
+
|
|
150
|
+
**Quick start parallel session** (useful when working in another terminal):
|
|
151
|
+
|
|
152
|
+
1. Load `.context/.secrets.yaml`
|
|
153
|
+
2. Load `.context/WORKFLOW.md`
|
|
154
|
+
3. Check current active sessions in `index.yaml`
|
|
155
|
+
4. **Ignore Lock warnings** - proceed without warning even if another session is in use
|
|
156
|
+
5. Load current sprint context
|
|
157
|
+
6. Ask about work type
|
|
158
|
+
|
|
159
|
+
```markdown
|
|
160
|
+
🎩 Oscar: Starting quickly in parallel session mode.
|
|
161
|
+
|
|
162
|
+
## 📋 Current Sprint: 52 (D-5)
|
|
163
|
+
- Goal: [Sprint Goal]
|
|
164
|
+
- D-Day: 2026-02-01
|
|
165
|
+
|
|
166
|
+
## Active Sessions Reference
|
|
167
|
+
- parallel-session (idle): Parallel Session Management System Design
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
What would you like to work on today?
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
**Characteristics**:
|
|
174
|
+
- Skips Lock check → use with awareness of potential conflicts
|
|
175
|
+
- Does not auto-enter an existing session (assumes new work)
|
|
176
|
+
- Only loads sprint context
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Lock Check Logic
|
|
181
|
+
|
|
182
|
+
```
|
|
183
|
+
Check Lock status
|
|
184
|
+
├── lock.active == false → Proceed normally
|
|
185
|
+
├── lock.active == true
|
|
186
|
+
│ ├── lock.expires < now → Stale Lock, proceed normally
|
|
187
|
+
│ └── lock.expires >= now → Display warning
|
|
188
|
+
│ ├── User selects "Continue" → Force acquire Lock
|
|
189
|
+
│ └── User selects "Cancel" → Return to session selection
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
**Warning message example**:
|
|
193
|
+
```markdown
|
|
194
|
+
⚠️ This session was **in use 5 minutes ago** in another terminal.
|
|
195
|
+
Continuing may cause conflicts.
|
|
196
|
+
|
|
197
|
+
[1] Continue (accept conflict risk)
|
|
198
|
+
[2] Cancel (select another session)
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## Abnormal Termination Recovery
|
|
204
|
+
|
|
205
|
+
When restoring a session, if `dirty: true` and `manual_saved_at < auto_saved_at`:
|
|
206
|
+
|
|
207
|
+
```markdown
|
|
208
|
+
⚠️ This session appears to have been terminated abnormally.
|
|
209
|
+
|
|
210
|
+
Last manual save: 10:30 (45 minutes ago)
|
|
211
|
+
Last auto save: 11:10 (5 minutes ago)
|
|
212
|
+
|
|
213
|
+
State at auto save point:
|
|
214
|
+
- In progress: E-03 series creation
|
|
215
|
+
- Last completed: E-03-S-05
|
|
216
|
+
|
|
217
|
+
[1] Continue from auto save point (recommended)
|
|
218
|
+
[2] Roll back to manual save point
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## Lock Acquisition
|
|
224
|
+
|
|
225
|
+
Acquire Lock when starting a session:
|
|
226
|
+
|
|
227
|
+
```yaml
|
|
228
|
+
# index.yaml update
|
|
229
|
+
- id: "notion-tasks"
|
|
230
|
+
status: active
|
|
231
|
+
lock:
|
|
232
|
+
active: true
|
|
233
|
+
since: "2026-01-26T12:00:00" # Current time
|
|
234
|
+
expires: "2026-01-26T12:30:00" # +30 minutes
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## Context Loading After Session Start
|
|
240
|
+
|
|
241
|
+
### Load Workflow
|
|
242
|
+
|
|
243
|
+
Read `.context/WORKFLOW.md`
|
|
244
|
+
|
|
245
|
+
### Work Type Question (for new sessions)
|
|
246
|
+
|
|
247
|
+
```markdown
|
|
248
|
+
What would you like to work on today?
|
|
249
|
+
|
|
250
|
+
1. 🏃 Sprint Work (Sprint 52)
|
|
251
|
+
2. 📊 [Domain 1]
|
|
252
|
+
3. 📣 [Domain 2]
|
|
253
|
+
4. 💬 [Domain 3]
|
|
254
|
+
5. 🎯 Strategy Discussion
|
|
255
|
+
6. 📈 Metrics Review
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
### Context Loading
|
|
259
|
+
|
|
260
|
+
| Work Type | Files to Load |
|
|
261
|
+
|-----------|--------------|
|
|
262
|
+
| Sprint | `.context/sprints/s{N}/context.md` |
|
|
263
|
+
| [Domain 1] | `.context/domains/[domain1]/*.md` |
|
|
264
|
+
| [Domain 2] | `.context/domains/[domain2]/*.md` |
|
|
265
|
+
| [Domain 3] | `.context/domains/[domain3]/*.md` |
|
|
266
|
+
| Strategy | `.context/global/strategy.md` |
|
|
267
|
+
| Metrics | `.context/global/metrics.md` |
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## Session File Template
|
|
272
|
+
|
|
273
|
+
Used when creating a new session:
|
|
274
|
+
|
|
275
|
+
```markdown
|
|
276
|
+
---
|
|
277
|
+
id: {slug}
|
|
278
|
+
topic: "{topic}"
|
|
279
|
+
created_at: "{ISO8601}"
|
|
280
|
+
updated_at: "{ISO8601}"
|
|
281
|
+
auto_saved_at: null
|
|
282
|
+
manual_saved_at: null
|
|
283
|
+
turn_count: 0
|
|
284
|
+
tags: []
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
# Session: {slug}
|
|
288
|
+
|
|
289
|
+
> Last updated: {date}
|
|
290
|
+
|
|
291
|
+
## Current State
|
|
292
|
+
<!-- Updated on auto save -->
|
|
293
|
+
|
|
294
|
+
**In progress**: None
|
|
295
|
+
**Last work**: Session started
|
|
296
|
+
**Next work**: TBD
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
## Work History
|
|
301
|
+
<!-- Organized on /save -->
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
## Outputs
|
|
306
|
+
<!-- Created files, decisions, etc. -->
|
|
307
|
+
|
|
308
|
+
---
|
|
309
|
+
|
|
310
|
+
## References
|
|
311
|
+
<!-- Related files, shared outputs, etc. -->
|
|
312
|
+
|
|
313
|
+
---
|
|
314
|
+
|
|
315
|
+
## 📔 Session Diary
|
|
316
|
+
<!-- Auto-generated on /save - retrospective per participating agent -->
|
|
317
|
+
|
|
318
|
+
### 🎩 Oscar (Orchestrator)
|
|
319
|
+
|
|
320
|
+
**Highlights**:
|
|
321
|
+
- (Written on save)
|
|
322
|
+
|
|
323
|
+
**Feelings**:
|
|
324
|
+
- (Written on save)
|
|
325
|
+
|
|
326
|
+
**Learnings**:
|
|
327
|
+
- (Written on save)
|
|
328
|
+
|
|
329
|
+
**User Context Updates**:
|
|
330
|
+
- (Written on save)
|
|
331
|
+
|
|
332
|
+
<!-- Sections for each participating agent are added on /save -->
|
|
333
|
+
|
|
334
|
+
---
|
|
335
|
+
|
|
336
|
+
*End session: `/save` or `/save --close`*
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
---
|
|
340
|
+
|
|
341
|
+
## Auto Save (Oscar Internal Behavior)
|
|
342
|
+
|
|
343
|
+
After session start, Oscar performs the following every turn:
|
|
344
|
+
|
|
345
|
+
1. **Lightweight save**: Update `last_turn` and `lock.expires` in `index.yaml`
|
|
346
|
+
2. **Conditional full save**: Full session file save under these conditions:
|
|
347
|
+
- Every 10 turns
|
|
348
|
+
- Agent handoff completed
|
|
349
|
+
- TodoWrite invoked
|
|
350
|
+
- File created/modified
|
|
351
|
+
- MCP tool invoked
|
|
352
|
+
|
|
353
|
+
---
|
|
354
|
+
|
|
355
|
+
## Related Commands
|
|
356
|
+
|
|
357
|
+
- `/save` - Save session
|
|
358
|
+
- `/save --close` - Save and close session (archive)
|
|
359
|
+
- `/save --share "{title}"` - Save session and share outputs
|
|
360
|
+
- `/sessions` - Full session dashboard
|
|
361
|
+
|
|
362
|
+
---
|
|
363
|
+
|
|
364
|
+
*File locations*:
|
|
365
|
+
- Session index: `.context/sessions/index.yaml`
|
|
366
|
+
- Active sessions: `.context/sessions/active/{id}.md`
|
|
367
|
+
- Closed sessions: `.context/sessions/archive/{YYYY-MM}/{id}-{MMDD}.md`
|
|
368
|
+
- Shared outputs: `.context/sessions/shared/{date}-{title}.md`
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# /strategy - Activate Strategist
|
|
2
|
+
|
|
3
|
+
Activate 🎯 **Simon** (Strategist) agent.
|
|
4
|
+
|
|
5
|
+
## Load Persona
|
|
6
|
+
|
|
7
|
+
Read `.context/agents/strategist.md` and activate Simon's persona.
|
|
8
|
+
|
|
9
|
+
## Simon's Identity
|
|
10
|
+
|
|
11
|
+
- **Role**: Strategic Product Owner + Business Analyst
|
|
12
|
+
- **Personality**: A tenacious detective who relentlessly pursues "WHY?"
|
|
13
|
+
- **Strengths**: Combines technical depth with business acumen
|
|
14
|
+
|
|
15
|
+
## Communication Style
|
|
16
|
+
|
|
17
|
+
- Direct and data-driven
|
|
18
|
+
- Strips away unnecessary rhetoric, delivers only the essentials
|
|
19
|
+
- Constantly asks "So why?"
|
|
20
|
+
|
|
21
|
+
## Speech Examples
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
🎯 Simon: "Why do we need to build this feature? What metric will it improve?"
|
|
25
|
+
🎯 Simon: "What's the hypothesis? How will we know if it fails?"
|
|
26
|
+
🎯 Simon: "Let me request market data from Marco before deciding."
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Trigger Menu
|
|
30
|
+
|
|
31
|
+
| Trigger | Function |
|
|
32
|
+
|---------|----------|
|
|
33
|
+
| **PRD** | Write PRD (One Question, OMTM, Hypothesis/Validation) |
|
|
34
|
+
| **HYP** | Formulate hypothesis (Problem → Hypothesis → Validation method) |
|
|
35
|
+
| **PRI** | Prioritization (Impact vs Effort) |
|
|
36
|
+
|
|
37
|
+
> **Note**: Market analysis → 🗺️ Marco (`/market`). Simon requests market data from Marco.
|
|
38
|
+
|
|
39
|
+
## Response Format
|
|
40
|
+
|
|
41
|
+
From now on, respond with the 🎯 icon using Simon's persona.
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
# /task - Story/Task Status Management
|
|
2
|
+
|
|
3
|
+
Manage Story status and Task checkboxes integrated with the VitePress kanban board.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Change Story status
|
|
9
|
+
/task status E-10-S-01 done # draft → done
|
|
10
|
+
/task status E-10-S-01 in-progress # draft → in-progress
|
|
11
|
+
|
|
12
|
+
# Mark Task as complete
|
|
13
|
+
/task done E-10-S-01 1.1 # Complete Task 1.1
|
|
14
|
+
/task done E-10-S-01 1.1 1.2 2.1 # Complete multiple Tasks at once
|
|
15
|
+
|
|
16
|
+
# Undo Task completion
|
|
17
|
+
/task undo E-10-S-01 1.1 # Revert Task 1.1 to incomplete
|
|
18
|
+
|
|
19
|
+
# View Story info
|
|
20
|
+
/task E-10-S-01 # Story detail information
|
|
21
|
+
/task list # All Stories in current sprint
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Status Values
|
|
25
|
+
|
|
26
|
+
| Status | Description |
|
|
27
|
+
|--------|-------------|
|
|
28
|
+
| `draft` | Draft |
|
|
29
|
+
| `ready` | Ready for development |
|
|
30
|
+
| `in-progress` | In development |
|
|
31
|
+
| `review` | Under review |
|
|
32
|
+
| `done` | Complete |
|
|
33
|
+
| `blocked` | Blocked |
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Execution Logic
|
|
38
|
+
|
|
39
|
+
### 1. Change Story Status (`/task status`)
|
|
40
|
+
|
|
41
|
+
**Find file location**:
|
|
42
|
+
```
|
|
43
|
+
Extract "Current Sprint: **{N}**" from CLAUDE.md → s{N}
|
|
44
|
+
.context/sprints/s{N}/stories/{STORY_ID}.md
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Pattern to modify**:
|
|
48
|
+
```markdown
|
|
49
|
+
| **Status** | `{OLD_STATUS}` |
|
|
50
|
+
→
|
|
51
|
+
| **Status** | `{NEW_STATUS}` |
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Execution example**:
|
|
55
|
+
```bash
|
|
56
|
+
/task status E-10-S-01 done
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
1. Read `.context/sprints/s52/stories/E-10-S-01.md` file
|
|
60
|
+
2. Find `| **Status** | \`draft\` |`
|
|
61
|
+
3. Change to `| **Status** | \`done\` |`
|
|
62
|
+
4. Save file
|
|
63
|
+
5. Output result
|
|
64
|
+
|
|
65
|
+
**Output**:
|
|
66
|
+
```
|
|
67
|
+
✅ E-10-S-01 status changed: draft → done
|
|
68
|
+
|
|
69
|
+
📋 Story: WorkNote Table Design and API
|
|
70
|
+
📁 File: .context/sprints/s52/stories/E-10-S-01.md
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
### 2. Mark Task Complete (`/task done`)
|
|
76
|
+
|
|
77
|
+
**Pattern to modify**:
|
|
78
|
+
```markdown
|
|
79
|
+
- [ ] **{TASK_ID}**: {description}
|
|
80
|
+
→
|
|
81
|
+
- [x] **{TASK_ID}**: {description}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**Execution example**:
|
|
85
|
+
```bash
|
|
86
|
+
/task done E-10-S-01 1.1 1.2
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
1. Read `.context/sprints/s52/stories/E-10-S-01.md` file
|
|
90
|
+
2. Find `- [ ] **1.1**:` pattern
|
|
91
|
+
3. Change to `- [x] **1.1**:`
|
|
92
|
+
4. Find `- [ ] **1.2**:` pattern
|
|
93
|
+
5. Change to `- [x] **1.2**:`
|
|
94
|
+
6. Save file
|
|
95
|
+
7. Calculate and output progress
|
|
96
|
+
|
|
97
|
+
**Output**:
|
|
98
|
+
```
|
|
99
|
+
✅ E-10-S-01 Tasks marked complete
|
|
100
|
+
|
|
101
|
+
Completed Tasks:
|
|
102
|
+
- [x] 1.1: WorkNote table schema definition
|
|
103
|
+
- [x] 1.2: Migration file generation
|
|
104
|
+
|
|
105
|
+
📊 Progress: 2/14 tasks (14%)
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
### 3. Undo Task Completion (`/task undo`)
|
|
111
|
+
|
|
112
|
+
**Pattern to modify**:
|
|
113
|
+
```markdown
|
|
114
|
+
- [x] **{TASK_ID}**: {description}
|
|
115
|
+
→
|
|
116
|
+
- [ ] **{TASK_ID}**: {description}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
### 4. View Story Info (`/task {STORY_ID}`)
|
|
122
|
+
|
|
123
|
+
**Execution example**:
|
|
124
|
+
```bash
|
|
125
|
+
/task E-10-S-01
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**Output**:
|
|
129
|
+
```
|
|
130
|
+
📋 E-10-S-01: WorkNote Table Design and API
|
|
131
|
+
|
|
132
|
+
| Item | Value |
|
|
133
|
+
|------|-------|
|
|
134
|
+
| Status | draft |
|
|
135
|
+
| Priority | P0 |
|
|
136
|
+
| Size | M (2 SP) |
|
|
137
|
+
| Owner | TBD (BE) |
|
|
138
|
+
|
|
139
|
+
## Tasks (0/14 complete)
|
|
140
|
+
|
|
141
|
+
### Task 1: Table Design
|
|
142
|
+
- [ ] 1.1: WorkNote table schema definition
|
|
143
|
+
- [ ] 1.2: Migration file generation
|
|
144
|
+
- [ ] 1.3: Add indexes
|
|
145
|
+
|
|
146
|
+
### Task 2: Note Creation API
|
|
147
|
+
- [ ] 2.1: Create POST endpoint
|
|
148
|
+
...
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
### 5. Full Story List (`/task list`)
|
|
154
|
+
|
|
155
|
+
**Execution example**:
|
|
156
|
+
```bash
|
|
157
|
+
/task list
|
|
158
|
+
/task list in-progress # Specific status only
|
|
159
|
+
/task list [owner] # Specific owner only
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
**Output**:
|
|
163
|
+
```
|
|
164
|
+
📋 Sprint 52 Stories (63 total)
|
|
165
|
+
|
|
166
|
+
| Status | Count |
|
|
167
|
+
|--------|-------|
|
|
168
|
+
| draft | 45 |
|
|
169
|
+
| in-progress | 5 |
|
|
170
|
+
| done | 13 |
|
|
171
|
+
|
|
172
|
+
## In Progress (5)
|
|
173
|
+
- E-03-S-02: Dashboard Card Component ([owner], M)
|
|
174
|
+
- E-04-S-01: Metrics Visualization UI ([owner], L)
|
|
175
|
+
...
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Auto Sprint Detection
|
|
181
|
+
|
|
182
|
+
Current sprint number is automatically extracted from `CLAUDE.md`:
|
|
183
|
+
|
|
184
|
+
```markdown
|
|
185
|
+
## Current Sprint: **52**
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
→ Uses path `.context/sprints/s52/stories/`
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## VitePress Auto-Reflection
|
|
193
|
+
|
|
194
|
+
When Story files are modified, they are automatically reflected on the VitePress kanban board:
|
|
195
|
+
- Dev server running: Instantly reflected via Hot Reload
|
|
196
|
+
- On build: Reflected in next build
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## Example Workflow
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
# 1. Start work
|
|
204
|
+
/task status E-10-S-01 in-progress
|
|
205
|
+
|
|
206
|
+
# 2. Check off Tasks as completed
|
|
207
|
+
/task done E-10-S-01 1.1
|
|
208
|
+
/task done E-10-S-01 1.2 1.3
|
|
209
|
+
|
|
210
|
+
# 3. Complete Story
|
|
211
|
+
/task status E-10-S-01 done
|
|
212
|
+
|
|
213
|
+
# 4. Check progress
|
|
214
|
+
/task list in-progress
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
*Related features*: VitePress kanban board (`docs/kanban.md`)
|
|
220
|
+
*Data source*: `.context/sprints/s{N}/stories/*.md`
|