change-detection-store-mcp: Instructions file for Claude Code

CLAUDE.md

change-detection-store-mcp CLAUDE.md is an instructions file for Claude Code from psluja/change-detection-store-mcp. It costs 2,661 tokens per session, scanned A, original, MIT.

Project instructions for working with an open-source change-history service exposed through MCP. The service stores small JSON values and keeps a new record only when a value has changed.

In plain words
What is it for?
Use it when modifying or reviewing this change-detection service. The documented operations include creating stores, updating, reading, listing, deleting items, and viewing an item's change history.
Why use it?
It gives a coding agent the project's current status, settled design choices, and required rules, reducing the risk of changing agreed decisions or misunderstanding the system.

Instructions file for Claude Code

Written for Claude Code: the file is CLAUDE.md. Also seen: mentions CLAUDE.md; mentions Claude Code.

This is psluja/change-detection-store-mcp's own configuration. It tells Claude Code how to work on change-detection-store-mcp 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 change-detection-store-mcp configures →

Reuse

Borrowing it

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

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 change-detection-store-mcp CLAUDE.md

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

Your own site · 80×15
<a href="https://agentmods.dev/instructions/psluja/change-detection-store-mcp/claude-md"><img src="https://agentmods.dev/badge/instructions/psluja/change-detection-store-mcp/claude-md.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 2,661 This file is loaded in full into every session.
When invoked 2,661 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.02661 $0.02661
Opus 5 $0.01331 $0.01331
Sonnet 5 $0.00532 $0.00532
Haiku 4.5 $0.00266 $0.00266

Measured 8d ago against content hash 2a9c23c164af, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-09, from the pricing page.

Security

Grade A, and why

change-detection-store-mcp 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 8d 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 · 78 lines

How it starts

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

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Project Status

Deployed and working (stack ChangeDetectionStore in eu-central-1; end-to-end verified through the Claude connector). All design decisions below are settled — do not re-litigate them without the user.

The repository is not yet a git repository (deliberately, for now).

What This Project Is

An open-source change-detection store exposed as an MCP server on AWS: it stores small JSON objects only when their content hash has changed. A client writes a value under a key in a named store; the service hashes the value and creates a new record only when the hash differs from the last stored one, producing a per-key timeline of real changes.

