@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.
- package/ATTRIBUTIONS.md +1 -1
- package/agents/design/design-iterator.md +1 -0
- package/agents/research/best-practices-researcher.md +6 -8
- package/agents/review/pattern-recognition-specialist.md +1 -1
- package/agents/workflow/systematic-implementer.md +1 -0
- package/dist/cli.js +348 -53
- package/dist/{index-vyzhzvap.js → index-yskzf7vh.js} +587 -386
- package/dist/index.js +100 -155
- package/dist/lib/agent-overlays.d.ts +0 -1
- package/dist/lib/agent-resolver.d.ts +28 -0
- package/dist/lib/bootstrap.d.ts +8 -1
- package/dist/lib/bundled-names.d.ts +3 -3
- package/dist/lib/pi-delegate-session.d.ts +31 -0
- package/dist/lib/pi-delegate-tool.d.ts +42 -0
- package/dist/lib/removed-names.d.ts +3 -3
- package/dist/lib/setup.d.ts +36 -0
- package/dist/lib/skill-loader.d.ts +1 -2
- package/dist/lib/skill-resolver.d.ts +39 -0
- package/dist/lib/skill-tool.d.ts +2 -11
- package/dist/lib/skills.d.ts +1 -9
- package/dist/lib/source-model-defaults.d.ts +1 -1
- package/dist/pi.d.ts +7 -0
- package/dist/pi.js +3641 -0
- package/dist/schemas/systematic-config.schema.json +47 -242
- package/package.json +29 -6
- package/skills/ce-brainstorm/references/handoff.md +5 -26
- package/skills/ce-brainstorm/references/universal-brainstorming.md +0 -1
- package/skills/ce-compound/SKILL.md +8 -12
- package/skills/ce-ideate/references/post-ideation-workflow.md +21 -85
- package/skills/ce-plan/SKILL.md +6 -6
- package/skills/ce-plan/references/deepening-workflow.md +6 -7
- package/skills/ce-plan/references/plan-handoff.md +1 -17
- package/skills/ce-plan/references/universal-planning.md +0 -4
- package/skills/ce-review/SKILL.md +10 -19
- package/skills/ce-review/references/persona-catalog.md +2 -7
- package/skills/ce-review/references/review-output-template.md +0 -1
- package/skills/ce-work/SKILL.md +1 -1
- package/skills/deepen-plan/SKILL.md +6 -7
- package/skills/document-review/SKILL.md +2 -2
- package/skills/git-commit-push-pr/SKILL.md +1 -2
- package/skills/lfg/SKILL.md +1 -1
- package/skills/onboarding/SKILL.md +1 -12
- package/skills/orchestrating-subagents/SKILL.md +2 -2
- package/skills/slfg/SKILL.md +2 -3
- package/skills/test-browser/SKILL.md +2 -2
- package/skills/todos/SKILL.md +239 -0
- package/skills/writing-skills/SKILL.md +102 -1
- package/skills/{writing-systematic-skills → writing-skills}/references/foundation-conventions.md +5 -5
- package/agents/design/design-implementation-reviewer.md +0 -95
- package/agents/design/figma-design-sync.md +0 -173
- package/agents/docs/ankane-readme-writer.md +0 -51
- package/agents/review/cli-agent-readiness-reviewer.md +0 -418
- package/agents/review/data-integrity-guardian.md +0 -72
- package/agents/review/data-migration-expert.md +0 -99
- package/agents/review/dhh-rails-reviewer.md +0 -46
- package/agents/review/julik-frontend-races-reviewer.md +0 -49
- package/agents/review/kieran-python-reviewer.md +0 -47
- package/agents/review/kieran-rails-reviewer.md +0 -47
- package/agents/review/performance-oracle.md +0 -112
- package/agents/review/schema-drift-detector.md +0 -143
- package/agents/review/security-sentinel.md +0 -95
- package/agents/workflow/lint.md +0 -17
- package/dist/lib/converter.d.ts +0 -14
- package/skills/andrew-kane-gem-writer/SKILL.md +0 -184
- package/skills/andrew-kane-gem-writer/references/database-adapters.md +0 -231
- package/skills/andrew-kane-gem-writer/references/module-organization.md +0 -121
- package/skills/andrew-kane-gem-writer/references/rails-integration.md +0 -183
- package/skills/andrew-kane-gem-writer/references/resources.md +0 -119
- package/skills/andrew-kane-gem-writer/references/testing-patterns.md +0 -261
- package/skills/changelog/SKILL.md +0 -139
- package/skills/claude-permissions-optimizer/SKILL.md +0 -166
- package/skills/claude-permissions-optimizer/scripts/extract-commands.mjs +0 -655
- package/skills/claude-permissions-optimizer/scripts/normalize.mjs +0 -151
- package/skills/dhh-rails-style/SKILL.md +0 -186
- package/skills/dhh-rails-style/references/architecture.md +0 -653
- package/skills/dhh-rails-style/references/controllers.md +0 -303
- package/skills/dhh-rails-style/references/frontend.md +0 -510
- package/skills/dhh-rails-style/references/gems.md +0 -266
- package/skills/dhh-rails-style/references/models.md +0 -359
- package/skills/dhh-rails-style/references/testing.md +0 -338
- package/skills/dspy-ruby/SKILL.md +0 -737
- package/skills/dspy-ruby/assets/config-template.rb +0 -187
- package/skills/dspy-ruby/assets/module-template.rb +0 -300
- package/skills/dspy-ruby/assets/signature-template.rb +0 -221
- package/skills/dspy-ruby/references/core-concepts.md +0 -674
- package/skills/dspy-ruby/references/observability.md +0 -366
- package/skills/dspy-ruby/references/optimization.md +0 -603
- package/skills/dspy-ruby/references/providers.md +0 -418
- package/skills/dspy-ruby/references/toolsets.md +0 -502
- package/skills/every-style-editor/SKILL.md +0 -135
- package/skills/every-style-editor/references/EVERY_WRITE_STYLE.md +0 -529
- package/skills/feature-video/SKILL.md +0 -383
- package/skills/gemini-imagegen/SKILL.md +0 -237
- package/skills/gemini-imagegen/requirements.txt +0 -2
- package/skills/gemini-imagegen/scripts/compose_images.py +0 -157
- package/skills/gemini-imagegen/scripts/edit_image.py +0 -144
- package/skills/gemini-imagegen/scripts/gemini_images.py +0 -263
- package/skills/gemini-imagegen/scripts/generate_image.py +0 -133
- package/skills/gemini-imagegen/scripts/multi_turn_chat.py +0 -216
- package/skills/generate_command/SKILL.md +0 -164
- package/skills/orchestrating-swarms/SKILL.md +0 -1723
- package/skills/proof/SKILL.md +0 -291
- package/skills/proof/references/hitl-review.md +0 -368
- package/skills/rclone/SKILL.md +0 -150
- package/skills/rclone/scripts/check_setup.sh +0 -60
- package/skills/setup/SKILL.md +0 -22
- package/skills/test-xcode/SKILL.md +0 -214
- package/skills/todo-create/SKILL.md +0 -109
- package/skills/todo-resolve/SKILL.md +0 -68
- package/skills/todo-triage/SKILL.md +0 -70
- package/skills/writing-systematic-skills/SKILL.md +0 -119
- /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. |
|
|
File without changes
|