/audit-native-overlap — Custom-vs-Native Skill Overlap Audit
Purpose: evaluate this repo's custom Claude Code skills against the native skill ecosystem (superpowers, plugins, built-ins) to find description-level overlaps that hurt skill triggering or could be sharpened by integration. Source-repo audit; not for project/ecosystem audits (use /skill-audit for that).
When to Use
- Periodic health check on the dev repo's custom skills.
- After a major Claude Code or plugin update that introduces new natives.
- Before publishing a new custom skill, to see what it competes with.
- When a custom skill is mis-firing in tests and you suspect description overlap with a native.
When NOT to Use
- Auditing a consumer project's installed plugins/skills — use
/skill-audit.
- Creating or improving a single skill — use
/skill-creator or /skill-improver.
- Structural lint (frontmatter, naming, cross-refs) — use
/validate-skills.
Prerequisites
Run this skill inside Claude Code so the current session's available-skills list is in the model context — that list IS the live native-skill catalog. The skill does not maintain a catalog file; staleness isn't possible because the list is read fresh each run.
If you are not in the savviety-skills source repo (no manifest.json at the cwd, no claude/ directory), refuse with: audit-native-overlap must run in the savviety-skills source repo.
Arguments
| Argument |
Description |
[skill-name] |
Audit only the named custom skill. Default: all custom skills under claude/. |
--out=<path> |
Output path. Default: docs/audits/native-overlap-<YYYYMMDD>.md. |
--scope=<overlapping|all> |
overlapping (default) reports only skills with at least one overlap finding; all includes "no overlap" verdicts. |
--apply |
After writing the report, draft edits to each affected SKILL.md (description tightening, cross-reference blocks, "When NOT to Use" handoffs). Disabled by default — review the report first. |
Workflow
Phase 1: Verify environment and enumerate custom skills
- Confirm cwd contains
manifest.json and claude/. If not, refuse (see Prerequisites).
- Read
manifest.json to extract claude.skills.skip (paths/names not to audit). Defaults if missing: README.md, MODEL-POLICY.md, SESSION-CONTEXT.md, settings.template.json, infra.
- List entries under
claude/. A custom skill is any directory claude/<name>/ where claude/<name>/SKILL.md exists, EXCEPT:
- Names in the skip list
- The
_internal/ tree (contracts, not user-invocable — no trigger surface)
- For each custom skill, read frontmatter (
name, description) and the ## When to Use and ## When NOT to Use sections plus the first ~50 lines of body.
- If
[skill-name] was passed, restrict to that single skill.
Phase 2: Identify the native catalog from the live session
Use the current session's available-skills list (visible in the system-reminder injected at session start) as the catalog. Treat as native any skill that:
- Has a plugin namespace prefix (e.g.
superpowers:, pr-review-toolkit:, claude-md-management:, hookify:, differential-review:, static-analysis:, variant-analysis:, codex:, skill-improver:, sourcegraph:, supply-chain-risk-auditor:, insecure-defaults:), OR
- Has no prefix but does NOT correspond to a directory under this repo's
claude/ (e.g. built-ins like init, review, security-review, simplify, loop, schedule, claude-api, update-config).
Do not invent natives. If a skill isn't in the current session's listing, it's out of scope. If the listing is empty or unavailable, halt with: Cannot read available-skills list from session — invoke this skill from inside Claude Code.
Record the timestamp of the run. Note in the report: "native catalog read live from this session at <timestamp>."
Phase 3: Compare each custom skill against the catalog
For each custom skill, identify candidate natives whose descriptions overlap on:
- Trigger phrases — same verbs/nouns ("execute", "plan", "review", "spec", "PRD", "requirements", "audit")
- Outcome territory — same kind of output (a plan, a review verdict, a refactor, a report)
- Workflow stage — same point in the dev flow (planning, executing, reviewing, committing, debugging)
Rank candidates by overlap strength. A custom skill may have zero, one, or several native counterparts.
Phase 4: Verdict per overlap pair
For each (custom skill, native) pair with non-trivial overlap, assign exactly one verdict:
| Verdict |
When |
Recommended action |
| Tighten |
Custom skill loses its own trigger surface to a native (the native is winning ambiguous user phrases) |
Sharpen the custom skill's description: with explicit trigger phrases and a "Preferred over <native> when..." claim |
| Cross-reference |
Custom is the project-tailored version of a native — same job, stricter contracts |
Add a ## Relationship to native skills block citing the native and stating when to defer |
| Integrate as sub-primitive |
A specific seam (failure path, isolation, verification) where the custom skill could call the native |
Identify the seam in the body and add the call/cross-reference at that location |
| Hand off |
Custom is heavier than the native; some user phrasings should defer |
Add the native to "When NOT to Use" with the deferring condition |
| Redundant |
Custom duplicates a native with no value-add |
Recommend deprecation/removal |
If a custom skill has no overlap candidates, verdict is No overlap — report only when --scope=all.
Phase 5: Write the report
Write to the --out path (default: docs/audits/native-overlap-<YYYYMMDD>.md). Create the directory if missing.
Format:
# Native-Overlap Audit — <YYYY-MM-DD>
**Repo:** <repo-root>
**Custom skills audited:** <N>
**Overlap findings:** <M>
**Native catalog:** read live from session at <timestamp>
## Summary
| Custom skill | Findings | Top verdict |
|---|---|---|
| <name> | N | Tighten / Cross-reference / ... |
## Findings
### `<custom-skill-name>`
**Description:** <current `description:` value, verbatim>
#### Overlap with `<native-skill>`
- **Verdict:** <Tighten | Cross-reference | Integrate as sub-primitive | Hand off | Redundant>
- **Reasoning:** <2–3 sentences naming the specific overlap>
- **Recommended action:** <concrete edit, ideally with before/after snippets>
(repeat per native overlap; repeat per custom skill)
## Skills with no overlap
(only when --scope=all)
- `<name>` — <one-line note on what the skill does that natives don't>
Phase 6: Apply (only if --apply was passed)
After the report is written, draft and apply the recommended edits to each affected claude/<name>/SKILL.md:
- Description tightenings —
Edit the frontmatter description: line
- Cross-reference blocks — insert
## Relationship to native skills after the intro and before ## When to Use
- "When NOT to Use" handoffs — extend the existing section with the deferring condition
- Sub-primitive integrations — these are seam-specific; flag for human review, do NOT auto-apply
Pre-conditions for --apply:
- Working tree must be clean OR already on a feature branch. If the tree has uncommitted changes on
main, halt and ask the operator to branch or stash first.
- After applying, do not commit. Leave changes staged for human review.
- After applying, run
/validate-skills (if available) to catch any structural breakage from the edits.
Key Rules
- The catalog is the live session. Do not maintain a catalog file. Do not invent natives the session can't see. If the listing isn't available, halt — do not guess.
- Source-repo only. This audit is meaningful only in the savviety-skills source repo. Refuse cleanly elsewhere.
- Report first, edit second.
--apply is opt-in. Default is read-only.
- One verdict per overlap pair. A custom skill overlapping three natives produces three findings, not one merged verdict.
- Skip
_internal/. Internal contracts have no triggering surface to overlap.
- Acknowledge model limits. The model can miss subtle overlaps and hallucinate borderline ones. Findings are recommendations to review, not verdicts to mechanically apply. The report should treat itself as a starting point for human judgment.
- Don't recommend changes to native skills. This audit only proposes edits to this repo's custom skills.
1---2name: audit-native-overlap3description: Audit this repo's custom Claude Code skills for description-level overlap with native skills (superpowers, plugins, built-ins) using the current session's live skill list as the catalog. Identifies skills whose descriptions compete with natives and recommends per-skill verdicts: tighten, cross-reference, integrate as sub-primitive, hand off, or redundant. Trigger phrases: 'audit native skill overlap', 'check overlap with native skills', 'do my custom skills compete with natives', 'native skill audit', 'evaluate skills against natives'.4---56# /audit-native-overlap — Custom-vs-Native Skill Overlap Audit78**Purpose:** evaluate this repo's custom Claude Code skills against the native skill ecosystem (superpowers, plugins, built-ins) to find description-level overlaps that hurt skill triggering or could be sharpened by integration. Source-repo audit; not for project/ecosystem audits (use `/skill-audit` for that).910## When to Use1112- Periodic health check on the dev repo's custom skills.13- After a major Claude Code or plugin update that introduces new natives.14- Before publishing a new custom skill, to see what it competes with.15- When a custom skill is mis-firing in tests and you suspect description overlap with a native.1617## When NOT to Use1819- Auditing a *consumer* project's installed plugins/skills — use `/skill-audit`.20- Creating or improving a single skill — use `/skill-creator` or `/skill-improver`.21- Structural lint (frontmatter, naming, cross-refs) — use `/validate-skills`.2223## Prerequisites2425Run this skill **inside Claude Code** so the current session's available-skills list is in the model context — that list IS the live native-skill catalog. The skill does not maintain a catalog file; staleness isn't possible because the list is read fresh each run.2627If you are not in the savviety-skills source repo (no `manifest.json` at the cwd, no `claude/` directory), refuse with: `audit-native-overlap must run in the savviety-skills source repo.`2829## Arguments3031| Argument | Description |32|---|---|33| `[skill-name]` | Audit only the named custom skill. Default: all custom skills under `claude/`. |34| `--out=<path>` | Output path. Default: `docs/audits/native-overlap-<YYYYMMDD>.md`. |35| `--scope=<overlapping\|all>` | `overlapping` (default) reports only skills with at least one overlap finding; `all` includes "no overlap" verdicts. |36| `--apply` | After writing the report, draft edits to each affected SKILL.md (description tightening, cross-reference blocks, "When NOT to Use" handoffs). Disabled by default — review the report first. |3738## Workflow3940### Phase 1: Verify environment and enumerate custom skills41421. Confirm cwd contains `manifest.json` and `claude/`. If not, refuse (see Prerequisites).432. Read `manifest.json` to extract `claude.skills.skip` (paths/names not to audit). Defaults if missing: `README.md`, `MODEL-POLICY.md`, `SESSION-CONTEXT.md`, `settings.template.json`, `infra`.443. List entries under `claude/`. A custom skill is any directory `claude/<name>/` where `claude/<name>/SKILL.md` exists, EXCEPT:45 - Names in the skip list46 - The `_internal/` tree (contracts, not user-invocable — no trigger surface)474. For each custom skill, read frontmatter (`name`, `description`) and the `## When to Use` and `## When NOT to Use` sections plus the first ~50 lines of body.485. If `[skill-name]` was passed, restrict to that single skill.4950### Phase 2: Identify the native catalog from the live session5152Use the **current session's available-skills list** (visible in the system-reminder injected at session start) as the catalog. Treat as native any skill that:5354- Has a plugin namespace prefix (e.g. `superpowers:`, `pr-review-toolkit:`, `claude-md-management:`, `hookify:`, `differential-review:`, `static-analysis:`, `variant-analysis:`, `codex:`, `skill-improver:`, `sourcegraph:`, `supply-chain-risk-auditor:`, `insecure-defaults:`), OR55- Has no prefix but does NOT correspond to a directory under this repo's `claude/` (e.g. built-ins like `init`, `review`, `security-review`, `simplify`, `loop`, `schedule`, `claude-api`, `update-config`).5657**Do not invent natives.** If a skill isn't in the current session's listing, it's out of scope. If the listing is empty or unavailable, halt with: `Cannot read available-skills list from session — invoke this skill from inside Claude Code.`5859Record the timestamp of the run. Note in the report: "native catalog read live from this session at `<timestamp>`."6061### Phase 3: Compare each custom skill against the catalog6263For each custom skill, identify candidate natives whose descriptions overlap on:6465- **Trigger phrases** — same verbs/nouns ("execute", "plan", "review", "spec", "PRD", "requirements", "audit")66- **Outcome territory** — same kind of output (a plan, a review verdict, a refactor, a report)67- **Workflow stage** — same point in the dev flow (planning, executing, reviewing, committing, debugging)6869Rank candidates by overlap strength. A custom skill may have zero, one, or several native counterparts.7071### Phase 4: Verdict per overlap pair7273For each `(custom skill, native)` pair with non-trivial overlap, assign exactly one verdict:7475| Verdict | When | Recommended action |76|---|---|---|77| **Tighten** | Custom skill loses its own trigger surface to a native (the native is winning ambiguous user phrases) | Sharpen the custom skill's `description:` with explicit trigger phrases and a "Preferred over `<native>` when..." claim |78| **Cross-reference** | Custom is the project-tailored version of a native — same job, stricter contracts | Add a `## Relationship to native skills` block citing the native and stating when to defer |79| **Integrate as sub-primitive** | A specific seam (failure path, isolation, verification) where the custom skill could call the native | Identify the seam in the body and add the call/cross-reference at that location |80| **Hand off** | Custom is heavier than the native; some user phrasings should defer | Add the native to "When NOT to Use" with the deferring condition |81| **Redundant** | Custom duplicates a native with no value-add | Recommend deprecation/removal |8283If a custom skill has no overlap candidates, verdict is **No overlap** — report only when `--scope=all`.8485### Phase 5: Write the report8687Write to the `--out` path (default: `docs/audits/native-overlap-<YYYYMMDD>.md`). Create the directory if missing.8889Format:9091```92# Native-Overlap Audit — <YYYY-MM-DD>9394**Repo:** <repo-root>95**Custom skills audited:** <N>96**Overlap findings:** <M>97**Native catalog:** read live from session at <timestamp>9899## Summary100101| Custom skill | Findings | Top verdict |102|---|---|---|103| <name> | N | Tighten / Cross-reference / ... |104105## Findings106107### `<custom-skill-name>`108109**Description:** <current `description:` value, verbatim>110111#### Overlap with `<native-skill>`112113- **Verdict:** <Tighten | Cross-reference | Integrate as sub-primitive | Hand off | Redundant>114- **Reasoning:** <2–3 sentences naming the specific overlap>115- **Recommended action:** <concrete edit, ideally with before/after snippets>116117(repeat per native overlap; repeat per custom skill)118119## Skills with no overlap120121(only when --scope=all)122123- `<name>` — <one-line note on what the skill does that natives don't>124```125126### Phase 6: Apply (only if `--apply` was passed)127128After the report is written, draft and apply the recommended edits to each affected `claude/<name>/SKILL.md`:129130- **Description tightenings** — `Edit` the frontmatter `description:` line131- **Cross-reference blocks** — insert `## Relationship to native skills` after the intro and before `## When to Use`132- **"When NOT to Use" handoffs** — extend the existing section with the deferring condition133- **Sub-primitive integrations** — these are seam-specific; flag for human review, do NOT auto-apply134135Pre-conditions for `--apply`:1361371. Working tree must be clean OR already on a feature branch. If the tree has uncommitted changes on `main`, halt and ask the operator to branch or stash first.1382. After applying, do not commit. Leave changes staged for human review.1393. After applying, run `/validate-skills` (if available) to catch any structural breakage from the edits.140141## Key Rules1421431. **The catalog is the live session.** Do not maintain a catalog file. Do not invent natives the session can't see. If the listing isn't available, halt — do not guess.1442. **Source-repo only.** This audit is meaningful only in the savviety-skills source repo. Refuse cleanly elsewhere.1453. **Report first, edit second.** `--apply` is opt-in. Default is read-only.1464. **One verdict per overlap pair.** A custom skill overlapping three natives produces three findings, not one merged verdict.1475. **Skip `_internal/`.** Internal contracts have no triggering surface to overlap.1486. **Acknowledge model limits.** The model can miss subtle overlaps and hallucinate borderline ones. Findings are recommendations to review, not verdicts to mechanically apply. The report should treat itself as a starting point for human judgment.1497. **Don't recommend changes to native skills.** This audit only proposes edits to *this repo's* custom skills.