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/erisnar/stikart/claude-mdgit clone --depth 1 https://github.com/erisnar/stikartWrote 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/erisnar/stikart/claude-md)<a href="https://agentmods.dev/instructions/erisnar/stikart/claude-md"><img src="https://agentmods.dev/badge/instructions/erisnar/stikart/claude-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.03056 | $0.03056 |
| Opus 5 | $0.01528 | $0.01528 |
| Sonnet 5 | $0.00611 | $0.00611 |
| Haiku 4.5 | $0.00306 | $0.00306 |
Grade A, and why
stikart CLAUDE.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 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.
Runs shell commandslowCapability
Expected in a hook, worth knowing in a rule or an instructions file.
const fs = require('fs'), { execSync } = require('child_process'); How it starts
The opening of the file, as written. The whole thing — 200 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Stikart
Interactive map for Norwegian trail running and ultra race routes. Deployed at stikart.no via GitHub Pages.
Running locally
python3 server.py
# Open http://localhost:8000/index.html
The Python server is needed to avoid CORS errors when fetching local GPX files.
Integration tests
Playwright end-to-end tests in tests/ — the only npm usage in the repo (dev-only; the app itself still has no build step).
npm install && npx playwright install chromium # one-time setup
npm test # run all tests (starts server.py automatically)
npm run test:ui # interactive UI mode
npx playwright test --project=mobile # mobile only
- Two projects:
desktop(Desktop Chrome) andmobile(Pixel 7 emulation — touch events + coarse pointer, soisTouchDevice/isMobilecode paths run) tests/fixtures.jsblocks analytics and serves blank map tiles (offline-safe), and has helpers:touchScrub(real CDP touch events for chart finger-scrubbing),expandPanel,openRaceDeepLink- Tests reference the races
nsm-ultra-2025andlommedalen-rundt(TEST_RACE/DESCRIBED_RACEin fixtures) — update fixtures if those entries are ever removed - Covered: race list/search, race selection + map highlight/dim, elevation chart mouse hover and touch scrub (cursor, km marker, freeze/lock), mobile welcome screen, minimized detail card, deep links
Tech stack
- Vanilla JS, HTML, CSS — no build step, no framework, no npm
- Leaflet.js 1.9.4 for the map
- leaflet-polylinedecorator for route arrows
- Kartverket (Norgeskart) and OpenStreetMap as base layers
- GoatCounter for privacy-friendly analytics
File structure
| File | Purpose |
|---|---|
js/config.js |
Constants: WORKER_URL, isTouchDevice, darkColorPool, raceCategories |
js/races.js |
raceRoutes data array — one entry per race |
js/utils.js |
Pure utility functions: slugify, formatDate, haversineKm, fmtTime, fmtPace, etc. |
js/map.js |
Leaflet map init, tile layers, icons, layer state, loadRace/loadRaces, highlightRace, resetRaceStyles, regenerateColors, race picker popup, custom layer control |
js/filters.js |
Filter state and functions: applyFilters, filterByMonth, filterByCategory, filterBySearch, clearSearch |
js/elevation.js |
buildElevationProfile, renderElevationChart, updateElevCursor |
js/cursor.js |
Shared cursor state (dotFrozen, chartTouchMarker), enableDistanceDot/disableDistanceDot, enableChartMouse/enableChartTouch, minimizeDetail/expandDetail |
js/pace-planner.js |
Pace math (gradeFactor, fatiguedArrival, calcCheckpointSplits), renderPacePlanner, openPacePlanner/closePacePlanner/updatePacePlanner, zoomToCheckpoint |
js/race-panel.js |
Race list panel, race detail overlay, selectRace, showRaceDetailOverlay, closeRaceDetail, shareRace, changeRaceColor; extends applyFilters and regenerateColors |
js/submission.js |
Race submit/edit form: showSubmitRaceForm, openEditRaceForm, handleRaceSubmit, parseGPXForStats |
js/main.js |
Entry point: showInfoOverlay, downloadGpx, startup sequence (regenerateColors, URL params, initial loadRace/loadRaces) |
gpx-parser.js |
Parses GPX XML → GeoJSON; Haversine distance + elevation gain; extracts <wpt> waypoints |
index.html |
Shell: map div, filter bar, panels, overlays |
style.css |
All styles |
server.py |
Local dev server |
worker.js |
Cloudflare Worker — handles race submission/edit PRs server-side (holds GitHub PAT) |
wrangler.toml |
Cloudflare Worker config |
race-calendar/ |
GPX files, one folder per race |
.github/workflows/validate-race.yml |
CI: validates GPX and auto-merges valid race PRs |
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 · 200 lines · 3,056 tokens per session scan A 200dcee2a6c0
stikart CLAUDE.md is an instructions file published in the GitHub repository erisnar/stikart (2 stars, last pushed 4d ago), licensed Apache-2.0. It adds 3,056 tokens to every session, about $0.0153 per session on Opus 5. A static security scan graded it A with 1 finding (runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other instructions, from other repositories
vscode buildNext.instructions.md
Working notes and architecture documentation for the new esbuild-based build system in build/next. Use when making changes to the new build pipeline (transpile/bundle commands, NLS plugin, source-map handling, resource copying, or self-hosting watch tasks).
spec-kit AGENTS.md
AGENTS.md instructions for github/spec-kit, covering agents.md, about spec kit and specify, quickstart — add a new integration in 5 steps, integration architecture and integrationmanifest — file tracking.
codex AGENTS.md
AGENTS.md instructions for openai/codex, covering rust/codex-rs, the codex-core crate, code review rules, crate api surface and model visible context.
vscode oss-third-party-notices.instructions.md
Instructions for microsoft/vscode, covering vs code oss third-party-notices pipeline, architecture, pipeline flow in ci, applying the notice (cutover) and fallback chain (never fail the build).
langchain AGENTS.md
AGENTS.md instructions for langchain-ai/langchain, covering global development guidelines for the langchain monorepo, corridor security analysis, project architecture and context, monorepo structure and development tools & commands.
deepseek-harness AGENTS.md
AGENTS.md instructions for deepseek-ai/deepseek-harness, covering agents.md, pre-stable apis and released session data, repository layout, commands and host sandbox failures.