audit-skill-conflicts — Pack coherence, not product QA
Degree of freedom: MIXED — Phases 0–1 [HIGH freedom]; Phase 2 routing
dry-run [LOW freedom] — skip explicitly if the harness cannot show
selection. Never write audit-responsive-layout.
Read-only. Most other audit-* skills inspect an app or repository you
ship. This one inspects the skill pack it lives in.
npm run validate:skills checks each file in isolation (name = dir, description
≤320, body <500). It cannot see two skills giving opposite advice, six
descriptions all matching "audit my UI", a handoff to a renamed skill, or a
greedy description that fires constantly and burns context.
A skill collection is a system. Its failure modes are between files.
Present findings. Rewrite nothing until approved. Highest-leverage first: description rewrites (routing) — they change which skill fires without changing any skill's behavior.
This skill vs neighbors
| Skill | Owns |
|---|---|
| audit-skill-conflicts (this) | Cross-skill contradictions, routing, dangling refs, bloat |
meta-skill-creator |
How to write a SKILL.md |
validate:skills (script) |
Per-file spec lint — not semantic coherence |
enhance-agent-guardrails |
Guardrails in an app repo, not this pack |
plan-docs-sync |
Docs vs code drift — not skill vs skill |
Do not fire for "create a skill" → meta-skill-creator.
Do not fire for "audit my app's UI" → audit-ux / audit-responsive /
audit-ui-states (this skill would flag that cluster).
How to reason
- Observe — quote both descriptions (or rule vs skill) that appear to collide
- Interpret — can one user phrase honor both, or do they contradict / steal routing?
- Classify — contradiction / trigger overlap / stale ref / bloat / correct carve-out
- Severity — opposite stance on the same situation, or a greedy description, first
Worked example
Observe: "audit my UI" matches
audit-ux,audit-responsive,audit-ui-stateswith no carve-out in two of the three descriptions. Interpret: the agent cannot know whether to score heuristics, breakpoints, or empty states. Classify: trigger overlap without disambiguation. Severity: major — wrong skill fires; wasted context. Fix: each description names when it wins (layout vs heuristics vs states).
Phase 0 — Load the corpus [HIGH freedom]
Enumerate:
skills/*/SKILL.mdandskills-cursor/*/SKILL.mdcommands/*.mdandcommands-portable/*.mdagents/*.mdrules/*.mdcand.cursor/rules/*.mdc— highest-risk. Always-on rules silently override a skill's intent.
For each skill extract: name, description (routing surface), claimed
triggers, cross-referenced skills, core directives (read-only vs apply-fixes,
plan-first vs edit, hard always/never). One index. Compare the set, not
pairwise guesswork.
House skill name in this repo is audit-responsive.
audit-responsive-layout is retired. /responsive-audit is a valid command
alias, but bare/backticked responsive-audit is not a skill handoff.
Phase 1 — Conflict and drift [HIGH freedom]
Contradictory directives — Opposite behavior for an overlapping situation (e.g. "fix inline" vs "never edit in the audit pass"). Rules-vs-skill is worst. List every pair that cannot both be honored.
Trigger overlap / mis-routing — Phrases that match many skills. Example cluster in this pack:
"audit my UI" →
audit-ux,audit-uiux-design-system,audit-responsive,audit-ui-states,thirdparty-web-interface-guidelines,plan-uiux-unification
Overlap is fine if each description carves out when it, specifically, applies. Flag members that do not disambiguate.
Duplicated guidance — The same block copy-pasted across skills. Drift risk. Name an extraction target (shared rule or one canonical skill).
Stale cross-references — Handoff to a renamed/removed skill. Resolve every backtick skill name against the live directory list.
Scope gaps & double-coverage — Two skills claiming the same task with no delineation, or a chain step no skill owns. This is pack coverage, not product gaps.
Context-budget bloat — Over-broad descriptions (narrow skill, greedy triggers). Bodies near the 500-line cap that a 60-line skill could hold. Headroom exists because context is scarce; the pack should respect that.
Convention drift — Family-placement (audit-and-fix under enhance-* is
OK when called out, like enhance-email-deliverability). Inconsistent
read-only/plan-only semantics inside a family. Description-voice drift.
Phase 2 — Routing dry-run (optional) [LOW freedom — skip honestly]
If a harness can show which skill the agent selects for a phrase, feed realistic user lines and record matches. Ambiguous phrases that should map to one skill but match several confirm Phase 1 empirically.
Cursor / Claude Code usually do not expose selection. Skip this phase explicitly; static description analysis still stands. Do not pretend a dry-run ran.
Definition of Done
- Corpus indexed: skills + commands + subagents + rules
- Contradictory-directive pairs listed (rules-vs-skill included)
- Trigger-overlap clusters identified; carve-outs checked
- Duplicated blocks + extraction targets named
- Cross-refs resolved; dangling listed (incl. retired
audit-responsive-layoutand bareresponsive-auditskill handoffs) - Double-coverage and handoff gaps surfaced
- Bloat / convention drift noted
- Routing dry-run run or explicitly skipped
- Nothing edited without approval
Self-critique before reporting [LOW freedom — do not skip]
- Quoted pair — every contradiction cites both texts
- Dry-run honesty — skipped if no harness; do not pretend it ran
- Name hygiene — retired
audit-responsive-layoutand bareresponsive-auditskill handoffs listed;/responsive-auditcommand kept - Right owner — how to write a skill →
meta-skill-creator; how to upgrade prompts →enhance-skill-prompts - Nothing rewritten until approved; description fixes first (routing)
Output format
- Conflict table — A | B (or rule) | type | why they can't coexist | severity
- Trigger-overlap clusters — phrase | skills | who should win | description fix
- Dangling references — skill | broken ref | correct target
- Coverage map — double-coverage + gaps
- Bloat / convention — item | issue | fix
- Fix plan — description rewrites first, then dedupe/extraction, then convention. Propose only.
Related
meta-skill-creator— write a new SKILL.mdenhance-skill-prompts— upgrade an existing skill's prompt (T1–T6), not its behaviorvalidate:skills— per-file spec after description editsenhance-agent-guardrails— app-repo policy, not pack coherenceplan-docs-sync— docs vs codeaudit-responsive/audit-ux/audit-ui-states— the UI-audit cluster this skill is expected to flag