Approved Design Decisions

  • Interface: MCP only (stateless streamable HTTP + OAuth endpoints on one Lambda Function URL). No parallel REST API. Tools: create_store, list_stores, delete_store, patch_item, patch_items, get_item, list_items, get_item_history, delete_item. Agent-friendly semantics (settled): create_store is an idempotent upsert returning { name, createdAt, created: bool }; get_item on a missing key returns { found: false } (a missing key is a normal state — only a missing STORE is an error); patch_item returns { changed, hash, date }; patch_items batches 1-50 writes with per-key results { key, changed, hash, date } | { key, error } (a bad item never fails the batch; a missing store does).
  • Sidecar meta (settled): optional JSON field on patch_item/patch_items, persisted on EVERY call — including changed: false (via updateLatestMeta port method: condition on hash + liveness, no date bump, no history entry) — but NEVER hashed; replaced whole, ≤ 64 KB. Returned by get_item and snapshotted into each history entry. Purpose: often-changing info outside change detection (e.g. lastSeenAt).
  • Auth: OAuth 2.0 with Cognito as the authorization server: hosted UI, app client secret in Secrets Manager, authorization via cognito:groups claim (group cds-allowed), no self-signup, manual Client ID entry in the Claude connector settings (no DCR). Implemented in app/src/interface/oauth/: RFC 9728 + RFC 8414 discovery metadata (base URL derived from the invocation host, never from env), /auth/authorize (PKCE S256 required; relay state carries the client's state + redirect_uri; redirect_uri allowlist enforced on BOTH authorize and callback — that closes the open redirect), /auth/token proxy (injects the client secret as Basic auth, pins redirect_uri), JWT gate via aws-jwt-verify (401 with WWW-Authenticate: ... resource_metadata=... vs 403 for missing group). Env: CDS_USER_POOL_ID, CDS_COGNITO_DOMAIN, CDS_CLIENT_SECRET_ID (the secret NAME — a partial ARN as SecretId FAILS IAM evaluation on GetSecretValue, verified in production; clientId+clientSecret live inside this secret), optional CDS_REQUIRED_GROUP, CDS_ALLOWED_REDIRECT_URIS; CDS_AUTH_DISABLED=true only for local dev. Known Function URL quirk: the 401 WWW-Authenticate header arrives remapped as x-amzn-Remapped-www-authenticate (fixed AWS behavior) — MCP clients rely on the /.well-known/oauth-protected-resource fallback, which we serve.
  • Hashing: SHA-256 over RFC 8785 (JCS) canonical JSON via the canonicalize npm package. Object key order and number format never affect the hash; array order does — that is the client's responsibility (server never normalizes arrays).
  • Data model (DynamoDB, PK + SK only, no GSI/LSI): single table.
    • Store registry: PK STORE, SK <name>
    • Latest state: PK S#<store>#LATEST, SK <key>
    • History entry: PK S#<store>#HIST#<key>, SK <ULID>, TTL always set to date + 30 days
  • Deletes are soft: delete_store/delete_item set deletedAt and ttl = min(existing, now + 7 days) on all affected records; DynamoDB TTL does physical deletion (lag up to ~48 h), so every read filters out soft-deleted and expired-but-not-purged records. create_store on a soft-deleted name reactivates it; patch_item on a soft-deleted key starts a fresh life (changed: true).
  • Validation (settled, security-relevant): store name ^[a-z0-9_-]{3,12}$ (lowercase only); item key ^[a-zA-Z0-9_|-]{3,32}$ (CASE-SENSITIVE — external IDs like source|ID6HfGma must not be lowercased); value ≤ 64 KB serialized. The # composite-key separator is excluded from both alphabets by design — do not widen these regexes further.
  • Region: eu-central-1. Resource prefix: cds. License: MIT.
  • Concurrency: patch_item uses TransactWriteItems with a condition on the previous hash PLUS a ConditionCheck that the owning store is still live (closes the patch × delete_store race; port result store-missing maps to STORE_NOT_FOUND).
  • MCP layer: stateless — one McpServer + WebStandardStreamableHTTPServerTransport (enableJsonResponse: true) per request; the Lambda handler converts Function URL events to fetch Request/Response. Domain errors map to tool errors as CODE: message; unexpected errors are masked as INTERNAL_ERROR and logged without item values.
  • Telemetry: domain metrics via CloudWatch EMF (EmfTelemetry, namespace ChangeDetectionStore — keep in sync with APP_METRICS_NAMESPACE in the api construct): ToolCalls/ToolErrors/InternalErrors (Tool dimension + dimensionless rollup), ChangesDetected/UnchangedCalls, AuthUnauthorized/AuthForbidden. No extra Lambdas — the app Lambda emits EMF log lines. The cds-health dashboard (monitoring construct) consumes ONLY constructs' metrics() and carries English how-to-read text per section + a holistic header; 6 alarms (incl. InternalErrors ≥ 1). Per-store granularity would be one added Store dimension; per-item analysis belongs in Logs Insights over EMF lines, NOT metric dimensions (cardinality cost).

Read the full file on GitHub · 78 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. 8d ago First seen · 78 lines · 2,661 tokens per session scan A 2a9c23c164af

Subscribe to this mod's changes

change-detection-store-mcp CLAUDE.md is an instructions file published in the GitHub repository psluja/change-detection-store-mcp (0 stars, last pushed 1mo ago), licensed MIT. It adds 2,661 tokens to every session, about $0.0133 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-31.

Related

Other instructions, from other repositories

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,296 tokens

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.

openai/codex · 5,153 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 · 6,785 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, applying the notice (cutover) and fallback chain (never fail the build).

microsoft/vscode · 5,001 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,469 tokens

deepseek-harness AGENTS.md

AGENTS.md instructions for deepseek-ai/deepseek-harness, covering agents.md, pre-stable apis and released session data, repository layout, commands and host sandbox failures.

deepseek-ai/deepseek-harness · 3,737 tokens