ragarciaruben 1.20.19 → 1.20.21
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/.github/agents/product-owner.agent.md +98 -0
- package/.github/agents/verifier.agent.md +3 -0
- package/.github/prompts/break-down-epic.prompt.md +125 -0
- package/.github/prompts/create-tickets.prompt.md +93 -0
- package/.github/prompts/refine-backlog.prompt.md +88 -0
- package/bin/install.js +406 -1969
- package/get-shit-done/templates/AGENTS.md +83 -0
- package/get-shit-done/templates/opencode/agents/executor.md +61 -0
- package/get-shit-done/templates/opencode/agents/planner.md +77 -0
- package/get-shit-done/templates/opencode/agents/product-owner.md +65 -0
- package/{.github/copilot-context/agents/verifier.agent.md → get-shit-done/templates/opencode/agents/verifier.md} +12 -35
- package/get-shit-done/templates/opencode/commands/break-down-epic.md +120 -0
- package/get-shit-done/templates/opencode/commands/create-tickets.md +75 -0
- package/{.github/copilot-context/prompts/execute-phase.prompt.md → get-shit-done/templates/opencode/commands/execute-phase.md} +5 -33
- package/{.github/copilot-context/prompts/map-codebase.prompt.md → get-shit-done/templates/opencode/commands/map-codebase.md} +12 -41
- package/{.github/copilot-context/prompts/new-project.prompt.md → get-shit-done/templates/opencode/commands/new-project.md} +17 -33
- package/{.github/copilot-context/prompts/pause-work.prompt.md → get-shit-done/templates/opencode/commands/pause-work.md} +6 -19
- package/{.github/copilot-context/prompts/plan-phase.prompt.md → get-shit-done/templates/opencode/commands/plan-phase.md} +4 -27
- package/{.github/copilot-context/prompts/progress.prompt.md → get-shit-done/templates/opencode/commands/progress.md} +1 -4
- package/{.github/copilot-context/prompts/redefine-roadmap.prompt.md → get-shit-done/templates/opencode/commands/redefine-roadmap.md} +8 -21
- package/get-shit-done/templates/opencode/commands/refine-backlog.md +77 -0
- package/{.github/copilot-context/prompts/resume-work.prompt.md → get-shit-done/templates/opencode/commands/resume-work.md} +2 -13
- package/get-shit-done/templates/opencode/commands/set-profile.md +65 -0
- package/{.github/copilot-context/prompts/sync-instructions.prompt.md → get-shit-done/templates/opencode/commands/sync-instructions.md} +9 -13
- package/{.github/copilot-context/prompts/sync-jira.prompt.md → get-shit-done/templates/opencode/commands/sync-jira.md} +5 -17
- package/{.github/copilot-context/prompts/verify-work.prompt.md → get-shit-done/templates/opencode/commands/verify-work.md} +5 -33
- package/get-shit-done/templates/opencode.json +15 -0
- package/package.json +7 -17
- package/.github/copilot-context/README.md +0 -556
- package/.github/copilot-context/agents/executor.agent.md +0 -84
- package/.github/copilot-context/agents/planner.agent.md +0 -96
- package/.github/copilot-context/hooks/hooks.json +0 -11
- package/.github/copilot-context/hooks/inject-context.js +0 -107
- package/.github/copilot-context/instructions/architecture.instructions.md +0 -33
- package/.github/copilot-context/instructions/concerns.instructions.md +0 -30
- package/.github/copilot-context/instructions/conventions.instructions.md +0 -25
- package/.github/copilot-context/instructions/integrations.instructions.md +0 -30
- package/.github/copilot-context/instructions/stack.instructions.md +0 -30
- package/.github/copilot-context/instructions/structure.instructions.md +0 -32
- package/.github/copilot-context/instructions/testing.instructions.md +0 -25
- package/.github/copilot-context/skills/map-codebase/SKILL.md +0 -49
- package/.github/copilot-context/skills/project-history/SKILL.md +0 -46
- package/.vscode/settings.json +0 -9
- package/agents/gsd-codebase-mapper.md +0 -764
- package/agents/gsd-debugger.md +0 -1246
- package/agents/gsd-executor.md +0 -469
- package/agents/gsd-integration-checker.md +0 -443
- package/agents/gsd-phase-researcher.md +0 -546
- package/agents/gsd-plan-checker.md +0 -690
- package/agents/gsd-planner.md +0 -1275
- package/agents/gsd-project-researcher.md +0 -621
- package/agents/gsd-research-synthesizer.md +0 -239
- package/agents/gsd-roadmapper.md +0 -642
- package/agents/gsd-verifier.md +0 -573
- package/bin/setup-copilot-context.js +0 -245
- package/commands/gsd/add-phase.md +0 -43
- package/commands/gsd/add-tests.md +0 -41
- package/commands/gsd/add-todo.md +0 -47
- package/commands/gsd/audit-milestone.md +0 -36
- package/commands/gsd/check-todos.md +0 -45
- package/commands/gsd/cleanup.md +0 -18
- package/commands/gsd/complete-milestone.md +0 -136
- package/commands/gsd/debug.md +0 -167
- package/commands/gsd/discuss-phase.md +0 -83
- package/commands/gsd/execute-phase.md +0 -41
- package/commands/gsd/health.md +0 -22
- package/commands/gsd/help.md +0 -22
- package/commands/gsd/insert-phase.md +0 -32
- package/commands/gsd/join-discord.md +0 -18
- package/commands/gsd/list-phase-assumptions.md +0 -46
- package/commands/gsd/map-codebase.md +0 -71
- package/commands/gsd/new-milestone.md +0 -44
- package/commands/gsd/new-project.md +0 -42
- package/commands/gsd/new-project.md.bak +0 -1041
- package/commands/gsd/pause-work.md +0 -38
- package/commands/gsd/plan-milestone-gaps.md +0 -34
- package/commands/gsd/plan-phase.md +0 -45
- package/commands/gsd/progress.md +0 -24
- package/commands/gsd/quick.md +0 -41
- package/commands/gsd/reapply-patches.md +0 -110
- package/commands/gsd/remove-phase.md +0 -31
- package/commands/gsd/research-phase.md +0 -189
- package/commands/gsd/resume-work.md +0 -40
- package/commands/gsd/set-profile.md +0 -34
- package/commands/gsd/settings.md +0 -36
- package/commands/gsd/update.md +0 -37
- package/commands/gsd/verify-work.md +0 -38
- package/hooks/dist/gsd-check-update.js +0 -62
- package/hooks/dist/gsd-context-monitor.js +0 -122
- package/hooks/dist/gsd-statusline.js +0 -108
- package/scripts/build-hooks.js +0 -43
|
@@ -1,17 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: map-codebase
|
|
3
2
|
description: Analyze the codebase and generate structured context documents in .planning/codebase/
|
|
4
|
-
|
|
5
|
-
tools:
|
|
6
|
-
- editFiles
|
|
7
|
-
- runInTerminal
|
|
8
|
-
- search
|
|
9
|
-
- fetch
|
|
3
|
+
agent: executor
|
|
10
4
|
---
|
|
11
5
|
|
|
12
6
|
# Map Codebase
|
|
13
7
|
|
|
14
|
-
Analyze this codebase thoroughly and generate 7 structured context documents in `.planning/codebase/`. These documents will be used
|
|
8
|
+
Analyze this codebase thoroughly and generate 7 structured context documents in `.planning/codebase/`. These documents will be used on every future request to understand the project's architecture, conventions, and constraints.
|
|
15
9
|
|
|
16
10
|
## Process
|
|
17
11
|
|
|
@@ -23,22 +17,17 @@ Work through 4 focus areas in sequence. For each area, explore the codebase usin
|
|
|
23
17
|
|
|
24
18
|
**Explore:**
|
|
25
19
|
```bash
|
|
26
|
-
# Package manifests
|
|
27
20
|
cat package.json 2>/dev/null | head -100
|
|
28
21
|
cat requirements.txt 2>/dev/null || cat pyproject.toml 2>/dev/null | head -50
|
|
29
22
|
cat go.mod 2>/dev/null | head -30
|
|
30
|
-
|
|
31
|
-
# Config files (list only — NEVER read .env contents)
|
|
32
23
|
ls -la *.config.* tsconfig.json .nvmrc .python-version 2>/dev/null
|
|
33
|
-
ls .env* 2>/dev/null # Note existence only
|
|
34
|
-
|
|
35
|
-
# Find external integrations
|
|
24
|
+
ls .env* 2>/dev/null # Note existence only — NEVER read .env contents
|
|
36
25
|
grep -r "import.*stripe\|import.*supabase\|import.*aws\|import.*prisma\|import.*redis\|import.*sendgrid\|import.*twilio\|import.*openai" src/ --include="*.ts" --include="*.py" 2>/dev/null | head -40
|
|
37
26
|
```
|
|
38
27
|
|
|
39
28
|
**Write `.planning/codebase/STACK.md`** with: runtime, frameworks, key dependencies table, dev toolchain, infrastructure, environment variables.
|
|
40
29
|
|
|
41
|
-
**Write `.planning/codebase/INTEGRATIONS.md`** with: a section per external service
|
|
30
|
+
**Write `.planning/codebase/INTEGRATIONS.md`** with: a section per external service.
|
|
42
31
|
|
|
43
32
|
---
|
|
44
33
|
|
|
@@ -46,19 +35,14 @@ grep -r "import.*stripe\|import.*supabase\|import.*aws\|import.*prisma\|import.*
|
|
|
46
35
|
|
|
47
36
|
**Explore:**
|
|
48
37
|
```bash
|
|
49
|
-
|
|
50
|
-
find . -type d -not -path '*/node_modules/*' -not -path '*/.git/*' -not -path '*/.planning/*' -not -path '*/.github/*' | sort | head -60
|
|
51
|
-
|
|
52
|
-
# Entry points
|
|
38
|
+
find . -type d -not -path '*/node_modules/*' -not -path '*/.git/*' -not -path '*/.planning/*' -not -path '*/.github/*' -not -path '*/.opencode/*' | sort | head -60
|
|
53
39
|
ls src/index.* src/main.* src/app.* src/server.* app/page.* 2>/dev/null
|
|
54
|
-
|
|
55
|
-
# Understanding layer imports
|
|
56
40
|
grep -r "^import\|^from" src/ --include="*.ts" --include="*.py" 2>/dev/null | head -80
|
|
57
41
|
```
|
|
58
42
|
|
|
59
|
-
**Write `.planning/codebase/ARCHITECTURE.md`** with: architectural style
|
|
43
|
+
**Write `.planning/codebase/ARCHITECTURE.md`** with: architectural style, layer diagram, data flow example, key abstractions, entry points, cross-cutting concerns.
|
|
60
44
|
|
|
61
|
-
**Write `.planning/codebase/STRUCTURE.md`** with: root layout, source tree, and
|
|
45
|
+
**Write `.planning/codebase/STRUCTURE.md`** with: root layout, source tree, and a **"Where to Put New Code"** table.
|
|
62
46
|
|
|
63
47
|
---
|
|
64
48
|
|
|
@@ -66,22 +50,17 @@ grep -r "^import\|^from" src/ --include="*.ts" --include="*.py" 2>/dev/null | he
|
|
|
66
50
|
|
|
67
51
|
**Explore:**
|
|
68
52
|
```bash
|
|
69
|
-
# Formatting/linting config
|
|
70
53
|
cat .prettierrc .eslintrc.js .eslintrc.json biome.json 2>/dev/null | head -60
|
|
71
54
|
cat pyproject.toml 2>/dev/null | grep -A 20 "\[tool\."
|
|
72
|
-
|
|
73
|
-
# Test framework
|
|
74
55
|
ls jest.config.* vitest.config.* pytest.ini setup.cfg 2>/dev/null
|
|
75
56
|
find . -name "*.test.*" -o -name "*.spec.*" | grep -v node_modules | head -20
|
|
76
|
-
|
|
77
|
-
# Look at real code for patterns
|
|
78
57
|
find src/ -name "*.ts" -not -name "*.test.*" 2>/dev/null | head -5 | xargs head -40 2>/dev/null
|
|
79
58
|
find tests/ -name "*.test.*" 2>/dev/null | head -3 | xargs head -60 2>/dev/null
|
|
80
59
|
```
|
|
81
60
|
|
|
82
|
-
**Write `.planning/codebase/CONVENTIONS.md`** — be prescriptive
|
|
61
|
+
**Write `.planning/codebase/CONVENTIONS.md`** — be prescriptive. Include: naming conventions, import ordering, error handling, function patterns, comment style. Include real code examples.
|
|
83
62
|
|
|
84
|
-
**Write `.planning/codebase/TESTING.md`** with: test framework
|
|
63
|
+
**Write `.planning/codebase/TESTING.md`** with: test framework, run commands, file organization, mocking strategy, what to test and what NOT to test.
|
|
85
64
|
|
|
86
65
|
---
|
|
87
66
|
|
|
@@ -89,27 +68,19 @@ find tests/ -name "*.test.*" 2>/dev/null | head -3 | xargs head -60 2>/dev/null
|
|
|
89
68
|
|
|
90
69
|
**Explore:**
|
|
91
70
|
```bash
|
|
92
|
-
# TODO/FIXME/HACK comments
|
|
93
71
|
grep -rn "TODO\|FIXME\|HACK\|XXX\|TEMP\|@deprecated" src/ --include="*.ts" --include="*.py" 2>/dev/null | head -40
|
|
94
|
-
|
|
95
|
-
# Potential issues
|
|
96
72
|
grep -rn "any\b\|@ts-ignore\|@ts-nocheck\|eslint-disable\|# type: ignore\|# noqa" src/ --include="*.ts" --include="*.py" 2>/dev/null | head -30
|
|
97
|
-
|
|
98
|
-
# Security patterns
|
|
99
73
|
grep -rn "eval\|innerHTML\|dangerouslySetInnerHTML\|exec\|shell=True" src/ --include="*.ts" --include="*.py" 2>/dev/null | head -20
|
|
100
|
-
|
|
101
|
-
# Large/complex files
|
|
102
74
|
find src/ -name "*.ts" -o -name "*.py" 2>/dev/null | xargs wc -l 2>/dev/null | sort -rn | head -15
|
|
103
75
|
```
|
|
104
76
|
|
|
105
|
-
**Write `.planning/codebase/CONCERNS.md`** with: health summary
|
|
77
|
+
**Write `.planning/codebase/CONCERNS.md`** with: health summary, critical issues, fragile areas, security notes, performance bottlenecks.
|
|
106
78
|
|
|
107
79
|
---
|
|
108
80
|
|
|
109
81
|
## Completion
|
|
110
82
|
|
|
111
|
-
After all 7 files are written, update
|
|
83
|
+
After all 7 files are written, update `AGENTS.md`:
|
|
112
84
|
- Fill in the "What This Project Is" section from what you learned
|
|
113
|
-
- Keep it to 2-3 sentences describing what the product does
|
|
114
85
|
|
|
115
|
-
Then confirm: "Codebase mapping complete. Generated 7 documents in `.planning/codebase/`. Use `/sync-instructions` to update the
|
|
86
|
+
Then confirm: "Codebase mapping complete. Generated 7 documents in `.planning/codebase/`. Use `/sync-instructions` to update the instructions digest."
|
|
@@ -1,16 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: new-project
|
|
3
2
|
description: Initialize .planning/ documentation for a new or existing project — creates PROJECT.md, REQUIREMENTS.md, ROADMAP.md, and STATE.md
|
|
4
|
-
|
|
5
|
-
tools:
|
|
6
|
-
- editFiles
|
|
7
|
-
- search
|
|
8
|
-
- jira/*
|
|
3
|
+
agent: executor
|
|
9
4
|
---
|
|
10
5
|
|
|
11
6
|
# New Project Initialization
|
|
12
7
|
|
|
13
|
-
Initialize the `.planning/` documentation structure for this project. This generates the source-of-truth documents that power all other
|
|
8
|
+
Initialize the `.planning/` documentation structure for this project. This generates the source-of-truth documents that power all other context.
|
|
14
9
|
|
|
15
10
|
## Step 1: Gather Project Context
|
|
16
11
|
|
|
@@ -31,12 +26,8 @@ If the user can't answer some questions, use reasonable defaults and note them a
|
|
|
31
26
|
|
|
32
27
|
If the user chose Jira as the requirements source:
|
|
33
28
|
|
|
34
|
-
1. **Discover the board/sprint:**
|
|
35
|
-
2. **Fetch tickets:** Use the appropriate
|
|
36
|
-
- Project key → `jira_get_project_issues` or `jira_search` with JQL `project = PROJ AND status != Done`
|
|
37
|
-
- Sprint → `jira_get_sprint_issues`
|
|
38
|
-
- JQL query → `jira_search` with the user's query
|
|
39
|
-
- Specific tickets → `jira_get_issue` for each
|
|
29
|
+
1. **Discover the board/sprint:** Find the board, then find active/future sprints
|
|
30
|
+
2. **Fetch tickets:** Use the appropriate method based on what the user provided
|
|
40
31
|
3. **Extract from each ticket:**
|
|
41
32
|
- Title and description → becomes a requirement
|
|
42
33
|
- Acceptance criteria → becomes success criteria
|
|
@@ -47,59 +38,53 @@ If the user chose Jira as the requirements source:
|
|
|
47
38
|
|
|
48
39
|
If Jira is not used, skip to Step 3 using manual requirements from the conversation.
|
|
49
40
|
|
|
50
|
-
## Step
|
|
41
|
+
## Step 3: Create PROJECT.md
|
|
51
42
|
|
|
52
43
|
Write `.planning/PROJECT.md` with:
|
|
53
44
|
- **What This Is:** User's description of the project
|
|
54
45
|
- **Core Value:** Single sentence of what must always work
|
|
55
46
|
- **Requirements > Active:** List of v1 requirements as checkboxes
|
|
56
|
-
- **Requirements > Out of Scope:** Anything explicitly excluded
|
|
47
|
+
- **Requirements > Out of Scope:** Anything explicitly excluded
|
|
57
48
|
- **Context:** Background from the conversation
|
|
58
49
|
- **Constraints:** What the user listed + inferred constraints
|
|
59
50
|
|
|
60
|
-
## Step
|
|
51
|
+
## Step 4: Create REQUIREMENTS.md
|
|
61
52
|
|
|
62
53
|
Extract requirements into `.planning/REQUIREMENTS.md`:
|
|
63
54
|
- Assign IDs: `[CATEGORY]-[NN]` (e.g., AUTH-01, CORE-01, UI-01)
|
|
64
55
|
- **If from Jira:** include the Jira ticket ID alongside the requirement ID (e.g., `AUTH-01 (PROJ-42)`)
|
|
65
56
|
- Group by logical category (Authentication, Core Features, UI, etc.)
|
|
66
57
|
- v2 requirements: anything out of scope for now but likely future
|
|
67
|
-
- Traceability table: map each requirement to its source
|
|
58
|
+
- Traceability table: map each requirement to its source and Phase (TBD until roadmap)
|
|
68
59
|
|
|
69
|
-
## Step
|
|
60
|
+
## Step 5: Create ROADMAP.md
|
|
70
61
|
|
|
71
62
|
Design a logical phase sequence in `.planning/ROADMAP.md`:
|
|
72
63
|
- **If from Jira:** group related tickets into phases (epics → phase groups, stories → plans within a phase)
|
|
73
64
|
- **If manual:** group related requirements into phases
|
|
74
65
|
- Each phase delivers a user-visible increment
|
|
75
66
|
- Earlier phases enable later phases (dependency chain)
|
|
76
|
-
- Phase names should be clear and action-oriented
|
|
77
|
-
- Each phase includes:
|
|
78
|
-
- Goal and dependencies
|
|
79
|
-
- Requirements covered (with Jira ticket IDs if applicable)
|
|
80
|
-
- 2-4 success criteria (from Jira acceptance criteria where available)
|
|
81
|
-
- Source: `Jira: PROJ-42, PROJ-43` or `Manual`
|
|
82
|
-
- Planned plan count (TBD is fine)
|
|
67
|
+
- Phase names should be clear and action-oriented
|
|
68
|
+
- Each phase includes: Goal, dependencies, requirements covered, 2-4 success criteria, source
|
|
83
69
|
- Typically 4-8 phases for a standard project
|
|
84
70
|
- Order by: Jira priority → dependency chain → logical progression
|
|
85
71
|
|
|
86
|
-
## Step
|
|
72
|
+
## Step 6: Create STATE.md
|
|
87
73
|
|
|
88
74
|
Initialize `.planning/STATE.md`:
|
|
89
75
|
- Phase: 1 of [N]
|
|
90
76
|
- Status: Ready to plan
|
|
91
77
|
- Progress: 0%
|
|
92
78
|
- Last activity: today's date + "Project initialized"
|
|
93
|
-
- All metrics at zero
|
|
94
79
|
|
|
95
|
-
## Step
|
|
80
|
+
## Step 7: Update AGENTS.md
|
|
96
81
|
|
|
97
|
-
Update
|
|
82
|
+
Update `AGENTS.md`:
|
|
98
83
|
- Fill in "What This Project Is" with the 2-3 sentence description
|
|
99
84
|
- Fill in "Core value"
|
|
100
85
|
- Set "Phase: 1 of [N] — [Phase Name]"
|
|
101
86
|
- Set "Status: Ready to plan"
|
|
102
|
-
- Fill in "Active Constraints"
|
|
87
|
+
- Fill in "Active Constraints"
|
|
103
88
|
|
|
104
89
|
## Completion
|
|
105
90
|
|
|
@@ -107,13 +92,12 @@ Print a summary:
|
|
|
107
92
|
```
|
|
108
93
|
✅ Project initialized: [Project Name]
|
|
109
94
|
.planning/PROJECT.md — requirements + decisions
|
|
110
|
-
.planning/REQUIREMENTS.md — [N] requirements with IDs
|
|
95
|
+
.planning/REQUIREMENTS.md — [N] requirements with IDs
|
|
111
96
|
.planning/ROADMAP.md — [N] phases
|
|
112
97
|
.planning/STATE.md — ready to plan
|
|
113
|
-
[Jira source: PROJECT / Sprint NAME — N tickets imported]
|
|
114
98
|
|
|
115
99
|
Next steps:
|
|
116
100
|
1. Run /map-codebase (if existing codebase)
|
|
117
|
-
2. Run
|
|
101
|
+
2. Run /plan-phase 1 to plan the first phase
|
|
118
102
|
3. Run /redefine-roadmap if priorities change later
|
|
119
103
|
```
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: pause-work
|
|
3
2
|
description: Save current session state so work can be resumed in a new session — writes .planning/continue-here.md
|
|
4
|
-
|
|
5
|
-
tools:
|
|
6
|
-
- editFiles
|
|
7
|
-
- runInTerminal
|
|
8
|
-
- search
|
|
3
|
+
agent: executor
|
|
9
4
|
---
|
|
10
5
|
|
|
11
6
|
# Pause Work
|
|
@@ -17,14 +12,9 @@ Save the current session state to `.planning/continue-here.md` so the next sessi
|
|
|
17
12
|
Gather current state information:
|
|
18
13
|
|
|
19
14
|
```bash
|
|
20
|
-
# Last few commits
|
|
21
15
|
git log --oneline -5
|
|
22
|
-
|
|
23
|
-
# Uncommitted changes
|
|
24
16
|
git status
|
|
25
17
|
git diff --stat HEAD
|
|
26
|
-
|
|
27
|
-
# Test status
|
|
28
18
|
npm test 2>&1 | tail -10
|
|
29
19
|
```
|
|
30
20
|
|
|
@@ -33,9 +23,9 @@ Read `.planning/STATE.md` for project-level context.
|
|
|
33
23
|
## Step 2: Document Current State
|
|
34
24
|
|
|
35
25
|
Think through:
|
|
36
|
-
- What was the last **completed** action?
|
|
26
|
+
- What was the last **completed** action?
|
|
37
27
|
- What work is **in progress** and where exactly did it stop?
|
|
38
|
-
- What **remains** in the current plan?
|
|
28
|
+
- What **remains** in the current plan?
|
|
39
29
|
- What **decisions** were made this session?
|
|
40
30
|
- Are there any **blockers** or watch-outs for the next session?
|
|
41
31
|
- What is the **exact next action** to resume?
|
|
@@ -55,9 +45,7 @@ Write `.planning/continue-here.md`:
|
|
|
55
45
|
|
|
56
46
|
## What Was Just Completed
|
|
57
47
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
- ✅ [Completed item 1 — file created / test passing / feature shipped]
|
|
48
|
+
- ✅ [Completed item 1]
|
|
61
49
|
- ✅ [Completed item 2]
|
|
62
50
|
|
|
63
51
|
## What Remains
|
|
@@ -71,16 +59,15 @@ Upcoming plans:
|
|
|
71
59
|
|
|
72
60
|
## Decisions Made This Session
|
|
73
61
|
|
|
74
|
-
- [Decision and rationale — lock these in]
|
|
75
62
|
- [Decision and rationale]
|
|
76
63
|
|
|
77
64
|
## Blockers / Watch-Outs
|
|
78
65
|
|
|
79
|
-
- [Any issue the next session needs to know
|
|
66
|
+
- [Any issue the next session needs to know]
|
|
80
67
|
|
|
81
68
|
## Exact Next Action
|
|
82
69
|
|
|
83
|
-
**Resume by doing:** [Single, concrete action
|
|
70
|
+
**Resume by doing:** [Single, concrete action]
|
|
84
71
|
|
|
85
72
|
---
|
|
86
73
|
*Saved: [timestamp]*
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: plan-phase
|
|
3
2
|
description: Plan implementation for a roadmap phase — produces a detailed, executable step-by-step plan
|
|
4
|
-
|
|
5
|
-
tools:
|
|
6
|
-
- editFiles
|
|
7
|
-
- search
|
|
8
|
-
- runInTerminal
|
|
3
|
+
agent: planner
|
|
9
4
|
---
|
|
10
5
|
|
|
11
6
|
# Plan Phase
|
|
@@ -37,10 +32,7 @@ Load relevant codebase docs based on the phase type:
|
|
|
37
32
|
|
|
38
33
|
Before planning, explore the codebase to understand the current state:
|
|
39
34
|
```bash
|
|
40
|
-
# Find existing code related to the phase domain
|
|
41
35
|
grep -rn "[relevant terms]" src/ --include="*.ts" 2>/dev/null | head -30
|
|
42
|
-
|
|
43
|
-
# Check existing file structure for the area
|
|
44
36
|
ls -la src/[relevant-directory]/ 2>/dev/null
|
|
45
37
|
```
|
|
46
38
|
|
|
@@ -91,47 +83,32 @@ status: ready
|
|
|
91
83
|
**Implementation:**
|
|
92
84
|
[Specifics — data structures, algorithms, API contracts, patterns to follow]
|
|
93
85
|
|
|
94
|
-
### 2. [Step name]
|
|
95
|
-
[etc.]
|
|
96
|
-
|
|
97
86
|
### N. Tests
|
|
98
|
-
[Specific test cases to write
|
|
87
|
+
[Specific test cases to write]
|
|
99
88
|
|
|
100
89
|
## Success Criteria
|
|
101
90
|
- [ ] [Observable behavior that proves this plan is complete]
|
|
102
|
-
- [ ] [Observable behavior]
|
|
103
91
|
- [ ] All tests pass (`npm test`)
|
|
104
92
|
- [ ] No TypeScript errors (`tsc --noEmit`)
|
|
105
93
|
```
|
|
106
94
|
|
|
107
|
-
If the phase requires multiple plans, create `[NN]-02-[name].md`,
|
|
95
|
+
If the phase requires multiple plans, create `[NN]-02-[name].md`, etc.
|
|
108
96
|
|
|
109
97
|
## Step 5: Update ROADMAP.md
|
|
110
98
|
|
|
111
|
-
Update the plan list in `.planning/ROADMAP.md` for this phase
|
|
112
|
-
```
|
|
113
|
-
Plans:
|
|
114
|
-
- [ ] [NN]-01: [Brief description]
|
|
115
|
-
- [ ] [NN]-02: [Brief description]
|
|
116
|
-
```
|
|
99
|
+
Update the plan list in `.planning/ROADMAP.md` for this phase.
|
|
117
100
|
|
|
118
101
|
## Step 6: Update STATE.md
|
|
119
102
|
|
|
120
103
|
Update `.planning/STATE.md`:
|
|
121
104
|
- Status: `Ready to execute`
|
|
122
105
|
- Current focus: this phase
|
|
123
|
-
- Note the key decisions made during planning under Accumulated Context
|
|
124
106
|
|
|
125
107
|
## Completion
|
|
126
108
|
|
|
127
|
-
Print a summary:
|
|
128
109
|
```
|
|
129
110
|
✅ Phase [N] planned: [Phase Name]
|
|
130
111
|
[N] plans created in .planning/phases/[NN]-[name]/
|
|
131
112
|
|
|
132
|
-
Plans:
|
|
133
|
-
[NN]-01: [Name] — [brief description]
|
|
134
|
-
[NN]-02: [Name] — [brief description]
|
|
135
|
-
|
|
136
113
|
Ready to execute. Run /execute-phase [N] to start implementation.
|
|
137
114
|
```
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: "Restructure your project roadmap — reorder, regroup, reprioritize, or rebuild phases from scratch"
|
|
3
|
-
|
|
4
|
-
tools:
|
|
5
|
-
- editFiles
|
|
6
|
-
- search
|
|
7
|
-
- jira/*
|
|
3
|
+
agent: executor
|
|
8
4
|
---
|
|
9
5
|
|
|
10
6
|
# Redefine Roadmap
|
|
@@ -23,7 +19,7 @@ Restructure `.planning/ROADMAP.md` — reorder phases, reprioritize, split/merge
|
|
|
23
19
|
|
|
24
20
|
Ask the user what kind of restructuring they want:
|
|
25
21
|
|
|
26
|
-
1. **Reorder** — "Move phase 3 before phase 2"
|
|
22
|
+
1. **Reorder** — "Move phase 3 before phase 2"
|
|
27
23
|
2. **Split** — "Phase 2 is too big, break it into smaller phases"
|
|
28
24
|
3. **Merge** — "Phases 3 and 4 are related, combine them"
|
|
29
25
|
4. **Rebuild from Jira** — "Forget the current roadmap, rebuild from sprint [X]"
|
|
@@ -34,14 +30,14 @@ Ask the user what kind of restructuring they want:
|
|
|
34
30
|
|
|
35
31
|
### Step 1: Load current state
|
|
36
32
|
|
|
37
|
-
Read
|
|
33
|
+
Read:
|
|
38
34
|
- `.planning/ROADMAP.md` — current phase structure
|
|
39
35
|
- `.planning/STATE.md` — what phase is in progress, what's completed
|
|
40
36
|
- `.planning/REQUIREMENTS.md` — which requirements are mapped to which phases
|
|
41
37
|
|
|
42
38
|
### Step 2: Understand the change
|
|
43
39
|
|
|
44
|
-
|
|
40
|
+
Determine:
|
|
45
41
|
- Which phases are **locked** (completed — never modify these)
|
|
46
42
|
- Which phases are **in progress** (warn before modifying)
|
|
47
43
|
- Which phases are **changeable** (not started)
|
|
@@ -49,12 +45,7 @@ Based on user input, determine:
|
|
|
49
45
|
|
|
50
46
|
### Step 3: If rebuilding from Jira
|
|
51
47
|
|
|
52
|
-
Use Jira tools to fetch the new source of truth
|
|
53
|
-
- `mcp_jira_jira_search` — flexible JQL queries
|
|
54
|
-
- `mcp_jira_jira_get_issue` — individual ticket details
|
|
55
|
-
- `mcp_jira_jira_get_sprint_issues` — sprint-based planning
|
|
56
|
-
|
|
57
|
-
Map tickets to new phases (same logic as `/sync-jira`).
|
|
48
|
+
Use Jira MCP tools to fetch the new source of truth. Map tickets to new phases.
|
|
58
49
|
|
|
59
50
|
### Step 4: Apply changes
|
|
60
51
|
|
|
@@ -65,16 +56,12 @@ Map tickets to new phases (same logic as `/sync-jira`).
|
|
|
65
56
|
|
|
66
57
|
### Step 5: Show diff summary
|
|
67
58
|
|
|
68
|
-
Display
|
|
69
|
-
- **Before:** old phase list with statuses
|
|
70
|
-
- **After:** new phase list
|
|
71
|
-
- **Changes:** what was reordered, split, merged, added, or removed
|
|
72
|
-
- **Warnings:** any completed work that was affected, any in-progress phases that moved
|
|
59
|
+
Display before/after comparison, changes made, and any warnings.
|
|
73
60
|
|
|
74
61
|
## Safety Rules
|
|
75
62
|
|
|
76
|
-
- **NEVER modify completed phases** — they are locked
|
|
63
|
+
- **NEVER modify completed phases** — they are locked
|
|
77
64
|
- **Warn before modifying in-progress phases** — ask for confirmation
|
|
78
|
-
- **Preserve Jira ticket IDs** — maintain traceability
|
|
65
|
+
- **Preserve Jira ticket IDs** — maintain traceability
|
|
79
66
|
- **Back up before major restructuring** — suggest committing current state first
|
|
80
67
|
- Always show the before/after comparison before writing changes
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Review and improve existing Jira tickets — add acceptance criteria, clarify descriptions, fix structure"
|
|
3
|
+
agent: product-owner
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Refine Backlog
|
|
7
|
+
|
|
8
|
+
Review existing Jira tickets and improve their quality: add missing acceptance criteria, clarify vague descriptions, standardize structure, and identify gaps.
|
|
9
|
+
|
|
10
|
+
## What You Need
|
|
11
|
+
|
|
12
|
+
The user should provide ONE of:
|
|
13
|
+
- **Specific ticket IDs** (e.g., `PROJ-101, PROJ-102`)
|
|
14
|
+
- **A JQL query** (e.g., `project = PROJ AND status = "To Do" AND "Acceptance Criteria" is EMPTY`)
|
|
15
|
+
- **A project key** — review all backlog items
|
|
16
|
+
- **A sprint** — review tickets in the current/next sprint
|
|
17
|
+
|
|
18
|
+
If none provided, ask: "Which tickets or project should I review?"
|
|
19
|
+
|
|
20
|
+
## Workflow
|
|
21
|
+
|
|
22
|
+
### Step 1: Fetch tickets
|
|
23
|
+
|
|
24
|
+
Read the specified tickets from Jira. For each ticket, evaluate:
|
|
25
|
+
|
|
26
|
+
1. **Title quality** — Is it clear and action-oriented? Or vague like "Fix stuff"?
|
|
27
|
+
2. **Description completeness** — Does it explain what and why?
|
|
28
|
+
3. **Acceptance criteria** — Are they specific, testable, measurable? Or missing/vague?
|
|
29
|
+
4. **Type correctness** — Is a task really a task, or should it be a story/bug?
|
|
30
|
+
5. **Priority** — Is it set? Does it make sense relative to other tickets?
|
|
31
|
+
6. **Links** — Are dependencies and relationships captured?
|
|
32
|
+
7. **Labels/Components** — Are they consistent with the project's conventions?
|
|
33
|
+
|
|
34
|
+
### Step 2: Present findings
|
|
35
|
+
|
|
36
|
+
For each ticket that needs improvement, show:
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
PROJ-101: "Fix login" ⚠️ Needs work
|
|
40
|
+
Current: No AC, vague title, no description
|
|
41
|
+
Proposed:
|
|
42
|
+
Title: "Fix login timeout causing session expiry after 5 minutes"
|
|
43
|
+
Description: Users report being logged out after 5 min of inactivity...
|
|
44
|
+
AC:
|
|
45
|
+
- [ ] Session persists for configured timeout period (default 30min)
|
|
46
|
+
- [ ] Refresh token extends session on activity
|
|
47
|
+
- [ ] User sees warning 2 min before expiry
|
|
48
|
+
Priority: High (was: unset)
|
|
49
|
+
|
|
50
|
+
PROJ-102: "User dashboard" ✅ Looks good
|
|
51
|
+
(no changes needed)
|
|
52
|
+
|
|
53
|
+
Apply changes to [N] tickets? (yes/no/edit)
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Step 3: Apply (only after confirmation)
|
|
57
|
+
|
|
58
|
+
- Update each approved ticket
|
|
59
|
+
- Report what was changed
|
|
60
|
+
|
|
61
|
+
## Refinement Checklist
|
|
62
|
+
|
|
63
|
+
For every ticket, ensure:
|
|
64
|
+
- [ ] Title is clear, specific, and action-oriented
|
|
65
|
+
- [ ] Description explains the what and why
|
|
66
|
+
- [ ] At least 2-3 measurable acceptance criteria
|
|
67
|
+
- [ ] Priority is set
|
|
68
|
+
- [ ] Type is correct (story/task/bug/epic)
|
|
69
|
+
- [ ] Dependencies are linked
|
|
70
|
+
- [ ] No duplicates exist in the backlog
|
|
71
|
+
|
|
72
|
+
## Important
|
|
73
|
+
|
|
74
|
+
- **NEVER modify tickets that are In Progress or later** — warn and skip
|
|
75
|
+
- **Always show before/after** — never update silently
|
|
76
|
+
- Don't change ticket scope — only improve clarity and structure
|
|
77
|
+
- If a ticket is too big, suggest splitting it (use `/break-down-epic`)
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: resume-work
|
|
3
2
|
description: Resume work from a saved session state — reads .planning/continue-here.md and .planning/STATE.md to orient the next session
|
|
4
|
-
|
|
5
|
-
tools:
|
|
6
|
-
- search
|
|
7
|
-
- runInTerminal
|
|
3
|
+
agent: planner
|
|
8
4
|
---
|
|
9
5
|
|
|
10
6
|
# Resume Work
|
|
@@ -23,12 +19,9 @@ If `.planning/continue-here.md` does not exist, fall back to STATE.md and ROADMA
|
|
|
23
19
|
## Step 2: Verify Environment
|
|
24
20
|
|
|
25
21
|
```bash
|
|
26
|
-
# Confirm current git state
|
|
27
22
|
git status
|
|
28
23
|
git log --oneline -3
|
|
29
24
|
git branch --show-current
|
|
30
|
-
|
|
31
|
-
# Quick test health check
|
|
32
25
|
npm test 2>&1 | tail -15
|
|
33
26
|
```
|
|
34
27
|
|
|
@@ -36,8 +29,6 @@ Note any unexpected test failures or uncommitted changes.
|
|
|
36
29
|
|
|
37
30
|
## Step 3: Present Resume Summary
|
|
38
31
|
|
|
39
|
-
Format the context summary clearly:
|
|
40
|
-
|
|
41
32
|
```
|
|
42
33
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
43
34
|
Resuming: [Project Name]
|
|
@@ -50,7 +41,6 @@ Where We Left Off
|
|
|
50
41
|
|
|
51
42
|
Last Completed
|
|
52
43
|
✅ [Last completed item]
|
|
53
|
-
✅ [Item before that]
|
|
54
44
|
|
|
55
45
|
What Remains (current plan)
|
|
56
46
|
◻ [Next task]
|
|
@@ -58,10 +48,9 @@ What Remains (current plan)
|
|
|
58
48
|
|
|
59
49
|
Decisions Locked In
|
|
60
50
|
• [Decision 1]
|
|
61
|
-
• [Decision 2]
|
|
62
51
|
|
|
63
52
|
Watch-Outs
|
|
64
|
-
⚠️ [Any blocker or fragile area
|
|
53
|
+
⚠️ [Any blocker or fragile area]
|
|
65
54
|
|
|
66
55
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
67
56
|
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Switch the AI model used by all GSD agents (quality / balanced / budget) or set per-agent overrides
|
|
3
|
+
agent: executor
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Set Model Profile
|
|
7
|
+
|
|
8
|
+
Switch the model used by the Planner, Executor, and Verifier agents. This edits the `model:` field in all agent files in `.opencode/agents/` and saves your choice to `.planning/config.json`.
|
|
9
|
+
|
|
10
|
+
## Profile Table
|
|
11
|
+
|
|
12
|
+
| Profile | Planner | Executor | Verifier | Best for |
|
|
13
|
+
|---------|---------|----------|----------|----------|
|
|
14
|
+
| `quality` | anthropic/claude-opus-4 | anthropic/claude-opus-4 | anthropic/claude-sonnet-4 | Critical architecture, max reasoning |
|
|
15
|
+
| `balanced` | anthropic/claude-sonnet-4 | anthropic/claude-sonnet-4 | anthropic/claude-sonnet-4 | Normal development (default) |
|
|
16
|
+
| `budget` | openai/gpt-4.1 | openai/gpt-4.1 | openai/gpt-4.1-mini | High-volume, cost-sensitive work |
|
|
17
|
+
| `gpt` | openai/gpt-4.1 | openai/gpt-4.1 | openai/gpt-4.1 | Prefer OpenAI models throughout |
|
|
18
|
+
|
|
19
|
+
## Steps
|
|
20
|
+
|
|
21
|
+
1. **Read current config** — load `.planning/config.json` and note the current `model_profile` value.
|
|
22
|
+
|
|
23
|
+
2. **Ask the user** which profile they want (quality / balanced / budget / gpt), or if they want a per-agent override.
|
|
24
|
+
|
|
25
|
+
3. **Apply the chosen profile** — update the `model:` field in ALL of the following agent files:
|
|
26
|
+
- `.opencode/agents/planner.md`
|
|
27
|
+
- `.opencode/agents/executor.md`
|
|
28
|
+
- `.opencode/agents/verifier.md`
|
|
29
|
+
|
|
30
|
+
Use this mapping per agent:
|
|
31
|
+
|
|
32
|
+
| Agent file | quality | balanced | budget | gpt |
|
|
33
|
+
|------------|---------|----------|--------|-----|
|
|
34
|
+
| planner.md | anthropic/claude-opus-4 | anthropic/claude-sonnet-4 | openai/gpt-4.1 | openai/gpt-4.1 |
|
|
35
|
+
| executor.md | anthropic/claude-opus-4 | anthropic/claude-sonnet-4 | openai/gpt-4.1 | openai/gpt-4.1 |
|
|
36
|
+
| verifier.md | anthropic/claude-sonnet-4 | anthropic/claude-sonnet-4 | openai/gpt-4.1-mini | openai/gpt-4.1 |
|
|
37
|
+
|
|
38
|
+
The line to change looks like:
|
|
39
|
+
```
|
|
40
|
+
model: anthropic/claude-sonnet-4
|
|
41
|
+
```
|
|
42
|
+
Change only that line in the frontmatter block (between the `---` delimiters).
|
|
43
|
+
|
|
44
|
+
4. **Also update `opencode.json`** — set the top-level `model` field to match the executor's model.
|
|
45
|
+
|
|
46
|
+
5. **Save to config** — update `.planning/config.json`:
|
|
47
|
+
- Set `"model_profile"` to the chosen profile name
|
|
48
|
+
- If they set overrides, add them to `"model_overrides"`
|
|
49
|
+
|
|
50
|
+
6. **Confirm** — report the final state:
|
|
51
|
+
```
|
|
52
|
+
Profile: balanced
|
|
53
|
+
Planner → anthropic/claude-sonnet-4
|
|
54
|
+
Executor → anthropic/claude-sonnet-4
|
|
55
|
+
Verifier → anthropic/claude-sonnet-4
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Available model IDs (OpenCode format: provider/model)
|
|
59
|
+
|
|
60
|
+
- `anthropic/claude-opus-4` — Claude Opus 4 (most capable)
|
|
61
|
+
- `anthropic/claude-sonnet-4` — Claude Sonnet 4 (fast + smart)
|
|
62
|
+
- `openai/gpt-4.1` — GPT-4.1
|
|
63
|
+
- `openai/gpt-4.1-mini` — GPT-4.1 Mini (fastest/cheapest)
|
|
64
|
+
- `openai/o3` — OpenAI o3 (reasoning)
|
|
65
|
+
- `google/gemini-2.5-pro` — Gemini 2.5 Pro
|