harden · dshakes — скилл для Claude Code: проверка безопасности перед PR
Пять команд набора compass по очереди: секреты в staged-диффе, версии MCP-серверов, расхождения установки, подпись релиза и запуск недоверенного кода в песочнице.
npx skills add dshakes/compass --skill harden -a claude-codeЧто делает harden
Скилл прогоняет пять шагов строго по порядку и останавливается на первой ошибке, пока её не исправят. Шаг 1 — compass scan --staged по подготовленному к коммиту диффу: код выхода 1 значит, что в правках лежит секрет. Шаг 2 — bash scripts/check-mcp.sh, проверяет, что каждый автоматически ставящийся MCP-сервер закреплён на точной версии и без меток инъекции; при плавающей версии правится mcp/servers.json. Шаг 3 — compass drift: установленный конфиг в ~/.claude должен совпадать с исходниками репозитория. Шаг 4 — compass verify сверяет keyless-аттестацию SLSA у тарбола последнего релиза и требует gh. Шаг 5 — compass sandbox -- <cmd> запускает недоверенную команду в песочнице без сети, записи только в cwd и tmp.
Песочнице нужен бэкенд: bwrap, firejail или sandbox-exec. Без него CLI откажется запускать команду вне изоляции, так что сначала ставьте bwrap или firejail. Проверка подписи релиза на старом gh может вернуть код 77 — это безопасный пропуск, а не провал.
Скилл закрывает механические проверки. Находки, где нужно суждение человека, он не заменяет: для них в диффе запускают /security-review. Сканирование секретов имеет смысл повесить в .git/hooks/pre-commit, тогда оно срабатывает на каждом коммите, а не только перед PR.
Какие задачи решает
- найти секрет в подготовленных к коммиту правках до пуша
- поймать MCP-сервер с плавающей версией или меткой инъекции
- сверить установленный конфиг агента с исходниками репозитория
- проверить аттестацию SLSA у релизного тарбола
- прогнать скачанный извне код в изоляции без сети
Примеры запросов агенту
- Прогони шаги скилла harden и покажи, на каком всё встало
- Проверь staged-дифф на секреты через
compass scan --staged - Запусти
compass driftи объясни, почему конфиг разошёлся с репозиторием
Как установить harden
1Через Skills CLI (Vercel)
npx skills add dshakes/compass --skill harden -a claude-code2Вручную: положить файлы
~/.claude/skills/harden/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/harden/
1Через Skills CLI (Vercel)
npx skills add dshakes/compass --skill harden -a codex2Вручную: положить файлы
.agents/skills/harden/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add dshakes/compass --skill harden -a cursor2Вручную: положить файлы
.cursor/skills/harden/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install dshakes/compass harden2Вручную: положить файлы
.github/skills/harden/SKILL.md1Через Skills CLI (Vercel)
npx skills add dshakes/compass --skill harden -a gemini-cli2Командой платформы
gemini skills install https://github.com/dshakes/compass --path claude/skills/hardenВручную: положить файлы
.devin/skills/harden/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add dshakes/compass --skill harden -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о harden
Как установить harden в Claude Code?
Выполните npx skills add dshakes/compass --skill harden -a claude-code, скилл появится по пути ~/.claude/skills/harden/SKILL.md.
Что делает harden?
По очереди запускает пять команд набора compass: скан staged-диффа на секреты, проверку закрепления MCP-серверов, детект дрейфа установки, сверку аттестации релиза и запуск недоверенной команды в песочнице.
Что нужно для шага с песочницей?
Работающий бэкенд изоляции — bwrap, firejail или sandbox-exec. Если его нет, compass sandbox откажется запускать команду без ограничений.
Исходный текст
SKILL.md · MIT
--- name: harden description: Run the toolkit's security commands in order to surface secrets, MCP supply-chain issues, install drift, release provenance gaps, and untrusted-code risks before shipping. Use before opening a PR, after adding a dependency, or whenever the security posture needs a fresh check. argument-hint: "[optional: -- <cmd> to sandbox-test a specific command]" allowed-tools: Read, Grep, Glob, Bash --- # Harden — security sweep in five ordered steps Run each command in sequence. Stop on a non-zero exit and fix the finding before proceeding. All five must pass before the branch is considered hardened. ## Steps ### 1 · Secrets — `compass scan --staged` Scan the staged diff for secrets at the commit boundary. ``` compass scan --staged ``` Exits 0 (clean) or 1 (secrets found). Fix: remove the secret, rotate the credential, then re-stage. Add an `# allowlist secret` comment ONLY for confirmed test fixtures — never real credentials. ### 2 · MCP supply-chain pins — `scripts/check-mcp.sh` Verify every auto-installed MCP server is pinned to an exact version and that no `@latest` float or shell-injection marker has crept in. ``` bash scripts/check-mcp.sh ``` Exits 0 (pinned + clean) or non-zero (floating version or injection marker). Fix: pin the version in `mcp/servers.json` and re-run. (`setup-mcp.sh` runs this same audit as a pre-flight, and `compass doctor` includes it.) ### 3 · Install fidelity — `compass drift` Check that the installed `~/.claude` config still matches this repo's source. Catches hand-edited copies, stale hooks, and non-executable guardrail scripts. ``` compass drift ``` Exits 0 (in sync) or non-zero (drift detected). Fix: re-run `quickstart.sh` or remove the hand-edited file and let the install re-link it. ### 4 · Release provenance — `compass verify` Verify the latest release tarball's keyless SLSA attestation. Requires `gh`. ``` compass verify ``` Exits 0 (attestation valid), 77 (gh lacks attestation support — skip), or non-zero (attestation missing or invalid). A 77 is a safe skip on old gh versions; anything else is a provenance gap to investigate. ### 5 · Untrusted code — `compass sandbox -- <cmd>` Run any untrusted command inside a real OS sandbox (no network, writes confined to cwd/tmp via bwrap/firejail/sandbox-exec). Required before executing code fetched from external sources. ``` compass sandbox -- <cmd> ``` Exits 0 (ran confined), 2 (usage error — supply a command), or non-zero if the sandboxed command itself fails. If no backend is available the CLI refuses to run the command unconfined — install bwrap or firejail first. ## Notes - Run the five steps in order; each one gates the next in severity. - `compass scan --staged` should also be wired as a pre-commit hook (`compass scan --staged` in `.git/hooks/pre-commit`) for continuous coverage. - Security (`compass scan`, `compass verify`) and drift detection (`compass drift`) are also surfaced in `compass dashboard` for a fleet-wide view. - This skill does not replace a full `/security-review` — it gates the mechanical checks. Run `/security-review` on the diff for human-judgment findings.
© dshakes · MIT · dshakes/compass
Похожие скиллы
Все скиллы по теме «Безопасность» →Сначала — harden от других авторов.