cite-citadel: Instructions file for GitHub Copilot

.github/copilot-instructions.md

cite-citadel copilot-instructions.md is an instructions file for GitHub Copilot from MarkusNeusinger/cite-citadel. It costs 17,176 tokens per session, scanned A, original, MIT.

A repository guide for cite-citadel, a command-line personal wiki that turns source files into a linked, fully cited knowledge base. It explains the commands, test material, and checks that keep its generated GitHub Copilot instructions aligned with the source file.

In plain words
What is it for?
Use it when developing, testing, packaging, or documenting cite-citadel. It is relevant to source ingestion, wiki generation, command-line setup, and keeping Copilot instructions synchronized.
Why use it?
It helps coding agents understand how the project ingests documents, builds the wiki, and avoids conflicting documentation. It also records the setup and validation rules needed before changes are accepted.

Instructions file for GitHub Copilot

Written for GitHub Copilot: a Copilot instructions file. Also seen: reads .claude/ paths; mentions CLAUDE.md; positional $N argument.

This is MarkusNeusinger/cite-citadel's own configuration. It tells GitHub Copilot how to work on cite-citadel 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 cite-citadel configures →

Reuse

Borrowing it

Nothing to install: this file belongs to MarkusNeusinger/cite-citadel. 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/MarkusNeusinger/cite-citadel/main/.github/copilot-instructions.md
Clone the repo
git clone --depth 1 https://github.com/MarkusNeusinger/cite-citadel

Made for: 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 cite-citadel copilot-instructions.md

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

Your own site · 80×15
<a href="https://agentmods.dev/instructions/markusneusinger/cite-citadel/copilot-instructions"><img src="https://agentmods.dev/badge/instructions/markusneusinger/cite-citadel/copilot-instructions.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 17,176 This file is loaded in full into every session.
When invoked 17,176 The same file — it is already loaded in full.
Security scan A 0 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.17176 $0.17176
Opus 5.5 $0.06870 $0.06870
Sonnet 5.5 $0.03435 $0.03435
Haiku 4.5 $0.01718 $0.01718

Measured 13d ago against content hash 9eae2dcb406a, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

cite-citadel copilot-instructions.md scanned grade A with 0 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 13d 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.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

Origin

Copies of this mod

1 near-identical copy found in the catalogue:

.github/copilot-instructions.md · 765 lines

How it starts

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

GitHub Copilot instructions — cite-citadel

Repository guidance for GitHub Copilot. Generated from CLAUDE.md — do not edit this file by hand: change CLAUDE.md and regenerate with CITADEL_WRITE_COPILOT_DOC=1 uv run pytest tests/test_packaging.py -k copilot -q. The drift guard in tests/test_packaging.py fails whenever the two disagree.

What this is

cite-citadel (CLI: citadel, PyPI package: cite-citadel) is an LLM-maintained, fully-cited personal wiki in Google's Open Knowledge Format, with an MCP server so an AI can search and read it. It implements Karpathy's LLM-Wiki pattern: drop arbitrary text-bearing files into raw/, and one agentic CLI session per source folds each into a cross-linked OKF wiki under wiki/. Pure Python 3.12, KISS. Runtime deps are only mcp, pyyaml, pypdf, and rich (all pure-Python, no native weight) — there is no LLM SDK and no API key: ingest shells out to a coding-agent CLI you already have logged in (claude/copilot/agy).

Commands

Setup: uv sync (creates .venv, installs deps + the dev group + the citadel script).

