opencodekit 0.6.7 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/index.js +654 -651
  2. package/dist/template/.opencode/AGENTS.md +56 -11
  3. package/dist/template/.opencode/README.md +18 -16
  4. package/dist/template/.opencode/command/accessibility-check.md +1 -1
  5. package/dist/template/.opencode/command/analyze-mockup.md +1 -1
  6. package/dist/template/.opencode/command/analyze-project.md +2 -0
  7. package/dist/template/.opencode/command/brainstorm.md +1 -1
  8. package/dist/template/.opencode/command/commit.md +1 -1
  9. package/dist/template/.opencode/command/create.md +9 -0
  10. package/dist/template/.opencode/command/design-audit.md +1 -1
  11. package/dist/template/.opencode/command/design.md +1 -1
  12. package/dist/template/.opencode/command/finish.md +17 -0
  13. package/dist/template/.opencode/command/fix-ci.md +4 -0
  14. package/dist/template/.opencode/command/fix-types.md +2 -0
  15. package/dist/template/.opencode/command/fix-ui.md +1 -1
  16. package/dist/template/.opencode/command/fix.md +1 -1
  17. package/dist/template/.opencode/command/handoff.md +2 -0
  18. package/dist/template/.opencode/command/implement.md +31 -1
  19. package/dist/template/.opencode/command/import-plan.md +2 -0
  20. package/dist/template/.opencode/command/integration-test.md +6 -2
  21. package/dist/template/.opencode/command/new-feature.md +2 -0
  22. package/dist/template/.opencode/command/plan.md +2 -0
  23. package/dist/template/.opencode/command/pr.md +2 -0
  24. package/dist/template/.opencode/command/research-and-implement.md +1 -1
  25. package/dist/template/.opencode/command/research-ui.md +1 -1
  26. package/dist/template/.opencode/command/resume.md +2 -0
  27. package/dist/template/.opencode/command/revert-feature.md +2 -0
  28. package/dist/template/.opencode/command/review-codebase.md +1 -1
  29. package/dist/template/.opencode/command/skill-create.md +4 -4
  30. package/dist/template/.opencode/command/skill-optimize.md +4 -4
  31. package/dist/template/.opencode/command/ui-review.md +2 -2
  32. package/dist/template/.opencode/opencode.json +489 -491
  33. package/dist/template/.opencode/package.json +20 -20
  34. package/dist/template/.opencode/skill/brainstorming/SKILL.md +2 -2
  35. package/dist/template/.opencode/skill/executing-plans/SKILL.md +1 -1
  36. package/dist/template/.opencode/skill/sharing-skills/SKILL.md +13 -4
  37. package/dist/template/.opencode/skill/subagent-driven-development/SKILL.md +1 -1
  38. package/dist/template/.opencode/skill/systematic-debugging/SKILL.md +2 -2
  39. package/dist/template/.opencode/skill/using-git-worktrees/SKILL.md +27 -18
  40. package/dist/template/.opencode/skill/{using-superpowers → using-skills}/SKILL.md +6 -3
  41. package/dist/template/.opencode/skill/writing-plans/SKILL.md +3 -3
  42. package/dist/template/.opencode/skill/writing-skills/SKILL.md +2 -2
  43. package/package.json +2 -1
  44. package/dist/template/.opencode/memory/handoffs/2025-12-27T103000Z.md +0 -76
  45. package/dist/template/.opencode/plugin/skill.ts +0 -275
  46. package/dist/template/.opencode/skill/systematic-debugging/CREATION-LOG.md +0 -119
  47. package/dist/template/.opencode/skill/systematic-debugging/test-academic.md +0 -14
  48. package/dist/template/.opencode/skill/systematic-debugging/test-pressure-1.md +0 -58
  49. package/dist/template/.opencode/skill/systematic-debugging/test-pressure-2.md +0 -68
  50. package/dist/template/.opencode/skill/systematic-debugging/test-pressure-3.md +0 -69
  51. package/dist/template/.opencode/skill/testing-skills-with-subagents/examples/CLAUDE_MD_TESTING.md +0 -189
