@fro.bot/systematic 2.33.3 → 3.0.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 (112) hide show
  1. package/ATTRIBUTIONS.md +1 -1
  2. package/agents/design/design-iterator.md +1 -0
  3. package/agents/research/best-practices-researcher.md +6 -8
  4. package/agents/review/pattern-recognition-specialist.md +1 -1
  5. package/agents/workflow/systematic-implementer.md +1 -0
  6. package/dist/cli.js +348 -53
  7. package/dist/{index-vyzhzvap.js → index-yskzf7vh.js} +587 -386
  8. package/dist/index.js +100 -155
  9. package/dist/lib/agent-overlays.d.ts +0 -1
  10. package/dist/lib/agent-resolver.d.ts +28 -0
  11. package/dist/lib/bootstrap.d.ts +8 -1
  12. package/dist/lib/bundled-names.d.ts +3 -3
  13. package/dist/lib/pi-delegate-session.d.ts +31 -0
  14. package/dist/lib/pi-delegate-tool.d.ts +42 -0
  15. package/dist/lib/removed-names.d.ts +3 -3
  16. package/dist/lib/setup.d.ts +36 -0
  17. package/dist/lib/skill-loader.d.ts +1 -2
  18. package/dist/lib/skill-resolver.d.ts +39 -0
  19. package/dist/lib/skill-tool.d.ts +2 -11
  20. package/dist/lib/skills.d.ts +1 -9
  21. package/dist/lib/source-model-defaults.d.ts +1 -1
  22. package/dist/pi.d.ts +7 -0
  23. package/dist/pi.js +3641 -0
  24. package/dist/schemas/systematic-config.schema.json +47 -242
  25. package/package.json +29 -6
  26. package/skills/ce-brainstorm/references/handoff.md +5 -26
  27. package/skills/ce-brainstorm/references/universal-brainstorming.md +0 -1
  28. package/skills/ce-compound/SKILL.md +8 -12
  29. package/skills/ce-ideate/references/post-ideation-workflow.md +21 -85
  30. package/skills/ce-plan/SKILL.md +6 -6
  31. package/skills/ce-plan/references/deepening-workflow.md +6 -7
  32. package/skills/ce-plan/references/plan-handoff.md +1 -17
  33. package/skills/ce-plan/references/universal-planning.md +0 -4
  34. package/skills/ce-review/SKILL.md +10 -19
  35. package/skills/ce-review/references/persona-catalog.md +2 -7
  36. package/skills/ce-review/references/review-output-template.md +0 -1
  37. package/skills/ce-work/SKILL.md +1 -1
  38. package/skills/deepen-plan/SKILL.md +6 -7
  39. package/skills/document-review/SKILL.md +2 -2
  40. package/skills/git-commit-push-pr/SKILL.md +1 -2
  41. package/skills/lfg/SKILL.md +1 -1
  42. package/skills/onboarding/SKILL.md +1 -12
  43. package/skills/orchestrating-subagents/SKILL.md +2 -2
  44. package/skills/slfg/SKILL.md +2 -3
  45. package/skills/test-browser/SKILL.md +2 -2
  46. package/skills/todos/SKILL.md +239 -0
  47. package/skills/writing-skills/SKILL.md +102 -1
  48. package/skills/{writing-systematic-skills → writing-skills}/references/foundation-conventions.md +5 -5
  49. package/agents/design/design-implementation-reviewer.md +0 -95
  50. package/agents/design/figma-design-sync.md +0 -173
  51. package/agents/docs/ankane-readme-writer.md +0 -51
  52. package/agents/review/cli-agent-readiness-reviewer.md +0 -418
  53. package/agents/review/data-integrity-guardian.md +0 -72
  54. package/agents/review/data-migration-expert.md +0 -99
  55. package/agents/review/dhh-rails-reviewer.md +0 -46
  56. package/agents/review/julik-frontend-races-reviewer.md +0 -49
  57. package/agents/review/kieran-python-reviewer.md +0 -47
  58. package/agents/review/kieran-rails-reviewer.md +0 -47
  59. package/agents/review/performance-oracle.md +0 -112
  60. package/agents/review/schema-drift-detector.md +0 -143
  61. package/agents/review/security-sentinel.md +0 -95
  62. package/agents/workflow/lint.md +0 -17
  63. package/dist/lib/converter.d.ts +0 -14
  64. package/skills/andrew-kane-gem-writer/SKILL.md +0 -184
  65. package/skills/andrew-kane-gem-writer/references/database-adapters.md +0 -231
  66. package/skills/andrew-kane-gem-writer/references/module-organization.md +0 -121
  67. package/skills/andrew-kane-gem-writer/references/rails-integration.md +0 -183
  68. package/skills/andrew-kane-gem-writer/references/resources.md +0 -119
  69. package/skills/andrew-kane-gem-writer/references/testing-patterns.md +0 -261
  70. package/skills/changelog/SKILL.md +0 -139
  71. package/skills/claude-permissions-optimizer/SKILL.md +0 -166
  72. package/skills/claude-permissions-optimizer/scripts/extract-commands.mjs +0 -655
  73. package/skills/claude-permissions-optimizer/scripts/normalize.mjs +0 -151
  74. package/skills/dhh-rails-style/SKILL.md +0 -186
  75. package/skills/dhh-rails-style/references/architecture.md +0 -653
  76. package/skills/dhh-rails-style/references/controllers.md +0 -303
  77. package/skills/dhh-rails-style/references/frontend.md +0 -510
  78. package/skills/dhh-rails-style/references/gems.md +0 -266
  79. package/skills/dhh-rails-style/references/models.md +0 -359
  80. package/skills/dhh-rails-style/references/testing.md +0 -338
  81. package/skills/dspy-ruby/SKILL.md +0 -737
  82. package/skills/dspy-ruby/assets/config-template.rb +0 -187
  83. package/skills/dspy-ruby/assets/module-template.rb +0 -300
  84. package/skills/dspy-ruby/assets/signature-template.rb +0 -221
  85. package/skills/dspy-ruby/references/core-concepts.md +0 -674
  86. package/skills/dspy-ruby/references/observability.md +0 -366
  87. package/skills/dspy-ruby/references/optimization.md +0 -603
  88. package/skills/dspy-ruby/references/providers.md +0 -418
  89. package/skills/dspy-ruby/references/toolsets.md +0 -502
  90. package/skills/every-style-editor/SKILL.md +0 -135
  91. package/skills/every-style-editor/references/EVERY_WRITE_STYLE.md +0 -529
  92. package/skills/feature-video/SKILL.md +0 -383
  93. package/skills/gemini-imagegen/SKILL.md +0 -237
  94. package/skills/gemini-imagegen/requirements.txt +0 -2
  95. package/skills/gemini-imagegen/scripts/compose_images.py +0 -157
  96. package/skills/gemini-imagegen/scripts/edit_image.py +0 -144
  97. package/skills/gemini-imagegen/scripts/gemini_images.py +0 -263
  98. package/skills/gemini-imagegen/scripts/generate_image.py +0 -133
  99. package/skills/gemini-imagegen/scripts/multi_turn_chat.py +0 -216
  100. package/skills/generate_command/SKILL.md +0 -164
  101. package/skills/orchestrating-swarms/SKILL.md +0 -1723
  102. package/skills/proof/SKILL.md +0 -291
  103. package/skills/proof/references/hitl-review.md +0 -368
  104. package/skills/rclone/SKILL.md +0 -150
  105. package/skills/rclone/scripts/check_setup.sh +0 -60
  106. package/skills/setup/SKILL.md +0 -22
  107. package/skills/test-xcode/SKILL.md +0 -214
  108. package/skills/todo-create/SKILL.md +0 -109
  109. package/skills/todo-resolve/SKILL.md +0 -68
  110. package/skills/todo-triage/SKILL.md +0 -70
  111. package/skills/writing-systematic-skills/SKILL.md +0 -119
  112. /package/skills/{todo-create → todos}/assets/todo-template.md +0 -0
