@fro.bot/systematic 1.20.2 → 1.21.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/commands/workflows/plan.md +40 -12
- package/package.json +1 -1
- package/skills/agent-native-architecture/SKILL.md +4 -4
- package/skills/agent-native-architecture/references/agent-execution-patterns.md +3 -3
- package/skills/andrew-kane-gem-writer/SKILL.md +0 -1
- package/skills/compound-docs/SKILL.md +5 -5
- package/skills/compound-docs/references/yaml-schema.md +1 -1
- package/skills/create-agent-skills/SKILL.md +0 -1
- package/skills/create-agent-skills/references/official-spec.md +1 -1
- package/skills/create-agent-skills/workflows/create-new-skill.md +2 -2
- package/skills/create-agent-skills/workflows/get-guidance.md +1 -1
- package/skills/dhh-rails-style/SKILL.md +0 -1
- package/skills/dspy-ruby/SKILL.md +0 -1
- package/skills/every-style-editor/SKILL.md +0 -1
- package/skills/gemini-imagegen/SKILL.md +0 -1
- package/skills/git-worktree/SKILL.md +0 -1
- package/skills/git-worktree/scripts/worktree-manager.sh +0 -0
- package/skills/rclone/SKILL.md +0 -1
- package/skills/resolve-pr-parallel/SKILL.md +4 -5
- package/skills/resolve-pr-parallel/scripts/get-pr-comments +1 -1
- package/skills/setup/SKILL.md +1 -1
- package/skills/skill-creator/SKILL.md +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: workflows:plan
|
|
3
3
|
description: Transform feature descriptions into well-structured project plans following conventions
|
|
4
|
-
argument-hint:
|
|
4
|
+
argument-hint: "[feature description, bug report, or improvement idea]"
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Create a plan for a new feature or bug fix
|
|
@@ -36,11 +36,19 @@ ls -la docs/brainstorms/*.md 2>/dev/null | head -10
|
|
|
36
36
|
- If multiple candidates match, use the most recent one
|
|
37
37
|
|
|
38
38
|
**If a relevant brainstorm exists:**
|
|
39
|
-
1. Read the brainstorm document
|
|
40
|
-
2. Announce: "Found brainstorm from [date]: [topic]. Using as
|
|
41
|
-
3. Extract
|
|
42
|
-
|
|
43
|
-
|
|
39
|
+
1. Read the brainstorm document **thoroughly** — every section matters
|
|
40
|
+
2. Announce: "Found brainstorm from [date]: [topic]. Using as foundation for planning."
|
|
41
|
+
3. Extract and carry forward **ALL** of the following into the plan:
|
|
42
|
+
- Key decisions and their rationale
|
|
43
|
+
- Chosen approach and why alternatives were rejected
|
|
44
|
+
- Constraints and requirements discovered during brainstorming
|
|
45
|
+
- Open questions (flag these for resolution during planning)
|
|
46
|
+
- Success criteria and scope boundaries
|
|
47
|
+
- Any specific technical choices or patterns discussed
|
|
48
|
+
4. **Skip the idea refinement questions below** — the brainstorm already answered WHAT to build
|
|
49
|
+
5. Use brainstorm content as the **primary input** to research and planning phases
|
|
50
|
+
6. **Critical: The brainstorm is the origin document.** Throughout the plan, reference specific decisions with `(see brainstorm: docs/brainstorms/<filename>)` when carrying forward conclusions. Do not paraphrase decisions in a way that loses their original context — link back to the source.
|
|
51
|
+
7. **Do not omit brainstorm content** — if the brainstorm discussed it, the plan must address it (even if briefly). Scan each brainstorm section before finalizing the plan to verify nothing was dropped.
|
|
44
52
|
|
|
45
53
|
**If multiple brainstorms could match:**
|
|
46
54
|
Use **question tool** to ask which brainstorm to use, or whether to proceed without one.
|
|
@@ -150,7 +158,7 @@ Think like a product manager - what would make this issue clear and actionable?
|
|
|
150
158
|
|
|
151
159
|
After planning the issue structure, run SpecFlow Analyzer to validate and refine the feature specification:
|
|
152
160
|
|
|
153
|
-
- task spec-flow-analyzer(feature_description, research_findings)
|
|
161
|
+
- task systematic:workflow:spec-flow-analyzer(feature_description, research_findings)
|
|
154
162
|
|
|
155
163
|
**SpecFlow Analyzer Output:**
|
|
156
164
|
|
|
@@ -180,6 +188,7 @@ title: [Issue Title]
|
|
|
180
188
|
type: [feat|fix|refactor]
|
|
181
189
|
status: active
|
|
182
190
|
date: YYYY-MM-DD
|
|
191
|
+
origin: docs/brainstorms/YYYY-MM-DD-<topic>-brainstorm.md # if originated from brainstorm, otherwise omit
|
|
183
192
|
---
|
|
184
193
|
|
|
185
194
|
# [Issue Title]
|
|
@@ -207,8 +216,9 @@ class Test
|
|
|
207
216
|
end
|
|
208
217
|
```
|
|
209
218
|
|
|
210
|
-
##
|
|
219
|
+
## Sources
|
|
211
220
|
|
|
221
|
+
- **Origin brainstorm:** [docs/brainstorms/YYYY-MM-DD-<topic>-brainstorm.md](path) — include if plan originated from a brainstorm
|
|
212
222
|
- Related issue: #[issue_number]
|
|
213
223
|
- Documentation: [relevant_docs_url]
|
|
214
224
|
````
|
|
@@ -233,6 +243,7 @@ title: [Issue Title]
|
|
|
233
243
|
type: [feat|fix|refactor]
|
|
234
244
|
status: active
|
|
235
245
|
date: YYYY-MM-DD
|
|
246
|
+
origin: docs/brainstorms/YYYY-MM-DD-<topic>-brainstorm.md # if originated from brainstorm, otherwise omit
|
|
236
247
|
---
|
|
237
248
|
|
|
238
249
|
# [Issue Title]
|
|
@@ -277,8 +288,9 @@ date: YYYY-MM-DD
|
|
|
277
288
|
|
|
278
289
|
[What could block or complicate this]
|
|
279
290
|
|
|
280
|
-
##
|
|
291
|
+
## Sources & References
|
|
281
292
|
|
|
293
|
+
- **Origin brainstorm:** [docs/brainstorms/YYYY-MM-DD-<topic>-brainstorm.md](path) — include if plan originated from a brainstorm
|
|
282
294
|
- Similar implementations: [file_path:line_number]
|
|
283
295
|
- Best practices: [documentation_url]
|
|
284
296
|
- Related PRs: #[pr_number]
|
|
@@ -306,6 +318,7 @@ title: [Issue Title]
|
|
|
306
318
|
type: [feat|fix|refactor]
|
|
307
319
|
status: active
|
|
308
320
|
date: YYYY-MM-DD
|
|
321
|
+
origin: docs/brainstorms/YYYY-MM-DD-<topic>-brainstorm.md # if originated from brainstorm, otherwise omit
|
|
309
322
|
---
|
|
310
323
|
|
|
311
324
|
# [Issue Title]
|
|
@@ -416,7 +429,11 @@ date: YYYY-MM-DD
|
|
|
416
429
|
|
|
417
430
|
[What docs need updating]
|
|
418
431
|
|
|
419
|
-
##
|
|
432
|
+
## Sources & References
|
|
433
|
+
|
|
434
|
+
### Origin
|
|
435
|
+
|
|
436
|
+
- **Brainstorm document:** [docs/brainstorms/YYYY-MM-DD-<topic>-brainstorm.md](path) — include if plan originated from a brainstorm. Key decisions carried forward: [list 2-3 major decisions from brainstorm]
|
|
420
437
|
|
|
421
438
|
### Internal References
|
|
422
439
|
|
|
@@ -495,6 +512,16 @@ end
|
|
|
495
512
|
|
|
496
513
|
### 6. Final Review & Submission
|
|
497
514
|
|
|
515
|
+
**Brainstorm cross-check (if plan originated from a brainstorm):**
|
|
516
|
+
|
|
517
|
+
Before finalizing, re-read the brainstorm document and verify:
|
|
518
|
+
- [ ] Every key decision from the brainstorm is reflected in the plan
|
|
519
|
+
- [ ] The chosen approach matches what was decided in the brainstorm
|
|
520
|
+
- [ ] Constraints and requirements from the brainstorm are captured in acceptance criteria
|
|
521
|
+
- [ ] Open questions from the brainstorm are either resolved or flagged
|
|
522
|
+
- [ ] The `origin:` frontmatter field points to the brainstorm file
|
|
523
|
+
- [ ] The Sources section includes the brainstorm with a summary of carried-forward decisions
|
|
524
|
+
|
|
498
525
|
**Pre-submission Checklist:**
|
|
499
526
|
|
|
500
527
|
- [ ] Title is searchable and descriptive
|
|
@@ -513,7 +540,7 @@ end
|
|
|
513
540
|
mkdir -p docs/plans/
|
|
514
541
|
```
|
|
515
542
|
|
|
516
|
-
Use the
|
|
543
|
+
Use the Write tool to save the complete plan to `docs/plans/YYYY-MM-DD-<type>-<descriptive-name>-plan.md`. This step is mandatory and cannot be skipped — even when running as part of LFG/SLFG or other automated pipelines.
|
|
517
544
|
|
|
518
545
|
Confirm: "Plan written to docs/plans/[filename]"
|
|
519
546
|
|
|
@@ -548,6 +575,7 @@ After writing the plan file, use the **question tool** to present these options:
|
|
|
548
575
|
3. **Run `/technical_review`** - Technical feedback from code-focused reviewers (DHH, Kieran, Simplicity)
|
|
549
576
|
4. **Review and refine** - Improve the document through structured self-review
|
|
550
577
|
5. **Start `/workflows:work`** - Begin implementing this plan locally
|
|
578
|
+
6. **Start `/workflows:work` on remote** - Begin implementing in OpenCode on the web (use `&` to run in background)
|
|
551
579
|
7. **Create Issue** - Create issue in project tracker (GitHub/Linear)
|
|
552
580
|
|
|
553
581
|
Based on selection:
|
|
@@ -556,7 +584,7 @@ Based on selection:
|
|
|
556
584
|
- **`/technical_review`** → Call the /technical_review command with the plan file path
|
|
557
585
|
- **Review and refine** → Load `document-review` skill.
|
|
558
586
|
- **`/workflows:work`** → Call the /workflows:work command with the plan file path
|
|
559
|
-
- **`/workflows:work` on remote** → Run `/workflows:work docs/plans/<plan_filename>.md &` to start work in background
|
|
587
|
+
- **`/workflows:work` on remote** → Run `/workflows:work docs/plans/<plan_filename>.md &` to start work in background for OpenCode web
|
|
560
588
|
- **Create Issue** → See "Issue Creation" section below
|
|
561
589
|
- **Other** (automatically provided) → Accept free text for rework or specific changes
|
|
562
590
|
|
package/package.json
CHANGED
|
@@ -6,13 +6,13 @@ description: Build applications where agents are first-class citizens. Use this
|
|
|
6
6
|
<why_now>
|
|
7
7
|
## Why Now
|
|
8
8
|
|
|
9
|
-
Software agents work reliably now.
|
|
9
|
+
Software agents work reliably now. OpenCode demonstrated that an LLM with access to bash and file tools, operating in a loop until an objective is achieved, can accomplish complex multi-step tasks autonomously.
|
|
10
10
|
|
|
11
|
-
The surprising discovery: **a really good coding agent is actually a really good general-purpose agent.** The same architecture that lets
|
|
11
|
+
The surprising discovery: **a really good coding agent is actually a really good general-purpose agent.** The same architecture that lets OpenCode refactor a codebase can let an agent organize your files, manage your reading list, or automate your workflows.
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
The OpenCode SDK makes this accessible. You can build applications where features aren't code you write—they're outcomes you describe, achieved by an agent with tools, operating in a loop until the outcome is reached.
|
|
14
14
|
|
|
15
|
-
This opens up a new field: software that works the way
|
|
15
|
+
This opens up a new field: software that works the way OpenCode works, applied to categories far beyond coding.
|
|
16
16
|
</why_now>
|
|
17
17
|
|
|
18
18
|
<core_principles>
|
|
@@ -61,7 +61,7 @@ extension ToolResult {
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
static func complete(_ summary: String) -> ToolResult {
|
|
64
|
-
//
|
|
64
|
+
// task done, stop the loop
|
|
65
65
|
ToolResult(success: true, output: summary, shouldContinue: false)
|
|
66
66
|
}
|
|
67
67
|
}
|
|
@@ -165,7 +165,7 @@ Progress: 3/5 tasks complete (60%)
|
|
|
165
165
|
- Resume continues from where it left off, not from beginning
|
|
166
166
|
|
|
167
167
|
**Agent fails on one task:**
|
|
168
|
-
-
|
|
168
|
+
- task marked `.failed` with error in notes
|
|
169
169
|
- Other tasks may continue (agent decides)
|
|
170
170
|
- Orchestrator doesn't automatically abort entire session
|
|
171
171
|
|
|
@@ -183,7 +183,7 @@ struct AgentCheckpoint: Codable {
|
|
|
183
183
|
let agentType: String
|
|
184
184
|
let messages: [Message] // Full conversation history
|
|
185
185
|
let iterationCount: Int
|
|
186
|
-
let tasks: [AgentTask] //
|
|
186
|
+
let tasks: [AgentTask] // task state
|
|
187
187
|
let customState: [String: Any] // Agent-specific state
|
|
188
188
|
let timestamp: Date
|
|
189
189
|
|
|
@@ -182,4 +182,3 @@ For deeper patterns, see:
|
|
|
182
182
|
- **[references/database-adapters.md](references/database-adapters.md)** - Multi-database support patterns
|
|
183
183
|
- **[references/testing-patterns.md](references/testing-patterns.md)** - Multi-version testing, CI setup
|
|
184
184
|
- **[references/resources.md](references/resources.md)** - Links to Kane's repos and articles
|
|
185
|
-
|
|
@@ -3,10 +3,10 @@ name: compound-docs
|
|
|
3
3
|
description: Capture solved problems as categorized documentation with YAML frontmatter for fast lookup
|
|
4
4
|
disable-model-invocation: true
|
|
5
5
|
allowed-tools:
|
|
6
|
-
- Read
|
|
7
|
-
- Write
|
|
8
|
-
- Bash
|
|
9
|
-
- Grep
|
|
6
|
+
- Read # Parse conversation context
|
|
7
|
+
- Write # Create resolution docs
|
|
8
|
+
- Bash # Create directories
|
|
9
|
+
- Grep # Search existing docs
|
|
10
10
|
preconditions:
|
|
11
11
|
- Problem has been solved (not in-progress)
|
|
12
12
|
- Solution has been verified working
|
|
@@ -327,7 +327,7 @@ User selects this when the solution represents the start of a new learning domai
|
|
|
327
327
|
|
|
328
328
|
Action:
|
|
329
329
|
1. Prompt: "What should the new skill be called? (e.g., stripe-billing, email-processing)"
|
|
330
|
-
2. Run `python3 .opencode/skills/
|
|
330
|
+
2. Run `python3 .opencode/skills/skill-creator/scripts/init_skill.py [skill-name]`
|
|
331
331
|
3. Create initial reference files with this solution as first example
|
|
332
332
|
4. Confirm: "✓ Created new [skill-name] skill with this solution as first example"
|
|
333
333
|
|
|
@@ -80,7 +80,7 @@ Plugin skills use a `plugin-name:skill-name` namespace, so they cannot conflict
|
|
|
80
80
|
| `$ARGUMENTS` | All arguments passed when invoking |
|
|
81
81
|
| `$ARGUMENTS[N]` | Specific argument by 0-based index |
|
|
82
82
|
| `$N` | Shorthand for `$ARGUMENTS[N]` |
|
|
83
|
-
|
|
|
83
|
+
| `N/A` | Current session ID |
|
|
84
84
|
|
|
85
85
|
## Dynamic Context Injection
|
|
86
86
|
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
**If user just invoked skill without context:**
|
|
19
19
|
→ Ask what they want to build
|
|
20
20
|
|
|
21
|
-
### Using question
|
|
21
|
+
### Using question
|
|
22
22
|
|
|
23
23
|
Ask 2-4 domain-specific questions based on actual gaps. Each question should:
|
|
24
24
|
- Have specific options with descriptions
|
|
@@ -42,7 +42,7 @@ Options:
|
|
|
42
42
|
|
|
43
43
|
## Step 2: Research Trigger (If External API)
|
|
44
44
|
|
|
45
|
-
**When external service detected**, ask using question
|
|
45
|
+
**When external service detected**, ask using question:
|
|
46
46
|
"This involves [service name] API. Would you like me to research current endpoints and patterns before building?"
|
|
47
47
|
|
|
48
48
|
Options:
|
|
@@ -17,7 +17,7 @@ Ask the user:
|
|
|
17
17
|
## Step 2: Determine If a Skill Is Right
|
|
18
18
|
|
|
19
19
|
**Create a skill when:**
|
|
20
|
-
-
|
|
20
|
+
- task is repeated across multiple sessions
|
|
21
21
|
- Domain knowledge doesn't change frequently
|
|
22
22
|
- Complex enough to benefit from structure
|
|
23
23
|
- Would save significant time if automated
|
|
@@ -235,4 +235,3 @@ file image.png
|
|
|
235
235
|
- Image-only mode (`responseModalities: ["IMAGE"]`) won't work with Google Search grounding
|
|
236
236
|
- For editing, describe changes conversationally—the model understands semantic masking
|
|
237
237
|
- Default to 1K resolution for speed; use 2K/4K when quality is critical
|
|
238
|
-
|
|
File without changes
|
package/skills/rclone/SKILL.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: resolve_pr_parallel
|
|
3
3
|
description: Resolve all PR comments using parallel processing. Use when addressing PR review feedback, resolving review threads, or batch-fixing PR comments.
|
|
4
|
-
argument-hint:
|
|
4
|
+
argument-hint: "[optional: PR number or current PR]"
|
|
5
5
|
disable-model-invocation: true
|
|
6
6
|
allowed-tools: Bash(gh *), Bash(git *), Read
|
|
7
7
|
---
|
|
@@ -24,7 +24,7 @@ OpenCode automatically detects git context:
|
|
|
24
24
|
Fetch unresolved review threads using the GraphQL script:
|
|
25
25
|
|
|
26
26
|
```bash
|
|
27
|
-
bash
|
|
27
|
+
bash scripts/get-pr-comments PR_NUMBER
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
This returns only **unresolved, non-outdated** threads with file paths, line numbers, and comment bodies.
|
|
@@ -61,7 +61,7 @@ Always run all in parallel subagents/Tasks for each Todo item.
|
|
|
61
61
|
- Resolve each thread programmatically:
|
|
62
62
|
|
|
63
63
|
```bash
|
|
64
|
-
bash
|
|
64
|
+
bash scripts/resolve-pr-thread THREAD_ID
|
|
65
65
|
```
|
|
66
66
|
|
|
67
67
|
- Push to remote
|
|
@@ -71,7 +71,7 @@ bash ${OPENCODE_PLUGIN_ROOT}/skills/resolve-pr-parallel/scripts/resolve-pr-threa
|
|
|
71
71
|
Re-fetch comments to confirm all threads are resolved:
|
|
72
72
|
|
|
73
73
|
```bash
|
|
74
|
-
bash
|
|
74
|
+
bash scripts/get-pr-comments PR_NUMBER
|
|
75
75
|
```
|
|
76
76
|
|
|
77
77
|
Should return an empty array `[]`. If threads remain, repeat from step 1.
|
|
@@ -87,4 +87,3 @@ Should return an empty array `[]`. If threads remain, repeat from step 1.
|
|
|
87
87
|
- Changes committed and pushed
|
|
88
88
|
- Threads resolved via GraphQL (marked as resolved on GitHub)
|
|
89
89
|
- Empty result from get-pr-comments on verify
|
|
90
|
-
|
package/skills/setup/SKILL.md
CHANGED
|
@@ -53,7 +53,7 @@ options:
|
|
|
53
53
|
description: "Choose stack, focus areas, and review depth."
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
-
### If Auto-configure → Skip to Step 4 with defaults
|
|
56
|
+
### If Auto-configure → Skip to Step 4 with defaults:
|
|
57
57
|
|
|
58
58
|
- **Rails:** `[kieran-rails-reviewer, dhh-rails-reviewer, code-simplicity-reviewer, security-sentinel, performance-oracle]`
|
|
59
59
|
- **Python:** `[kieran-python-reviewer, code-simplicity-reviewer, security-sentinel, performance-oracle]`
|