Your Code Is Under New Management
Agents that review your code. Locally or on every PR.
Install
Install the CLI globally.
$ npm install -g @sentry/warden Initialize
Scaffold your project with config and GitHub workflow.
$ warden init Created warden.toml Created .github/workflows/warden.yml Next steps: 1. Set ANTHROPIC_API_KEY in .env.local 2. Add ANTHROPIC_API_KEY to repository secrets https://github.com/your-org/your-repo/settings/secrets/actions 3. Commit and open a PR to test
Add some skills
Install a skill from the community. Vercel's React best practices is a great start.
$ npx skills add vercel-labs/agent-skills --skill vercel-react-best-practices Run Locally
Catch issues before you push. Fix them immediately.
$ warden HEAD --skill vercel-react-best-practices Analyzing changes from HEAD... FILES 3 files · 5 chunks ~ src/components/UserList.tsx (2 chunks) ~ src/components/Dashboard.tsx (2 chunks) + src/components/Modal.tsx (1 chunk) ┌─ vercel-react-best-practices ─────────────────────────── 8.2s ─┐ │ 2 findings: ● 1 medium ● 1 low │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ● Missing React.memo for list items │ │ src/components/UserList.tsx:15 │ │ 15 │ const UserCard = ({ user }) => <div>{user.name}</div>; │ │ │ │ List item components should be memoized to prevent │ │ unnecessary re-renders when parent state changes. │ │ │ │ ● useEffect missing dependency │ │ src/components/Dashboard.tsx:23 │ │ 23 │ useEffect(() => { fetchData() }, []) │ │ │ │ The dependency array is missing 'fetchData'. This could │ │ lead to stale closures or unexpected behavior. │ │ │ └─────────────────────────────────────────────────────────────────┘ SUMMARY 2 findings: ● 1 medium ● 1 low Analysis completed in 8.2s
Keep an Eye on GitHub
Open a PR and Warden reviews it automatically. Findings appear as inline comments.
Missing React.memo for list items
src/components/UserList.tsx
15- const UserCard = ({ user }) => <div>{user.name}</div>; 15+ const UserCard = React.memo(({ user }) => 16+ <div>{user.name}</div> 17+ );
List item components should be memoized to prevent unnecessary re-renders when parent state changes.