coding: Instructions file for Claude Code

.github/copilot-instructions.md

coding copilot-instructions.md is an instructions file for Claude Code, GitHub Copilot from fwornle/coding. It costs 4,032 tokens per session, scanned C, original, MIT.

Instructions for GitHub Copilot CLI, a command-line coding assistant, covering project rules, required tools, services, and workflows.

In plain words
What is it for?
Creating diagrams and documentation, writing strictly typed TypeScript, preserving working APIs, and visually testing local web pages with navigation, screenshots, clicks, and browser evaluation.
Why use it?
They keep generated code and documentation aligned with repository standards and specify the approved way to check local web interfaces.

Instructions file for Claude CodeGitHub Copilot

Written for Claude Code and GitHub Copilot: PreToolUse hook event, but also a Copilot instructions file. Also seen: reads .claude/ paths; mentions CLAUDE.md.

This is fwornle/coding's own configuration. It tells Claude Code and GitHub Copilot 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/.github/copilot-instructions.md
Clone the repo
git clone --depth 1 https://github.com/fwornle/coding

Made for: Claude Code, GitHub Copilot.

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 copilot-instructions.md

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

Your own site · 80×15
<a href="https://agentmods.dev/instructions/fwornle/coding/copilot-instructions"><img src="https://agentmods.dev/badge/instructions/fwornle/coding/copilot-instructions.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 4,032 This file is loaded in full into every session.
When invoked 4,032 The same file — it is already loaded in full.
Security scan C 2 findings. 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.04032 $0.04032
Opus 5.5 $0.01613 $0.01613
Sonnet 5.5 $0.00806 $0.00806
Haiku 4.5 $0.00403 $0.00403

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

Security

Grade C, and why

coding copilot-instructions.md scanned grade C with 2 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 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.

Hidden instructionshighPrompt injection

Directives inside HTML comments, invisible characters or bidirectional overrides are read by the model and not by the person reviewing the file.

<!-- AUTO-GENERATED by scripts/generate-agent-instructions.sh — do not edit manually -->

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

Copies of this mod

1 near-identical copy found in the catalogue:

.github/copilot-instructions.md · 56 lines

How it starts

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

Copilot Instructions

These instructions are generated from the project's CLAUDE.md and available skills so that GitHub Copilot CLI follows the same conventions as other agents.

Paths shown as $CODING_REPO refer to the root of this repository. Paths shown as ~ refer to the user's home directory.

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 · 56 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 f6cc67457a9b
  2. 21d ago Changed · -87 lines · -4,264 tokens per session e91f710a3b5c
  3. 29d ago Changed · +3 lines · +526 tokens per session 3b0f715de16d
  4. 1mo ago Changed · +1 lines · +178 tokens per session 17f025e8951c
  5. 1mo ago Changed · +1 lines · +499 tokens per session 26dd7df353b7
  6. 1mo ago Changed · +123 tokens per session e77409eb2084
  7. 1mo ago Changed · +10 lines · +693 tokens per session 636b3493ce81
  8. 1mo ago Changed · +2 tokens per session 43cb3e3b7220
  9. 1mo ago Changed · -30 lines · -4,084 tokens per session 2f20a87c98b8
  10. 1mo ago First seen · 158 lines · 10,214 tokens per session scan C eb6d07d50e71

Subscribe to this mod's changes

coding copilot-instructions.md is an instructions file published in the GitHub repository fwornle/coding (2 stars, last pushed today), licensed MIT. It adds 4,032 tokens to every session, about $0.0161 per session on Opus 5.5. A static security scan graded it C with 2 findings (hidden instructions, makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

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