Agent skill

Project Health

by jezweb in jezweb/claude-skills

All-in-one project configuration and health management. An agent skill from jezweb/claude-skills.

MITAuto-check passedAgent Workflows

Install Project Health

skills CLI
$ npx skills add jezweb/claude-skills --skill project-health -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install jezweb/claude-skills project-health --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/jezweb/claude-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/dev-tools/skills/project-health .claude/skills/project-health && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
project-health
GitHub stars
1.1k
Token cost
~3k tokens
SKILL.md length
797 words
Files
6 (incl. references)
Skills in repo
52
Repo updated
First seen
Licence
MIT

At a glance

All-in-one project configuration and health management. An agent skill from jezweb/claude-skills.

  • Works in 3 steps: Launch Permission Auditor and Context… → Combine findings into a single report → Apply fixes after single yes/no…
  • With project health
  • SKILL.md covers When to Use, Architecture: Sub-Agents, Mode 1: Full Health Check and Mode 2: New Project Setup, plus 7 more sections
  • Calls git and gh; needs GEMINI_API_KEY

What it does

Project Health is an agent skill from jezweb/claude-skills. All-in-one project configuration and health management. Sets up new projects (settings.local.json, CLAUDE.md, .gitignore), audits existing projects (permissions, context quality, MCP coverage, leaked secrets, stale docs), tidies accumulated cruft, captures session learnings, and adds permission presets. Uses sub-agents for heavy analysis to keep main context clean. Trigger with 'project health', 'check project', 'setup project', 'kickoff', 'bootstrap', 'tidy permissions', 'clean settings', 'capture learnings'…

Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including reference files (for example `references/commit-hook.md`, `references/permission-presets.md` and `references/project-types.md`). Compatibility notes: claude-code-only

It sits in Agent Workflows, covering Subagents, Project scaffolding and Secrets management. It works with Python, Model Context Protocol, Cloudflare Workers and Rust. The repository describes itself as: Skills for Claude Code CLI such as full stack dev Cloudflare, React, Tailwind v4, and AI integrations. The licence is MIT.

When your agent uses it

  • With project health
  • Tidy permissions
  • Capture learnings
  • Add python permissions

Example prompts

  • “project health”
  • “check project”
  • “setup project”
  • “/project-health”

Requirements

  • Python 3
  • Docker
  • A credential in GEMINI_API_KEY
  • Compatibility (from SKILL.md): claude-code-only

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Launch Permission Auditor and Context Auditor agents in parallel
  2. Combine findings into a single report
  3. Apply fixes after single yes/no confirmation

What it can do on your machine

Read from SKILL.md and the folder at commit 1260fa7. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • gh

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git and gh, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • GEMINI_API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    claude-code-only

    From compatibility in the SKILL.md frontmatter.

Context cost

Project Health loads about 3k tokens when it runs, and up to ~13k if it reads all its reference files. Until then it costs about 148 tokens; SKILL.md has 797 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~148
When it runs · the whole SKILL.md, loaded when a task matches
~3k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~13k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from jezweb/claude-skills at commit 1260fa7, republished under its MIT licence (© jezweb). 797 words, ~2,991 tokens.

Download SKILL.mdSave it as .claude/skills/project-health/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.
name
project-health
description
All-in-one project configuration and health management. Sets up new projects (settings.local.json, CLAUDE.md, .gitignore), audits existing projects (permissions, context quality, MCP coverage, leaked secrets, stale docs), tidies accumulated cruft, captures session learnings, and adds permission presets. Uses sub-agents for heavy analysis to keep main context clean. Trigger with 'project health', 'check project', 'setup project', 'kickoff', 'bootstrap', 'tidy permissions', 'clean settings', 'capture learnings', 'audit context', 'add python permissions', or 'init project'.
compatibility
claude-code-only

Project Health

One skill for everything about your project's Claude Code configuration. Run it at the start, middle, or end of a project — it figures out what's needed.

Goal: Zero permission prompts, well-organised context files, no cruft.

When to Use

