Prerequisites: Load adding-skill-basics.md first
Purpose: CLI implementation, registry, and testing for OpenCode skills
#!/usr/bin/env ts-node
// CLI implementation for {skill-name} skill
interface Args {
command: string
[key: string]: any
}
async function main() {
const args = parseArgs()
switch (args.command) {
case 'command1':
await handleCommand1(args)
break
case 'command2':
await handleCommand2(args)
break
case 'help':
default:
showHelp()
}
}
function parseArgs(): Args {
const args = process.argv.slice(2)
return {
command: args[0] || 'help',
...parseOptions(args.slice(1))
}
}
async function handleCommand1(args: Args) {
console.log('Running command1...')
}
function showHelp() {
console.log(`
{Skill Name}
Usage: npx ts-node scripts/skill-cli.ts <command> [options]
Commands:
command1 Description
command2 Description
help Show this help
`)
}
main().catch(console.error)
{
"skills": [
{
"id": "{skill-name}",
"name": "Skill Name",
"type": "skill",
"path": ".opencode/skills/{skill-name}/SKILL.md",
"description": "Brief description",
"tags": ["tag1", "tag2"],
"dependencies": []
}
]
}
{
"profiles": {
"essential": {
"components": [
"skill:{skill-name}"
]
}
}
}
# Test help
bash .opencode/skills/{skill-name}/router.sh help
# Test commands
bash .opencode/skills/{skill-name}/router.sh command1 --option value
# Test with npx
npx ts-node .opencode/skills/{skill-name}/scripts/skill-cli.ts help
.opencode/skills/{skill-name}/SKILL.md created.opencode/skills/{skill-name}/router.sh created (if CLI-based)chmod +x)adding-skill-basics.md - Directory and SKILL.md setupadding-skill-example.md - Complete examplecreating-skills.md - Claude Code Skillsplugins/context/capabilities/events_skills.md - Skills Plugin