invariant-extract

invariant-extract is a skill for Claude Code from XRenSiu/claude-code-forge. It costs 264 tokens per session (3,052 once invoked), scanned A, original, MIT.

A workflow for recovering the rules that a software area must always obey from records of past failures. These rules are checked across every run of the system.

In plain words
What is it for?
Use it to propose, review, and verify permanent system invariants based on failure history.
Why use it?
Important rules are often not written down, and code that has not failed yet does not prove that those rules are protected.

Skill for Claude Code

Written for Claude Code: user-invocable in frontmatter.

Part of the looper plugin — 3 skills shipped together

Install

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.

agentmods
npx agentmods add skills/xrensiu/claude-code-forge/invariant-extract
Any agent
npx skills add XRenSiu/claude-code-forge --skill invariant-extract
Clone the repo
git clone --depth 1 https://github.com/XRenSiu/claude-code-forge

Made for: Claude Code.

Or install looper, the plugin that ships this one along with the rest of its 3 skills.

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 invariant-extract

README.md
[![agentmods](https://agentmods.dev/badge/skills/xrensiu/claude-code-forge/invariant-extract.svg)](https://agentmods.dev/skills/xrensiu/claude-code-forge/invariant-extract)
Your own site
<a href="https://agentmods.dev/skills/xrensiu/claude-code-forge/invariant-extract"><img src="https://agentmods.dev/badge/skills/xrensiu/claude-code-forge/invariant-extract.svg" alt="Measured on agentmods" height="20"></a>
Per session 264 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 3,052 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
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.00264 $0.03052
Opus 5 $0.00132 $0.01526
Sonnet 5 $0.00053 $0.00610
Haiku 4.5 $0.00026 $0.00305

Measured 5d ago against content hash 8294016cd087, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-05, from the pricing page.

Security

Grade A, and why

invariant-extract 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.

The scan reads SKILL.md. This mod also ships 1 executable file (scripts/verify_card.py), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

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.

plugins/looper/skills/invariant-extract/SKILL.md · 193 lines

How it starts

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

invariant-extract

Recover a Territory's □ resident invariants — the rules every Run under it must hold, distinct from a single Run's done_when (◊). This skill describes the world those invariants live in, the criteria that tell a real one from a fake, the primitives that make extraction mechanical where it can be, and the gates a candidate must clear before it lands. It does not prescribe a step order — the engine sequences the work; what follows are the gaps to fill and the gates that must hold, in any order.

The gap (why the engine can't just read them off the code)

A composite of three atoms: Judgment (what counts as a real □), Control (the propose-and-sign gate, role separation), Capability (the mechanical scan + the exit verifier). The Knowledge it needs (KAOS, Model Spec) it routes to, below.

The load-bearing reason this is not free:

A piece of code that correctly maintains an invariant, and one that merely hasn't violated it yet, look identical. Correct code is silent about its invariants — it just doesn't break them. So the most reliable signal that an invariant exists is a violation: the moment it actually broke.

Deletion test: remove this skill and ask the engine to "list this Territory's resident invariants" from the code — it will pattern-match guard clauses (deduction only) and miss every invariant that was learned from a failure, because that knowledge is not in the code, it is in failure.memory. The gap is real; it is the abductive channel.

The world

  • □ vs ◊ (KAOS). □ = Maintain/Avoid, "always holds", every Run (□(P→Q), □(P→¬Q)). ◊ = Achieve, "this Run attains it" (P⇒◊Q) — that is done_when, not an invariant.
  • Two channels, both real, never merged. Deduction scans code execution points → invariants the code already declares (cheap, high-precision). Abduction negates a failure → the invariant the code paid for (expensive, high-value; the moat). See references/abduction.md.
  • Purpose is the lens, not an input. A bare failure does not self-interpret — what "counts as a failure" is defined relative to what this Territory maintains. Purpose (= Territory.name + Territory.kpi + dos.scope) projects a failure onto the aspect this block owns (correctness / latency / cost / safety / reversibility), and kpi is that aspect's direct carrier. Two axes, orthogonal: purpose picks the aspect (dimension), Occam picks the scope (width). See references/abduction.md.
  • Altitude. Constitution (R00x, system-wide) ⊃ responsibility (this Territory's invariants, where this skill works) ⊃ task (done_when). A candidate that holds under every Territory's purpose is constitution, not territory-level (see cross-territory).
  • Division of labor (no whole-card generator). dos-extract → ontology / boundary / system constitution. invariant-extract → the □ column (here). acceptance-spec → done_when. Binding / autonomy / ownership → human-set at 设立 (R002). There is no monolithic "territory-spec"; assembling the card is the engine's job, not a skill.

Read the full file on GitHub · 193 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. 5d ago First seen · 193 lines · 264 tokens per session scan A 8294016cd087

Subscribe to this mod's changes

invariant-extract is a skill published in the GitHub repository XRenSiu/claude-code-forge (2 stars, last pushed today), licensed MIT. It adds 264 tokens to every session and 3,052 once invoked, about $0.0013 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 skills, from other repositories

systematic-debugging

Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.

obra/superpowers · 21 tokens

local-ai-agents

Build local-first AI agents that run entirely on a developer workstation with Microsoft Foundry Local and Qwen function-calling models. Covers Small Language Models (SLMs), the OpenAI-compatible local endpoint, sandboxed local tools, local RAG with Chroma, local MCP servers, hybrid cloud/local routing, and the…

microsoft/ai-agents-for-beginners · 200 tokens

next-cache-components-adoption

Turn on Cache Components in a Next.js app and resolve the blocking routes it surfaces. Use when the user wants to enable, adopt, or migrate to Cache Components, flip the cacheComponents flag, work through a flood of blocking-prerender / instant validation errors, run the cache-components-instant-false codemod, or…

vercel/next.js · 95 tokens

next-cache-components-optimizer

Drive a Next.js route to instant navigation by setting up an agentic loop, under Cache Components / PPR, on initial load (hard navigation) and client-side navigation (soft navigation). Encode the goal as a failing @next/playwright instant() e2e and work it to green, one verified route at a time; the shipped test then…

vercel/next.js · 170 tokens

next-partial-prefetching-adoption

Turn on Partial Prefetching in a Next.js app and work through the insights it surfaces. Use when the user wants to enable or adopt Partial Prefetching, flip the partialPrefetching flag, opt routes in with export const prefetch = 'partial', audit Link prefetch={true} behavior, preserve existing prefetched UI with…

vercel/next.js · 103 tokens

chronicle

Analyze Copilot session history for standup reports, usage tips, session search, and session reindexing. Use when the user asks for a standup, daily summary, usage tips, workflow recommendations, wants to search or find past sessions by keyword/file/PR, wants to reindex their session store, or asks about deleting…

microsoft/vscode · 72 tokens