skills/agent-creator/SKILL.md
Create file-based sub-agents as Markdown files following the OpenHands SDK format. Guides the user through a structured interview to collect requirements, then generates a ready-to-deploy agent file. Use this skill when the user wants to create, design, or build a new sub-agent, even if they don't use the /agent-creator command.
npx skillsauth add openhands/skills agent-creatorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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.
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.
"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.
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":
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.
Extract and confirm intent from the user's message directly. Only ask "What should this agent do?" if intent is genuinely unclear.
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.
file_editor, terminal, browser_tool_set, or none?never_confirm, always_confirm, or confirm_risky?"Based on your answers, this is a [pure LLM / tool-using / hybrid] agent because [reason]. Does that sound right?"
Do not proceed until confirmed.
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.
Check for missing information, ambiguity, or hidden assumptions. Ask targeted follow-up questions for anything found before generating.
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.
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 invokedtools: omit entirely if no tools needed; never list tools not requiredpermission_mode: omit if inheriting from parent is acceptableAsk: "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."
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.
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.
tools
Iterate on a GitHub pull request — drive it through CI, code review, and QA until it is merge-ready. Poll verification layers with `gh` CLI, diagnose and fix CI failures, address review feedback, retry flaky checks, push fixes, and repeat. The agent is the orchestration loop.
development
Guides technical explanations toward flowing, direct, conversational prose. This skill should be used for engineering chat, design discussion, architecture analysis, code-review explanations, and technical recommendations that should be concise without becoming fragmented or vague.
tools
This skill should be used when the user asks to "set up a Jira automation to create pull requests", "poll Jira for create-pr issues", "automatically create GitHub PRs from Jira tickets", "deploy a Jira issue-to-PR automation", "create a Jira to GitHub PR workflow", or mentions automating GitHub PR creation from a Jira label. Deploys a cron-based OpenHands automation that watches a Jira Cloud project for issues labeled with a configurable label (default: "create-pr") and spawns an agent conversation to create a GitHub pull request for each new issue found. The target GitHub repository is read from the body of the Jira ticket - no repo parameter is required at deploy time.
tools
This skill should be used when the user asks to "create an automation", "schedule a task", "set up a cron job", "webhook integration", "event-triggered automation", or mentions automations, scheduled tasks, cron scheduling, or webhook events in OpenHands Cloud.