env-inspector
This skill uses Claude hooks which can execute code automatically in response to events. Review carefully before installing.
ENV Inspector
Reads .env files and emits a redacted view: keys are always shown, values are shown only when they look unambiguously safe. Anything ambiguous is replaced with <redacted>.
Usage
bash .agents/skills/env-inspector/scripts/env-safe-read.sh /path/to/.env
Inspect every .env* in a project (excluding examples):
for f in $(find . -maxdepth 3 -name '.env*' -not -name '.env.example' -not -path '*/node_modules/*'); do
echo "--- $f ---"
bash .agents/skills/env-inspector/scripts/env-safe-read.sh "$f"
echo ""
done
How redaction works
Four layers, all default-deny. A value is shown only if it survives all of them:
- Sensitive-key block. Keys matching
KEY|SECRET|TOKEN|PASSWORD|PASS|CREDENTIAL|AUTH|PRIVATE|SIGNING|HASH|SALT|ENCRYPTION|JWT|BEARER|COOKIE|CSRF|SESSION|DSN|WEBHOOK_URLare redacted regardless of value. - Token-pattern blocklist. Values matching known shapes (
sk-…,pk_live_…,ghp_…,github_pat_…,eyJ…JWT,AKIA…,xox[abprs]-…,AIza…,glpat-…,npm_…,dckr_pat_…) are redacted. - Shannon entropy. Values ≥16 chars with entropy ≥3.5 bits/char are redacted (catches random tokens that don't match a known prefix).
- Positive allowlist. What survives is shown only if it matches a known-safe shape: booleans, numbers, log levels, localhost/loopback, short non-random strings (≤20 chars), or HTTP(S) URLs without embedded
@credentials and without long random query strings.
What this skill is and isn't
- Is: a heuristic that makes leaks much less likely when summarizing env config.
- Isn't: a cryptographic guarantee. A short, human-chosen password under an innocent key (e.g.
MY_PIN=hunter12) can still slip through. - For high-stakes contexts (production secrets, audit logs), inspect manually instead.
Path-gate hook
The skill ships with a PreToolUse hook (hooks/path-gate.sh) that:
- Allows
env-safe-read.shto run only against paths inside$CLAUDE_PROJECT_DIR. - Rejects any target whose filename doesn't match a
.envpattern. - Rejects paths containing
..traversal.
The hook is a guardrail, not the primary defense — the redaction in the script is what protects you. The hook just ensures the script can't be aimed at, say, /etc/postgresql/.env by an over-eager agent.
If your harness doesn't honor skill-level hooks frontmatter, copy the matcher block into your project .claude/settings.json or run the script manually.
Compatibility
- Requires
bashandawk(entropy calc). No Python or jq dependency. - The hook uses
sedfor JSON parsing to avoid ajqdep — fragile but works for the standard Claude Code tool-call shape.
More from jwa91/agentskills
interactive-learner
Personal AI tutoring skill that deeply researches any topic, then creates rich, interactive HTML courses with quizzes, simulators, debug challenges, explain-back exercises, real-world missions, and more. Tracks per-concept mastery across sessions with spaced repetition. Use when: (1) the user wants to learn a new topic, (2) the user says 'teach me X' or 'I want to learn X', (3) the user asks for an interactive lesson or course, (4) the user wants to study or review a subject. Works for any topic: technical, conceptual, creative, math, languages.
15mac-cleanup
Interactive macOS system cleanup for any dev machine. Frees disk space by pruning caches, package managers, unused apps, stale dev artifacts, and more. Discovers what's installed rather than assuming a specific setup. Always consults the user before deleting anything. Use when the user asks to: clean up their Mac, free disk space, remove unused apps, prune caches, clean developer artifacts, or any disk space maintenance task.
8spec
Interviews the user about a product idea or feature using structured questions, then generates a detailed spec document (SPEC.md). Use when the user wants to flesh out an idea, plan a feature, or create a buildable specification.
5personal-commit-review
Create a personal GitHub coding retrospective from a date range and turn it into a short Markdown review. Research commit activity across accessible public and private repositories through the authenticated gh CLI, understand what the relevant repositories and subsystems are for, and write a prose retrospective with stats and highlights. Use when the user asks for a commit review, coding recap, engineering retrospective, GitHub activity story, weekly/monthly/yearly highlights, or a written summary of what their commits achieved.
3vps-dependency-overview
Generate an offline-first dependency overview across services in a Docker-compose monorepo. Reports image tags & pinning quality, Dockerfile base images, runtime hints (Node/Python via .nvmrc, .python-version, package.json engines, pyproject.toml), and lockfile presence. Use when you want a single report of "what am I running and where are my update surfaces?" — no network calls, no pulls.
2vps-service-status
Quick health checks for a Dockerized VPS. Use to verify services are running, check container status, view logs, or get a system overview (disk, memory, CPU). Read-only by design — anything that would change state is routed through the clipboard for the user to paste.
2