Customization
How to extend the framework.
Editing Existing Skills
Skills are Markdown files in the skills/ directory. Edit them directly.
skills/
├── your-skill/
│ ├── SKILL.md # Skill index (≤250 lines)
│ └── guides/
│ └── GUIDE.md # Detailed guide (loaded on-demand)
Creating New Skills
Create a new directory in skills/ with a SKILL.md file.
---
name: my-new-skill
description: >
What this skill does. When to activate it.
---
# My New Skill
## When to Use
Use when: [specific trigger condition].
## Process
1. Step one
2. Step two
3. Step three
## Output
What the skill produces.
Adding Guides
For detailed content that exceeds 250 lines, create guides in the guides/ subdirectory.
skills/my-skill/
├── SKILL.md
└── guides/
├── DETAILED-GUIDE.md
└── REFERENCE-GUIDE.md
Configuring Enforcement
Runtime hook controls via environment variables.
| Variable | Values | Effect |
|---|---|---|
SKILLS_HOOK_LEVEL | minimal, standard, strict | Controls which checks run |
SKILLS_DISABLED_HOOKS | Comma-separated list | Disables specific checks |
SKILLS_TEST_TIMEOUT | Seconds (default: 60) | Timeout for test commands |
STACK_CONFIG.md Customization
Edit STACK_CONFIG.md in your project to customize commands.
stack: node
test: npm test
lint: npm run lint
typecheck: npx tsc --noEmit
build: npm run build
dev: npm run dev
User Profile Preferences
Your preferences are stored at ~/.config/opencode/user-profile.json.
{
"session_defaults": {
"default_purpose": "development"
},
"stack_preferences": {
"typescript": true,
"testing_framework": "vitest"
}
}
Self-Improving Skills with Evals
Skills can verify their own output quality using evals.md files. Each skill defines pass/fail checks that the agent runs after execution. This is the practical implementation of the Mayéutic Challenge — analyze before executing.
Learning from Past Sessions
Skills can maintain memory.md files that log lessons from past debugging sessions. This creates a learning loop where the skill improves over time. Entries are categorized as error, learning, or observation.