skills/writing-systematic-skills/SKILL.md
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.
npx skillsauth add marcusrbrown/systematic writing-systematic-skillsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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.
Use this skill when you are:
skills/Load writing-skills first (bundled). This skill covers the Systematic delta.
writing-skills supplies the authoring discipline: pressure scenarios, clear trigger-oriented descriptions, concise bodies, and reference files only when depth earns its keep.
Systematic adds repository-specific constraints:
model field; subagents inherit the invoking primary agent's model.For worked examples and judgment calls, read references/foundation-conventions.md.
Every bundled skill must have YAML frontmatter with:
name - unprefixed skill identifier. The loader adds the systematic: command prefix automatically unless the skill intentionally belongs to another namespace such as ce:.description - third-person trigger conditions. Prefer Use when...; describe when to load the skill, not its internal workflow.Optional fields are allowed only when the runtime loader recognizes them:
| Field | Use |
|---|---|
| argument-hint | Shows expected invocation arguments. |
| disable-model-invocation | Prevents direct model invocation for dispatcher-style skills. |
| allowed-tools | Declares tool constraints for skill execution. |
| license | Carries skill licensing metadata. |
| compatibility | Notes platform or version compatibility. |
| metadata | String-only metadata map. |
| user-invocable | Marks whether users should invoke the skill directly. |
| agent | Selects a companion agent when the loader supports it. |
| model | Selects a model for skill execution when justified. |
| context | Use fork when the skill should run in forked subtask context. |
| subtask | Explicit forked-subtask marker recognized by the runtime. |
preconditions is banned. It has no runtime consumer. Put prerequisite guidance in the skill body instead.
The required entry point is:
skills/<skill-name>/SKILL.md
Optional sub-files must live under one of these directories:
references/ - deeper guidance, decision tables, long examples, or API notesscripts/ - executable helpers an agent can runassets/ - static files used by the skilltemplates/ - reusable stubs or document templatesKeep 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.
Bundled agents must omit the model field entirely:
---
name: example-agent
description: ...
# no `model:` line
---
Per OpenCode's agent docs, 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). 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.
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.
Run the content-integrity gate before shipping skill changes:
bun 'scripts/content-integrity.ts'
The gate checks:
name and description fields are non-empty.preconditions is absent.model field.references/, scripts/, assets/, and templates/ resolve on disk.If the gate fails, fix the content rather than broadening the validator unless the runtime loader contract has actually changed.
| Mistake | Fix |
|---|---|
| Adding a new frontmatter field because it reads well | Add body prose instead, unless the runtime loader consumes the field. |
| Summarizing the whole workflow in description | Describe trigger conditions only. |
| Adding any model field to a bundled agent | Omit the field; subagents inherit from the invoking primary agent. |
| Linking to a non-existent reference file | Create the file or remove the link. |
| Duplicating the general writing-skills guidance | Link to the foundation and document only the Systematic delta. |
development
Use when dispatching parallel or serial subagents in OpenCode, coordinating multi-unit plan execution, synthesizing results from independent subagent runs, or handling subagent failure and retry. Triggers on requests to run tasks in parallel, divide work across subagents, orchestrate a pipeline of dependent steps, or coordinate multiple agents without shared-file conflicts.
testing
Use when creating new skills, editing existing skills, or verifying skills work before deployment
development
Generate or regenerate ONBOARDING.md to help new contributors understand a codebase. Use when the user asks to 'create onboarding docs', 'generate ONBOARDING.md', 'document this project for new developers', 'write onboarding documentation', 'vonboard', 'vonboarding', 'prepare this repo for a new contributor', 'refresh the onboarding doc', or 'update ONBOARDING.md'. Also use when someone needs to onboard a new team member and wants a written artifact, or when a codebase lacks onboarding documentation and the user wants to generate one.
tools
Optimize Claude Code permissions by finding safe Bash commands from session history and auto-applying them to settings.json. Can run from any coding agent but targets Claude Code specifically. Use when experiencing permission fatigue, too many permission prompts, wanting to optimize permissions, or needing to set up allowlists. Triggers on "optimize permissions", "reduce permission prompts", "allowlist commands", "too many permission prompts", "permission fatigue", "permission setup", or complaints about clicking approve too often.