@@ -1,22 +1,22 @@
1
1
  {
2
- "name": "opencode",
3
- "version": "1.0.0",
4
- "description": "Opencode plugin",
5
- "type": "module",
6
- "main": "index.js",
7
- "scripts": {
8
- "type-check": "tsc --noEmit"
9
- },
10
- "keywords": [],
11
- "author": "",
12
- "license": "ISC",
13
- "dependencies": {
14
- "@opencode-ai/plugin": "1.0.207"
15
- },
16
- "devDependencies": {
17
- "@types/node": "^25.0.3",
18
- "fs": "^0.0.1-security",
19
- "path": "^0.12.7",
20
- "typescript": "^5.9.3"
21
- }
2
+ "name": "opencode",
3
+ "version": "1.0.0",
4
+ "description": "Opencode plugin",
5
+ "type": "module",
6
+ "main": "index.js",
7
+ "scripts": {
8
+ "type-check": "tsc --noEmit"
9
+ },
10
+ "keywords": [],
11
+ "author": "",
12
+ "license": "ISC",
13
+ "dependencies": {
14
+ "@opencode-ai/plugin": "^1.0.209"
15
+ },
16
+ "devDependencies": {
17
+ "@types/node": "^25.0.3",
18
+ "fs": "^0.0.1-security",
19
+ "path": "^0.12.7",
20
+ "typescript": "^5.9.3"
21
+ }
22
22
  }
@@ -46,8 +46,8 @@ Start by understanding the current project context, then ask questions one at a
46
46
  **Implementation (if continuing):**
47
47
 
48
48
  - Ask: "Ready to set up for implementation?"
49
- - Use use_skill("using-git-worktrees") to create isolated workspace
50
- - Use use_skill("writing-plans") to create detailed implementation plan
49
+ - Use skill({ name: "using-git-worktrees" }) to create isolated workspace
50
+ - Use skill({ name: "writing-plans" }) to create detailed implementation plan
51
51
 
52
52
  ## Key Principles
53
53
 
@@ -54,7 +54,7 @@ Based on feedback:
54
54
  After all tasks complete and verified:
55
55
 
56
56
  - Announce: "I'm using finishing-a-development-branch skill to complete this work."
57
- - **REQUIRED SUB-SKILL:** Use use_skill("finishing-a-development-branch")
57
+ - **REQUIRED SUB-SKILL:** Use skill({ name: "finishing-a-development-branch" })
58
58
  - Follow that skill to verify tests, present options, execute choice
59
59
 
60
60
  ## When to Stop and Ask for Help
@@ -14,12 +14,14 @@ Contribute skills from your local branch back to the upstream repository.
14
14
  ## When to Share
15
15
 
16
16
  **Share when:**
17
+
17
18
  - Skill applies broadly (not project-specific)
18
19
  - Pattern/technique others would benefit from
19
20
  - Well-tested and documented
20
21
  - Follows writing-skills guidelines
21
22
 
22
23
  **Keep personal when:**
24
+
23
25
  - Project-specific or organization-specific
24
26
  - Experimental or unstable
25
27
  - Contains sensitive information
@@ -28,7 +30,7 @@ Contribute skills from your local branch back to the upstream repository.
28
30
  ## Prerequisites
29
31
 
30
32
  - `gh` CLI installed and authenticated
31
- - Working directory is `~/.config/superpowers/skills/` (your local clone)
33
+ - Working directory is `.opencode/skill/` (your project skills)
32
34
  - **REQUIRED:** Skill has been tested using writing-skills TDD process
33
35
 
34
36
  ## Sharing Workflow
@@ -36,7 +38,7 @@ Contribute skills from your local branch back to the upstream repository.
36
38
  ### 1. Ensure You're on Main and Synced
37
39
 
38
40
  ```bash
39
- cd ~/.config/superpowers/skills/
41
+ cd .opencode/skill/
40
42
  git checkout main
41
43
  git pull upstream main
42
44
  git push origin main # Push to your fork
@@ -105,7 +107,7 @@ Here's a complete example of sharing a skill called "async-patterns":
105
107
 
106
108
  ```bash
107
109
  # 1. Sync with upstream
108
- cd ~/.config/superpowers/skills/
110
+ cd .opencode/skill/
109
111
  git checkout main
110
112
  git pull upstream main
111
113
  git push origin main
@@ -146,14 +148,16 @@ Addresses common async pitfalls like race conditions, improper error handling, a
146
148
  Once your PR is merged:
