From tac
Scaffolds custom Claude Agent SDK configurations: generates system prompts, Python agent options, entry points, and docs for new specialized subagents.
npx claudepluginhub melodic-software/claude-code-plugins --plugin tacThis skill is limited to using the following tools:
Scaffold a new custom agent configuration.
Designs custom domain-specific agents with Claude Agent SDK patterns, covering purpose, model selection, prompts, tools, governance, and deployment.
Generates custom Claude Code agent.md files from purpose-based templates (Reviewer, Generator, Fixer, Tester, Documenter, Orchestrator). Configures tools, model, color; saves to .claude/agents/ and validates.
Guides creation of autonomous agents for Claude Code plugins, covering file structure, YAML frontmatter fields like name and description, system prompts, triggering conditions, tools, and best practices.
Share bugs, ideas, or general feedback.
Scaffold a new custom agent configuration.
$1: Agent name (kebab-case)$ARGUMENTS: High-level purpose description (after name)You are creating a new custom agent scaffold using Claude Agent SDK patterns.
Extract:
$1 (required)If no name provided, STOP and ask for agent name. If no purpose provided, STOP and ask for purpose description.
Based on the purpose, determine:
Model Selection:
System Prompt Architecture:
Tool Requirements:
Create system prompt following structure:
# [Agent Name]
## Purpose
[Identity and role - 2-3 sentences]
## Instructions
[Core behaviors - bullet list]
## Constraints
[What agent must NOT do]
## Examples (if needed)
[Input/Output pairs]
Create ClaudeAgentOptions configuration:
from claude_agent_sdk import ClaudeAgentOptions
def load_system_prompt() -> str:
prompt_file = Path(__file__).parent / "prompts" / "[agent]_system.md"
with open(prompt_file, "r") as f:
return f.read().strip()
options = ClaudeAgentOptions(
system_prompt=load_system_prompt(),
model="claude-[model]-...",
allowed_tools=[...],
disallowed_tools=[...],
)
Create basic agent script:
import asyncio
from pathlib import Path
from claude_agent_sdk import (
query,
ClaudeAgentOptions,
AssistantMessage,
TextBlock,
ResultMessage,
)
async def main():
options = ClaudeAgentOptions(...)
prompt = input("Enter prompt: ")
async for message in query(prompt=prompt, options=options):
if isinstance(message, AssistantMessage):
for block in message.content:
if isinstance(block, TextBlock):
print(block.text)
elif isinstance(message, ResultMessage):
print(f"Cost: ${message.total_cost_usd:.6f}")
if __name__ == "__main__":
asyncio.run(main())
## Agent Created
**Name:** [agent-name]
**Model:** [haiku/sonnet/opus]
**Architecture:** [override/append]
### Files to Create
1. `[agent-name]/prompts/[agent]_system.md` - System prompt
2. `[agent-name]/[agent]_agent.py` - Agent implementation
3. `[agent-name]/README.md` - Documentation
### System Prompt
```markdown
[Generated system prompt]
[Generated configuration]
[Generated script]