Manage project-level skills by adding or removing them from the project's .claude/skills/ or .agents/skills/ directory. Use when a user asks to "add a skill," "install a skill," "remove a skill," "uninstall a skill," "list available skills," "manage skills," "what skills can I add," or "set up skills for this project." Also triggers when the user names specific skills to add (e.g., "add skill-creator to this project"), asks to remove a skill (e.g., "remove conversation-summarizer"), or clarifies project scope in a way that implies certain skills would be useful (e.g., "this is a biotech project" or "I need research skills"). Operates only at project scope — never modifies global ~/.claude/skills/ or ~/.agents/skills/ directories. Discovers skill sources by searching for nearby directories that contain a skills/ subfolder with SKILL.md files (e.g., skillkit, skillsmith).
Manage project-level skills: discover available skill sources,
add skills to the current project, remove installed skills, and
optionally track dependencies in .ai-manifest.yaml.
This skill operates ONLY at the project level:
.claude/skills/ for Claude Code.agents/skills/ for Codex CLINEVER modify global directories (~/.claude/skills/ or
~/.agents/skills/). If the user asks to manage global skills,
explain this scope limitation and suggest using the repository's
install.sh script directly.
Classify the user's request:
If the user names specific skills (e.g., "add skill-creator"), proceed directly without listing all available options.
Find directories that contain a skills/ subfolder with SKILL.md
files. Use the discovery script:
scripts/add_skills.sh --discover
To search a specific path instead of the default (parent of cwd):
scripts/add_skills.sh --discover --search-path /path/to/search
What qualifies as a skill source:
A directory containing a skills/ subfolder, where that subfolder
has at least one subdirectory with a SKILL.md file.
Where the script searches by default:
Example layout:
~/Projects/
├── skillkit/skills/ ← source
│ ├── skill-creator/SKILL.md
│ └── conversation-summarizer/SKILL.md
├── skillsmith/skills/ ← source
│ └── code-reviewer/SKILL.md
└── my-project/ ← current project
└── .claude/skills/ ← target
If no sources are found, inform the user. Suggest providing a path to a skill repository or cloning one.
List skills in a discovered source:
scripts/add_skills.sh --list --source /path/to/source-repo
This prints each skill's name and description. Present results grouped by source.
If the user already specified which skills to add, skip the listing and proceed to Step 4.
When the user clarifies project scope without naming skills, review available skills and recommend ones relevant to their domain. Ask which they want to add.
scripts/add_skills.sh --source <path> --skills name1,name2 [--claude] [--codex]
Add all skills from a source:
scripts/add_skills.sh --source <path> --all [--claude] [--codex]
Flags:
| Flag | Description |
|------|-------------|
| --source <path> | Path to the source repo (directory containing skills/) |
| --skills <names> | Comma-separated skill names |
| --all | Add all skills from the source |
| --claude | Target .claude/skills/ only |
| --codex | Target .agents/skills/ only |
| --force | Overwrite if skill already exists |
Default: targets both tools if their config directories exist, otherwise defaults to Claude Code.
Manifest behavior: If .ai-manifest.yaml exists in the project
root, added skills are automatically appended to it. If no manifest
exists, the add proceeds normally without creating one.
Before running: Confirm the action with the user if they haven't already specified exact skills. State which skills will be added and where.
scripts/remove_skills.sh --skills name1,name2 [--claude] [--codex]
Remove all project skills:
scripts/remove_skills.sh --all [--claude] [--codex]
List installed project skills:
scripts/remove_skills.sh --list [--claude] [--codex]
Manifest behavior: If .ai-manifest.yaml exists, removed
skills are automatically deleted from it. If no manifest exists,
the remove proceeds normally.
Before running: Always confirm removal with the user. List which skills will be removed.
Create a .ai-manifest.yaml from the skills currently installed
in the project:
scripts/add_skills.sh --init
This snapshots the current state. Use --force to overwrite an
existing manifest.
When to suggest --init:
.ai-manifest.yaml or "manifest" for the first time
in a project that doesn't have oneInstall all skills listed in .ai-manifest.yaml:
scripts/add_skills.sh --sync [--registry /path/to/registry.yaml]
Resolution order:
$AI_CONFIG_DIR/registry.yaml exists)Errors if no .ai-manifest.yaml exists. Suggest --init first.
When to suggest --sync:
.ai-manifest.yaml but no
skills installed yetAfter the script runs, report:
--force is used. Ask the user if they want to overwrite..claude/skills/ or .agents/skills/ automatically.install.sh for global installs.--init to create one.brew install yq for manifest support.Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer