Maintain the Phoenix llms.txt documentation index at docs/phoenix/llms.txt — the machine-readable docs map used by AI agents and the `px docs fetch` CLI. Use this skill whenever adding, auditing, or reorganizing llms.txt entries. Trigger when the user mentions llms.txt, docs index, px docs, or LLM-friendly documentation.
68
85%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
docs/phoenix/llms.txt is the machine-readable documentation index for Phoenix, following the llmstxt.org specification. AI agents, coding assistants, and the px docs fetch CLI all consume this file.
Standard markdown links per the llmstxt.org spec:
- [Title](https://arize.com/docs/phoenix/path/to/page): Action-oriented description of what the page teachesSections use ## headings, subsections use ###. Subsections inherit their parent section.
Default to including every published .mdx page that exists in docs.json navigation. The AFDocs Agent Score (afdocs.dev) measures llms.txt coverage against the sitemap and flags anything under 80%. Aim for ≥ 90% coverage of nav-published pages.
Include as individual entries:
## Release Notes section with ### YYYY subsections so the section stays scannableInclude as individual entries under Integrations:
Exclude — content agents cannot use:
.ipynb hosted on Colabgithub.com URL). Note: docs about GitHub (issues, contributing) are fine to keepdocumentation/jp.mdx, zh.mdx).mdx files not in docs.json navigation — these aren't routed by Mintlify and 404 in productionAlways include:
https://raw.githubusercontent.com/Arize-ai/phoenix/refs/heads/main/schemas/openapi.json) in the SDK & API Reference section — this is the most machine-readable resource in the entire docs and critical for agents building API integrationsEvery time you add, remove, or audit llms.txt entries you must traverse the full docs tree to verify coverage. Follow these steps in order:
docs.json is the source of truth for what Mintlify routes. Pages on disk but not in nav 404 in production. Pages in nav with no .mdx file are broken nav entries. Use the intersection.
# All nav-published page paths
python3 -c "
import re, json
raw = open('docs.json').read()
nav = sorted({p.replace('docs/phoenix/','') for p in re.findall(r'\"(docs/phoenix/[a-zA-Z0-9/_-]+)\"', raw)})
print('\n'.join(f'https://arize.com/docs/phoenix/{p}' for p in nav))
" | sort > /tmp/nav_urls.txt
# All .mdx files on disk
find docs/phoenix -name "*.mdx" -type f | \
sed 's|docs/phoenix/||; s|\.mdx$||; s|^|https://arize.com/docs/phoenix/|' | \
sort > /tmp/fs_urls.txt
# Use the intersection — these are the URLs that actually serve content
comm -12 /tmp/nav_urls.txt /tmp/fs_urls.txt > /tmp/published_urls.txtgrep -oE '\(https://[^)]+\)' docs/phoenix/llms.txt | \
tr -d '()' | sort > /tmp/llms_urls.txt# Pages published but NOT in llms.txt (gaps to fill)
comm -23 /tmp/published_urls.txt /tmp/llms_urls.txt > /tmp/missing.txt
# URLs in llms.txt but NOT published (stale — remove)
comm -13 /tmp/published_urls.txt /tmp/llms_urls.txt > /tmp/stale.txtFor every entry in /tmp/missing.txt, open the .mdx file and decide:
For every entry in /tmp/stale.txt:
.mdx file was deleted or renamed, remove the entry.published=$(wc -l < /tmp/published_urls.txt)
indexed=$(comm -12 /tmp/published_urls.txt /tmp/llms_urls.txt | wc -l)
echo "scale=1; $indexed * 100 / $published" | bc
# Target: ≥ 90 (AFDocs flags < 80)Walk each ## section in llms.txt and verify:
docs/phoenix/<section>/Some false positives are expected — directory URLs that resolve via the docs framework's routing are valid even without a corresponding .mdx file.
Titles are the primary signal an LLM uses to decide whether to fetch a page.
[Title] in the file must be unique. If two pages would both be called "Overview", prefix with the topic.Descriptions help LLMs decide whether to fetch a page. They should:
After changes, run the CLI parser tests to confirm the file is well-formed:
cd js/packages/phoenix-cli && pnpm test -- --grep "docs"e127482
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.