You say...What happens
"project health" / "check project"Full audit: permissions + context + docs
"setup project" / "kickoff" / "bootstrap"New project setup from scratch
"tidy permissions" / "clean settings"Fix permissions file only
"capture learnings" / "update CLAUDE.md"Save session discoveries
"add python" / "add docker permissions"Add a preset to existing settings
"audit context" / "audit memory"Context-focused audit only

Architecture: Sub-Agents

Heavy analysis runs in sub-agents to keep the main conversation clean. The main agent orchestrates; sub-agents do the scanning and return summaries.

Agent 1: Permission Auditor

Launched with Task(subagent_type: "general-purpose"). Prompt:

Read .claude/settings.local.json.

**Discover connected MCP servers**: Use ToolSearch (search "mcp") and extract unique
server prefixes from tool names (e.g. mcp__vault__secret_list → vault).

**Discover installed skills**: Use the Skill tool or ToolSearch to list available skills.
For each skill that has scripts/ in its directory, note what Bash patterns it needs
(python3, env var prefixes like GEMINI_API_KEY=*, etc.). Check the SKILL.md for any
MCP tools the skill references (e.g. mcp__vault__secret_get).

Report:
1. MCP servers connected but NOT in settings (missing)
2. MCP servers in settings but NOT connected (stale)
3. Skill permissions: Bash patterns and MCP tools that installed skills need but aren't approved
4. File access: check for Read/Edit/Write patterns for .claude/** and //tmp/**
   in project settings, and ~/Documents/**/~/.claude/** in global settings
5. Leaked secrets: entries containing API keys, tokens, bearer strings, hex >20 chars, base64 >20 chars
6. Legacy colon syntax: entries like Bash(git:*) instead of Bash(git *)
7. Junk entries: shell fragments (Bash(do), Bash(fi), Bash(then), Bash(else), Bash(done)),
   __NEW_LINE_* artefacts, loop body fragments (Bash(break), Bash(continue), Bash(echo *))
8. Duplicates: entries covered by a broader pattern (e.g. Bash(git add *) redundant if Bash(git *) exists)
9. Missing presets: based on files present, suggest presets from [permission-presets.md]

Prefer Read/Glob/Grep tools over Bash. If you need to scan multiple files or
run 3+ commands for one analysis, write a Python script to .jez/scripts/
and run it once (mkdir -p .jez/scripts first).

Return a structured summary, not raw data.
Agent 2: Context Auditor

Launched with Task(subagent_type: "general-purpose"). Prompt:

Audit the project context landscape at [repo-path]:

1. Find all CLAUDE.md files. For each:
   - Count lines (target: root 50-150, subdirs 15-50)
   - Score quality on 6 criteria (see quality-criteria.md)
   - Check for stale file/path references
   - Flag oversized files

2. Find .claude/rules/ topic files. Check sizes (target: 20-80 lines).

3. Detect project type from files present (see project-types.md).
   Check expected docs exist (ARCHITECTURE.md, DATABASE_SCHEMA.md, etc.)

4. Find public markdown (README.md, LICENSE, CONTRIBUTING.md).
   Check for overlap with CLAUDE.md content.

5. Check auto-memory at ~/.claude/projects/*/memory/MEMORY.md

6. If Cloudflare project: find all wrangler.jsonc/wrangler.toml files.
   Check each has "observability": { "enabled": true }. Flag any missing it.

Prefer Read/Glob/Grep tools over Bash. If you need to scan many files or
aggregate data across the repo, write a Python script to .jez/scripts/
and run it once rather than running many individual bash commands
(mkdir -p .jez/scripts first).

Return: project type, quality scores, missing docs, stale refs, overlaps,
size violations, observability gaps, and total markdown footprint.
Parallel Execution

For a full health check, launch both agents in parallel:

Task(subagent_type: "general-purpose", name: "permission-audit", prompt: "...")
Task(subagent_type: "general-purpose", name: "context-audit", prompt: "...")

Both return summaries. The main agent combines them into one report and proposes fixes.

Mode 1: Full Health Check

The default. Run this anytime.

