Repolis: Instructions file for Codex

AGENTS.md

Repolis AGENTS.md is an instructions file for Codex, OpenCode from hyeonsangjeon/Repolis. It costs 9,193 tokens per session, scanned A, original, MIT.

Project instructions for Repolis, a static 3D website where visitors walk through a city built from public GitHub repositories. It explains how to run, modify, rebuild, and deploy the site without a build system.

In plain words
What is it for?
Use it to run the site locally, understand its files and generated assets, make changes to the Three.js experience, verify them, and deploy the static app.
Why use it?
It gives a coding agent the repository map and operating steps needed to work on the project safely. Developers can start it with a simple local web server instead of installing a toolchain.

Instructions file for CodexOpenCode

Written for Codex and OpenCode: the file is AGENTS.md. Also seen: mentions CLAUDE.md; mentions AGENTS.md.

This is hyeonsangjeon/Repolis's own configuration. It tells Codex and OpenCode how to work on Repolis itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything Repolis configures →

Reuse

Borrowing it

Nothing to install: this file belongs to hyeonsangjeon/Repolis. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/hyeonsangjeon/Repolis/main/AGENTS.md
Clone the repo
git clone --depth 1 https://github.com/hyeonsangjeon/Repolis

Made for: Codex, OpenCode.

Wrote 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.

agentmods badge for Repolis AGENTS.md

