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/juspay/neurolink/claude-mdgit clone --depth 1 https://github.com/juspay/neurolinkWrote 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.
[](https://agentmods.dev/instructions/juspay/neurolink/claude-md)<a href="https://agentmods.dev/instructions/juspay/neurolink/claude-md"><img src="https://agentmods.dev/badge/instructions/juspay/neurolink/claude-md.svg" alt="Measured on agentmods" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.10386 | $0.10386 |
| Opus 5 | $0.05193 | $0.05193 |
| Sonnet 5 | $0.02077 | $0.02077 |
| Haiku 4.5 | $0.01039 | $0.01039 |
Grade A, and why
neurolink CLAUDE.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 5d 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.
How it starts
The opening of the file, as written. The whole thing — 656 lines — stays where its author put it; the contents beside it link to each section on GitHub.
CLAUDE.md
Guidance for Claude Code when working in this repository.
Contents
- Project Overview
- Critical Rules
- Architecture
- Key Files
- Development Commands
- How-To Guides
- Common Patterns
Project Overview
NeuroLink is a unified AI development platform shipping as both a TypeScript SDK and CLI. It wraps 21+ AI providers (OpenAI, Anthropic, Google AI Studio, Vertex, AWS Bedrock, Azure, Mistral, LiteLLM, SageMaker, Hugging Face, Ollama, OpenAI-compatible, DeepSeek, NVIDIA NIM, LM Studio, llama.cpp, OpenRouter, Cerebras, SambaNova, ElevenLabs, Deepgram, Azure Speech, Fish Audio, Cartesia, and more) behind a single consistent API, with full MCP support, multimodal file processing, voice (TTS/STT/realtime), media generation (image / video / music / avatar with Kling / Runway / Replicate / Beatoven / Lyria / D-ID / HeyGen handlers), RAG pipelines, observability, and a workflow engine.
Critical Rules
These are non-negotiable. Violating them breaks the build or introduces bugs.
- Dynamic imports only in registry — All providers must use dynamic imports inside factory functions in
providerRegistry.ts. Static imports create circular dependencies. - Types in canonical location — All type definitions go in
src/lib/types/. Never create type files inside feature subdirectories. - Gemini tools + JSON schema are mutually exclusive — Google AI Studio and Vertex Gemini models cannot use tools and
structuredOutputwith a JSON schema simultaneously (a Gemini API limitation). This does not apply to Vertex Claude models, which support both at once — the exclusion is gated onisGeminiProviderinstructuredOutputPolicy.ts, not on the Vertex provider as a whole. Providers that reject the combination at runtime (e.g. Groq) are detected viaisToolsSchemaConflictErrorand transparently retried without structured output. Regardless of provider,generate({ schema })is guaranteed to return valid JSON incontentplus a parsedstructuredDataobject (seecoerceJsonToSchema).- Huge-text / truncation: the native Claude paths (Vertex+Claude, direct Anthropic) must default
max_tokensto the model's real output ceiling viaresolveClaudeMaxTokens(Sonnet 4.x → 64K, Opus 4.x → 32K), never the legacy hard-coded 4096 that silently truncated large structured responses mid-JSON. The direct Anthropic non-streaming path also passes an explicit requesttimeoutso the SDK's "streaming is required for long requests" pre-flight guard doesn't reject a largemax_tokens. When output still hits the cap, truncation is surfaced — not silent:coerceJsonToSchemareturns{ repaired, truncated }, andGenerateResultexposesjsonRepaired/jsonTruncated(set whenfinishReason==="length"or the recovered JSON came from an unclosed span) plus a WARN log. A truncated response must still yield a partial object — never a raw string:coerceJsonToSchemaprefers the candidate starting at the document's real root (so a bracket pair scraped from inside a string value can't win), and backs off to the last completed field when jsonrepair can't close the span. That recoveredstructuredDatais a plain object, not necessarily a schema-valid one — when the response was cut short it may be partial — andjsonTruncatedis set in exactly that case (jsonRepairedwhen the JSON had to be recovered), so a caller can distinguish a salvaged object from a complete one. A caller that needs schema-valid data must checkjsonTruncatedbefore trusting the object; a caller that wants best-effort data can use it as is. Only schema-rejected scalar roots (e.g. a raw string under an object schema) are suppressed viaschemaAccepts, since they carry no recoverable structure.
- Huge-text / truncation: the native Claude paths (Vertex+Claude, direct Anthropic) must default
- CLI ≠ SDK — CLI can use manual MCP connections; the SDK cannot. Keep concerns separate.
- Backward compatibility — Public SDK API must not break existing callers.
formatProviderErrormust return, never throw — Any provider error formatter must return the error object, not throw it.- Zero
interface— always usetype— Never useinterface. Always usetype X = { ... }. The only exception isdeclare global { interface Window { ... } }which TypeScript requires for declaration merging. Use intersection (&) instead ofextends. - No "Types" suffix in type filenames — Files inside
src/lib/types/must not contain "Types" or "Type" in their name. The folder IS the types folder —mcp.tsnotmcpTypes.ts,auth.tsnotauthTypes.ts. - Unique type names across all files — Every exported type name must be globally unique across all files in
src/lib/types/. Use domain prefixes to disambiguate:- Client SDK types:
Client*prefix (e.g.,ClientAuthConfig,ClientToolInfo,ClientStreamResult) - CLI types:
Cli*prefix (e.g.,CliGenerateResult,CliStreamChunk) - Server types:
Server*prefix (e.g.,ServerAuthConfig) - Stream types:
Stream*prefix (e.g.,StreamToolCall,StreamToolResult) - Processor types:
Processor*prefix (e.g.,ProcessorRetryConfig) - Workflow judge types:
Judge*prefix (e.g.,JudgeScoreResult)
- Client SDK types:
- Barrel uses
export *only —src/lib/types/index.tsmust only containexport * from "./file.js"lines. No selective exports (export type { X, Y }), no aliases (X as Y). If addingexport *causes a name collision, rename the type at the source with a domain prefix per rule 9. - No local
types/directories — There must be notypes/directory anywhere exceptsrc/lib/types/. Nosrc/lib/observability/types/, nosrc/lib/workflow/core/types/, etc. Move those types into the canonicalsrc/lib/types/folder. - No type re-exports from non-type files — Files outside
src/lib/types/must not re-export types (export type { X } from). Consumers should import types fromsrc/lib/types/directly. Moduleindex.tsfiles should only re-export runtime values (classes, functions, constants), never types.
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.
- 5d ago First seen · 656 lines · 10,386 tokens per session scan A e6bb7f36a5a5
neurolink CLAUDE.md is an instructions file published in the GitHub repository juspay/neurolink (128 stars, last pushed yesterday), licensed MIT. It adds 10,386 tokens to every session, about $0.0519 per session on Opus 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-30.
Other instructions, from other repositories
taOS AGENTS.md
AGENTS.md instructions for jaylfc/taOS, covering agents.md and changelog fragments.
taOS CLAUDE.md
Claude Code instructions for jaylfc/taOS, covering claude.md and changelog fragments.
Praxis CLAUDE.md
Instructions for BackToCimaCoppi/Praxis, covering praxis 贡献规范(ai 与人共同遵守), 1. skill 格式, 2. 文档格式, 3. 脱敏红线(开源仓硬约束,最高优先级) and 4. 新增 skill 自检清单(提 pr 前逐条打勾).
urule CLAUDE.md
Instructions for urule-ai/urule, covering urule — ai assistant guide, architecture principles, tech stack, project layout and standalone repos (separate github repos under urule-ai org).
urule copilot-instructions.md
Instructions for urule-ai/urule, covering copilot instructions for urule, key conventions, file patterns and see claude.md for full recipes and architecture details.
ai-dial-core CLAUDE.md
Claude Code instructions for epam/ai-dial-core, covering claude.md, build & run, set credentials via environment variables, build (skip tests) and run all tests.