πŸ” Aurite Agent Verifier

May 26, 2026 Β· View on GitHub

πŸ” Aurite Agent Verifier

Catch security issues, enforce standards, and validate agent patterns β€” before code ships.

GitHub stars License: MIT PRs Welcome Last commit

Works with Claude Code Β· Cursor Β· Windsurf Β· Roo Code Β· Codex Β· 30+ more

demo


Why?

AI coding agents are powerful β€” but they skip linting, ignore security basics, and hallucinate tool calls. Code reviews catch some of this, but not consistently.

Agent Verifier is an AI agent skill that acts as an automated reviewer. It checks for:

  • πŸ”’ Security gaps β€” hardcoded secrets, missing input validation, exposed stack traces
  • πŸ”„ Dangerous agent patterns β€” infinite loops, unbounded retries, hallucinated tools
  • πŸ“ Code quality β€” naming, docs, error handling, magic values
  • 🐍🟦🐹 Language-specific issues β€” Python type hints, TypeScript strict mode, Go error handling

Install it once. It runs every time you say "verify agent".


Author's Note

πŸ’‘ If Agent Verifier looks interesting to you β€” or saves you a prod bug β€” consider giving it a ⭐. It's the only signal GitHub gives us that this is worth maintaining and adding more capabilities to this repo.

🀝 Contributions and feature requests welcome β€” open an issue or PR any time.

What You Get

Run "verify agent" in your coding assistant (eg. Claude Code, Cursor or others) and get a structured report:

βœ… 8 checks passed | ⚠️ 3 warnings | ❌ 2 issues

❌ Hardcoded API key at config.py:12
  β†’ Move to environment variable

❌ Hallucinated tool reference: execute_sql
  β†’ Tool referenced in prompts but not defined

⚠️ Unbounded loop at agent/loop.py:45
  β†’ Add MAX_ITERATIONS constant

⚠️ System prompt exceeds recommended size (6.2K tokens)
  β†’ Split into modular sections

All analysis runs locally. Your code never leaves your machine.

See full report format
# Verification Report

**Project:** my-project
**Date:** 2026-03-04
**Mode:** Standalone
**Files analyzed:** 12
**Agent type detected:** LangGraph

## Summary

βœ… 8 checks passed | ⚠️ 3 warnings | ❌ 2 issues

### By Category
| Category | Pass | Warn | Issue |
|----------|------|------|-------|
| Code Quality | 5 | 1 | 0 |
| Security | 2 | 0 | 1 |
| Agent Patterns | 1 | 2 | 1 |

## Agent Pattern Analysis

### Loop Safety
- [x] All retry mechanisms have explicit limits
- [ ] ⚠️ Potential unbounded loop at `agent/loop.py:45`

### Tool Consistency
- [x] Tool registry found: 5 tools defined
- [ ] ❌ 1 hallucinated tool reference in prompts

### Context Management
- [ ] ⚠️ System prompt exceeds recommended size (6.2K tokens)
- [x] Tool descriptions within limits

## Findings

### βœ… Passing
- Naming conventions: Consistent camelCase used throughout
- Error handling: All async functions have try/catch

### ⚠️ Warnings
- Missing type hints: `utils.py:45`
  - **Location:** `utils.py:45`
  - **Suggestion:** Add type hints to `process_data()` function

### ❌ Issues
- Hardcoded API key: `config.py:12`
  - **Location:** `config.py:12`
  - **Rule:** No secrets in source code
  - **Fix:** Move to environment variable

## Recommendations

1. Move API keys to environment variables
2. Add type hints to public functions

## Agent-Specific Recommendations

1. **Loop Safety:** Add `MAX_ITERATIONS` constant to `agent/loop.py`
2. **Tool Registry:** Remove or implement `execute_sql` tool
3. **Context Management:** Split system prompt into modular sections

Quickstart

# Install (works with Claude Code, Roo Code, Cursor, and 30+ agents)
npx skills add aurite-ai/agent-verifier -a claude-code -a cursor -a <your-fav-coding-agent>

# Then in your agent folder just ask your coding assistant (eg. Claude Code, Cursor, or others):
verify agent

That's it. For more installation options, see Installation.

Learn More

New to Agent Verifier? These guides walk you through everything:

The rest of this README serves as a technical reference.


Contributions

We welcome contributions of all kinds! Here's how you can help:


