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/fwornle/coding/copilot-instructionsgit clone --depth 1 https://github.com/fwornle/codingWhat 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.10214 | $0.10214 |
| Opus 5 | $0.05107 | $0.05107 |
| Sonnet 5 | $0.02043 | $0.02043 |
| Haiku 4.5 | $0.01021 | $0.01021 |
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 2d 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.
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.
- **km-core wiring — hand-made symlink, NOT a package.json dependency**: `@fwornle/km-core` is the `lib/km-core` git submodule, linked in by hand as `node_modules/@fwornle/km-core -> ../../lib/km-core`. It appears in **n Copies of this mod
1 near-identical copy found in the catalogue:
- coding CLAUDE.md — 95% identical, 41 lines differ
How it starts
The opening of the file, as written. The whole thing — 158 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
- Documentation skill: ALWAYS invoke
documentation-styleskill before creating/modifying PlantUML, Mermaid, or documentation artifacts - PlantUML: Use
plantumlCLI command. NEVERjava -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 any visual smoke / screenshot / click-through againstlocalhost:3002/3032/8080or any local web UI, use thegsd-browserCLI (gsd-browser navigate,screenshot,click,eval,select-frame,snapshot). It wraps Playwright with the correct chromium resolution and avoids theERR_MODULE_NOT_FOUNDfailure mode of inlinechromium.launch()scripts. The/playwright-cliskill is allowed as an entry point but does NOT excuse writing a hand-rollednode /tmp/foo.mjsPlaywright script — that re-triggers theprefer-gsd-browserconstraint. For structured E2E tests, place them undertests/e2e/<area>/<spec>.spec.tsand run vianpx playwright test. - Constraint dodging is forbidden: When a constraint blocks a tool call, fix the underlying issue — DO NOT swap to a different API that pattern-matches around the regex (e.g.,
process.stderr.writeto dodgeno-console-log). Switching to a different raw-write API preserves the behaviour the rule prevents and is itself a violation. For legitimate exceptions, includeOVERRIDE_CONSTRAINT: <id>in the prompt with rationale. - km-core scripts: Any CLI or service that imports
resolveEntitiesfrom@fwornle/km-coreMUST constructGraphKMStorewith anontologyDiroption — otherwise default-class resolution throwsopts.classes omitted but store has no ontology registry. Resolve viaimport.meta.resolve('@fwornle/km-core')+ walk up to package root. Integration tests pass this explicitly, so absent CLI greps will mask the gap (Phase 41 lesson, commits87bc2f567/fd35c5350). When authoring a new CLI plan, include an acceptance grep forontologyDirin the script. - km-core LLM proxy endpoint: The local rapid-llm-proxy serves
POST /api/complete(NOT OpenAI/v1/chat/completions) on port 12435 (host) /host.docker.internal:12435from inside the coding-services container. The container hasLLM_CLI_PROXY_URL=http://host.docker.internal:12435pre-set indocker/docker-compose.yml. DO NOT confuse with port 3033 — that's the Health API, not the LLM proxy (the Health API will silently returnCannot POST /api/completeHTML, masking the wrong-port bug — Phase 42.2 Plan 06 follow-up lesson; submodule commit7df8773). Request body:{ process, messages, complexity? }; response:{ content, provider, model, tokens, latencyMs }— not OpenAI-wrapped, andprovideris the ACCOUNT id (gh-copilot,claude-code-max). URL resolution precedence (matches@rapid/llm-proxySDK convention):RAPID_LLM_PROXY_URL→LLM_CLI_PROXY_URL→LLM_PROXY_URL→http://localhost:${LLM_CLI_PROXY_PORT ?? '12435'}; append/api/completeexactly once. Seescripts/backfill-raw-observations.mjs:40,95for the canonical host-side client andintegrations/semantic-analysis/src/agents/llm-with-process.tsfor the container-side wrapper.taskTypedoes nothing — this file used to claim it "routes dedup calls to claude-haiku (cheaper)", butserver.mjsandworker-pool.mjscontain zero references to it and always did; the field was silently ignored. To make a call cheap, give itsbg-<process>acomplexity: smallroute inllm-routing.yaml, or sendcomplexityper request on a route declaredfrom-caller. - km-core wiring — hand-made symlink, NOT a package.json dependency:
@fwornle/km-coreis thelib/km-coregit submodule, linked in by hand asnode_modules/@fwornle/km-core -> ../../lib/km-core. It appears in nopackage.json, sonpm installneither creates nor restores it and nothing fails loudly at install time. If the link goes missing (the scope dirnode_modules/@fwornle/is typically left behind, empty), every ETM spawn dies instantly withERR_MODULE_NOT_FOUND: Cannot find package '@fwornle/km-core' imported from .../src/live-logging/ObservationWriter.js. Symptom: statusline shows[LSL🔴]and the project's agent letter turns 🟡 while the Health API still reports green — this is the ETM, not a service, so health is the wrong place to look. Diagnose:curl -s localhost:3034/health/state(the project'slslentry readsstatus: stopped, whichgetLSLHealthStatus()maps todown), thentail .logs/etm-<project>.logfor the real error (the ETM is no longer launchd-managed — see the daemon list below — solaunchctltells you nothing about it; the coordinator re-spawns it within 30s, which turns this into a visible respawn loop in that log). Fix:ln -s ../../lib/km-core node_modules/@fwornle/km-core, then either wait 30s for the coordinator orlaunchctl kickstart -k gui/$(id -u)/com.coding.health-coordinatorto force it. Beware the false all-clear: long-lived daemons that resolved the module before it vanished (e.g. obs-api) keep running and only fail on their next restart, so "obs-api is up" does not prove the link exists (2026-08-08). - km-core snapshot-restore patch (now upstream — nothing to re-apply):
hydrate()instore/persistence.jsprefers the JSON export over the LevelDBgraph:statecache when the JSON has more nodes. Why:persistGraphonly fires on cleanclose(); an obs-api crash during shutdown (we hit alibc++abi mutex lock failedon SIGTERM) leaves LevelDB frozen at the prior clean state — days behind the JSON exports written by the exporter's 5s-debounced scheduleExport. Without it,launchctl kickstart com.coding.obs-apiresurrects the stale state (a 2026-06-05 snapshot came back over a 2026-06-11 backfill). This is no longer a localnode_modulespatch — but not for the reason this file used to give. It is committed in the submodule source, atlib/km-core/src/store/persistence.ts(marked "Phase 57-05 lesson: prefer JSON exports"), and it reachesdist/only by being rebuilt.lib/km-core/.gitignoreline 2 isdist/, so NOTHING underlib/km-core/dist/is tracked by git — the earlier claim that the patch "is committed atlib/km-core/dist/store/persistence.js" was wrong. Two consequences: (1) since the patch lives in source,npm run buildregenerates it and cannot wipe it, so disregard any older instruction to re-apply it manually afternpm install; (2) a fresh clone or a wipeddist/has no built km-core at all, and sincenode_modules/@fwornle/km-coreis a symlink tolib/km-core(not an npm install), nothing restores it — you MUST runnpm run buildinlib/km-corebefore any consumer can import it. The same applies to every km-core change you make: it does not travel via git asdist/, so each machine has to build it. - km-core reads MUST NOT write — pass
readOnlyon any request-scoped open:GraphKMStore.close()persists by default, andpersistGraphis a singledb.put('graph:state', JSON.stringify(graph))— the whole graph as ONE value under ONE key (the experiment LevelDB contains exactly 1 key). So a store opened purely to READ still rewrites the entire graph when it closes. Harmless for a CLI that opens once; fatal on a polled HTTP route doing open→read→close per request. Any handler that opens a km-core store to read MUST useopenExperimentStore({ readOnly: true })(which setspersistOnClose: false); the default staystrue, so writers need no change. Why:/api/experiments/runsis polled every 30s byperformance.tsx:173, and each poll appends a ~1 MB SST for a graph that exports to 8.3 MB. Left unchecked,.data/experiments/leveldbgrows to thousands of files and multiple GB backing ~4,000 nodes — 550× amplification — at which pointopen()alone exceeds the container's 4 GiB cgroup limit and the kernel OOM-kills vkb-server on every poll; each SIGKILL is an unclean close, so compaction never catches up and the loop sustains itself. Diagnostic signature:WARN exited: vkb-server (terminated by SIGKILL; not expected)every ~30s with clean, fast startup logs (⇒ request-triggered, not startup).docker statslies here — it reports a few hundred MB against the 4 GiB limit because the spike outruns its 1s sampling; read/sys/fs/cgroup/memory.events(oom_kill) andmemory.peakinstead. Cheapest positive test: one GET adds one ~1 MB.ldbfile; an order-of-magnitude gap betweendu -shof the LevelDB and its JSON export IS the bug. Recovery: stop vkb-server,launchctl bootoutthe writers (com.coding.auto-measure-foreground,com.coding.measurement-reconciler), move the leveldb dir aside, then open+close the store once —hydrate()rebuilds it from.data/experiments/exports/*.json.
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.
- 2d ago First seen · 158 lines · 10,214 tokens per session scan C eb6d07d50e71
coding copilot-instructions.md is an instructions file published in the GitHub repository fwornle/coding (2 stars, last pushed 2d ago), licensed MIT. It adds 10,214 tokens to every session, about $0.0511 per session on Opus 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.
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.
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.
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).
next.js AGENTS.md
Instructions for vercel/next.js, covering next.js development guide, codebase structure, monorepo overview, core package: packages/next and other important packages.