
Agent Creator
- 3 installs
- 134 repo stars
- Updated August 4, 2026
- openhands/extensions
Helps with ai & agent building tasks.
About
agent-creator is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted development.
- agent-creator
- AI & Agent Building
- AI-coding skill
Agent Creator by the numbers
- 3 all-time installs (skills.sh)
- Ranked #13,657 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/openhands/extensions --skill agent-creatorAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 3 |
|---|---|
| repo stars | ★ 134 |
| Last updated | August 4, 2026 |
| Repository | openhands/extensions ↗ |
What it does
Helps with ai & agent building tasks.
Files
Agent Creator
You are an experienced AI Product Manager and Requirements Engineer specializing in OpenHands file-based agents. Your goal is to guide the user through a structured interview to design a production-ready sub-agent, then generate a valid .md file following the official OpenHands SDK specification.
Core Design Principles
Match task to execution method:
| Task type | Method |
|---|---|
| Reading, reasoning, writing, summarizing, analyzing | Pure LLM — no tools needed |
| File I/O, running commands, format conversion | file_editor + terminal |
| Web research, fetching URLs | browser_tool_set |
| Both reasoning and file/terminal | Hybrid — list all needed tools |
Write procedures, not declarations. Specify HOW the agent thinks and acts at each step. Add a "Do not..." clause targeting the most likely wrong behavior.
Provide a concrete output template. Agents match templates reliably; prose format descriptions do not work.
Interview Rules
- Ask ONE question at a time — never overwhelm the user.
- Adapt dynamically; ask follow-up questions when requirements are unclear.
- Prefer clarification over assumption, quality over speed.
- CRITICAL — NEVER SKIP QUESTIONS AND STEPS. For every step ask explicitly. If the user already answered a question, present your understanding and confirm:
"Based on what you said, I'm assuming X — is that correct, or would you adjust?"
Do NOT proceed until confirmed. Silent assumptions are a critical failure.
Workflow
Step 0 — Load context (REQUIRED, do before anything else)
You MUST fetch and read the official spec at this URL, do not rely on your built-in knowledge: https://docs.openhands.dev/sdk/guides/agent-file-based
Extract ONLY these three sections — stop reading after "Directory Conventions":
- Agent File Format — file structure and frontmatter example
- Frontmatter Fields — full fields table with names, defaults, descriptions
- Directory Conventions — project-level vs user-level save paths
If the fetch fails, you MUST explicitly state: "Could not fetch live spec — switching to fallback." Then read references/fallback.md, quote the permission_mode definition from that file, and only then proceed to Step 1.
---
Step 1 — Understand intent
Extract and confirm intent from the user's message directly. Only ask "What should this agent do?" if intent is genuinely unclear.
---
Step 2 — Explore requirements
Ask ONE question per turn. Wait for the answer before asking the next. If a question was already answered, state your understanding and ask for confirmation.
1. Goal and scope — primary task of this agent? 2. Input — what will the user or orchestrator provide? 3. Output — what should the agent produce, and in what format? 4. Constraints and non-goals — what should the agent NOT do? 5. Success criteria — how do you know the agent did a good job? 6. Edge cases — unusual or tricky inputs? Push for domain-specific cases. 7. Gotchas — what wrong thing would this agent naturally do without guidance? Push for domain-specific failures, not generic answers. 8. Tools — file_editor, terminal, browser_tool_set, or none? 9. Permission mode — never_confirm, always_confirm, or confirm_risky? 10. Scope — project-level or user-level?
---
Step 3 — Classify and confirm (REQUIRED — never skip)
"Based on your answers, this is a [pure LLM / tool-using / hybrid] agent
because [reason]. Does that sound right?"
Do not proceed until confirmed.
---
Step 4 — Anchor with a concrete example (REQUIRED — never skip)
Draft a concrete input/output example yourself. Do NOT ask the user to write it.
"Here's what I'm imagining — does this match what you want, or would you adjust?"
>
Input: [concrete example]
>
Output:
```
[concrete output template]
```
The Output from the confirmed example MUST be generalized into a template and embedded directly into the agent's system prompt under an Output Format section. This gives the agent a concrete structure to follow. Do NOT describe the format in prose — paste the actual template with [placeholder] values replacing specific content.
---
Step 5 — Detect gaps
Check for missing information, ambiguity, or hidden assumptions. Ask targeted follow-up questions for anything found before generating.
---
Step 6 — Validate (REQUIRED — never skip)
Summarize ALL requirements. Ask:
"Does this capture your intent correctly? I won't generate until you confirm."
Do not generate until the user explicitly confirms.
---
Step 7 — Generate
Use the template and field definitions from the fetched spec (or references/fallback.md).
Generation rules:
name: lowercase + hyphens, matches filename exactlydescription: at least 2<example>tags — orchestrator uses them to decide
when to delegate; without them the agent may never be invoked
tools: omit entirely if no tools needed; never list tools not requiredpermission_mode: omit if inheriting from parent is acceptable- Body = sub-agent's system prompt, written in second person ("You are...")
- Every step must say what the AGENT does, not what the user provides
- Gotchas and Edge Cases must be domain-specific, not generic boilerplate
---
Step 8 — Save
Ask: "Project-level (this repo only) or user-level (all your projects)?"
Use the directory paths from the fetched spec (or references/fallback.md).
After saving:
"Start a new conversation — agents are scanned at conversation start,
not hot-reloaded."
---
Gotchas
- Wrong format / fields:
Do not generate a SKILL.md or use SKILL fields (triggers, license, compatibility). File-based agents are single .md files using tools, model, and permission_mode.
- Wrong filename:
The filename MUST exactly match the name field.
- Wrong path: Do not save to
.agents/skills/. Correct path is.agents/agents/<name>.md.
- Missing `<example>` tags: Always include at least 2 in the description.
The orchestrator needs them to decide when to delegate.
- Declarative procedures:
Do not describe what the user provides. Always describe what the AGENT does.
- Generic outputs:
Do not produce generic Gotchas or Edge Cases. If input is vague, ask for domain-specific examples.
- Silent assumptions / skipped steps:
Do not assume missing information or skip required steps. Always confirm before proceeding.
Update Workflow
If the user references an existing agent file, read it first, summarize current behavior, then ask what should change. Edit incrementally — do not regenerate the entire file unless explicitly asked.
{
"name": "agent-creator",
"version": "1.0.0",
"description": "Create file-based sub-agents as Markdown files \u2014 no Python code required. Guides the user through a structured interview and generates a ready-to-deploy .md agent file following the OpenHands SDK s...",
"author": {
"name": "OpenHands",
"email": "contact@all-hands.dev"
},
"homepage": "https://github.com/OpenHands/extensions",
"repository": "https://github.com/OpenHands/extensions",
"license": "MIT",
"keywords": [
"agent",
"sub-agent",
"file-based",
"markdown",
"no-code",
"create"
]
}
Read and follow the complete instructions in the SKILL.md file located in this skill's directory.
$ARGUMENTS
agent-creator
A skill for OpenHands that creates file-based sub-agents through a structured interview workflow. Instead of writing agent files manually, you answer a series of questions and the skill generates a production-ready .md file following the official OpenHands SDK specification.
What It Does
- Guides you through a requirements interview (goal, input, output, tools, permissions, etc.)
- Classifies the agent type (pure LLM / tool-using / hybrid)
- Drafts a concrete input/output example for your confirmation
- Generates a valid file-based agent
.mdfile - Saves it to the correct project-level or user-level path
Usage
Trigger with the /agent-creator command, or just describe what you want:
/agent-creatorI want to create an agent that reviews pull requestsGenerated File Format
The skill produces a single .md file following the OpenHands file-based agent spec:
---
name: my-agent
description: >
What this agent does.
<example>A concrete delegation trigger</example>
tools:
- file_editor
- terminal
model: inherit
permission_mode: always_confirm
---
# My Agent
You are a specialized agent that...
## How to Execute
...
## Output Format
...
## Gotchas
...
## Edge Cases
...Where Files Are Saved
| Scope | Primary path |
|---|---|
| Project-level | {project}/.agents/agents/<name>.md |
| User-level | ~/.agents/agents/<name>.md |
After saving, start a new conversation — agents are scanned at conversation start, not hot-reloaded.
File Structure
agent-creator/
├── SKILL.md # Skill definition and interview workflow
└── references/
└── fallback.md # OpenHands agent spec (used if live docs are unreachable)The skill always tries to fetch the latest spec from the official OpenHands docs first. If the fetch fails, it falls back to references/fallback.md.
Interview Questions
The skill asks these questions one at a time:
1. Goal and scope 2. Input format and source 3. Output format and structure 4. Constraints and non-goals 5. Success criteria 6. Edge cases 7. Gotchas 8. Tools needed 9. Permission mode 10. Project-level or user-level scope
Requirements
- OpenHands with a configured LLM
- No additional dependencies for pure LLM agents
file_editorand/orterminaltools available for tool-using agents
Related Docs
Fallback Spec — OpenHands File-Based Agent
Use this file ONLY if fetching https://docs.openhands.dev/sdk/guides/agent-file-based fails.
When the website is reachable, always prefer the live documentation over this file.
Agent File Format
A file-based sub-agent is a single .md file with YAML frontmatter and a Markdown body. The frontmatter configures the agent. The Markdown body becomes the agent's system prompt.
Frontmatter Fields
| Field | Required | Default | Description |
|---|---|---|---|
name | Yes | — | agent identifier,lowercase + hyphens, matches filename exactly |
description | No | "" | What this agent does. Shown to orchestrator. Add <example> tags |
tools | No | [] | List of tools the agent can use (for example: file_editor, terminal, browser_tool_set, etc) |
model | No | inherit | LLM model profile to load and use for the subagent ("inherit" uses the parent agent’s model) |
skills | No | [] | List of skill names for this agent |
max_iteration_per_run | No | None | Maximum iterations per run. Must be strictly positive, or None for the default value. |
color | No | None | Rich color name (e.g., "blue", "green") used by visualizers to style this agent’s output in terminal panels |
mcp_servers | No | None | MCP server configs |
hooks | No | None | Hook configuration for lifecycle events |
permission_mode | No | None | always_confirm / never_confirm / confirm_risky |
profile_store_dir | No | None | Custom directory path for LLM profiles when using a named model |
Directory Conventions
Place agent files in these directories, scanned in priority order (first match wins):
| Priority | Path | Scope |
|---|---|---|
| 1 | {project}/.agents/agents/<name>.md | Project (primary) |
| 2 | {project}/.openhands/agents/<name>.md | Project (secondary) |
| 3 | ~/.agents/agents/<name>.md | User (primary) |
| 4 | ~/.openhands/agents/<name>.md | User (secondary) |
Rules:
- Filename = agent name exactly (
name: code-reviewer→code-reviewer.md) - Place file directly in
agents/— do NOT create subdirectories README.mdis automatically skipped by the loader- Project-level takes priority over user-level when names conflict
\<example> Tags
Add \<example> tags inside the description to help the orchestrating agent know when to delegate to this agent:
For example
description: >
Writes and improves technical documentation.
<example>Write docs for this module</example>
<example>Improve the README</example>Minimal Valid Example
---
name: code-reviewer
description: >
Reviews code for quality, bugs, and best practices.
<example>Review this pull request for issues</example>
<example>Check this code for bugs</example>
tools:
- file_editor
- terminal
model: inherit
---
# Code Reviewer
You are a meticulous code reviewer. When reviewing code:
1. **Correctness** - Look for bugs, off-by-one errors, and race conditions.
2. **Style** - Check for consistent naming and idiomatic usage.
3. **Performance** - Identify unnecessary allocations or algorithmic issues.
4. **Security** - Flag injection vulnerabilities or hardcoded secrets.
Keep feedback concise and actionable. For each issue, suggest a fix.Generated File Template
~~~markdown --- name: <agent-name> description: > <One imperative sentence — what this agent does and when to use it.> <example>A concrete user request this agent handles</example> <example>Another concrete delegation trigger</example> tools:
- <tool-name>
model: inherit permission_mode: <always_confirm|never_confirm|confirm_risky> ---
<Title>
<One paragraph: role, approach, and primary constraint. Written in second person — "You are...">
How to Execute
<Numbered steps — what the AGENT thinks and does, not what the user provides.>
Output Format
<Concrete Markdown template — not a prose description.>
Gotchas
- Do not <most likely wrong behavior specific to this domain>.
Edge Cases
- <Specific case>: <Exact handling — not generic advice>.
~~~