npx skills add ...
npx skills add getsentry/dotagents --skill warden-skill
npx skills add getsentry/dotagents --skill warden-skill
Guide for using Warden CLI locally to analyze code changes. Use when running warden commands, configuring warden.toml, creating custom skills, understanding triggers, or troubleshooting analysis issues. Triggers on "run warden", "warden config", "warden.toml", "create warden skill", "add trigger", or any Warden-related local development task.
Warden is an event-driven AI agent that analyzes code changes and executes configurable skills to produce structured reports with findings.
Commands:
(default) - Run analysisinit - Initialize warden.toml and GitHub workflowadd [skill] - Add skill trigger to warden.tomlsync [repo] - Update cached remote skills to latestsetup-app - Create GitHub App via manifest flowTargets:
<files> - Specific files (e.g., src/auth.ts)<glob> - Pattern match (e.g., src/**/*.ts)<git-ref> - Git range (e.g., main..HEAD, HEAD~3)(none) - Uncommitted changesKey Options:
| Option | Description |
|---|---|
--skill <name> | Run only this skill |
--config <path> | Path to warden.toml (default: ./warden.toml) |
-m, --model <model> | Model to use |
--json | Output as JSON |
-o, --output <path> | Write output to JSONL file |
--fail-on <severity> | Exit 1 if findings >= severity |
--comment-on <severity> | Show findings >= severity |
--fix | Auto-apply suggested fixes |
--parallel <n> | Concurrent executions (default: 4) |
--offline | Use cached remote skills only |
-q, --quiet | Errors and summary only |
-v, --verbose | Show real-time findings |
-vv | Debug info (tokens, latency) |
Severity levels: critical, high, medium, low, info, off
See references/config-schema.md for complete schema.
Minimal example:
With custom output thresholds:
Skills live in .warden/skills/, .agents/skills/, or .claude/skills/.
Structure:
SKILL.md format:
Available tools: Read, Glob, Grep, WebFetch, WebSearch, Bash, Write, Edit
Skills can be fetched from GitHub repositories:
Remote trigger in warden.toml:
Cache location: ~/.local/warden/skills/ (override with WARDEN_STATE_DIR)
Cache TTL: 24 hours for unpinned refs (override with WARDEN_SKILL_CACHE_TTL in seconds)
Strict security on critical files:
Skip test files:
Whole-file analysis for configs:
No findings reported:
--comment-on threshold (default shows all)filters.paths-v to see which files are being analyzedFiles being skipped:
node_modules/, dist/ignorePaths in config-vv to see skip reasonsToken/cost issues:
maxTurns (default: 50)paths**warden [command] [targets...] [options]version = 1
[defaults]
model = "claude-sonnet-4-20250514"
[[triggers]]
name = "find-bugs"
event = "pull_request"
actions = ["opened", "synchronize"]
skill = "find-bugs"
[triggers.filters]
paths = ["src/**/*.ts"][[triggers]]
name = "security-strict"
event = "pull_request"
actions = ["opened", "synchronize"]
skill = "security-review"
[triggers.filters]
paths = ["src/auth/**", "src/payments/**"]
[triggers.output]
failOn = "critical"
commentOn = "high"
maxFindings = 20.warden/skills/my-skill/
└── SKILL.md---
name: my-skill
description: What this skill analyzes
allowed-tools: Read Grep Glob
---
[Analysis instructions for the agent]
## What to Look For
- Specific issue type 1
- Specific issue type 2
## Output Format
Report findings with severity, location, and suggested fix.# Add a remote skill
warden add --remote getsentry/skills --skill security-review
# Add with version pinning (recommended for reproducibility)
warden add --remote getsentry/skills@abc123 --skill security-review
# List skills in a remote repo
warden add --remote getsentry/skills --list
# Update all unpinned remote skills
warden sync
# Update specific repo
warden sync getsentry/skills
# Run with cached skills only (no network)
warden --offline[[triggers]]
name = "security-review"
event = "pull_request"
actions = ["opened", "synchronize"]
skill = "security-review"
remote = "getsentry/skills@abc123"[[triggers]]
name = "auth-security"
event = "pull_request"
actions = ["opened", "synchronize"]
skill = "security-review"
model = "claude-opus-4-20250514"
maxTurns = 100
[triggers.filters]
paths = ["src/auth/**", "src/payments/**"]
[triggers.output]
failOn = "critical"[triggers.filters]
paths = ["src/**/*.ts"]
ignorePaths = ["**/*.test.ts", "**/*.spec.ts"][defaults.chunking.filePatterns]
pattern = "*.config.*"
mode = "whole-file"