README.md
[![agentmods](https://agentmods.dev/badge/instructions/hyeonsangjeon/repolis/agents-md/github.svg)](https://agentmods.dev/instructions/hyeonsangjeon/repolis/agents-md)
Your own site
<a href="https://agentmods.dev/instructions/hyeonsangjeon/repolis/agents-md"><img src="https://agentmods.dev/badge/instructions/hyeonsangjeon/repolis/agents-md/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for Repolis AGENTS.md

Your own site · 80×15
<a href="https://agentmods.dev/instructions/hyeonsangjeon/repolis/agents-md"><img src="https://agentmods.dev/badge/instructions/hyeonsangjeon/repolis/agents-md.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 9,193 This file is loaded in full into every session.
When invoked 9,193 The same file — it is already loaded in full.
Security scan A 1 finding. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.09193 $0.09193
Opus 5.5 $0.03677 $0.03677
Sonnet 5.5 $0.01839 $0.01839
Haiku 4.5 $0.00919 $0.00919

Measured today against content hash 1c8dc6b4d9ea, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

Repolis AGENTS.md scanned grade A with 1 finding 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 today.

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.

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

| **`examples/`** | Copy-paste recipes (curl the worker, share links, embed). | Learning the public surface fast. |
AGENTS.md · 245 lines

How it starts

The opening of the file, as written. The whole thing — 245 lines — stays where its author put it; the contents beside it link to each section on GitHub.

AGENTS.md — operating manual for AI agents working on Repolis

You are an AI agent. Read this once and you can run, change, verify, and ship Repolis correctly. Repolis is a zero-build static 3D "city of repos" web app. Humans get README.md; this file is the machine-readable contract. If something here disagrees with a comment in code, trust this file and flag it.

  • Live: https://hyeonsangjeon.github.io/Repolis/
  • What it is: index.html is the primary Three.js runtime for a walkable town built from public GitHub repos; local modules and generated assets provide the World Tree, scholars, Council, and data. Gitber + star-named scholar NPCs answer questions and guide visitors through it.
  • Owner / required git identity: Hyeon Sang Jeon <[email protected]> · GitHub hyeonsangjeon
  • License: MIT

⏱️ 60-second quickstart (no build, no install)

git clone https://github.com/hyeonsangjeon/Repolis && cd Repolis
python3 -m http.server 8000 --protocol HTTP/1.1   # keep-alive matters: the HTTP/1.0 default resets the burst of ~36 module loads (any static server works)
# open http://localhost:8000  → walk the city with WASD, click the 🚕 to ask the taxi

There is no build step, no bundler, no package.json, no npm install. The page boots from a CDN import map (Three.js r0.160 via jsDelivr) plus local data, scripts, and modules served as static files.


🗺️ Repository map (what lives where)

Path What it is Touch it when…
index.html Primary app runtime — 3D engine, UI, navigation, residents, exploration, i18n, day/night. Any UI / gameplay / client behavior change.
repolis.config.js Fork-facing runtime identity and optional-service policy. GitHub Pages infers the fork owner; upstream Workers stay off on forks. Changing owner inference, template behavior, or canonical endpoints.
repos.json + data/city-state.json Generated repo catalog plus deterministic era, season, current statistics, Silence Ledger, bounded 30-day Sap Ledger, sap timestamp, and archived roots for the current owner city. Do not hand-edit. Never directly; regenerate (see below).
data/city-state.schema.json Strict JSON Schema for the generated city-state artifact. Changing the city-state contract.
assets/city-time.js Pure wear (recent / faded / mossed), ruin, reference-date, and seasonal palette rules. Changing how public time metadata affects the city.
assets/zone-classifier.js Pure repository → district rule: keyword weights, language affinity, the junk/dormancy ruins rule, and the catalog-order tie-break. index.html keeps only ZONE_CAT names, icons, and colors plus a zoneOf adapter that passes the town reference time; the repolis-card Worker imports the same file. Changing which district a repository joins. Re-baseline the golden fixture and bump the ?v= tag deliberately.
assets/city-card.js Pure public-repo card summary (≤100 repos, stars, primary language, district shares, top three houses, first year, skyline) and deterministic 1200×630 OG / 600×300 README SVG. The caller supplies the city name, the primary language comes from homecomingPrimaryLanguage, and every string is placed by cityCardTextRuns; cityCardSvg's drawText option lets the repolis-card Worker draw that text as glyph paths. Not loaded by the town yet. Changing the shareable card's facts or drawing. Keep public fields only, ASCII repository slugs, UTF-8 byte caps, and byte-identical output.
data/lore/fragments.json + assets/lore-fragments.js Hand-authored KO/EN elder fragments plus strict validation, deterministic active-roster allocation, and session-bounded delivery. Changing The Silence fragments or their rarity/allocation contract. Never generate or overwrite the JSON.
assets/taxi-voice.js Pure local taxi Shared-state answers, household redirect, and once-per-ride seasonal/district observations. Changing travel voice without adding a backend call.
assets/town-labels.js Pure bounded nameplate layout, stable nearby-target priority and single-owner panel keys. Changing near-camera label budgets, safe-area/overlap behavior or keyboard dismissal. Keep existing speech priority, depth tests, scene detail and visit state.
assets/session-footprints.js Pure bounded current-tab footprint ring: movement threshold, lifetime, LOW_END/reduced-motion policy, and teardown. Changing the local player's ephemeral walking trace.
assets/procedural-surfaces.js Pure facade/roof seed, UV phase, family, and bounded-cache contract for the shared procedural maps. Changing repository-house material identity, tiling, or texture budgets.
scripts/fork_lineage.py + assets/fork-lineage.js Public-only fork source sanitizer plus deterministic six-color crest projection. Changing generated fork source truth, lineage cards, or the shared crest batch.
scholars.js window.SCHOLARS roster: POLARIS · VEGA · RIGEL · MIRA · LYRA. Adding / editing an NPC scholar.
assets/world-tree/createRepolisHero.js Procedural World Tree factory imported by index.html. Changing the tree geometry, materials, sockets, or actions.
assets/world-tree/world-tree-state.js Pure projection for Chronicle, Silence Ledger, 30-day Sap Ledger, Roots, sap-flow freshness/mode, bounded star/repo growth, and portable public-town residents. Changing how owner or normalized public-town state reaches the silent World Tree and local resident roster.
assets/repo-portal.js Pure username/repository parser, route precedence, public projection, canonical Plaza/Portal/Atelier/Blueprint links, owner-town expansion link, and the allowlisted public-town cache entry, key, and LRU plan. Changing ?repo=, ?view=plaza&lang=en, ?view=atelier&lang=en, accepted GitHub inputs, public traffic truth, target/path share links, or the ?user= data cache.
assets/repository-atelier-chat.js + cloudflare-taxi/src/repository-atelier.js Pure visit-scoped five-call chat state plus strict exact-owner/repo GitHub MCP request and reference boundaries. Changing Repository Atelier chat lifecycle, limits, payloads, or grounding scope.
cloudflare-taxi/src/repository-atelier-grounding.js Existing GitHub credential: exact public metadata + complete bounded document + one Entra synthesis; unconfigured forks retain MCP-first lookup. Changing Atelier document answers; preserve private/mismatch refusal, exact-host credentials, no redirects, the shared 25-second Worker deadline, truthful source/call reporting, and unchanged models/budgets.
assets/repository-blueprint.js Pure exact-repository GitHub Tree request boundary plus deterministic bounded source-tree projection. Changing Repository Blueprint validation, request, cache, node, edge, depth, or layout rules.
assets/repository-exhibit.js Immediate public description/homepage projection and explicit anonymous README excerpts, source provenance, and visit-only document state. Changing purpose-first Atelier content, source selection, document limits, cancellation, or safe explicit links. No automatic README or AI request, inferred commands, remote media, or Worker path.
assets/repo-route.js Pure 2–3 stop route validator, current-catalog resolver, conflict policy, and canonical Repo Route URL. Changing visitor-curated multi-repo paths or ?route= links.
assets/contribution-quests.js Pure current-owner/catalog issue projector and bounded quest ranker. Changing Open Source Quest validation, tier priority, or result diversity.
assets/issue-code-scout.js Pure exact-repo Quest title/label to loaded Blueprint path candidate matcher. Changing Scout tokenization, scoring, ordering, caps, or fail-closed path rules.
assets/homecoming.js Pure v1.97 first-ten-minutes rules: deterministic city name, arrival timelapse length, three catalog-chosen tour stops and their copy, Wayfinding unlocks, and the bounded session town list. Changing the canonical landing, arrival timelapse, intent card, explore path, or Go/Look/Share unlocks.
assets/journey.js Pure v1.98 Passport Journey rules: one page visit's opened houses, chosen paths and left traces kept in order, de-duplicated and capped (24/12), current-catalog Passport totals, and copy-key choice. Changing the Journey tab's order, caps, trace kinds, cumulative line, or copy choice.
gallery.html + assets/gallery.js + data/gallery.json Standalone city gallery (no 3D scene): a login → city card maker with its share link and README card, plus the listed towns. assets/gallery.js holds the pure consent-list validation, per-town links and KO/EN copy; data/gallery.json is hand-written and lists public logins only. Listing or removing a town, or changing the gallery page. List an account only from an opt-in issue that account opened (record that issue URL as its consent; the site owner is "owner"), remove on any request, and keep one data request, no telemetry or storage, and node scripts/test-gallery.mjs green.
.github/ISSUE_TEMPLATE/gallery-join.md + gallery-removal.md The gallery's opt-in and removal requests. Changing the consent or removal wording; keep scripts/test-gallery.mjs in step.
assets/town-growth.js Pure repo-creation timeline, year snapshot, and Growth Replay share-link logic. Changing historical cutoffs, unknown-date policy, or ?growth= links.
assets/town-creator.js Pure allowlisted public-profile + town-repo summary for Creator Hall. Changing creator facts, badges, signature-repo ranking, or avatar safety.
assets/twin-towns.js Pure public-repo comparison and reversible Twin Towns link builder. Changing the two-person referral bridge or its URL contract.
scripts/build_repos.py Rebuilds repos.json and data/city-state.json from data/logs/* traffic + gh api. Refreshing the city data locally.
scripts/resident_profiles.py + data/residents/ Generates sanitized, date-free public resident profiles, the boot manifest (the only resident artifact carrying generated_at and the city reference day), and the Worker authority registry. Profile JSON is generated — do not hand-edit. Changing repository-bound resident identity or Shared/Bound inputs.
scripts/smoke.mjs Hermetic static and behavioral regression guards for the city runtime. Any client feature, navigation, or generated-module integration change.
scripts/check-hermetic.sh + .github/workflows/pr-quality.yml Shared local/PR hermetic command list and read-only exact-head GitHub check. Changing the regression gate; keep one command list and preserve failure propagation.
scripts/test-first-visit.mjs + scripts/test-first-visit-browser.mjs Hermetic first-visit guards plus a separate local-only browser matrix. Changing speech/panel focus, repository selection, arrival, or recovery. Browser execution is not part of hermetic CI.
scripts/test-readable-town.mjs + scripts/readable-town-browser-cases.mjs Name/obstacle/IME/key fixtures and the readable-town browser group: crowd projection, native controls and resized card/Atelier return. Changing world-name presentation or panel ownership; compare real projected rectangles and preserve source-backed before/after evidence.
scripts/test-repository-exhibit.mjs + scripts/repository-exhibit-browser-cases.mjs Pinned public README source fixtures, byte-exact code copying, request/size/deadline/visit guards, and the local exhibit browser group. Changing the source-backed exhibit. Keep actual README receipts, hostile/error fixtures, exact source comparisons, zero-inference entry, and source/room resource evidence.
scripts/test-visual-governor.mjs Extracts and deterministically replays the inline adaptive visual-governor core. Changing warm-up, thresholds, hysteresis, dwell, LOW_END/reduced-motion bounds, or recovery.
scripts/test-procedural-surfaces.mjs Hermetic seed, UV, family, bounded-cache, pixel-hash, and disposal fixtures. Changing procedural facade/roof helpers or cache limits.
scripts/test-zone-classifier.mjs + scripts/fixtures/zone-classifier-golden.json Golden districts for all 71 repos as the inline classifier assigned them before extraction, edge fixtures, a rule fingerprint, and the shipped index.html adapter. Changing the district rule; regenerate the golden only together with a deliberate rule change.
scripts/test-city-card.mjs Empty, one-house, 100-cap, archive-only, hostile-name, XML-escape, text-fit, and pinned byte-identical SVG fixtures for the city card. Changing the card summary or SVG; update the pinned hashes only for a deliberate design change.
scripts/test-city-card-worker.mjs Hermetic repolis-card checks with fake GitHub, KV, Cache API, rate-limit binding and renderer: routes and login rule, d= normalization, HTML/OG escaping, cache and KV keys, summary-only KV, the 1 h negative cache, 200 on every failure, the per-address render limit, log lines without logins, the glyph vocabulary, and the wrangler.toml contract. Changing the card Worker, the card or plaque copy (rebuild the glyphs), or its deployment names.
scripts/test-portable-town.mjs Deterministic fixtures for canonical, foreign, empty/archive-only, partial, missing-date, leakage, resident-cap, and zero-request portable towns. Changing public-town projection or local resident derivation.
scripts/test-public-town-cache.mjs Allowlist, cached-vs-live projection, per-town size, LRU and legacy-purge fixtures, plus a replay of the exact /*PUBLIC_TOWN_CACHE*/ block against a quota-limited fixture storage and GitHub endpoint. Changing the ?user= / Twin Towns data cache or the fields projectPublicRepo reads.
.github/workflows/refresh.yml "Refresh Repolis data" — daily Action that regenerates repos.json and pushes chore: refresh. CI / data-refresh changes.
scripts/build-contribution-library.mjs + assets/contribution-library.json Generates the in-app Contribution Library JSON from the sibling Hyeonsang-AI-Contributions README (KO/EN); index.html fetches it at runtime. JSON is generated — do not hand-edit. Daily via .github/workflows/update-contribution-library.yml. Changing the library landmark's data/source.
cloudflare-taxi/ The live AI backend — Worker repolis-taxi (src/grounded.js): grounded repo/docs Q&A + in-persona chat. Grounding / scholar answer logic.
cloudflare/ Realtime presence Worker repolis-rt (multiplayer avatars + visitor counter). Realtime/multiplayer changes.
cloudflare-card/ City card Worker repolis-card: /u/<login> answers 200 with the town's card as Open Graph tags and moves people on to ?user=<login>&ref=card; /card/<login>.png (1200×630, glyph-path text rasterized by @resvg/resvg-wasm) and .svg (600×300 README). KV CARD_KV holds card summaries only (24 h, empty 1 h), CARD_RATE_LIMIT bounds new renders per address, and its npm dependencies live only in this folder. Not wired into the site yet. Share previews or card images. Keep KV summary-only, logs login-free, every failure 200, and node scripts/test-city-card-worker.mjs green; see cloudflare-card/README.md.
party/ + partykit.json PartyKit realtime server (alternative to cloudflare/). Forks that prefer PartyKit.
api/taxi.js, api/taxi-grounded.js Optional Vercel functions — fork-only alternatives to the Worker. Only if maintaining the Vercel path.
council/ Kronos Council deterministic decision engine + hermetic tests. The debate/verdict feature.
docs/ Agent-facing specs, known limitations, and archived release history. Understanding the data/feature model or historical context.
examples/ Copy-paste recipes (curl the worker, share links, embed). Learning the public surface fast.
README.md / README.ko.md Human docs (EN / KO). User-facing narrative.
SCHOLARS.md Human roster of the scholar NPCs. Documenting a new scholar.
llms.txt One-page LLM index of this project. Keep links in sync on big changes.
repolis.yaml Machine-readable project manifest. Entry points / deploy targets change.

Read the full file on GitHub · 245 lines

Changes

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.

  1. today Changed · +3 lines · +318 tokens per session 1c8dc6b4d9ea
  2. 13d ago Changed · +13 tokens per session 3e42420d03f7
  3. 14d ago Changed · +14 lines · +1,765 tokens per session be1444a9a77f
  4. 16d ago Changed · +2 lines · +253 tokens per session 9285ad830e86
  5. 1mo ago Changed · +3 lines · +306 tokens per session 40634a158062
  6. 1mo ago Changed · +2 lines · +142 tokens per session feeb88b8da2a
  7. 1mo ago Changed · +8 tokens per session 27a4b8a8d968
  8. 1mo ago Changed · +1 lines · +77 tokens per session 0e5cc75e34fc
  9. 1mo ago Changed · -6 lines · +152 tokens per session 15f24fe54509
  10. 2mo ago First seen · 226 lines · 6,159 tokens per session scan A 2c5dc94312c6

Subscribe to this mod's changes

Repolis AGENTS.md is an instructions file published in the GitHub repository hyeonsangjeon/Repolis (47 stars, last pushed yesterday), licensed MIT. It adds 9,193 tokens to every session, about $0.0368 per session on Opus 5.5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Repolis AGENTS.md compared with instructions from other repositories

Repolis AGENTS.md next to 6 instructions from other repositories
ModTypeStarsLast pushLicenceScanTokensWorks with
Repolis AGENTS.mdhyeonsangjeon/RepolisInstructions file47yesterdayMITA9,193Codex, OpenCode
vscode buildNext.instructions.mdmicrosoft/vscodeInstructions file195kyesterdayMITA9,719GitHub Copilot
next.js AGENTS.mdvercel/next.jsInstructions file143kyesterdayMITA7,461Codex, OpenCode
langchain AGENTS.mdlangchain-ai/langchainInstructions file149kyesterdayMITA4,680Codex, OpenCode
vscode oss-third-party-notices.instructions.mdmicrosoft/vscodeInstructions file195kyesterdayMITA5,516GitHub Copilot
vscode copilot-instructions.mdmicrosoft/vscodeInstructions file195kyesterdayMITA3,093GitHub Copilot
deepseek-harness AGENTS.mddeepseek-ai/deepseek-harnessInstructions file274k2d agoMITA4,313Codex, OpenCode