Table of Contents


Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                      verification                           β”‚
β”‚                 Full Suite Orchestrator                     β”‚
β”‚                 trigger: "verify agent"                     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
            β”‚           β”‚           β”‚           β”‚
            β–Ό           β–Ό           β–Ό           β–Ό
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚  verify-  β”‚ β”‚  verify-  β”‚ β”‚  verify-  β”‚ β”‚  verify-  β”‚
    β”‚ security  β”‚ β”‚ patterns  β”‚ β”‚  quality  β”‚ β”‚ language  β”‚
    β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
    β”‚ β€’ secrets β”‚ β”‚ β€’ loops   β”‚ β”‚ β€’ naming  β”‚ β”‚ β€’ Python  β”‚
    β”‚ β€’ deps    β”‚ β”‚ β€’ retries β”‚ β”‚ β€’ docs    β”‚ β”‚ β€’ TypeScriptβ”‚
    β”‚ β€’ input   β”‚ β”‚ β€’ tools   β”‚ β”‚ β€’ errors  β”‚ β”‚ β€’ Go      β”‚
    β”‚ β€’ errors  β”‚ β”‚ β€’ context β”‚ β”‚ β€’ magic   β”‚ β”‚           β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Each skill can run independently: "verify agent security", "verify agent patterns", etc.

Available Skills

SkillPurpose
verificationFull verification suite (orchestrator) β€” runs all checks below
verify-securitySecurity checks (secrets, input validation, dependencies)
verify-patternsAgent patterns (loops, retries, tools, context)
verify-qualityCode quality (naming, organization, docs)
verify-languageLanguage-specific checks (Python, TypeScript, Go)

Installation

# Install all skills to all detected agents (Claude Code, Roo Code, Cursor, etc.)
npx skills add aurite-ai/agent-verifier -a claude-code -a <your-fav-coding-agent>
More install options (specific agents, skills, or version)
# List available skills in this package
npx skills add aurite-ai/agent-verifier --list

# Install to specific agents (multi select allowed)
npx skills add aurite-ai/agent-verifier -a claude-code -a roo

# Install specific skills only
npx skills add aurite-ai/agent-verifier --skill verification verify-security

# Install globally (available in all projects)
npx skills add aurite-ai/agent-verifier -g
Install from GitHub repository

Install directly from a GitHub repo (public or private with access):

# List available skills
npx skills add github:aurite-ai/agent-verifier --list

# Install to specific agents (multi select allowed)
npx skills add github:aurite-ai/agent-verifier -a claude-code -a roo

# Install all skills from public GitHub repo
npx skills add github:aurite-ai/agent-verifier --all

# Install specific skills only
npx skills add github:aurite-ai/agent-verifier --skill verification verify-security

# From a specific branch
npx skills add github:aurite-ai/agent-verifier#main --all

# From a specific tag/release
npx skills add github:aurite-ai/agent-verifier#v1.0.0 --all

# From private repo (requires GitHub authentication)
npx skills add github:your-org/your-private-skill --all
Install from local source

Install from a local directory during development:

# List available skills in local repo
npx skills add ./path/to/agent-verifier --list

# Install to specific agents (multi select allowed)
npx skills add ./path/to/agent-verifier -a claude-code -a roo

# Install all skills from local path
npx skills add ./path/to/agent-verifier --all

# Install specific skills only
npx skills add ./path/to/agent-verifier --skill verification verify-patterns

# Install with link (for development - changes reflect immediately)
npx skills link .
Manual installation

For agents that don't support the skills CLI, copy the skill files directly:

