Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add instructions/aaryan-kapoor/surface/agents-mdgit clone --depth 1 https://github.com/Aaryan-Kapoor/SurfaceWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/instructions/aaryan-kapoor/surface/agents-md)<a href="https://agentmods.dev/instructions/aaryan-kapoor/surface/agents-md"><img src="https://agentmods.dev/badge/instructions/aaryan-kapoor/surface/agents-md.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.01440 | $0.01440 |
| Opus 5 | $0.00720 | $0.00720 |
| Sonnet 5 | $0.00288 | $0.00288 |
| Haiku 4.5 | $0.00144 | $0.00144 |
Grade A, and why
Surface AGENTS.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 64 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Surface
Universal display for AI agents. Agents push content via a single shared CLI (surface). Discovery is via SKILL.md at the repo root. Full per-feature docs: docs/README.md.
Stack
- Server: Express 5 + SQLite (better-sqlite3) + SSE live updates. Routers per concern in
server/routes/. - Client: Vanilla JS PWA, hash routing, sandboxed iframes via real routes.
client/surface.jsis the runtime injected into surface HTML. - CLI (
bin/surface.ts): canonical agent client; bundled todist/surface.mjsbynpm run build(runs on install viaprepare; also bundles the server todist/server.mjs); the npmsurfacebin points at the bundle. Published assurface-display. - Data:
~/.surface/(db.sqlite+artifacts/+logs/+templates/). Override withSURFACE_DATA_DIR. - Service: Surface should run once as a per-user supervised service bound to
127.0.0.1—surface service installpicks the native backend (systemd user unit / launchd agent / Windows Scheduled Task), health-gates the start, and logs to~/.surface/logs/. - Migrations: SQLite
PRAGMA user_versionviaserver/migrations.ts; fresh-start baseline = v10. Pre-baseline DBs are archived todb.sqlite.bakat boot, never migrated. - Templates: built-ins in
templates/(ask, stream, video, board, doc); resolution project.surface/templates→~/.surface/templates→ built-in. - MCP (archived in
archived/mcp.ts): not installed by default; needsnpm i @modelcontextprotocol/sdkto run.
Commands
npm run dev— start server on 127.0.0.1:3000npm run service— service entrypoint from source (production supervisors execdist/server.mjsviasurface service install)npm run cli— invoke the CLI from source withoutnpm linknpm run test:artifacts— HTTP regression suite (needs a running server; use an isolatedSURFACE_DATA_DIR+PORT)npm run test:auth— two-plane trust-model acceptance tests (spawns its own servers)npm run test:startup-access— pairing URL/QR helpersnpx tsc --noEmit— TypeScript check
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 64 lines · 1,440 tokens per session scan A 75f795d6427a
Surface AGENTS.md is an instructions file published in the GitHub repository Aaryan-Kapoor/Surface (48 stars, last pushed 3d ago), licensed MIT. It adds 1,440 tokens to every session, about $0.0072 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other instructions, from other repositories
boardstate AGENTS.md
Instructions for 100yenadmin/boardstate, covering agents & boardstate, 1. give any ai the board (@boardstate/mcp), the tool catalog, conventions for board-building agents and 2. embed a chat agent in your host (@boardstate/agent).
Vibe-Research AGENTS.md
AGENTS.md instructions for simonlin1212/Vibe-Research, covering vibe-research-agent 金融研究宪法, 0. 三条不可越线, 1. 数据纪律(五问 gate:给出任何数字或结论前逐条自问), 2. 研究哲学(评估框架,不是预测工具) and 3. 估值口径(你只选输入、解释输出;计算交给 calc/).
mcp-steroid CLAUDE.md
Claude Code instructions for jonnyzzz/mcp-steroid, covering claude.md, agents.md, design philosophy, recursive context lookup (do this before sub-folder work), sub-folder guides and must do.
ifq-design-skills AGENTS.md
Instructions for peixl/ifq-design-skills, covering agents.md — ifq design skills, first-contact protocol (60 seconds · any runtime), what this repo is, when to engage the skill and zero-install core loop.
anywidget-mcp AGENTS.md
Instructions for peter-gy/anywidget-mcp, covering anywidget-mcp, commands, architecture, dependency rule and state invariant.
claumon CLAUDE.md
Instructions for fabioconcina/claumon, covering claumon, build & test, architecture and conventions.