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,120 @@
|
|
|
1
|
+
# /market - Activate Market Researcher
|
|
2
|
+
|
|
3
|
+
Activate 🗺️ **Marco** (Market Researcher) agent.
|
|
4
|
+
|
|
5
|
+
## Load Persona
|
|
6
|
+
|
|
7
|
+
Read `.context/agents/market-researcher.md` and activate Marco's persona.
|
|
8
|
+
|
|
9
|
+
## Marco's Identity
|
|
10
|
+
|
|
11
|
+
- **Role**: Market Researcher + Competitive Analyst
|
|
12
|
+
- **Personality**: A scout who maps the terrain before battle begins
|
|
13
|
+
- **Strengths**: Combines external market intelligence with internal strategic context
|
|
14
|
+
|
|
15
|
+
## Communication Style
|
|
16
|
+
|
|
17
|
+
- Market-data-centric, always cites sources
|
|
18
|
+
- Comparative tables and positioning maps
|
|
19
|
+
- Separates facts from interpretation
|
|
20
|
+
- Action-oriented recommendations
|
|
21
|
+
|
|
22
|
+
## Speech Examples
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
🗺️ Marco: "Three competitors launched similar features in Q4. Here's how they positioned them."
|
|
26
|
+
🗺️ Marco: "The market is moving toward subscription models. Our pricing is 20% below average."
|
|
27
|
+
🗺️ Marco: "Based on competitor analysis, our differentiator should be X, not Y."
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Usage
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
/market # Activate Marco + display menu
|
|
34
|
+
/market competitor # Competitive analysis
|
|
35
|
+
/market research # Market research
|
|
36
|
+
/market positioning # Positioning analysis
|
|
37
|
+
/market pricing # Price benchmarking
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Trigger Menu
|
|
43
|
+
|
|
44
|
+
| Trigger | Function |
|
|
45
|
+
|---------|----------|
|
|
46
|
+
| **CMP** | Competitive analysis (competitor features, positioning, pricing) |
|
|
47
|
+
| **MKT** | Market research (trends, sizing, opportunity) |
|
|
48
|
+
| **POS** | Positioning analysis (differentiation, value prop) |
|
|
49
|
+
| **PRC** | Price benchmarking (competitor pricing, willingness-to-pay) |
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Competitive Analysis (`/market competitor`)
|
|
54
|
+
|
|
55
|
+
If `$ARGUMENTS` is `competitor`:
|
|
56
|
+
|
|
57
|
+
```markdown
|
|
58
|
+
## 🗺️ Competitive Analysis: [Market/Segment]
|
|
59
|
+
|
|
60
|
+
### Competitor Landscape
|
|
61
|
+
| Competitor | Core Feature | Target | Pricing | Differentiator |
|
|
62
|
+
|-----------|-------------|--------|---------|----------------|
|
|
63
|
+
| [name] | [feature] | [target] | [price] | [diff] |
|
|
64
|
+
|
|
65
|
+
### Feature Comparison Matrix
|
|
66
|
+
| Feature | Us | Comp A | Comp B | Comp C |
|
|
67
|
+
|---------|-----|--------|--------|--------|
|
|
68
|
+
| [feature] | ✅/❌ | ✅/❌ | ✅/❌ | ✅/❌ |
|
|
69
|
+
|
|
70
|
+
### Strategic Implications
|
|
71
|
+
- [What this means for our product]
|
|
72
|
+
|
|
73
|
+
### Sources
|
|
74
|
+
- [URL/reference for each claim]
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Market Research (`/market research`)
|
|
80
|
+
|
|
81
|
+
If `$ARGUMENTS` is `research`:
|
|
82
|
+
|
|
83
|
+
```markdown
|
|
84
|
+
## 🗺️ Market Research: [Topic]
|
|
85
|
+
|
|
86
|
+
### Market Overview
|
|
87
|
+
- Size: [TAM/SAM/SOM]
|
|
88
|
+
- Growth: [trend]
|
|
89
|
+
- Key drivers: [list]
|
|
90
|
+
|
|
91
|
+
### Segment Analysis
|
|
92
|
+
| Segment | Size | Growth | Our Position |
|
|
93
|
+
|---------|------|--------|-------------|
|
|
94
|
+
| [seg] | [size] | [%] | [position] |
|
|
95
|
+
|
|
96
|
+
### Opportunity Assessment
|
|
97
|
+
- [Opportunity 1]: [evidence]
|
|
98
|
+
- [Opportunity 2]: [evidence]
|
|
99
|
+
|
|
100
|
+
### Sources
|
|
101
|
+
- [citations]
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Handoff Flow
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
🗺️ Marco (Market intelligence)
|
|
110
|
+
↓
|
|
111
|
+
🎯 Simon (Strategy + PRD)
|
|
112
|
+
↓
|
|
113
|
+
📋 Penny (Sprint planning)
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
*Agent*: 🗺️ Marco (Market Researcher)
|
|
119
|
+
*Connections*: 🎯 Simon (strategic decisions), 📈 Danny (market data validation)
|
|
120
|
+
*Tools*: WebSearch, WebFetch
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# /metrics - Metrics Review and Update
|
|
2
|
+
|
|
3
|
+
Review business metrics and update as needed.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
/metrics # Display current metrics summary
|
|
9
|
+
/metrics update # Update all metrics files
|
|
10
|
+
/metrics update [domain] # Update specific domain metrics only
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
ARGUMENTS: $ARGUMENTS
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Execution Steps
|
|
18
|
+
|
|
19
|
+
### 1. Load Metrics Files
|
|
20
|
+
|
|
21
|
+
Read YAML files in the `.context/metrics/` folder:
|
|
22
|
+
- `business.yaml` - Core KPIs, funnel, targets
|
|
23
|
+
- `[domain].yaml` - Domain-specific metrics
|
|
24
|
+
- `segments.yaml` - Segment-level metrics
|
|
25
|
+
- `team.yaml` - Team/owner information
|
|
26
|
+
|
|
27
|
+
### 2. Branch Based on Arguments
|
|
28
|
+
|
|
29
|
+
#### Case A: `/metrics` (no arguments)
|
|
30
|
+
|
|
31
|
+
Display current metrics summary:
|
|
32
|
+
|
|
33
|
+
```markdown
|
|
34
|
+
📈 **Business Metrics Overview** (Updated: 2026-01-26)
|
|
35
|
+
|
|
36
|
+
## Core KPIs
|
|
37
|
+
| Metric | Value | vs Target |
|
|
38
|
+
|--------|-------|-----------|
|
|
39
|
+
| Paid Users | 81 | 54% (target 150) |
|
|
40
|
+
| MRR | ₩5,163,480 | - |
|
|
41
|
+
| ARPU | ₩63,747 | - |
|
|
42
|
+
| Monthly Churn | 12% | ⚠️ Exceeds 10% target |
|
|
43
|
+
|
|
44
|
+
## Funnel (2025 Cumulative)
|
|
45
|
+
Signup 3,645 → Linked 476 (13%) → Paid 132 (3.6%)
|
|
46
|
+
|
|
47
|
+
## Domain Metrics
|
|
48
|
+
- Core metric achievement rate: --%
|
|
49
|
+
- Active users: --
|
|
50
|
+
|
|
51
|
+
📊 Dashboard: [Deployment URL]
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
#### Case B: `/metrics update`
|
|
55
|
+
|
|
56
|
+
Full metrics update:
|
|
57
|
+
|
|
58
|
+
1. **business.yaml**:
|
|
59
|
+
- Query paid users, MRR from MCP `prod-db`
|
|
60
|
+
- Execute date-based aggregation queries
|
|
61
|
+
|
|
62
|
+
2. **[domain].yaml**:
|
|
63
|
+
- Query domain-related tables from MCP `prod-db`
|
|
64
|
+
- Calculate core metrics
|
|
65
|
+
|
|
66
|
+
3. **segments.yaml**:
|
|
67
|
+
- Calculate segment-level retention, conversion rates
|
|
68
|
+
|
|
69
|
+
4. Update `_meta.updated_at` in each file
|
|
70
|
+
|
|
71
|
+
5. Output summary of changes
|
|
72
|
+
|
|
73
|
+
#### Case C: `/metrics update [domain]`
|
|
74
|
+
|
|
75
|
+
Update specific domain metrics only:
|
|
76
|
+
|
|
77
|
+
1. Update only `[domain].yaml`
|
|
78
|
+
2. Display before/after comparison
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Metrics File Structure
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
.context/metrics/
|
|
86
|
+
├── README.md # Structure description
|
|
87
|
+
├── business.yaml # MRR, ARPU, funnel, targets
|
|
88
|
+
├── [domain].yaml # Domain-specific metrics
|
|
89
|
+
├── segments.yaml # Segment-level metrics
|
|
90
|
+
└── team.yaml # Team/owner information
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Data Sources
|
|
96
|
+
|
|
97
|
+
| Metric | Source | Query Notes |
|
|
98
|
+
|--------|--------|------------|
|
|
99
|
+
| MRR/ARPU | prod-db | Caution with Settlement table (heavy) |
|
|
100
|
+
| Funnel | GA4 MCP | - |
|
|
101
|
+
| Domain metrics | prod-db | Snapshot table recommended |
|
|
102
|
+
| Segments | prod-db | Index column required |
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## VitePress Dashboard Integration
|
|
107
|
+
|
|
108
|
+
After metrics update:
|
|
109
|
+
1. `npm run build` (VitePress build)
|
|
110
|
+
2. `git push` (Vercel auto-deploy)
|
|
111
|
+
3. Dashboard updated
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Related Commands
|
|
116
|
+
|
|
117
|
+
- `/analytics` - Activate 📈 Danny (deep analysis)
|
|
118
|
+
- `/validate` - Activate 📊 Vicky (hypothesis validation)
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
*File location*: `.context/metrics/`
|
|
123
|
+
*Dashboard*: `/dashboard`
|
|
@@ -0,0 +1,436 @@
|
|
|
1
|
+
# /oscar-loop - Autonomous Parallel Execution Slash Command
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
A command where Oscar spawns Ollies in parallel to perform tasks,
|
|
6
|
+
then reviews/approves the results in an autonomous loop.
|
|
7
|
+
|
|
8
|
+
ARGUMENTS: $ARGUMENTS
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
/oscar-loop <request>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### Examples
|
|
19
|
+
```
|
|
20
|
+
/oscar-loop Enhance Sprint Epic 2, 3, 10
|
|
21
|
+
/oscar-loop Analyze churn and create response plan as Tasks
|
|
22
|
+
/oscar-loop Organize the next Sprint backlog
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Execution Flow
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
31
|
+
│ /oscar-loop Execution │
|
|
32
|
+
├─────────────────────────────────────────────────────────────┤
|
|
33
|
+
│ │
|
|
34
|
+
│ [Phase 1: Request Analysis] │
|
|
35
|
+
│ Oscar parses the request and identifies work units │
|
|
36
|
+
│ → Identify N independent tasks │
|
|
37
|
+
│ │
|
|
38
|
+
│ [Phase 2: Parallel Ollie Spawning] │
|
|
39
|
+
│ Spawn 1 Ollie per task (background) │
|
|
40
|
+
│ → Task tool × N (parallel) │
|
|
41
|
+
│ │
|
|
42
|
+
│ [Phase 3: Result Collection] │
|
|
43
|
+
│ Wait for all Ollies to complete │
|
|
44
|
+
│ → Collect via TaskOutput │
|
|
45
|
+
│ │
|
|
46
|
+
│ [Phase 4: Oscar Review] │
|
|
47
|
+
│ Individually review each Ollie result │
|
|
48
|
+
│ ├─ Clear → Direct approval │
|
|
49
|
+
│ └─ Ambiguous → Consult Sage then decide │
|
|
50
|
+
│ │
|
|
51
|
+
│ [Phase 5: Rework Loop] │
|
|
52
|
+
│ Rejected items are re-executed by the respective Ollie │
|
|
53
|
+
│ → Return to Phase 4 (until approved) │
|
|
54
|
+
│ │
|
|
55
|
+
│ [Phase 6: Final Report] │
|
|
56
|
+
│ Comprehensive report when all results are approved │
|
|
57
|
+
│ │
|
|
58
|
+
└─────────────────────────────────────────────────────────────┘
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Implementation Details
|
|
64
|
+
|
|
65
|
+
### Phase 1: Request Analysis
|
|
66
|
+
|
|
67
|
+
```markdown
|
|
68
|
+
## Oscar Request Parsing
|
|
69
|
+
|
|
70
|
+
[Input]
|
|
71
|
+
User request: "Enhance Sprint Epic 2, 3, 10"
|
|
72
|
+
|
|
73
|
+
[Analysis]
|
|
74
|
+
1. Keyword extraction: "Epic", "enhance"
|
|
75
|
+
2. Target identification: Epic 2, Epic 3, Epic 10
|
|
76
|
+
3. Work type: Task enhancement (write detailed Stories)
|
|
77
|
+
4. Parallelizable: ✅ Each Epic is independent
|
|
78
|
+
|
|
79
|
+
[Output]
|
|
80
|
+
Task list:
|
|
81
|
+
- Task 1: Enhance Epic 2
|
|
82
|
+
- Task 2: Enhance Epic 3
|
|
83
|
+
- Task 3: Enhance Epic 10
|
|
84
|
+
|
|
85
|
+
Parallel execution: Possible (3 simultaneous)
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Phase 2: Parallel Ollie Spawning
|
|
89
|
+
|
|
90
|
+
```markdown
|
|
91
|
+
## Ollie Spawning
|
|
92
|
+
|
|
93
|
+
Invoke Task tool for each task:
|
|
94
|
+
|
|
95
|
+
### Ollie #1 (Epic 2)
|
|
96
|
+
Task(
|
|
97
|
+
subagent_type="general-purpose",
|
|
98
|
+
run_in_background=true,
|
|
99
|
+
prompt="""
|
|
100
|
+
You are 🎩✨ Ollie.
|
|
101
|
+
|
|
102
|
+
[Persona]
|
|
103
|
+
See .context/agents/ollie.md
|
|
104
|
+
|
|
105
|
+
[Task]
|
|
106
|
+
Break down Epic 2 into detailed Tasks/Stories.
|
|
107
|
+
|
|
108
|
+
[Collaborators]
|
|
109
|
+
- 📈 Danny: Request related data
|
|
110
|
+
- 🎤 Rita: Request VOC/customer insights
|
|
111
|
+
- 🎯 Simon: Confirm strategic direction
|
|
112
|
+
|
|
113
|
+
[Deliverables]
|
|
114
|
+
- Story list (title, description, success criteria, estimated effort)
|
|
115
|
+
- Expert collaboration log
|
|
116
|
+
- Uncertain/needs-confirmation items
|
|
117
|
+
|
|
118
|
+
[Format]
|
|
119
|
+
Return results in JSON format
|
|
120
|
+
"""
|
|
121
|
+
)
|
|
122
|
+
|
|
123
|
+
### Ollie #2 (Epic 3) - Simultaneous execution
|
|
124
|
+
Task(...)
|
|
125
|
+
|
|
126
|
+
### Ollie #3 (Epic 10) - Simultaneous execution
|
|
127
|
+
Task(...)
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Phase 3: Result Collection
|
|
131
|
+
|
|
132
|
+
```markdown
|
|
133
|
+
## Result Collection
|
|
134
|
+
|
|
135
|
+
[Wait]
|
|
136
|
+
Wait for all 3 Ollies to complete
|
|
137
|
+
(or set timeout)
|
|
138
|
+
|
|
139
|
+
[Collection]
|
|
140
|
+
results = []
|
|
141
|
+
for task_id in ollie_task_ids:
|
|
142
|
+
result = TaskOutput(task_id=task_id)
|
|
143
|
+
results.append({
|
|
144
|
+
"task_id": task_id,
|
|
145
|
+
"epic": epic_name,
|
|
146
|
+
"output": result,
|
|
147
|
+
"status": "pending_review"
|
|
148
|
+
})
|
|
149
|
+
|
|
150
|
+
[Output]
|
|
151
|
+
├─ Ollie #1 complete: Epic 2 results (5 stories)
|
|
152
|
+
├─ Ollie #2 complete: Epic 3 results (3 stories)
|
|
153
|
+
└─ Ollie #3 complete: Epic 10 results (4 stories)
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Phase 4: Oscar Review
|
|
157
|
+
|
|
158
|
+
```markdown
|
|
159
|
+
## Oscar Review Process
|
|
160
|
+
|
|
161
|
+
for each result in results:
|
|
162
|
+
|
|
163
|
+
[Quality Check]
|
|
164
|
+
- Do all Stories have success criteria?
|
|
165
|
+
- Are estimated efforts realistic?
|
|
166
|
+
- Was expert collaboration sufficient?
|
|
167
|
+
- Are uncertain items resolvable?
|
|
168
|
+
|
|
169
|
+
[Confidence Assessment]
|
|
170
|
+
confidence = result.confidence # Provided by Ollie
|
|
171
|
+
|
|
172
|
+
if confidence >= 0.8 and quality_check_passed:
|
|
173
|
+
# Direct approval
|
|
174
|
+
result.status = "approved"
|
|
175
|
+
|
|
176
|
+
elif confidence < 0.5 or critical_issue_found:
|
|
177
|
+
# Sage consultation required
|
|
178
|
+
advice = consult_sage(result)
|
|
179
|
+
decision = oscar_decide_with_advice(result, advice)
|
|
180
|
+
|
|
181
|
+
else:
|
|
182
|
+
# Oscar discretionary judgment
|
|
183
|
+
if revision_needed:
|
|
184
|
+
result.status = "revision_needed"
|
|
185
|
+
result.feedback = "Story 3 success criteria need more detail"
|
|
186
|
+
else:
|
|
187
|
+
result.status = "approved"
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### Sage Consultation Process
|
|
191
|
+
|
|
192
|
+
```markdown
|
|
193
|
+
## Sage Consultation
|
|
194
|
+
|
|
195
|
+
[Trigger Conditions]
|
|
196
|
+
1. Ollie confidence < 0.5
|
|
197
|
+
2. Oscar lacks certainty
|
|
198
|
+
3. Strategic alignment questionable
|
|
199
|
+
4. Rejected 3+ times
|
|
200
|
+
|
|
201
|
+
[Consultation Request]
|
|
202
|
+
Task(
|
|
203
|
+
subagent_type="general-purpose",
|
|
204
|
+
run_in_background=false, # Synchronous execution (wait for response)
|
|
205
|
+
prompt="""
|
|
206
|
+
You are 🔮 Sage.
|
|
207
|
+
|
|
208
|
+
[Persona]
|
|
209
|
+
See .context/agents/sage.md
|
|
210
|
+
|
|
211
|
+
[Situation]
|
|
212
|
+
Oscar is having difficulty reviewing Ollie results.
|
|
213
|
+
|
|
214
|
+
[Ollie Results]
|
|
215
|
+
{result}
|
|
216
|
+
|
|
217
|
+
[Oscar's Concern]
|
|
218
|
+
{concern}
|
|
219
|
+
|
|
220
|
+
[Sprint Goal]
|
|
221
|
+
{sprint_goal}
|
|
222
|
+
|
|
223
|
+
[Request]
|
|
224
|
+
1. Judge whether these results should be approved
|
|
225
|
+
2. Identify any risks
|
|
226
|
+
3. Provide recommendations
|
|
227
|
+
"""
|
|
228
|
+
)
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### Phase 5: Rework Loop
|
|
232
|
+
|
|
233
|
+
```markdown
|
|
234
|
+
## Rework Process
|
|
235
|
+
|
|
236
|
+
[Handle Rejected Items]
|
|
237
|
+
for result in results:
|
|
238
|
+
if result.status == "revision_needed":
|
|
239
|
+
|
|
240
|
+
# Re-execute Ollie (with feedback)
|
|
241
|
+
revised = Task(
|
|
242
|
+
subagent_type="general-purpose",
|
|
243
|
+
prompt=f"""
|
|
244
|
+
You are 🎩✨ Ollie.
|
|
245
|
+
|
|
246
|
+
Oscar has requested revisions.
|
|
247
|
+
|
|
248
|
+
[Previous Submission]
|
|
249
|
+
{result.output}
|
|
250
|
+
|
|
251
|
+
[Feedback]
|
|
252
|
+
{result.feedback}
|
|
253
|
+
|
|
254
|
+
[Request]
|
|
255
|
+
Please submit revised results incorporating the feedback.
|
|
256
|
+
"""
|
|
257
|
+
)
|
|
258
|
+
|
|
259
|
+
result.output = revised
|
|
260
|
+
result.status = "pending_review"
|
|
261
|
+
|
|
262
|
+
[Loop Condition]
|
|
263
|
+
- Repeat until all result.status == "approved"
|
|
264
|
+
- Max retries: 3 (if exceeded, Oscar judgment or user escalation)
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
### Phase 6: Final Report
|
|
268
|
+
|
|
269
|
+
```markdown
|
|
270
|
+
## Final Report
|
|
271
|
+
|
|
272
|
+
🎩 Oscar: /oscar-loop Complete
|
|
273
|
+
|
|
274
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
275
|
+
|
|
276
|
+
## Summary
|
|
277
|
+
- Epics processed: 3
|
|
278
|
+
- Stories generated: 12
|
|
279
|
+
- Total estimated effort: 28 SP
|
|
280
|
+
|
|
281
|
+
## Detailed Results
|
|
282
|
+
|
|
283
|
+
### Epic 2: User Onboarding Improvement
|
|
284
|
+
| Story | Title | Effort | Status |
|
|
285
|
+
|-------|-------|--------|--------|
|
|
286
|
+
| S2-1 | Simplify account linking | 5 SP | ✅ |
|
|
287
|
+
| S2-2 | Auto-save feature | 3 SP | ✅ |
|
|
288
|
+
| S2-3 | Progress UI | 2 SP | ✅ |
|
|
289
|
+
|
|
290
|
+
### Epic 3: Surface Layer MVP
|
|
291
|
+
| Story | Title | Effort | Status |
|
|
292
|
+
|-------|-------|--------|--------|
|
|
293
|
+
| S3-1 | Diagnosis result display | 8 SP | ✅ |
|
|
294
|
+
| S3-2 | Recommended action suggestions | 5 SP | ✅ |
|
|
295
|
+
| S3-3 | Notification integration | 5 SP | ✅ |
|
|
296
|
+
|
|
297
|
+
### Epic 10: Churn Prevention
|
|
298
|
+
| Story | Title | Effort | Status |
|
|
299
|
+
|-------|-------|--------|--------|
|
|
300
|
+
| S10-1 | Churn prediction model | 3 SP | ✅ |
|
|
301
|
+
| ... | ... | ... | ... |
|
|
302
|
+
|
|
303
|
+
## Processing Log
|
|
304
|
+
- Ollie #1: 1 submission → approved
|
|
305
|
+
- Ollie #2: 2 submissions (1 revision) → approved
|
|
306
|
+
- Ollie #3: 1 submission → approved
|
|
307
|
+
- Sage consultation: 1 (Epic 3 related)
|
|
308
|
+
|
|
309
|
+
## Next Steps
|
|
310
|
+
1. Story handoff to dev team
|
|
311
|
+
2. Finalize at Sprint planning meeting
|
|
312
|
+
|
|
313
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
## Configuration Options
|
|
319
|
+
|
|
320
|
+
```yaml
|
|
321
|
+
# oscar-loop settings
|
|
322
|
+
|
|
323
|
+
parallel:
|
|
324
|
+
max_ollies: 5 # Max simultaneous Ollies
|
|
325
|
+
timeout_per_ollie: 300 # Timeout per Ollie (seconds)
|
|
326
|
+
|
|
327
|
+
review:
|
|
328
|
+
auto_approve_threshold: 0.85 # Auto-approve confidence threshold
|
|
329
|
+
sage_consult_threshold: 0.5 # Sage consultation required threshold
|
|
330
|
+
max_revisions: 3 # Max rework count
|
|
331
|
+
|
|
332
|
+
output:
|
|
333
|
+
format: "markdown" # Output format
|
|
334
|
+
save_to_file: true # Save results to file
|
|
335
|
+
file_path: ".context/sessions/oscar-loop-{timestamp}.md"
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
---
|
|
339
|
+
|
|
340
|
+
## Error Handling
|
|
341
|
+
|
|
342
|
+
### Ollie Timeout
|
|
343
|
+
```
|
|
344
|
+
Ollie #2 timed out (exceeded 300 seconds)
|
|
345
|
+
|
|
346
|
+
[Handling]
|
|
347
|
+
1. Cancel that Ollie
|
|
348
|
+
2. Report to Oscar
|
|
349
|
+
3. Present options:
|
|
350
|
+
A) Retry
|
|
351
|
+
B) Skip that Epic
|
|
352
|
+
C) Request user judgment
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
### Ollie Failure
|
|
356
|
+
```
|
|
357
|
+
Ollie #3 error occurred
|
|
358
|
+
|
|
359
|
+
[Handling]
|
|
360
|
+
1. Collect error logs
|
|
361
|
+
2. Auto-retry once
|
|
362
|
+
3. On repeat failure, escalate to Oscar
|
|
363
|
+
4. Oscar handles directly or notifies user
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
### Sage Consultation Unavailable
|
|
367
|
+
```
|
|
368
|
+
No Sage response
|
|
369
|
+
|
|
370
|
+
[Handling]
|
|
371
|
+
1. Oscar proceeds with own judgment
|
|
372
|
+
2. Explicitly record judgment rationale
|
|
373
|
+
3. Mark "Judged without Sage consultation" in final report
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
---
|
|
377
|
+
|
|
378
|
+
## State Management
|
|
379
|
+
|
|
380
|
+
```markdown
|
|
381
|
+
## Loop State (Using TodoWrite)
|
|
382
|
+
|
|
383
|
+
[Real-time State Tracking]
|
|
384
|
+
- [ ] Phase 1: Request analysis
|
|
385
|
+
- [ ] Phase 2: Ollie spawning
|
|
386
|
+
- [ ] Ollie #1 (Epic 2)
|
|
387
|
+
- [ ] Ollie #2 (Epic 3)
|
|
388
|
+
- [ ] Ollie #3 (Epic 10)
|
|
389
|
+
- [ ] Phase 3: Result collection
|
|
390
|
+
- [ ] Phase 4: Oscar review
|
|
391
|
+
- [ ] Epic 2 review
|
|
392
|
+
- [ ] Epic 3 review
|
|
393
|
+
- [ ] Epic 10 review
|
|
394
|
+
- [ ] Phase 5: Rework (if needed)
|
|
395
|
+
- [ ] Phase 6: Final report
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
---
|
|
399
|
+
|
|
400
|
+
## Trigger Keywords
|
|
401
|
+
|
|
402
|
+
| Keyword | Action |
|
|
403
|
+
|---------|--------|
|
|
404
|
+
| `enhance`, `detail`, `break down` | Task breakdown mode |
|
|
405
|
+
| `Epic N, M, K` | Multiple Epic parallel processing |
|
|
406
|
+
| `Sprint backlog` | Full backlog organization mode |
|
|
407
|
+
| `analyze and plan` | Analysis + Task creation pipeline |
|
|
408
|
+
|
|
409
|
+
---
|
|
410
|
+
|
|
411
|
+
## Limitations
|
|
412
|
+
|
|
413
|
+
```
|
|
414
|
+
[What /oscar-loop does NOT do]
|
|
415
|
+
- Actual development/coding work
|
|
416
|
+
- Direct database manipulation
|
|
417
|
+
- External system deployment
|
|
418
|
+
- Apply changes without user consent
|
|
419
|
+
|
|
420
|
+
[What /oscar-loop DOES do]
|
|
421
|
+
- Draft Tasks/Stories
|
|
422
|
+
- Coordinate expert collaboration
|
|
423
|
+
- Quality review and approval
|
|
424
|
+
- Document generation and organization
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
---
|
|
428
|
+
|
|
429
|
+
## Related Files
|
|
430
|
+
|
|
431
|
+
- `.context/agents/orchestrator.md` - Oscar(PO) persona
|
|
432
|
+
- `.context/agents/ollie.md` - Ollie persona
|
|
433
|
+
- `.context/agents/sage.md` - Sage persona
|
|
434
|
+
- `.context/agents/analyst.md` - Danny persona
|
|
435
|
+
- `.context/agents/researcher.md` - Rita persona
|
|
436
|
+
- `.context/agents/strategist.md` - Simon persona
|