opencode-goopspec 0.1.2 → 0.1.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-goopspec",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "A spec-driven development plugin for OpenCode with user-guided planning, wave execution, and verification",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -0,0 +1,122 @@
1
+ # Interactive Questioning Protocol
2
+
3
+ **GoopSpec Voice:** Direct, Purposeful, Memory-First.
4
+
5
+ We use interactive questioning to trade ambiguity for clarity without halting momentum. Every question must earn its right to interrupt the user.
6
+
7
+ ## Core Philosophy
8
+
9
+ 1. **Memory First:** Never ask what you already know.
10
+ 2. **Gate-Oriented:** Questions should drive towards a Decision Gate (Contract, Checkpoint, Acceptance).
11
+ 3. **Skill-Backed:** Use skills to frame questions intelligently, not just to gather data.
12
+ 4. **Progressive:** Start high-level; drill down only when necessary.
13
+
14
+ ---
15
+
16
+ ## 1. Memory-Aware Questioning
17
+
18
+ Before formulating a question, you **MUST** search memory.
19
+
20
+ ### The Protocol
21
+ 1. **Search:** `memory_search({ query: "[topic] preference" })`
22
+ 2. **Evaluate:** Do I have a high-confidence answer (Importance > 7)?
23
+ 3. **Action:**
24
+ * **High Confidence:** Use it. Inform user: "Using saved preference for X."
25
+ * **Medium Confidence:** Confirm. "I recall you prefer X. Still true?"
26
+ * **No Data:** Ask. Then **SAVE** the answer.
27
+
28
+ ### Examples
29
+
30
+ **❌ Bad (Amnesic):**
31
+ > "What database should we use?"
32
+ *(User has answered this 5 times before)*
33
+
34
+ **✅ Good (Memory-Aware):**
35
+ > ⬢ **Memory Recall:** You prefer **PostgreSQL** for new services.
36
+ > Proceeding with Postgres? [Y/n]
37
+
38
+ ---
39
+
40
+ ## 2. Skill-Aware Questioning
41
+
42
+ Don't just ask "What do you want?". Use loaded skills to provide *informed options*.
43
+
44
+ ### The Protocol
45
+ 1. **Consult Skill:** Use `research` or `security` or `architecture` skills to analyze the situation.
46
+ 2. **Frame Options:** Present choices based on expert analysis.
47
+ 3. **Ask:** specific, constrained questions.
48
+
49
+ ### Examples
50
+
51
+ **❌ Bad (Generic):**
52
+ > "How should we handle authentication?"
53
+
54
+ **✅ Good (Skill-Backed - Security):**
55
+ > ⬢ **Security Skill Analysis:**
56
+ > For this stack, I recommend **OAuth2 with PKCE** for these reasons:
57
+ > 1. Matches your security baseline.
58
+ > 2. Best support for mobile clients.
59
+ >
60
+ > **Decision:** Implement OAuth2? [Y/n] or "Explain alternatives"
61
+
62
+ ---
63
+
64
+ ## 3. Decision Gates
65
+
66
+ Use formal Gates for high-impact questions. Stop the world.
67
+
68
+ ### Contract Gate (Planning Phase)
69
+ *Must resolve scope before work begins.*
70
+
71
+ > **Question:** "Are these MUST-HAVES correct and complete?"
72
+ > **Trigger:** `/goop-specify`
73
+ > **Action:** Lock SPEC.md upon confirmation.
74
+
75
+ ### Checkpoint Gate (Execution Phase)
76
+ *Stop for architectural forks in the road.*
77
+
78
+ > **Question:** "I found two valid patterns. A is faster, B is more scalable. Which path?"
79
+ > **Trigger:** Rule 4 (Architectural Decision).
80
+ > **Action:** Wait for user selection.
81
+
82
+ ### Acceptance Gate (Completion Phase)
83
+ *Verify completion against the contract.*
84
+
85
+ > **Question:** "I have verified requirements A, B, and C. Ready to accept?"
86
+ > **Trigger:** `/goop-accept`
87
+ > **Action:** Archive task and update memory.
88
+
89
+ ---
90
+
91
+ ## 4. Progressive Disclosure
92
+
93
+ Don't wall-of-text the user. Reveal complexity in layers.
94
+
95
+ ### Level 1: The "Happy Path" Proposal
96
+ State the most likely path and ask for confirmation.
97
+ > "I plan to use **React Hook Form** for this form. Proceed?"
98
+
99
+ ### Level 2: The Fork
100
+ If rejected or ambiguous, offer distinct high-level options.
101
+ > "Okay. Options:
102
+ > 1. **React Hook Form** (Standard, performant)
103
+ > 2. **Formik** (Legacy compatibility)
104
+ > 3. **Raw State** (Simple forms only)"
105
+
106
+ ### Level 3: The Deep Dive
107
+ Only if requested, show full tradeoffs.
108
+ > "Here is the detailed comparison of bundle size, re-render performance, and API surface..."
109
+
110
+ ---
111
+
112
+ ## Checklist: Before You Ask
113
+
114
+ - [ ] **Did I search memory?** (Don't be amnesic)
115
+ - [ ] **Is this a "One-Way Door" decision?** (If yes, use a Gate)
116
+ - [ ] **Can I propose a default instead?** (Bias for action)
117
+ - [ ] **Is the question binary or multiple choice?** (Reduce cognitive load)
118
+ - [ ] **Am I ready to save the answer?** (Build the knowledge base)
119
+
120
+ ---
121
+
122
+ **Remember:** Every question is a context switch. Make it count.
@@ -0,0 +1,133 @@
1
+ # UI Interaction Patterns
2
+
3
+ **GoopSpec Voice:** Clean, Consistent, Terminal-First.
4
+
5
+ Our UI communicates reliability and structured thinking. It distinguishes between *information*, *questions*, and *gates*.
6
+
7
+ ## Visual Language
8
+
9
+ * **Hexagon (`⬢`):** The GoopSpec anchor. Use for system messages and prompts.
10
+ * **Borders:** Use for Gates and Checkpoints to arrest attention.
11
+ * **Indentation:** Hierarchy is meaning.
12
+ * **Colors:** (Implicit)
13
+ * **Blue/Cyan:** Info & Progress
14
+ * **Green:** Success & Memory Recall
15
+ * **Yellow:** Warning & Checkpoints
16
+ * **Red:** Errors & Blockers
17
+
18
+ ---
19
+
20
+ ## Interaction Primitives
21
+
22
+ ### 1. The Inline Notice
23
+ *For status updates, memory recalls, and skill activations.*
24
+
25
+ **Format:** `⬢ [Category] Message`
26
+
27
+ ```text
28
+ ⬢ Memory: Using preference "TypeScript Strict Mode"
29
+ ⬢ Skill: Loading "octocode-research"...
30
+ ⬢ Status: Analyzing dependency tree...
31
+ ```
32
+
33
+ ### 2. The Structured Prompt
34
+ *For standard questions and choices.*
35
+
36
+ **Format:** Question followed by clear options.
37
+
38
+ ```text
39
+ ⬢ Decision Required: Database Selection
40
+
41
+ 1. PostgreSQL (Recommended based on project)
42
+ 2. SQLite (Simpler setup)
43
+
44
+ ► Select [1-2]:
45
+ ```
46
+
47
+ ### 3. The Gate (Boxed)
48
+ *For critical stops: Contract, Checkpoint, Acceptance.*
49
+
50
+ **Format:** ASCII Box with Title and Action.
51
+
52
+ ```text
53
+ ╭─ ⬢ GoopSpec ───────────────────────────────────────╮
54
+ │ │
55
+ │ 🔒 CONTRACT GATE │
56
+ │ │
57
+ │ Summary: Login Feature │
58
+ │ • Auth Provider: Auth0 │
59
+ │ • MFA: Required │
60
+ │ │
61
+ │ ► Type "confirm" to Lock Spec and Plan. │
62
+ │ │
63
+ ╰────────────────────────────────────────────────────╯
64
+ ```
65
+
66
+ ---
67
+
68
+ ## Patterns
69
+
70
+ ### The "Recall & Confirm"
71
+ *Don't just apply memory silently; validate it lightly.*
72
+
73
+ ```text
74
+ ⬢ Memory: I see you use Tailwind in other projects.
75
+ Apply Tailwind to this project too? [Y/n]
76
+ ```
77
+
78
+ ### The "Skill Injection"
79
+ *Show that an agent is doing deep work.*
80
+
81
+ ```text
82
+ ⬢ Researching: "Best state management for Svelte 5"
83
+ └─ ⚡ Found 3 relevant libraries
84
+ └─ ⚡ Analyzed GitHub stars & issues
85
+
86
+ Recommendation: Runes (Native)
87
+ ```
88
+
89
+ ### The "Progressive Drill-Down"
90
+ *Handle complexity without overwhelm.*
91
+
92
+ **Step 1 (High Level):**
93
+ ```text
94
+ ⬢ Strategy: I recommend a "Feature Folder" structure.
95
+ Proceed? [Y/n/details]
96
+ ```
97
+
98
+ **Step 2 (If 'details' selected):**
99
+ ```text
100
+ ⬢ Feature Folder Structure:
101
+ src/features/auth/
102
+ ├── components/
103
+ ├── api/
104
+ └── types.ts
105
+
106
+ Pros: Scalable, self-contained.
107
+ Cons: More initial boilerplate.
108
+
109
+ ► Confirm structure? [Y/n]
110
+ ```
111
+
112
+ ---
113
+
114
+ ## Anti-Patterns (Don't Do This)
115
+
116
+ * **The Wall of Text:** unstructured paragraphs mixing info and questions.
117
+ * **The Hidden Question:** burying a question in the middle of a log.
118
+ * **The "Double Ask":** asking for info, then asking for confirmation of the info in the same turn.
119
+ * **The "Fake Choice":** offering options that are clearly bad/wrong.
120
+
121
+ ---
122
+
123
+ ## Checklist: UI Audit
124
+
125
+ - [ ] **Is the Hexagon present?** (Brand anchor)
126
+ - [ ] **Is the hierarchy clear?** (Indentation)
127
+ - [ ] **Are options numbered or binary?** (Ease of input)
128
+ - [ ] **Is the critical info boxed?** (Gates)
129
+ - [ ] **Did I acknowledge memory/skills?** (Show intelligence)
130
+
131
+ ---
132
+
133
+ **Goal:** The user should be able to scan the output and know exactly *where they are* and *what they need to do*.
@@ -1,17 +1,12 @@
1
1
  # Workflow: Accept Phase
2
2
 
3
- The Accept phase verifies the implementation against the specification and obtains user sign-off.
3
+ **GoopSpec Voice:** Critical, Celebratory, Final.
4
+
5
+ The Accept phase answers: **Did we deliver what we promised?** It is the final quality gate.
4
6
 
5
7
  ## Position in Workflow
6
8
 
7
9
  ```
8
- ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
9
- │ PLAN │ ──▶ │ RESEARCH │ ──▶ │ SPECIFY │
10
- │ (Intent) │ │ (Explore) │ │ (Contract) │
11
- └─────────────┘ └─────────────┘ └─────────────┘
12
-
13
- ┌──────────────────────────────────────┘
14
-
15
10
  ┌─────────────┐ ┌─────────────┐
16
11
  │ EXECUTE │ ──▶ │ ACCEPT │
17
12
  │ (Build) │ │ (Verify) │
@@ -20,117 +15,31 @@ The Accept phase verifies the implementation against the specification and obtai
20
15
  (You are here)
21
16
 
22
17
  ╔══════════════════════════════════════════════╗
23
- ║ ACCEPTANCE GATE
18
+ ║ ACCEPTANCE GATE
24
19
  ║ User MUST confirm completion ║
25
20
  ╚══════════════════════════════════════════════╝
26
21
  ```
27
22
 
28
- ## Purpose
29
-
30
- The Accept phase answers: **Did we deliver what we promised?**
31
-
32
- This is the final verification against the locked specification. The user confirms the work is complete before it's considered done.
33
-
34
- ## Entry Criteria
35
-
36
- - Execute phase complete
37
- - All tasks finished
38
- - All tests passing
39
- - CHRONICLE.md updated
40
-
41
- ## Verification Activities
42
-
43
- ### 1. Spec Compliance Check
44
-
45
- Verify each must-have from SPEC.md:
46
-
47
- ```markdown
48
- ## Must-Have Verification
49
-
50
- | Requirement | Status | Evidence |
51
- |-------------|--------|----------|
52
- | User can log in | ✓ | Test: auth.test.ts:15 |
53
- | Session persists | ✓ | Test: session.test.ts:42 |
54
- | Error messages shown | ✓ | Manual verification |
55
- ```
56
-
57
- ### 2. Automated Verification
58
-
59
- Run all quality gates:
60
-
61
- ```bash
62
- # Type checking
63
- npm run typecheck
23
+ ## Verification Protocol
64
24
 
65
- # Linting
66
- npm run lint
25
+ Before asking the user, the agent runs the **Verifier**.
67
26
 
68
- # Tests
69
- npm test
27
+ ### 1. Automated Checks
28
+ * Linting
29
+ * Type Checking
30
+ * Unit/Integration Tests
31
+ * Build Verification
70
32
 
71
- # Build
72
- npm run build
73
- ```
74
-
75
- ### 3. Manual Verification
33
+ ### 2. Spec Compliance
34
+ Compare `CHRONICLE.md` against `SPEC.md`.
35
+ * Are all "Must Haves" marked complete?
36
+ * Are there any open deviations?
76
37
 
77
- For behaviors that can't be automated:
38
+ ## The Acceptance Gate
78
39
 
79
- ```markdown
80
- ## Manual Verification Checklist
40
+ Present the evidence clearly.
81
41
 
82
- - [ ] Login flow works end-to-end
83
- - [ ] Error states display correctly
84
- - [ ] Mobile responsive (if applicable)
85
- - [ ] Accessibility check (keyboard nav, screen reader)
86
- ```
87
-
88
- ### 4. Security Audit (If Applicable)
89
-
90
- For security-sensitive features:
91
-
92
- ```markdown
93
- ## Security Verification
94
-
95
- - [ ] Input validation present
96
- - [ ] No hardcoded secrets
97
- - [ ] Auth/authz properly enforced
98
- - [ ] No obvious vulnerabilities
99
- ```
100
-
101
- ## Verifier Agent
102
-
103
- Delegate comprehensive verification to goop-verifier:
104
-
105
- ```
106
- task({
107
- subagent_type: "general",
108
- description: "Verify spec",
109
- prompt: `
110
- Verify implementation against specification.
111
-
112
- SPEC: .goopspec/SPEC.md
113
- CHRONICLE: .goopspec/CHRONICLE.md
114
-
115
- Verify:
116
- 1. All must-haves implemented
117
- 2. Acceptance criteria met
118
- 3. No regressions introduced
119
- 4. Security considerations addressed
120
- 5. Code quality standards met
121
-
122
- Return: Detailed verification report
123
- `
124
- })
125
- ```
126
-
127
- ## Acceptance Gate
128
-
129
- **CRITICAL**: User MUST explicitly accept the work.
130
-
131
- ### Acceptance Prompt
132
-
133
- ```
42
+ ```text
134
43
  ╭─ ⬢ GoopSpec ───────────────────────────────────────╮
135
44
  │ │
136
45
  │ ✓ ACCEPTANCE GATE │
@@ -138,188 +47,66 @@ task({
138
47
  │ Implementation complete. Verification results: │
139
48
  │ │
140
49
  │ MUST HAVES: │
141
- │ ☑ User can log in - VERIFIED
142
- │ ☑ Session persists - VERIFIED
143
- │ ☑ Errors displayed - VERIFIED │
50
+ │ ☑ Login Form - VERIFIED
51
+ │ ☑ API Integration - VERIFIED
144
52
  │ │
145
- AUTOMATED CHECKS:
146
- │ ✓ TypeScript: No errors
147
- │ ✓ Lint: No issues
148
- │ ✓ Tests: 24/24 passing │
149
- │ ✓ Build: Successful │
150
- │ │
151
- │ NICE TO HAVES COMPLETED: │
152
- │ ☑ Remember me option │
53
+ QUALITY METRICS:
54
+ │ ✓ Tests: 14/14 Passing
55
+ │ ✓ Build: Success
153
56
  │ │
154
57
  │ ───────────────────────────────────────────── │
155
- │ Type "accept" to confirm completion.
156
- │ Type "issues: [description]" to request fixes.
58
+ Type "accept" to Archive and Complete.
59
+ Type "issues: [details]" to Reject.
157
60
  │ │
158
61
  ╰────────────────────────────────────────────────────╯
159
62
  ```
160
63
 
161
- ### Acceptance Responses
162
-
163
- | Response | Effect |
164
- |----------|--------|
165
- | `accept` | Work marked complete, proceed to archive |
166
- | `issues: [desc]` | Return to Execute phase for fixes |
167
- | `amend: [change]` | Modify spec, reassess what's needed |
168
-
169
- ## Post-Acceptance
170
-
171
- After user accepts:
172
-
173
- ### 1. Generate Summary
64
+ ## Handling Rejection
174
65
 
175
- ```markdown
176
- # Summary: [Feature Name]
66
+ If the user types `issues: ...`:
67
+ 1. **Log:** Create a new "Fix" Wave in `BLUEPRINT.md`.
68
+ 2. **Execute:** Return to Execute Phase.
69
+ 3. **Verify:** Re-run verification.
70
+ 4. **Gate:** Re-present Acceptance Gate.
177
71
 
178
- **Completed:** [timestamp]
179
- **Duration:** [time]
180
- **Tasks:** 12 completed
181
- **Commits:** 12
72
+ ## Completion Activities
182
73
 
183
- ## Delivered
184
- - Must-have 1 ✓
185
- - Must-have 2 ✓
186
- - Nice-to-have 1 ✓ (bonus)
74
+ Once accepted:
187
75
 
188
- ## Key Decisions
189
- - Used jose library for JWT (better ESM support)
190
- - Stored refresh tokens in httpOnly cookies
76
+ 1. **Archive:** Move documents to `.goopspec/archive/`.
77
+ 2. **Retrospective:** Generate `RETROSPECTIVE.md`.
78
+ 3. **Memory Extraction:** The most important step for future intelligence.
191
79
 
192
- ## Files Modified
193
- - src/auth/login.ts (new)
194
- - src/auth/session.ts (new)
195
- - src/routes/api.ts (modified)
196
- ```
197
-
198
- ### 2. Archive (For Milestones)
199
-
200
- If this completes a milestone:
80
+ ### Memory Extraction
81
+ Extract **Patterns**, **Decisions**, and **Learnings**.
201
82
 
202
- ```
203
- /goop-complete
204
- ```
205
-
206
- This triggers:
207
- 1. Move to archive/
208
- 2. Generate RETROSPECTIVE.md
209
- 3. Extract LEARNINGS.md
210
- 4. Persist learnings to memory
211
- 5. Tag git with version
212
-
213
- ### 3. Clean Up
214
-
215
- - Clear active workflow state
216
- - Keep SPEC.md and CHRONICLE.md for reference
217
- - Ready for next task
218
-
219
- ## Handling Issues
220
-
221
- ### Minor Issues
222
-
223
- Issues that don't fundamentally change the spec:
224
-
225
- ```
226
- User: "issues: Login button color should be blue, not gray"
227
-
228
- Agent:
229
- 1. Note as fix task
230
- 2. Delegate quick fix
231
- 3. Re-verify affected area
232
- 4. Present for re-acceptance
233
- ```
234
-
235
- ### Major Issues
236
-
237
- Issues that reveal missing requirements:
238
-
239
- ```
240
- User: "issues: Wait, it also needs OAuth support"
241
-
242
- Agent:
243
- 1. Note as spec change
244
- 2. Prompt for `/goop-amend`
245
- 3. Update SPEC.md
246
- 4. Re-plan affected tasks
247
- 5. Execute additions
248
- 6. Re-verify
249
- ```
250
-
251
- ## Verification Report
252
-
253
- Full verification saved to CHRONICLE.md:
254
-
255
- ```markdown
256
- ## Verification Report
257
-
258
- **Date:** [timestamp]
259
- **Verifier:** goop-verifier
260
-
261
- ### Spec Compliance
262
- | Must-Have | Status | Evidence |
263
- |-----------|--------|----------|
264
- | Req 1 | PASS | test:auth:15 |
265
- | Req 2 | PASS | test:session:42 |
266
-
267
- ### Quality Metrics
268
- - TypeScript: Clean
269
- - Lint: Clean
270
- - Test Coverage: 87%
271
- - Build: Success
272
-
273
- ### Security Review
274
- - Input validation: Present
275
- - Auth checks: Proper
276
- - No secrets: Verified
277
-
278
- ### Recommendation
279
- READY FOR ACCEPTANCE
280
- ```
281
-
282
- ## Quick Mode Accept
283
-
284
- For Quick tasks:
285
- - Abbreviated verification
286
- - No formal report
287
- - Quick confirmation prompt
288
- - Direct archive to quick/
289
-
290
- ## Memory Protocol
291
-
292
- ### Before Verifying
293
- ```
294
- memory_search({
295
- query: "verification patterns, past issues",
296
- types: ["observation"]
297
- })
298
- ```
299
-
300
- ### During Verification
301
- ```
302
- memory_note({
303
- note: "Verification passed for [feature]"
304
- })
305
- ```
306
-
307
- ### After Acceptance
308
- ```
83
+ ```javascript
84
+ // Example Extraction
309
85
  memory_save({
310
86
  type: "observation",
311
- title: "Feature Accepted: [name]",
312
- content: "[summary of delivered work]",
313
- concepts: ["completed", "patterns-used"],
314
- importance: 0.7
87
+ title: "Completed: Auth Feature",
88
+ content: "Successfully implemented Auth0. Key learning: User prefers JWT over session cookies.",
89
+ concepts: ["auth", "completion", "preference"],
90
+ importance: 0.9 // High importance for future recall
315
91
  })
316
92
  ```
317
93
 
318
94
  ## Commands
319
95
 
320
96
  | Command | Effect |
321
- |---------|--------|
322
- | `/goop-accept` | Trigger acceptance verification |
323
- | `/goop-status` | Check verification status |
324
- | `/goop-complete` | Complete and archive milestone |
325
- | `/goop-amend [change]` | Modify spec if issues found |
97
+ | :--- | :--- |
98
+ | `/goop-accept` | Trigger the Acceptance Gate. |
99
+ | `/goop-complete` | Finalize, archive, and reset state. |
100
+ | `/goop-milestone` | Start a new milestone after completion. |
101
+
102
+ ## The "Celebrate" Pattern
103
+
104
+ End on a high note.
105
+
106
+ ```text
107
+ ⬢ Milestone Completed: Auth Feature 🚀
108
+ Saved to Archive: .goopspec/archive/v1.0-auth/
109
+ Memory Updated: +3 new patterns
110
+
111
+ Ready for next plan?
112
+ ```