@fro.bot/systematic 2.33.3 → 3.0.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.
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
@@ -32,9 +32,8 @@ Wait for both to complete before continuing.
32
32
 
33
33
  ## Finalize Phase
34
34
 
35
- 8. `/systematic:todo-resolve` — resolve findings, compound on learnings, clean up completed todos
36
- 9. `/systematic:feature-video` record the final walkthrough and add to PR
37
- 10. Output `<promise>DONE</promise>` when video is in PR
35
+ 8. `/systematic:todos` (resolve) — resolve findings, compound on learnings, clean up completed todos
36
+ 9. Output `<promise>DONE</promise>` when work is complete
38
37
 
39
38
  Start with step 1 now.
40
39
 
@@ -221,12 +221,12 @@ When a test fails:
221
221
 
222
222
  How to proceed?
223
223
  1. Fix now - I'll help debug and fix
224
- 2. Create todo - Add a todo for later (using the todo-create skill)
224
+ 2. Create todo - Add a todo for later (using the todos skill, Create section)
225
225
  3. Skip - Continue testing other pages
226
226
  ```
227
227
 
228
228
  3. **If "Fix now":** investigate, propose a fix, apply, re-run the failing test
229
- 4. **If "Create todo":** load the `todo-create` skill and create a todo with priority p1 and description `browser-test-{description}`, continue
229
+ 4. **If "Create todo":** load the `todos` skill (Create section) and create a todo with priority p1 and description `browser-test-{description}`, continue
230
230
  5. **If "Skip":** log as skipped, continue
231
231
 
232
232
  ### 10. Test Summary
@@ -0,0 +1,239 @@
1
+ ---
2
+ name: todos
3
+ description: Use when creating durable work items, managing todo lifecycle, or tracking findings across sessions in the file-based todo system; when reviewing pending todos for approval, prioritizing code review findings, or interactively categorizing work items; or when batch-resolving approved todos, especially after code review or triage sessions
4
+ argument-hint: "[create|triage|resolve] [optional: findings list, source type, or specific todo ID/pattern]"
5
+ disable-model-invocation: true
6
+ ---
7
+
8
+ # File-Based Todo Tracking
9
+
10
+ ## Overview
11
+
12
+ 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. This skill covers the full lifecycle in three sections: **Create** (new todos), **Triage** (review pending todos for approval), and **Resolve** (batch-implement approved todos).
13
+
14
+ > **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.
15
+
16
+ ## Directory Paths
17
+
18
+ | Purpose | Path |
19
+ |---------|------|
20
+ | **Canonical (write here)** | `.context/systematic/todos/` |
21
+ | **Legacy (read-only)** | `todos/` |
22
+
23
+ ## File Naming Convention
24
+
25
+ ```
26
+ {issue_id}-{status}-{priority}-{description}.md
27
+ ```
28
+
29
+ - **issue_id**: Sequential number (001, 002, ...) -- never reused
30
+ - **status**: `pending` | `ready` | `complete`
31
+ - **priority**: `p1` (critical) | `p2` (important) | `p3` (nice-to-have)
32
+ - **description**: kebab-case, brief
33
+
34
+ **Example:** `002-ready-p1-fix-n-plus-1.md`
35
+
36
+ ## File Structure
37
+
38
+ Each todo has YAML frontmatter and structured sections. Use the todo template included below when creating new todos.
39
+
40
+ ```yaml
41
+ ---
42
+ status: ready
43
+ priority: p1
44
+ issue_id: "002"
45
+ tags: [rails, performance]
46
+ dependencies: ["001"] # Issue IDs this is blocked by
47
+ ---
48
+ ```
49
+
50
+ **Required sections:** Problem Statement, Findings, Proposed Solutions, Recommended Action (filled during triage), Acceptance Criteria, Work Log.
51
+
52
+ **Optional sections:** Technical Details, Resources, Notes.
53
+
54
+ ## Integration with Workflows
55
+
56
+ | Trigger | Flow |
57
+ |---------|------|
58
+ | Code review | `/ce:review` -> Findings -> `/systematic:todos` (Triage section) -> Todos |
59
+ | Autonomous review | `/ce:review mode:autofix` -> Residual todos -> `/systematic:todos` (Resolve section) |
60
+ | Code TODOs | `/systematic:todos` (Resolve section) -> Fixes + Complex todos |
61
+ | Planning | Brainstorm -> Create todo -> Work -> Complete |
62
+
63
+ ## Key Distinction
64
+
65
+ 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.
66
+
67
+ > **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`).
68
+
69
+ ---
70
+
71
+ ## Create
72
+
73
+ ### Creating a New Todo
74
+
75
+ 1. `mkdir -p .context/systematic/todos/`
76
+ 2. Search both paths for `[0-9]*-*.md`, find the highest numeric prefix, increment, zero-pad to 3 digits.
77
+ 3. Use the todo template included below, write to canonical path as `{NEXT_ID}-pending-{priority}-{description}.md`.
78
+ 4. Fill Problem Statement, Findings, Proposed Solutions, Acceptance Criteria, and initial Work Log entry.
79
+ 5. Set status: `pending` (needs triage) or `ready` (pre-approved).
80
+
81
+ **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.
82
+
83
+ ### Triaging Pending Items
84
+
85
+ 1. Glob `*-pending-*.md` in both paths.
86
+ 2. Review each todo's Problem Statement, Findings, and Proposed Solutions.
87
+ 3. Approve: rename `pending` -> `ready` in filename and frontmatter, fill Recommended Action.
88
+ 4. Defer: leave as `pending`.
89
+
90
+ See the Triage section below for an interactive approval workflow.
91
+
92
+ ### Managing Dependencies
93
+
94
+ ```yaml
95
+ dependencies: ["002", "005"] # Blocked by these issues
96
+ dependencies: [] # No blockers
97
+ ```
98
+
99
+ To check blockers: search for `{dep_id}-complete-*.md` in both paths. Missing matches = incomplete blockers.
100
+
101
+ ### Completing a Todo
102
+
103
+ 1. Verify all acceptance criteria.
104
+ 2. Update Work Log with final session.
105
+ 3. Rename `ready` -> `complete` in filename and frontmatter.
106
+ 4. Check for unblocked work: search for files containing `dependencies:.*"{issue_id}"`.
107
+
108
+ ### Todo Template
109
+
110
+ @./assets/todo-template.md
111
+
112
+ ---
113
+
114
+ ## Triage
115
+
116
+ Interactive workflow for reviewing pending todos one by one and deciding whether to approve, skip, or modify each.
117
+
118
+ **Do not write code during triage.** This is purely for review and prioritization -- implementation happens in the Resolve section below.
119
+
120
+ - First set the /model to Haiku
121
+ - Read all pending todos from `.context/systematic/todos/` and legacy `todos/` directories
122
+
123
+ ### 1. Present Each Finding
124
+
125
+ For each pending todo, present it clearly with severity, category, description, location, problem scenario, proposed solution, and effort estimate. Then ask:
126
+
127
+ ```
128
+ Do you want to add this to the todo list?
129
+ 1. yes - approve and mark ready
130
+ 2. next - skip (deletes the todo file)
131
+ 3. custom - modify before approving
132
+ ```
133
+
134
+ Use severity levels: 🔴 P1 (CRITICAL), 🟡 P2 (IMPORTANT), 🔵 P3 (NICE-TO-HAVE).
135
+
136
+ Include progress tracking in each header: `Progress: 3/10 completed`
137
+
138
+ ### 2. Handle Decision
139
+
140
+ **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 Create section above.
141
+
142
+ Priority mapping: 🔴 P1 -> `p1`, 🟡 P2 -> `p2`, 🔵 P3 -> `p3`
143
+
144
+ Confirm: "✅ Approved: `{filename}` (Issue #{issue_id}) - Status: **ready**"
145
+
146
+ **next:** Delete the todo file. Log as skipped for the final summary.
147
+
148
+ **custom:** Ask what to modify, update, re-present, ask again.
149
+
150
+ ### 3. Final Summary
151
+
152
+ After all items processed:
153
+
154
+ ```markdown
155
+ ## Triage Complete
156
+
157
+ **Total Items:** [X] | **Approved (ready):** [Y] | **Skipped:** [Z]
158
+
159
+ ### Approved Todos (Ready for Work):
160
+ - `042-ready-p1-transaction-boundaries.md` - Transaction boundary issue
161
+
162
+ ### Skipped (Deleted):
163
+ - Item #5: [reason]
164
+ ```
165
+
166
+ ### 4. Next Steps
167
+
168
+ ```markdown
169
+ What would you like to do next?
170
+
171
+ 1. proceed to the Resolve section below to resolve the todos
172
+ 2. commit the todos
173
+ 3. nothing, go chill
174
+ ```
175
+
176
+ ---
177
+
178
+ ## Resolve
179
+
180
+ Resolve approved todos using parallel processing, document lessons learned, then clean up.
181
+
182
+ 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.
183
+
184
+ ### 1. Analyze
185
+
186
+ Scan `.context/systematic/todos/*.md` and legacy `todos/*.md`. Partition by status:
187
+
188
+ - **`ready`** (status field or `-ready-` in filename): resolve these.
189
+ - **`pending`**: skip. Report them at the end.
190
+ - **`complete`**: ignore, already done.
191
+
192
+ If a specific todo ID or pattern was passed as an argument, filter to matching todos only (still must be `ready`).
193
+
194
+ Residual actionable work from `ce:review mode:autofix` after its `safe_auto` pass will already be `ready`.
195
+
196
+ Skip any todo that recommends deleting, removing, or gitignoring files in `docs/brainstorms/`, `docs/plans/`, or `docs/solutions/` — these are intentional pipeline artifacts.
197
+
198
+ ### 2. Plan
199
+
200
+ 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.
201
+
202
+ ### 3. Implement (PARALLEL)
203
+
204
+ Spawn a `systematic:workflow:pr-comment-resolver` agent per item. Prefer parallel; fall back to sequential respecting dependency order.
205
+
206
+ **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).
207
+
208
+ For large sets, use a scratch directory at `.context/systematic/todo-resolve/<run-id>/` for per-resolver artifacts. Return only completion summaries to parent.
209
+
210
+ ### 4. Commit & Resolve
211
+
212
+ Commit changes, mark todos resolved, push to remote.
213
+
214
+ GATE: STOP. Verify todos resolved and changes committed before proceeding.
215
+
216
+ ### 5. Compound on Lessons Learned
217
+
218
+ Load the `ce:compound` skill to document what was learned. Todo resolutions often surface patterns and architectural insights worth capturing.
219
+
220
+ GATE: STOP. Verify the compound skill produced a solution document in `docs/solutions/`. If none (user declined or no learnings), continue.
221
+
222
+ ### 6. Clean Up
223
+
224
+ 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).
225
+
226
+ ```
227
+ Todos resolved: [count]
228
+ Pending (skipped): [count, or "none"]
229
+ Lessons documented: [path to solution doc, or "skipped"]
230
+ Todos cleaned up: [count deleted]
231
+ ```
232
+
233
+ If pending todos were skipped, list them:
234
+
235
+ ```
236
+ Skipped pending todos (proceed to the Triage section above to approve):
237
+ - 003-pending-p2-missing-index.md
238
+ - 005-pending-p3-rename-variable.md
239
+ ```
@@ -596,7 +596,7 @@ Deploying untested skills = deploying untested code. It's a violation of quality
596
596
 
