Skip to content

Commit 2e9453a

Browse files
authored
feat(skills): add Systematic skill authoring guardrails (#325)
* feat(skills): add Systematic skill authoring guardrails * fix(plugin): default-export smoke test and harden checkAgentModel - Use the default export in the CI Node.js plugin smoke test so it works with the loader-safe single-export contract on dist/index.js. - Pin the smoke test contract in tests/unit/plugin.test.ts. - Guard parsed.data before reading model in checkAgentModel and add a non-object frontmatter regression test. - Reuse src/lib/frontmatter.ts in docs/scripts/transform-content.ts to remove the duplicate parser.
1 parent c8e6077 commit 2e9453a

29 files changed

Lines changed: 1498 additions & 70 deletions

.github/workflows/main.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ jobs:
4747
run: |
4848
node --input-type=module -e "
4949
const m = await import('./dist/index.js');
50-
const plugin = await m.SystematicPlugin({
50+
const pluginFactory = m.default;
51+
const plugin = await pluginFactory({
5152
client: { app: { log: async () => {} } },
5253
directory: process.cwd()
5354
});

AGENTS.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ systematic/
4646
│ ├── index.ts # Plugin entry (SystematicPlugin)
4747
│ ├── cli.ts # CLI entry (list/convert/config commands)
4848
│ └── lib/ # 12 core modules (see src/lib/AGENTS.md)
49-
├── skills/ # 45 bundled skills (SKILL.md format)
49+
├── skills/ # 46 bundled skills (SKILL.md format)
5050
├── agents/ # 50 bundled agents (6 categories: design/docs/document-review/research/review/workflow)
5151
├── commands/ # Empty (.gitkeep) — commands converted to skills; dir kept for backward compat
5252
├── docs/ # Starlight docs workspace (see docs/AGENTS.md)
@@ -164,4 +164,3 @@ The `commands/` directory contains only `.gitkeep` (all commands converted to sk
164164
- `commands/` dir retained (with `.gitkeep`) for backward compatibility — code paths still support commands
165165
- `registry/` provides OCX component-level installation with omo and standalone profiles
166166
- `.opencode/commands/` has project-only commands: `generate-readme` (README generation)
167-

agents/review/api-contract-reviewer.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
---
22
name: api-contract-reviewer
33
description: Conditional code-review persona, selected when the diff touches API routes, request/response types, serialization, versioning, or exported type signatures. Reviews code for breaking contract changes.
4+
model: inherit
45
tools: Read, Grep, Glob, Bash
56
color: blue
67
mode: subagent
@@ -46,4 +47,3 @@ Return your findings as JSON matching the findings schema. No prose outside the
4647
"testing_gaps": []
4748
}
4849
```
49-

agents/review/correctness-reviewer.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
---
22
name: correctness-reviewer
33
description: Always-on code-review persona. Reviews code for logic errors, edge cases, state management bugs, error propagation failures, and intent-vs-implementation mismatches.
4+
model: inherit
45
tools: Read, Grep, Glob, Bash
56
color: blue
67
mode: subagent
@@ -46,4 +47,3 @@ Return your findings as JSON matching the findings schema. No prose outside the
4647
"testing_gaps": []
4748
}
4849
```
49-

agents/review/data-migrations-reviewer.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
---
22
name: data-migrations-reviewer
33
description: Conditional code-review persona, selected when the diff touches migration files, schema changes, data transformations, or backfill scripts. Reviews code for data integrity and migration safety.
4+
model: inherit
45
tools: Read, Grep, Glob, Bash
56
color: blue
67
mode: subagent
@@ -50,4 +51,3 @@ Return your findings as JSON matching the findings schema. No prose outside the
5051
"testing_gaps": []
5152
}
5253
```
53-

agents/review/dhh-rails-reviewer.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
---
22
name: dhh-rails-reviewer
33
description: Conditional code-review persona, selected when Rails diffs introduce architectural choices, abstractions, or frontend patterns that may fight the framework. Reviews code from an opinionated DHH perspective.
4+
model: inherit
45
tools: Read, Grep, Glob, Bash
56
color: blue
67
mode: subagent
@@ -44,4 +45,3 @@ Return your findings as JSON matching the findings schema. No prose outside the
4445
"testing_gaps": []
4546
}
4647
```
47-

agents/review/julik-frontend-races-reviewer.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
---
22
name: julik-frontend-races-reviewer
33
description: Conditional code-review persona, selected when the diff touches async UI code, Stimulus/Turbo lifecycles, or DOM-timing-sensitive frontend behavior. Reviews code for race conditions and janky UI failure modes.
4+
model: inherit
45
tools: Read, Grep, Glob, Bash
56
color: blue
67
mode: subagent
@@ -47,4 +48,3 @@ Return your findings as JSON matching the findings schema. No prose outside the
4748
```
4849

4950
Discourage the user from pulling in too many dependencies, explaining that the job is to first understand the race conditions, and then pick a tool for removing them. That tool is usually just a dozen lines, if not less - no need to pull in half of NPM for that.
50-

agents/review/kieran-python-reviewer.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
---
22
name: kieran-python-reviewer
33
description: Conditional code-review persona, selected when the diff touches Python code. Reviews changes with Kieran's strict bar for Pythonic clarity, type hints, and maintainability.
4+
model: inherit
45
tools: Read, Grep, Glob, Bash
56
color: blue
67
mode: subagent
@@ -45,4 +46,3 @@ Return your findings as JSON matching the findings schema. No prose outside the
4546
"testing_gaps": []
4647
}
4748
```
48-

agents/review/kieran-rails-reviewer.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
---
22
name: kieran-rails-reviewer
33
description: Conditional code-review persona, selected when the diff touches Rails application code. Reviews Rails changes with Kieran's strict bar for clarity, conventions, and maintainability.
4+
model: inherit
45
tools: Read, Grep, Glob, Bash
56
color: blue
67
mode: subagent
@@ -45,4 +46,3 @@ Return your findings as JSON matching the findings schema. No prose outside the
4546
"testing_gaps": []
4647
}
4748
```
48-

agents/review/kieran-typescript-reviewer.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
---
22
name: kieran-typescript-reviewer
33
description: Conditional code-review persona, selected when the diff touches TypeScript code. Reviews changes with Kieran's strict bar for type safety, clarity, and maintainability.
4+
model: inherit
45
tools: Read, Grep, Glob, Bash
56
color: blue
67
mode: subagent
@@ -45,4 +46,3 @@ Return your findings as JSON matching the findings schema. No prose outside the
4546
"testing_gaps": []
4647
}
4748
```
48-

0 commit comments

Comments
 (0)