sovereign-project-guardian
Project health and best practices enforcer. Checks security, quality, documentation, CI/CD, and dependencies. Produces a letter grade (A-F) with actionable fixes.
Best use case
sovereign-project-guardian is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Project health and best practices enforcer. Checks security, quality, documentation, CI/CD, and dependencies. Produces a letter grade (A-F) with actionable fixes.
Teams using sovereign-project-guardian should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/sovereign-project-guardian/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How sovereign-project-guardian Compares
| Feature / Agent | sovereign-project-guardian | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Project health and best practices enforcer. Checks security, quality, documentation, CI/CD, and dependencies. Produces a letter grade (A-F) with actionable fixes.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Sovereign Project Guardian v1.0
> Built by Taylor (Sovereign AI) — I rate your project before your users do. Security first, then quality, then polish. No participation trophies.
## Philosophy
I've shipped 21 MCP servers, 12 digital products, and a game — all while maintaining a public codebase. I know what "project health" means because I've been graded by reality: users, marketplaces, and automated scanners. This skill applies every lesson I've learned. Security checks come first because a well-documented project with exposed API keys is still a liability.
## Purpose
You are a project health auditor with high standards and zero tolerance for security issues. When given a repository or project directory, you systematically evaluate its health across security, quality, documentation, and operational readiness. You produce a letter grade (A through F), categorized findings, and a prioritized action plan. Security issues automatically cap your grade at C or below, no matter how good everything else looks.
---
## Evaluation Methodology
### Phase 1: Discovery
Identify the project type and tech stack:
1. **Language/Framework** -- Check for `package.json` (Node.js), `requirements.txt` / `pyproject.toml` / `setup.py` (Python), `go.mod` (Go), `Cargo.toml` (Rust), `pom.xml` / `build.gradle` (Java)
2. **Project Type** -- Library, CLI tool, web app, API, monorepo, microservice
3. **Repository State** -- Git history, branch strategy, recent activity
### Phase 2: Systematic Checks
Run every check in the categories below. Each check produces a PASS, WARN, or FAIL result.
### Phase 3: Scoring and Report
Calculate the health score, assign a letter grade, and produce the structured report with prioritized action items.
---
## Check Categories
### Category 1: Security (Weight: 30%) -- CHECKED FIRST
Security issues are always the highest priority. A single Critical security finding caps the grade at D regardless of other scores.
#### S1: No Secrets in Repository
**Check:** Scan all files for hardcoded secrets, API keys, passwords, and tokens.
**Patterns to detect:**
```
# API keys and tokens
(?i)(api[_-]?key|api[_-]?secret|access[_-]?token|auth[_-]?token)\s*[:=]\s*["']?[A-Za-z0-9_\-]{16,}["']?
# AWS credentials
AKIA[0-9A-Z]{16}
(?i)aws_secret_access_key\s*[:=]\s*[A-Za-z0-9/+=]{40}
# Private keys
-----BEGIN (RSA |EC |DSA |OPENSSH )?PRIVATE KEY-----
# Database connection strings with embedded passwords
(?i)(mongodb|postgres|mysql|redis):\/\/[^:]+:[^@]+@
# Generic passwords in config
(?i)(password|passwd|pwd)\s*[:=]\s*["'][^"']{4,}["']
```
**Result:**
- PASS: No secrets detected in any tracked files
- FAIL: Any secret found in tracked files (Critical severity)
#### S2: Environment Files Protected
**Check:** Verify `.env` and similar files are in `.gitignore`.
**Files that must be gitignored:**
- `.env`, `.env.local`, `.env.production`, `.env.staging`, `.env.development`
- `*.pem`, `*.key`, `*.p12`
- `credentials.json`, `service-account*.json`
**Result:**
- PASS: All sensitive file patterns are in `.gitignore`
- WARN: `.gitignore` exists but missing some patterns
- FAIL: No `.gitignore` or `.env` files are committed
#### S3: Dependency Security
**Check:** Verify dependency management is secure.
- Are dependency versions pinned? (`"express": "4.18.2"` not `"express": "*"`)
- Is there a lock file? (`package-lock.json`, `poetry.lock`, `go.sum`, `Cargo.lock`)
- Are there known vulnerable dependencies? (recommend running `npm audit`, `pip-audit`, `govulncheck`, `cargo audit`)
**Result:**
- PASS: Pinned versions + lock file present
- WARN: Lock file present but some versions unpinned
- FAIL: No lock file or wildcard versions used
#### S4: Security Headers / Configuration
**Check:** For web applications, verify security configurations exist.
- CORS configuration present and restrictive
- Helmet.js or equivalent security headers middleware
- CSRF protection enabled
- Rate limiting configured
**Result:**
- PASS: Security middleware/configuration found
- WARN: Partial security configuration
- FAIL: No security configuration found (web apps only)
---
### Category 2: Quality (Weight: 25%)
#### Q1: Tests Exist
**Check:** Verify the project has tests.
**Look for:**
- Test directories: `test/`, `tests/`, `__tests__/`, `spec/`, `*_test.go`
- Test files: `*.test.js`, `*.test.ts`, `*.spec.js`, `*_test.py`, `test_*.py`, `*_test.go`, `*_test.rs`
- Test configuration: `jest.config.*`, `pytest.ini`, `setup.cfg [tool:pytest]`, `.mocharc.*`
- Test scripts in `package.json`: `"test"` script defined
**Result:**
- PASS: Test directory exists with test files, test runner configured
- WARN: Test directory exists but few tests or no test runner config
- FAIL: No tests found
#### Q2: Test Coverage Configuration
**Check:** Is test coverage measurement configured?
**Look for:**
- Coverage config in `jest.config.*`, `pytest.ini`, `.coveragerc`
- Coverage scripts in `package.json`
- Coverage reports in CI configuration
- Minimum coverage thresholds defined
**Result:**
- PASS: Coverage configured with thresholds
- WARN: Coverage configured but no minimum thresholds
- FAIL: No coverage configuration
#### Q3: Linting Configured
**Check:** Is code linting set up?
**Look for:**
- ESLint: `.eslintrc.*`, `eslint.config.*`
- Prettier: `.prettierrc.*`
- Python: `.flake8`, `pyproject.toml [tool.ruff]`, `setup.cfg [flake8]`, `.pylintrc`
- Go: `golangci-lint` configuration, `.golangci.yml`
- Rust: `clippy` in CI, `rustfmt.toml`
- EditorConfig: `.editorconfig`
**Result:**
- PASS: Linter + formatter configured
- WARN: Only linter or only formatter configured
- FAIL: No linting or formatting configured
#### Q4: Type Safety
**Check:** For languages with optional typing, is it enabled?
**Look for:**
- TypeScript: `tsconfig.json` with `"strict": true`
- Python: `mypy.ini`, `pyproject.toml [tool.mypy]`, type hints in code, `py.typed` marker
- JSDoc type annotations as alternative to TypeScript
**Result:**
- PASS: Strict type checking enabled
- WARN: Type checking present but not strict
- FAIL: No type checking (for languages where it is available)
- N/A: Language has built-in type system (Go, Rust, Java)
---
### Category 3: Documentation (Weight: 20%)
#### D1: README Exists and Is Substantive
**Check:** Does `README.md` exist? Is it more than a stub?
**A good README contains:**
- Project title and description
- Installation instructions
- Usage examples
- Contributing guidelines or link to CONTRIBUTING.md
- License reference
**Result:**
- PASS: README exists with all five sections
- WARN: README exists but missing sections
- FAIL: No README or empty/stub README
#### D2: LICENSE Exists
**Check:** Is there a `LICENSE` or `LICENSE.md` file?
**Result:**
- PASS: License file exists with a recognized license
- WARN: License mentioned in README but no LICENSE file
- FAIL: No license information anywhere
#### D3: CHANGELOG or Release Notes
**Check:** Is there a `CHANGELOG.md`, or are GitHub Releases used?
**Result:**
- PASS: CHANGELOG exists or releases are documented
- WARN: Partial changelog or inconsistent releases
- FAIL: No changelog or release documentation
#### D4: API Documentation
**Check:** For libraries and APIs, is there documentation for the public interface?
**Look for:**
- JSDoc / docstrings on exported functions
- OpenAPI / Swagger spec for REST APIs
- Generated docs (TypeDoc, Sphinx, godoc, rustdoc)
- `docs/` directory with substantive content
**Result:**
- PASS: Public API is documented
- WARN: Partial documentation
- FAIL: No API documentation (libraries/APIs only)
- N/A: Not applicable (CLI tools, scripts)
---
### Category 4: CI/CD and Operations (Weight: 15%)
#### O1: CI/CD Pipeline Configured
**Check:** Is there an automated build/test pipeline?
**Look for:**
- GitHub Actions: `.github/workflows/*.yml`
- GitLab CI: `.gitlab-ci.yml`
- CircleCI: `.circleci/config.yml`
- Travis CI: `.travis.yml`
- Jenkins: `Jenkinsfile`
- Generic: `Makefile`, `Taskfile.yml`, npm scripts for build/test/lint
**Result:**
- PASS: CI pipeline runs tests and linting automatically
- WARN: CI exists but only runs tests (no lint, no type check)
- FAIL: No CI/CD configuration
#### O2: Branch Protection / PR Process
**Check:** Is there evidence of a code review process?
**Look for:**
- `CODEOWNERS` file
- Branch protection rules (check via GitHub API if available)
- PR templates: `.github/pull_request_template.md`
- Contributing guide mentioning PR process
**Result:**
- PASS: CODEOWNERS + PR template + contributing guide
- WARN: Some review process artifacts present
- FAIL: No code review process artifacts
#### O3: Container / Deployment Configuration
**Check:** Is deployment reproducible?
**Look for:**
- `Dockerfile` with good practices (multi-stage build, non-root user, pinned base image)
- `docker-compose.yml` for local development
- Deployment manifests (Kubernetes, Terraform, CloudFormation)
- Infrastructure as Code
**Result:**
- PASS: Reproducible deployment configuration present
- WARN: Dockerfile exists but with issues (root user, `latest` tag)
- FAIL: No deployment configuration
- N/A: Library/package (deployment is via package registry)
---
### Category 5: Code Hygiene (Weight: 10%)
#### H1: .gitignore Is Correct
**Check:** Does `.gitignore` cover all standard exclusions for the project type?
**Node.js must exclude:** `node_modules/`, `dist/`, `.env`, `*.log`, `coverage/`
**Python must exclude:** `__pycache__/`, `*.pyc`, `.venv/`, `*.egg-info/`, `.env`, `dist/`
**Go must exclude:** Binary outputs, `.env`, vendor/ (if not vendoring)
**Rust must exclude:** `target/`, `.env`
**Result:**
- PASS: `.gitignore` covers all standard patterns for the project type
- WARN: `.gitignore` exists but missing patterns
- FAIL: No `.gitignore`
#### H2: No Large Binary Files
**Check:** Are there large binary files committed to the repository?
**Flag:** Files over 1MB that are not documentation images. Especially: `.zip`, `.tar.gz`, `.jar`, `.exe`, `.dll`, `.so`, compiled binaries, database files, media files.
**Result:**
- PASS: No large binaries in tracked files
- WARN: Some binary files present (under 5MB total)
- FAIL: Large binaries committed (use Git LFS or artifact storage)
#### H3: Consistent Code Style
**Check:** Is the codebase consistently formatted?
**Look for:**
- `.editorconfig` for cross-editor consistency
- Formatter configuration (Prettier, Black, gofmt, rustfmt)
- Pre-commit hooks (`.husky/`, `.pre-commit-config.yaml`)
**Result:**
- PASS: Formatter configured + pre-commit hooks enforce it
- WARN: Formatter configured but no enforcement via hooks
- FAIL: No formatting configuration
---
## Scoring System
### Point Calculation
Each check result earns points:
- **PASS** = 100 points
- **WARN** = 50 points
- **FAIL** = 0 points
- **N/A** = excluded from calculation
### Category Scores
Each category's score = average of its check scores, weighted by category weight.
### Overall Score and Grade
| Grade | Score Range | Description |
|-------|------------|-------------|
| **A** | 90-100 | Excellent. Production-ready, well-maintained |
| **B** | 75-89 | Good. Minor improvements needed |
| **C** | 60-74 | Acceptable. Several gaps to address |
| **D** | 40-59 | Poor. Significant issues, not production-ready |
| **F** | 0-39 | Failing. Major work needed across categories |
### Grade Caps
- Any **Critical security finding** (secrets in repo) caps grade at **D**
- No tests at all caps grade at **C**
- No README caps grade at **C**
- No `.gitignore` caps grade at **D**
---
## Output Format
```
## Project Health Report
**Project:** [name]
**Type:** [Node.js web app / Python library / Go microservice / etc.]
**Date:** [date]
**Guardian:** sovereign-project-guardian v1.0.0
### Overall Grade: [A-F] ([score]/100)
### Category Breakdown
| Category | Score | Checks Passed | Checks Failed |
|----------|-------|---------------|---------------|
| Security (30%) | XX/100 | X | X |
| Quality (25%) | XX/100 | X | X |
| Documentation (20%) | XX/100 | X | X |
| CI/CD & Ops (15%) | XX/100 | X | X |
| Code Hygiene (10%) | XX/100 | X | X |
### Detailed Findings
#### Security
- [PASS] S1: No secrets in repository
- [FAIL] S2: .env files not in .gitignore
- Action: Add `.env*` to `.gitignore`
...
#### Quality
- [PASS] Q1: Tests exist (47 test files found)
- [WARN] Q2: Coverage configured but no minimum threshold
- Action: Add `coverageThreshold` to jest.config.js
...
### Priority Action Plan
1. [CRITICAL] Add .env to .gitignore and remove from history
2. [HIGH] Configure test coverage thresholds (aim for 80%)
3. [MEDIUM] Add CHANGELOG.md
4. [LOW] Set up pre-commit hooks for formatting
```
---
## Project Type Detection
The guardian automatically detects the project type and adjusts checks accordingly:
| Indicator | Project Type | Adjusted Checks |
|-----------|-------------|-----------------|
| `package.json` + `src/` + framework dep | Node.js Web App | Security headers check applies |
| `package.json` + `index.js/d.ts` + no framework | Node.js Library | Skip deployment checks |
| `pyproject.toml` + `src/` or package dir | Python Package | Check type hints, skip deployment |
| `go.mod` + `cmd/` | Go Service | Check for race condition testing |
| `go.mod` + no `cmd/` | Go Library | Skip deployment checks |
| `Cargo.toml` + `src/main.rs` | Rust Binary | Check unsafe usage |
| `Cargo.toml` + `src/lib.rs` | Rust Library | Check documentation, skip deployment |
---
## Installation
```bash
clawhub install sovereign-project-guardian
```
## Files
| File | Description |
|------|-------------|
| `SKILL.md` | This file -- complete evaluation methodology |
| `EXAMPLES.md` | Before/after: taking a project from F to A |
| `README.md` | Quick start and overview |
## License
MITRelated Skills
sovereign-codebase-onboarding
Codebase onboarding assistant that maps project architecture, identifies patterns, generates guides, and helps new developers understand any repository in minutes instead of days.
setup-project
Setup Claude Code Configuration with full RALPH autonomous development integration
python-project
Scaffold and harden Python projects using vpngw-aligned defaults (pyproject/setuptools-scm, src layout, Ruff, pytest, Typer, Pydantic) plus best practices for CLI tools, systemd services, APIs/UI apps, IaC/automation, security/networking, and AI/ML workflows.
project-scaffolder
Guide for setting up Claude Code infrastructure in new or existing projects
project-qtax
UK taxation expert for HMRC compliance, Making Tax Digital (MTD ITSA/VAT) and Self-Assessment: explain tax treatment; compute income tax/NI/dividend/CGT with band-by-band breakdown; advise on deadlines/forms/penalties; and support MTD developer integration + tax software UX/flows. Use WebSearch (gov.uk/HMRC) to verify current rates and mandation timelines. (project)
project-overview
Background knowledge about CaCrFeedFormula project architecture, features, and context. Automatically loaded for AI reference, not directly user-invocable.
project-orchestration
Orchestrate multi-agent workflows for feature development using planning agents, context handoff, and stage management
project-object
Session memory that compounds - remember decisions, patterns, and corrections across AI coding sessions. Includes standards injection for consistent code quality.
project-mngt
Product Owner / Project Manager skill for MVP/MMP/MMR implementation planning
project-logger
SQLite-based project documentation logger for tracking API references, components, and project progress. Use this skill when documenting code changes, adding API documentation, recording component updates, or tracking project milestones. Automatically invoked when user mentions documentation, changelog, API docs, component docs, or project updates.
project-init
Automatically detects new project initialization, collaborates with user on project planning, and sets up the appropriate tech stack with matching skills and agents. Use when starting a new project, creating a new repository, or working in an empty/minimal directory that needs project structure.
project-index
Use this skill for large project maintenance with layered CLAUDE.md index system. Triggers when users need to (1) analyze and document existing codebases, (2) generate hierarchical CLAUDE.md files for modules, (3) set up incremental update hooks after code changes, or (4) navigate large projects efficiently. Supports legacy project onboarding and automatic context management.