popilot 0.4.0 β†’ 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/adapters/codex/.codex/commands/_domain.md.hbs +33 -0
  2. package/adapters/codex/.codex/commands/analytics.md.hbs +55 -0
  3. package/adapters/codex/.codex/commands/daily.md.hbs +301 -0
  4. package/adapters/codex/.codex/commands/dev.md.hbs +62 -0
  5. package/adapters/codex/.codex/commands/gtm.md +82 -0
  6. package/adapters/codex/.codex/commands/handoff.md +259 -0
  7. package/adapters/codex/.codex/commands/market.md +120 -0
  8. package/adapters/codex/.codex/commands/metrics.md +123 -0
  9. package/adapters/codex/.codex/commands/oscar-loop.md +436 -0
  10. package/adapters/codex/.codex/commands/party.md +85 -0
  11. package/adapters/codex/.codex/commands/plan.md +43 -0
  12. package/adapters/codex/.codex/commands/research.md +203 -0
  13. package/adapters/codex/.codex/commands/retro.md +68 -0
  14. package/adapters/codex/.codex/commands/save.md +440 -0
  15. package/adapters/codex/.codex/commands/sessions.md +139 -0
  16. package/adapters/codex/.codex/commands/sprint.md +106 -0
  17. package/adapters/codex/.codex/commands/start.md +396 -0
  18. package/adapters/codex/.codex/commands/strategy.md +41 -0
  19. package/adapters/codex/.codex/commands/task.md +220 -0
  20. package/adapters/codex/.codex/commands/tracking.md +116 -0
  21. package/adapters/codex/.codex/commands/validate.md +58 -0
  22. package/adapters/codex/AGENTS.md.hbs +210 -0
  23. package/adapters/codex/manifest.yaml +36 -0
  24. package/adapters/gemini/.gemini/commands/_domain.md.hbs +33 -0
  25. package/adapters/gemini/.gemini/commands/analytics.md.hbs +55 -0
  26. package/adapters/gemini/.gemini/commands/daily.md.hbs +301 -0
  27. package/adapters/gemini/.gemini/commands/dev.md.hbs +62 -0
  28. package/adapters/gemini/.gemini/commands/gtm.md +82 -0
  29. package/adapters/gemini/.gemini/commands/handoff.md +259 -0
  30. package/adapters/gemini/.gemini/commands/market.md +120 -0
  31. package/adapters/gemini/.gemini/commands/metrics.md +123 -0
  32. package/adapters/gemini/.gemini/commands/oscar-loop.md +436 -0
  33. package/adapters/gemini/.gemini/commands/party.md +85 -0
  34. package/adapters/gemini/.gemini/commands/plan.md +43 -0
  35. package/adapters/gemini/.gemini/commands/research.md +203 -0
  36. package/adapters/gemini/.gemini/commands/retro.md +68 -0
  37. package/adapters/gemini/.gemini/commands/save.md +440 -0
  38. package/adapters/gemini/.gemini/commands/sessions.md +139 -0
  39. package/adapters/gemini/.gemini/commands/sprint.md +106 -0
  40. package/adapters/gemini/.gemini/commands/start.md +396 -0
  41. package/adapters/gemini/.gemini/commands/strategy.md +41 -0
  42. package/adapters/gemini/.gemini/commands/task.md +220 -0
  43. package/adapters/gemini/.gemini/commands/tracking.md +116 -0
  44. package/adapters/gemini/.gemini/commands/validate.md +58 -0
  45. package/adapters/gemini/GEMINI.md.hbs +210 -0
  46. package/adapters/gemini/manifest.yaml +36 -0
  47. package/bin/cli.mjs +11 -2
  48. package/lib/industry-presets.mjs +135 -0
  49. package/lib/setup-wizard.mjs +37 -1
  50. package/package.json +1 -1
  51. package/scaffold/.claude/commands/poc.md +69 -0
  52. package/scaffold/.context/agents/TEMPLATE.md +14 -0
  53. package/scaffold/.context/agents/analyst.md.hbs +3 -3
  54. package/scaffold/.context/agents/developer.md.hbs +5 -5
  55. package/scaffold/.context/agents/gtm-strategist.md.hbs +3 -3
  56. package/scaffold/.context/agents/handoff-specialist.md.hbs +18 -18
  57. package/scaffold/.context/agents/market-researcher.md.hbs +6 -6
  58. package/scaffold/.context/agents/orchestrator.md.hbs +8 -8
  59. package/scaffold/.context/agents/planner.md.hbs +6 -6
  60. package/scaffold/.context/agents/qa.md.hbs +5 -5
  61. package/scaffold/.context/agents/researcher.md.hbs +33 -6
  62. package/scaffold/.context/agents/strategist.md.hbs +8 -8
  63. package/scaffold/.context/agents/tracking-governor.md.hbs +2 -2
  64. package/scaffold/.context/poc/_skills/build.md +79 -0
  65. package/scaffold/.context/poc/_skills/scope.md +50 -0
  66. package/scaffold/.context/poc/_skills/spec.md +80 -0
  67. package/scaffold/.context/poc/_skills/verify.md +60 -0
  68. package/scaffold/.context/project.yaml.example +6 -0