597
597
  ## Skill Creation Checklist (TDD Adapted)
598
598
 
599
- **IMPORTANT: Use TodoWrite to create todos for EACH checklist item below.**
599
+ **IMPORTANT: Use todowrite to create todos for EACH checklist item below.**
600
600
 
601
601
  **RED Phase - Write Failing Test:**
602
602
  - [ ] Create pressure scenarios (3+ combined pressures for discipline skills)
@@ -645,6 +645,107 @@ How future Claude finds your skill:
645
645
 
646
646
  **Optimize for this flow** - put searchable terms early and often.
647
647
 
648
+ ## Systematic Bundled Skills
649
+
650
+ Skills that live under this repo's `skills/` directory follow this skill's authoring discipline (pressure scenarios, trigger-oriented descriptions, concise bodies, references only when depth earns its keep) plus a Systematic-specific delta covering runtime frontmatter contracts, file layout, and identity defaults. This section is that delta.
651
+
652
+ ### When To Use
653
+
654
+ Use this section when you are:
655
+
656
+ - Creating a new bundled skill under `skills/`
657
+ - Editing an existing bundled skill's frontmatter or file layout
658
+ - Fixing content-integrity frontmatter or sub-file failures
659
+ - Deciding whether a skill needs references, scripts, assets, or templates
660
+ - Auditing bundled skills for provider-portable defaults
661
+
662
+ For worked examples and judgment calls, read `references/foundation-conventions.md`.
663
+
664
+ ### Frontmatter Rules
665
+
666
+ Every bundled skill must have YAML frontmatter with:
667
+
668
+ - `name` - unprefixed skill identifier. The loader adds the `systematic:` command prefix automatically unless the skill intentionally belongs to another namespace such as `ce:`.
669
+ - `description` - third-person trigger conditions. Prefer `Use when...`; describe when to load the skill, not its internal workflow.
670
+
671
+ Optional fields are allowed only when the runtime loader recognizes them:
672
+
673
+ | Field | Use |
674
+ |---|---|
675
+ | `argument-hint` | Shows expected invocation arguments. |
676
+ | `disable-model-invocation` | Prevents direct model invocation for dispatcher-style skills. |
677
+ | `allowed-tools` | Declares tool constraints for skill execution. |
678
+ | `license` | Carries skill licensing metadata. |
679
+ | `compatibility` | Notes platform or version compatibility. |
680
+ | `metadata` | String-only metadata map. |
681
+ | `user-invocable` | Marks whether users should invoke the skill directly. |
682
+ | `agent` | Selects a companion agent when the loader supports it. |
683
+ | `model` | Selects a model for skill execution when justified. |
684
+ | `context` | Use `fork` when the skill should run in forked subtask context. |
685
+ | `subtask` | Explicit forked-subtask marker recognized by the runtime. |
686
+
687
+ `preconditions` is banned. It has no runtime consumer. Put prerequisite guidance in the skill body instead.
688
+
689
+ ### File Layout
690
+
691
+ The required entry point is:
692
+
693
+ ```text
694
+ skills/<skill-name>/SKILL.md
695
+ ```
696
+
697
+ Optional sub-files must live under one of these directories:
698
+
699
+ - `references/` - deeper guidance, decision tables, long examples, or API notes
700
+ - `scripts/` - executable helpers an agent can run
701
+ - `assets/` - static files used by the skill
702
+ - `templates/` - reusable stubs or document templates
703
+
704
+ 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.
705
+
706
+ ### Identity Defaults
707
+
708
+ Bundled agents must omit the `model` field entirely:
709
+
710
+ ```yaml
711
+ ---
712
+ name: example-agent
713
+ description: ...
714
+ # no `model:` line
715
+ ---
716
+ ```
717
+
718
+ 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.
719
+
720
+ For agent or API attribution, `ai:systematic` is the machine ID used by Systematic-owned operations, such as a `by` field or `X-Agent-Id` header. It is not a skill cross-reference convention.
721
+
722
+ ### Validator
723
+
724
+ Run the content-integrity gate before shipping skill changes:
725
+
726
+ ```bash
727
+ bun 'scripts/content-integrity.ts'
728
+ ```
729
+
730
+ The gate checks:
731
+
732
+ - Skill frontmatter is present and uses only runtime-recognized fields.
733
+ - Required `name` and `description` fields are non-empty.
734
+ - Banned frontmatter such as `preconditions` is absent.
735
+ - Bundled agents omit the `model` field.
736
+ - Skill references to `references/`, `scripts/`, `assets/`, and `templates/` resolve on disk.
737
+
738
+ If the gate fails, fix the content rather than broadening the validator unless the runtime loader contract has actually changed.
739
+
740
+ ### Common Mistakes (Systematic Bundled Skills)
741
+
742
+ | Mistake | Fix |
743
+ |---|---|
744
+ | Adding a new frontmatter field because it reads well | Add body prose instead, unless the runtime loader consumes the field. |
745
+ | Summarizing the whole workflow in `description` | Describe trigger conditions only. |
746
+ | Adding any `model` field to a bundled agent | Omit the field; subagents inherit from the invoking primary agent. |
747
+ | Linking to a non-existent reference file | Create the file or remove the link. |
748
+
648
749
  ## The Bottom Line
