footPrint: Instructions file for Claude Code

CLAUDE.md

footPrint CLAUDE.md is an instructions file for Claude Code from footprintjs/footPrint. It costs 14,626 tokens per session, scanned A, original, MIT.

A set of Claude Code instructions for footprintjs, a JavaScript library that builds and runs flowcharts while recording events and their causes.

In plain words
What is it for?
Planning changes to footprintjs, finding the modules affected by a feature, and checking which export or internal path owns a piece of functionality.
Why use it?
It shows contributors where the library's public API, state handling, validation, tracing, and extension points live.

Instructions file for Claude Code

Written for Claude Code: the file is CLAUDE.md.

This is footprintjs/footPrint's own configuration. It tells Claude Code how to work on footPrint 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 footPrint configures →

Reuse

Borrowing it

Nothing to install: this file belongs to footprintjs/footPrint. 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/footprintjs/footPrint/main/CLAUDE.md
Clone the repo
git clone --depth 1 https://github.com/footprintjs/footPrint

Made for: Claude Code.

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 footPrint CLAUDE.md

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

Your own site · 80×15
<a href="https://agentmods.dev/instructions/footprintjs/footprint/claude-md"><img src="https://agentmods.dev/badge/instructions/footprintjs/footprint/claude-md.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 14,626 This file is loaded in full into every session.
When invoked 14,626 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.14626 $0.14626
Opus 5.5 $0.05850 $0.05850
Sonnet 5.5 $0.02925 $0.02925
Haiku 4.5 $0.01463 $0.01463

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

Security

Grade A, and why

footPrint 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 4d 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.

CLAUDE.md · 156 lines

How it starts

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

footprintjs — feature-work map

Self-explaining flowchart engine: a fluent builder emits a static chart; one DFS pass executes it while observer channels + a commit log capture everything ("collect during traversal, never post-process"). This file maps seams and blast radius; for API description read the code/README — trust the code where any doc disagrees.

Module map

Entry points: footprintjs (engine API), /recorders, /trace (engine recorders, stores and structure walkers), /advanced (engine internals), /detach, /zod, /sinks (10.1, NODE ONLY — fileSink, the one door that imports node:fs). The separate foottrace package owns records: root for readers/types/IDs, /write for writer primitives, /paths for path rules and nested diagnostic writes. No record declaration is re-exported by FootPrint 10. See docs/design/2026-10-trace-extraction.md for the extraction design and migration map.

