Where Kookr skills and agents live (.claude vs plugin) and how to name them. Repo-local Kookr work lives in .claude/ with `kookr-`; Kookr-distributed and general reusable skills live in plugin/. Use this skill before creating, renaming, or promoting a skill or agent.
Scanned 9/2/2026
Install to Claude Code
npx -y skills add kookr-ai/kookr --skill kookr-skill-naming-convention --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Kookr Skill Naming Convention?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/kookr-ai-kookr-skill-naming-convention)More formats (shields.io, HTML) on the badges page.
---
name: kookr-skill-naming-convention
description: Where Kookr skills and agents live (.claude vs plugin) and how to name them. Repo-local Kookr work lives in .claude/ with `kookr-`; Kookr-distributed and general reusable skills live in plugin/. Use this skill before creating, renaming, or promoting a skill or agent.
keywords: skill, agent, naming, convention, plugin, kookr, prefix, promote, marketplace, manifest, organization, subagent
related: rfc-iterative-review
---
# Kookr skill + agent naming + placement convention
## When to use
- Creating a new skill or agent in the Kookr repo.
- Promoting a skill/agent from `.claude/` to `plugin/` (or the reverse).
- Renaming an existing artifact that violates the convention below.
- Reviewing a PR that adds or renames a skill or agent.
## The two locations
```
~/git/kookr/
├── .claude/
│ ├── skills/ ← KOOKR REPO-LOCAL skills: dirs MUST start with `kookr-`
│ └── agents/ ← KOOKR REPO-LOCAL agents: files MUST start with `kookr-`
└── plugin/
├── skills/ ← DISTRIBUTED skills for plugin-backed agents in any cwd
└── agents/ ← DISTRIBUTED agents for plugin-backed agents in any cwd
```
`.claude/` artifacts are invisible to other projects — they only load when Claude
Code is opened inside `$HOME/git/kookr/`. Use this tier only for skills and
agents whose natural working directory is the Kookr repository itself: editing
Kookr source, maintaining Kookr tests, or inspecting Kookr repo-local state.
`plugin/` is the distributed Kookr Toolkit. Kookr injects it into spawned agents
regardless of cwd, and non-spawned Claude Code sessions can also see it when the
plugin is installed or synced into Claude's skill/plugin directories. It is the
right home for both:
- Kookr-specific operational skills that agents need while working in other
repositories, such as spawning, supervising, or coordinating Kookr tasks.
- General-purpose engineering skills that are useful beyond Kookr.
The `hooks/skill-placement-gate.sh` script (called from `.hooks/pre-push`) enforces every rule below on push. CI does not duplicate it; the hook is the single enforcement boundary.
## The naming rule
| Location | Name pattern | Example |
|---|---|---|
| `.claude/skills/` (Kookr repo-local) | **must start with `kookr-`** | `kookr-shadow-detection`, `kookr-pre-push` |
| `.claude/agents/` (Kookr repo-local) | **must start with `kookr-`** | `kookr-oss-issue-scout.md` |
| `plugin/skills/` (distributed toolkit) | must not start with `kookr-` | `self-continuation-task`, `architecture-drift-signals` |
| `plugin/agents/` (distributed toolkit) | must not start with `kookr-` | `boundary-critic.md` |
The `kookr-` prefix marks project-scoped Kookr source maintenance. Distributed
skills stay unprefixed even when they operate Kookr at runtime; the
`kookr-toolkit:` namespace already identifies their origin. The directory
decides visibility: repo-local maintenance goes in `.claude/`, while Kookr
runtime operations that agents need from any repository go in `plugin/`.
## How to decide if a skill should be kookr-internal vs published
A skill is **Kookr repo-local** (must live in `.claude/skills/kookr-*`) if it is
only meaningful while the agent's cwd is the Kookr repository, for example:
- Editing Kookr source files, tests, hooks, build scripts, or dashboard internals.
- Maintaining Kookr repo-local release, pre-push, placement, or architecture
conventions.
- Inspecting implementation details that only exist in the Kookr checkout.
A skill is **distributed** (must live in `plugin/skills/`) if it is useful to an
agent outside the Kookr repository through plugin injection, marketplace install,
or local sync, including:
- Kookr operational workflows, such as spawning child tasks, supervising task
chains, or using Kookr CLI/API commands while working in another repo.
- General code patterns, workflows, and meta-skills that are not specific to
Kookr source maintenance.
## Promotion workflow (repo-local → distributed)
1. Audit whether the skill is tied to the Kookr repo cwd. If not, it belongs in
`plugin/`.
2. If the skill has scripts, audit whether they require the Kookr source tree as
cwd. Runtime paths such as the Kookr daemon API or `kookr-spawn` can be valid
distributed behavior.
3. `git mv .claude/skills/kookr-<slug> plugin/skills/<slug>` and drop the
`kookr-` prefix. Plugin names rely on the `kookr-toolkit:` namespace instead.
4. Update the `name:` field in the SKILL.md frontmatter to match the new
directory name.
5. Update any `related:` references in OTHER skills' frontmatter that pointed at the old name.
6. Bump `plugin/.claude-plugin/plugin.json` version (patch bump for additive promotion).
7. Open a PR titled `feat: promote <skill> to plugin`.
## Demotion workflow (published → kookr-internal)
Rare. Only do this if a distributed skill turns out to require working inside
the Kookr repository rather than using Kookr from another repo.
1. `git mv plugin/skills/<slug> .claude/skills/kookr-<slug>`.
2. Add the `kookr-` prefix to the `name:` field.
3. Update `related:` cross-references.
4. Bump plugin version (patch bump).
5. Open a PR titled `chore: demote <skill> to kookr-internal — <reason>`.
## When in doubt
Default to asking whether the agent needs this while its cwd is outside
`~/git/kookr`. If yes, use `plugin/`. If no, use `.claude/skills/kookr-*`.
## Anti-patterns to call out in review
- **`.claude/skills/foo/`** without the `kookr-` prefix — repo-local Kookr
skills must be visibly Kookr-specific.
- **A Kookr runtime skill kept in `.claude/skills/` even though agents need it
outside the Kookr repo** — move it to `plugin/skills/` and drop the `kookr-`
prefix; the plugin namespace identifies its origin.
- **A distributed skill that assumes the Kookr source checkout as cwd** — either
move it back to `.claude/skills/kookr-*` or rewrite it to operate from any cwd.
- **Renaming a published skill without bumping the plugin version** — breaks every project that referenced the old name.
- **Unqualified `subagent_type` references inside a skill body** — calling `Agent` with a bare agent name does NOT resolve for plugin-namespaced agents. The qualified `kookr-toolkit:<name>` form is required. The placement gate rejects bare names on push.
- **Project-scope agents without the `kookr-` prefix** — bypass-mode strips `--setting-sources` and these would silently disappear. The gate enforces the prefix; kookr-prefixed agents are permitted because they're only useful inside the kookr repo anyway.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!