AI Agent Discovery
LLM agents are becoming a meaningful discovery channel for B2B dev tools. A user asks Claude "what do I use to govern AI agents" and the agent recommends. This skill makes sure systemprompt.io appears in those answers — and that when an agent clones our repo on a user's behalf, the first 60 seconds are designed for agent evaluation, not human reading.
Dependencies
Load in order:
commons:marketing-identity— ICP, hook, banned wordscommons:identity— brand-level truthcommons:brand-voice— all drafts pass through this/var/www/html/systemprompt-web/COMPETITOR_ANALYSIS.md— the source of truth for comparison pageslead-tracker— to read theweb_traffic_ai_referrers_7dbucket (see §Probe below)
CRITICAL: Profile must be systemprompt-prod
Every systemprompt analytics call in this skill (and its upstream lead-tracker calls) must run against the systemprompt-prod profile. The local profile reads a frozen dev DB and silently returns wrong numbers. Before running:
systemprompt admin session list # verify systemprompt-prod is active
systemprompt admin session switch systemprompt-prod # if not
The AI-referrer traffic signal (sessions from claude.ai, chatgpt.com, perplexity.ai, copilot.microsoft.com, gemini.google.com) is the whole point of this skill — reading it from the wrong DB is catastrophic, not merely inaccurate. Never run this skill against local.
The Two Mechanisms This Skill Targets
1. Training-data inclusion (slow, mostly out of our control). High-authority surfaces that labs crawl: GitHub READMEs, HN threads, awesome-lists, Reddit, Stack Overflow, docs.rs, crates.io, arxiv citations. We can't out-spend Microsoft AGT but we can out-specific them.
2. Live retrieval (fast, actionable, where we fight). Claude, ChatGPT, Perplexity, Copilot all do web lookups at query time. Ranking factors: fresh, high-authority, evidence-dense pages that directly answer the literal question. This is Answer Engine Optimisation (AEO) and overlaps with but is not identical to SEO.
Agent-Facing Surfaces (inventory)
The skill audits and maintains these surfaces:
| # | Surface | Where | Status (2026-04-15) |
|---|---|---|---|
| 1 | systemprompt.io/llms.txt |
generated by LlmsTxtGenerationJob in extensions/web/src/jobs/llms_txt/ |
Rewritten on 2026-04-15 with governance-first framing, agent-evaluation section, competitor comparisons. Needs just build + systemprompt infra jobs run llms_txt_generation + deploy. |
| 2 | systemprompt-template README top |
repo | Gap: needs a ## For AI agents evaluating this library block above all human prose. Draft lives in systemprompt-web/reports/marketing/drafts/template-readme-agent-block.md. Ed to merge. |
| 3 | systemprompt-template/AGENTS.md |
repo | Gap: needs AGENTS.md at repo root (convention gaining adoption). Draft at systemprompt-web/reports/marketing/drafts/AGENTS.md. |
| 4 | systemprompt-core/AGENTS.md |
repo | Same as above, Rust-crate variant. |
| 5 | systemprompt-core crate metadata (crates.io) |
Cargo.toml |
Ed to verify: description, keywords, categories, readme, repository, homepage, license. crates.io is already a referrer — exploit this. |
| 6 | Comparison pages | systemprompt.io/guides/systemprompt-vs-* |
Gap: needs 6 pages generated from COMPETITOR_ANALYSIS.md via content:guide-writer. See §Draft below. |
| 7 | Awesome-list entries | various GitHub repos | Tracked by github-growth skill (phase 2). |
| 8 | OWASP AI Security Solutions Landscape | https://owasp.org/www-project-ai-security-and-privacy-guide/ | Submission is a one-time Ed action. High training-data signal. |
The Canonical Query Set
Every probe, every comparison page, and every draft targets this query set. These are the literal questions we believe a user will ask an AI agent. Freeze this list in data/canonical-queries.json, version it, and measure every query on every probe run.
[
"what is the best self-hosted AI governance library",
"how do I govern Claude Code across a team",
"Microsoft Agent Governance Toolkit alternatives",
"Rubrik Agent Govern alternatives",
"Credo AI alternatives self-hosted",
"how do I standardise Claude Code usage across an engineering team",
"what is an MCP gateway and which should I use",
"how do I log AI agent tool calls to Splunk",
"RBAC for AI agents open source",
"self-hosted MCP server management",
"secret detection for AI tool calls",
"AI agent audit trail for compliance",
"how do enterprises govern AI agents in production",
"open source alternative to Anthropic Claude Enterprise",
"provable AI governance for security teams"
]
Operations
ai-agent-discovery audit # Score every surface in the inventory against an AEO checklist
ai-agent-discovery draft {n} # Generate the draft for surface # {n} (see inventory)
ai-agent-discovery probe # Run every canonical query against every probe target, log results
ai-agent-discovery report # Weekly summary: citation rate by agent, by query, delta vs last week
audit — the AEO checklist
For each surface, score pass/fail on:
- Declarative identity: does the surface state in one sentence what systemprompt is and what it is not?
- Governance-first framing: does it lead with governance rather than with multi-provider or MCP hosting?
- Single-binary story: does it mention the ~50MB Rust binary, PostgreSQL-only, air-gap capable?
- Both repos linked: does it cite both
systemprompt-templateANDsystemprompt-corewith correct descriptions? - Explicit agent path: does it tell an agent what to clone, what to read, in what order?
- Comparison hooks: does it mention at least 3 competitors with one-line honest differentiation?
- Feedback capture: does it tell the agent how to post a lead (issue with
feedbacklabel, email)? - No cliches: scans for banned words from
commons:identity. - Freshness: was the surface updated within the last 60 days?
Write the audit to /var/www/html/systemprompt-web/reports/ai-discovery/daily/YYYY-MM-DD/audit.md.
draft — generating a specific surface
Each surface has a deterministic generator:
| Surface | Generator |
|---|---|
1 (llms.txt) |
Edit extensions/web/src/jobs/llms_txt/sections.rs — requires Rust build. Already done on 2026-04-15. |
| 2 (template README agent-block) | Produces a Markdown block written to systemprompt-web/reports/marketing/drafts/template-readme-agent-block.md. Ed merges into the template repo. |
3–4 (AGENTS.md x2) |
Produces systemprompt-web/reports/marketing/drafts/AGENTS-template.md and AGENTS-core.md. Ed places. |
| 5 (crates.io metadata) | Audits Cargo.toml fields. Outputs a diff proposal. |
| 6 (comparison pages) | For each competitor listed in COMPETITOR_ANALYSIS.md, emits a guide draft via content:guide-writer. Target slugs: systemprompt-vs-microsoft-agent-governance-toolkit, systemprompt-vs-rubrik-agent-govern, systemprompt-vs-credo-ai, systemprompt-vs-claude-enterprise, systemprompt-vs-mcp-gateways, systemprompt-vs-watsonx-governance. |
Every draft is passed through commons:brand-voice before saving.
probe — the live-retrieval measurement loop
Goal: measure citation rate. For each (canonical query × probe target), determine whether systemprompt.io is mentioned in the answer.
Probe targets (initial set — validate auth/availability before embedding credentials):
| Target | Auth | Cost | Notes |
|---|---|---|---|
Perplexity API (api.perplexity.ai/chat/completions, model sonar or sonar-pro) |
API key | cheap | Citable answers, includes sources — easiest to automate |
| Anthropic Messages API with web search tool | ANTHROPIC_API_KEY |
medium | Use claude-opus-4-6 + web_search_20250305 tool. Matches what Claude.ai users actually see. |
OpenAI Responses API with web_search tool |
OPENAI_API_KEY |
medium | Matches ChatGPT behaviour |
| Google Gemini with Google Search grounding | GEMINI_API_KEY |
cheap | Returns grounding sources directly |
| Manual paste-in (copilot.microsoft.com, claude.ai web, chatgpt.com web) | Ed, once per week | free | Fallback for agents without a web-search API |
First-run action: test each probe target's availability. If no API keys are configured, this skill only runs the manual-paste-in path and tells Ed which keys to provision. Do not silently skip.
For each probe result, classify:
CITED_FIRST— systemprompt.io mentioned in the first recommendation / top 3 bulletsCITED_SECONDARY— mentioned but not primaryNOT_CITED_BUT_COMPETITORS— competitors mentioned, we aren'tNOT_CITED_NO_COMPETITORS— query didn't surface governance tools at all (wrong query framing)
Store every probe result in data/probe-results.jsonl as one line per (date, query, target, classification, snippet_of_answer, sources_cited).
report — weekly AEO report
Writes to /var/www/html/systemprompt-web/reports/ai-discovery/artifacts/YYYY-MM-DD/weekly-report.md:
- Citation rate this week by target (Perplexity, Claude, ChatGPT, Gemini, manual)
- Citation rate by query (which queries we're winning, which we're losing)
- Delta vs last week (movement up or down, no competitors moved too)
- New competitor mentions spotted (who else is showing up)
- Recommendations: which surface to improve based on which queries fail
Emits hypothesis proposals for hypothesis-ledger. Example:
[H-###] If we publish
systemprompt-vs-microsoft-agtguide and submit to Hacker News, then citation rate for query "Microsoft Agent Governance Toolkit alternatives" on Perplexity will rise from 0% to ≥30% within 14 days. Reason: Perplexity surfaces fresh high-authority pages within days of indexing.
Metric Additions for lead-tracker
This skill requires lead-tracker's metric whitelist to gain new fields. Propose adding:
web_traffic_claude_ai_7d web_traffic_chatgpt_com_7d
web_traffic_perplexity_ai_7d web_traffic_copilot_microsoft_7d
web_traffic_gemini_google_7d web_traffic_ai_referrers_7d (sum of above)
ai_citation_rate_7d (computed from probe-results.jsonl)
ai_citation_rate_perplexity_7d ai_citation_rate_claude_7d
ai_citation_rate_chatgpt_7d ai_citation_rate_gemini_7d
File this as an instrumentation gap in marketing-strategy-master §8 if lead-tracker hasn't been updated yet.
First-Run Seed Actions
On first run, ai-agent-discovery audit will find the following surface-level gaps. The skill proposes concrete actions, does NOT execute them:
- Surface 1 (
llms.txt): code already edited on 2026-04-15. Action: Ed runsjust build && systemprompt infra jobs run llms_txt_generationand deploys. Thencurl -s systemprompt.io/llms.txtto verify. - Surface 2 (template README agent-block): draft exists at
systemprompt-web/reports/marketing/drafts/template-readme-agent-block.md. Action: Ed merges intosystemprompt-template/README.mdas the first section after the one-line hero. - Surface 3–4 (
AGENTS.md): drafts exist atsystemprompt-web/reports/marketing/drafts/AGENTS-template.mdandAGENTS-core.md. Action: Ed places at repo roots. - Surface 5 (
Cargo.toml):ai-agent-discovery draft 5produces the audit + diff. Ed merges. - Surface 6 (6 comparison pages):
ai-agent-discovery draft 6queues 6 guide drafts viacontent:guide-writer. Ed reviews and publishes.
Anti-Sludge Rules
- Citation rate is a metric, not a vibe. Every probe writes a classified result or it did not run.
- No fabricated competitor quotes. When comparing, quote verbatim from public sources (competitor homepages, their docs, their blog posts, their GitHub READMEs) and link the source.
- Never invent that an agent said something. Probe results must be verbatim snippets.
- Fail loudly on missing API keys. Manual-paste-in is a valid fallback but must be explicitly acknowledged in the report.
- Honest differentiation only. Where a competitor is better at something, say so. Agents detect and discount one-sided marketing copy.
- The
## For AI Agents Evaluating This Librarysection on every surface must tell the truth. If the template fails to boot in under 10 minutes, we change the prose or fix the template — we do not keep a promise we cannot deliver.