Create, test, and optimize OpenCode skills — from first draft to production-grade.
A skill + plugin for OpenCode that brings eval-driven development to AI agent skills — based on Anthropic's official skill-creator for Claude Code, ported to TypeScript and adapted for OpenCode's plugin architecture.
Install · What it does · Plugin tools · Usage · Architecture
Creating AI agent skills is guesswork. You write a skill, test it manually, maybe tweak the description, and hope it triggers correctly. There's no systematic way to measure whether a skill works or to track improvements across iterations.
opencode-skill-creator fixes this with eval-driven development for skills:
Based on Anthropic's proven methodology. Free for everyone. Works with any model OpenCode supports.
Package: https://www.npmjs.com/package/opencode-skill-creator
| If you are... | Use this |
|---|---|
| New to OpenCode / non-developer | Option A (Recommended) |
| Already using other plugins | Option B |
| Setting up all projects on your computer | Option C (Global config) |
| Setting up only one project | Option D (Project config) |
| Cannot use npm / offline environment | Option E (Manual install) |
Run one command (global install, recommended):
npx opencode-skill-creator install --global
Optional checks:
npx opencode-skill-creator --version
npx opencode-skill-creator --help
npx opencode-skill-creator --about
What this command does:
~/.config/opencode/opencode.jsonc when present; otherwise creates/updates opencode.json"opencode-skill-creator" to the plugin arrayThen:
Create a skill that helps with Docker compose filesThat's it.
Manual equivalent for the same result:
~/.config/opencode/opencode.jsonc or ~/.config/opencode/opencode.json{
"plugin": ["opencode-skill-creator"]
}
If you want project-only install instead, use:
npx opencode-skill-creator install --project
If your file already has plugins, append this package to the list:
{
"plugin": [
"your-existing-plugin",
"opencode-skill-creator"
]
}
Do not remove your existing plugins.
Use global config when you want this plugin available everywhere.
Command version:
npx opencode-skill-creator install --global
~/.config/opencode/opencode.jsonc or ~/.config/opencode/opencode.json{
"plugin": ["opencode-skill-creator"]
}
Use project config when you want this plugin only for one repo.
Command version:
npx opencode-skill-creator install --project
opencode.jsonc or opencode.json in that project root{
"plugin": ["opencode-skill-creator"]
}
git clone https://github.com/antongulin/opencode-skill-creator.git
cd opencode-skill-creator
# Install the skill (global)
cp -r opencode-skill-creator/ ~/.config/opencode/skills/opencode-skill-creator/
# Install the plugin (global)
cp -r plugin/ ~/.config/opencode/plugins/skill-creator/
Then create ~/.config/opencode/package.json if needed:
{
"dependencies": {
"@opencode-ai/plugin": ">=1.0.0"
}
}
After you add opencode-skill-creator and restart OpenCode:
dist/skill-creator.js.~/.config/opencode/skills/opencode-skill-creator/.Check that the skill file exists:
ls ~/.config/opencode/skills/opencode-skill-creator/SKILL.md
Then ask OpenCode:
Use opencode-skill-creator to create a skill that helps with API documentation.
You should see it use the opencode-skill-creator workflow/tools.
skill-creator folderEarlier versions installed the bundled skill as the generic skill-creator skill. That could conflict with other plugins, including Superpowers, that also provide a skill with the same name.
Current versions install the bundled skill as opencode-skill-creator instead. On startup, if the plugin finds an old plugin-owned folder at ~/.config/opencode/skills/skill-creator/, it moves that folder to an inactive backup such as:
~/.config/opencode/skills/skill-creator.opencode-skill-creator-backup-YYYYMMDDTHHMMSS/
The backup preserves user files and renames SKILL.md to SKILL.md.backup so OpenCode will not keep loading the old generic skill. If the old skill-creator folder does not contain the plugin's .opencode-skill-creator-version marker, the plugin leaves it untouched because it may belong to another plugin or a manually installed skill.
I don't have opencode.jsonc/opencode.json: create one in project root (or use global config path).Nothing changed after edit: fully restart OpenCode.I already had plugins: keep them; just add opencode-skill-creator to the same array.I want a clean reinstall: delete ~/.config/opencode/skills/opencode-skill-creator/ and restart OpenCode.I still see another skill-creator skill: if ~/.config/opencode/skills/skill-creator/ has no .opencode-skill-creator-version marker, it is not managed by this plugin and must be reviewed separately.npx command failed: run npx opencode-skill-creator --help and then use install or install --global.{ "plugin": ["opencode-skill-creator"] }
When loaded, this skill guides OpenCode through the full skill development lifecycle:
The plugin registers these custom tools that OpenCode can call:
| Tool | Purpose |
|---|---|
skill_validate |
Validate SKILL.md structure and frontmatter |
skill_parse |
Parse SKILL.md and extract name/description |
skill_eval |
Test trigger accuracy for eval queries |
skill_improve_description |
LLM-powered description improvement |
skill_optimize_loop |
Full eval→improve optimization loop |
skill_aggregate_benchmark |
Aggregate grading results into statistics |
skill_generate_report |
Generate HTML optimization report |
skill_serve_review |
Start the eval review viewer (HTTP server) |
skill_stop_review |
Stop a running review server |
skill_export_static_review |
Generate standalone HTML review file |
The most impactful feature for skill quality. It treats skill descriptions as a search problem:
The review launch tools enforce paired comparison data by default:
skill_serve_review and skill_export_static_review require each eval-* directory to include:with_skillwithout_skill or old_skill)allowPartial: true.benchmarkPath is omitted, the tools auto-generate benchmark.json and benchmark.md in the workspace.When creating new skills, use a staging path in the system temp directory outside your current repository:
/tmp/opencode-skills/<skill-name>/ (or $TMPDIR/opencode-skills/<skill-name>/)/tmp/opencode-skills/<skill-name>-workspace/%TEMP%\opencode-skills\<skill-name>\ and %TEMP%\opencode-skills\<skill-name>-workspace\.opencode/skills/<skill-name>/~/.config/opencode/skills/<skill-name>/This keeps plugin/source repositories clean while preserving the full eval loop.
Once installed, OpenCode will automatically detect the skill when you ask it to create or improve a skill. For example:
OpenCode will load the opencode-skill-creator instructions and use the plugin tools to walk through the full workflow.
The fastest way to see the workflow end to end: start with the Docker Compose helper example. It includes a small complete skill, a trigger eval set in the exact skill_eval JSON format, and copy-pasteable prompts for skill_eval, skill_optimize_loop, and benchmark review.
Use it after install to see how description evals work before creating your own skill.
This project has two components:
| Component | What it is |
|---|---|
| Skill | Markdown instructions (SKILL.md + agents + templates) that tell the agent how to create, evaluate, and improve skills |
| Plugin | TypeScript module that registers custom tools for validation, eval, benchmarking, and review |
The skill provides the workflow knowledge; the plugin provides the executable tools the agent calls during that workflow.
On first startup, the plugin automatically copies the bundled skill files to ~/.config/opencode/skills/opencode-skill-creator/. If you need to reinstall the skill (e.g., after an update), delete that directory and restart OpenCode.
opencode-skill-creator/
├── README.md
├── LICENSE # Apache 2.0
├── opencode-skill-creator/ # The SKILL
│ ├── SKILL.md # Main skill instructions
│ ├── agents/
│ │ ├── grader.md # Assertion evaluation
│ │ ├── analyzer.md # Benchmark analysis
│ │ └── comparator.md # Blind A/B comparison
│ ├── references/
│ │ └── schemas.md # JSON schema definitions
│ └── templates/
│ └── eval-review.html # Eval set review/edit UI
└── plugin/ # The PLUGIN (npm: opencode-skill-creator)
├── package.json # npm package metadata
├── skill-creator.ts # Entry point — registers all tools
├── skill/ # Bundled copy of skill (auto-installed)
├── lib/
│ ├── utils.ts # SKILL.md frontmatter parsing
│ ├── validate.ts # Skill structure validation
│ ├── run-eval.ts # Trigger evaluation via opencode run
│ ├── improve-description.ts # LLM-powered description improvement
│ ├── run-loop.ts # Eval→improve optimization loop
│ ├── aggregate.ts # Benchmark aggregation
│ ├── report.ts # HTML report generation
│ └── review-server.ts # Eval review HTTP server
└── templates/
└── viewer.html # Eval review viewer UI
| Area | Anthropic (Claude Code) | This repo (OpenCode) |
|---|---|---|
| CLI invocation | claude -p "prompt" |
opencode run "prompt" |
| Skill location | .claude/commands/ |
.opencode/skills/ |
| Automation scripts | Python (scripts/*.py) |
TypeScript plugin (plugin/lib/*.ts) |
| Script execution | python -m scripts.run_loop |
skill_optimize_loop tool call |
| Eval viewer | `python g |
$ claude mcp add opencode-skill-creator \
-- python -m otcore.mcp_server <graph>