Pete

The Stack

All posts / Audit (5)

Ithaca, NY

Had Forge audit itself today. Forge is the agent I use to build MCP servers (part of the larger system). Designs the architecture, writes the code, hardens the container, ships to the registry. It has been running for months.

Asked it to grade its own playbook against best practices. Came back with seven specific gaps. No anti-hallucination rule for external claims. No token budget enforcement. No multi-client smoke test, only Claude Code. No FastMCP version pinning policy. Reflection check was one line. Lessons file path undocumented. No quarterly re-audit cadence on public repos.

Forge proposed a v2 with each gap closed as a discrete edit, marked with explicit ADD or REPLACE blocks so the diffs apply cleanly. I approved. It applied them to its own definition file. Playbook went from 258 to 304 lines.

The interesting part: every gap was something I had been manually fixing in spawn prompts every time I called the agent. The audit just made the patches permanent so I stop typing them.

Agents that audit themselves and apply the fix are the real move. Tools that build tools.

Ran the new pipeline on 8 Finger Lakes wineries and breweries tonight. Every one of them has a live audit report, a drafted outreach email, and a tracking file in the pipeline. Highlights: one winery's meta description says 'dance studio,' another is the only cask ale brewery in New York but Google doesn't know it, and a third has 74 fonts loaded on a single page. The Finger Lakes wine trail deserves better websites.

Built a one-command prospect audit system using Claude Code. I type /radar and a domain, and about 5 minutes later there's a branded, client-ready report page live on my website. Here's what happens under the hood.

4 agents, each with a Matrix codename:

  1. Radar (the orchestrator) coordinates everything. It receives the target domain, dispatches the two scanning agents in parallel, collects their results, generates the report, builds the site, deploys it, and verifies it's live.

  2. Niobe (SEO audit) runs niobe-scan.py, a Python scanner I wrote that checks 7 categories: technical SEO, on-page SEO, performance, structured data, security headers, content freshness, and local SEO. It crawls the site, pulls headers, checks SSL certs, parses meta tags, tests page speed, looks for schema markup. Outputs structured JSON with scores and findings.

  3. Seer (brand positioning audit) runs seer-scan.py, another Python scanner that evaluates 4 categories: first impression, messaging and voice, digital footprint, and brand cohesion. It analyzes the homepage hero, CTA placement, color palette, navigation complexity, and does web searches for competitive context. Also outputs structured JSON.

  4. Keeper (production deployment) handles the GoDaddy VPS. After the report page is generated, the Astro site gets built and rsync'd to the production server where brooksnewmedia.com is hosted.

The custom scripts:

  • niobe-scan.py: Python script with UA rotation, rate limiting, and Cloudflare detection. Checks SSL, headers, meta tags, structured data, sitemap, robots.txt, page speed, content dates, NAP consistency, Google Business Profile.
  • seer-scan.py: Similar architecture but focused on brand signals. Analyzes hero content, CTA presence, color count, font consistency, nav complexity, social presence, review platforms.

Both scripts output JSON that Claude Code's agents parse and interpret. The agents add the qualitative analysis: what the numbers mean, what to prioritize, how to pitch the fix.

The report itself is an Astro page generated from a template, styled to match my Brooks New Media site. It's a hidden page (not in navigation), so I can share the direct URL with the prospect as a leave-behind. Letter grades, color-coded score cards, a merged top-10 priority list, and a custom 3-month "here's how we'd fix this" pitch at the bottom.

The whole thing runs from Claude Code in my terminal. One command, four agents, two Python scanners, one Astro template, one production deploy.

Refactored the SEO audit agent. Moved all 35 scanning checks into a standalone Python script that outputs structured JSON. The agent file went from 440 lines to 95. Same functionality, way fewer tokens burned per session.

Also added a 7th audit category: Content Freshness. Checks copyright year staleness, broken internal and external links, blog recency, and dead social links. The kind of stuff that makes a site look abandoned even if the business is alive.

Built a second audit tool. Niobe checks if search engines can find you. Seer answers the harder question: when people find you, does your site make them pick you over the competition? Grades brand positioning across five categories, then stacks you against competitors and finds the gaps.

Ran it on myself first. brooksnewmedia.com: C (76.8). Strong messaging, weak digital footprint. Then ran five Ithaca competitors. Two are ghosts. One makes ROI claims with zero proof. I don't need to outspend them. I need to out-present them.

Two audit tools now. Two data-backed conversation starters for every discovery call.