Install
openclaw skills install @conorbronsdon/skill-creatorGenerate a new Claude Code skill from a plain-language description — decides invocation control (disable-model-invocation vs user-invocable), arguments (argument-hint, $ARGUMENTS), and context cost, then scaffolds and tests it.
openclaw skills install @conorbronsdon/skill-creatorTakes a plain-language description of a task and generates a ready-to-ship skill. The design goal is skills that are cheap in ambient context and current with the skill spec — most skill-creator skills in the wild fail on exactly those two axes: they don't know about arguments/argument-hint, never suggest disable-model-invocation, and write bloated descriptions that tax every session.
Read:
CLAUDE.md and existing skills — avoid duplicating a skill that already exists, and match local conventions.Ask (or infer from context):
.claude/skills/ is the command you type; frontmatter name is only a display label.disable-model-invocation: true. Bonus: the description is then not loaded into every session — zero ambient context cost.user-invocable: false.argument-hint, and use $ARGUMENTS (or $0/$1, or named arguments:) in the body. Don't make Claude guess what the trailing text means.allowed-tools is a pre-approval grant (no permission prompts while active), not a restriction — scope entries tightly, e.g. Bash(git add *) not Bash. Use disallowed-tools to actually remove tools.context: fork + agent: for isolated, self-contained tasks. Fork only works when the body is an explicit task, not reference guidelines.!`command` at line start) to inline live data (a diff, a status file) before Claude reads the skill.model/effort overrides with a specific reason. Use paths: for skills scoped to certain files.disable-model-invocation: true, Claude never sees the description — write it for the human scanning the / menu, and keep it short.Frontmatter template — include only the fields this skill needs (all are optional; see reference.md for the full table):
---
name: [skill-name]
description: [1-2 sentences, triggers first]
argument-hint: "[expected args, e.g. [issue-number] [format]]" # only if it takes arguments
disable-model-invocation: true # only for user-triggered workflows
allowed-tools: [tightly-scoped grants] # only if prompts would be annoying
---
Body structure: short purpose line, "When to Use" bullets, numbered step-by-step instructions, explicit output format.
Quality checklist:
${CLAUDE_SKILL_DIR} for bundled scriptsBefore writing, check the target path is clear — if .claude/skills/<skill-name>/SKILL.md already exists, stop and confirm an overwrite rather than clobbering it silently.
.claude/skills/<skill-name>/SKILL.md is the whole installation — the directory name becomes the command, supporting files live alongside, and changes hot-reload within a session. No routing stub or registry edit is needed. (.claude/commands/ files still work, but they're the legacy form.)
Then follow whatever conventions the host repo has: a changelog entry, a command table in CLAUDE.md, a routing doc. Check before assuming none exist.
What skills are available? (or check /skills)./name with realistic arguments) and check the output matches the spec./plugin install skill-creator@claude-plugins-official runs with/without-skill benchmarks and description tuning.Show the SKILL.md and any wiring changes in labeled fenced code blocks. Ask: "Want me to save these, or make any changes first?"
disable-model-invocation: true so Claude can't decide to run it because the code "looks ready."