plugins/meta/skills/audit-references/SKILL.md
Audit plugin health and find broken references in manifests, commands, agents, and skills
npx skillsauth add coalesce-labs/catalyst audit-referencesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are tasked with auditing plugin health by finding broken references across all plugin manifests, commands, agents, skills, and documentation.
When invoked, immediately run the backing script to gather results:
SCRIPT_DIR="${CLAUDE_PLUGIN_ROOT}/scripts"
"${SCRIPT_DIR}/audit-references.sh" --json --all
Parse the JSON output to understand the full picture.
Run the script with --json to get machine-readable output. The script checks three severity
levels:
plugin.json) pointing to files that don't exist on diskPresent findings grouped by severity:
## Plugin Reference Audit
### CRITICAL ({count})
These manifest entries declare files that don't exist. Plugins will fail to load these.
| Plugin | Manifest | Reference | Detail |
|--------|----------|-----------|--------|
| {plugin} | {manifest} | {ref} | {detail} |
### WARNING ({count})
Path references in plugin source files that don't resolve.
| Source File | Line | Reference | Detail |
|-------------|------|-----------|--------|
| {file} | {line} | {ref} | {detail} |
### INFO ({count})
Stale documentation references (cosmetic only).
| Source File | Line | Reference |
|-------------|------|-----------|
| {file} | {line} | {ref} |
For each broken reference at CRITICAL or WARNING level, try to find the actual file:
For CRITICAL (manifest entries):
commands/deep_research.md)For WARNING (source references):
## Resolution Plan
### Auto-fixable ({count})
These broken references have clear fixes:
| # | File | Line | Current Reference | Suggested Fix | Confidence |
|---|------|------|-------------------|---------------|------------|
| 1 | {file} | {line} | {old_ref} | {new_ref} | High |
| 2 | {file} | {line} | {old_ref} | {new_ref} | Medium |
### Needs Manual Review ({count})
These references couldn't be auto-resolved:
| File | Line | Reference | Reason |
|------|------|-----------|--------|
| {file} | {line} | {ref} | File not found anywhere in repo |
### Safe to Ignore ({count})
These are documentation examples, templates, or prose references:
| File | Line | Reference | Why Safe |
|------|------|-----------|----------|
| {file} | {line} | {ref} | Example path in documentation |
Would you like me to:
1. Apply all auto-fixes
2. Apply fixes selectively (I'll ask about each)
3. Just show the report (no changes)
Wait for user response.
For each approved fix:
plugin.jsonAfter applying fixes, re-run the audit to verify:
"${SCRIPT_DIR}/audit-references.sh" --json
Present the before/after comparison:
## Audit Results After Fix
| Severity | Before | After |
|----------|--------|-------|
| CRITICAL | {before} | {after} |
| WARNING | {before} | {after} |
| INFO | {before} | {after} |
{remaining issues if any}
${CLAUDE_PLUGIN_ROOT} paths are excluded: These resolve at runtime and are always validplugins/meta/scripts/audit-references.sh--json and check the critical count in the outputjq is not installed, the script will report this as a CRITICAL issuedevelopment
Migrate a single-harness repo to the dual-harness layout so both Claude Code and Codex load the same instructions and skills — AGENTS.md as the portable canonical doc, a thin CLAUDE.md `@AGENTS.md` bridge, and a `.agents/skills` dir with a `.claude/skills` symlink onto it. Use when asked to migrate to dual-harness, make this repo work in both Claude and Codex, or for agent metadata cleanup.
tools
Goal-driven senior-engineer pipeline-unstick sweep (CTL-1176 rung 3). Given the stuck/failed/needs-human set (or ONE ticket handed by the recovery router), its GOAL is to get the pipeline MOVING again — not to fix one ticket's review findings (that is phase-remediate). It runs AFTER the eyes (diagnostician evidence) and the hands (deterministic unstuck-sweep seams) have already tried, and it CONSUMES their output from a recovery-pass.json brief rather than re-diagnosing or redoing their narrow work. It acts like a senior engineer with full tool access — it resolves merge conflicts, rebases, force-pushes, merges green PRs, and re-dispatches stalled phases AUTONOMOUSLY — and escalates to the operator ONLY for a genuine value judgment / something that degrades other functionality / a real cost-benefit trade-off / a serious architecture change / an ADR conflict. On escalation it AUTHORS the operator inbox row + the push notification (executive-voiced). Dispatched as a `claude --bg` job by phase-agent-dispatch via slash command, AND invocable bare by the operator as a sweep — hence `user-invocable: true`. Ships behind CATALYST_RECOVERY_PASS (off by default — no live behavior change until shadow/enforce).
tools
Diagnose and fix Catalyst setup issues. Validates tools, database, config, OTel, direnv, and thoughts. Automatically fixes what it can — creates directories, initializes the database, sets WAL mode, runs migrations. Use for new installs, upgrades, or when something isn't working.
tools
--- name: phase-triage description: Phase agent that triages a Linear ticket — expands acronyms, classifies (feature/bug/docs/refactor/chore), identifies genuine blockers (a semantic second-pass over the backlog — NOT a prose scrape; CTL-838), estimates scope, writes triage.json, and posts a triage analysis comment to Linear. Triage completion is signaled by that comment plus the local triage.json — there is no `triaged` label. Emits phase.triage.complete.<TICKET> on success and phase.triage.fai