Skip to content
Back to skills

Ccc Harden

ASecurity

Production hardening audit across 11 pillars (Vercel, GitHub, Sentry, PostHog, Stripe, Cloudflare, Secrets/PII). Read-only; --fix applies safe auto-fixes. Use pre-launch. NO PII.

  • 6 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 3, 2026
ai-agentsgobashgitapisecurity

Works with

  • terminal
  • cli
  • api

Security analysis

A100/100

Scanned September 3, 2026

npx -y skills add KevinZai/commander --skill ccc-harden --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ccc Harden?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ccc Harden
[![Security: A β€” Skills Directory](https://www.skillsdirectory.com/api/skills/kevinzai-ccc-harden-commander/badge)](https://www.skillsdirectory.com/skills/kevinzai-ccc-harden-commander)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ccc-harden
description: "Production hardening audit across 11 pillars (Vercel, GitHub, Sentry, PostHog, Stripe, Cloudflare, Secrets/PII). Read-only; --fix applies safe auto-fixes. Use pre-launch. NO PII."
allowed-tools:
  - Read
  - Bash
  - Grep
  - Glob
  - AskUserQuestion
---

# $ccc-harden β€” Production Hardening Audit

Audit a site across **11 hardening pillars** to confirm it's safe to ship. Read-only by default. Apply safe auto-fixes with `--fix`.

## What it checks

| Pillar | What it verifies |
|--------|-----------------|
| **1. Vercel** | Project link, env vars, deploy headers, deploy protection, domain |
| **2. GitHub Linkage** | Remote URL, branch tracking, .gitignore coverage, working tree clean |
| **3. GitHub Org** | Branch protection on main, Dependabot enabled, secret scanning, CODEOWNERS |
| **4. Sentry** | SDK installed, DSN set, source maps uploading, alert rules, sample rate |
| **5. PostHog** | SDK installed, env vars set, autocapture config, event whitelist |
| **6. Plausible** | Script present, site ID, goals, funnels, recent traffic |
| **7. Clarity** | Script presence, project ID |
| **8. Google** | GA4, Search Console verified, sitemap submitted, Tag Manager |
| **9. Stripe** | Keys present, webhook configured, test/live separation |
| **10. Secrets & PII** | gitleaks scan, CSP/HSTS/X-Frame headers, .env audit, log scrubbing |
| **11. Cloudflare** | DNS health, TLS/SSL, bot management, caching, HTTP/3, WAF |

## When to use

βœ… **Use when:**
- Pre-launch checklist for a new site
- Before a security review or compliance audit
- Periodic monthly/quarterly health check
- After a major refactor that touched config files
- When you suspect a leaked secret

🚫 **Don't use when:**
- Project is pre-MVP / local-only (overkill)
- Quick fix that doesn't touch infra/config (use `$ccc-doctor` instead)

## Trigger flow

When the user invokes `$ccc-harden`:

1. **Read `.harden.json`** at project root. If missing, run `bash ~/.claude/skills/harden-site/lib/tier.sh` to auto-classify (production/staging/parked/personal) and generate it.

2. **Ask the user** via AskUserQuestion which mode:
   - **Audit only** (read-only, default β€” recommended)
   - **Apply auto-fixes** (writes to vercel.json, .gitignore, etc.)
   - **Single pillar** (pick from list of 11)

3. **Run pillars** based on `.harden.json` enabled list:
   ```bash
   for pillar in ~/.claude/skills/harden-site/pillars/*.sh; do
     name=$(basename "$pillar" .sh | sed 's/^[0-9]*-//')
     enabled=$(jq -r ".pillars[\"$name\"]" .harden.json)
     [ "$enabled" = "true" ] && bash "$pillar" --audit
   done
   ```

4. **Aggregate results** into a single summary:
   - Total checks Β· pass Β· warn Β· fail Β· skipped
   - Top 5 manual actions required
   - Top 5 auto-fixable items
   - Severity-ranked (CRITICAL β†’ HIGH β†’ MEDIUM β†’ LOW)

5. **Offer next step** via AskUserQuestion:
   - **Apply auto-fixes now** (re-runs with `--fix`)
   - **Show full report** (paginated output of all pillars)
   - **Create Linear issues** for manual actions
   - **Done β€” I'll triage manually**

## Privacy guarantee (NO PII)

CC Commander's hardening audit **never** sends data to PostHog or any telemetry endpoint. Every check is:
- Local-only (reads files, runs `gh`/`vercel`/`fly`/`op` CLIs)
- Reports rendered in the terminal
- Findings written to `.harden.report.md` (gitignored by default)

Telemetry from `$ccc-harden` itself emits **only**:
- `skill_invoked` with `skill_id=ccc-harden`
- `harden_audit_completed` with `{ tier, pillars_run, pass, warn, fail }` (counts only, no file paths, no findings)

Zero PII. Zero secrets. Zero file content. Ever.

## Exit behavior

| Result | Exit | Next action |
|--------|------|-------------|
| All pass | 0 | "βœ… Ready to ship." |
| Warnings only | 1 | "🟑 Review warnings before launch." |
| Failures | 2 | "πŸ”΄ Block launch until fixes applied." |
| Missing tokens | 3 | "⏭️ Pillar skipped β€” set up `op` access." |

## Setup (first run)

If the user has never run hardening before:

1. Auto-classify the project: `bash ~/.claude/skills/harden-site/lib/tier.sh`
2. Edit `.harden.json` to enable/disable pillars per their stack
3. For pillars that need API tokens (Vercel, Cloudflare, PostHog management API):
   - Verify tokens in 1Password Alfred vault (see `~/.claude/skills/harden-site/TOKENS.md`)
   - Run `op signin` if not already authenticated
4. First run is read-only β€” always show what would change before fixing

## Related skills

- `$ccc-doctor` β€” generic project health check (lighter weight, no API tokens)
- `$ccc-security` β€” OWASP audit + threat modeling (deeper than infra hardening)
- `$ccc-deploy-check` β€” pre-deploy gate (12 quick checks before pushing)
- `$ccc-deploy` β€” actual deploy workflow (uses hardening output as a precondition)

## Vendor sources

This skill wraps `~/.claude/skills/harden-site/` (Kevin's site-hardening skill, a fork of the upstream "harden" pattern). The 11 pillars and auto-fix logic live there; this plugin skill is the UX layer that makes them discoverable inside CC Commander.

To update the underlying logic, edit `~/.claude/skills/harden-site/pillars/*.sh` β€” this skill re-reads them every invocation.

---

> βš™οΈ **Fable contract:** plan before build Β· verifier β‰  worker Β· prove before alarm Β· loops need gates Β· leave durable state β€” `rules/fable-method.md`

> (On Codex, present these options as a numbered list and ask the user to reply with a number β€” AskUserQuestion is Claude-only.)

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…