aptos-docs
CLAUDE.md87 starsChanged 3 months agoApache-2.0View on GitHub
This document provides essential guidelines for AI agents working on the Aptos Developer Documentation repository. This repository contains the official Aptos Developer Documentation, built using Astro and Starlight. Published languages include English and Chinese (zh). Agent workflows here do not include creating or updating Spanish (es) documentation. Production docs are indexed for LLMs and coding agents at https://aptos.dev/llms.txt (same content as https://aptos.dev/.well-known/llms.txt). For IDE access to Aptos APIs and on-chain data, use the Aptos MCP server (npx @aptos-labs/aptos-mcp); see the…
- Reads credentials
- Installs packages
In this repository2 other files it gives its agents.
- AGENTS.mdAGENTS.md
- llm-seo-readinessSkill
The file
Show its rules and text
We split this CLAUDE.md into the rules it gives an agent
24 rules. About 0 are common, 13 are distinctive, and 11 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈13
Distinctive · estimate
This author's own choices. Worth a look.
11
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 38
Keep-fresh checklist when editing any of the above:
- Very specific: line 41
Regenerate skill digests: After bumping a skill in aptos-labs/aptos-agent-skills, run node scripts/generate-agent-skills-index.mjs so …
- Very specific: line 42
Rebuild the middleware bundle: After any change to src/vercel-middleware.ts, the middleware order, the matcher, or any file under …
- Distinctive: line 99
IMPORTANT: All changes must pass linting and formatting checks before completion.
- Distinctive: line 106
Run these commands after making changes to ensure code quality.
- Very specific: line 118
Create or update the corresponding Chinese translation in zh/
- Very specific: line 119
Ensure Chinese internal links use the /zh/...
- Distinctive: line 123
Every commit should have a clear, descriptive message that explains the changes made.
- Distinctive: line 152
Grammar check every change: before committing. Ensure:
- Distinctive: line 169
When adding a new term to the glossary:
- Distinctive: line 174
Consider diagrams: - Add diagrams for complex concepts when helpful
- Distinctive: line 202
Use relative paths without the file extension:
- Distinctive: line 211
Use clear, simple language accessible to developers of all skill levels
- Distinctive: line 218
Use fenced code blocks with language identifiers:
- Distinctive: line 232
Create the MDX file in the appropriate directory
- Distinctive: line 233
Add frontmatter with title and description
- Very specific: line 234
Create Chinese translation in zh/ subdirectory
- Very specific: line 235
Update sidebar configuration if needed (astro.sidebar.ts)
- Very specific: line 236
Run pnpm lint and pnpm format
- Very specific: line 240
Add the term to src/content/docs/network/glossary.mdx
- Very specific: line 241
Add Chinese translation to src/content/docs/zh/network/glossary.mdx
- Distinctive: line 242
Ensure alphabetical ordering within each section
- Very specific: line 260
Ensure .env exists (copy from .env.example if missing).
- Very specific: line 268
Search is disabled in dev mode.
≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
CLAUDE.md - AI Agent Guidelines for Aptos Documentation
This document provides essential guidelines for AI agents working on the Aptos Developer Documentation repository.
Project Overview
This repository contains the official Aptos Developer Documentation, built using Astro and Starlight. Published languages include English and Chinese (zh). Agent workflows here do not include creating or updating Spanish (es) documentation.
Machine-readable documentation for agents
Production docs are indexed for LLMs and coding agents at https://aptos.dev/llms.txt (same content as https://aptos.dev/.well-known/llms.txt). For IDE access to Aptos APIs and on-chain data, use the Aptos MCP server (npx @aptos-labs/aptos-mcp); see the live AI tools page.
Agent discovery & readiness (keep fresh!)
The site advertises a full set of agent-discovery endpoints. Treat these as a single surface — if you touch one, audit the rest, update the matching docs, regenerate any required artifacts (pnpm build:middleware-matcher for matcher changes; pnpm build:middleware when the middleware bundle needs to ship), and then re-run pnpm test tests/agent-discovery.test.ts tests/markdown-negotiation.test.ts. The guardrail tests regenerate the matcher on demand, so a clean checkout still passes.
| Concern | Source of truth | Spec / reference |
Global Link response header | vercel.json → headers[source="/(.*)"] | RFC 8288 |
In-page discovery <link rel="…"> | src/starlight-overrides/Head.astro | RFC 8288 |
| API catalog | public/.well-known/api-catalog | RFC 9727 |
| MCP Server Card | public/.well-known/mcp/server-card.json | SEP-2127 |
| Agent Skills index | public/.well-known/agent-skills/index.json | Agent Skills Discovery RFC v0.2.0 |
| Agent Skills regeneration | scripts/generate-agent-skills-index.mjs | Pins sha256: digests from aptos-labs/aptos-agent-skills@main |
| ARD / AI Catalog | public/.well-known/ai-catalog.json | ARD, AI Catalog |
Sitemap /sitemap.xml | @astrojs/sitemap + src/integrations/sitemap-xml-alias.ts (+ vercel.json rewrite to /sitemap-0.xml) | Sitemaps protocol |
| Content Signals | public/robots.txt → Content-Signal: / Agentmap: | contentsignals.org |
| Auth.md | public/auth.md | auth.md |
| OAuth Protected Resource Metadata | public/.well-known/oauth-protected-resource (resource must be https://aptos.dev; listed authorization servers mint tokens for the Aptos Testnet Faucet) | RFC 9728 |
| OIDC / OAuth 2.0 discovery | public/.well-known/openid-configuration, public/.well-known/oauth-authorization-server | OpenID Connect Discovery 1.0, RFC 8414 |
| DNS-AID | Google Cloud DNS zone for aptos.dev (not in this repo). Record shape is documented in build/ai.mdx | draft-mozleywilliams-dnsop-dnsaid, RFC 9460 |
| Markdown content negotiation | src/middlewares/markdown-negotiation.ts + src/vercel-middleware.ts | Rewrites Accept: text/markdown requests to the .md export. |
| Middleware matcher + bundle | scripts/generate-middleware-matcher.js, scripts/generate-middleware.js, committed middleware.js | Matcher covers the locales + route prefixes middleware should run on. generate-middleware.js also copies the bundled middleware to the repo root so scripts/generate-middleware-function.js ships it — never hand-edit middleware.js. |
| MCP card regeneration | Hand-maintained public/.well-known/mcp/server-card.json pinned to a real @aptos-labs/aptos-mcp version | Bump the version field and both packages[0].version + packages[0].transport.args whenever the npm package is released; never use latest. |
| WebMCP tools | src/scripts/webmcp-register.ts (+ src/types/webmcp.d.ts, src/components/WebMcpRegistration.astro) | WebMCP draft |
| User-facing explainer | src/content/docs/build/ai.mdx and src/content/docs/zh/build/ai.mdx | Keep the endpoint table and example curl in sync. |
Keep-fresh checklist when editing any of the above:
- Update the endpoint or config. Changes to the Link header, MCP card, api-catalog, Agent Skills index, ARD catalog, or
/sitemap.xmlalias must go hand in hand — adding a new well-known endpoint means adding it tovercel.json(header + Content-Type) and the Head override and thebuild/ai.mdxtables (English + Chinese). - Regenerate skill digests. After bumping a skill in
aptos-labs/aptos-agent-skills, runnode scripts/generate-agent-skills-index.mjssosha256:digests match upstream. Don't hand-edit the JSON. - Rebuild the middleware bundle. After any change to
src/vercel-middleware.ts, the middleware order, the matcher, or any file undersrc/middlewares/*, runpnpm build:middleware. It regenerates both.vercel/output/middleware/middleware.jsand the repo-rootmiddleware.js(Prettier-formatted) that Vercel ships, so the committed bundle stays in sync with the TypeScript source. - Run the guardrail tests.
pnpm test tests/agent-discovery.test.ts tests/markdown-negotiation.test.ts tests/sitemap-xml-alias.test.tsasserts the Link header, well-known payload shapes, Content Signals,/sitemap.xmlalias wiring, Content-Type routing, and the markdown-negotiation routing decisions still line up. These suites run as part of the defaultpnpm test. - Update translations. Anything added to
src/content/docs/build/ai.mdxmust appear insrc/content/docs/zh/build/ai.mdx(Spanish is out of scope). - Verify in production. Once deployed, re-scan with
curl -sI https://aptos.dev/ | rg '^link:'and an "Is It Agent Ready?" scan. If a signal regressed, note the fix in the PR description. DNS-AID (_index._agents.aptos.dev) is published in Google Cloud DNS, not this repo — the HTTPS record already exists; a scanner fail there means the zone still needs a parentDSso DNSSEC validates (AD=1). The ARD catalog TXT (_catalog._agents.aptos.dev) is also DNS-only.
WebMCP specifics:
- The tool definitions live in
src/scripts/webmcp-register.tsand are type-checked viasrc/types/webmcp.d.ts. Use those types when adding new tools — don't reach foris:inlinescripts orany. - The tool names (
aptos-docs.search,aptos-docs.open-doc,aptos-docs.fetch-doc-markdown,aptos-docs.list-llms-feeds) are documented inbuild/ai.mdx; keep that list in sync when adding/removing tools. - Markdown negotiation relies on the per-page
.mdexports fromsrc/pages/[...slug].md.ts. Route changes that break those exports will also break thefetch-doc-markdownWebMCP tool.
Development Setup
Prerequisites
- Node.js: Version 22.23.0 (use mise or another
.tool-versions-compatible manager) - pnpm: Version 11.x (
npm install -g pnpm)
Quick Start
pnpm install # Install dependencies
cp .env.example .env # Set up environment variables
pnpm dev # Start development server (http://localhost:4321)Essential Commands
| Command | Description |
pnpm dev | Start the development server |
pnpm build | Build the site for production |
pnpm lint | Check for linting issues |
pnpm format | Fix formatting issues |
pnpm check | Run Astro type checking |
pnpm format:content | Format MDX content files |
Project Structure
src/
├── content/
│ ├── docs/ # Main English documentation
│ │ └── zh/ # Chinese translations
│ ├── i18n/ # UI translations
│ └── nav/ # Sidebar translations
├── components/ # Reusable components
├── config/ # Configuration helpers
└── assets/ # Site assetsA legacy docs/es/ tree or URLs may still exist for redirects; do not add or maintain Spanish doc content under these agent guidelines.
Critical Guidelines
1. Linting and Formatting
IMPORTANT: All changes must pass linting and formatting checks before completion.
pnpm lint # Run all linters (eslint + prettier)
pnpm format # Fix formatting issuesRun these commands after making changes to ensure code quality.
2. Translation Requirements
Documentation changes that need localization must include the Chinese (zh) version. Do not add or update Spanish (es) translations as part of agent work.
- English docs:
src/content/docs/ - Chinese docs:
src/content/docs/zh/
When modifying documentation:
- Make the change in the English version first
- Create or update the corresponding Chinese translation in
zh/ - Ensure Chinese internal links use the
/zh/...prefix (see Internal Links below)
3. Commit Message Requirements
Every commit should have a clear, descriptive message that explains the changes made.
Format:
<type>: <description>
<optional body with more details>Types:
docs: Documentation changesfeat: New featuresfix: Bug fixesstyle: Formatting changeschore: Maintenance tasks
Example:
docs: add glossary entry for BlockSTM
Added definition and example for BlockSTM parallel execution engine.
Updated Chinese translation accordingly.4. Grammar and Style
Grammar check every change before committing. Ensure:
- Clear, concise language
- Consistent terminology throughout the documentation
- Proper sentence structure and punctuation
- Technical accuracy in all explanations
- Active voice preferred over passive voice
5. Glossary Requirements
Ensure new terms are defined in the Glossary.
The glossary is located at:
- English:
src/content/docs/network/glossary.mdx - Chinese:
src/content/docs/zh/network/glossary.mdx
When adding a new term to the glossary:
- Define the term clearly - Provide a concise, accurate definition
- Provide an example - Include practical examples or use cases
- Add context - Link to related documentation where appropriate
- Consider diagrams - Add diagrams for complex concepts when helpful
Glossary entry format:
### Term Name
- **Term Name** is [definition].
- [Additional context or explanation].
See [Related Page](/path/to/page) for more information.6. MDX File Structure
Documentation files use MDX format with frontmatter:
---
title: "Page Title"
description: "Brief description of the page content"
sidebar:
label: "Sidebar Label" # Optional
---7. Internal Links
Use relative paths without the file extension:
- English:
/network/blockchain/accounts - Chinese:
/zh/network/blockchain/accounts
Content Guidelines
Writing Style
- Use clear, simple language accessible to developers of all skill levels
- Define technical terms on first use or link to the glossary
- Include code examples where appropriate
- Structure content with clear headings and subheadings
Code Blocks
Use fenced code blocks with language identifiers:
module example::hello {
public fun greet(): vector<u8> {
b"Hello, Aptos!"
}
}Common Tasks
Adding a New Documentation Page
- Create the MDX file in the appropriate directory
- Add frontmatter with title and description
- Create Chinese translation in
zh/subdirectory - Update sidebar configuration if needed (
astro.sidebar.ts) - Run
pnpm lintandpnpm format
Updating the Glossary
- Add the term to
src/content/docs/network/glossary.mdx - Add Chinese translation to
src/content/docs/zh/network/glossary.mdx - Ensure alphabetical ordering within each section
- Include definition, examples, and links to related content
Resources
- LLM and SEO readiness (Cursor skill) — checklists for
llms.txt, curated feeds,.mdexports, and metadata/crawlers - Astro Documentation
- Starlight Documentation
- MDX Documentation
- Aptos Developer Portal
Cursor Cloud specific instructions
This is a single-service Astro/Starlight documentation site. No databases, Docker, or external services are required for local development.
Environment setup
- The VM snapshot provides Node 24+ and pnpm 11.8.0. The update script runs
pnpm installautomatically, so Biome, TypeScript, and Vitest are ready without manual setup. - Ensure
.envexists (copy from.env.exampleif missing). Default values are sufficient for local dev; optional services (Firebase, Algolia, OG images) degrade gracefully when their env vars are empty. - pnpm may warn about ignored build scripts for native packages (
@swc/core,esbuild,sharp, etc.) — these warnings are safe to ignore as the packages ship pre-built binaries. - The repo's
.tool-versionspinsnodejs 22.23.0;enginessays>=22, but Node 24 is fully compatible and is what this environment uses.
Running the dev server
pnpm devstarts the Astro dev server athttp://localhost:4321.- The
predevscript automatically builds middleware matcher and starts middleware watcher in the background. - Search is disabled in dev mode; this is expected. Which provider a build ships (Algolia DocSearch or Starlight's Pagefind fallback) is decided in
src/config/search.ts; runpnpm check:searchto see the current decision.
Linting and testing
pnpm lintruns Biome and Prettier in parallel (not ESLint, despite what some comments say).pnpm testruns Vitest tests.pnpm checkruns Astro type checking.- Git hooks:
pre-commitrunsnano-staged(Biome + Prettier on staged files),pre-pushrunsastro check --noSync.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

