plugin-dev
π―Skillfrom v1truv1us/ai-eng-system
Guides developers in creating robust, flexible plugins for Claude Code and OpenCode with systematic design, testing, and documentation best practices.
Installation
npx skills add https://github.com/v1truv1us/ai-eng-system --skill plugin-devSkill Details
This skill should be used when creating extensions for Claude Code or OpenCode, including plugins, commands, agents, skills, and custom tools. Covers both platforms with format specifications, best practices, and the ai-eng-system build system.
Overview
# Plugin Development for Claude Code & OpenCode
Critical Importance
Creating high-quality plugins is critical to your development workflow's long-term success. Plugins are used repeatedly by yourself and others. Design flaws, poor documentation, or broken functionality compound over time and across users. A well-designed plugin becomes a trusted tool used daily; a poorly designed plugin becomes abandoned technical debt. Invest time in architecture, testing, and documentationβthe returns multiply across all future uses.
Systematic Approach
approach plugin development systematically. Plugins require careful planning: understand the problem, design the API, implement incrementally, test thoroughly, and document comprehensively. Don't rush to codeβclarify requirements, define interfaces, and consider edge cases first. Build iteratively, validate frequently, and refactor continuously. Every design decision impacts maintainability and extensibility.
The Challenge
The create a plugin that balances specificity with flexibility perfectly, but if you can:
- Your plugin will be a joy to use and extend
- Others will build on top of your work
- The plugin will remain useful as needs evolve
- You'll establish patterns for future plugin development
The challenge is designing plugins that solve specific problems while staying flexible enough for future use cases. Can you create focused, opinionated tools that don't paint yourself into corners?
Plugin Confidence Assessment
After completing or reviewing plugin development, rate your confidence from 0.0 to 1.0:
- 0.8-1.0: Plugin well-architected, fully tested, thoroughly documented, follows platform conventions
- 0.5-0.8: Plugin functional but missing some tests or documentation, some technical debt
- 0.2-0.5: Plugin works but design unclear, minimal testing, poor documentation
- 0.0-0.2: Plugin incomplete or broken, unclear purpose, significant rework needed
Identify uncertainty areas: Is the plugin's purpose clear? Are there edge cases unhandled? Will the plugin work as requirements change? What's the maintenance burden?
Overview
The ai-eng-system supports extension development for both Claude Code and OpenCode through a unified content system with automated transformation. Understanding this system enables creating well-organized, maintainable extensions that integrate seamlessly with both platforms.
Extension Types
| Type | Claude Code | OpenCode | Shared Format |
|------|-------------|----------|---------------|
| Commands | β YAML frontmatter | β Table format | YAML frontmatter |
| Agents | β YAML frontmatter | β Table format | YAML frontmatter |
| Skills | β Same format | β Same format | SKILL.md |
| Hooks | β hooks.json | β Plugin events | Platform-specific |
| Custom Tools | β (use MCP) | β tool() helper | OpenCode only |
| MCP Servers | β .mcp.json | β Same format | Same format |
Development Approaches
1. Canonical Development (Recommended)
Create content in content/ directory, let build.ts transform to platform formats:
```
content/
βββ commands/my-command.md β dist/.claude-plugin/commands/
β β dist/.opencode/command/ai-eng/
βββ agents/my-agent.md β dist/.claude-plugin/agents/
β dist/.opencode/agent/ai-eng/
```
2. Platform-Specific Development
Create directly in platform directories:
- Claude Code:
.claude/commands/,.claude-plugin/ - OpenCode:
.opencode/command/,.opencode/agent/
3. Global vs Project-Local
| Location | Claude Code | OpenCode |
|----------|-------------|----------|
| Project | .claude/ | .opencode/ |
| Global | ~/.claude/ | ~/.config/opencode/ |
Quick Reference
Command Frontmatter
Canonical (content/):
```yaml
---
name: my-command
description: What this command does
agent: build # Optional: which agent handles this
subtask: true # Optional: run as subtask
temperature: 0.3 # Optional: temperature
tools: # Optional: tool restrictions
read: true
write: true
---
```
Claude Code Output: Same format (YAML frontmatter)
OpenCode Output: Table format
```markdown
| description | agent |
|---|---|
| Description here | build |
```
Agent Frontmatter
Canonical (content/):
```yaml
---
name: my-agent
description: Use this agent when...
mode: subagent
color: cyan
temperature: 0.3
tools:
read: true
write: true
---
```
Claude Code Output: Same format (YAML frontmatter)
OpenCode Output: Table format
```markdown
| description | mode |
|---|---|
| Description here | subagent |
```
Skill Structure
Both platforms use identical format:
```
skill-name/
βββ SKILL.md (required)
β βββ YAML frontmatter (name, description)
β βββ Markdown body (1,000-3,000 words)
βββ Bundled Resources (optional)
βββ references/ # Detailed documentation
βββ examples/ # Working code
βββ scripts/ # Utility scripts
```
OpenCode Custom Tools
Use TypeScript with tool() helper:
```typescript
import { tool } from "@opencode-ai/plugin"
export default tool({
description: "Tool description",
args: {
param: tool.schema.string().describe("Parameter description"),
},
async execute(args, context) {
// Tool implementation
return result
},
})
```
Directory Locations
For Development in ai-eng-system
```
ai-eng-system/
βββ content/
β βββ commands/ # Add new commands here
β βββ agents/ # Add new agents here
βββ skills/
β βββ plugin-dev/ # This skill
βββ build.ts # Transforms to both platforms
```
For User Projects
Project-local:
- Claude Code:
.claude/commands/,.claude-plugin/ - OpenCode:
.opencode/command/,.opencode/agent/
Global:
- Claude Code:
~/.claude/commands/,~/.claude-plugin/ - OpenCode:
~/.config/opencode/command/,~/.config/opencode/agent/
Platform-Specific Features
Claude Code
Components:
- Commands with YAML frontmatter
- Agents with YAML frontmatter
- Skills with SKILL.md format
- Hooks via
hooks/hooks.json - MCP servers via
.mcp.json
Manifest: .claude-plugin/plugin.json
```json
{
"name": "plugin-name",
"version": "1.0.0",
"description": "Brief description",
"commands": ["./commands/*"],
"mcpServers": "./.mcp.json"
}
```
OpenCode
Components:
- Commands with table format
- Agents with table format
- Skills via opencode-skills plugin
- Custom tools with TypeScript
- Plugin events via TypeScript
Plugin: .opencode/plugin/plugin.ts
```typescript
import { Plugin } from "@opencode-ai/plugin"
export default (async ({ client, project, directory, worktree, $ }) => {
return {
// Plugin hooks here
}
}) satisfies Plugin
```
Development Workflow
1. Create Component
Use plugin-dev commands:
/ai-eng/create-agent- Create new agent/ai-eng/create-command- Create new command/ai-eng/create-skill- Create new skill/ai-eng/create-tool- Create new custom tool
2. Build
```bash
cd ai-eng-system
bun run build # Build all platforms
bun run build --watch # Watch mode
bun run build --validate # Validate content
```
3. Test
Claude Code:
```bash
claude plugin add https://github.com/v1truv1us/ai-eng-system
```
OpenCode:
```bash
# Project-local
./setup.sh
# Global
./setup-global.sh
```
Best Practices
Content Quality
- Use third-person in skill descriptions
- Write commands/agents FOR Claude, not to user
- Include specific trigger phrases
- Follow progressive disclosure for skills
File Organization
- One component per file
- Clear naming conventions (kebab-case)
- Proper frontmatter validation
Cross-Platform Compatibility
- Use canonical format in
content/ - Test build output for both platforms
- Document platform differences
Security
- No hardcoded credentials
- Use HTTPS/WSS for external connections
- Validate user inputs
- Follow principle of least privilege
Additional Resources
References
references/claude-code-plugins.md- Claude Code specificsreferences/opencode-plugins.md- OpenCode specificsreferences/command-format.md- Command syntax guidereferences/agent-format.md- Agent configuration guidereferences/skill-format.md- Skills specificationreferences/opencode-tools.md- Custom tool development
Examples
Study existing components in ai-eng-system:
content/commands/plan.md- Command structurecontent/agents/architect-advisor.md- Agent structureskills/prompting/incentive-prompting/SKILL.md- Skill structure
Troubleshooting
Build Issues
- Run
bun run build --validateto check content - Check file permissions in output directories
- Verify YAML frontmatter syntax
Platform Testing
- Test commands in both Claude Code and OpenCode
- Verify agents trigger correctly
- Check skills load via opencode-skills plugin
Common Errors
- Missing required frontmatter fields
- Incorrect directory structure
- Invalid YAML syntax
- Wrong file permissions
Integration with Ferg Engineering
The plugin-dev system integrates seamlessly with existing ai-eng-system components:
Existing Commands
/ai-eng/plan- Implementation planning/ai-eng/review- Code review/ai-eng/work- Task execution
Existing Agents
ai-eng/architect-advisor- Architecture guidanceai-eng/frontend-reviewer- Frontend reviewai-eng/seo-specialist- SEO optimization
Plugin-Dev Commands
/ai-eng/create-plugin- Full plugin development workflow/ai-eng/create-agent- Quick agent creation/ai-eng/create-command- Quick command creation/ai-eng/create-skill- Quick skill creation/ai-eng/create-tool- Quick tool creation
All use the same quality standards and research-backed prompting techniques.
More from this repository8
Automates reliable Coolify deployments for static, Node, and Docker projects with best practices and safety checks.
Orchestrates a spec-driven AI development workflow with 5 systematic phases (research, specify, plan, work, review) and 28 specialized agents to guide reliable, context-aware software engineering p...
Orchestrates a structured, spec-driven AI development workflow with 28 specialized agents, enabling systematic research, specification, planning, implementation, and review of software projects.
Conducts multi-phase, systematic research across codebases, documentation, and external sources to provide comprehensive, well-grounded insights and analysis.
incentive-prompting skill from v1truv1us/ai-eng-system
Systematically removes AI-generated verbosity and filler text while preserving critical technical meaning and communication precision.
AI Engineering System - Advanced development tools with context engineering, research orchestration, and 29 specialized agents
Orchestrates a spec-driven, AI-assisted development workflow with 5 systematic phases (research, specify, plan, work, review) and 28 specialized agents for Claude Code and OpenCode platforms.