Agent skill
create-hashi
Create a new bridge plugin for MCP server integration
Stars
129
Forks
14
Install this agent skill to your Project
npx add-skill https://github.com/TheBushidoCollective/han/tree/main/.claude/skills/create-hashi
SKILL.md
Create a Bridge (橋 - Hashi) Plugin
Create a new bridge plugin for: $ARGUMENTS
What is a Bridge Plugin?
Bridge plugins provide access to external knowledge and capabilities through MCP servers. A bridge connects Claude Code to external services, APIs, databases, or specialized tools that extend Claude's capabilities.
Plugin Structure
Create the following directory structure:
plugins/services/{service-name}/
├── .claude-plugin/
│ └── plugin.json # Plugin metadata (ONLY plugin.json goes here)
├── han-plugin.yml # MCP server config + hooks + memory (at plugin root)
└── README.md # Plugin documentation
Categories
| Category | For | Examples |
|---|---|---|
services/ |
External service integrations | github, gitlab, sentry, reddit |
bridges/ |
AI tool bridges | gemini-cli, opencode, kiro |
IMPORTANT:
- Only
plugin.jsongoes inside.claude-plugin/(NO mcpServers here) - MCP server config goes in
han-plugin.ymlat plugin root han-plugin.ymlis the single source of truth for MCP config- Bridge plugins typically don't include skills or agents
Step 1: Create plugin.json
Create .claude-plugin/plugin.json (metadata only, NO mcpServers):
json
{
"name": "{service-name}",
"version": "1.0.0",
"description": "MCP server configuration for {Service Name} integration providing {key capabilities}.",
"author": {
"name": "The Bushido Collective",
"url": "https://thebushido.co"
},
"homepage": "https://github.com/thebushidocollective/han",
"repository": "https://github.com/thebushidocollective/han",
"license": "MIT",
"keywords": [
"mcp",
"{service-type}",
"{capability}",
"server"
]
}
Step 2: Create han-plugin.yml
Create han-plugin.yml at the plugin root with the MCP server configuration.
Preferred: HTTP Transport
yaml
mcp:
name: {server-name}
description: {Brief description of capabilities}
type: http
url: https://mcp.service.com/mcp
Alternative: NPX Package
yaml
mcp:
name: {server-name}
description: {Brief description of capabilities}
command: npx
args:
- -y
- "@scope/package-name"
With Environment Variables
yaml
mcp:
name: {server-name}
description: {Brief description of capabilities}
command: npx
args:
- -y
- "@scope/package"
env:
API_KEY: ${SERVICE_API_KEY}
Step 3: Write README.md
markdown
# {Service Name}
{Description of what this MCP server provides}
## What This Plugin Provides
### MCP Server: {server-name}
- **{Capability 1}**: {Description}
- **{Capability 2}**: {Description}
## Installation
\`\`\`bash
han plugin install {service-name}
\`\`\`
## Configuration
Set required environment variables:
\`\`\`bash
export {ENV_VAR}="your-value-here"
\`\`\`
Step 4: Register in Marketplace
Add your plugin to .claude-plugin/marketplace.json:
json
{
"name": "{service-name}",
"description": "MCP server for {Service Name} integration providing {key capabilities}.",
"source": "./plugins/services/{service-name}",
"category": "Bridge",
"keywords": [
"mcp",
"{keyword1}",
"{keyword2}",
"server"
]
}
Best Practices
DO
- Put MCP config in
han-plugin.yml, NOT inplugin.json - Prefer HTTP transport over stdio when available
- Use well-maintained MCP server packages
- Document all environment variables clearly
DON'T
- Don't put mcpServers in plugin.json (use han-plugin.yml)
- Don't hardcode API keys or secrets
- Don't use Docker unless no HTTP or npx option exists
Examples of Well-Structured Bridge Plugins
- github: HTTP transport with OAuth
- sentry: HTTP-based MCP server
- reddit: Simple uvx-based MCP server
Questions?
See the Han documentation or ask in GitHub Discussions.
Didn't find tool you were looking for?