@fro.bot/systematic 1.20.2 → 1.21.1

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.
@@ -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: '[feature description, bug report, or improvement idea]'
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 context for planning."
41
- 3. Extract key decisions, chosen approach, and open questions
42
- 4. **Skip the idea refinement questions below** - the brainstorm already answered WHAT to build
43
- 5. Use brainstorm decisions as input to the research phase
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
- ## References
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
- ## References & Research
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
- ## References & Research
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 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.
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fro.bot/systematic",
3
- "version": "1.20.2",
3
+ "version": "1.21.1",
4
4
  "description": "Structured engineering workflows for OpenCode",
5
5
  "type": "module",
6
6
  "homepage": "https://fro.bot/systematic",
@@ -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. Modern coding agents like OpenCode have 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.
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 an agent refactor a codebase can let it organize your files, manage your reading list, or automate your workflows.
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
- Agent SDKs make 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.
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 modern coding agents work, applied to categories far beyond coding.
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
- // Task done, stop the loop
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
- - Task marked `.failed` with error in notes
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] // Task state
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/create-agent-skills/scripts/init_skill.py [skill-name]`
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
 
@@ -1,6 +1,6 @@
1
1
  # YAML Frontmatter Schema
2
2
 
3
- **See `.opencode/skills/compound-docs/schema.yaml` for the complete schema specification.**
3
+ **See `schema.yaml` for the complete schema specification.**
4
4
 
5
5
  ## Required Fields
6
6
 
@@ -273,4 +273,3 @@ For detailed guidance, see:
273
273
 
274
274
  - [Extend Claude with skills - Official Docs](https://code.claude.com/docs/en/skills)
275
275
  - [GitHub - anthropics/skills](https://github.com/anthropics/skills)
276
-
@@ -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
- | `${CLAUDE_SESSION_ID}` | Current session ID |
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 tool
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 tool:
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
- - Task is repeated across multiple sessions
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
@@ -183,4 +183,3 @@ Based on [The Unofficial 37signals/DHH Rails Style Guide](https://github.com/mar
183
183
  - Code examples from Fizzy are licensed under the O'Saasy License
184
184
  - Not affiliated with or endorsed by 37signals
185
185
  </credits>
186
-
@@ -735,4 +735,3 @@ end
735
735
  ## Version
736
736
 
737
737
  Current: 0.34.3
738
-
@@ -132,4 +132,3 @@ Based on Every's style guide, pay special attention to:
132
132
  - Word usage (fewer vs. less, they vs. them)
133
133
  - Company references (singular "it", teams as plural "they")
134
134
  - Job title capitalization
135
-
@@ -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
-
@@ -300,4 +300,3 @@ cd $(git rev-parse --show-toplevel)
300
300
  - No repository duplication
301
301
  - Shared git objects for efficiency
302
302
  - Much faster than cloning or stashing/switching
303
-
File without changes
@@ -148,4 +148,3 @@ rclone lsd remote: -vv
148
148
  # Check config
149
149
  rclone config show remote
150
150
  ```
151
-
@@ -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: '[optional: PR number or current PR]'
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 ${OPENCODE_PLUGIN_ROOT}/skills/resolve-pr-parallel/scripts/get-pr-comments PR_NUMBER
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 ${OPENCODE_PLUGIN_ROOT}/skills/resolve-pr-parallel/scripts/resolve-pr-thread THREAD_ID
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 ${OPENCODE_PLUGIN_ROOT}/skills/resolve-pr-parallel/scripts/get-pr-comments PR_NUMBER
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
-
@@ -5,7 +5,7 @@ set -e
5
5
  if [ $# -lt 1 ]; then
6
6
  echo "Usage: get-pr-comments PR_NUMBER [OWNER/REPO]"
7
7
  echo "Example: get-pr-comments 123"
8
- echo "Example: get-pr-comments 123 owner/repo"
8
+ echo "Example: get-pr-comments 123 EveryInc/cora"
9
9
  exit 1
10
10
  fi
11
11
 
@@ -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]`
@@ -208,4 +208,3 @@ After testing the skill, users may request improvements. Often this happens righ
208
208
  2. Notice struggles or inefficiencies
209
209
  3. Identify how SKILL.md or bundled resources should be updated
210
210
  4. Implement changes and test again
211
-