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.
curl -O https://raw.githubusercontent.com/hyeonsangjeon/Repolis/main/AGENTS.mdgit clone --depth 1 https://github.com/hyeonsangjeon/RepolisWrote 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/hyeonsangjeon/repolis/agents-md)<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.
<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>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.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 |
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. | 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.htmlis 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]>· GitHubhyeonsangjeon - 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. |
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.
- today Changed · +3 lines · +318 tokens per session 1c8dc6b4d9ea
- 13d ago Changed · +13 tokens per session 3e42420d03f7
- 14d ago Changed · +14 lines · +1,765 tokens per session be1444a9a77f
- 16d ago Changed · +2 lines · +253 tokens per session 9285ad830e86
- 1mo ago Changed · +3 lines · +306 tokens per session 40634a158062
- 1mo ago Changed · +2 lines · +142 tokens per session feeb88b8da2a
- 1mo ago Changed · +8 tokens per session 27a4b8a8d968
- 1mo ago Changed · +1 lines · +77 tokens per session 0e5cc75e34fc
- 1mo ago Changed · -6 lines · +152 tokens per session 15f24fe54509
- 2mo ago First seen · 226 lines · 6,159 tokens per session scan A 2c5dc94312c6
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.
Repolis AGENTS.md compared with instructions from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| Repolis AGENTS.mdhyeonsangjeon/Repolis | Instructions file | 47 | yesterday | MIT | A | 9,193 | Codex, OpenCode |
| vscode buildNext.instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 9,719 | GitHub Copilot |
| next.js AGENTS.mdvercel/next.js | Instructions file | 143k | yesterday | MIT | A | 7,461 | Codex, OpenCode |
| langchain AGENTS.mdlangchain-ai/langchain | Instructions file | 149k | yesterday | MIT | A | 4,680 | Codex, OpenCode |
| vscode oss-third-party-notices.instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 5,516 | GitHub Copilot |
| vscode copilot-instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 3,093 | GitHub Copilot |
| deepseek-harness AGENTS.mddeepseek-ai/deepseek-harness | Instructions file | 274k | 2d ago | MIT | A | 4,313 | Codex, OpenCode |