147
149
 
148
150
  1. Sync your local main branch:
151
+
149
152
  ```bash
150
- cd ~/.config/superpowers/skills/
153
+ cd .opencode/skill/
151
154
  git checkout main
152
155
  git pull upstream main
153
156
  git push origin main
154
157
  ```
155
158
 
156
159
  2. Delete the feature branch:
160
+
157
161
  ```bash
158
162
  git branch -d "add-${skill_name}-skill"
159
163
  git push origin --delete "add-${skill_name}-skill"
@@ -162,18 +166,22 @@ git push origin --delete "add-${skill_name}-skill"
162
166
  ## Troubleshooting
163
167
 
164
168
  **"gh: command not found"**
169
+
165
170
  - Install GitHub CLI: https://cli.github.com/
166
171
  - Authenticate: `gh auth login`
167
172
 
168
173
  **"Permission denied (publickey)"**
174
+
169
175
  - Check SSH keys: `gh auth status`
170
176
  - Set up SSH: https://docs.github.com/en/authentication
171
177
 
172
178
  **"Skill already exists"**
179
+
173
180
  - You're creating a modified version
174
181
  - Consider different skill name or coordinate with the skill's maintainer
175
182
 
176
183
  **PR merge conflicts**
184
+
177
185
  - Rebase on latest upstream: `git fetch upstream && git rebase upstream/main`
178
186
  - Resolve conflicts
179
187
  - Force push: `git push -f origin your-branch`
@@ -183,6 +191,7 @@ git push origin --delete "add-${skill_name}-skill"
183
191
  **Do NOT batch multiple skills in one PR.**
184
192
 
185
193
  Each skill should:
194
+
186
195
  - Have its own feature branch
187
196
  - Have its own PR
188
197
  - Be independently reviewable
@@ -113,7 +113,7 @@ After all tasks complete, dispatch final review:
113
113
  After final review passes:
114
114
 
115
115
  - Announce: "I'm using finishing-a-development-branch skill to complete this work."
116
- - **REQUIRED SUB-SKILL:** Use use_skill("finishing-a-development-branch")
116
+ - **REQUIRED SUB-SKILL:** Use skill({ name: "finishing-a-development-branch" })
117
117
  - Follow that skill to verify tests, present options, execute choice
118
118
 
119
119
  ## Example Workflow
@@ -116,7 +116,7 @@ You MUST complete each phase before proceeding to the next.
116
116
 
117
117
  **WHEN error is deep in call stack:**
118
118
 
119
- **REQUIRED SUB-SKILL:** Use use_skill("root-cause-tracing") for backward tracing technique
119
+ **REQUIRED SUB-SKILL:** Use skill({ name: "root-cause-tracing" }) for backward tracing technique
120
120
 
121
121
  **Quick version:**
122
122
  - Where does bad value originate?
@@ -181,7 +181,7 @@ You MUST complete each phase before proceeding to the next.
181
181
  - Automated test if possible
182
182
  - One-off test script if no framework
183
183
  - MUST have before fixing
184
- - **REQUIRED SUB-SKILL:** Use use_skill("test-driven-development") for writing proper failing tests
184
+ - **REQUIRED SUB-SKILL:** Use skill({ name: "test-driven-development" }) for writing proper failing tests
185
185
 
186
186
  2. **Implement Single Fix**
187
187
  - Address the root cause identified
@@ -27,23 +27,23 @@ ls -d worktrees 2>/dev/null # Alternative
27
27
 
28
28
  **If found:** Use that directory. If both exist, `.worktrees` wins.
29
29
 
30
- ### 2. Check CLAUDE.md
30
+ ### 2. Check AGENTS.md
31
31
 
32
32
  ```bash
33
- grep -i "worktree.*director" CLAUDE.md 2>/dev/null
33
+ grep -i "worktree.*director" AGENTS.md 2>/dev/null
34
34
  ```
35
35
 
36
36
  **If preference specified:** Use it without asking.
37
37
 
38
38
  ### 3. Ask User
39
39
 
40
- If no directory exists and no CLAUDE.md preference:
40
+ If no directory exists and no AGENTS.md preference:
41
41
 
42
42
  ```
43
43
  No worktree directory found. Where should I create worktrees?
44
44
 
45
45
  1. .worktrees/ (project-local, hidden)
