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/langcliteam/langpad/copilot-instructionsgit clone --depth 1 https://github.com/LangcliTeam/LangpadWhat 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.00712 | $0.00712 |
| Opus 5 | $0.00356 | $0.00356 |
| Sonnet 5 | $0.00142 | $0.00142 |
| Haiku 4.5 | $0.00071 | $0.00071 |
Grade A, and why
Langpad 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 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.
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.
This is a copy
100% identical to obsidian-agent-client copilot-instructions.md — 0 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.
How it starts
The opening of the file, as written. The whole thing — 46 lines — stays where its author put it; the contents beside it link to each section on GitHub.
GitHub Copilot Instructions (obsidian-agent-client)
Big picture
- Obsidian desktop plugin (React 19 + TypeScript) that chats with external coding agents via Agent Client Protocol (ACP).
- Uses a React Hooks Architecture: hooks own state/logic, components render, adapters integrate external systems, domain is pure types.
Key directories / “where to change things”
- UI composition + adapter instantiation:
src/components/chat/ChatView.tsx(creates adapters viauseMemo, composes hooks). - Session lifecycle + agent switching:
src/hooks/useAgentSession.ts. - Message state + streaming updates:
src/hooks/useChat.ts. - ACP process + JSON-RPC wiring:
src/adapters/acp/acp.adapter.ts. - Pure message prep/sending (mentions, auto-mention, WSL path conversion):
src/shared/message-service.ts. - Domain contracts only (no deps):
src/domain/models/*,src/domain/ports/*.
Architectural rules (project-specific)
- Keep
src/domain/**dependency-free: noobsidianimports, no@agentclientprotocol/sdkimports. - Add new behavior as hooks under
src/hooks/and compose them inChatView.tsx(avoid introducing ViewModel/UseCase classes). - Put non-React business logic in
src/shared/as pure functions (seemessage-service.ts). - Adapters implement ports and isolate protocol/platform churn (ACP changes should mostly stay in
src/adapters/acp/).
SessionUpdate / tool-call update flow (critical)
- Use the unified pipeline:
AcpAdapter.onSessionUpdate(...)→useChat.handleSessionUpdate(...). - Tool calls must be updated via
useChat.upsertToolCall(...)using functionalsetMessages((prev) => ...)to avoid race conditions from streamingtool_call_updateevents. - When merging tool-call content, preserve existing values when updates are
undefinedand treat diffs as replace-all (seemergeToolCallContentinuseChat.ts).
Obsidian & platform constraints
- Desktop-only:
ChatViewthrows when!Platform.isDesktopApp. - Use Obsidian
Platform.isWin/isMacOS/isLinuxhelpers (avoidprocess.platform). - No
innerHTML/outerHTML; use Obsidian element helpers (createEl/createDiv/createSpan). - Don't detach leaves in
onunload. - Keep styling in
styles.css(avoid JS style manipulation).
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 · 46 lines · 712 tokens per session scan A 638f6d6ea8dd
Langpad copilot-instructions.md is an instructions file published in the GitHub repository LangcliTeam/Langpad (1 stars, last pushed 3mo ago), licensed Apache-2.0. It adds 712 tokens to every session, about $0.0036 per session on Opus 5. A static security scan graded it A with 0 findings. It is 100% identical to obsidian-agent-client copilot-instructions.md, differing in 0 lines, and is treated as a copy.
Other instructions, from other repositories
obsidian-mind CLAUDE.md
Claude Code instructions for breferrari/obsidian-mind, covering obsidian mind, skills & capabilities, custom slash commands, vault structure and obsidian cli.
obsidian-mind AGENTS.md
AGENTS.md instructions for breferrari/obsidian-mind, covering obsidian mind, hooks, commands, memory and reaching this vault from another repo.
obsidian-llm-hub CLAUDE.md
Instructions for takeshy/obsidian-llm-hub, covering claude.md, project overview, build commands, version bumping and architecture.
onebrain GEMINI.md
Instructions for onebrain-ai/onebrain, covering onebrain — gemini cli, load order, project-level gemini config, tool name mapping and agent instructions.
onebrain AGENTS.md
Instructions for onebrain-ai/onebrain, covering onebrain — codex cli, load order, tool name mapping and agent instructions.
obsidian-llm-hub AGENTS.md
Instructions for takeshy/obsidian-llm-hub, a project described as: Obsidian plugin for AI chat, workflow automation, and semantic search — supports Gemini, OpenAI, OpenRouter, Grok, Ollama, and CLI backends.