Skill Creator
Use this as the canonical lifecycle skill for agent skills in
/Users/dobby/GitHub/agents. It absorbs the old skill-router role:
placement decisions, registry ownership, creation, promotion, refresh, sync,
and validation belong in one workflow.
Scope
- Apply
/Users/dobby/GitHub/agents/AGENTS.mdfirst when working in this repo. - If the current repo is not
/Users/dobby/GitHub/agents, decide placement and list exact control-plane changes unless the user explicitly asked to edit the agents repo. - Edit canonical sources, not generated runtime symlinks under
.agents/skills,.claude/skills, or~/.agents/skills. - Keep
skills/registry.jsonas the only mapping manifest.
Read References
- Read
references/skill_design.mdbefore writing a substantial newSKILL.md, choosing bundled resources, splitting references, or reviewing skill quality. - Read
references/control_plane_lifecycle.mdwhen updatingskills/registry.json, importing an external skill, promoting repo-local skills, or choosing exact bootstrap/check commands. - Read
references/openai_yaml.mdbefore creating or updatingagents/openai.yaml.
Placement Decision
Choose placement before creating or editing files:
- Use
externalwhen the source is upstream and should remain refreshable. - Use
ownedwhen the skill is authored locally and should be reusable across one or more repos. - Use
repo-localwhen the skill is specific to one repo and should stay in that repo. - Use managed
scope: dormantwhen the source should stay tracked but should not be linked into any runtime. - Default to the narrowest useful scope. Prefer
scope: repoordormantoverglobalunless the skill clearly belongs in the small default kit for unrelated repos. - When a skill depends on a repo-level MCP preset, align the repo-scoped skill
targets with repos declaring that preset in
codex/config/repo-bootstrap.json. - If placement is still ambiguous after inspecting context, ask one question: "Should this be external, owned, repo-local, or dormant?"
Standard Workflow
- Understand the intended use with concrete examples. Skip only when the usage pattern is already clear from the request or existing skill.
- Route placement using the decision rules above.
- For substantial or fragile skills, define 2-3 realistic evaluation prompts before writing extensive instructions.
- Plan reusable resources: scripts for deterministic/repeated operations, references for context that should load only when needed, and assets for output files/templates.
- Create or edit the canonical skill source.
- Generate or update
agents/openai.yaml. - Validate the skill folder.
- Update registry/distribution when the skill is managed by this repo.
- Run the required bootstrap/check commands.
- Iterate from real use and update durable instructions when the skill exposes a repeatable gap.
Creating Managed Owned Skills
For new owned skills in this repo, scaffold under
/Users/dobby/GitHub/agents/skills-source/owned:
python3 /Users/dobby/GitHub/agents/skills-source/owned/skill-creator/scripts/init_skill.py <skill-name> --path /Users/dobby/GitHub/agents/skills-source/owned
Use --resources scripts,references,assets only for resource directories the
skill actually needs. Use --examples only when placeholder examples help and
delete any placeholders before finishing.
After scaffolding:
- Replace TODOs in
SKILL.md. - Add only useful scripts, references, or assets.
- Test added scripts by running them.
- Generate
agents/openai.yamlwith explicit interface values. - Validate with
scripts/quick_validate.py. - Add a managed
ownedregistry entry with the narrowest useful scope. - Run bootstrap/check.
Updating Existing Skills
- Preserve the skill name unless the user asked for a rename.
- Keep frontmatter to exactly
nameanddescription. - Put all trigger/use information in the frontmatter description; the body loads only after the skill triggers.
- Keep
SKILL.mdlean. Move detailed variants, schemas, examples, and long policy into directly linked files underreferences/. - Keep information in one place; do not duplicate detailed guidance between
SKILL.mdand references. - Regenerate
agents/openai.yamlwhen the skill's scope or user-facing behavior changes. - Run validation after edits.
Importing External Skills
When the user gives a skills.sh URL or upstream reference and no special
handling is needed, prefer the canonical bootstrap helper:
cd /Users/dobby/GitHub/agents
./scripts/bootstrap-skill.sh <skills.sh-url-or-upstream-ref> --repo <repo> --apply
Use managed external entries only for skills that should remain refreshable
from upstream. If an imported skill becomes local infrastructure or intentionally
drifts, adopt it into skills-source/owned/<skill> and change upstream_ref to
"-".
Repo-Local and Promotion
- Keep a skill repo-local at
<repo>/.agents/skills/<skill>when it is specific to one repo. - Record repo-local skills in
unmanaged_repo_local_skillsfor visibility. - Promote a repo-local skill to managed owned when it becomes reusable or needs central distribution.
- For repo-scoped managed skills, prefer
scope: repofirst and useglobalonly when it belongs in the small default kit.
Registry and Distribution
When skills/registry.json changes, run sync/check in the same change:
cd /Users/dobby/GitHub/agents
./scripts/bootstrap-machine-agent-control-planes.sh --apply
./scripts/check-fast.sh
Use scoped bootstrap/check only when intentionally limiting a repo-scoped run:
cd /Users/dobby/GitHub/agents
./scripts/bootstrap-machine-agent-control-planes.sh --apply --repo <repo-root>
./scripts/check-agent-control-planes.sh --repo <repo-root>
If bootstrap creates tracked repo-local links, stage those generated links with the canonical skill source and registry change. Do not stage unrelated session-memory or work-in-progress files merely because lifecycle hooks touched them.
Validation Commands
Validate a single skill:
python3 /Users/dobby/GitHub/agents/skills-source/owned/skill-creator/scripts/quick_validate.py /path/to/skill-folder
The bundled Python scripts require PyYAML for YAML parsing. If import yaml
fails, install or repair the local Python dependency before changing the script
behavior.
Regenerate OpenAI UI metadata:
python3 /Users/dobby/GitHub/agents/skills-source/owned/skill-creator/scripts/generate_openai_yaml.py /path/to/skill-folder --interface display_name="..." --interface short_description="..." --interface default_prompt="Use $skill-name to ..."
Safety Rules
- Do not hand-edit rendered runtime links or generated repo-local control-plane surfaces.
- Do not add README, changelog, installation guide, or other auxiliary docs to a skill unless the user explicitly asks; skills should contain only what agents need to do the job.
- Do not add compatibility shims or legacy fallbacks unless explicitly required.
- Keep temporary artifacts under the owning repo's
tmp/directory and remove disposable scratch files before finishing.