Not in the top 1,000 by GitHub stars
dshakes/compass
🧭 Let your coding agent off the leash — not off the rails. Guardrails, a hard budget cap & a self-fixing PR loop for Claude Code / Codex / Gemini. Eval-gated 100/100, you always merge.
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
claude/skills/bootstrap-agent-config/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Network or broad shell
fb41822123b4 → eb86da768cee
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → fb41822123b4
No earlier version was observed for comparison.
claude/skills/harden/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Network or broad shell
fb41822123b4 → eb86da768cee
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → fb41822123b4
No earlier version was observed for comparison.
claude/skills/morning-triage/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Network or broad shell
fb41822123b4 → eb86da768cee
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → fb41822123b4
No earlier version was observed for comparison.
claude/skills/pr-shepherd/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Network or broad shell
fb41822123b4 → eb86da768cee
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → fb41822123b4
No earlier version was observed for comparison.
claude/skills/route/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Network or broad shell
fb41822123b4 → eb86da768cee
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → fb41822123b4
No earlier version was observed for comparison.
claude/skills/systematic-debugging/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Network or broad shell
fb41822123b4 → eb86da768cee
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → fb41822123b4
No earlier version was observed for comparison.
claude/skills/using-compass/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
fb41822123b4 → eb86da768cee
A local comparison is unavailable. You can inspect the recorded versions on GitHub.
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → fb41822123b4
No earlier version was observed for comparison.
claude/skills/verification-before-completion/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Network or broad shell
fb41822123b4 → eb86da768cee
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → fb41822123b4
No earlier version was observed for comparison.
plugins/core/skills/bootstrap-agent-config/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Network or broad shell
fb41822123b4 → eb86da768cee
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → fb41822123b4
No earlier version was observed for comparison.
plugins/core/skills/harden/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Network or broad shell
fb41822123b4 → eb86da768cee
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → fb41822123b4
No earlier version was observed for comparison.
plugins/core/skills/morning-triage/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Network or broad shell
fb41822123b4 → eb86da768cee
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → fb41822123b4
No earlier version was observed for comparison.
plugins/core/skills/pr-shepherd/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Network or broad shell
fb41822123b4 → eb86da768cee
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → fb41822123b4
No earlier version was observed for comparison.
plugins/core/skills/route/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Network or broad shell
fb41822123b4 → eb86da768cee
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → fb41822123b4
No earlier version was observed for comparison.
plugins/core/skills/systematic-debugging/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Network or broad shell
fb41822123b4 → eb86da768cee
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → fb41822123b4
No earlier version was observed for comparison.
plugins/core/skills/using-compass/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
fb41822123b4 → eb86da768cee
A local comparison is unavailable. You can inspect the recorded versions on GitHub.
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → fb41822123b4
No earlier version was observed for comparison.
plugins/core/skills/verification-before-completion/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Network or broad shell
fb41822123b4 → eb86da768cee
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → fb41822123b4
No earlier version was observed for comparison.
Verified commit eb86da768cee325b0e89039b1f96ea29e29f2eb7
git clone --filter=blob:none --no-checkout https://github.com/dshakes/compass.git .hotskills/dshakes-compass && git -C .hotskills/dshakes-compass checkout --detach eb86da768cee325b0e89039b1f96ea29e29f2eb7
# Copy each selected skill directory from .hotskills/dshakes-compass into .claude/skills/<skill-name>/git clone --filter=blob:none --no-checkout https://github.com/dshakes/compass.git .hotskills/dshakes-compass && git -C .hotskills/dshakes-compass checkout --detach eb86da768cee325b0e89039b1f96ea29e29f2eb7
# Copy each selected skill directory from .hotskills/dshakes-compass into .agents/skills/<skill-name>/git clone --filter=blob:none --no-checkout https://github.com/dshakes/compass.git .hotskills/dshakes-compass && git -C .hotskills/dshakes-compass checkout --detach eb86da768cee325b0e89039b1f96ea29e29f2eb7
# Copy each selected skill directory from .hotskills/dshakes-compass into .gemini/skills/<skill-name>/Heat
1.7- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
- bootstrap-agent-config
claude/skills/bootstrap-agent-config - harden
claude/skills/harden - morning-triage
claude/skills/morning-triage - pr-shepherd
claude/skills/pr-shepherd - route
claude/skills/route - systematic-debugging
claude/skills/systematic-debugging - using-compass
claude/skills/using-compass - verification-before-completion
claude/skills/verification-before-completion - bootstrap-agent-config
plugins/core/skills/bootstrap-agent-config - harden
plugins/core/skills/harden - morning-triage
plugins/core/skills/morning-triage - pr-shepherd
plugins/core/skills/pr-shepherd - route
plugins/core/skills/route - systematic-debugging
plugins/core/skills/systematic-debugging - using-compass
plugins/core/skills/using-compass - verification-before-completion
plugins/core/skills/verification-before-completion
How it works
bootstrap-agent-config
When your agent uses it
Generate a high-quality project CLAUDE.md and AGENTS.md by inspecting the current repository. Use when a repo has no agent config, when onboarding a new project, or when the user asks to "set up Claude/Codex for this repo" or "write a CLAUDE.md". Detects languages, build/test commands, and structure, then drafts config grounded in what's actually there.
What it loads into context
Frontmatter
116 tokensAlways available to the agent
SKILL.md
743 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Steps
- Quality bar
Scripts executed separately
detect-stack.sh../../../plugins/core/hooks/budget-gate.sh../../../plugins/core/hooks/checkpoint-wip.sh../../../plugins/core/hooks/format-on-edit.sh../../../plugins/core/hooks/inject-context.sh../../../plugins/core/hooks/lib/common.sh../../../plugins/core/hooks/lib/guardrail-remote.sh../../../plugins/core/hooks/lib/policy.sh../../../plugins/core/hooks/notify.sh../../../plugins/core/hooks/protect-paths.sh../../../plugins/core/hooks/record-learning.sh../../../plugins/core/hooks/require-tests.sh../../../plugins/core/hooks/route-intent.sh../../../plugins/core/hooks/scan-prompt.sh../../../plugins/core/hooks/scan-tool-output.sh../../../plugins/core/hooks/scan-untrusted-context.sh../../../plugins/core/hooks/session-memory.sh
Files
../../../.claude-plugin/marketplace.jsonasset2,124 bytesSKILL.mdcore2,921 bytesSKILL.mdcore2,921 bytesSKILL.mdcore2,921 bytesSKILL.mdcore2,921 bytesdetect-stack.shruns2,163 bytes../../../plugins/core-lsp/.claude-plugin/plugin.jsonasset704 bytes../../../plugins/core/.claude-plugin/plugin.jsonasset811 bytes../../../plugins/core/hooks/budget-gate.shruns8,355 bytes../../../plugins/core/hooks/checkpoint-wip.shruns1,222 bytes../../../plugins/core/hooks/format-on-edit.shruns1,761 bytes../../../plugins/core/hooks/hooks.jsonasset1,814 bytes../../../plugins/core/hooks/inject-context.shruns1,519 bytes../../../plugins/core/hooks/lib/common.shruns10,297 bytes../../../plugins/core/hooks/lib/guardrail-remote.shruns3,370 bytes../../../plugins/core/hooks/lib/policy.shruns48,532 bytes../../../plugins/core/hooks/lib/pricing.jsonasset389 bytes../../../plugins/core/hooks/notify.shruns1,311 bytes../../../plugins/core/hooks/profiles/solo.confasset243 bytes../../../plugins/core/hooks/profiles/standard.confasset262 bytes../../../plugins/core/hooks/profiles/strict.confasset418 bytes../../../plugins/core/hooks/protect-paths.shruns4,129 bytes../../../plugins/core/hooks/record-learning.shruns2,566 bytes../../../plugins/core/hooks/require-tests.shruns2,164 bytes../../../plugins/core/hooks/route-intent.shruns1,411 bytes../../../plugins/core/hooks/scan-prompt.shruns2,531 bytes../../../plugins/core/hooks/scan-tool-output.shruns2,295 bytes../../../plugins/core/hooks/scan-untrusted-context.shruns2,573 bytes../../../plugins/core/hooks/session-memory.shruns2,000 bytes../../../scripts/fixtures/audit-plugin/malicious-plugin/hooks/hooks.jsonasset218 bytes../../../templates/CLAUDE.md.tmplasset1,176 bytes
Read SKILL.md
# Bootstrap agent config for a repository
Produce a `CLAUDE.md` and a symlinked/parallel `AGENTS.md` that are *grounded in
the real repo*, not generic boilerplate. A good config is the single highest-ROI
thing for agent productivity in a codebase — it pays for itself on the first task.
## Steps
1. **Detect the stack.** Run the helper to get a fast inventory:
```
bash "${CLAUDE_SKILL_DIR}/detect-stack.sh" .
```
It reports languages, package managers, build/test/lint commands, monorepo
layout, and whether ADRs/CI exist.View the complete source on GitHubharden
When your agent uses it
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.
What it loads into context
Frontmatter
89 tokensAlways available to the agent
SKILL.md
789 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Steps
- Notes
Scripts executed separately
../../../scripts/check-mcp.sh../../../scripts/check-mcp.sh../../../scripts/check-mcp.sh
Files
SKILL.mdcore3,187 bytes../../../scripts/check-mcp.shruns3,661 bytes../../../scripts/check-mcp.shruns3,661 bytes../../../scripts/check-mcp.shruns3,661 bytes
Read SKILL.md
# 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
```
View the complete source on GitHubmorning-triage
When your agent uses it
Discovery for an autonomous loop — find this turn's work instead of being handed it. Reads what changed since the last run (failed CI, new issues, merged commits), judges what's actually worth acting on, writes findings to a durable state file, and hands each off to the SDLC loop with a stop-condition. Use as the first move of a scheduled loop, or by hand to plan a session. Read-only on code; never edits, opens PRs, or merges.
What it loads into context
Frontmatter
116 tokensAlways available to the agent
SKILL.md
1,200 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Read — the discovery inputs
- Judge — the part that sets the ceiling
- Write — the persistence output
- Hand off — prepare the handoff move
- Stop — the boundary you keep for yourself
- Running it
- Verification before "done"
Files
SKILL.mdcore4,782 bytes
Read SKILL.md
# Morning triage — the loop's discovery move
A loop has five moves: **discovery → handoff → verification → persistence → scheduling**
(see [docs/20-loops.md](../../docs/20-loops.md)). This skill is **discovery** — the move that
finds the work. Skip it and you have the "blind loop": automated *doing* but a human still
spends every morning deciding *what* to do. Discovery sets the ceiling on the whole loop —
surface work of no value and the other four moves serve nothing.
The point is to let the loop find its own work, then stop exactly where a human should decide.
## Read — the discovery inputs
Look at what changed since the last run (use `gh` and `git`; read-only):
View the complete source on GitHubpr-shepherd
When your agent uses it
Take every open PR end-to-end — diagnose failing checks, classify them (real defect vs mechanical vs environmental), fix the mechanical ones on the PR branch, re-verify, and stop at the merge gate. Use on demand ("handle the open PRs") or on an interval via /loop (e.g. "/loop 15m /pr-shepherd"). Merges only when the human has granted merge authority in the current session; otherwise reports ready-to-merge.
What it loads into context
Frontmatter
120 tokensAlways available to the agent
SKILL.md
1,159 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Enumerate
- Diagnose — read the check, don't guess
- Fix — mechanical only, verified before pushed
- Gate — where the loop stops
- Persist
- Schedule
Files
SKILL.mdcore4,564 bytes
Read SKILL.md
# PR shepherd — the loop's handoff + verification moves, applied to PRs
A loop has five moves: **discovery → handoff → verification → persistence → scheduling**
(see [docs/20-loops.md](../../docs/20-loops.md)). `morning-triage` is discovery — it finds
work. This skill is what happens *after* a PR exists: no PR sits red waiting for a human to
diagnose a check that a machine can read. It shepherds each open PR to exactly one of three
outcomes: **merged** (gate satisfied + authority granted), **ready-to-merge** (reported), or
**inbox** (needs a human, with the diagnosis already written).
## Enumerate
`gh pr list --state open --json number,title,author,isDraft,isCrossRepository,headRefName,statusCheckRollup`
Skip drafts. **Fail closed on forks**: if `isCrossRepository` is true — or the field isView the complete source on GitHubroute
When your agent uses it
Detect the work type of a task or diff and dispatch the right specialist review/agent. Use when you're about to review or implement and want the correct domain reviewer (UI/design, API/devex, infra, docs, core) instead of a generic pass. The local mirror of the SDLC Classifier + domain-routed reviewers.
What it loads into context
Frontmatter
99 tokensAlways available to the agent
SKILL.md
550 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Steps
- Notes
Files
SKILL.mdcore2,148 bytes../../../scripts/route-evalset.tsvasset2,726 bytes
Read SKILL.md
# Route work to the right specialist
The cloud SDLC classifies each PR (`sdlc-classify.yml`) and runs domain-specific
reviewers. This skill does the same locally: classify, then dispatch.
## Steps
1. **Classify** the task/diff into ONE primary domain (default `core` if mixed):
| Domain | Signals | Route to |
|---|---|---|
| `ui` | frontend, styling, components, UX | `code-reviewer` + a design/a11y pass |
| `api` | public API/SDK, contracts, schemas | `code-reviewer` + contract/back-compat focus |
| `infra` | CI, deploy, IaC, migrations | `k8s-operator` / careful review of blast radius |
| `docs` | docs/markdown only | `docs-writer` |
| `core` | library / business logic | `code-reviewer` (+ `security-auditor` if it touches authz/inputs) |View the complete source on GitHubsystematic-debugging
When your agent uses it
Use when something is broken — a failing test, panic, stack trace, error log, or wrong behavior whose cause isn't obvious. Reproduce it, form a hypothesis, PROVE the cause before changing code, then make the minimal root-cause fix and guard it with a test. For deep cases, hand off to the debugger subagent.
What it loads into context
Frontmatter
90 tokensAlways available to the agent
SKILL.md
456 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- The method
- Red flags — you're not debugging, you're flailing
- Done means
Files
SKILL.mdcore1,926 bytes
Read SKILL.md
# Systematic debugging
Fix the cause, not the symptom — and prove the cause before you touch code.
## The method
1. **Reproduce** — get a reliable, minimal repro (a failing test is ideal). No repro → no fix.
2. **Hypothesize** — one specific, falsifiable guess about the cause ("X is null because Y").
3. **Prove it** — instrument/log/inspect to confirm the hypothesis *before* editing. If the
evidence contradicts it, form a new hypothesis. Don't guess-and-change.
4. **Minimal fix** — change the smallest thing that addresses the proven root cause.
5. **Verify** — re-run the repro; it passes. Run the surrounding tests; nothing regressed.
(See `verification-before-completion`.)
6. **Guard** — add/extend a test that would have caught it, so it can't silently return.View the complete source on GitHubusing-compass
When your agent uses it
Use at the START of any task in a compass-enabled repo, or whenever you're unsure which capability fits. Indexes compass's guardrails, red-team, router, commands, subagents, and skills so you reach for the right tool instead of working ad-hoc. Read this before hand-writing config, reviewing a diff, adding a dependency, picking a model, or running untrusted code.
What it loads into context
Frontmatter
98 tokensAlways available to the agent
SKILL.md
1,154 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- What you have (reach for these)
- Before you start (the checklist)
- Red flags — stop and reach for compass
- Verification before "done"
Files
SKILL.mdcore4,414 bytes
Read SKILL.md
# Using compass
compass is already wired into this environment. Before you work ad-hoc, check whether a
compass capability does it better — and safer.
## What you have (reach for these)
| Need | Reach for | How |
|---|---|---|
| Write/repair a repo's `CLAUDE.md`/`AGENTS.md` | **bootstrap-agent-config** skill | grounded in the actual repo |
| Security pass before shipping | **harden** skill · `compass scan` · `compass redteam` | secrets · injection · supply-chain |
| Pick the cheapest correct model | `compass route "<task>"` | haiku/sonnet/opus, eval-scored |
| Review/implement with the right specialist | **route** skill · `/review` · `/team-review` | domain-routed, not generic |
| Everyday commands | `/tdd /spec /ship /pr /adr /triage /scaffold /cost /onboard /sdlc` | saved workflows |View the complete source on GitHubverification-before-completion
When your agent uses it
Use before claiming ANY task done, fix verified, check passing, or PR ready. Establish how the change is checked and actually run it — tests, typecheck, lint, the local gate, or the app itself — and observe it pass. Never report "should work" or pass along a subagent's unproven claim.
What it loads into context
Frontmatter
87 tokensAlways available to the agent
SKILL.md
500 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- The iron rule
- How to verify (pick what fits the change)
- Red flags — stop, you have not verified
- Checklist before I say done
Files
SKILL.mdcore1,911 bytes
Read SKILL.md
# Verification before completion
The highest-leverage habit and a compass hard line: **a claim is not proof.**
## The iron rule
I do not say "done", "fixed", "verified", or "passing" unless I ran the check and saw it
pass. If I could not run it, I label the result **UNVERIFIED** and say why. This binds
delegated work too: a subagent's "verified" is a claim — **I re-run the gate** on what it
returns.
## How to verify (pick what fits the change)
- Tests for the touched code: `go test` · `cargo test` · `pytest` · `npm/pnpm test` · `npx tsc`.View the complete source on GitHubbootstrap-agent-config
When your agent uses it
Generate a high-quality project CLAUDE.md and AGENTS.md by inspecting the current repository. Use when a repo has no agent config, when onboarding a new project, or when the user asks to "set up Claude/Codex for this repo" or "write a CLAUDE.md". Detects languages, build/test commands, and structure, then drafts config grounded in what's actually there.
What it loads into context
Frontmatter
116 tokensAlways available to the agent
SKILL.md
743 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Steps
- Quality bar
Scripts executed separately
detect-stack.sh
Files
SKILL.mdcore2,921 bytesSKILL.mdcore2,921 bytesSKILL.mdcore2,921 bytesSKILL.mdcore2,921 bytesdetect-stack.shruns2,163 bytes
Read SKILL.md
# Bootstrap agent config for a repository
Produce a `CLAUDE.md` and a symlinked/parallel `AGENTS.md` that are *grounded in
the real repo*, not generic boilerplate. A good config is the single highest-ROI
thing for agent productivity in a codebase — it pays for itself on the first task.
## Steps
1. **Detect the stack.** Run the helper to get a fast inventory:
```
bash "${CLAUDE_SKILL_DIR}/detect-stack.sh" .
```
It reports languages, package managers, build/test/lint commands, monorepo
layout, and whether ADRs/CI exist.View the complete source on GitHubharden
When your agent uses it
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.
What it loads into context
Frontmatter
89 tokensAlways available to the agent
SKILL.md
789 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Steps
- Notes
Scripts executed separately
../../../../scripts/check-mcp.sh../../../../scripts/check-mcp.sh../../../../scripts/check-mcp.sh
Files
SKILL.mdcore3,187 bytes../../../../scripts/check-mcp.shruns3,661 bytes../../../../scripts/check-mcp.shruns3,661 bytes../../../../scripts/check-mcp.shruns3,661 bytes
Read SKILL.md
# 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
```
View the complete source on GitHubmorning-triage
When your agent uses it
Discovery for an autonomous loop — find this turn's work instead of being handed it. Reads what changed since the last run (failed CI, new issues, merged commits), judges what's actually worth acting on, writes findings to a durable state file, and hands each off to the SDLC loop with a stop-condition. Use as the first move of a scheduled loop, or by hand to plan a session. Read-only on code; never edits, opens PRs, or merges.
What it loads into context
Frontmatter
116 tokensAlways available to the agent
SKILL.md
1,200 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Read — the discovery inputs
- Judge — the part that sets the ceiling
- Write — the persistence output
- Hand off — prepare the handoff move
- Stop — the boundary you keep for yourself
- Running it
- Verification before "done"
Files
SKILL.mdcore4,782 bytes
Read SKILL.md
# Morning triage — the loop's discovery move
A loop has five moves: **discovery → handoff → verification → persistence → scheduling**
(see [docs/20-loops.md](../../docs/20-loops.md)). This skill is **discovery** — the move that
finds the work. Skip it and you have the "blind loop": automated *doing* but a human still
spends every morning deciding *what* to do. Discovery sets the ceiling on the whole loop —
surface work of no value and the other four moves serve nothing.
The point is to let the loop find its own work, then stop exactly where a human should decide.
## Read — the discovery inputs
Look at what changed since the last run (use `gh` and `git`; read-only):
View the complete source on GitHubpr-shepherd
When your agent uses it
Take every open PR end-to-end — diagnose failing checks, classify them (real defect vs mechanical vs environmental), fix the mechanical ones on the PR branch, re-verify, and stop at the merge gate. Use on demand ("handle the open PRs") or on an interval via /loop (e.g. "/loop 15m /pr-shepherd"). Merges only when the human has granted merge authority in the current session; otherwise reports ready-to-merge.
What it loads into context
Frontmatter
120 tokensAlways available to the agent
SKILL.md
1,159 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Enumerate
- Diagnose — read the check, don't guess
- Fix — mechanical only, verified before pushed
- Gate — where the loop stops
- Persist
- Schedule
Files
SKILL.mdcore4,564 bytes
Read SKILL.md
# PR shepherd — the loop's handoff + verification moves, applied to PRs
A loop has five moves: **discovery → handoff → verification → persistence → scheduling**
(see [docs/20-loops.md](../../docs/20-loops.md)). `morning-triage` is discovery — it finds
work. This skill is what happens *after* a PR exists: no PR sits red waiting for a human to
diagnose a check that a machine can read. It shepherds each open PR to exactly one of three
outcomes: **merged** (gate satisfied + authority granted), **ready-to-merge** (reported), or
**inbox** (needs a human, with the diagnosis already written).
## Enumerate
`gh pr list --state open --json number,title,author,isDraft,isCrossRepository,headRefName,statusCheckRollup`
Skip drafts. **Fail closed on forks**: if `isCrossRepository` is true — or the field isView the complete source on GitHubroute
When your agent uses it
Detect the work type of a task or diff and dispatch the right specialist review/agent. Use when you're about to review or implement and want the correct domain reviewer (UI/design, API/devex, infra, docs, core) instead of a generic pass. The local mirror of the SDLC Classifier + domain-routed reviewers.
What it loads into context
Frontmatter
99 tokensAlways available to the agent
SKILL.md
550 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Steps
- Notes
Files
SKILL.mdcore2,148 bytes../../../../scripts/route-evalset.tsvasset2,726 bytes
Read SKILL.md
# Route work to the right specialist
The cloud SDLC classifies each PR (`sdlc-classify.yml`) and runs domain-specific
reviewers. This skill does the same locally: classify, then dispatch.
## Steps
1. **Classify** the task/diff into ONE primary domain (default `core` if mixed):
| Domain | Signals | Route to |
|---|---|---|
| `ui` | frontend, styling, components, UX | `code-reviewer` + a design/a11y pass |
| `api` | public API/SDK, contracts, schemas | `code-reviewer` + contract/back-compat focus |
| `infra` | CI, deploy, IaC, migrations | `k8s-operator` / careful review of blast radius |
| `docs` | docs/markdown only | `docs-writer` |
| `core` | library / business logic | `code-reviewer` (+ `security-auditor` if it touches authz/inputs) |View the complete source on GitHubsystematic-debugging
When your agent uses it
Use when something is broken — a failing test, panic, stack trace, error log, or wrong behavior whose cause isn't obvious. Reproduce it, form a hypothesis, PROVE the cause before changing code, then make the minimal root-cause fix and guard it with a test. For deep cases, hand off to the debugger subagent.
What it loads into context
Frontmatter
90 tokensAlways available to the agent
SKILL.md
456 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- The method
- Red flags — you're not debugging, you're flailing
- Done means
Files
SKILL.mdcore1,926 bytes
Read SKILL.md
# Systematic debugging
Fix the cause, not the symptom — and prove the cause before you touch code.
## The method
1. **Reproduce** — get a reliable, minimal repro (a failing test is ideal). No repro → no fix.
2. **Hypothesize** — one specific, falsifiable guess about the cause ("X is null because Y").
3. **Prove it** — instrument/log/inspect to confirm the hypothesis *before* editing. If the
evidence contradicts it, form a new hypothesis. Don't guess-and-change.
4. **Minimal fix** — change the smallest thing that addresses the proven root cause.
5. **Verify** — re-run the repro; it passes. Run the surrounding tests; nothing regressed.
(See `verification-before-completion`.)
6. **Guard** — add/extend a test that would have caught it, so it can't silently return.View the complete source on GitHubusing-compass
When your agent uses it
Use at the START of any task in a compass-enabled repo, or whenever you're unsure which capability fits. Indexes compass's guardrails, red-team, router, commands, subagents, and skills so you reach for the right tool instead of working ad-hoc. Read this before hand-writing config, reviewing a diff, adding a dependency, picking a model, or running untrusted code.
What it loads into context
Frontmatter
98 tokensAlways available to the agent
SKILL.md
1,154 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- What you have (reach for these)
- Before you start (the checklist)
- Red flags — stop and reach for compass
- Verification before "done"
Files
SKILL.mdcore4,414 bytes
Read SKILL.md
# Using compass
compass is already wired into this environment. Before you work ad-hoc, check whether a
compass capability does it better — and safer.
## What you have (reach for these)
| Need | Reach for | How |
|---|---|---|
| Write/repair a repo's `CLAUDE.md`/`AGENTS.md` | **bootstrap-agent-config** skill | grounded in the actual repo |
| Security pass before shipping | **harden** skill · `compass scan` · `compass redteam` | secrets · injection · supply-chain |
| Pick the cheapest correct model | `compass route "<task>"` | haiku/sonnet/opus, eval-scored |
| Review/implement with the right specialist | **route** skill · `/review` · `/team-review` | domain-routed, not generic |
| Everyday commands | `/tdd /spec /ship /pr /adr /triage /scaffold /cost /onboard /sdlc` | saved workflows |View the complete source on GitHubverification-before-completion
When your agent uses it
Use before claiming ANY task done, fix verified, check passing, or PR ready. Establish how the change is checked and actually run it — tests, typecheck, lint, the local gate, or the app itself — and observe it pass. Never report "should work" or pass along a subagent's unproven claim.
What it loads into context
Frontmatter
87 tokensAlways available to the agent
SKILL.md
500 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- The iron rule
- How to verify (pick what fits the change)
- Red flags — stop, you have not verified
- Checklist before I say done
Files
SKILL.mdcore1,911 bytes
Read SKILL.md
# Verification before completion
The highest-leverage habit and a compass hard line: **a claim is not proof.**
## The iron rule
I do not say "done", "fixed", "verified", or "passing" unless I ran the check and saw it
pass. If I could not run it, I label the result **UNVERIFIED** and say why. This binds
delegated work too: a subagent's "verified" is a claim — **I re-run the gate** on what it
returns.
## How to verify (pick what fits the change)
- Tests for the touched code: `go test` · `cargo test` · `pytest` · `npm/pnpm test` · `npx tsc`.View the complete source on GitHubSkills included
- bootstrap-agent-config
- harden
- morning-triage
- pr-shepherd
- route
- systematic-debugging
- using-compass
- verification-before-completion
- bootstrap-agent-config
- harden
- morning-triage
- pr-shepherd
- route
- systematic-debugging
- using-compass
- verification-before-completion
Repository facts
- License
- MIT
- Created
- May 25, 2026
- Last pushed
- Nov 2, 2026
- Forks
- 0
- Open issues
- 0
- Project activity
- Active
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 5, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 10 notes
claude/skills/bootstrap-agent-config/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedclaude/skills/bootstrap-agent-config/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedclaude/skills/bootstrap-agent-config/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedscripts/check-mcp.sh:1Analysis incomplete: Referenced executable target unavailable; not analyzedscripts/check-mcp.sh:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/core/skills/bootstrap-agent-config/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/core/skills/bootstrap-agent-config/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/core/skills/bootstrap-agent-config/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedscripts/check-mcp.sh:1Analysis incomplete: Referenced executable target unavailable; not analyzedscripts/check-mcp.sh:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- 16 broad permissionsin 16 files: bootstrap-agent-config/SKILL.md:1 harden/SKILL.md:1 morning-triage/SKILL.md:1 and 13 more
- 9 dangerous shell commandsin 1 file: plugins/core/hooks/lib/policy.sh:12
- 53 network referencesin 6 files: .claude-plugin/marketplace.json:1 plugins/core/hooks/lib/guardrail-remote.sh:58 plugins/core-lsp/.claude-plugin/plugin.json:1 and 3 more
- No hidden or obfuscated text
- 10 instruction override signalsin 1 file: plugins/core/hooks/lib/policy.sh:305
- 24 executable scriptsin 19 files: scripts/check-mcp.sh:1 bootstrap-agent-config/detect-stack.sh:1 plugins/core/hooks/budget-gate.sh:1 and 16 more
- 11 references to secretsin 4 files: plugins/core/hooks/lib/policy.sh:110 plugins/core/hooks/lib/guardrail-remote.sh:60 plugins/core/hooks/budget-gate.sh:39 and 1 more
- No requests to vote in Hot
Show all 123 signals by file
.claude-plugin/marketplace.json
- Network accessline 1
{ "$schema": "https://json.schemastore.org/claude-code-marketplace.json", - Network accessline 2
"$schema": "https://json.schemastore.org/claude-code-marketplace.json", - Network accessline 4
"owner": { "name": "dshakes", "url": "https://github.com/dshakes" - Network accessline 5
"name": "dshakes", "url": "https://github.com/dshakes" }, - Network accessline 6
"url": "https://github.com/dshakes" - Network accessline 12
"source": "./plugins/core", "description": "15 specialist subagents; 13 commands (/ship /review /tdd /pr /adr /triage /scaffold /cost /onboard /spec /sdlc /team-review /pr-shepherd); guardrail + red-team + live-budget-ceiling + format - Network accessline 13
"description": "15 specialist subagents; 13 commands (/ship /review /tdd /pr /adr /triage /scaffold /cost /onboard /spec /sdlc /team-review /pr-shepherd); guardrail + red-team + live-budget-ceiling + format-on-edit + notify hooks (a per-ses - Network accessline 14
"homepage": "https://github.com/dshakes/compass/tree/main/plugins/core", - Network accessline 15
"repository": "https://github.com/dshakes/compass", - Network accessline 16
"author": { "name": "Shekhar Mudarapu", "url": "https://github.com/dshakes" }, - Network accessline 23
"source": "./plugins/core-lsp", "description": "Opt-in language-server intelligence (diagnostics + navigation) for Go, Rust, TypeScript, and Python. Requires gopls/rust-analyzer/typescript-language-server/pyright on PATH.", "hom - Network accessline 24
"description": "Opt-in language-server intelligence (diagnostics + navigation) for Go, Rust, TypeScript, and Python. Requires gopls/rust-analyzer/typescript-language-server/pyright on PATH.", "homepage": "https://github.com/dshakes/co - Network accessline 25
"homepage": "https://github.com/dshakes/compass/tree/main/plugins/core-lsp", - Network accessline 26
"repository": "https://github.com/dshakes/compass", - Network accessline 27
"author": { "name": "Shekhar Mudarapu", "url": "https://github.com/dshakes" },
claude/skills/bootstrap-agent-config/SKILL.md
- Broad permissionsline 1
Read, Write, Edit, Grep, Glob, Bash
claude/skills/bootstrap-agent-config/detect-stack.sh
- Executable scriptline 1
#!/usr/bin/env bash
claude/skills/harden/SKILL.md
- Broad permissionsline 1
Read, Grep, Glob, Bash
claude/skills/morning-triage/SKILL.md
- Broad permissionsline 1
Read, Grep, Glob, Bash
claude/skills/pr-shepherd/SKILL.md
- Broad permissionsline 1
Read, Grep, Glob, Bash, Edit, Write
claude/skills/route/SKILL.md
- Broad permissionsline 1
Read, Grep, Glob, Bash
claude/skills/systematic-debugging/SKILL.md
- Broad permissionsline 1
Read, Grep, Glob, Bash, Edit
claude/skills/using-compass/SKILL.md
- Broad permissionsline 1
Read, Grep, Glob, Bash
claude/skills/verification-before-completion/SKILL.md
- Broad permissionsline 1
Read, Grep, Glob, Bash
plugins/core-lsp/.claude-plugin/plugin.json
- Network accessline 1
{ "$schema": "https://json.schemastore.org/claude-code-plugin.json", - Network accessline 2
"$schema": "https://json.schemastore.org/claude-code-plugin.json", - Network accessline 7
"author": { "name": "Shekhar Mudarapu", "url": "https://github.com/dshakes" - Network accessline 8
"name": "Shekhar Mudarapu", "url": "https://github.com/dshakes" }, - Network accessline 9
"url": "https://github.com/dshakes" - Network accessline 10
}, "homepage": "https://github.com/dshakes/compass/tree/main/plugins/core-lsp", "repository": "https://github.com/dshakes/compass", - Network accessline 11
"homepage": "https://github.com/dshakes/compass/tree/main/plugins/core-lsp", - Network accessline 12
"repository": "https://github.com/dshakes/compass",
plugins/core/.claude-plugin/plugin.json
- Network accessline 1
{ "$schema": "https://json.schemastore.org/claude-code-plugin.json", - Network accessline 2
"$schema": "https://json.schemastore.org/claude-code-plugin.json", - Network accessline 7
"author": { "name": "Shekhar Mudarapu", "url": "https://github.com/dshakes" - Network accessline 8
"name": "Shekhar Mudarapu", "url": "https://github.com/dshakes" }, - Network accessline 9
"url": "https://github.com/dshakes" - Network accessline 10
}, "homepage": "https://github.com/dshakes/compass#readme", "repository": "https://github.com/dshakes/compass", - Network accessline 11
"homepage": "https://github.com/dshakes/compass#readme", - Network accessline 12
"repository": "https://github.com/dshakes/compass",
plugins/core/hooks/budget-gate.sh
plugins/core/hooks/checkpoint-wip.sh
- Executable scriptline 1
#!/usr/bin/env bash
plugins/core/hooks/format-on-edit.sh
- Executable scriptline 1
#!/usr/bin/env bash
plugins/core/hooks/inject-context.sh
- Executable scriptline 1
#!/usr/bin/env bash
plugins/core/hooks/lib/common.sh
plugins/core/hooks/lib/guardrail-remote.sh
- Executable scriptline 1
#!/usr/bin/env bash - Network accessline 58
_gr_azure() { have curl || return 0 - Network accessline 59
have curl || return 0 - Network accessline 60
[Credential-related source omitted] - Access to secretsline 60
[Credential-related source omitted] - Network accessline 61
local out out="$(curl -fsS --max-time 8 -X POST "$COMPASS_GUARDRAIL_URL" \ -H "Ocp-Apim-Subscription-Key: $COMPASS_GUARDRAIL_KEY" \ - Network accessline 62
[Credential-related source omitted] - Access to secretsline 62
[Credential-related source omitted] - Access to secretsline 63
[Credential-related source omitted] - Network accessline 69
_gr_webhook() { have curl || return 0 - Network accessline 70
have curl || return 0 - Network accessline 71
[ -n "${COMPASS_GUARDRAIL_URL:-}" ] || return 0 local out out="$(curl -fsS --max-time 8 -X POST "$COMPASS_GUARDRAIL_URL" \ - Network accessline 72
local out out="$(curl -fsS --max-time 8 -X POST "$COMPASS_GUARDRAIL_URL" \ -H 'Content-Type: application/json' \ - Network accessline 73
out="$(curl -fsS --max-time 8 -X POST "$COMPASS_GUARDRAIL_URL" \
plugins/core/hooks/lib/policy.sh
- Executable scriptline 1
#!/usr/bin/env bash - Dangerous shell operationline 12
# `curl|sh` variants — not a determined attacker or a cleverly-obfuscated payload. - Dangerous shell operationline 86
# Does the normalized command contain an rm recursive flag in ANY form? - Access to secretsline 110
[Credential-related source omitted] - Dangerous shell operationline 202
# 1b · find <root> … -delete / -exec rm — the rm-free recursive delete. - Dangerous shell operationline 203
if printf '%s' "$norm" | grep -Eq -- '(^| )find ' && printf '%s' "$norm" | grep -Eq -- '(-delete( |$)|-exec +rm)'; then - Dangerous shell operationline 207
printf 'Blocked `find … -delete` rooted at a catastrophic path (%s).' "$bad2"; return 0 - Dangerous shell operationline 224
printf 'Blocked chmod 777 on a system path.'; return 0 - Dangerous shell operationline 231
printf "Blocked 'curl|sh' style remote-execute. Download, read, then run if you trust it."; return 0 - Instruction override signalline 305
role-hijack|(you are now (in )?(developer|god|admin|jailbreak|maintenance|root) mode|act as (a |an )?(linux|unix) (terminal|shell|root shell|interpreter|command prompt)|pretend you (are|have) no (rules?|restrictions?|guidelines?|limits?|gua - Instruction override signalline 306
disable-safety|(disable|bypass|turn off|ignore|circumvent|switch off|remove).{0,30}(safety|guardrail|content (policy|filter)|moderation|restriction|the sandbox|approval step|permission check|security (check|hook)) permission-escalation|((ru - Instruction override signalline 307
permission-escalation|((run|use|using|with|enable|pass|set|invoke|add) .{0,20}--dangerously-skip-permissions|skip( the)? permission (check|prompt)|grant (yourself|me|all|full)\b|give (yourself|me) (admin|root|full)|add .{0,40}(allow ?list|a - Access to secretsline 308
[Credential-related source omitted] - Access to secretsline 309
[Credential-related source omitted] - Access to secretsline 310
[Credential-related source omitted] - Instruction override signalline 311
secret-disclosure|\b(print|echo|output|reveal|display|dump|paste|expose|show( me)?|include|return|tell( me)?)\b[^.;:!?]{0,24}(\b[a-z0-9_]*(_(secret|password|passwd|apikey|credentials?)|(secret|password|passwd|apikey|credentials?)_|(api|acce - Instruction override signalline 312
[Credential-related source omitted] - Access to secretsline 312
[Credential-related source omitted] - Instruction override signalline 313
guardrail-tamper|(set|switch|change|flip|put|enable|turn on|use)[^.]{0,60}(bypassPermissions|disableAllHooks|dangerouslySkipPermissions|enableAllProjectMcpServers)|(remove|delete|disable|comment out|stub out|neuter|unregister|empty|strip)( - Dangerous shell operationline 314
remote-exec|(curl|wget)[^|]*\| *base64 +(-d|--decode|-D)[^|]*\| *(sudo +)?[a-z]*sh\b|(curl|wget)[^|]*https?://[0-9]{1,3}(\.[0-9]{1,3}){3}[^|]*\| *(sudo +)?[a-z]*sh\b|(curl|wget) [^|]*( -[a-z]*k[a-z]*| --insecure| --no-check-certificate) [^| - Network accessline 335
# markdown-exfil/remote-exec/unicode/encoded/slopsquat. A line is eligible only if it has # NO destination/plumbing marker (:// · bare IP · hostname.tld · | · $( · backtick · > · # @path/@- · nc · /dev/tcp). It is split into clauses on , ; - Network accessline 336
# NO destination/plumbing marker (:// · bare IP · hostname.tld · | · $( · backtick · > · # @path/@- · nc · /dev/tcp). It is split into clauses on , ; : ! ? sentence-'.' and and/then/but/so/also/ # instead/however; a clause is "negated advic - Network accessline 337
# @path/@- · nc · /dev/tcp). It is split into clauses on , ; : ! ? sentence-'.' and and/then/but/so/also/ - Instruction override signalline 536
local n; n="$(printf '%s' "$t" | tr -s '[:space:]' ' ')" case "$n" in *dangerouslySkipPermissions*|*--dangerously-skip-permissions*) - Instruction override signalline 537
case "$n" in *dangerouslySkipPermissions*|*--dangerously-skip-permissions*) printf 'Project config sets dangerouslySkipPermissions — refusing to disarm the permission prompt.'; return 0 ;; - Instruction override signalline 538
*dangerouslySkipPermissions*|*--dangerously-skip-permissions*) - Instruction override signalline 539
printf 'Project config sets dangerouslySkipPermissions — refusing to disarm the permission prompt.'; return 0 ;; - Dangerous shell operationline 563
POLICY_MALWARE_DETECTORS='reverse-shell|(/dev/tcp/[0-9]|nc(at)? .{0,30}-e +/?(bin/)?(ba)?sh|socket.{0,40}(connect|dup2).{0,40}(/bin/(ba)?sh|exec)|pty\.spawn\(.{0,10}/bin/(ba)?sh|sh -i .{0,10}>& */dev/tcp) - Network accessline 563
POLICY_MALWARE_DETECTORS='reverse-shell|(/dev/tcp/[0-9]|nc(at)? .{0,30}-e +/?(bin/)?(ba)?sh|socket.{0,40}(connect|dup2).{0,40}(/bin/(ba)?sh|exec)|pty\.spawn\(.{0,10}/bin/(ba)?sh|sh -i .{0,10}>& */dev/tcp) - Access to secretsline 565
[Credential-related source omitted]
plugins/core/hooks/notify.sh
- Executable scriptline 1
#!/usr/bin/env bash
plugins/core/hooks/protect-paths.sh
- Executable scriptline 1
#!/usr/bin/env bash
plugins/core/hooks/record-learning.sh
- Executable scriptline 1
#!/usr/bin/env bash
plugins/core/hooks/require-tests.sh
- Executable scriptline 1
#!/usr/bin/env bash
plugins/core/hooks/route-intent.sh
- Executable scriptline 1
#!/usr/bin/env bash
plugins/core/hooks/scan-prompt.sh
- Executable scriptline 1
#!/usr/bin/env bash
plugins/core/hooks/scan-tool-output.sh
- Executable scriptline 1
#!/usr/bin/env bash
plugins/core/hooks/scan-untrusted-context.sh
- Executable scriptline 1
#!/usr/bin/env bash
plugins/core/hooks/session-memory.sh
- Executable scriptline 1
#!/usr/bin/env bash
plugins/core/skills/bootstrap-agent-config/SKILL.md
- Broad permissionsline 1
Read, Write, Edit, Grep, Glob, Bash
plugins/core/skills/bootstrap-agent-config/detect-stack.sh
- Executable scriptline 1
#!/usr/bin/env bash
plugins/core/skills/harden/SKILL.md
- Broad permissionsline 1
Read, Grep, Glob, Bash
plugins/core/skills/morning-triage/SKILL.md
- Broad permissionsline 1
Read, Grep, Glob, Bash
plugins/core/skills/pr-shepherd/SKILL.md
- Broad permissionsline 1
Read, Grep, Glob, Bash, Edit, Write
plugins/core/skills/route/SKILL.md
- Broad permissionsline 1
Read, Grep, Glob, Bash
plugins/core/skills/systematic-debugging/SKILL.md
- Broad permissionsline 1
Read, Grep, Glob, Bash, Edit
plugins/core/skills/using-compass/SKILL.md
- Broad permissionsline 1
Read, Grep, Glob, Bash
plugins/core/skills/verification-before-completion/SKILL.md
- Broad permissionsline 1
Read, Grep, Glob, Bash
scripts/check-mcp.sh
- Executable scriptline 1
#!/usr/bin/env bash - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
#!/usr/bin/env bash - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Network accessline 9
# spec. A compromised upstream release (tool-poisoning, CVE-2025-54136) is # then not auto-pulled on the next launch. # 2. INTEGRITY — no shell-injection markers ($( … ), backticks, `| sh`, `; curl …`) in - Network accessline 9
# spec. A compromised upstream release (tool-poisoning, CVE-2025-54136) is # then not auto-pulled on the next launch. # 2. INTEGRITY — no shell-injection markers ($( … ), backticks, `| sh`, `; curl …`) in - Network accessline 10
# then not auto-pulled on the next launch. # 2. INTEGRITY — no shell-injection markers ($( … ), backticks, `| sh`, `; curl …`) in any # command/args/description/note/setup field (manifest-tamper defense). - Network accessline 10
# then not auto-pulled on the next launch. # 2. INTEGRITY — no shell-injection markers ($( … ), backticks, `| sh`, `; curl …`) in any # command/args/description/note/setup field (manifest-tamper defense). - Network accessline 11
# 2. INTEGRITY — no shell-injection markers ($( … ), backticks, `| sh`, `; curl …`) in any - Network accessline 11
# 2. INTEGRITY — no shell-injection markers ($( … ), backticks, `| sh`, `; curl …`) in any - Network accessline 47
case "$url" in http://*) err "$name: remote URL is http (must be https): $url" ;; esac - Network accessline 47
case "$url" in http://*) err "$name: remote URL is http (must be https): $url" ;; esac
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Combined signals: 5 facts
- Reads SSH keys, and the same file sends data over the network or runs a command (line 203)plugins/core/hooks/lib/policy.sh:110High confidence
- Reads cloud credentials, and the same file sends data over the network or runs a command (line 314)plugins/core/hooks/lib/policy.sh:312High confidence
- Passes downloaded content to an interpreterplugins/core/hooks/lib/policy.sh:350High confidence
- Reads browser cookies or profile data, and the same file sends data over the network or runs a command (line 203)plugins/core/hooks/lib/policy.sh:565High confidence
- Passes downloaded content to an interpreterscripts/check-mcp.sh:42High confidence
Declared and executed: 18 facts
- Allows Bash without restrictions, though it has no scripts or shell blocksmorning-triage/SKILL.md:4High confidence
- Allows Bash without restrictions, though it has no scripts or shell blockspr-shepherd/SKILL.md:4High confidence
- Allows Bash without restrictions, though it has no scripts or shell blocksroute/SKILL.md:5High confidence
- Allows Bash without restrictions, though it has no scripts or shell blockssystematic-debugging/SKILL.md:4High confidence
- Allows Bash without restrictions, though it has no scripts or shell blocksusing-compass/SKILL.md:4High confidence
- Allows Bash without restrictions, though it has no scripts or shell blocksverification-before-completion/SKILL.md:4High confidence
- Uses SSH keys, which the skill description does not mentionplugins/core/hooks/lib/policy.sh:110High confidence
- Uses SSH keys, which the skill description does not mentionplugins/core/hooks/lib/policy.sh:308High confidence
- Uses SSH keys, which the skill description does not mentionplugins/core/hooks/lib/policy.sh:309High confidence
- Uses SSH keys, which the skill description does not mentionplugins/core/hooks/lib/policy.sh:310High confidence
- Uses cloud credentials, which the skill description does not mentionplugins/core/hooks/lib/policy.sh:312High confidence
- Uses browser cookies or profile data, which the skill description does not mentionplugins/core/hooks/lib/policy.sh:565High confidence
- Allows Bash without restrictions, though it has no scripts or shell blocksmorning-triage/SKILL.md:4High confidence
- Allows Bash without restrictions, though it has no scripts or shell blockspr-shepherd/SKILL.md:4High confidence
- Allows Bash without restrictions, though it has no scripts or shell blocksroute/SKILL.md:5High confidence
- Allows Bash without restrictions, though it has no scripts or shell blockssystematic-debugging/SKILL.md:4High confidence
- Allows Bash without restrictions, though it has no scripts or shell blocksusing-compass/SKILL.md:4High confidence
- Allows Bash without restrictions, though it has no scripts or shell blocksverification-before-completion/SKILL.md:4High confidence
Signal confidence: 92 facts
- Broad permissions in the frontmatter of the SKILL.mdbootstrap-agent-config/SKILL.md:1High confidence
- Executable script in code of a file that runsbootstrap-agent-config/detect-stack.sh:1High confidence
- Broad permissions in the frontmatter of the SKILL.mdharden/SKILL.md:1High confidence
- Broad permissions in the frontmatter of the SKILL.mdmorning-triage/SKILL.md:1High confidence
- Broad permissions in the frontmatter of the SKILL.mdpr-shepherd/SKILL.md:1High confidence
- Broad permissions in the frontmatter of the SKILL.mdroute/SKILL.md:1High confidence
- Broad permissions in the frontmatter of the SKILL.mdsystematic-debugging/SKILL.md:1High confidence
- Broad permissions in the frontmatter of the SKILL.mdusing-compass/SKILL.md:1High confidence
- Broad permissions in the frontmatter of the SKILL.mdverification-before-completion/SKILL.md:1High confidence
- Executable script in code of a file that runsplugins/core/hooks/budget-gate.sh:1High confidence
- Access to secrets in a comment of a file that runsplugins/core/hooks/budget-gate.sh:39Low confidence
- Executable script in code of a file that runsplugins/core/hooks/checkpoint-wip.sh:1High confidence
- Executable script in code of a file that runsplugins/core/hooks/format-on-edit.sh:1High confidence
- Executable script in code of a file that runsplugins/core/hooks/inject-context.sh:1High confidence
- Executable script in code of a file that runsplugins/core/hooks/lib/common.sh:1High confidence
- Access to secrets in a comment of a file that runsplugins/core/hooks/lib/common.sh:165Low confidence
- Executable script in code of a file that runsplugins/core/hooks/lib/guardrail-remote.sh:1High confidence
- Network access in code of a file that runsplugins/core/hooks/lib/guardrail-remote.sh:58High confidence
- Network access in code of a file that runsplugins/core/hooks/lib/guardrail-remote.sh:59High confidence
- Network access in code of a file that runsplugins/core/hooks/lib/guardrail-remote.sh:60High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valueplugins/core/hooks/lib/guardrail-remote.sh:60Low confidence
- Network access in code of a file that runsplugins/core/hooks/lib/guardrail-remote.sh:61High confidence
- Network access in code of a file that runsplugins/core/hooks/lib/guardrail-remote.sh:62High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valueplugins/core/hooks/lib/guardrail-remote.sh:62Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valueplugins/core/hooks/lib/guardrail-remote.sh:63Low confidence
- Network access in code of a file that runsplugins/core/hooks/lib/guardrail-remote.sh:69High confidence
- Network access in code of a file that runsplugins/core/hooks/lib/guardrail-remote.sh:70High confidence
- Network access in code of a file that runsplugins/core/hooks/lib/guardrail-remote.sh:71High confidence
- Network access in code of a file that runsplugins/core/hooks/lib/guardrail-remote.sh:72High confidence
- Network access in code of a file that runsplugins/core/hooks/lib/guardrail-remote.sh:73High confidence
- Executable script in code of a file that runsplugins/core/hooks/lib/policy.sh:1High confidence
- Dangerous shell operation in a comment of a file that runsplugins/core/hooks/lib/policy.sh:12Low confidence
- Dangerous shell operation in a comment of a file that runsplugins/core/hooks/lib/policy.sh:86Low confidence
- Access to secrets in code of a file that runs: reads a credential storeplugins/core/hooks/lib/policy.sh:110High confidence
- Dangerous shell operation in a comment of a file that runsplugins/core/hooks/lib/policy.sh:202Low confidence
- Dangerous shell operation in code of a file that runsplugins/core/hooks/lib/policy.sh:203High confidence
- Dangerous shell operation in code of a file that runsplugins/core/hooks/lib/policy.sh:207High confidence
- Dangerous shell operation in code of a file that runsplugins/core/hooks/lib/policy.sh:224High confidence
- Dangerous shell operation in code of a file that runsplugins/core/hooks/lib/policy.sh:231High confidence
- Instruction override signal in code of a file that runsplugins/core/hooks/lib/policy.sh:305Low confidence
- Instruction override signal in code of a file that runsplugins/core/hooks/lib/policy.sh:306Low confidence
- Instruction override signal in code of a file that runsplugins/core/hooks/lib/policy.sh:307Low confidence
- Access to secrets in code of a file that runs: reads a credential storeplugins/core/hooks/lib/policy.sh:308High confidence
- Access to secrets in code of a file that runs: reads a credential storeplugins/core/hooks/lib/policy.sh:309High confidence
- Access to secrets in code of a file that runs: reads a credential storeplugins/core/hooks/lib/policy.sh:310High confidence
- Instruction override signal in code of a file that runsplugins/core/hooks/lib/policy.sh:311Low confidence
- Instruction override signal in code of a file that runsplugins/core/hooks/lib/policy.sh:312Low confidence
- Access to secrets in code of a file that runs: reads a credential storeplugins/core/hooks/lib/policy.sh:312High confidence
- Instruction override signal in code of a file that runsplugins/core/hooks/lib/policy.sh:313Low confidence
- Dangerous shell operation in code of a file that runsplugins/core/hooks/lib/policy.sh:314High confidence
and 42 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Manifest .claude-plugin/marketplace.json | .claude/skills/<skill-name>/ |
| Codex | Native | Manifest codex/AGENTS.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md claude/skills/bootstrap-agent-config/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Native | Manifest gemini-extension.json | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md claude/skills/bootstrap-agent-config/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md claude/skills/bootstrap-agent-config/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.