Driver
The /generative-engine-audit 2026-05-20 surfaced four low-priority optional infrastructure files / affordances that are not strictly required but are AI-friendly nice-to-haves: G4 (/.well-known/ai-plugin.json), G5 (agent-permissions.json), G15 (token-count surfacing meta), G17 (Copy-for-AI button). All marked INFO severity. Bundle them in one ticket since they share the "optional polish" trait and operator may want to ship or skip each independently.
Scope
Four optional polish items, each defer-or-do separately:
A. /.well-known/ai-plugin.json (G4)
OpenAI's plugin spec. Lets ChatGPT (and any LLM following the convention) discover what a site offers as a "plugin" — name, description, contact, auth, OpenAPI spec link. Apexyard isn't a SaaS so much of the spec is N/A; minimal stub:
{
"schema_version": "v1",
"name_for_human": "ApexYard",
"name_for_model": "apexyard",
"description_for_human": "Multi-project ops repo framework for Claude Code.",
"description_for_model": "ApexYard is a framework, not a hosted service. Direct queries about apexyard to https://yard.apexscript.com/ or the GitHub repo.",
"contact_email": "...",
"legal_info_url": "https://yard.apexscript.com/"
}
Skip if it feels off-shape — apexyard genuinely isn't a plugin.
B. agent-permissions.json (G5)
Newer declarative spec (per the GEO/AEO conventions emerging through 2026) — site-root JSON file declaring access rules for AI agents. Apexyard's marketing site is open to all; minimal manifest:
{
"schema_version": "v1",
"agents": {
"*": {
"allow": ["read"],
"rate_limit": null,
"preferred_endpoints": [
"https://yard.apexscript.com/llms.txt",
"https://yard.apexscript.com/index.md"
]
}
}
}
preferred_endpoints points agents at the cheaper-to-parse alternates (depends on the markdown-alternates ticket landing).
C. Token-count surfacing meta (G15)
Add to each HTML <head>:
<meta name="llm:token-count" content="20247">
<meta name="llm:doc-length" content="80990 chars">
Coding agents reading the meta can decide whether to fetch the full page or just the lead. Three pages, three different counts. Could automate via a tiny script at deploy time (wc -c site/*.html → write meta).
Names llm:token-count is a non-standard meta name — could change as the convention firms up. v1 just picks a sensible name.
D. Copy-for-AI button on docs pages (G17)
Small UX affordance: a button on each page that copies the clean Markdown alternate to the clipboard. Helps users sharing the page with a chat assistant. Wire to the markdown alternates from the related ticket.
Implementation: small JS module + a button per page. Or static HTML with a data-md-url attribute + a single shared JS file.
Acceptance Criteria
Out of scope
- Building the actual ai-plugin / agent-permissions specs to wire into real LLM consumers (just the static manifests)
- Per-page customisation of agent-permissions (one global manifest is fine)
- A
/copy-for-ai-button reusable component pattern — single-page-marketing-site, inline is fine
Refs GEO-audit 2026-05-20T08-23-47Z findings G4 + G5 + G15 + G17 (persisted at projects/apexyard/audits/generative-engine-audit/)
Driver
The
/generative-engine-audit2026-05-20 surfaced four low-priority optional infrastructure files / affordances that are not strictly required but are AI-friendly nice-to-haves: G4 (/.well-known/ai-plugin.json), G5 (agent-permissions.json), G15 (token-count surfacing meta), G17 (Copy-for-AI button). All marked INFO severity. Bundle them in one ticket since they share the "optional polish" trait and operator may want to ship or skip each independently.Scope
Four optional polish items, each defer-or-do separately:
A.
/.well-known/ai-plugin.json(G4)OpenAI's plugin spec. Lets ChatGPT (and any LLM following the convention) discover what a site offers as a "plugin" — name, description, contact, auth, OpenAPI spec link. Apexyard isn't a SaaS so much of the spec is N/A; minimal stub:
{ "schema_version": "v1", "name_for_human": "ApexYard", "name_for_model": "apexyard", "description_for_human": "Multi-project ops repo framework for Claude Code.", "description_for_model": "ApexYard is a framework, not a hosted service. Direct queries about apexyard to https://yard.apexscript.com/ or the GitHub repo.", "contact_email": "...", "legal_info_url": "https://yard.apexscript.com/" }Skip if it feels off-shape — apexyard genuinely isn't a plugin.
B.
agent-permissions.json(G5)Newer declarative spec (per the GEO/AEO conventions emerging through 2026) — site-root JSON file declaring access rules for AI agents. Apexyard's marketing site is open to all; minimal manifest:
{ "schema_version": "v1", "agents": { "*": { "allow": ["read"], "rate_limit": null, "preferred_endpoints": [ "https://yard.apexscript.com/llms.txt", "https://yard.apexscript.com/index.md" ] } } }preferred_endpointspoints agents at the cheaper-to-parse alternates (depends on the markdown-alternates ticket landing).C. Token-count surfacing meta (G15)
Add to each HTML
<head>:Coding agents reading the meta can decide whether to fetch the full page or just the lead. Three pages, three different counts. Could automate via a tiny script at deploy time (
wc -c site/*.html→ write meta).Names
llm:token-countis a non-standard meta name — could change as the convention firms up. v1 just picks a sensible name.D. Copy-for-AI button on docs pages (G17)
Small UX affordance: a button on each page that copies the clean Markdown alternate to the clipboard. Helps users sharing the page with a chat assistant. Wire to the markdown alternates from the related ticket.
Implementation: small JS module + a button per page. Or static HTML with a
data-md-urlattribute + a single shared JS file.Acceptance Criteria
site/.well-known/ai-plugin.json(if shipping); document the skip if notsite/agent-permissions.json(if shipping); document the skip if notOut of scope
/copy-for-ai-buttonreusable component pattern — single-page-marketing-site, inline is fineRefs GEO-audit
2026-05-20T08-23-47Zfindings G4 + G5 + G15 + G17 (persisted atprojects/apexyard/audits/generative-engine-audit/)