Use the portable invocation everywhere — it works identically on Linux/macOS/Windows and needs no .exe (the uv run citadel … shorthand often breaks on Windows because AV quarantines uv's generated citadel.exe):

uv run python -m citadel <subcommand>

Subcommands: init [DIR] (scaffold a workspace: citadel.toml marker, .env, raw/, wiki/; idempotent), ingest [paths…] (fold raw/ into the wiki; --verbose/-v streams the agent session, --log-dir DIR writes a transcript per agent session (named after how the source was read — pdf-text/pdf-native/office-text — shortened by path segment), --quiet drops the live progress display, --jobs N/-j folds N sources in CONCURRENTLY (default 1 = serial; CITADEL_JOBS), --full-rescan distrusts the manifest's stat cache and re-hashes every tracked source, --force <paths> deliberately re-reads already-ingested sources as a reconcile — it requires explicit paths and is refused without them, --reingest <paths> goes one step further: each named tracked source is re-imported FRESH — a kind="delete" cleanup session strips its previous facts (manifest entry dropped), then the same run ingests it as a brand-new source under the current model + rules — the full re-think reconcile's keep-the-existing-treatment rule deliberately avoids (requires explicit paths like --force; the two flags and --retry refuse to combine; a failed cleanup blocks that source's fresh session), --retry re-runs everything STUCK without naming paths: every failed source still on disk plus every ingested source no wiki page cites — the zero-entry sources the run report flags as no_pages and status marks NO PAGES — as forced reconciles; it refuses paths/--force and exits 0 when nothing is stuck, --guidance TEXT hands this ONE run a free-text steer ("create one machine registry from the maintenance lists") appended to each source-reading session's prompt — within the rules, never overriding citations; max 2000 chars, CITADEL_INGEST_GUIDANCE is the env twin, the MCP wiki_ingest takes it as a per-call argument, and the steer joins the resume checkpoint identity), refresh [--limit N] [--min-age-days D] [--stale-rules] [--dry-run] [--jobs N] (the THIRD lifecycle: re-verify the least-recently-checked sources — ordered by the manifest's ingested_at stamp, oldest/stampless first — through forced reconcile sessions on an explicit per-run budget of N sources; the sustainable alternative to regenerating the wiki after a model upgrade; --stale-rules narrows the queue to the (stale) sources — the one command that clears that marker after a rules edit), curate [--dry-run] [--limit N] [--stale-rules] [--diff PATH] [--retry] [--guidance TEXT] [paths…] (the SECOND lifecycle: improve EXISTING pages — re-sort/split/re-ground/resolve contradictions/fix locators — against a recomputed findings checklist; --guidance is the curate twin of ingest's steer — it directs structure and may ground an uncited sentence but never changes a cited fact, carried in the cluster's findings file, and the paths it names (a page, a folder, a glob) are curated even when no detector flagged them), status (read-only per-source state table: ingested / failed / skipped-duplicate / ignored / oversized / pending; MCP twin wiki_status), doctor (read-only setup health check — OK/WARN/FAIL lines for workspace / rules / config-parse fallbacks / agent CLI / the configured ingest model / raw roots / wiki placement (the wiki nested inside a raw root) / child paths (the UNC-vs-drive-letter cwd) / manifest / billing / agent instructions (instruction files in/above the workspace a NON-isolated session would load, per backend — llm._INSTRUCTION_FILES) / the MCP SDK (mcp.server.mcpserver imports, version inside the mcp>=2,<3 pin; CI's mcp-floor job runs the server tests on exactly 2.0.0) / the HTTP-serve posture / wiki-git state / a best-effort PyPI update check / workspace coherence; every check runs isolated, so one that raises is its own FAIL line, never a traceback; needs no workspace, exits 1 only on a FAIL; --probe ADDS one tiny paid session per configured model — llm.probe_session, production argv + hermetic flags, claude also --tools ""/--max-budget-usd/--no-session-persistence when advertised, in a throwaway temp dir with a ≤120 s timeout, following ingest's --bare retry rule — so a credential-stripping --bare, a CLI not logged in for -p, or a rejected model id shows before the first source pays), adopt (record THIS workspace root in the manifest's meta.workspaces after a move or a writer-machine switch — no agent session, under the run lock, refuses a re-keyed key space (manifest.workspace_rekeyed) and never rewrites a corrupt manifest; the free fix for the "written by a workspace rooted at" warning, which names it, as does doctor's manifest line; CLI-only, never on a read-only mirror), serve [--http [--host H] [--port P] [--path /mcp] [--read-only]] (the MCP server — stdio by default; --http serves the SAME surface over MCP's Streamable HTTP transport for a client that is not on this machine, mandatory bearer token, loopback default, optional read-only), capture <text> [--from WHO] [--topic T] (append one attributed note from a conversation to the raw/ capture log raw/captures/YYYY-MM.md; - reads stdin; the next ingest folds it in — the conversational-capture bridge, MCP twin wiki_capture), search <query> [--tag T] [--limit N], define <term> / read <rel_path> / raw <key> [--locator L] / neighbors <rel_path> / index / sources (CLI twins of the wiki_define/wiki_read/wiki_raw/wiki_neighbors/wiki_index/wiki_sources MCP tools — full CLI↔MCP parity), tags [tag], lint [--stale-days N] (exit 3 when the report is not clean — its own code, distinct from the usage/no-workspace exit 2), check [paths…], view [--out PATH] [--no-open] [--obsidian] [--lang CODE] (--lang overrides CITADEL_WIKI_LANG for the viewer's UI chrome + <html lang>), rules list|show|eject. citadel --version prints the version and (like --help) needs no workspace.

Read the full file on GitHub · 765 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. 13d ago Changed · +76 lines · +2,096 tokens per session 9eae2dcb406a
  2. 19d ago Changed · +9 lines · +215 tokens per session 6526fb53e28e
  3. 23d ago Changed · +4 lines · +154 tokens per session 22a52f52f222
  4. 2mo ago First seen · 676 lines · 14,711 tokens per session scan A add199328c3c

Subscribe to this mod's changes

cite-citadel copilot-instructions.md is an instructions file published in the GitHub repository MarkusNeusinger/cite-citadel (3 stars, last pushed 15d ago), licensed MIT. It adds 17,176 tokens to every session, about $0.0687 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

cite-citadel copilot-instructions.md compared with instructions from other repositories

cite-citadel copilot-instructions.md next to 6 instructions from other repositories
ModTypeStarsLast pushLicenceScanTokensWorks with
cite-citadel copilot-instructions.mdMarkusNeusinger/cite-citadelInstructions file315d agoMITA17,176GitHub Copilot
vscode buildNext.instructions.mdmicrosoft/vscodeInstructions file195kyesterdayMITA9,719GitHub Copilot
next.js AGENTS.mdvercel/next.jsInstructions file143ktodayMITA7,461Codex, OpenCode
langchain AGENTS.mdlangchain-ai/langchainInstructions file149kyesterdayMITA4,680Codex, OpenCode
vscode oss-third-party-notices.instructions.mdmicrosoft/vscodeInstructions file195kyesterdayMITA5,516GitHub Copilot
vscode copilot-instructions.mdmicrosoft/vscodeInstructions file195kyesterdayMITA3,093GitHub Copilot
deepseek-harness AGENTS.mddeepseek-ai/deepseek-harnessInstructions file274k2d agoMITA4,313Codex, OpenCode