649
750
 
650
751
  **Creating skills IS TDD for process documentation.**
@@ -1,6 +1,6 @@
1
1
  # Foundation Conventions
2
2
 
3
- This reference expands the Systematic-specific rules from `SKILL.md`. The mechanical rules are enforced by `bun scripts/content-integrity.ts`; this file explains the judgment calls behind them.
3
+ This reference expands the Systematic-specific rules from the "Systematic Bundled Skills" section of `SKILL.md`. The mechanical rules are enforced by `bun scripts/content-integrity.ts`; this file explains the judgment calls behind them.
4
4
 
5
5
  ## Frontmatter
6
6
 
@@ -8,8 +8,8 @@ Systematic skill frontmatter mirrors what the runtime loader actually reads. Do
8
8
 
9
9
  | Field | Required | When To Use | Enforcement | Example |
10
10
  |---|---:|---|---|---|
11
- | `name` | Yes | Every skill. Use the unprefixed skill identifier unless another namespace is intentional. | Read + enforced (loader rejects missing/null) | `name: writing-systematic-skills` |
12
- | `description` | Yes | Trigger-oriented discovery text. Third person. Prefer `Use when...`. | Read + enforced (loader rejects missing/null) | `description: Use when fixing bundled skill frontmatter failures...` |
11
+ | `name` | Yes | Every skill. Use the unprefixed skill identifier unless another namespace is intentional. | Read + enforced (loader rejects missing/null) | `name: writing-skills` |
12
+ | `description` | Yes | Trigger-oriented discovery text. Third person. Prefer `Use when...`. | Read + enforced (loader rejects missing/null) | `description: Use when creating new skills, editing existing skills, or verifying skills work before deployment` |
13
13
  | `argument-hint` | No | The skill accepts meaningful invocation arguments. | Read + surfaced to callers | `argument-hint: "[path/to/document.md]"` |