46
- 2. ~/.config/superpowers/worktrees/<project-name>/ (global location)
46
+ 2. ~/.opencode/worktrees/<project-name>/ (global location)
47
47
 
48
48
  Which would you prefer?
49
49
  ```
@@ -62,13 +62,14 @@ grep -q "^\.worktrees/$" .gitignore || grep -q "^worktrees/$" .gitignore
62
62
  **If NOT in .gitignore:**
63
63
 
64
64
  Per Jesse's rule "Fix broken things immediately":
65
+
65
66
  1. Add appropriate line to .gitignore
66
67
  2. Commit the change
67
68
  3. Proceed with worktree creation
68
69
 
69
70
  **Why critical:** Prevents accidentally committing worktree contents to repository.
70
71
 
71
- ### For Global Directory (~/.config/superpowers/worktrees)
72
+ ### For Global Directory (~/.opencode/worktrees)
72
73
 
73
74
  No .gitignore verification needed - outside project entirely.
74
75
 
@@ -88,8 +89,8 @@ case $LOCATION in
88
89
  .worktrees|worktrees)
89
90
  path="$LOCATION/$BRANCH_NAME"
90
91
  ;;
91
- ~/.config/superpowers/worktrees/*)
92
- path="~/.config/superpowers/worktrees/$project/$BRANCH_NAME"
92
+ ~/.opencode/worktrees/*)
93
+ path="~/.opencode/worktrees/$project/$BRANCH_NAME"
93
94
  ;;
94
95
  esac
95
96
 
@@ -143,31 +144,35 @@ Ready to implement <feature-name>
143
144
 
144
145
  ## Quick Reference
145
146
 
146
- | Situation | Action |
147
- |-----------|--------|
148
- | `.worktrees/` exists | Use it (verify .gitignore) |
149
- | `worktrees/` exists | Use it (verify .gitignore) |
150
- | Both exist | Use `.worktrees/` |
151
- | Neither exists | Check CLAUDE.md → Ask user |
147
+ | Situation | Action |
148
+ | --------------------------- | --------------------------- |
149
+ | `.worktrees/` exists | Use it (verify .gitignore) |
150
+ | `worktrees/` exists | Use it (verify .gitignore) |
151
+ | Both exist | Use `.worktrees/` |
152
+ | Neither exists | Check AGENTS.md → Ask user |
152
153
  | Directory not in .gitignore | Add it immediately + commit |
153
- | Tests fail during baseline | Report failures + ask |
154
- | No package.json/Cargo.toml | Skip dependency install |
154
+ | Tests fail during baseline | Report failures + ask |
155
+ | No package.json/Cargo.toml | Skip dependency install |
155
156
 
156
157
  ## Common Mistakes
157
158
 
158
159
  **Skipping .gitignore verification**
160
+
159
161
  - **Problem:** Worktree contents get tracked, pollute git status
160
162
  - **Fix:** Always grep .gitignore before creating project-local worktree
161
163
 
162
164
  **Assuming directory location**
165
+
163
166
  - **Problem:** Creates inconsistency, violates project conventions
164
- - **Fix:** Follow priority: existing > CLAUDE.md > ask
167
+ - **Fix:** Follow priority: existing > AGENTS.md > ask
165
168
 
166
169
  **Proceeding with failing tests**
170
+
167
171
  - **Problem:** Can't distinguish new bugs from pre-existing issues
168
172
  - **Fix:** Report failures, get explicit permission to proceed
169
173
 
170
174
  **Hardcoding setup commands**
175
+
171
176
  - **Problem:** Breaks on projects using different tools
172
177
  - **Fix:** Auto-detect from project files (package.json, etc.)
173
178
 
@@ -190,14 +195,16 @@ Ready to implement auth feature
190
195
  ## Red Flags
191
196
 
192
197
  **Never:**
198
+
193
199
  - Create worktree without .gitignore verification (project-local)
194
200
  - Skip baseline test verification
195
201
  - Proceed with failing tests without asking
196
202
  - Assume directory location when ambiguous
197
- - Skip CLAUDE.md check
203
+ - Skip AGENTS.md check
198
204
 
199
205
  **Always:**
200
- - Follow directory priority: existing > CLAUDE.md > ask
206
+
207
+ - Follow directory priority: existing > AGENTS.md > ask
201
208
  - Verify .gitignore for project-local
202
209
  - Auto-detect and run project setup
203
210
  - Verify clean test baseline
@@ -205,9 +212,11 @@ Ready to implement auth feature
205
212
  ## Integration
206
213
 
207
214
  **Called by:**
215
+
208
216
  - **brainstorming** (Phase 4) - REQUIRED when design is approved and implementation follows
209
217
  - Any skill needing isolated workspace
210
218
 
211
219
  **Pairs with:**
220
+
212
221
  - **finishing-a-development-branch** - REQUIRED for cleanup after work complete
213
222
  - **executing-plans** or **subagent-driven-development** - Work happens in this worktree
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: using-superpowers
2
+ name: using-skills
3
3
  description: Use when starting any conversation - establishes mandatory workflows for finding and using skills, including using Skill tool before announcing usage, following brainstorming before coding, and creating TodoWrite todos for checklists
4
4
  ---
5
5
 
@@ -53,6 +53,7 @@ If a skill for your task exists, you must use it or you will fail at your task.
53
53
  If a skill has a checklist, YOU MUST create TodoWrite todos for EACH item.
54
54
 
55
55
  **Don't:**
56
+
56
57
  - Work through checklist mentally
57
58
  - Skip creating todos "to save time"
58
59
  - Batch multiple items into one todo
@@ -66,6 +67,7 @@ Before using a skill, announce that you are using it.
66
67
  "I'm using [Skill Name] to [what you're doing]."
67
68
 
68
69
  **Examples:**
70
+
69
71
  - "I'm using the brainstorming skill to refine your idea into a design."
70
72
  - "I'm using the test-driven-development skill to implement this feature."
71
73
 
@@ -92,9 +94,10 @@ Your human partner's specific instructions describe WHAT to do, not HOW.
92
94
  ## Summary
93
95
 
94
96
  **Starting any task:**
97
+
95
98
  1. If relevant skill exists → Use the skill
96
- 3. Announce you're using it
97
- 4. Follow what it says
99
+ 2. Announce you're using it
100
+ 3. Follow what it says
98
101
 
99
102
  **Skill has checklist?** TodoWrite for every item.
100
103
 
@@ -34,7 +34,7 @@ Assume they are a skilled developer, but know almost nothing about our toolset o
34
34
  ```markdown
