google/meta-organize-skills
Use when creating, reorganizing, or maintaining the skills/ directory. Covers the shared skill layout conventions, directory structure, SKILL.md format, symlink architecture, and how to add or restructure skills so both Claude Code and Gemini CLI discover them.
npx skills add https://github.com/google/capsem --skill meta-organize-skills
This project uses a shared skills/ directory at the repo root. Both Claude Code and Gemini CLI discover skills from it via symlinks -- one set of files, two consumers.
skills/ Canonical location (checked into git)
<skill-name>/
SKILL.md Required -- the skill itself
references/ Optional -- large docs loaded on demand
scripts/ Optional -- executable helpers
assets/ Optional -- templates, icons, etc.
.claude/skills -> ../skills Claude Code symlink
.agents/skills -> ../skills Gemini CLI symlink
Rules:
SKILL.md file. No other naming is discovered..claude/skills/ or .agents/skills/ -- those are symlinks to skills/.---
name: skill-name
description: When to trigger and what it does. Be specific and slightly pushy -- Claude undertriggers skills, so include concrete contexts. All "when to use" info goes in the description, not the body.
---
# Skill Title
Body: instructions the agent follows when the skill triggers.
Keep under 500 lines. For larger skills, use references/ for overflow.
Required frontmatter fields:
name -- skill identifier (matches directory name)description -- triggering text. This is what Claude sees in its skill list to decide whether to load the skill. Include both what the skill does AND specific phrases/contexts that should trigger it.Optional frontmatter:
user-invocable: true -- lets users invoke with /skill-nameallowed-tools: Read, Grep, Bash -- restrict which tools the skill can usecontext: fork -- run in a subagent instead of main contextSkills load in three tiers:
Keep SKILL.md lean. If approaching 500 lines, split detail into references/ files and add clear pointers: "Read references/advanced.md for the full configuration reference."
mkdir skills/<name>skills/<name>/SKILL.md with frontmatter + instructionsFor community skills from npx skills find or skills.sh:
curl -sL https://raw.githubusercontent.com/<owner>/<repo>/main/skills/<name>/SKILL.md \
-o skills/<name>/SKILL.md
rm -rf skills/<name> -- both CLIs stop seeing it immediately.
Skills are flat (one level under skills/). Nested subdirectories are NOT discovered by Claude Code or Gemini CLI. Use prefix-based grouping to organize related skills into logical categories:
skills/
dev-testing/SKILL.md dev category -- testing
dev-debugging/SKILL.md dev category -- debugging
dev-diagnostics/SKILL.md dev category -- in-VM diagnostics
build-images/SKILL.md build category -- capsem-builder
build-initrd/SKILL.md build category -- initrd repack
release-process/SKILL.md release category
release-docs/SKILL.md release category -- site docs
find-skills/SKILL.md meta (no prefix needed)
skill-creation/SKILL.md meta
organize-skills/SKILL.md meta
Rules:
dev-testing, build-images<category>-<topic>utils or helpersCurrent categories:
meta-* -- skills about skills (find, create, organize)dev-* -- daily development (toolchain, testing, debugging, diagnostics)build-* -- building VM images and guest binariesrelease-* -- release process, CI, documentation sitefrontend-* -- frontend development (reserved)Take google/meta-organize-skills from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference npx.
Without those the skill loads but fails at the first command.