14
14
  | `disable-model-invocation` | No | Dispatcher or routing skills that should not be directly model-invoked. | Read + enforced (loader acts on it) | `disable-model-invocation: true` |
15
15
  | `allowed-tools` | No | The skill needs an explicit tool allowlist. | **Read but not enforced.** `src/lib/skills.ts` parses it into `SkillFrontmatter.allowedTools` and passes it through, but no permission gate in `src/lib` acts on it. OpenCode treats it as metadata, not enforced permissions. Do not rely on this field to restrict tool access. | `allowed-tools: Bash, Read` |
@@ -126,9 +126,9 @@ Systematic provides source-owned category model defaults in TypeScript code for
126
126
 
127
127
  ### Machine ID
128
128
 
129
- `ai:systematic` is a machine identity string for Systematic-owned operations. Proof uses it as the `by` field on operations and the `X-Agent-Id` header. Keep it lowercase and stable.
129
+ `ai:systematic` is a machine identity string for Systematic-owned operations, used as the `by` field on operations and the `X-Agent-Id` header where applicable. Keep it lowercase and stable.
130
130
 
131
- Do not use `ai:systematic` as a skill-reference pattern. Skill and agent references use their own namespaces, such as `systematic:writing-systematic-skills` or `systematic:research:best-practices-researcher`.
131
+ Do not use `ai:systematic` as a skill-reference pattern. Skill and agent references use their own namespaces, such as `systematic:writing-skills` or `systematic:research:best-practices-researcher`.
132
132
 