Steps
  1. Launch Permission Auditor and Context Auditor agents in parallel

  2. Combine findings into a single report:

    ## Project Health Report
    
    **Project type**: [detected type]
    **CLAUDE.md quality**: [score]/100 ([grade])
    
    ### Permissions
    - Missing MCP servers: [list]
    - Leaked secrets: [count] found
    - Legacy syntax: [count] entries
    - Missing presets: [list]
    
    ### Context
    - Oversized files: [list]
    - Stale references: [list]
    - Missing docs: [list]
    - Overlaps: [list]
    
    ### Recommended Fixes
    1. [fix 1]
    2. [fix 2]
    ...
  3. Apply fixes after single yes/no confirmation

Mode 2: New Project Setup

When: No .claude/settings.local.json exists, or user says "setup" / "kickoff".

Steps
  1. Detect project type from files present:

    IndicatorTypePreset
    wrangler.jsonc or wrangler.tomlcloudflare-workerJS/TS + Cloudflare
    vercel.json or next.config.*vercel-appJS/TS + Vercel
    astro.config.*astroJS/TS + Static Sites
    package.json (no deploy target)javascript-typescriptJS/TS
    pyproject.toml or setup.py or requirements.txtpythonPython
    Cargo.tomlrustRust
    go.modgoGo
    Gemfile or RakefilerubyRuby
    composer.json or wp-config.phpphpPHP
    pom.xml or build.gradle*javaJava/JVM
    *.sln or *.csprojdotnet.NET
    mix.exselixirElixir
    Package.swiftswiftSwift + macOS
    pubspec.yamlflutterMobile
    Dockerfile or docker-compose.ymldockerDocker
    fly.toml or railway.json or netlify.tomlhosted-appHosting Platforms
    supabase/config.tomlsupabaseHosting + Database
    .claude/agents/ or operational scriptsops-admin—
    Empty directoryAsk the user—

    Types stack (e.g. cloudflare-worker + javascript-typescript).

  2. Generate .claude/settings.local.json:

    • Read references/permission-presets.md
    • Always include Universal Base (includes file access for .claude/**, //tmp/**)
    • Add detected language + deployment presets
    • Check if global ~/.claude/settings.local.json has home-relative file access patterns (~/Documents/**, ~/.claude/**). If not, suggest adding them there (NOT in the project file — home paths belong in global settings only)
    • Launch Permission Auditor agent to discover MCP servers and add per-server wildcards
    • Always include WebSearch, WebFetch
    • Always include explicit gh subcommands (workaround for Bash(gh *) bug)
    • Write with // comment groups
  3. Generate CLAUDE.md:

  4. Generate .gitignore:

    • Read references/templates.md
    • Always include .claude/settings.local.json, .claude/plans/, .jez/screenshots/, .jez/artifacts/
    • Do NOT gitignore .jez/scripts/ — generated scripts are worth keeping
  5. Optionally (ask first): git init + gh repo create

  6. Warn: "Project settings.local.json SHADOWS global settings (does not merge). Session restart needed."

Mode 3: Tidy Permissions

When: User says "tidy permissions" or health check found permission issues.

Launch the Permission Auditor agent, then apply its recommended fixes.

Show full SKILL.md (347 more words)Show less

Mode 4: Capture Learnings

When: End of session, "capture learnings", "save what we learned".

This runs in the main context (not a sub-agent) because it needs access to the conversation history.

  1. Review conversation for discoveries worth preserving
  2. Decide placement:
    Applies to all projects?
    ├── YES → ~/.claude/rules/<topic>.md
    └── NO  → Specific to a subdirectory?
        ├── YES → <dir>/CLAUDE.md
        └── NO  → Reference or operational?
            ├── Reference → docs/ or ARCHITECTURE.md
            └── Operational → ./CLAUDE.md (root)
  3. Draft all changes as diffs in a single batch
  4. Apply after single yes/no confirmation

Keep it concise: one line per concept.

Mode 5: Add Preset

When: "add python permissions", "add docker", "add MCP servers".

  1. Read the preset from references/permission-presets.md
  2. Read existing .claude/settings.local.json
  3. Merge without duplicating
  4. Remind: session restart required

Mode 6: Restructure Context

When: Root CLAUDE.md over 200 lines, "restructure memory".

  1. Launch Context Auditor agent first
  2. Based on findings:
    • Split oversized CLAUDE.md into .claude/rules/<topic>.md
    • Extract directory-specific content to sub-directory CLAUDE.md
    • Move reference material to docs/
    • Resolve overlaps
    • Create missing docs for project type
  3. Present plan, apply after approval
Size Targets
FileTargetMaximum
Root CLAUDE.md50-150 lines200
Sub-directory CLAUDE.md15-50 lines80
Rules topic file20-80 lines120

Permission Syntax Quick Reference

PatternMeaning
Bash(git *)Preferred — space before * = word boundary
Bash(nvidia-smi)Exact match, no arguments
WebFetchBlanket web fetch
WebSearchBlanket web search
mcp__servername__*All tools on one MCP server
What Does NOT Work
PatternWhy
mcp__*Wildcard doesn't cross __ boundary
mcp__*__*Still doesn't work
Bash(git:*)Deprecated colon syntax (works but prefer space)
Important Behaviours
  • Not hot-reloaded: settings.local.json edits need session restart
  • "Don't ask again" injects at runtime (no restart) using colon format — normal
  • Shadows, not merges: Project settings completely replace global
  • gh bug: Bash(gh *) sometimes misses subcommands — include explicit Bash(gh issue *) etc.

Autonomy

  • Just do it: Detect project type, launch audit agents, discover MCP servers
  • Brief confirmation: Write/update files (single batch yes/no)
  • Ask first: git init, GitHub repo, delete existing content, major restructures

Reference Files

WhenRead
Building permission presetsreferences/permission-presets.md
Generating CLAUDE.md, .gitignorereferences/templates.md
Scoring CLAUDE.md qualityreferences/quality-criteria.md
Detecting project type + expected docsreferences/project-types.md
Setting up commit capture hookreferences/commit-hook.md

© jezweb, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 5 other files (references) in plugins/dev-tools/skills/project-health of jezweb/claude-skills.

  • SKILL.md
  • references/commit-hook.md
  • references/permission-presets.md
  • references/project-types.md
  • references/quality-criteria.md
  • references/templates.md

Open the folder on GitHubat commit 1260fa7

Compare with similar skills

Project Health next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Project Health compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Project Health this skilljezweb/claude-skills1.1k—~3kAutomated safety check: PassMIT
Scaffold ProjectMarve10s/Better-Fullstack756—~716Automated safety check: PassMIT
Goal Prompt Builderwin4r/goal-prompt-builder229—~3.1kAutomated safety check: PassMIT
MCP Scaffoldtimothywarner-org/claude-code224—~940Automated safety check: PassMIT
Agnixagent-sh/agnix445—~874Automated safety check: PassApache-2.0
Claude Docs Consultantcentminmod/my-claude-code-setup2.7k—~959Automated safety check: PassMIT

Similar skills

  • Scaffold Project

    Marve10s/Better-Fullstack

    Scaffold a new app, API, backend, fullstack project, mobile app, polyglot service, monorepo, or starter with Better Fullstack.

    756 GitHub stars~716 tokensUpdated today
    DevelopmentAuto-check passed
  • Goal Prompt Builder

    win4r/goal-prompt-builder

    Build high-quality /goal commands for OpenAI Codex CLI 0.128+ that maximize audit-friendliness and minimize false-completion.

    229 GitHub stars~3.1k tokensUpdated 5 mo ago
    Agent WorkflowsAuto-check passed
  • MCP Scaffold

    timothywarner-org/claude-code

    Scaffold production-ready Python MCP servers using FastMCP. An agent skill from timothywarner-org/claude-code.

    224 GitHub stars~940 tokensUpdated 2 mo ago
    Agent WorkflowsAuto-check passed
  • Agnix

    agent-sh/agnix

    A skill your agent uses when user asks to 'lint agent configs', 'validate skills', 'check CLAUDE.md', 'validate hooks', 'lint MCP'.

    445 GitHub stars~874 tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Claude Docs Consultant

    centminmod/my-claude-code-setup

    Consult official Claude Code documentation from code.claude.com using selective fetching.

    2.7k GitHub stars~959 tokensUpdated 3 days ago
    Agent WorkflowsAuto-check passed
  • AI Bom

    cdxgen/cdxgen

    Generates AI-BOM, MCP inventory, AI skill inventory, and AI authorship provenance documents with cdxgen, cataloging models, inference services, Hugging Face purls, MCP servers and their…

    1.1k GitHub stars~2.5k tokensUpdated today
    Agent WorkflowsAuto-check passed

More from jezweb/claude-skills

All 52 skills in this repo
  • Favicon Gen

    jezweb/claude-skills

    Generate custom favicons from logos, text, or brand colours.

    1.1k GitHub starsUsed in 1 repo~1k tokens
    Auto-check passed
  • Tailwind Theme Builder

    jezweb/claude-skills

    Set up Tailwind v4 + shadcn/ui themed UI with dark mode. An agent skill from jezweb/claude-skills.

    1.1k GitHub starsUsed in 1 repo~3.2k tokens
    Auto-check passed
  • Elevenlabs Agents

    jezweb/claude-skills

    Build conversational AI voice agents on the ElevenLabs platform.

    1.1k GitHub stars~3.3k tokensUpdated yesterday
    Auto-check passed
  • Responsiveness Check

    jezweb/claude-skills

    Test website responsiveness across viewport widths using browser automation.

    1.1k GitHub starsUsed in 1 repo~1.7k tokens
    Auto-check passed
  • MCP Builder

    jezweb/claude-skills

    Build MCP servers in Python with FastMCP. An agent skill from jezweb/claude-skills.

    1.1k GitHub stars~3.1k tokensUpdated yesterday
    Auto-check: notes
  • GitHub Release

    jezweb/claude-skills

    Prepare and publish GitHub releases. An agent skill from jezweb/claude-skills.

    1.1k GitHub stars~944 tokensUpdated yesterday
    Auto-check: notes

Categories

Questions about Project Health

What does Project Health do?

All-in-one project configuration and health management. An agent skill from jezweb/claude-skills. Project Health is an agent skill from jezweb/claude-skills. All-in-one project configuration and health management.

When should I use Project Health?

Project Health fits situations like: with project health; tidy permissions; capture learnings; add python permissions.

How do I install Project Health in Claude Code?

Run `npx skills add jezweb/claude-skills --skill project-health -a claude-code`. Or copy the skill folder (plugins/dev-tools/skills/project-health in jezweb/claude-skills) into .claude/skills/project-health in your project. Claude Code loads it when a task matches its description.

How do I install Project Health in Codex?

Run `npx skills add jezweb/claude-skills --skill project-health -a codex`. Or copy the skill folder (plugins/dev-tools/skills/project-health in jezweb/claude-skills) into .agents/skills/project-health in your project. Codex loads it when a task matches its description.

Can I use Project Health in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jezweb/claude-skills --skill project-health -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/project-health, .gemini/skills/project-health, .github/skills/project-health and .opencode/skills/project-health in your project.

What does Project Health need to run?

Going by SKILL.md and its folder, Project Health needs the command-line tools its instructions call (git and gh) and credentials named GEMINI_API_KEY. Our summary lists: Python 3; Docker; A credential in GEMINI_API_KEY. Compatibility (from SKILL.md): claude-code-only.

Does Project Health access the network?

SKILL.md contains no URLs. Its commands use git and gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Project Health safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Project Health use?

Project Health is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Project Health use?

About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 10k tokens, read only when the agent opens those files.

What are the alternatives to Project Health?

Skills that share tags, products or a category with Project Health: Scaffold Project (Marve10s/Better-Fullstack, 756 stars), Goal Prompt Builder (win4r/goal-prompt-builder, 229 stars), MCP Scaffold (timothywarner-org/claude-code, 224 stars) and Agnix (agent-sh/agnix, 445 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Project Health?

jezweb (a GitHub user) maintains it in jezweb/claude-skills, which has 1,055 GitHub stars. The repository holds 52 skills in this directory. The repository was last updated on October 9, 2026.

Source: jezweb/claude-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.