src/lib/ one job
capture/ engine retention policies, bounded payload summarization, hook invocation and dev-mode helpers. Value-kind classification and record freezing now belong to foottrace.
memory/ engine composition and policy: StageContext composes RecordFrame from foottrace/write; ExecutionRuntime owns run state and observer wiring; run addresses, redaction verdicts, frame types and diagnostics remain here. DiagnosticCollector uses foottrace/paths; replay/write rules are not copied here.
schema/ duck-typed validation (.safeParse/.parse ⇒ 'parseable')
builder/ fluent DSL → FlowChartSpec → StageNode graph; build-time StructureRecorder channel. NOT standalone: imports runner's makeRunnable (FlowChartBuilder.ts:18)
builder/retryLoop.ts addRetryLoop (10.1, P3b) composes ordinary attempt/reconcile/decide/wait/done/stop nodes over the shared retryRules table. One operation key survives passes and pause/resume; native physical calls stay unchanged and retryLoop metadata links logical passes/decisions. The helper declares conservative total-pass budget metadata, preserved through subflow prefixing; see src/lib/builder/README.md.
budget/ the static time budget (10.1, P5): timeBudget(chart) walks the BUILT graph once (explicit stack, each chain memoised per start, capped at MAX_WALK visits, saturating sums) — stage = attempts × timeoutMs + waits, sequence = sum, decider/selector/fork = own stage + slowest child, parallelForEach = one branch; a FUNCTION backoff is never called (counted at RetryPolicy.maxBackoffMs, which attempt/policy.ts · cappedWaitMs makes the runner enforce; else unbounded 'backoff'); loops NEVER iterated (unbounded unless assume.loops or an explicit helper's declared pass bound). Read by the builder (.budget(ms) refuses at build() when knownMs > budgetMs) and the runner (chart.timeBudget(), the run-start warning) — its own module because a runner → builder edge closes the builder ⇄ runner cycle; see src/lib/budget/README.md
scope/ ScopeFacade per stage (tracked get/set, $emit, frozen args/env); built-in ScopeRecorders in scope/recorders/
reactive/ TypedScope deep Proxy over the facade — four write laws + the honest boundary (what find/for…of hands back is raw and WARNED ABOUT in dev mode, not intercepted; a proxy held past its stage IS refused — ScopeFacade · assertLive); handles.ts = the registry of every proxy the factories built → the value behind it, asked wherever an app value enters the record (the set traps since 9.24.0 — no JSON round-trip any more; fan-out resolveItems, subflow in/out mappers, $setValue/$update/$batchArray since 9.23.3, after a fan-out over object items seeded the handle and lost every child); see src/lib/reactive/README.md
decide/ decide()/select() evidence capture
filter/ evaluator.ts · evaluateFilter — the ONE filter-rule law, shared by decide() and the attempt rule table; its own leaf module since P2 (10.1), because in decide/ it made attempt/ reach scope/ and scope.$call closed an attempt ⇄ decide ⇄ scope module cycle
attempt/ the ONE retry loop and its record (10.1, docs/design/2026-10-time-and-failure-evidence.md): runner.ts · runAttempts runs a policy and makes one frozen AttemptRecord per try (timing, outcome, category, the retry-or-stop decision as DecisionEvidence) + an AttemptSummary; decision.ts · retryRules = the one rule table as decide() rules (first match, labels ARE the reasons) + decideAttempt, decide()'s evaluation without a scope (filter rows from filter/evaluator; a property test pins equal evidence); category.ts · errorCategory = the one classifier (seven fixed values); errors.ts, anySignal.ts. L5 beside decide/, but types.ts (with decide/types.ts) is an L0 leaf because StageSnapshot (L4) names it. RetryPolicy is declared here, re-exported by engine/types.ts
recorder/ engine stores (KeyedStore/SequenceStore/BoundaryStateStore), CombinedRecorder routing, and built-in Topology/InOut/ControlDep/Quality recorders. CommitRangeIndex is owned and exported by foottrace. attemptSeries.ts = the ONE predicate every built-in recorder uses for attempt rows (P1c, 10.1: a series that RETRIED, GAVE UP or TIMED OUT; a first-time success adds no row anywhere, so no-retry runs stay byte-identical) — it lives here, not in attempt/, because a recorder → attempt runtime edge closes the attempt⇄decide⇄recorder⇄scope module cycle. Quality/Debug see onAttempt only through attachCombinedRecorder
pause/ PauseSignal / FlowchartCheckpoint types + interrupt(scope, payload) (throws InterruptSignal; converted to PauseSignal at the StageRunner boundary, pausedBy:'interrupt')
engine/ FlowchartTraverser + handlers/; narrative/ = the whole FlowRecorder channel (dispatcher + 9 strategies), not just text; lib/ids/branchSegment.ts (moved to the ids/ leaf in 9.37.0) = the ONE owner of the generated-segment grammar (<stageId>~<index>, marker ~ RESERVED); executeStage (:720) = the ONE funnel every stage fn passes through — and therefore the ONE owner of the declarative retry loop; handlers/ResumeEntry.ts = the ONE owner of a resume's ONE-SHOT re-entry (M2, 9.28.0: start + one hop per subflow on the pause path, each level's dispatcher continuation read from the chart, waiting sibling pauses queued at their fan-out)
runner/ FlowChartExecutor wiring — composes attach.ts (RunObservers) · resume.ts · checkpoint.ts · snapshot.ts · options.ts (F9, 9.41.0); (runtime, recorders, pause/resume, snapshot, DeferredObserverTier). RunContext.ts is a fluent run builder, NOT the threaded per-run context
observer-queue/ pure deferred-delivery pipeline (engine imports IT, never reverse)
sinks/ (10.1, P6) fileSink / readRecordFile — the crash-safe record on a Node host: one JSON line per entry, each written asynchronously at its own offset, only the path given (O_NOFOLLOW, 0o600; hard links / foreign / shared-writable refused), every resource bounded. The ONLY node: importer in src/ (layering.test pins it and that only src/sinks.ts reaches it). The run's side is runner/recordSink.ts · RunRecord
contract/, detach/ I/O schema normalization (OpenAPI generation belongs to runner/RunnableChart); fire-and-forget child charts (drivers passed explicitly)

Read the full file on GitHub · 156 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. 4d ago Changed · +13 lines · +236 tokens per session ff4b99abc89f
  2. 6d ago Changed · +5 lines · +208 tokens per session b40da7f6e9c1
  3. 7d ago Changed · +34 lines · +2,239 tokens per session 012d391c4019
  4. 8d ago Changed · +2 lines · +737 tokens per session f8e2efd55172
  5. 13d ago Changed · -2 lines · -2,826 tokens per session 6595c751de60
  6. 14d ago Changed · +2 lines · +1,459 tokens per session 5725d51d7f60
  7. 15d ago Changed · +1 lines · +541 tokens per session 81ac7fb1f0f9
  8. 16d ago Changed · +87 tokens per session 1c5f36ede9cd
  9. 17d ago Changed · +524 tokens per session 662d19ac616d
  10. 18d ago First seen · 101 lines · 11,421 tokens per session scan A dc6862a88ad9

Subscribe to this mod's changes

footPrint CLAUDE.md is an instructions file published in the GitHub repository footprintjs/footPrint (21 stars, last pushed yesterday), licensed MIT. It adds 14,626 tokens to every session, about $0.0585 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-30.

Related

Other instructions, from other repositories

vibetags com-example-service-TransactionalPaymentService.instructions.md

Instructions for PIsberg/vibetags, covering copilot instructions for transactionalpaymentservice and strict exception handling.

PIsberg/vibetags · 104 tokens

vibetags com-example-gmm-platform-FeatureGate.md

Instructions for PIsberg/vibetags, covering amazon kiro steering: featuregate and feature flag gate.

PIsberg/vibetags · 72 tokens

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