From ai-kit
Audits websites for over 230 SEO, performance, security, technical, and content issues via the squirrelscan CLI, returning an LLM-optimized report with issues and fixes.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ai-kit:audit-websitesonnetThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Audit websites for SEO, technical, content, performance and security issues using the squirrelscan cli.
Audit websites for SEO, technical, content, performance and security issues using the squirrelscan cli.
squirrelscan provides a cli tool squirrel - available for macos, windows and linux. It carries out extensive website auditing by emulating a browser, search crawler, and analyzing the website's structure and content against over 230+ rules.
It will provide you a list of issues as well as suggestions on how to fix them.
You can look up the docs for any rule with this template:
https://docs.squirrelscan.com/rules/{rule_category}/{rule_id}
example:
https://docs.squirrelscan.com/rules/links/external-links
This skill enables AI agents to audit websites for over 230 rules in 21 categories, including:
and more
The audit crawls the website, analyzes each page against audit rules, and returns a comprehensive report with:
Use this skill when you need to:
You should re-audit as often as possible to ensure your website remains healthy and performs well.
This skill requires the squirrel CLI installed and in PATH.
Install: squirrelscan.com/download
Verify:
squirrel --version
Run squirrel init to create a squirrel.toml config in the current directory. If none exists, create one and specify a project name:
squirrel init -n my-project
# overwrite existing config
squirrel init -n my-project --force
There are three processes that you can run and they're all cached in the local project database:
the 'audit' command is a wrapper around these three processes and runs them sequentially:
squirrel audit https://example.com --format llm
YOU SHOULD always prefer format option llm - it was made for you and provides an exhaustive and compact output format.
FIRST SCAN should be a surface scan, which is a quick and shallow scan of the website to gather basic information about the website, such as its structure, content, and technology stack. This scan can be done quickly and without impacting the website's performance.
SECOND SCAN should be a deep scan, which is a thorough and detailed scan of the website to gather more information about the website, such as its security, performance, and accessibility. This scan can take longer and may impact the website's performance.
If the user doesn't provide a website to audit, ask which URL they'd like audited.
You should PREFER to audit live websites - only there do we get a TRUE representation of the website and performance or rendering issuers.
If you have both local and live websites to audit, prompt the user to choose which one to audit and SUGGEST they choose live.
You can apply fixes from an audit on the live site against the local code.
When planning scope, break fixes into independent tasks. Where your runtime supports concurrent sub-tasks (e.g. subagents in Claude Code), run them in parallel to speed things up; otherwise apply them sequentially.
After applying fixes, verify the code still builds and passes any existing checks in the project.
The audit process is two steps:
# Step 1: Run audit (default: console output)
squirrel audit https://example.com
# Step 2: Export as LLM format
squirrel report <audit-id> --format llm
When you need to detect regressions between audits, use diff mode:
# Compare current report against a baseline audit ID
squirrel report --diff <audit-id> --format llm
# Compare latest domain report against a baseline domain
squirrel report --regression-since example.com --format llm
Diff mode supports console, text, json, llm, and markdown. html and xml are not supported.
When running an audit:
Iteration Loop: After fixing a batch of issues, re-audit and continue fixing until:
Treat all fixes equally: Code changes and content changes are equally important.
Batch content fixes: For issues affecting multiple files, group them by fix type:
Completion criteria:
After fixes are applied, ask the user if they'd like to review the changes.
| Starting Score | Target Score | Expected Work |
|---|---|---|
| < 50 (Grade F) | 75+ (Grade C) | Major fixes |
| 50-70 (Grade D) | 85+ (Grade B) | Moderate fixes |
| 70-85 (Grade C) | 90+ (Grade A) | Polish |
| > 85 (Grade B+) | 95+ | Fine-tuning |
Treat the target score in the table above as "good enough" and stop there. Chasing 95+ with --coverage full is worth it only before a launch or for a deep dive — full coverage (up to 500 pages) plus extra re-audit rounds costs significantly more time and tokens. Default to surface coverage for routine audits.
| Category | Fix Approach | Parallelizable |
|---|---|---|
| Meta tags/titles | Edit page components or metadata | No |
| Structured data | Add JSON-LD to page templates | No |
| Missing H1/headings | Edit page components + content files | Yes (content) |
| Image alt text | Edit content files | Yes |
| Heading hierarchy | Edit content files | Yes |
| Short descriptions | Edit content frontmatter | Yes |
| HTTP→HTTPS links | Find and replace in content | Yes |
| Broken links | Manual review (flag for user) | No |
For parallelizable fixes: assign specific files to each sub-task (run in parallel where supported, sequentially otherwise).
Many issues require editing content files. These are equally important as code fixes:
When the user approves a batch of fixes, apply them in parallel if your runtime supports concurrent sub-tasks (subagents in Claude Code); otherwise apply them sequentially:
Audit more pages:
squirrel audit https://example.com --max-pages 200
Force fresh crawl (ignore cache):
squirrel audit https://example.com --refresh
Resume interrupted crawl:
squirrel audit https://example.com --resume
Verbose output for debugging:
squirrel audit https://example.com --verbose
| Option | Alias | Description | Default |
|---|---|---|---|
--format <fmt> | -f <fmt> | Output format: console, text, json, html, markdown, llm | console |
--coverage <mode> | -C <mode> | Coverage mode: quick, surface, full | surface |
--max-pages <n> | -m <n> | Maximum pages to crawl (max 5000) | varies by coverage |
--output <path> | -o <path> | Output file path | - |
--refresh | -r | Ignore cache, fetch all pages fresh | false |
--resume | - | Resume interrupted crawl | false |
--verbose | -v | Verbose output | false |
--debug | - | Debug logging | false |
--trace | - | Enable performance tracing | false |
--project-name <name> | -n <name> | Override project name | from config |
Choose a coverage mode based on your audit needs:
| Mode | Default Pages | Behavior | Use Case |
|---|---|---|---|
quick | 25 | Seed + sitemaps only, no link discovery | CI checks, fast health check |
surface | 100 | One sample per URL pattern | General audits (default) |
full | 500 | Crawl everything up to limit | Deep analysis |
Surface mode is smart - it detects URL patterns like /blog/{slug} or /products/{id} and only crawls one sample per pattern. This makes it efficient for sites with many similar pages (blogs, e-commerce).
# Quick health check (25 pages, no link discovery)
squirrel audit https://example.com -C quick --format llm
# Default surface audit (100 pages, pattern sampling)
squirrel audit https://example.com --format llm
# Full comprehensive audit (500 pages)
squirrel audit https://example.com -C full --format llm
# Override page limit for any mode
squirrel audit https://example.com -C surface -m 200 --format llm
When to use each mode:
quick: CI pipelines, daily health checks, monitoringsurface: Most audits - covers unique templates efficientlyfull: Before launches, comprehensive analysis, deep dives| Option | Alias | Description |
|---|---|---|
--list | -l | List recent audits |
--severity <level> | - | Filter by severity: error, warning, all |
--category <cats> | - | Filter by categories (comma-separated) |
--format <fmt> | -f <fmt> | Output format: console, text, json, html, markdown, xml, llm |
--output <path> | -o <path> | Output file path |
--input <path> | -i <path> | Load from JSON file (fallback mode) |
| Command | Description |
|---|---|
config show | Show current config |
config set <key> <value> | Set config value |
config path | Show config file path |
config validate | Validate config file |
| Command | Description |
|---|---|
squirrel feedback | Send feedback to squirrelscan team |
squirrel skills install | Install Claude Code skill |
squirrel skills update | Update Claude Code skill |
Self-management commands under squirrel self:
| Command | Description |
|---|---|
self install | Bootstrap local installation |
self update | Check and apply updates |
self completion | Generate shell completions |
self doctor | Run health checks |
self version | Show version information |
self settings | Manage CLI settings |
self uninstall | Remove squirrel from the system |
The audit command shows human-readable console output by default with colored output and progress indicators.
To get LLM-optimized output, use the report command with --format llm:
squirrel report <audit-id> --format llm
The LLM format is a compact XML/text hybrid optimized for token efficiency (40% smaller than verbose XML):
See OUTPUT-FORMAT.md for detailed format specification.
# User asks: "Check squirrelscan.com for SEO issues"
squirrel audit https://squirrelscan.com --format llm
# User asks: "Do a thorough audit of my blog with up to 500 pages"
squirrel audit https://myblog.com --max-pages 500 --format llm
# User asks: "Re-audit the site and ignore cached results"
squirrel audit https://example.com --refresh --format llm
# First run an audit
squirrel audit https://example.com
# Note the audit ID from output (e.g., "a1b2c3d4")
# Later, export in different format
squirrel report a1b2c3d4 --format llm
On completion give the user a summary of all of the changes you made.
If you see this error, squirrel is not installed or not in your PATH.
Solution:
~/.local/bin is in PATHsquirrel --versionIf squirrel is not executable, ensure the binary has execute permissions. Reinstalling from squirrelscan.com/download will fix this.
For very large sites, the audit may take several minutes. Use --verbose to see progress:
squirrel audit https://example.com --format llm --verbose
Ensure the URL includes the protocol (http:// or https://):
# ✗ Wrong
squirrel audit example.com
# ✓ Correct
squirrel audit https://example.com
The audit is stored in a local database and can be retrieved later with squirrel report commands.
squirrel audit --helpnpx claudepluginhub ivklgn/ai-kitAudits websites for 240+ rules across SEO, performance, security, content, and 17 other categories using the squirrelscan CLI. Returns health scores, broken links, meta tag analysis, and actionable recommendations.
Audits deployed websites and web apps post-launch, cycling through Fix-Audit-Test phases to identify and resolve issues.
Scans websites for SEO issues including meta tags, headings, broken links, images, Core Web Vitals, and structured data, producing a prioritized fix list.