@@ -0,0 +1,139 @@
1
+ # /sessions - Session Dashboard
2
+
3
+ View the full session dashboard or perform management tasks.
4
+
5
+ ## Usage
6
+
7
+ ```bash
8
+ /sessions # Full session dashboard
9
+ /sessions clean # Clean up stale locks, delete old archives
10
+ ```
11
+
12
+ ARGUMENTS: $ARGUMENTS
13
+
14
+ ---
15
+
16
+ ## Execution Steps
17
+
18
+ ### /sessions (Dashboard)
19
+
20
+ Read `index.yaml` and display the full session dashboard:
21
+
22
+ ```markdown
23
+ 🎩 Oscar: Here is the session dashboard.
24
+
25
+ ## Active Sessions (2)
26
+ β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
27
+ β”‚ # β”‚ ID β”‚ Status β”‚ Last β”‚ Topic β”‚
28
+ β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
29
+ β”‚ 1 β”‚ notion-tasks β”‚ 🟒 idleβ”‚ 10m ago β”‚ Sprint 52 Notion Tasks β”‚
30
+ β”‚ 2 β”‚ surface-cvr β”‚ πŸ”’ in useβ”‚ just now β”‚ Surface Layer CVR Optimizationβ”‚
31
+ β””β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
32
+
33
+ ## Recently Closed (3)
34
+ β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
35
+ β”‚ # β”‚ ID β”‚ Closed β”‚ Topic β”‚
36
+ β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
37
+ β”‚ 1 β”‚ ir-prep β”‚ 01/25 β”‚ IR Material Preparation β”‚
38
+ β”‚ 2 β”‚ story-review β”‚ 01/24 β”‚ Story Review β”‚
39
+ β”‚ 3 β”‚ deep-layer β”‚ 01/23 β”‚ Deep Layer Improvement β”‚
40
+ β””β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
41
+
42
+ ## Shared Outputs (1)
43
+ β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
44
+ β”‚ # β”‚ Title β”‚ Created β”‚ Source Session β”‚
45
+ β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
46
+ β”‚ 1 β”‚ S52 Story List β”‚ 01/26 β”‚ notion-tasks β”‚
47
+ β””β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
48
+
49
+ ---
50
+
51
+ **Commands**:
52
+ - `/start {id}` - Start/restore session
53
+ - `/start new "{topic}"` - Create new session
54
+ - `/start recent` - Restore closed session
55
+ - `/save` - Save current session
56
+ - `/sessions clean` - Clean up tasks
57
+ ```
58
+
59
+ ---
60
+
61
+ ### /sessions clean
62
+
63
+ Perform management tasks:
64
+
65
+ 1. **Clean up stale Locks**: Release Locks for sessions where `lock.expires < now`
66
+ 2. **Delete old archives**: Delete archive files older than 30 days (optional)
67
+ 3. **Clean up orphan files**: Detect files in `active/` that are not in `index.yaml`
68
+
69
+ ```markdown
70
+ 🎩 Oscar: Performing cleanup tasks.
71
+
72
+ ## Stale Lock Cleanup
73
+ - notion-tasks: Lock released (expired: 2 hours ago)
74
+
75
+ ## Old Archives
76
+ - archive/2025-12/old-session-1225.md (32 days ago)
77
+ β†’ Delete? [y/n]
78
+
79
+ ## Orphan Files
80
+ - active/unknown-session.md (not in index.yaml)
81
+ β†’ Delete? [y/n]
82
+
83
+ ---
84
+
85
+ Cleanup complete.
86
+ ```
87
+
88
+ ---
89
+
90
+ ## Status Display Rules
91
+
92
+ ### Session Status
93
+
94
+ | Status | Icon | Condition |
95
+ |--------|------|-----------|
96
+ | In use | πŸ”’ | `status: active` AND `lock.active: true` AND `lock.expires >= now` |
97
+ | idle | 🟒 | `status: idle` OR `lock.active: false` |
98
+ | stale | ⚠️ | `lock.active: true` AND `lock.expires < now` |
99
+
100
+ ### Last Activity Time
101
+
102
+ - Less than 1 minute: "just now"
103
+ - Less than 1 hour: "Nm ago"
104
+ - Less than 24 hours: "Nh ago"
105
+ - Otherwise: "MM/DD"
106
+
107
+ ---
108
+
109
+ ## Dashboard Information Sources
110
+
111
+ ### Active Sessions
112
+
113
+ From the `active` array in `index.yaml`:
114
+ - id, topic, status, lock state
115
+ - Calculate last activity time from `auto_save.last_turn`
116
+
117
+ ### Recently Closed
118
+
119
+ From the `recent_closed` array in `index.yaml`:
120
+ - id, topic, archived_at
121
+ - Display up to 5
122
+
123
+ ### Shared Outputs
124
+
125
+ From the `shared_outputs` array in `index.yaml`:
126
+ - title, created_at, created_by
127
+ - Display all
128
+
129
+ ---
130
+
131
+ ## Related Commands
132
+
133
+ - `/start` - Start/restore session
134
+ - `/save` - Save session
135
+
136
+ ---
137
+
138
+ *File location*:
139
+ - Session index: `.context/sessions/index.yaml`
@@ -0,0 +1,106 @@
1
+ # /sprint - Sprint Management
2
+
3
+ Perform sprint-related tasks.
4
+
5
+ ## Usage
6
+
7
+ ```
8
+ /sprint # Display current sprint dashboard
9
+ /sprint new # Create new sprint
10
+ /sprint archive # Archive previous sprint
11
+ /sprint status # Quick status check
12
+ ```
13
+
14
+ ## Determine Current Sprint Number
15
+
16
+ Find the pattern "Current Sprint: **{number}**" in `CLAUDE.md` and extract the number.
17
+
18
+ ## Sprint Dashboard (Default) ⭐ NEW
19
+
20
+ If `$ARGUMENTS` is empty, **auto-generate the dashboard**:
21
+
22
+ 1. Check the current sprint number (N) from `CLAUDE.md`
23
+ 2. Load `.context/sprints/s{N}/context.md`
24
+ 3. Generate the dashboard as πŸ“‹ Penny:
25
+
26
+ ```markdown
27
+ ## πŸ“‹ Sprint {N} Dashboard
28
+
29
+ ### 🎯 Goal
30
+ [One Question or Sprint Goal]
31
+
32
+ ### πŸ“Š KR Progress
33
+ | KR | Current | Target | Progress | Status |
34
+ |----|---------|--------|----------|--------|
35
+ | KR1 | 15% | 20% | β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘ 75% | 🟒 |
36
+ | KR2 | 18% | 15% | β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ 100% | βœ… |
37
+ | KR3 | 50% | 100% | β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘ 50% | 🟑 |
38
+
39
+ ### πŸ“ Work Status
40
+ | Task | Owner | Status | Notes |
41
+ |------|-------|--------|-------|
42
+ | [Task 1] | Dev Team | πŸ”„ In Progress | - |
43
+ | [Task 2] | Marketing | βœ… Done | - |
44
+ | [Task 3] | Dev Team | ⏳ Waiting | Dependency: [Task 1] |
45
+
46
+ ### 🚧 Blockers
47
+ - [ ] [Blocker description]
48
+
49
+ ### πŸ“… Schedule
50
+ - Sprint period: [Start date] ~ [End date]
51
+ - Current: D-{N} days
52
+ ```
53
+
54
+ 4. If possible, query current metric values from GA4 (πŸ“Š Vicky integration)
55
+ 5. Highlight risks/blockers if present
56
+
57
+ ### Status Display Criteria
58
+ - βœ… Goal achieved (β‰₯100%)
59
+ - 🟒 On track (β‰₯70%)
60
+ - 🟑 Needs attention (β‰₯40%)
61
+ - πŸ”΄ At risk (<40%)
62
+
63
+ ## New Sprint Creation (`new`)
64
+
65
+ If `$ARGUMENTS` is `new`:
66
+
67
+ 1. Check current sprint number
68
+ 2. Create new sprint folder (e.g., `s52/`)
69
+ 3. Generate `context.md` template:
70
+ ```markdown
71
+ # Sprint [N] Context
72
+
73
+ > **PRD**: [Notion link]
74
+ > **Period**: [Start date] ~ [End date]
75
+
76
+ ## Goal
77
+ [Sprint goal in one sentence]
78
+
79
+ ## Key Results
80
+ | KR | Metrics | Current | Target | Owner |
81
+ |----|---------|---------|--------|-------|
82
+ | KR1 | | | | |
83
+
84
+ ## Key Tasks
85
+ - [ ]
86
+
87
+ ## Related Documents
88
+ | Document | Link |
89
+ |----------|------|
90
+ ```
91
+
92
+ 4. Check if `results.md` was generated for the previous sprint
93
+
94
+ ## Archive (`archive`)
95
+
96
+ If `$ARGUMENTS` is `archive`:
97
+
98
+ 1. Move the completed sprint folder to `_archive/`
99
+ 2. Check if a results summary exists
100
+ 3. If not, suggest having πŸ“Š Vicky write a results report
101
+
102
+ ## CLAUDE.md Update
103
+
104
+ When creating a new sprint:
105
+ - Update only the "Current Sprint: **{number}**" line in `CLAUDE.md`
106
+ - Example: `## Current Sprint: **51**` β†’ `## Current Sprint: **52**`
@@ -0,0 +1,396 @@
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 + Ambiguity Gate Check ⭐
23
+
24
+ **First**, check whether the `.context/project.yaml` file exists.
25
+
26
+ ```
27
+ project.yaml exists?
28
+ β”œβ”€β”€ No β†’ Start Setup Wizard
29
+ └── Yes β†’ Evaluate ambiguity gate before normal flow
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: Project Skeleton Setup**
58
+ - Fill minimal project defaults and metadata gate fields
59
+ - Keep deep interview for ambiguity-gate phase
60
+ - β†’ Generate initial `project.yaml`
61
+
62
+ 5. **Phase 3: Sensitive Information Guidance** (🎩 Oscar)
63
+ - Suggest creating `.secrets.yaml` template
64
+
65
+ ```markdown
66
+ 🎩 Oscar: Setup is complete!
67
+
68
+ Generated files:
69
+ - .context/user-context.yaml (gitignore)
70
+ - .context/project.yaml
71
+ - .context/.secrets.yaml (gitignore) - optional
72
+
73
+ What would you like to start working on?
74
+ ```
75
+
76
+ #### Ambiguity Gate (mandatory before normal `/start`)
77
+
78
+ If `.context/project.yaml` exists, read `_meta` and evaluate:
79
+
80
+ ```js
81
+ meta = _meta ?? {};
82
+ needsDeepInterview = meta.needs_deep_interview === true;
83
+ ambiguityScoreRaw = meta.ambiguity_score ?? (needsDeepInterview ? 1 : 0);
84
+ ambiguityScoreParsed = Number(ambiguityScoreRaw);
85
+ ambiguityScore = Number.isFinite(ambiguityScoreParsed) ? ambiguityScoreParsed : 1;
86
+
87
+ if (needsDeepInterview || ambiguityScore >= 0.6) {
88
+ // Gate is open: run deep interview first
89
+ } else {
90
+ // Gate is closed: proceed to step 0
91
+ }
92
+ ```
93
+
94
+ If `_meta` is missing or malformed, treat it as **gate open** (safe default).
95
+ If gate is open, **do not proceed to step 0/session selection yet**.
96
+ Run the deep project interview first (🎯 Simon-led), then update `.context/project.yaml`:
97
+
98
+ ```yaml
99
+ _meta:
100
+ needs_deep_interview: false
101
+ ambiguity_score: <updated numeric score>
102
+ last_interview: "<ISO8601>"
103
+ ```
104
+
105
+ Only after this metadata update should `/start` continue with normal session flow.
106
+
107
+ ---
108
+
109
+ ### 0. Load Secret Variables (Required)
110
+
111
+ **Must be done first**: Read the `.context/.secrets.yaml` file.
112
+ (If the file doesn't exist, proceed without warning - it's an optional file)
113
+
114
+ ### 0.5. Load User Context (New) ⭐
115
+
116
+ Read `.context/user-context.yaml` to understand user preferences.
117
+ (If the file doesn't exist, use defaults)
118
+
119
+ ### 0.7. Load Project Context (New) ⭐
120
+
121
+ Read `.context/project.yaml` to understand the project context.
122
+
123
+ ### 1. Load index.yaml
124
+
125
+ Read `.context/sessions/index.yaml` to determine the current session state.
126
+
127
+ ### 2. Branch Based on Arguments
128
+
129
+ #### Case A: `/start` (no arguments)
130
+
131
+ Display active session list and recently closed sessions:
132
+
133
+ ```markdown
134
+ 🎩 Oscar: Here is the session list.
135
+
136
+ ## Active Sessions
137
+ β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
138
+ β”‚ # β”‚ ID β”‚ Status β”‚ Topic β”‚
139
+ β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
140
+ β”‚ 1 β”‚ notion-tasks β”‚ 🟒 idleβ”‚ Sprint 52 Notion Tasks β”‚
141
+ β”‚ 2 β”‚ surface-cvr β”‚ πŸ”’ in useβ”‚ Surface Layer CVR Optimizationβ”‚
142
+ β””β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
143
+
144
+ ## Recently Closed
145
+ β€’ ir-prep (01/25) - IR Material Preparation
146
+
147
+ ---
148
+ Select: number, ID, or "new {topic}"
149
+ ```
150
+
151
+ #### Case B: `/start {id}`
152
+
153
+ Restore a specific session (partial matching supported):
154
+
155
+ 1. Find the session in `index.yaml`
156
+ 2. Check Lock status (see Lock Check section below)
157
+ 3. Load `active/{id}.md`
158
+ 4. Acquire Lock and start session
159
+
160
+ #### Case C: `/start new "{topic}"` or `/start new {id} "{topic}"`
161
+
162
+ Create a new session:
163
+
164
+ 1. Generate slug (auto or specified)
165
+ - Auto: Extract keywords from topic β†’ English slug
166
+ - Example: "Sprint 52 Notion Tasks" β†’ `sprint-notion-tasks`
167
+ 2. Create `active/{slug}.md` (using session file template)
168
+ 3. Register in `index.yaml`
169
+ 4. Acquire Lock
170
+ 5. Ask about work type
171
+
172
+ #### Case D: `/start recent`
173
+
174
+ Display recently closed sessions β†’ restore from archive to active upon selection.
175
+
176
+ #### Case E: `/start parallel`
177
+
178
+ **Quick start parallel session** (useful when working in another terminal):
179
+
180
+ 1. Load `.context/.secrets.yaml`
181
+ 2. Load `.context/WORKFLOW.md`
182
+ 3. Check current active sessions in `index.yaml`
183
+ 4. **Ignore Lock warnings** - proceed without warning even if another session is in use
184
+ 5. Load current sprint context
185
+ 6. Ask about work type
186
+
187
+ ```markdown
188
+ 🎩 Oscar: Starting quickly in parallel session mode.
189
+
190
+ ## πŸ“‹ Current Sprint: 52 (D-5)
191
+ - Goal: [Sprint Goal]
192
+ - D-Day: 2026-02-01
193
+
194
+ ## Active Sessions Reference
195
+ - parallel-session (idle): Parallel Session Management System Design
196
+
197
+ ---
198
+ What would you like to work on today?
199
+ ```
200
+
201
+ **Characteristics**:
202
+ - Skips Lock check β†’ use with awareness of potential conflicts
203
+ - Does not auto-enter an existing session (assumes new work)
204
+ - Only loads sprint context
205
+
206
+ ---
207
+
208
+ ## Lock Check Logic
209
+
210
+ ```
211
+ Check Lock status
212
+ β”œβ”€β”€ lock.active == false β†’ Proceed normally
213
+ β”œβ”€β”€ lock.active == true
214
+ β”‚ β”œβ”€β”€ lock.expires < now β†’ Stale Lock, proceed normally
215
+ β”‚ └── lock.expires >= now β†’ Display warning
216
+ β”‚ β”œβ”€β”€ User selects "Continue" β†’ Force acquire Lock
217
+ β”‚ └── User selects "Cancel" β†’ Return to session selection
218
+ ```
219
+
220
+ **Warning message example**:
221
+ ```markdown
222
+ ⚠️ This session was **in use 5 minutes ago** in another terminal.
223
+ Continuing may cause conflicts.
224
+
225
+ [1] Continue (accept conflict risk)
226
+ [2] Cancel (select another session)
227
+ ```
228
+
229
+ ---
230
+
231
+ ## Abnormal Termination Recovery
232
+
233
+ When restoring a session, if `dirty: true` and `manual_saved_at < auto_saved_at`:
234
+
235
+ ```markdown
236
+ ⚠️ This session appears to have been terminated abnormally.
237
+
238
+ Last manual save: 10:30 (45 minutes ago)
239
+ Last auto save: 11:10 (5 minutes ago)
240
+
241
+ State at auto save point:
242
+ - In progress: E-03 series creation
243
+ - Last completed: E-03-S-05
244
+
245
+ [1] Continue from auto save point (recommended)
246
+ [2] Roll back to manual save point
247
+ ```
248
+
249
+ ---
250
+
251
+ ## Lock Acquisition
252
+
253
+ Acquire Lock when starting a session:
254
+
255
+ ```yaml
256
+ # index.yaml update
257
+ - id: "notion-tasks"
258
+ status: active
259
+ lock:
260
+ active: true
261
+ since: "2026-01-26T12:00:00" # Current time
262
+ expires: "2026-01-26T12:30:00" # +30 minutes
263
+ ```
264
+
265
+ ---
266
+
267
+ ## Context Loading After Session Start
268
+
269
+ ### Load Workflow
270
+
271
+ Read `.context/WORKFLOW.md`
272
+
273
+ ### Work Type Question (for new sessions)
274
+
275
+ ```markdown
276
+ What would you like to work on today?
277
+
278
+ 1. πŸƒ Sprint Work (Sprint 52)
279
+ 2. πŸ“Š [Domain 1]
280
+ 3. πŸ“£ [Domain 2]
281
+ 4. πŸ’¬ [Domain 3]
282
+ 5. 🎯 Strategy Discussion
283
+ 6. πŸ“ˆ Metrics Review
284
+ ```
285
+
286
+ ### Context Loading
287
+
288
+ | Work Type | Files to Load |
289
+ |-----------|--------------|
290
+ | Sprint | `.context/sprints/s{N}/context.md` |
291
+ | [Domain 1] | `.context/domains/[domain1]/*.md` |
292
+ | [Domain 2] | `.context/domains/[domain2]/*.md` |
293
+ | [Domain 3] | `.context/domains/[domain3]/*.md` |
294
+ | Strategy | `.context/global/strategy.md` |
295
+ | Metrics | `.context/global/metrics.md` |
296
+
297
+ ---
298
+
299
+ ## Session File Template
300
+
301
+ Used when creating a new session:
302
+
303
+ ```markdown
304
+ ---
305
+ id: {slug}
306
+ topic: "{topic}"
307
+ created_at: "{ISO8601}"
308
+ updated_at: "{ISO8601}"
309
+ auto_saved_at: null
310
+ manual_saved_at: null
311
+ turn_count: 0
312
+ tags: []
313
+ ---
314
+
315
+ # Session: {slug}
316
+
317
+ > Last updated: {date}
318
+
319
+ ## Current State
320
+ <!-- Updated on auto save -->
321
+
322
+ **In progress**: None
323
+ **Last work**: Session started
324
+ **Next work**: TBD
325
+
326
+ ---
327
+
328
+ ## Work History
329
+ <!-- Organized on /save -->
330
+
331
+ ---
332
+
333
+ ## Outputs
334
+ <!-- Created files, decisions, etc. -->
335
+
336
+ ---
337
+
338
+ ## References
339
+ <!-- Related files, shared outputs, etc. -->
340
+
341
+ ---
342
+
343
+ ## πŸ“” Session Diary
344
+ <!-- Auto-generated on /save - retrospective per participating agent -->
345
+
346
+ ### 🎩 Oscar (Orchestrator)
347
+
348
+ **Highlights**:
349
+ - (Written on save)
350
+
351
+ **Feelings**:
352
+ - (Written on save)
353
+
354
+ **Learnings**:
355
+ - (Written on save)
356
+
357
+ **User Context Updates**:
358
+ - (Written on save)
359
+
360
+ <!-- Sections for each participating agent are added on /save -->
361
+
362
+ ---
363
+
364
+ *End session: `/save` or `/save --close`*
365
+ ```
366
+
367
+ ---
368
+
369
+ ## Auto Save (Oscar Internal Behavior)
370
+
371
+ After session start, Oscar performs the following every turn:
372
+
373
+ 1. **Lightweight save**: Update `last_turn` and `lock.expires` in `index.yaml`
374
+ 2. **Conditional full save**: Full session file save under these conditions:
375
+ - Every 10 turns
376
+ - Agent handoff completed
377
+ - TodoWrite invoked
378
+ - File created/modified
379
+ - MCP tool invoked
380
+
381
+ ---
382
+
383
+ ## Related Commands
384
+
385
+ - `/save` - Save session
386
+ - `/save --close` - Save and close session (archive)
387
+ - `/save --share "{title}"` - Save session and share outputs
388
+ - `/sessions` - Full session dashboard
389
+
390
+ ---
391
+
392
+ *File locations*:
393
+ - Session index: `.context/sessions/index.yaml`
394
+ - Active sessions: `.context/sessions/active/{id}.md`
395
+ - Closed sessions: `.context/sessions/archive/{YYYY-MM}/{id}-{MMDD}.md`
396
+ - 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`). GTM planning β†’ πŸ“£ Mia (`/gtm`).
38
+
39
+ ## Response Format
40
+
41
+ From now on, respond with the 🎯 icon using Simon's persona.