coding-agent-extension-builder
Generate Claude Code plugins, skills, and marketplaces using Kotlin DSL. Use when the user wants to: - Create a new plugin with commands and skills - Create a marketplace to distribute plugins - Generate correct folder structure (.claude-plugin/, skills/, commands/) - Avoid mistakes in JSON format and YAML front matter field names
소스 정보
- 저장소
- takahirom/coding-agent-extension-builder
- 최근 소스 활동
- 2026년 1월 5일 07:05
- 감지된 SKILL.md 언어
- 영어
- 스타
- 0
- 포크
- 0
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
SKILL.md 표시 중
SKILL.md
소스 지침 · 읽기 전용 미리보기- name
- coding-agent-extension-builder
- description
- Generate Claude Code plugins, skills, and marketplaces using Kotlin DSL. Use when the user wants to: - Create a new plugin with commands and skills - Create a marketplace to distribute plugins - Generate correct folder structure (.claude-plugin/, skills/, commands/) - Avoid mistakes in JSON format and YAML front matter field names
- license
- MIT
- allowed-tools
- Read, Write, Edit, Bash, Glob, Grep
# coding-agent-extension-builder
Kotlin library for generating coding agent extensions with compile-time safety.
## Why Use This Library
Writing extensions by hand is error-prone:
- Need to remember `marketplace.json` format
- Need correct folder structure (`.claude-plugin/plugin.json`, `skills/*/SKILL.md`)
- Easy to misspell field names (`allowed-tools`? `allowedTools`?)
- Mistakes are hard to catch because agents still work with invalid config
## Quick Start
```kotlin
// 1. Create a plugin
val plugin = Plugin.Builder(
name = "my-plugin",
description = "My plugin description",
version = "1.0.0"
)
.author(name = "Your Name")
.addCommand(
Command.Builder(
name = "my-command",
description = "What this command does",
body = "# Command\n\nInstructions..."
).build()
)
.addSkill(
Skill.Builder(
name = "my-skill",
description = "When to use this skill",
body = "# Skill\n\nGuidance..."
).build()
)
.build()
// 2. Create marketplace (optional)
val marketplace = Marketplace.Builder(
name = "my-marketplace",
owner = Owner(name = "Your Name")
)
.addPlugin(plugin)
.build()
// 3. Write to disk
marketplace.writeClaudeCodeExtension(Path("output"))
// Or just the plugin: plugin.writeClaudeCodeExtension(Path("output"))
```
## Generated Structure
```
output/my-marketplace/
├── .claude-plugin/
│ └── marketplace.json
└── plugins/
└── my-plugin/
├── .claude-plugin/
│ └── plugin.json
├── commands/
│ └── my-command.md
└── skills/
└── my-skill/
└── SKILL.md
```
## API Reference
### Skill.Builder(name, description, body)
- `.license(license: String)` - Set license
- `.allowedTools(vararg tools: String)` - Restrict tools
- `.addMetadata(key, value)` - Add custom metadata
### Command.Builder(name, description, body)
- No optional fields currently
### Plugin.Builder(name, description, version)
- `.author(name: String)` - Set author
- `.addCommand(command: Command)` - Add command
- `.addSkill(skill: Skill)` - Add skill
- `.addHook(hook: HookMatcher)` - Add hook
### HookMatcher.Builder(event: HookEvent)
- `.matcher(pattern: String)` - Tool pattern (e.g., "Write|Edit")
- `.command(command: String, timeout: Int?)` - Add command hook
- `.prompt(prompt: String, timeout: Int?)` - Add prompt hook (LLM-based)
HookEvent: PreToolUse, PostToolUse, PermissionRequest, Notification, UserPromptSubmit, Stop, SubagentStop, PreCompact, SessionStart, SessionEnd
### Marketplace.Builder(name, owner)
- `.addPlugin(plugin: Plugin)` - Add embedded plugin
- `.addPlugin(name, source, ...)` - Add external plugin reference
- `.metadata(description, version, pluginRoot)` - Set metadata
## Run in Workspace
```bash
cd workspace
cp src/main/kotlin/Main.kt.template src/main/kotlin/Main.kt
# Edit Main.kt
./gradlew :workspace:run
```
GitHub에서 보기