35
35
  # [Feature Name] Implementation Plan
36
36
 
37
- > **For Claude:** REQUIRED SUB-SKILL: Use use_skill("executing-plans") to implement this plan task-by-task.
37
+ > **For Claude:** REQUIRED SUB-SKILL: Use skill({ name: "executing-plans" }) to implement this plan task-by-task.
38
38
 
39
39
  **Goal:** [One sentence describing what this builds]
40
40
 
@@ -111,11 +111,11 @@ After saving the plan, offer execution choice:
111
111
  **Which approach?"**
112
112
 
113
113
  **If Subagent-Driven chosen:**
114
- - **REQUIRED SUB-SKILL:** Use use_skill("subagent-driven-development")
114
+ - **REQUIRED SUB-SKILL:** Use skill({ name: "subagent-driven-development" })
115
115
  - Stay in this session
116
116
  - Fresh subagent per task + code review
117
117
 
118
118
  **If Parallel Session chosen:**
119
119
  - Guide them to open new session in worktree
120
- - **REQUIRED SUB-SKILL:** New session uses use_skill("executing-plans")
120
+ - **REQUIRED SUB-SKILL:** New session uses skill({ name: "executing-plans" })
121
121
  ```
@@ -282,7 +282,7 @@ wc -w skills/path/SKILL.md
282
282
 
283
283
  Use skill name only, with explicit requirement markers:
284
284
 
285
- - ✅ Good: `**REQUIRED SUB-SKILL:** Use use_skill("test-driven-development")`
285
+ - ✅ Good: `**REQUIRED SUB-SKILL:** Use skill({ name: "test-driven-development" })`
286
286
  - ✅ Good: `**REQUIRED BACKGROUND:** You MUST understand systematic-debugging`
287
287
  - ❌ Bad: `See skills/testing/test-driven-development` (unclear if required)
288
288
  - ❌ Bad: `@skills/testing/test-driven-development/SKILL.md` (force-loads, burns context)
@@ -568,7 +568,7 @@ Run same scenarios WITH skill. Agent should now comply.
568
568
 
569
569
  Agent found new rationalization? Add explicit counter. Re-test until bulletproof.
570
570
 
571
- **REQUIRED SUB-SKILL:** Use use_skill("testing-skills-with-subagents") for the complete testing methodology:
571
+ **REQUIRED SUB-SKILL:** Use skill({ name: "testing-skills-with-subagents" }) for the complete testing methodology:
572
572
 
573
573
  - How to write pressure scenarios
574
574
  - Pressure types (time, sunk cost, authority, exhaustion)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencodekit",
3
- "version": "0.6.7",
3
+ "version": "0.7.0",
4
4
  "description": "CLI tool for bootstrapping and managing OpenCodeKit projects",
5
5
  "type": "module",
6
6
  "repository": {
@@ -35,6 +35,7 @@
35
35
  "dependencies": {
36
36
  "@clack/prompts": "^0.7.0",
37
37
  "@opencode-ai/plugin": "^1.0.141",
38
+ "beads-village": "^1.3.3",
38
39
  "cac": "^6.7.14",
39
40
  "cli-table3": "^0.6.5",
40
41
  "ora": "^9.0.0",
@@ -1,76 +0,0 @@
1
- # Handoff: test-handoff-plugin
2
-
3
- **Created:** 2025-12-27T10:30:00Z
4
- **Agent:** build
5
-
6
- ## Provenance
7
-
8
- | Key | Value |
9
- | ------ | --------------------------------------------------- |
10
- | Repo | git@github.com:opencodekit/opencodekit-template.git |
11
- | Branch | main |
12
- | Commit | ae38a95f899300419e9b17030268cedc60ebb44f |
13
- | Clean | no |
14
-
15
- ## Session Context
16
-
17
- **Current Session:** testing handoff plugin
18
- **Token Usage:** ~50k estimated
19
-
20
- Next session can load context with:
21
-
22
- ```
23
- read_session("last", project="current")
24
- ```
25
-
26
- ## Progress
27
-
28
- ### Completed
29
-
30
- - [x] Released v0.6.4 (version bump, changelog, tag, GitHub release)
31
- - [x] Reviewed Agent-Skills-for-Context-Engineering repo (verdict: mostly theory, not worth stealing)
32
- - [x] Reviewed Karpathy's hn-time-capsule (verdict: useful patterns)
33
- - [x] Created handoff plugin (`plugin/handoff.ts`)
34
- - [x] Updated `/handoff` command to instruct Ctrl+K
35
-
36
- ### In Progress
37
-
38
- - [ ] Testing handoff plugin - verifying it injects context on compaction
39
-
40
- ### Remaining
41
-
42
- - [ ] Commit new handoff plugin and updated command
43
- - [ ] Test full flow: handoff → Ctrl+K → new session with context
44
-
45
- ## Context
46
-
47
- ### Key Files
48
-
49
- - `.opencode/plugin/handoff.ts` - New plugin that injects handoff on compaction
50
- - `.opencode/command/handoff.md` - Updated to tell user to press Ctrl+K
51
- - `.opencode/plugin/compactor.ts` - Reference for plugin structure
52
-
53
- ### Decisions Made
54
-
55
- - Use `experimental.session.compacting` hook to inject handoff context
56
- - Only inject handoffs < 1 hour old to prevent stale context
57
- - Search both `.opencode/memory/handoffs/` and `.beads/artifacts/` for handoffs
58
-
59
- ### Blockers/Issues
60
-
61
- - OpenCode lacks `session.start` hook (Issue #5409) - can't auto-navigate to new session
62
- - Workaround: User must manually press Ctrl+K after /handoff
63
-
64
- ## Resume Instructions
65
-
66
- 1. Commit the new handoff plugin and updated command
67
- 2. Test the full flow: run /handoff, press Ctrl+K, verify context injected
68
- 3. If working, consider adding to v0.6.5 release
69
-
70
- **Recommended:** Start next session with `/resume test-handoff-plugin` to auto-load this handoff + previous session context.
71
-
72
- ## Artifacts
73
-
74
- - spec.md: missing
75
- - research.md: missing
76
- - plan.md: missing