@@ -1,214 +0,0 @@
1
- ---
2
- name: test-xcode
3
- description: "Build and test iOS apps on simulator using XcodeBuildMCP. Use after making iOS code changes, before creating a PR, or when verifying app behavior and checking for crashes on simulator."
4
- argument-hint: "[scheme name or 'current' to use default]"
5
- disable-model-invocation: true
6
- ---
7
-
8
- # Xcode Test Skill
9
-
10
- Build, install, and test iOS apps on the simulator using XcodeBuildMCP. Captures screenshots, logs, and verifies app behavior.
11
-
12
- ## Prerequisites
13
-
14
- - Xcode installed with command-line tools
15
- - XcodeBuildMCP MCP server connected
16
- - Valid Xcode project or workspace
17
- - At least one iOS Simulator available
18
-
19
- ## Workflow
20
-
21
- ### 0. Verify XcodeBuildMCP is Available
22
-
23
- Check that the XcodeBuildMCP MCP server is connected by calling its `list_simulators` tool.
24
-
25
- MCP tool names vary by platform:
26
- - OpenCode: `mcp__xcodebuildmcp__list_simulators`
27
- - Other platforms: use the equivalent MCP tool call for the `XcodeBuildMCP` server's `list_simulators` method
28
-
29
- If the tool is not found or errors, inform the user they need to add the XcodeBuildMCP MCP server:
30
-
31
- ```
32
- XcodeBuildMCP not installed
33
-
34
- Install via Homebrew:
35
- brew tap getsentry/xcodebuildmcp && brew install xcodebuildmcp
36
-
37
- Or via npx (no global install needed):
38
- npx -y xcodebuildmcp@latest mcp
39
-
40
- Then add "XcodeBuildMCP" as an MCP server in your agent configuration
41
- and restart your agent.
42
- ```
43
-
44
- Do NOT proceed until XcodeBuildMCP is confirmed working.
45
-
46
- ### 1. Discover Project and Scheme
47
-
48
- Call XcodeBuildMCP's `discover_projs` tool to find available projects, then `list_schemes` with the project path to get available schemes.
49
-
50
- If an argument was provided, use that scheme name. If "current", use the default/last-used scheme.
51
-
52
- ### 2. Boot Simulator
53
-
54
- Call `list_simulators` to find available simulators. Boot the preferred simulator (iPhone 15 Pro recommended) using `boot_simulator` with the simulator's UUID.
55
-
56
- Wait for the simulator to be ready before proceeding.
57
-
58
- ### 3. Build the App
59
-
60
- Call `build_ios_sim_app` with the project path and scheme name.
61
-
62
- **On failure:**
63
- - Capture build errors
64
- - Create a P1 todo for each build error
65
- - Report to user with specific error details
66
-
67
- **On success:**
68
- - Note the built app path for installation
69
- - Proceed to step 4
70
-
71
- ### 4. Install and Launch
72
-
73
- 1. Call `install_app_on_simulator` with the built app path and simulator UUID
74
- 2. Call `launch_app_on_simulator` with the bundle ID and simulator UUID
75
- 3. Call `capture_sim_logs` with the simulator UUID and bundle ID to start log capture
76
-
77
- ### 5. Test Key Screens
78
-
79
- For each key screen in the app:
80
-
81
- **Take screenshot:**
82
- Call `take_screenshot` with the simulator UUID and a descriptive filename (e.g., `screen-home.png`).
83
-
84
- **Review screenshot for:**
85
- - UI elements rendered correctly
86
- - No error messages visible
87
- - Expected content displayed
88
- - Layout looks correct
89
-
90
- **Check logs for errors:**
91
- Call `get_sim_logs` with the simulator UUID. Look for:
92
- - Crashes
93
- - Exceptions
94
- - Error-level log messages
95
- - Failed network requests
96
-
97
- **Known automation limitation — SwiftUI Text links:**
98
- Simulated taps (via XcodeBuildMCP or any simulator automation tool) do not trigger gesture recognizers on SwiftUI `Text` views with inline `AttributedString` links. Taps report success but have no effect. This is a platform limitation — inline links are not exposed as separate elements in the accessibility tree. When a tap on a Text link has no visible effect, prompt the user to tap manually in the simulator. If the target URL is known, `xcrun simctl openurl <device> <URL>` can open it directly as a fallback.
99
-
100
- ### 6. Human Verification (When Required)
101
-
102
- Pause for human input when testing touches flows that require device interaction.
103
-
104
- | Flow Type | What to Ask |
105
- |-----------|-------------|
106
- | Sign in with Apple | "Please complete Sign in with Apple on the simulator" |
107
- | Push notifications | "Send a test push and confirm it appears" |
108
- | In-app purchases | "Complete a sandbox purchase" |
109
- | Camera/Photos | "Grant permissions and verify camera works" |
110
- | Location | "Allow location access and verify map updates" |
111
- | SwiftUI Text links | "Please tap on [element description] manually — automated taps cannot trigger inline text links" |
112
-
113
- Ask the user (using the platform's question tool — e.g., `question` in OpenCode, `request_user_input` in Codex, `ask_user` in Gemini — or present numbered options and wait):
114
-
115
- ```
116
- Human Verification Needed
117
-
118
- This test requires [flow type]. Please:
119
- 1. [Action to take on simulator]
120
- 2. [What to verify]
121
-
122
- Did it work correctly?
123
- 1. Yes - continue testing
124
- 2. No - describe the issue
125
- ```
126
-
127
- ### 7. Handle Failures
128
-
129
- When a test fails:
130
-
131
- 1. **Document the failure:**
132
- - Take screenshot of error state
133
- - Capture console logs
134
- - Note reproduction steps
135
-
136
- 2. **Ask the user how to proceed:**
137
-
138
- ```
139
- Test Failed: [screen/feature]
140
-
141
- Issue: [description]
142
- Logs: [relevant error messages]
143
-
144
- How to proceed?
145
- 1. Fix now - I'll help debug and fix
146
- 2. Create todo - Add a todo for later (using the todo-create skill)
147
- 3. Skip - Continue testing other screens
148
- ```
149
-
150
- 3. **If "Fix now":** investigate, propose a fix, rebuild and retest
151
- 4. **If "Create todo":** load the `todo-create` skill and create a todo with priority p1 and description `xcode-{description}`, continue
152
- 5. **If "Skip":** log as skipped, continue
153
-
154
- ### 8. Test Summary
155
-
156
- After all tests complete, present a summary:
157
-
158
- ```markdown
159
- ## Xcode Test Results
160
-
161
- **Project:** [project name]
162
- **Scheme:** [scheme name]
163
- **Simulator:** [simulator name]
164
-
165
- ### Build: Success / Failed
166
-
167
- ### Screens Tested: [count]
168
-
169
- | Screen | Status | Notes |
170
- |--------|--------|-------|
171
- | Launch | Pass | |
172
- | Home | Pass | |
173
- | Settings | Fail | Crash on tap |
174
- | Profile | Skip | Requires login |
175
-
176
- ### Console Errors: [count]
177
- - [List any errors found]
178
-
179
- ### Human Verifications: [count]
180
- - Sign in with Apple: Confirmed
181
- - Push notifications: Confirmed
182
-
183
- ### Failures: [count]
184
- - Settings screen - crash on navigation
185
-
186
- ### Created Todos: [count]
187
- - `006-pending-p1-xcode-settings-crash.md`
188
-
189
- ### Result: [PASS / FAIL / PARTIAL]
190
- ```
191
-
192
- ### 9. Cleanup
193
-
194
- After testing:
195
-
196
- 1. Call `stop_log_capture` with the simulator UUID
197
- 2. Optionally call `shutdown_simulator` with the simulator UUID
198
-
199
- ## Quick Usage Examples
200
-
201
- ```bash
202
- # Test with default scheme
203
- /test-xcode
204
-
205
- # Test specific scheme
206
- /test-xcode MyApp-Debug
207
-
208
- # Test after making changes
209
- /test-xcode current
210
- ```
211
-
212
- ## Integration with ce:review
213
-
214
- When reviewing PRs that touch iOS code, the `ce:review` workflow can spawn an agent to run this skill, build on the simulator, test key screens, and check for crashes.
@@ -1,109 +0,0 @@
1
- ---
2
- name: todo-create
3
- description: Use when creating durable work items, managing todo lifecycle, or tracking findings across sessions in the file-based todo system
4
- disable-model-invocation: true
5
- ---
6
-
7
- # File-Based Todo Tracking
8
-
9
- ## Overview
10
-
11
- The `.context/systematic/todos/` directory is a file-based tracking system for code review feedback, technical debt, feature requests, and work items. Each todo is a markdown file with YAML frontmatter.
12
-
13
- > **Legacy support:** Always check both `.context/systematic/todos/` (canonical) and `todos/` (legacy) when reading. Write new todos only to the canonical path. This directory has a multi-session lifecycle -- do not clean it up as scratch.
14
-
15
- ## Directory Paths
16
-
17
- | Purpose | Path |
18
- |---------|------|
19
- | **Canonical (write here)** | `.context/systematic/todos/` |
20
- | **Legacy (read-only)** | `todos/` |
21
-
22
- ## File Naming Convention
23
-
24
- ```
25
- {issue_id}-{status}-{priority}-{description}.md
26
- ```
27
-
28
- - **issue_id**: Sequential number (001, 002, ...) -- never reused
29
- - **status**: `pending` | `ready` | `complete`
30
- - **priority**: `p1` (critical) | `p2` (important) | `p3` (nice-to-have)
31
- - **description**: kebab-case, brief
32
-
33
- **Example:** `002-ready-p1-fix-n-plus-1.md`
34
-
35
- ## File Structure
36
-
37
- Each todo has YAML frontmatter and structured sections. Use the todo template included below when creating new todos.
38
-
39
- ```yaml
40
- ---
41
- status: ready
42
- priority: p1
43
- issue_id: "002"
44
- tags: [rails, performance]
45
- dependencies: ["001"] # Issue IDs this is blocked by
46
- ---
47
- ```
48
-
49
- **Required sections:** Problem Statement, Findings, Proposed Solutions, Recommended Action (filled during triage), Acceptance Criteria, Work Log.
50
-
51
- **Optional sections:** Technical Details, Resources, Notes.
52
-
53
- ## Workflows
54
-
55
- > **Tool preference:** Use native file-search/glob and content-search tools instead of shell commands for finding and reading todo files. Shell only for operations with no native equivalent (`mv`, `mkdir -p`).
56
-
57
- ### Creating a New Todo
58
-
59
- 1. `mkdir -p .context/systematic/todos/`
60
- 2. Search both paths for `[0-9]*-*.md`, find the highest numeric prefix, increment, zero-pad to 3 digits.
61
- 3. Use the todo template included below, write to canonical path as `{NEXT_ID}-pending-{priority}-{description}.md`.
62
- 4. Fill Problem Statement, Findings, Proposed Solutions, Acceptance Criteria, and initial Work Log entry.
63
- 5. Set status: `pending` (needs triage) or `ready` (pre-approved).
64
-
65
- **Create a todo when** the work needs more than ~15 minutes, has dependencies, requires planning, or needs prioritization. **Act immediately instead** when the fix is trivial, obvious, and self-contained.
66
-
67
- ### Triaging Pending Items
68
-
69
- 1. Glob `*-pending-*.md` in both paths.
70
- 2. Review each todo's Problem Statement, Findings, and Proposed Solutions.
71
- 3. Approve: rename `pending` -> `ready` in filename and frontmatter, fill Recommended Action.
72
- 4. Defer: leave as `pending`.
73
-
74
- Load the `todo-triage` skill for an interactive approval workflow.
75
-
76
- ### Managing Dependencies
77
-
78
- ```yaml
79
- dependencies: ["002", "005"] # Blocked by these issues
80
- dependencies: [] # No blockers
81
- ```
82
-
83
- To check blockers: search for `{dep_id}-complete-*.md` in both paths. Missing matches = incomplete blockers.
84
-
85
- ### Completing a Todo
86
-
87
- 1. Verify all acceptance criteria.
88
- 2. Update Work Log with final session.
89
- 3. Rename `ready` -> `complete` in filename and frontmatter.
90
- 4. Check for unblocked work: search for files containing `dependencies:.*"{issue_id}"`.
91
-
92
- ## Integration with Workflows
93
-
94
- | Trigger | Flow |
95
- |---------|------|
96
- | Code review | `/ce:review` -> Findings -> `/systematic:todo-triage` -> Todos |
97
- | Autonomous review | `/ce:review mode:autofix` -> Residual todos -> `/systematic:todo-resolve` |
98
- | Code TODOs | `/systematic:todo-resolve` -> Fixes + Complex todos |
99
- | Planning | Brainstorm -> Create todo -> Work -> Complete |
100
-
101
- ## Key Distinction
102
-
103
- This skill manages **durable, cross-session work items** persisted as markdown files. For temporary in-session step tracking, use platform task tools (`todowrite`/`TaskUpdate` in OpenCode, `update_plan` in Codex) instead.
104
-
105
- ---
106
-
107
- ## Todo Template
108
-
109
- @./assets/todo-template.md
@@ -1,68 +0,0 @@
1
- ---
2
- name: todo-resolve
3
- description: Use when batch-resolving approved todos, especially after code review or triage sessions
4
- argument-hint: "[optional: specific todo ID or pattern]"
5
- ---
6
-
7
- Resolve approved todos using parallel processing, document lessons learned, then clean up.
8
-
9
- Only `ready` todos are resolved. `pending` todos are skipped — they haven't been triaged yet. If pending todos exist, list them at the end so the user knows what was left behind.
10
-
11
- ## Workflow
12
-
13
- ### 1. Analyze
14
-
15
- Scan `.context/systematic/todos/*.md` and legacy `todos/*.md`. Partition by status:
16
-
17
- - **`ready`** (status field or `-ready-` in filename): resolve these.
18
- - **`pending`**: skip. Report them at the end.
19
- - **`complete`**: ignore, already done.
20
-
21
- If a specific todo ID or pattern was passed as an argument, filter to matching todos only (still must be `ready`).
22
-
23
- Residual actionable work from `ce:review mode:autofix` after its `safe_auto` pass will already be `ready`.
24
-
25
- Skip any todo that recommends deleting, removing, or gitignoring files in `docs/brainstorms/`, `docs/plans/`, or `docs/solutions/` — these are intentional pipeline artifacts.
26
-
27
- ### 2. Plan
28
-
29
- Create a task list grouped by type (e.g., `todowrite` in OpenCode, `update_plan` in Codex). Analyze dependencies -- items that others depend on run first. Output a mermaid diagram showing execution order and parallelism.
30
-
31
- ### 3. Implement (PARALLEL)
32
-
33
- Spawn a `systematic:workflow:pr-comment-resolver` agent per item. Prefer parallel; fall back to sequential respecting dependency order.
34
-
35
- **Batching:** 1-4 items: direct parallel returns. 5+ items: batches of 4, each returning only a short status summary (todo handled, files changed, tests run/skipped, blockers).
36
-
37
- For large sets, use a scratch directory at `.context/systematic/todo-resolve/<run-id>/` for per-resolver artifacts. Return only completion summaries to parent.
38
-
39
- ### 4. Commit & Resolve
40
-
41
- Commit changes, mark todos resolved, push to remote.
42
-
43
- GATE: STOP. Verify todos resolved and changes committed before proceeding.
44
-
45
- ### 5. Compound on Lessons Learned
46
-
47
- Load the `ce:compound` skill to document what was learned. Todo resolutions often surface patterns and architectural insights worth capturing.
48
-
49
- GATE: STOP. Verify the compound skill produced a solution document in `docs/solutions/`. If none (user declined or no learnings), continue.
50
-
51
- ### 6. Clean Up
52
-
53
- Delete completed/resolved todo files from both paths. If a scratch directory was created at `.context/systematic/todo-resolve/<run-id>/`, delete it (unless user asked to inspect).
54
-
55
- ```
56
- Todos resolved: [count]
57
- Pending (skipped): [count, or "none"]
58
- Lessons documented: [path to solution doc, or "skipped"]
59
- Todos cleaned up: [count deleted]
60
- ```
61
-
62
- If pending todos were skipped, list them:
63
-
64
- ```
65
- Skipped pending todos (run `/systematic:todo-triage` to approve):
66
- - 003-pending-p2-missing-index.md
67
- - 005-pending-p3-rename-variable.md
68
- ```
@@ -1,70 +0,0 @@
1
- ---
2
- name: todo-triage
3
- description: Use when reviewing pending todos for approval, prioritizing code review findings, or interactively categorizing work items
4
- argument-hint: "[findings list or source type]"
5
- disable-model-invocation: true
6
- ---
7
-
8
- # Todo Triage
9
-
10
- Interactive workflow for reviewing pending todos one by one and deciding whether to approve, skip, or modify each.
11
-
12
- **Do not write code during triage.** This is purely for review and prioritization -- implementation happens in `/systematic:todo-resolve`.
13
-
14
- - First set the /model to Haiku
15
- - Read all pending todos from `.context/systematic/todos/` and legacy `todos/` directories
16
-
17
- ## Workflow
18
-
19
- ### 1. Present Each Finding
20
-
21
- For each pending todo, present it clearly with severity, category, description, location, problem scenario, proposed solution, and effort estimate. Then ask:
22
-
23
- ```
24
- Do you want to add this to the todo list?
25
- 1. yes - approve and mark ready
26
- 2. next - skip (deletes the todo file)
27
- 3. custom - modify before approving
28
- ```
29
-
30
- Use severity levels: 🔴 P1 (CRITICAL), 🟡 P2 (IMPORTANT), 🔵 P3 (NICE-TO-HAVE).
31
-
32
- Include progress tracking in each header: `Progress: 3/10 completed`
33
-
34
- ### 2. Handle Decision
35
-
36
- **yes:** Rename file from `pending` -> `ready` in both filename and frontmatter. Fill the Recommended Action section. If creating a new todo (not updating existing), use the naming convention from the `todo-create` skill.
37
-
38
- Priority mapping: 🔴 P1 -> `p1`, 🟡 P2 -> `p2`, 🔵 P3 -> `p3`
39
-
40
- Confirm: "✅ Approved: `{filename}` (Issue #{issue_id}) - Status: **ready**"
41
-
42
- **next:** Delete the todo file. Log as skipped for the final summary.
43
-
44
- **custom:** Ask what to modify, update, re-present, ask again.
45
-
46
- ### 3. Final Summary
47
-
48
- After all items processed:
49
-
50
- ```markdown
51
- ## Triage Complete
52
-
53
- **Total Items:** [X] | **Approved (ready):** [Y] | **Skipped:** [Z]
54
-
55
- ### Approved Todos (Ready for Work):
56
- - `042-ready-p1-transaction-boundaries.md` - Transaction boundary issue
57
-
58
- ### Skipped (Deleted):
59
- - Item #5: [reason]
60
- ```
61
-
62
- ### 4. Next Steps
63
-
64
- ```markdown
65
- What would you like to do next?
66
-
67
- 1. run `/systematic:todo-resolve` to resolve the todos
68
- 2. commit the todos
69
- 3. nothing, go chill
70
- ```
@@ -1,119 +0,0 @@
1
- ---
2
- name: writing-systematic-skills
3
- description: Use when creating, editing, auditing, or fixing bundled Systematic skills, especially when authoring SKILL.md files, adding skill reference files, resolving content-integrity frontmatter failures, or deciding which Systematic conventions apply beyond the general writing-skills guidance.
4
- ---
5
-
6
- # Writing Systematic Skills
7
-
8
- Systematic skills are OpenCode-native workflow assets. Use this skill after loading the general `writing-skills` foundation; this file only covers the Systematic-specific delta.
9
-
10
- ## When To Use
11
-
12
- Use this skill when you are:
13
-
14
- - Creating a new bundled skill under `skills/`
15
- - Editing an existing bundled skill's frontmatter or file layout
16
- - Fixing content-integrity frontmatter or sub-file failures
17
- - Deciding whether a skill needs references, scripts, assets, or templates
18
- - Auditing bundled skills for provider-portable defaults
19
-
20
- Load `writing-skills` first (bundled). This skill covers the Systematic delta.
21
-
22
- ## Foundation
23
-
24
- `writing-skills` supplies the authoring discipline: pressure scenarios, clear trigger-oriented descriptions, concise bodies, and reference files only when depth earns its keep.
25
-
26
- Systematic adds repository-specific constraints:
27
-
28
- - Runtime-recognized frontmatter fields are fixed by the skill loader.
29
- - Skill sub-files live in a small set of conventional directories.
30
- - Bundled agents omit the `model` field; subagents inherit the invoking primary agent's model.
31
- - Content-integrity enforces the mechanical parts in CI.
32
-
33
- For worked examples and judgment calls, read `references/foundation-conventions.md`.
34
-
35
- ## Frontmatter Rules
36
-
37
- Every bundled skill must have YAML frontmatter with:
38
-
39
- - `name` - unprefixed skill identifier. The loader adds the `systematic:` command prefix automatically unless the skill intentionally belongs to another namespace such as `ce:`.
40
- - `description` - third-person trigger conditions. Prefer `Use when...`; describe when to load the skill, not its internal workflow.
41
-
42
- Optional fields are allowed only when the runtime loader recognizes them:
43
-
44
- | Field | Use |
45
- |---|---|
46
- | `argument-hint` | Shows expected invocation arguments. |
47
- | `disable-model-invocation` | Prevents direct model invocation for dispatcher-style skills. |
48
- | `allowed-tools` | Declares tool constraints for skill execution. |
49
- | `license` | Carries skill licensing metadata. |
50
- | `compatibility` | Notes platform or version compatibility. |
51
- | `metadata` | String-only metadata map. |
52
- | `user-invocable` | Marks whether users should invoke the skill directly. |
53
- | `agent` | Selects a companion agent when the loader supports it. |
54
- | `model` | Selects a model for skill execution when justified. |
55
- | `context` | Use `fork` when the skill should run in forked subtask context. |
56
- | `subtask` | Explicit forked-subtask marker recognized by the runtime. |
57
-
58
- `preconditions` is banned. It has no runtime consumer. Put prerequisite guidance in the skill body instead.
59
-
60
- ## File Layout
61
-
62
- The required entry point is:
63
-
64
- ```text
65
- skills/<skill-name>/SKILL.md
66
- ```
67
-
68
- Optional sub-files must live under one of these directories:
69
-
70
- - `references/` - deeper guidance, decision tables, long examples, or API notes
71
- - `scripts/` - executable helpers an agent can run
72
- - `assets/` - static files used by the skill
73
- - `templates/` - reusable stubs or document templates
74
-
75
- Keep the main `SKILL.md` small enough to decide whether and how to proceed. Move heavy detail to `references/`, and cite it with a repo-local path such as `references/foundation-conventions.md` so the sub-file integrity gate can verify it exists.
76
-
77
- ## Identity Defaults
78
-
79
- Bundled agents must omit the `model` field entirely:
80
-
81
- ```yaml
82
- ---
83
- name: example-agent
84
- description: ...
85
- # no `model:` line
86
- ---
87
- ```
88
-
89
- Per [OpenCode's agent docs](https://opencode.ai/docs/agents/), subagents with no `model` inherit the model of the primary agent that invoked them — which is the desired portable behavior. Do **not** declare `model: inherit`: that literal value is undocumented and produces `ProviderModelNotFoundError` on OpenCode older than ~v1.13.x (pre [sst/opencode#17888](https://github.com/sst/opencode/pull/17888)). Hardcoded provider model IDs (`anthropic/...`, `openai/...`, etc.) are also banned from **bundled agent markdown/frontmatter** because they break users on other providers. Source-owned category model defaults in TypeScript code are a separate mechanism — they are audited, centrally maintained, and do not violate this markdown rule.
90
-
91
- For agent or API attribution, `ai:systematic` is the machine ID used by Systematic-owned operations, such as Proof's `by` field and `X-Agent-Id` header. It is not a skill cross-reference convention.
92
-
93
- ## Validator
94
-
95
- Run the content-integrity gate before shipping skill changes:
96
-
97
- ```bash
98
- bun 'scripts/content-integrity.ts'
99
- ```
100
-
101
- The gate checks:
102
-
103
- - Skill frontmatter is present and uses only runtime-recognized fields.
104
- - Required `name` and `description` fields are non-empty.
105
- - Banned frontmatter such as `preconditions` is absent.
106
- - Bundled agents omit the `model` field.
107
- - Skill references to `references/`, `scripts/`, `assets/`, and `templates/` resolve on disk.
108
-
109
- If the gate fails, fix the content rather than broadening the validator unless the runtime loader contract has actually changed.
110
-
111
- ## Common Mistakes
112
-
113
- | Mistake | Fix |
114
- |---|---|
115
- | Adding a new frontmatter field because it reads well | Add body prose instead, unless the runtime loader consumes the field. |
116
- | Summarizing the whole workflow in `description` | Describe trigger conditions only. |
117
- | Adding any `model` field to a bundled agent | Omit the field; subagents inherit from the invoking primary agent. |
118
- | Linking to a non-existent reference file | Create the file or remove the link. |
119
- | Duplicating the general writing-skills guidance | Link to the foundation and document only the Systematic delta. |