git:20260311.2835406 to git:20260421.19f33a5

1 added, 0 removed. Audit A to A.

---
name: claude-skill-prereq-audit
+ license: MIT
description: >
Scan skills for prerequisite tools, MCP servers, and auth requirements,
then check if everything is installed and authenticated. Offers to fix issues.
Use when setting up a new machine, after installing skills, or to verify your
environment. Triggers: "check prerequisites", "skill prereqs", "are my tools installed",
"verify skill dependencies", "/claude-skill-prereq-audit".
argument-hint: "[skill-name ...]"
compatibility: Designed for Claude Code
metadata:
author: jackchuka
scope: generic
confirms:
- install missing tools
---
# Skill Prerequisite Check
Scan installed skills, discover their tool/MCP/auth dependencies via heuristic parsing, check if everything is installed and authenticated, and offer to fix issues interactively.
## When to Use
- Setting up a new machine
- After installing new skills
- Verifying environment is ready for all skills
- Debugging "tool not found" errors during skill execution
## Arguments
Parse from the user's invocation:
- **Skill names**: Any tokens after the command → filter to those skills only
- **Default**: scan all skills in `~/.claude/skills/` and `.claude/skills/`
## Workflow
### Phase 1: Discover Skills
1. Glob for `~/.claude/skills/*/SKILL.md` and `.claude/skills/*/SKILL.md`
2. Follow symlinks
3. If user specified skill names, filter the list to matching directory names
4. Exclude this skill (`skill-prereq-check`) from the scan list — its own SKILL.md contains tool references as parsing examples, not actual dependencies
5. Read each SKILL.md file
### Phase 2: Parse Prerequisites
For each SKILL.md, extract dependencies using these heuristics:
**CLI tools:**
- Extract command names (first token of each line) from fenced code blocks marked as `bash`, `shell`, or `sh`
- Also scan `## Prerequisites` sections and prose for backtick-quoted tool names followed by "CLI", "installed", or "required"
- Ignore shell builtins and coreutils: `echo`, `cat`, `ls`, `mkdir`, `cd`, `grep`, `sed`, `awk`, `rm`, `cp`, `mv`, `date`, `wc`, `head`, `tail`, `sort`, `uniq`, `export`, `set`, `test`, `true`, `false`, `if`, `then`, `else`, `fi`, `for`, `do`, `done`, `while`, `case`, `esac`, `command`, `which`, `local`, `return`, `read`, `shift`, `printf`, `declare`
- Ignore git subcommands: the tool is `git`, not `git commit`
- Deduplicate per skill
**MCP servers:**
- Scan for `mcp__<server>__` patterns — extract `<server>` as the MCP server name
- Also scan for `<Name> MCP server` or `<Name> MCP tools` in prose — extract `<Name>` lowercased
- Deduplicate per skill
**gh extensions:**
- Scan for `gh <word>` where `<word>` is NOT a built-in gh command: `pr`, `issue`, `release`, `api`, `auth`, `repo`, `project`, `run`, `extension`, `gist`, `ssh-key`, `gpg-key`, `secret`, `variable`, `codespace`, `label`, `ruleset`, `cache`, `attestation`, `status`, `browse`, `search`, `workflow`, `config`, `alias`
- Record as gh extension dependency
**Auth hints:**
- Scan for `auth status`, `auth login`, `auth test`, `auth check`, `authenticated` within 200 characters of a tool name
- Mark that tool as needing an auth check
### Phase 3: Check Dependencies
Run checks for all discovered dependencies. Use parallel Bash calls where possible. Deduplicate check commands across skills — if multiple skills depend on the same tool, run the check once and reuse the result.
**CLI tools:**
1. Run `command -v <tool>` — if exit code 0, installed; otherwise missing
2. If auth hint exists for this tool, run `timeout 10 <tool> auth status 2>&1` (or use the Bash tool's timeout parameter set to 10000ms) and check exit code. If exit code != 0, try `timeout 10 <tool> auth check 2>&1`. If both fail, mark auth as "FAIL". If the command times out, mark auth as "TIMEOUT". If no auth hint, mark as "—"
**MCP servers:**
1. Use ToolSearch with query `+<server>` to check if any `mcp__<server>__*` tools are available in the session
2. If tools found → installed = "yes". If auth tool was referenced in the skill (e.g. `auth_test`), call it to verify. Otherwise auth = "—"
3. If no tools found → installed = "no", auth = "—"
**gh extensions:**
1. Run `gh extension list` once (cache the result)
2. Check if each extension name appears as a suffix in any line of the output (e.g., the line contains `/<extension-name>` or ends with the extension name)
### Phase 4: Present Results
Print a table grouped by skill:
```
## Prerequisite Check
| # | Skill | Tool | Type | Installed | Auth |
|---|-------|------|------|-----------|------|
| 1 | slack-triage | slack | mcp | yes | yes |
| 2 | meeting-scheduler | gws | cli | yes | FAIL |
| 3 | daily-report | gh | cli | yes | yes |
| 4 | daily-report | slackcli | cli | no | — |
| 5 | oss-release | oss-watch | gh-ext | no | — |
Summary: N skills checked, M tools found, X issues
```
- "yes" = check passed
- "FAIL" = check ran and failed
- "—" = not applicable (not installed, or no auth pattern detected)
- Number each row for reference in the fix phase
If no issues found, print "All prerequisites satisfied." and stop.
### Phase 5: Interactive Fix
If issues exist, ask: **"Want me to fix any of these? (e.g. '2, 4' or 'all' or 'done')"**
For each selected item, attempt the appropriate fix:
| Type | Issue | Fix Strategy |
| ------ | ------------- | ---------------------------------------------------------------------------------------------- |
| cli | not installed | Try `brew install <tool>`. If brew doesn't have it, search web for install instructions |
| cli | auth FAIL | Run `<tool> auth login` (interactive) |
| mcp | not available | Tell user: "Add the `<server>` MCP server to your Claude config. I can't auto-configure this." |
| gh-ext | not installed | Run `gh extension install <owner/repo>` — search GitHub for the extension first |
After each fix attempt, re-run the check for that item and show the updated row.
When all selected fixes are attempted, re-print the full table with updated results.
## Error Handling
- If `~/.claude/skills/` doesn't exist, report "No skills directory found at ~/.claude/skills/" and check only `.claude/skills/`
- If a tool's auth check hangs (>10s), kill it and mark as "TIMEOUT"
- If `brew` is not installed, suggest manual install instructions instead
## Examples
Example 1: Check all skills
```
User: "check prerequisites"
Action: Scan all skills, parse deps, check each, show table
```
Example 2: Check specific skills
```
User: "/skill-prereq-check slack-triage meeting-scheduler"
Action: Scan only those two skills, parse deps, check, show table
```
Example 3: Fix issues
```
User: (after seeing table) "fix 2, 5"
Action: Run `gws auth login` for item 2, `gh extension install` for item 5, re-check
```