coding: Instructions file for Claude Code

CLAUDE.md

coding CLAUDE.md is an instructions file for Claude Code from fwornle/coding. It costs 3,970 tokens per session, scanned A, a copy of coding copilot-instructions.md, MIT.

A set of project instructions for coding work, covering documentation, TypeScript, APIs, local services, rebuilding, and browser-based checks.

In plain words
What is it for?
Guiding development startup, strict TypeScript checks, API-preserving fixes, PlantUML and Mermaid files, rebuilds, and visual checks of local web pages.
Why use it?
It keeps changes consistent with the repository’s rules and specifies how to verify local web interfaces and generated documentation.

Instructions file for Claude Code

Written for Claude Code: PreToolUse hook event. Also seen: reads .claude/ paths; mentions CLAUDE.md.

This is fwornle/coding's own configuration. It tells Claude Code how to work on coding 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 coding configures →

Reuse

Borrowing it

Nothing to install: this file belongs to fwornle/coding. 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/fwornle/coding/main/CLAUDE.md
Clone the repo
git clone --depth 1 https://github.com/fwornle/coding

Made for: Claude Code.

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 coding CLAUDE.md

README.md
[![agentmods](https://agentmods.dev/badge/instructions/fwornle/coding/claude-md/github.svg)](https://agentmods.dev/instructions/fwornle/coding/claude-md)
Your own site
<a href="https://agentmods.dev/instructions/fwornle/coding/claude-md"><img src="https://agentmods.dev/badge/instructions/fwornle/coding/claude-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 coding CLAUDE.md

Your own site · 80×15
<a href="https://agentmods.dev/instructions/fwornle/coding/claude-md"><img src="https://agentmods.dev/badge/instructions/fwornle/coding/claude-md.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 3,970 This file is loaded in full into every session.
When invoked 3,970 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 95% copy Near-identical to another mod 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.03970 $0.03970
Opus 5.5 $0.01588 $0.01588
Sonnet 5.5 $0.00794 $0.00794
Haiku 4.5 $0.00397 $0.00397

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

Security

Grade A, and why

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

- **Learned knowledge is persisted PER PROJECT and shared by git** (T4, `docs/architecture/knowledge-sharing.md`): km-core hydrate is a UNION MERGE of LevelDB + every project's export (newest `updatedAt` wins, relations
Origin

This is a copy

95% identical to coding copilot-instructions.md — 35 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.

CLAUDE.md · 45 lines

How it starts

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

CLAUDE.md - Coding Project Guidelines

Mandatory Rules

  • PlantUML: Use plantuml CLI command. NEVER java -jar plantuml.jar
  • TypeScript: Mandatory with strict type checking
  • API design: Never modify working APIs for TypeScript compliance; fix types instead
  • Visual UI verification — use gsd-browser: For visual smoke/screenshot/click-through against localhost:3002/3032/8080 or any local web UI, use the gsd-browser CLI (navigate, screenshot, click, eval, select-frame, snapshot) — wraps Playwright with the correct chromium resolution, avoids ERR_MODULE_NOT_FOUND from inline chromium.launch() scripts. /playwright-cli is an allowed entry point but a hand-rolled node /tmp/foo.mjs Playwright script still violates prefer-gsd-browser. Structured E2E tests go under tests/e2e/<area>/<spec>.spec.ts, run via npx playwright test.
  • gsd-browser MUST NOT drive the user's own Chrome bundle — ~/.gsd-browser/config.toml pins [browser] path to Playwright's "Google Chrome for Testing" (bundle id com.google.chrome.for.testing) via the ~/.gsd-browser/chromium.app symlink. Apple Events are addressed by BUNDLE ID, so two live instances of com.google.Chrome are indistinguishable to AppleScript and the automation one answers FIRST: every tell application "Google Chrome" on the machine silently retargets into the headless profile. That is what broke the status-line click handler — it found a dashboard tab, navigated it and reported reused idx=9 active=9 against a browser nobody could see, for hours, with no error anywhere. It also defeats its own verification, since asking AppleScript what happened asks the wrong browser too; only a screenshot from the user caught it. The daemon leaks (daemon stop reports success and stops nothing), so one screenshot run shadows every AppleScript on the machine until the next reboot. Config keys follow the env names (GSD_BROWSER_BROWSER_PATH → [browser] path); browser_path is silently IGNORED. The symlink must point at the .app, never the binary inside it — Chrome resolves ../Frameworks from argv[0]'s directory and dies with a dlopen error otherwise. Playwright deletes old revisions on upgrade, so re-point it if gsd-browser stops launching: ln -sfn ~/Library/Caches/ms-playwright/chromium-*/chrome-mac-arm64/"Google Chrome for Testing.app" ~/.gsd-browser/chromium.app. install.sh applies this pin on macOS only — Linux and Windows have no Apple Event routing, so two Chrome instances there cannot intercept one another and reusing a system Chrome is correct. bin/statusline-click is likewise per-platform: macOS gets AppleScript tab reuse, Linux xdg-open/gio open, WSL wslview/cmd.exe start, Windows start. Reuse is macOS-only (no scripting bridge elsewhere) — a new tab is the honest ceiling. Every branch ends in a launched browser or a message in the pane, and the handler ALWAYS exits 0, because tmux renders a failing run-shell as a view the user must dismiss.
  • gsd-browser has TWO failure modes and they look nothing alike. (a) Daemon won't start / receiver is gone — stale runner lock: pkill -9 -f "chromiumoxide-runner" then rm -f /private/var/folders/*/*/T/chromiumoxide-runner/Singleton*. That glob legitimately matches NOTHING on some machines, and "no matches found" is not evidence the daemon is healthy. (b) Daemon alive, its Chrome gone — commands time out after ~30 s with request failed while the daemon PID was still alive: timeout reading response from daemon, and NO Chrome process survives (ps aux | grep -c "[C]hrome for Testing" → 0). A lid-close sleep causes it: both wedges of 2026-10-24 followed one, and SIGKILLing only the Chrome reproduces it. Since then bin/gsd-browser (the shim) heals it itself: on that timeout, when the DevTools port in ~/.gsd-browser/session.json does not answer, it resets both halves and retries once (a slow page whose browser still answers is left alone). Only if the shim's heal fails, clear the lock in the browser PROFILE by hand: pkill -9 -f "Chrome for Testing"; rm -f ~/.gsd-browser/browser-profile/Singleton* ~/.gsd-browser/daemon.pid ~/.gsd-browser/daemon.sock; gsd-browser daemon start. (c) Daemon alive, its socket dead — cannot connect to daemon socket: Connection refused: a second daemon (e.g. an installer's verify step) rebound ~/.gsd-browser/daemon.sock and exited; the shim heals it like (a). Since gsd-browser 0.2.1 (open-gsd, installed by install.sh) daemon stop really stops both halves; on 0.1.24 it printed "Daemon stopped." and stopped nothing.
  • Clicking a force-directed canvas: dispatch on the ELEMENT, never click --x --y. The simulation keeps moving nodes, so coordinates read by eval are stale by the time the click lands and it silently selects whichever node drifted under the point (this picked SpecstoryIntegration instead of LiveLoggingSystem twice in a row, reporting success both times). Find the g.node by label, then for (const ev of ['pointerdown','mousedown','pointerup','mouseup','click']) el.dispatchEvent(new MouseEvent(ev,{bubbles:true,cancelable:true,view:window})), and always assert afterwards on WHICH node ended up selected.
  • A viewer page can take minutes to first paint under gsd-browser — /viewer/coding parses ~18MB of entities plus 18k relations and sits on "Loading coding graph…" with Showing 0 of 0 nodes the whole time. That is not the localhost-vs-127.0.0.1 hang; check gsd-browser network for whether /api/v1/entities was even issued before concluding anything. Poll with a Monitor until-loop rather than a single long eval.
  • Constraint dodging is forbidden: fix the underlying issue, don't swap APIs to pattern-match around a regex (e.g. process.stderr.write to dodge no-console-log). For legitimate exceptions, include OVERRIDE_CONSTRAINT: <id> with rationale.
  • km-core LLM proxy endpoint: rapid-llm-proxy serves POST /api/complete (NOT OpenAI /v1/chat/completions) on port 12435 (host) / host.docker.internal:12435 (container, pre-set as LLM_CLI_PROXY_URL). Don't confuse with port 3033 (Health API — silently 404s Cannot POST /api/complete). Body: { process, messages, complexity? }; response: { content, provider, model, tokens, latencyMs } (not OpenAI-wrapped; provider is the ACCOUNT id). URL precedence: RAPID_LLM_PROXY_URL → LLM_CLI_PROXY_URL → LLM_PROXY_URL → http://localhost:${LLM_CLI_PROXY_PORT ?? '12435'}, append /api/complete once. Canonical clients: scripts/backfill-raw-observations.mjs:40,95 (host), integrations/semantic-analysis/src/agents/llm-with-process.ts (container). taskType does nothing — only the complexity band (via bg-<process> route in llm-routing.yaml, or per-request on a from-caller route) controls cost.
  • km-core reads MUST NOT write — pass readOnly on request-scoped opens: close() persists by default; persistGraph writes the WHOLE graph under one LevelDB key, so a read-only open still rewrites it on close. Fine for a one-shot CLI, fatal for a polled HTTP route (caused a 550× disk-amplification OOM-kill loop on vkb-server via /api/experiments/runs). Use openExperimentStore({ readOnly: true }) for any read-path handler. Diagnostic: one GET adding one ~1MB .ldb file, or an order-of-magnitude gap between du -sh of the LevelDB and its JSON export. Recovery: stop vkb-server, launchctl bootout the writers, move the leveldb dir aside, open+close once to let hydrate() rebuild from .data/experiments/exports/*.json.

Read the full file on GitHub · 45 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 · +145 tokens per session b600cd28df5c
  2. 21d ago Changed · -87 lines · -4,264 tokens per session 92c187a7b46a
  3. 29d ago Changed · +3 lines · +526 tokens per session d1770371e10f
  4. 1mo ago Changed · +1 lines · +178 tokens per session ce8dfbc2b4ad
  5. 1mo ago Changed · +1 lines · +499 tokens per session c675c6939a14
  6. 1mo ago Changed · +123 tokens per session 13007e3831a4
  7. 1mo ago Changed · +10 lines · +693 tokens per session ab6174ec7571
  8. 1mo ago Changed · -13 tokens per session 9324719975d0
  9. 1mo ago Changed · -30 lines · -4,084 tokens per session cbc3e84608ff
  10. 1mo ago First seen · 147 lines · 10,167 tokens per session scan A 418a60ae4e92

Subscribe to this mod's changes

coding CLAUDE.md is an instructions file published in the GitHub repository fwornle/coding (2 stars, last pushed today), licensed MIT. It adds 3,970 tokens to every session, about $0.0159 per session on Opus 5.5. A static security scan graded it A with 1 finding (makes network calls). It is 95% identical to coding copilot-instructions.md, differing in 35 lines, and is treated as a copy.

Related

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

microsoft/vscode · 9,715 tokens

next.js AGENTS.md

AGENTS.md instructions for vercel/next.js, covering next.js development guide, codebase structure, monorepo overview, core package: packages/next and other important packages.

vercel/next.js · 7,581 tokens

vscode oss-third-party-notices.instructions.md

Instructions for microsoft/vscode, covering vs code oss third-party-notices pipeline, architecture, pipeline flow in ci, cache eligibility and rollout and applying the notice (cutover).

microsoft/vscode · 5,262 tokens

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.

langchain-ai/langchain · 4,680 tokens

vscode copilot-instructions.md

Copilot instructions for microsoft/vscode, covering vs code copilot instructions, project overview, root folders, core architecture (src/ folder) and built-in extensions (extensions/ folder).

microsoft/vscode · 2,731 tokens

deno copilot-instructions.md

Copilot instructions for denoland/deno, covering deno development guide for github copilot, network access, high level overview, key directories and key files to understand first.

denoland/deno · 3,077 tokens