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,118 @@
|
|
|
1
|
+
# Work Tracking & Session Management (Oscar Module)
|
|
2
|
+
|
|
3
|
+
> Referenced at session start/save, when work tracking is needed
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. Incomplete Work Tracking (Sisyphus Mode)
|
|
8
|
+
|
|
9
|
+
> *"Half-done is undone"* — Track started work to completion
|
|
10
|
+
|
|
11
|
+
### Tracking Targets
|
|
12
|
+
|
|
13
|
+
| Work Type | Completion Criteria | Incomplete Notification |
|
|
14
|
+
|-----------|-------------------|------------------------|
|
|
15
|
+
| **PRD Writing** | One Question, OMTM, hypothesis all defined | "OMTM is missing from the PRD" |
|
|
16
|
+
| **Hypothesis Validation** | Before/After collected + judgment complete | "Validation period ended but no judgment" |
|
|
17
|
+
| **Sprint** | All KR measurements complete | "KR3 still not started" |
|
|
18
|
+
| **Handoff** | Checklist 100% complete | "3 items incomplete on handoff checklist" |
|
|
19
|
+
| **Retrospective** | Learnings + next actions derived | "Next actions missing from retrospective" |
|
|
20
|
+
|
|
21
|
+
### Notification Timing
|
|
22
|
+
|
|
23
|
+
- **Immediate**: Work interruption detected (topic switch), incomplete items exist before session end
|
|
24
|
+
- **Periodic**: Previous incomplete items briefed at session start, D-7/D-3/D-1 deadline alerts
|
|
25
|
+
- **Proactive**: "You stopped writing the PRD — would you like to continue?"
|
|
26
|
+
|
|
27
|
+
### Work Completion Enforcement
|
|
28
|
+
|
|
29
|
+
Oscar verifies whether work is "truly complete":
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
User: "I'm done with the PRD"
|
|
33
|
+
|
|
34
|
+
🎩 Oscar: Let me verify PRD completion.
|
|
35
|
+
✅ One Question defined
|
|
36
|
+
✅ Hypothesis written
|
|
37
|
+
⚠️ OMTM not defined
|
|
38
|
+
⚠️ Guard Rail not set
|
|
39
|
+
|
|
40
|
+
🟡 Partially complete - 2 items need to be added
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 2. Session Context Management
|
|
46
|
+
|
|
47
|
+
Automatically suggests context cleanup when sessions get long.
|
|
48
|
+
|
|
49
|
+
### Trigger Conditions
|
|
50
|
+
|
|
51
|
+
| Condition | Suggestion |
|
|
52
|
+
|-----------|------------|
|
|
53
|
+
| 20+ conversation turns | "The session is getting long. Shall I clean up?" |
|
|
54
|
+
| 3+ topic switches | "We've covered multiple topics. Shall I distill the key points?" |
|
|
55
|
+
| New work started after task completion | "Shall I clean up the previous work and start fresh?" |
|
|
56
|
+
| Before session end | "Shall I save today's content? (`/save`)" |
|
|
57
|
+
|
|
58
|
+
### Preservation Priority
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
🔴 Must Preserve
|
|
62
|
+
├─ Current sprint goals/KR
|
|
63
|
+
├─ In-progress work + status
|
|
64
|
+
├─ Incomplete work list
|
|
65
|
+
├─ Today's decisions
|
|
66
|
+
└─ Next action items
|
|
67
|
+
|
|
68
|
+
🟡 Preserve Summary (key points only)
|
|
69
|
+
├─ Analysis results (conclusions focused)
|
|
70
|
+
├─ Key discussion points
|
|
71
|
+
└─ Inter-agent handoff content
|
|
72
|
+
|
|
73
|
+
🟢 Can Omit
|
|
74
|
+
├─ Detailed intermediate processes
|
|
75
|
+
├─ Exploration/investigation processes
|
|
76
|
+
└─ Trial-and-error/revision processes
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## 3. Proactive Daily Log Intervention
|
|
82
|
+
|
|
83
|
+
> *"Important things must be recorded. Oscar suggests first."*
|
|
84
|
+
|
|
85
|
+
### Recording Suggestion Triggers
|
|
86
|
+
|
|
87
|
+
| Importance | Situation | Oscar Action |
|
|
88
|
+
|------------|-----------|-------------|
|
|
89
|
+
| **High** | Policy decision, spec finalization, key insight | Immediately suggest "Shall I record this?" |
|
|
90
|
+
| **Medium** | Feature commit, epic/story creation, analysis complete | Suggest |
|
|
91
|
+
| **Low** | Typo fix, formatting, refactoring | Do not record |
|
|
92
|
+
|
|
93
|
+
### Commit Auto-filtering
|
|
94
|
+
|
|
95
|
+
- **Record**: feat: / fix: / docs: (policy changes, spec additions)
|
|
96
|
+
- **Skip**: chore: / style: / refactor: / docs: (simple typos)
|
|
97
|
+
|
|
98
|
+
### Log Types
|
|
99
|
+
|
|
100
|
+
| type | Description | Detection Pattern |
|
|
101
|
+
|------|-------------|-------------------|
|
|
102
|
+
| `decision` | Policy/direction decision | "decided to...", "let's go with..." |
|
|
103
|
+
| `commit` | Git commit | feat/fix/docs commit completed |
|
|
104
|
+
| `insight` | Data insight | "discovered that...", "the key is..." |
|
|
105
|
+
| `deploy` | Deployment complete | Deployment success message |
|
|
106
|
+
| `spec` | Spec finalized | Epic/Story finalized |
|
|
107
|
+
| `handoff` | Handoff | Inter-agent handover complete |
|
|
108
|
+
|
|
109
|
+
### Log Addition Logic
|
|
110
|
+
|
|
111
|
+
1. Read `.context/daily/{today's date}.yaml` (create if doesn't exist)
|
|
112
|
+
2. Find the entry for the current session ID
|
|
113
|
+
3. Append to `logs` array: `{time, type, content, context}`
|
|
114
|
+
4. Update `_meta` and save
|
|
115
|
+
|
|
116
|
+
### Natural Language Invocation Detection
|
|
117
|
+
|
|
118
|
+
"Organize what I did today", "daily work summary", "daily log" → Route to `/daily` skill
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# Project Configuration - Generated/updated through Oscar Setup interview
|
|
2
|
+
# This file contains the core context of the project.
|
|
3
|
+
# The Setup Wizard (/start) automatically generates this file through an interview.
|
|
4
|
+
|
|
5
|
+
# ============================================================
|
|
6
|
+
# Project Basic Information
|
|
7
|
+
# ============================================================
|
|
8
|
+
project:
|
|
9
|
+
name: "" # {{project.name}}
|
|
10
|
+
tagline: "" # {{project.tagline}}
|
|
11
|
+
type: "" # brownfield | greenfield
|
|
12
|
+
|
|
13
|
+
# ============================================================
|
|
14
|
+
# Problem & Market
|
|
15
|
+
# ============================================================
|
|
16
|
+
problem:
|
|
17
|
+
core: ""
|
|
18
|
+
target: ""
|
|
19
|
+
alternatives: []
|
|
20
|
+
timing: ""
|
|
21
|
+
|
|
22
|
+
# ============================================================
|
|
23
|
+
# Solution & Differentiation
|
|
24
|
+
# ============================================================
|
|
25
|
+
solution:
|
|
26
|
+
approach: ""
|
|
27
|
+
differentiation: ""
|
|
28
|
+
outcome: []
|
|
29
|
+
|
|
30
|
+
# ============================================================
|
|
31
|
+
# Current State
|
|
32
|
+
# ============================================================
|
|
33
|
+
current_state:
|
|
34
|
+
stage: "" # idea | prototype | mvp | launched | pmf | growth
|
|
35
|
+
focus: ""
|
|
36
|
+
uncertainty: ""
|
|
37
|
+
next_milestone: ""
|
|
38
|
+
|
|
39
|
+
# ============================================================
|
|
40
|
+
# Validation & Learning
|
|
41
|
+
# ============================================================
|
|
42
|
+
validation:
|
|
43
|
+
confirmed: []
|
|
44
|
+
unknown: []
|
|
45
|
+
customer_feedback: ""
|
|
46
|
+
|
|
47
|
+
# ============================================================
|
|
48
|
+
# Operations Settings
|
|
49
|
+
# ============================================================
|
|
50
|
+
operations:
|
|
51
|
+
sprint:
|
|
52
|
+
enabled: true
|
|
53
|
+
current: 1
|
|
54
|
+
duration_weeks: 2
|
|
55
|
+
d_day: ""
|
|
56
|
+
|
|
57
|
+
domains: []
|
|
58
|
+
# Example:
|
|
59
|
+
# - { id: growth, name: "Growth", path: "domains/growth/" }
|
|
60
|
+
# - { id: marketing, name: "Marketing", path: "domains/marketing/" }
|
|
61
|
+
|
|
62
|
+
integrations:
|
|
63
|
+
ga4:
|
|
64
|
+
enabled: false
|
|
65
|
+
property_id: "" # {{integrations.ga4.property_id}}
|
|
66
|
+
notion:
|
|
67
|
+
enabled: false
|
|
68
|
+
workspace: ""
|
|
69
|
+
daily_page_id: ""
|
|
70
|
+
channel_io:
|
|
71
|
+
enabled: false
|
|
72
|
+
prod_db:
|
|
73
|
+
enabled: false
|
|
74
|
+
mcp_name: "" # {{integrations.prod_db.mcp_name}}
|
|
75
|
+
snapshot_mcp_name: "" # {{integrations.prod_db.snapshot_mcp_name}}
|
|
76
|
+
caution: [] # {{#each integrations.prod_db.caution}}
|
|
77
|
+
rules: ""
|
|
78
|
+
tunnel_script: ""
|
|
79
|
+
notebooklm:
|
|
80
|
+
enabled: false
|
|
81
|
+
notebook_name: "" # {{integrations.notebooklm.notebook_name}}
|
|
82
|
+
corti:
|
|
83
|
+
enabled: false
|
|
84
|
+
workspace_id: "" # {{integrations.corti.workspace_id}}
|
|
85
|
+
default_domain: "" # {{integrations.corti.default_domain}}
|
|
86
|
+
|
|
87
|
+
dev_scope:
|
|
88
|
+
repo_name: "" # {{dev_scope.repo_name}}
|
|
89
|
+
service_repo: "" # {{dev_scope.service_repo}}
|
|
90
|
+
|
|
91
|
+
spec_site:
|
|
92
|
+
title: "" # {{spec_site.title}}
|
|
93
|
+
deploy_url: "" # {{spec_site.deploy_url}}
|
|
94
|
+
|
|
95
|
+
# ============================================================
|
|
96
|
+
# Metadata
|
|
97
|
+
# ============================================================
|
|
98
|
+
_meta:
|
|
99
|
+
created_at: ""
|
|
100
|
+
created_by: "Oscar (Setup Wizard)"
|
|
101
|
+
last_interview: null
|
|
102
|
+
version: "1.0.0"
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
# Developer Agent Guide
|
|
2
|
+
|
|
3
|
+
> Development workflow guide for AI Agent Driven Development
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
This guide defines the workflow that AI development agents (Claude Code, etc.) must follow when performing story-based development.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Workflow
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
17
|
+
│ Dev Agent Workflow │
|
|
18
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
19
|
+
│ │
|
|
20
|
+
│ 1. Load Story │
|
|
21
|
+
│ └─→ Check for ready-for-dev in sprint-status.yaml │
|
|
22
|
+
│ │
|
|
23
|
+
│ 2. Understand Context │
|
|
24
|
+
│ ├─→ Understand user story │
|
|
25
|
+
│ ├─→ Review acceptance criteria │
|
|
26
|
+
│ └─→ Study Dev Notes │
|
|
27
|
+
│ │
|
|
28
|
+
│ 3. Review References │
|
|
29
|
+
│ ├─→ Check PRD │
|
|
30
|
+
│ ├─→ Check design │
|
|
31
|
+
│ └─→ Review existing implementations │
|
|
32
|
+
│ │
|
|
33
|
+
│ 4. Check Conflict Detection │
|
|
34
|
+
│ └─→ Resolve ⚠️ items first │
|
|
35
|
+
│ │
|
|
36
|
+
│ 5. Implement Tasks in Order │
|
|
37
|
+
│ └─→ Update checkboxes on subtask completion │
|
|
38
|
+
│ │
|
|
39
|
+
│ 6. Completion Processing │
|
|
40
|
+
│ ├─→ Update Dev Agent Record │
|
|
41
|
+
│ ├─→ Record modified file list │
|
|
42
|
+
│ └─→ Change status to review │
|
|
43
|
+
│ │
|
|
44
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Detailed Steps
|
|
50
|
+
|
|
51
|
+
### Step 1: Load Story
|
|
52
|
+
|
|
53
|
+
1. Check `sprint-status.yaml` file
|
|
54
|
+
2. Select a story with `status: ready-for-dev`
|
|
55
|
+
3. Load the story document
|
|
56
|
+
|
|
57
|
+
```yaml
|
|
58
|
+
# sprint-status.yaml example
|
|
59
|
+
- id: E-01-S-01
|
|
60
|
+
title: "Landing page redesign"
|
|
61
|
+
status: ready-for-dev # ← Select this story
|
|
62
|
+
assignee: null
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Step 2: Understand Context
|
|
66
|
+
|
|
67
|
+
**Required checks**:
|
|
68
|
+
|
|
69
|
+
| Section | What to Check |
|
|
70
|
+
|---------|--------------|
|
|
71
|
+
| User Story | Understand role, feature, value |
|
|
72
|
+
| Acceptance Criteria | Understand Given-When-Then conditions |
|
|
73
|
+
| Dev Notes | Verify architecture pattern, tech stack |
|
|
74
|
+
| Task Breakdown | Determine implementation order |
|
|
75
|
+
|
|
76
|
+
### Step 3: Review References
|
|
77
|
+
|
|
78
|
+
Check and understand all reference documents:
|
|
79
|
+
|
|
80
|
+
- **PRD**: Original business requirements
|
|
81
|
+
- **Design**: UI/UX details
|
|
82
|
+
- **Existing Implementation**: Code with similar patterns
|
|
83
|
+
|
|
84
|
+
### Step 4: Check Conflict Detection
|
|
85
|
+
|
|
86
|
+
Check the "Conflict Detection" section in Dev Notes:
|
|
87
|
+
|
|
88
|
+
| Status | Meaning | Action |
|
|
89
|
+
|--------|---------|--------|
|
|
90
|
+
| ✅ None | No conflicts | Proceed |
|
|
91
|
+
| ⚠️ Caution | Potential conflict | **Resolve first, then proceed** |
|
|
92
|
+
|
|
93
|
+
### Step 5: Implement Tasks in Order
|
|
94
|
+
|
|
95
|
+
**Rules**:
|
|
96
|
+
|
|
97
|
+
1. **Do not change task order** - Dependencies have been considered
|
|
98
|
+
2. **Do not add features beyond acceptance criteria** - Prevent scope creep
|
|
99
|
+
3. **Update checkboxes on each subtask completion**
|
|
100
|
+
|
|
101
|
+
```markdown
|
|
102
|
+
### Task 1: Implement API endpoint `AC-01`
|
|
103
|
+
- [x] **1.1**: Create Controller ← Check on completion
|
|
104
|
+
- [x] **1.2**: Implement Service logic
|
|
105
|
+
- [ ] **1.3**: Connect Repository ← In progress
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Step 6: Completion Processing
|
|
109
|
+
|
|
110
|
+
1. **Update Dev Agent Record**
|
|
111
|
+
|
|
112
|
+
```markdown
|
|
113
|
+
## Dev Agent Record
|
|
114
|
+
|
|
115
|
+
| Item | Value |
|
|
116
|
+
|------|-------|
|
|
117
|
+
| Created By Agent | Claude Opus 4.5 |
|
|
118
|
+
| Created Date | 2026-01-24 |
|
|
119
|
+
| Last Modified | 2026-01-24 |
|
|
120
|
+
|
|
121
|
+
### Completion Notes
|
|
122
|
+
- Notable items: Maintained compatibility with existing API schema
|
|
123
|
+
- Changed parts: Added method to UserController
|
|
124
|
+
- Additional considerations: Cache invalidation logic needed
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
2. **Record modified file list**
|
|
128
|
+
|
|
129
|
+
```markdown
|
|
130
|
+
### Modified File List
|
|
131
|
+
- src/controllers/UserController.ts
|
|
132
|
+
- src/services/UserService.ts
|
|
133
|
+
- src/repositories/UserRepository.ts
|
|
134
|
+
- tests/UserController.test.ts (new)
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
3. **Change status**
|
|
138
|
+
|
|
139
|
+
Change status to `review` in `sprint-status.yaml`:
|
|
140
|
+
|
|
141
|
+
```yaml
|
|
142
|
+
- id: E-01-S-01
|
|
143
|
+
status: review # ready-for-dev → review
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Precautions
|
|
149
|
+
|
|
150
|
+
### DO
|
|
151
|
+
|
|
152
|
+
- ✅ Implement tasks in order
|
|
153
|
+
- ✅ Only implement features defined in acceptance criteria
|
|
154
|
+
- ✅ Resolve conflict detection items first
|
|
155
|
+
- ✅ Record all modified files
|
|
156
|
+
- ✅ Write tests (when specified in Dev Notes)
|
|
157
|
+
- ✅ Follow code style guide
|
|
158
|
+
|
|
159
|
+
### DON'T
|
|
160
|
+
|
|
161
|
+
- ❌ Change task order
|
|
162
|
+
- ❌ Add features beyond acceptance criteria
|
|
163
|
+
- ❌ Proceed ignoring ⚠️ conflicts
|
|
164
|
+
- ❌ Skip Dev Agent Record update
|
|
165
|
+
- ❌ Skip file list recording
|
|
166
|
+
- ❌ Skip status change
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## Error Handling
|
|
171
|
+
|
|
172
|
+
### When a Blocker Occurs During Implementation
|
|
173
|
+
|
|
174
|
+
1. Revert story status to `backlog`
|
|
175
|
+
2. Record blocker details in Dev Agent Record
|
|
176
|
+
3. Notify PO/responsible person
|
|
177
|
+
|
|
178
|
+
```markdown
|
|
179
|
+
### Completion Notes
|
|
180
|
+
- Blocker: External API authentication key required
|
|
181
|
+
- Required action: Request API key from DevOps team
|
|
182
|
+
- Estimated resolution time: 1 day
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### When Acceptance Criteria Are Unclear
|
|
186
|
+
|
|
187
|
+
1. Stop implementation
|
|
188
|
+
2. Request clarification via AskUserQuestion
|
|
189
|
+
3. Update story document then proceed
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## Quality Criteria
|
|
194
|
+
|
|
195
|
+
Pre-completion checks:
|
|
196
|
+
|
|
197
|
+
- [ ] All acceptance criteria met
|
|
198
|
+
- [ ] All task checkboxes completed
|
|
199
|
+
- [ ] Tests written and passing (if applicable)
|
|
200
|
+
- [ ] No linting errors
|
|
201
|
+
- [ ] Event logging verified (if applicable)
|
|
202
|
+
- [ ] Dev Agent Record updated
|
|
203
|
+
- [ ] Modified file list recorded
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## Related Documents
|
|
208
|
+
|
|
209
|
+
| Document | Location |
|
|
210
|
+
|----------|----------|
|
|
211
|
+
| Story Template | `.context/templates/story-v2.md` |
|
|
212
|
+
| Sprint Status | `.context/sprints/s[N]/sprint-status.yaml` |
|
|
213
|
+
| Handoff Checklist | `.context/templates/handoff-checklist.md` |
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
*Last updated: 2026-01-19*
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
# Epic Spec Template
|
|
2
|
+
|
|
3
|
+
> Detailed epic specification written by the PO
|
|
4
|
+
> This document must be finalized before Story creation
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## [Epic ID]: [Epic Name]
|
|
9
|
+
|
|
10
|
+
### Meta
|
|
11
|
+
|
|
12
|
+
| Item | Value |
|
|
13
|
+
|------|-------|
|
|
14
|
+
| **Epic ID** | E-XX |
|
|
15
|
+
| **Sprint** | SXX |
|
|
16
|
+
| **Status** | `draft` / `review` / `approved` |
|
|
17
|
+
| **PO Approval Date** | YYYY-MM-DD |
|
|
18
|
+
| **Assigned Developer** | - |
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 1. WHY: Why is this feature needed?
|
|
23
|
+
|
|
24
|
+
### Problem Definition
|
|
25
|
+
|
|
26
|
+
[What problem are we trying to solve? Describe the specific situation]
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
[Example]
|
|
30
|
+
Currently, users cannot determine "whether this is good or bad" even after viewing dashboard metrics.
|
|
31
|
+
They cannot tell what their key metrics look like relative to their goals, preventing them from making appropriate decisions.
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Supporting Data
|
|
35
|
+
|
|
36
|
+
| Metric | Value | Source |
|
|
37
|
+
|--------|-------|--------|
|
|
38
|
+
| [Problem severity metric] | [Value] | [GA4/DB/VOC] |
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
[Example]
|
|
42
|
+
| Metric | Value | Source |
|
|
43
|
+
|--------|-------|--------|
|
|
44
|
+
| No action after entering detail page | 64% | GA4 |
|
|
45
|
+
| "Don't understand what the metrics mean" VOC | 12/month | Channel.io |
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Expected Outcome
|
|
49
|
+
|
|
50
|
+
[What changes are expected when this feature is deployed?]
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 2. WHAT: Detailed Requirements
|
|
55
|
+
|
|
56
|
+
### Core Features
|
|
57
|
+
|
|
58
|
+
| # | Feature | Description | Required |
|
|
59
|
+
|---|---------|-------------|----------|
|
|
60
|
+
| 1 | [Feature name] | [Description] | Required/Optional |
|
|
61
|
+
| 2 | [Feature name] | [Description] | Required/Optional |
|
|
62
|
+
|
|
63
|
+
### Business Logic
|
|
64
|
+
|
|
65
|
+
#### [Logic 1: Name]
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
[Detailed formulas/rules/conditions]
|
|
69
|
+
|
|
70
|
+
Example:
|
|
71
|
+
Conversion rate = (Conversions / Visits) × 100
|
|
72
|
+
Goal achievement rate = (Current value / Target value) × 100
|
|
73
|
+
|
|
74
|
+
Conditions:
|
|
75
|
+
- If no target value → Show "Set a goal for more accuracy" guidance
|
|
76
|
+
- If achievement rate is below threshold → Show "Warning", red color
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
#### [Logic 2: Name]
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
[Detailed formulas/rules/conditions]
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### User Scenarios
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
[Concrete usage flow]
|
|
89
|
+
|
|
90
|
+
1. User enters the dashboard page
|
|
91
|
+
2. Sees "75% of goal achieved" displayed next to 15% conversion rate on the "Item A" card
|
|
92
|
+
3. User understands "I have 25% left to reach my goal"
|
|
93
|
+
4. ...
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## 3. HOW: Flow & Screens
|
|
99
|
+
|
|
100
|
+
### User Flow
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
[Start] → [Step 1] → [Step 2] → [Branch] → [Complete]
|
|
104
|
+
↓
|
|
105
|
+
[Exception]
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Wireframe
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
[ASCII or Figma link]
|
|
112
|
+
|
|
113
|
+
┌────────────────────────────────────────┐
|
|
114
|
+
│ Item A 🟢 Good │
|
|
115
|
+
├────────────────────────────────────────┤
|
|
116
|
+
│ │
|
|
117
|
+
│ Conversion Rate 15% │
|
|
118
|
+
│ ─────────────────────── │
|
|
119
|
+
│ 📊 75% of goal achieved │
|
|
120
|
+
│ │
|
|
121
|
+
│ [View Details →] │
|
|
122
|
+
└────────────────────────────────────────┘
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Design Requirements
|
|
126
|
+
|
|
127
|
+
| Item | Content |
|
|
128
|
+
|------|---------|
|
|
129
|
+
| Tone & Manner | [e.g., Friendly and easy expressions] |
|
|
130
|
+
| Colors | [e.g., Positive=green, Negative=red] |
|
|
131
|
+
| Reference Design | [Link] |
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## 4. EDGE: Exceptions & Edge Cases
|
|
136
|
+
|
|
137
|
+
### Data Exceptions
|
|
138
|
+
|
|
139
|
+
| Situation | Handling Method |
|
|
140
|
+
|-----------|----------------|
|
|
141
|
+
| Required input missing | [How to handle?] |
|
|
142
|
+
| Data value is 0 | [How to handle?] |
|
|
143
|
+
| No data available | [How to handle?] |
|
|
144
|
+
|
|
145
|
+
### User Exceptions
|
|
146
|
+
|
|
147
|
+
| Situation | Handling Method |
|
|
148
|
+
|-----------|----------------|
|
|
149
|
+
| [Exception scenario] | [Handling method] |
|
|
150
|
+
|
|
151
|
+
### System Exceptions
|
|
152
|
+
|
|
153
|
+
| Situation | Handling Method |
|
|
154
|
+
|-----------|----------------|
|
|
155
|
+
| API failure | [How to handle?] |
|
|
156
|
+
| Timeout | [How to handle?] |
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## 5. Success Metrics
|
|
161
|
+
|
|
162
|
+
### Success Criteria for This Epic
|
|
163
|
+
|
|
164
|
+
| Metric | Before | Target | Measurement Method |
|
|
165
|
+
|--------|--------|--------|-------------------|
|
|
166
|
+
| [Metric 1] | [Current value] | [Target value] | [Method] |
|
|
167
|
+
| [Metric 2] | [Current value] | [Target value] | [Method] |
|
|
168
|
+
|
|
169
|
+
### GA4 Event Definitions
|
|
170
|
+
|
|
171
|
+
| Event Name | Trigger | Parameters |
|
|
172
|
+
|------------|---------|------------|
|
|
173
|
+
| [event_name] | [When] | [What] |
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## 6. Dependencies & Constraints
|
|
178
|
+
|
|
179
|
+
### Technical Dependencies
|
|
180
|
+
|
|
181
|
+
| Dependency | Status | Notes |
|
|
182
|
+
|-----------|--------|-------|
|
|
183
|
+
| [API/Data/Feature] | Confirmed/Unconfirmed | [Description] |
|
|
184
|
+
|
|
185
|
+
### Constraints
|
|
186
|
+
|
|
187
|
+
- [Constraint 1: e.g., Maintain existing UI layout]
|
|
188
|
+
- [Constraint 2: e.g., No mobile support]
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## 7. Story List (Planned)
|
|
193
|
+
|
|
194
|
+
> To be broken down by 📋 Penny after Epic Spec is finalized
|
|
195
|
+
|
|
196
|
+
| Story ID | Title | Size | Status |
|
|
197
|
+
|----------|-------|------|--------|
|
|
198
|
+
| E-XX-S-01 | [Title] | S/M/L | draft |
|
|
199
|
+
| E-XX-S-02 | [Title] | S/M/L | draft |
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## Checklist
|
|
204
|
+
|
|
205
|
+
### Pre-PO Approval Check
|
|
206
|
+
|
|
207
|
+
- [ ] Is the problem definition clear?
|
|
208
|
+
- [ ] Is the business logic specific? (formulas, conditions, etc.)
|
|
209
|
+
- [ ] Is there a wireframe/flow?
|
|
210
|
+
- [ ] Are edge cases defined?
|
|
211
|
+
- [ ] Are success metrics measurable?
|
|
212
|
+
- [ ] Are technical dependencies confirmed?
|
|
213
|
+
|
|
214
|
+
### Approval
|
|
215
|
+
|
|
216
|
+
| Item | Confirmation |
|
|
217
|
+
|------|-------------|
|
|
218
|
+
| PO Approval | ☐ |
|
|
219
|
+
| Approval Date | YYYY-MM-DD |
|
|
220
|
+
| Notes | - |
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
*Created: YYYY-MM-DD*
|
|
225
|
+
*Last Modified: YYYY-MM-DD*
|