The Problem: Manual Skill Invocation
Every session, you type /content-seed to activate the harvesting skill. Every session, you forget at least once. The skill exists, but it’s not part of your workflow - it’s an interruption to it.
What if skills could be always-on? Loaded automatically when the agent starts, running passively in the background?
The Solution: Skill Injection via Config
flowchart LR
subgraph CONFIG["oh-my-opencode.json"]
AGENT["Agent Config"]
SKILLS["skills: ['content-seed']"]
AGENT --> SKILLS
end
subgraph STARTUP["Agent Startup"]
LOAD["Load Agent"]
INJECT["Inject Skills"]
READY["Ready with Skills"]
LOAD --> INJECT --> READY
end
CONFIG --> STARTUP
style SKILLS fill:#22c55e,color:#000
style READY fill:#3b82f6,color:#fff
In OpenCode (and similar agent frameworks), you can specify skills that auto-load for specific agents:
// ~/.config/opencode/oh-my-opencode.json
{
"agents": {
"sisyphus": {
"model": "anthropic/claude-sonnet-4-20250514",
"skills": ["content-seed", "git-workflow"]
},
"oracle": {
"model": "anthropic/claude-opus-4-20250514",
"skills": ["deep-analysis"]
}
}
}
Now when sisyphus agent starts, it automatically has the content-seed and git-workflow skills active. No manual /skill commands needed.
Why This Matters
Before: Manual Invocation
User: starts session
User: /content-seed
Agent: Content seed skill loaded
User: actually does work
... forgets to harvest seeds at end ...
After: Always-On
User: starts session
Agent: (content-seed already active, harvesting passively)
User: does work
Agent: (automatically captures content seeds)
The skill becomes a behavior, not a command.
Use Cases
1. Passive Harvesters
Skills that watch for interesting patterns and capture them:
{
"skills": ["content-seed", "error-collector", "pattern-detector"]
}
These run in the background, noting things worth saving without interrupting your flow.
2. Workflow Enforcers
Skills that ensure certain practices are followed:
{
"skills": ["git-workflow", "test-reminder", "doc-checker"]
}
The agent always checks for tests, always follows git conventions, always reminds about documentation.
3. Context Providers
Skills that provide specialized knowledge:
{
"skills": ["project-context", "api-reference", "style-guide"]
}
The agent always knows your project’s conventions, API patterns, and style preferences.
Configuration Patterns
Per-Agent Skills
Different agents need different skills:
{
"agents": {
"sisyphus": {
"skills": ["content-seed", "git-workflow"]
},
"oracle": {
"skills": ["deep-analysis", "architecture-patterns"]
},
"explore": {
"skills": ["codebase-mapping"]
}
}
}
Skill with Parameters
Some frameworks support skill configuration:
{
"agents": {
"sisyphus": {
"skills": [
"content-seed",
{
"name": "git-workflow",
"config": {
"requireIssue": true,
"maxCommitsPerBranch": 7
}
}
]
}
}
}
Skill Sources
Skills can come from multiple locations:
{
"skills": {
"sources": [
{ "path": "~/.config/opencode/skills", "recursive": true },
{ "path": "~/Dev/my-skills/skills", "recursive": true },
{ "path": "./project-skills", "recursive": false }
]
}
}
Implementation Tips
1. Start Small
Don’t load 10 skills at once. Start with one, verify it works, add more gradually.
2. Monitor Performance
Always-on skills consume context. Watch for:
- Slower response times
- Hitting context limits
- Skills conflicting with each other
3. Document Skill Behaviors
When skills are always-on, users may not know they’re active. Document what each skill does:
## Active Skills for Sisyphus Agent
- **content-seed**: Automatically captures interesting patterns, code snippets, and insights during conversation. Seeds are saved to ~/Dev/BrainFucked/seeds/
- **git-workflow**: Enforces issue-driven development. Commits must reference issues.
4. Provide Escape Hatches
Sometimes you need to disable a skill temporarily:
# Start with skill disabled
opencode --disable-skill content-seed
# Or in session
/skill disable content-seed
Key Takeaways
- Skills as behaviors, not commands - Auto-loading makes skills part of the agent’s personality
- Per-agent configuration - Different agents need different capabilities
- Passive > active - The best skills work without being invoked
- Start small, scale up - Add skills gradually to avoid overload
- Document what’s active - Users should know what behaviors are running
The shift from manual skill invocation to always-on injection is subtle but powerful. It transforms skills from tools you use into behaviors your agent has.
This pattern emerged from wanting content-seed harvesting to be automatic. The same approach works for any passive skill that should always be active.