# For Roo Code (copy all skills)
cp -r skills/* ~/.roo/skills/

# For Claude Code (copy all skills)
cp -r skills/* ~/.claude/skills/

# For other agents, check their documentation for the skills directory location

Updating Installed Skills

From NPM Registry

Re-run the install command to get the latest published version:

# Update all skills to latest version
npx skills add aurite-ai/agent-verifier --all
More update options
# Install to specific agents (multi select allowed)
npx skills add aurite-ai/agent-verifier -a claude-code

# Update specific skills only
npx skills add aurite-ai/agent-verifier --skill verification verify-security -a claude-code

# Or specify a version
npx skills add aurite-ai/agent-verifier@1.2.0 -a claude-code
Update from GitHub repository

Re-run with the same source to pull latest changes:

# Update all skills from default branch
npx skills add github:aurite-ai/agent-verifier --all -a claude-code

# Update from specific branch
npx skills add github:aurite-ai/agent-verifier#main --all -a claude-code

# Update to specific tag/release
npx skills add github:aurite-ai/agent-verifier#v1.2.0 -a claude-code
Update from local source or manual update

Symlink install: If installed with npx skills link ., changes reflect automatically. No action needed.

Check if you're using symlink:

# Check the skills-lock.json in your project
cat skills-lock.json  # Look for "method": "symlink"

# Or check the installed skill directly
ls -la .agents/skills/verification  # Should show -> pointing to source

Copy install: Re-run the install command to update:

# Reinstall from source
npx skills add /path/to/agent-verifier -a claude-code

# Or force reinstall
npx skills add /path/to/agent-verifier -a claude-code --force

Remove and reinstall:

# Remove each skill by skill name
npx skills remove verification

# Reinstall from any source
npx skills add aurite-ai/agent-verifier -a claude-code

Manual update:

# Copy updated files directly
cp -r /path/to/agent-verifier/skills/verification ~/.claude/skills/

Usage

Once installed, trigger verification by asking your coding agent:

Full Verification Suite

"verify agent"

This runs the complete verification suite covering security, agent patterns, code quality, and language-specific checks. Use this for comprehensive audits or pre-release reviews.

Focused Verification

For faster, targeted checks, use domain-specific invocations:

CommandWhat it checks
"verify agent security"Secrets, input validation, error exposure, dependency vulnerabilities
"verify agent patterns"Loop safety, retry limits, tool registry, context size, LangGraph cycles
"verify agent quality"Naming, organization, documentation, magic values, error handling
"verify agent language"Python type hints, TypeScript strict mode, Go error handling

Legacy Triggers (Still Supported)

These phrases also trigger the full verification suite:

  • "review this implementation"
  • "check compliance"
  • "audit my agent"
  • "validate against best practices"

Features

Dual-Mode Operation

Standalone Mode (default):

  • Automatically detects project language and framework
  • Applies built-in best practices for code quality and security
  • Honors existing lint configs (ESLint, Biome, etc.)

Kahuna-Enhanced Mode (when Kahuna is installed):

  • Loads organization-specific rules from knowledge base
  • Uses kahuna_ask for deeper context queries
  • Applies framework patterns surfaced by kahuna_prepare_context

Verification Checks

The skill performs comprehensive verification across multiple categories:

1. Code Quality

CheckDescriptionSeverity
Naming conventionsClear, descriptive, consistent naming⚠️ Warning
Code organizationAppropriate structure and modularity⚠️ Warning
Error handlingProper try/catch, error propagation❌ Issue
Magic valuesNo unexplained numbers/strings⚠️ Warning
DocumentationComments for complex logic⚠️ Warning

2. Security

CheckDescriptionSeverity
Hardcoded secretsNo API keys, passwords in source❌ Issue
Input validationValidate external data❌ Issue
Error exposureNo stack traces in production⚠️ Warning
Secure defaultsSafe default configurations⚠️ Warning
Dependency vulnerabilitiesKnown CVEs in dependencies❌ Issue

3. Language-Specific

Python:

CheckDescription
Type hintsPublic functions should have type annotations
DocstringsModules, classes, functions should be documented
Requirements pinningDependencies should specify versions

TypeScript/JavaScript:

CheckDescription
Type safetyPrefer strict mode, avoid any
Async handlingProper error handling for promises
Dependency securityNo outdated/vulnerable packages

Go:

CheckDescription
Error handlingNo ignored errors (_ = err)
Context propagationPass context through call chains

4. AI Agent Patterns

Loop Safety:

PatternLanguageSeverity
while True: without breakPython⚠️ Warning
while (true) without breakTS/JS⚠️ Warning
for { } without break/returnGo⚠️ Warning
Recursive calls without depth limitAll⚠️ Warning

Retry Limits:

PatternRequired ParameterSeverity
@retry (tenacity)stop=stop_after_attempt(n)❌ Issue
@backoff.on_exceptionmax_tries=n❌ Issue
retry (async-retry)retries: n❌ Issue
p-retryretries: n❌ Issue

Tool Registry:

CheckDescriptionSeverity
Hallucinated toolsTool references not in registry❌ Issue
Undocumented toolsTools not listed in prompts⚠️ Warning

Context Management:

Content TypeWarningIssue
System prompt> 4,000 tokens (~16KB)> 8,000 tokens (~32KB)
Single tool description> 500 tokens (~2KB)> 1,000 tokens (~4KB)
Total tool descriptions> 2,000 tokens (~8KB)> 4,000 tokens (~16KB)

Note: "System prompt" refers to your agent's prompt files (e.g. prompts/system.md, prompts.py, system.md). Files in skills/ directories are skill definitions loaded on demand, not static system prompts, and are excluded from this check.

5. Framework Detection

Automatically detects and applies framework-specific checks:

FrameworkDetectionSpecial Checks
LangGraphlanggraph in importsState schema, node connectivity
CrewAIcrewai in importsAgent roles, task dependencies
AutoGenautogen in importsAgent configuration
LangChainlangchain in importsChain composition, memory config
CustomDirect SDK usageGeneral agent patterns
Testing the Skill

Test fixtures are provided in tests/fixtures/ to validate the agent pattern detection:

# Navigate to a fixture directory and ask your agent to verify it
cd tests/fixtures/infinite_loop
# Then ask: "verify this code for agent patterns"

# Or verify all fixtures at once
cd tests/fixtures
# Then ask: "verify these test fixtures and report findings"

See tests/fixtures/README.md for expected results.

How It Compares

Agent VerifierESLint/BiomeSemgrepManual Review
AI agent patterns (loops, retries, tools)βœ…βŒβŒSometimes
Security checksβœ…Partialβœ…Sometimes
Language-specific qualityβœ…βœ…βœ…βœ…
Works inside your AI agentβœ…βŒβŒβŒ
Zero configβœ…βŒβŒN/A
Context-size analysisβœ…βŒβŒRarely
Runs locally / privateβœ…βœ…βœ…βœ…

Agent Verifier is not a replacement for linters β€” it catches what they cannot: agent-specific patterns, context management issues, and tool hallucinations.

Check Reliability

Because Agent Verifier runs as an AI agent skill rather than a deterministic parser, checks are classified into two tiers. Every finding in the report is tagged accordingly.

TierTagHow it's appliedReliability
Pattern-matched[P]Mechanical β€” rule applied exactly as specified to code structureHigh β€” same answer on every run
Heuristic[H]Judgment β€” requires interpretation of intent or qualityBest-effort β€” may vary

Pattern-matched checks (reliable):

CheckWhat it looks for
Retry limits@retry / @backoff / p-retry / urllib3.Retry without explicit stop/total parameter β†’ ❌ Issue
Loop safetywhile True / for {} / while (true) without break in scope β†’ ❌ Issue
Tool registryTool names referenced in prompts but absent from definitions β†’ ❌ Issue
Context sizelen(prompt) / 4 compared against token thresholds β†’ ⚠️ Warning / ❌ Issue
Requirements pinning>=, >, or unpinned deps in requirements.txt / pyproject.toml β†’ ❌ Issue
Hardcoded secretsAssignments to API_KEY, SECRET, PASSWORD, TOKEN string literals β†’ ❌ Issue
No any types (TS)Unqualified : any annotations β†’ ⚠️ Warning
Ignored errors (Go)_ = functionCall() where function returns error β†’ ❌ Issue
LangGraph cyclesGraph cycles with no reachable END in edge mappings β†’ ❌ Issue

Heuristic checks (best-effort):

CheckWhy it requires judgment
Code organization"Appropriate structure" is context-dependent
Naming conventionsConsistency requires understanding the project's conventions
Input validationWhether validation is sufficient depends on the threat model
Docstring qualityPresence is checkable; usefulness is not
Tool error handlingWhat counts as adequate handling varies

Privacy

All code analysis happens locally. No telemetry, no external calls, no data collection. Your code never leaves your machine.

Contributing

We welcome contributions of all kinds! Here's how you can help:


Citation

If you use Agent Verifier in your research or reference it in a paper, please cite:

@misc{oswal2026agent,
  title={Agent Verifier: Catch security issues, enforce standards, and validate agent patterns β€” before code ships.},
  author={Oswal, Jiten},
  journal={Github (Open Source)},
  url={https://github.com/Aurite-ai/agent-verifier},
  year={2026}
}

Built by Aurite AI

Built by Aurite AI. Interested in enterprise capabilities β€” secure agent infrastructure, shared context pools, administrative controls, and centralized hosting? Visit aurite.ai or reach out at info@aurite.ai.

License

MIT License β€” see LICENSE