con un clic
health-check
Verify CLI tool availability, authentication status, config syntax, MCP connectivity, and symlink integrity for the Manifest environment.
Menú
Verify CLI tool availability, authentication status, config syntax, MCP connectivity, and symlink integrity for the Manifest environment.
Cross-reference a project's spec / plan / tasks artifacts for internal consistency using an independent model (Gemini), and surface structured remediation guidance (Location / Gap / Recommended Direction / Reason Why). Analysis-only — never edits artifacts. Works with both speckit (spec.md/plan.md/tasks.md) and superpowers (design + plan-with-embedded-tasks) layouts. Auto-discovers artifacts, or pass explicit paths.
Comprehensive Linear issue audit: validate prioritization, identify duplicates and overlapping issues, detect stale/obsolete issues, produce clean actionable backlog
Retrieve credentials (passwords, API keys, tokens, SSH keys, secrets) from Proton Pass via the `pass-cli` agent CLI. Use whenever a task needs a login/secret to access a tool, website, database, or API — or when the user mentions Proton Pass, pass-cli, a vault, or "get the credentials/password/token for X". Covers session setup with a Personal Access Token, the mandatory access-reason for reading items, vault/item discovery, and auto-recovery from an expired session.
Turn SkillClaw's evolved skills into a reviewed PR into .skillshare/skills/. Dry-run by default (shows the diff table and makes no changes); --apply opens a single review PR with one commit per skill. Requires the SkillClaw daemon (enable via ./bootstrap.sh --enable-skillclaw). Never writes to the source of truth directly — every change goes through PR review.
Verify cross-platform configuration consistency, check symlink integrity, and detect config drift between Claude, Cursor, Gemini, and Codex platforms.
Identify and safely prune stale git branches — merged into the default branch, tracking a deleted remote ([gone]), or stale beyond a threshold. Dry-run by default, local-only by default (remote deletion is opt-in), and never touches protected or currently checked-out branches.
| name | health-check |
| description | Verify CLI tool availability, authentication status, config syntax, MCP connectivity, and symlink integrity for the Manifest environment. |
Run a comprehensive diagnostic of the Manifest agent environment to detect misconfiguration, missing tools, broken symlinks, or authentication issues.
Scope note: This skill covers config syntax, MCP connectivity, symlinks, labels, and script executability. For a quick terminal check of parallel orchestration readiness (enabled agents, state directories), run:
~/.claude/scripts/check_status.sh(also available asparallel_agent.py --status).
Execute each check category below. Collect results into a summary table.
For each service in .claude/config/services.yml where enabled: true:
command -v <tool_command> &>/dev/null
<tool_command> --version 2>/dev/null || <tool_command> version 2>/dev/null
Report: installed (with version) or missing.
Check authentication for each enabled service:
claude auth status 2>/dev/null or check ANTHROPIC_API_KEY is setgemini auth status 2>/dev/null or check GOOGLE_API_KEY is setcursor --version (no separate auth check; presence implies configured)gh auth status 2>/dev/nullglab auth status 2>/dev/nullReport: authenticated, unauthenticated, or not applicable.
Validate YAML and JSON config files:
python3 -c "import yaml; yaml.safe_load(open('<file>'))" 2>&1
python3 -c "import json; json.load(open('<file>'))" 2>&1
Files to check:
.claude/config/command_config.yml.claude/config/parallel_agent.yml.claude/config/services.yml.claude/config/validation_criteria.yml.claude/config/linear_triage.yml.claude/config/mcp_servers.yml.claude/config/labels.yml.claude/settings.local.jsonReport: valid or error details.
For each server in .claude/config/mcp_servers.yml:
curl -s -o /dev/null -w "%{http_code}" --max-time 5 <url>
Report: reachable (HTTP status) or unreachable.
Verify all cross-platform symlinks are intact:
# Expected symlinks (target → source)
.cursor/scripts → ../.claude/scripts
.cursor/config → ../.claude/config
.cursor/prompts → ../.claude/prompts
.cursor/skills → ../.claude/skills
.cursor/.plans → ../.claude/.plans
.gemini/scripts → ../.claude/scripts
.gemini/config → ../.claude/config
.gemini/prompts → ../.claude/prompts
.gemini/skills → ../.claude/skills
.gemini/.plans → ../.claude/.plans
.codex/scripts → ../.claude/scripts
.codex/config → ../.claude/config
.codex/prompts → ../.claude/prompts
.codex/skills → ../.claude/skills
.codex/.plans → ../.claude/.plans
.antigravity/scripts → ../.claude/scripts
.antigravity/config → ../.claude/config
.antigravity/prompts → ../.claude/prompts
.antigravity/skills → ../.claude/skills
.antigravity/.plans → ../.claude/.plans
Only check symlinks for services marked enabled: true in
.claude/config/services.yml (e.g. skip .cursor/.codex when disabled).
For each: check if symlink exists and target is valid.
Report: intact, broken (dangling), or missing.
Verify the label registry is valid and labels are consistent:
.claude/config/labels.yml exists and is valid YAMLname, color, description, platforms#)gh is available, run gh label list --json name,color and compare against registry# Validate labels.yml syntax
python3 -c "
import yaml, sys
with open('.claude/config/labels.yml') as f:
data = yaml.safe_load(f)
labels = data.get('labels', [])
for label in labels:
assert 'name' in label, f'Missing name in label: {label}'
assert 'color' in label, f'Missing color in {label[\"name\"]}'
assert 'platforms' in label, f'Missing platforms in {label[\"name\"]}'
assert len(label['color']) == 6, f'Invalid color hex in {label[\"name\"]}: {label[\"color\"]}'
print(f'{len(labels)} labels validated')
"
Report: valid (N labels) or error details.
Check if browser-use is available for E2E testing:
# Check CLI
command -v browser-use &>/dev/null && browser-use --version 2>/dev/null
# Check Python module
python3 -c "import browser_use; print(browser_use.__version__)" 2>/dev/null
Report: installed (with version) or not installed.
This check is informational only — browser-use is an optional tool.
Report as info (not fail) when missing.
Verify all scripts in .claude/scripts/ are executable:
[[ -x "$script" ]]
Report: executable or not executable.
Only when skillclaw.enabled: true in ~/.claude/config/services.yml:
# Daemon health (fail-open: a red here means capture is off, not that agents are broken)
curl -sf --max-time 0.3 http://127.0.0.1:8765/health && echo "daemon: up" || echo "daemon: down"
# Wrapper functions present in the shell profile
grep -q "MANIFEST SKILLCLAW WRAPPERS" "${ZDOTDIR:-$HOME}/.zshrc" && echo "wrappers: present" || echo "wrappers: MISSING"
# Storage locked down (must be 700) — GNU-first so it works on Linux and macOS
stat -c '%a' ~/.skillclaw 2>/dev/null || stat -f '%Lp' ~/.skillclaw
Report daemon: down as INFO (capture paused, agents unaffected), but
wrappers: MISSING or storage perms != 700 as WARN.
## Health Check Report
| Category | Check | Status | Details |
|----------|-------|--------|---------|
| CLI Tools | claude | pass | v4.x.x |
| CLI Tools | gemini | pass | v1.x.x |
| CLI Tools | cursor | fail | Not installed |
| Auth | claude | pass | Authenticated |
| Auth | gh | warn | Not configured |
| Config | command_config.yml | pass | Valid YAML |
| Config | services.yml | fail | Parse error on line 12 |
| MCP | sentry | pass | HTTP 200 |
| MCP | linear | warn | HTTP 401 (auth required) |
| Symlinks | .cursor/scripts | pass | Intact |
| Symlinks | .gemini/config | fail | Broken |
| Labels | labels.yml | pass | 5 labels validated |
| Scripts | parallel_agent.py | pass | Executable |
### Summary
- pass: N checks passed
- warn: N warnings (non-blocking)
- fail: N failures (action needed)