133
133
  ### Public-Facing Voice
134
134
 
@@ -1,95 +0,0 @@
1
- ---
2
- name: design-implementation-reviewer
3
- description: "Visually compares live UI implementation against Figma designs and provides detailed feedback on discrepancies. Use after writing or modifying HTML/CSS/React components to verify design fidelity."
4
- mode: subagent
5
- temperature: 0.1
6
- ---
7
-
8
- You are an expert UI/UX implementation reviewer specializing in ensuring pixel-perfect fidelity between Figma designs and live implementations. You have deep expertise in visual design principles, CSS, responsive design, and cross-browser compatibility.
9
-
10
- Your primary responsibility is to conduct thorough visual comparisons between implemented UI and Figma designs, providing actionable feedback on discrepancies.
11
-
12
- ## Your Workflow
13
-
14
- 1. **Capture Implementation State**
15
- - Use agent-browser CLI to capture screenshots of the implemented UI
16
- - Test different viewport sizes if the design includes responsive breakpoints
17
- - Capture interactive states (hover, focus, active) when relevant
18
- - Document the URL and selectors of the components being reviewed
19
-
20
- ```bash
21
- agent-browser open [url]
22
- agent-browser snapshot -i
23
- agent-browser screenshot output.png
24
- # For hover states:
25
- agent-browser hover @e1
26
- agent-browser screenshot hover-state.png
27
- ```
28
-
29
- 2. **Retrieve Design Specifications**
30
- - Use the Figma MCP to access the corresponding design files
31
- - Extract design tokens (colors, typography, spacing, shadows)
32
- - Identify component specifications and design system rules
33
- - Note any design annotations or developer handoff notes
34
-
35
- 3. **Conduct Systematic Comparison**
36
- - **Visual Fidelity**: Compare layouts, spacing, alignment, and proportions
37
- - **Typography**: Verify font families, sizes, weights, line heights, and letter spacing
38
- - **Colors**: Check background colors, text colors, borders, and gradients
39
- - **Spacing**: Measure padding, margins, and gaps against design specs
40
- - **Interactive Elements**: Verify button states, form inputs, and animations
41
- - **Responsive Behavior**: Ensure breakpoints match design specifications
42
- - **Accessibility**: Note any WCAG compliance issues visible in the implementation
43
-
44
- 4. **Generate Structured Review**
45
- Structure your review as follows:
46
- ```
47
- ## Design Implementation Review
48
-
49
- ### ✅ Correctly Implemented
50
- - [List elements that match the design perfectly]
51
-
52
- ### ⚠️ Minor Discrepancies
53
- - [Issue]: [Current implementation] vs [Expected from Figma]
54
- - Impact: [Low/Medium]
55
- - Fix: [Specific CSS/code change needed]
56
-
57
- ### ❌ Major Issues
58
- - [Issue]: [Description of significant deviation]
59
- - Impact: High
60
- - Fix: [Detailed correction steps]
61
-
62
- ### 📐 Measurements
63
- - [Component]: Figma: [value] | Implementation: [value]
64
-
65
- ### 💡 Recommendations
66
- - [Suggestions for improving design consistency]
67
- ```
68
-
69
- 5. **Provide Actionable Fixes**
70
- - Include specific CSS properties and values that need adjustment
71
- - Reference design tokens from the design system when applicable
72
- - Suggest code snippets for complex fixes
73
- - Prioritize fixes based on visual impact and user experience
74
-
75
- ## Important Guidelines
76
-
77
- - **Be Precise**: Use exact pixel values, hex codes, and specific CSS properties
78
- - **Consider Context**: Some variations might be intentional (e.g., browser rendering differences)
79
- - **Focus on User Impact**: Prioritize issues that affect usability or brand consistency
80
- - **Account for Technical Constraints**: Recognize when perfect fidelity might not be technically feasible
81
- - **Reference Design System**: When available, cite design system documentation
82
- - **Test Across States**: Don't just review static appearance; consider interactive states
83
-
84
- ## Edge Cases to Consider
85
-
86
- - Browser-specific rendering differences
87
- - Font availability and fallbacks
88
- - Dynamic content that might affect layout
89
- - Animations and transitions not visible in static designs
90
- - Accessibility improvements that might deviate from pure visual design
91
-
92
- When you encounter ambiguity between the design and implementation requirements, clearly note the discrepancy and provide recommendations for both strict design adherence and practical implementation approaches.
93
-
94
- Your goal is to ensure the implementation delivers the intended user experience while maintaining design consistency and technical excellence.
95
-