For an organization to trust AI with its code, three things must hold — trust, traceability, and stability at scale. cladding wraps your AI coding agent: your intent goes in before it writes, and the result is verified against your spec after, so those three are earned, not assumed. First L4 implementation of the Ironclad standard.
FAQ
cladding is a Claude Code plugin with 52 hand-picked skills for development work, indexed on Flowy. Install it with the command on its page. It includes cladding-init, blind-author, changelog. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
> /plugin marketplace add qwerfunch/cladding> /plugin install claude-code@cladding
Repo: qwerfunch/cladding
This loop is after one thing — turning the AI's "it's done" from a claim into a proof.
So you can ship AI-written code held to the same standard as human-written code — the three things an organization needs to hand coding to AI:
done; an "it's done" you can't verify never passes.cladding builds itself with cladding too — 269 of its 273 features cleared this same gate, the first L4 implementation of the Ironclad standard.
The same situation, in a vanilla AI setup and in cladding.
| Situation | Vanilla AI coding | cladding |
|---|---|---|
| Code drifts from the spec | fixed if a reviewer notices | auto-detected right after the edit · "done" can't pass while it's drifting |
| The AI says "it's done" | you take its word | done earned only when the gate is GREEN |
| Ending a session in a failing state | exits as-is, forgotten next time | the exit is blocked once, the failing checks handed off as a repair card |
| Two devs add a feature at the same time | merge conflict | hash-8 IDs · separate files → 0 conflicts |
| Who verifies the AI-written code? | the AI that wrote it self-certifies (risky) | an implementation-blind grader + the mechanical gate |
| Switching AI tools | reconfigure per tool | one spec → 5 hosts wired automatically |
done. (Automating it in a loop? That's the loop section.)done is recorded with the proof that it actually passed, so months later "was this verified? why was it built this way?" is answered by the repo, not by memory.Before — inject the intent, so the LLM starts with the right context:
After — verify the result: the 15-stage gate, 41 drift detectors, and an implementation-blind grader — an agent that checks the work against the spec with no tool to read the implementation, so it can't rubber-stamp what it wrote.
Real-time intervention (map injection · instant block · stop-block) runs fully on Claude Code. On Codex · Gemini · Antigravity · Cursor the same verification runs through in-conversation tool calls plus the git · CI gate.
The chronic disease of AI coding is "it's done" declared with nothing behind it. In cladding, status: done is not a value you write — it's a value you earn.
Stated plainly: bypass paths exist that the instant block can't see; those are caught by the after-the-fact gate. Instant block is the first line of defense, the gate the second — neither is a standalone guarantee.
Loop engineering is a shift in how you use an AI: instead of prompting it step by step, you build a loop that drives it toward a goal and runs on its own — discover, plan, execute, verify, iterate. But a loop is only as honest as its verify step, and an AI left to check its own work just passes itself. So you put something in the loop that can truly say "no" — that's cladding: the check that grades your code against your spec, not the AI's opinion of its own work.
Three things it gives your loop:
clad check --json)..cladding/events.log.jsonl) remembers the last pass's checks, tries, and drift, so the next one doesn't start blind.This is cladding's internal graph of your project — spec · code · tests · docs, all connected. Now you can see it and ask it.
Why it matters — docs and code don't drift apart. Docs lie as time passes: the code changes, the description doesn't. cladding re-checks that link every time it reads the code, and blocks "done" while the two are out of sync.
Blue = spec (center) · orange = code · green = tests · pink = docs; the more a node connects, the larger it grows and the more it pulls toward the center.
clad graph serve and the whole project opens in your browser; what connects to what, at a glance.clad measure · how it's measured).clad graph serve # live graph — localhost:3000, auto-reloads on save
clad graph export --format html --out graph.html # or a single offline .html file
Requires cladding 0.7.0+.
Spec → Code → Tests as one cycle — the spec records the why, the gate verifies, the detectors block drift.
Spec — the project's long-term memory. An LLM forgets everything between sessions, so the spec is where the project's intent lives: durable, versioned in git, and fed to the model before it starts. It holds the why and the what; the design tier just below holds the how. (It's the memory of intent, not a log of what happened.) Four tiers, top to bottom: intent (A) — sealed until a human signs off — then design (B), code + attestation (C), and audit (D). A outranks all — if the spec and the code ever disagree, the code is the one that's wrong.
Each feature is its own sharded file with an 8-char hash ID, so two devs adding features at once never collide. A feature reads like this — the what, written as a testable acceptance criterion:
# spec/features/checkout-a1b2c3d4.yaml
id: F-a1b2c3d4
slug: checkout-idempotency
status: done
acceptance_criteria:
- id: AC-9f3e21a0
text: "When a charge is retried with the same idempotency key, the system
shall return the original result and never double-charge."
test_refs: ["tests/checkout/idempotency.test.ts#retry returns the original charge"]
EARS keeps every criterion testable — WHEN <trigger> … the system SHALL <response>, the shape of the text: field above.
→ 4-tier model · hash-based IDs
Gate — the 15-stage Iron Law. One check engine, bundled by cost — 3 run at commit, 9 at push/completion, all 15 in CI:
Detectors — 41 drift detectors. They catch every direction spec · code · test can diverge:
| Direction | Catches | # |
|---|---|---|
| spec ↔ code | in the spec but missing from code, or code that strays from it | 10 |
| code ↔ test | code with no test · coverage drop · leaked secrets | 6 |
| spec ↔ test | an acceptance criterion no test verifies · false status | 6 |
| spec hygiene | the spec's own integrity — id collisions · dependency cycles | 8 |
| environment | build environment · meta files | 3 |
| verification freshness | code changed since its verify signature | 1 |
| governance · docs | policy violations · doc drift · claims beyond the evidence | 4 |
| graph · doc links | broken doc ↔ spec links · missing dependency edges | 3 |
The graph these power is that long-term memory made queryable — traceability / retrieval, not a correctness claim: what connects to what and what to re-check, not that the code is right. → full detector catalog
One feature's lifecycle runs Define → Sync → Implement → Earn — you earn done only by passing every check.
Hand the code to an AI and you usually hand it the tests too. But when the same AI writes both, the tests get shaped around the code it just wrote. The bug is there and the tests still pass. A green run that proves nothing.
So cladding asks one thing of every finished feature: were the building and the checking done by different hands? The answer goes on the record with the completion. (How many agents run, and how, is the host's call — cladding is not a multi-agent framework and doesn't arrange them.)
self-certified. It can shape the tests around the code it just wrote, so passing isn't checking.self-certified as well. It isn't a mark against the work; it means no separate check is on record.independent. It never saw the bug, so it can't shape a test around one — what decides the label is what that agent could open, not what anyone promised.Keep the building and the checking in different hands. It's the same approach as the separation of duties that audit rules like the EU AI Act and SOX ask for — close in spirit, not a certification.
cladding sits at the junction of three existing categories.
The distinction is the combination — binding those cores into one verification loop.
npm install -g cladding # install only the cladding CLI
This command may be run from any directory. It does not add Cladding to any AI model's context.
cd <project>
clad setup # connect Cladding only to this project
# Choose exactly one and remove its leading '#':
# codex # Codex
# claude # Claude Code
# gemini # Gemini CLI
# agy # Antigravity
# cursor-agent # Cursor Agent
clad setup connects the AI tools it detects on your machine (Claude Code, Codex, Gemini, Antigravity,
Cursor) to this project only — Antigravity is the one exception, wired machine-wide because it reads no
project-local MCP config (details in setup). It does not expose Cladding skills or MCP
tools in projects where setup was not run. Use only the command
for your AI tool; for Cursor IDE, open <project> as the workspace. Start a new AI session from this
folder after setup so the host discovers the project-local connection. When Codex first opens a Git
repository, approve its normal project-trust prompt; Codex intentionally ignores project MCP config
until the repository is trusted.
Choose the starting point that fits and say it naturally in your AI tool.
Cladding first inspects the project without changing it. Your AI shows the exact file operations and a one-time approval phrase; initialization begins only when you repeat that phrase in a separate reply. Opening a project or asking a question about Cladding never authorizes file changes. This exact-match step prevents accidental application; MCP cannot prove which user produced a tool argument, so it is not a sandbox against a malicious or compromised host.
Start this B2B payment SaaS with Cladding.
The LLM analyzes the domain and creates the spec, docs, and policies. It asks up to three follow-up questions only when an important product decision is still unresolved; a complete plan asks none.
Apply Cladding using docs/plan.md.
Cladding loads the file and uses its contents as the project intent.
Analyze this project and apply Cladding.
Cladding scans the existing code and combines the observed patterns with your intent.
Once initialization is complete, keep developing in the same conversation. Ask for the next feature in plain language; the AI uses the generated spec and docs and keeps material design changes aligned as the project grows. Checks run when the host invokes them; use the optional Git hooks or CI gate when you want automatic enforcement.
Implement email sign-in, including tests.
There is nothing new to memorize. For host-specific invocation, stricter Git/CI enforcement, and verified host status, see setup details.
From your project, say:
Update cladding to the latest version.
If the AI tool has terminal and global-install permission, it updates the CLI, refreshes host wiring, updates the current project, and explains any new drift. Otherwise, it shows the commands for you to approve or run.
npm update -g cladding # 1. get the new CLI version
cd <project> # 2. enter one Cladding project
clad update # 3. refresh its host wiring and derived state
Run clad update in each Cladding project you want to upgrade. It also performs the project-scoped
setup refresh, so a separate clad setup is unnecessary. It preserves authored code, feature/spec
content, and documentation; only derived data and Cladding-managed instruction blocks may be refreshed. If the new version reports drift,
hand that result to your AI tool:
Reconcile the drift the update flagged.
| Version | Conformance | Tests | Gate | Features |
|---|---|---|---|---|
| v0.9.3 (2026-08) | L4 · self-declared | 2815 / 2815 | 15 stages · 41 detectors | 273 (269 done) |
249 test files · 6 capabilities · coverage drop blocked by the COVERAGE_DROP detector
Road to Ironclad 1.0 — 1.0 locks only when two independent implementations pass the L4 conformance fixtures (GOVERNANCE § 1). cladding is the first.
MIT. LICENSE · Related: Ironclad (the standard cladding implements) · harness-boot (the seed).
.agents/
mcp_config.json
skills/
cladding-init/
SKILL.md
.claude/
.claude-plugin/
marketplace.json
settings.json
settings.local.json
skills/
cladding-init/
SKILL.md
.codex/
config.toml
.cursor/
cli.json
mcp.json
rules/
cladding-bootstrap.mdc
skills/
cladding-init/
SKILL.md
.gemini/
settings.json
.gitattributes
.github/
ISSUE_TEMPLATE/
bug_report.md
feature_request.md
PULL_REQUEST_TEMPLATE.md
workflows/
ci.yml
.gitignore
.mcp.json
.secretlintignore
.secretlintrc.json
AGENTS.md
bin/
clad
CHANGELOG.md
CLAUDE.md
CODE_OF_CONDUCT.md
conformance/
fixtures.yaml
runner.ts
CONTRIBUTING.md
docs/
ab-evaluation/
ab-evaluation-extended/
README.md
scenarios/
dashboard/
report.md
task-manager/
report.md
summary.md
case-081-cycle-conformance.md
case-agents-md-crosshost.md
case-doverunner-scale.md
case-efficiency-measurement.md
case-existing-adoption.md
case-graph-efficiency.md
case-iterative-vs-fixed-vapt.md
case-payment-saas.md
case-role-contract-ablation.md
case-test-run-dedup.md
case-working-set-landmine.md
loop-features-live-verification.md
README.md
summary.md
vacuous-guard-value-ab.md
b1-adoption-protocol.md
benchmarks/
cross-vendor-spec-convergence.md
event-store-spec-with-traps.md
event-store-trap-catch.md
prereg-context-hypothesis.md
v0.4.0-consistency-bench.md
v0.6.0-real-user-verification.md
code-style.md
conventions.md
dogfood/
antigravity-cli-2026-07-14.md
antigravity-cli-2026-07-15.md
claude-code-2026-05-20.md
claude-code-2026-07-15.md
codex-cli-2026-07-15.md
cursor-agent-2026-07-14.md
cursor-agent-2026-07-15.md
e2e-0.9.0-packed-2026-07-16.md
e2e-role-contract-2026-07-24.md
gemini-cli-2026-05-20.md
gemini-cli-2026-07-16.md
matrix.md
feature-cycle.md
gate-scope.md
gate-stages.md
glossary.md
img/
en/
cycle.svg
ecosystem.svg
graph.gif
independence.svg
intervention.svg
iron-law.svg
loop.svg
relationship.svg
ssot-tier.svg
ja/
cycle.svg
ecosystem.svg
graph.gif
independence.svg
intervention.svg
iron-law.svg
loop.svg
relationship.svg
ssot-tier.svg
ko/
cycle.svg
ecosystem.svg
graph.gif
independence.svg
intervention.svg
iron-law.svg
loop.svg
relationship.svg
ssot-tier.svg
social-preview.png
zh/
cycle.svg
ecosystem.svg
graph.gif
independence.svg
intervention.svg
iron-law.svg
loop.svg
relationship.svg
ssot-tier.svg
knowledge-graph/
design.md
multi-provider-roadmap.md
project-context.md
README.md
refinement-backlog.md
setup.md
spec-ids-multi-dev.md
ssot-model.md
ssot-testing.md
ux-routing-coverage.md
eslint.config.js
GOVERNANCE.md
LICENSE
package-lock.json
package.json
plugins/
antigravity/
mcp_config.json
plugin.json
skills/
blind-author/
SKILL.md
changelog/
SKILL.md
check/
SKILL.md
checkpoint/
SKILL.md
clarify/
SKILL.md
developer/
SKILL.md
doctor/
SKILL.md
init/
SKILL.md
observability/
SKILL.md
oracle/
SKILL.md
orchestrator/
SKILL.md
planner/
SKILL.md
reviewer/
SKILL.md
rollback/
SKILL.md
route/
SKILL.md
run/
SKILL.md
serve/
SKILL.md
status/
SKILL.md
sync/
SKILL.md
claude-code/
.claude-plugin/
plugin.json
agents/
blind-author.md
developer.md
observability.md
orchestrator.md
planner.md
README.md
reviewer.md
commands/
init.md
dist/
agents/
blind-author.md
developer.md
observability.md
orchestrator.md
planner.md
README.md
reviewer.md
clad.js
schema.json
hooks/
hooks.json
codex/
.codex-plugin/
plugin.json
.mcp.json
skills/
blind-author/
SKILL.md
changelog/
SKILL.md
check/
SKILL.md
checkpoint/
SKILL.md
clarify/
SKILL.md
developer/
SKILL.md
doctor/
SKILL.md
init/
SKILL.md
observability/
SKILL.md
oracle/
SKILL.md
orchestrator/
SKILL.md
planner/
SKILL.md
README.md
reviewer/
SKILL.md
rollback/
SKILL.md
route/
SKILL.md
run/
SKILL.md
serve/
SKILL.md
status/
SKILL.md
sync/
SKILL.md
gemini-cli/
commands/
init.toml
README.md
gemini-extension.json
GEMINI.md
README.html
README.ja.md
README.ko.html
README.ko.md
README.md
README.zh.md
scripts/
bench-engagement/
corpus.yaml
README.md
score.ts
build-plugin.mjs
build.mjs
gen-xl-spec.ts
migrate-dogfood-v0.3.16.mjs
shard-spec.ts
test-count.d.mts
test-count.mjs
version-bump.mjs
watch.mjs
SECURITY.md
skills/
changelog/
SKILL.md
check/
SKILL.md
checkpoint/
SKILL.md
clarify/
SKILL.md
doctor/
SKILL.md
init/
SKILL.md
oracle/
SKILL.md
rollback/
SKILL.md
route/
SKILL.md
run/
SKILL.md
serve/
SKILL.md
status/
SKILL.md
sync/
SKILL.md
spec/
spec.yaml
_doc-links.yaml
architecture.yaml
attestation.yaml
capabilities.yaml
features/
ab-case-doc-binding-bae800bd.yaml
ab-evaluation-4db939.yaml
ab-ext-dashboard-ef2fd9.yaml
ab-ext-scenarios-emit-f334fa.yaml
ab-ext-uncommit-demos-9a3b61.yaml
ab-extended-task-manager-0144b9.yaml
ab-outcome-quality-ba2e05.yaml
ab-tm-query-domain-fix-ae61c1.yaml
ac-hash-ids-a04cd9.yaml
adoption-honors-host-capabilities-70ed1afd.yaml
adoption-reducer-0023ba22.yaml
adoption-report-surface-1e7a10c3.yaml
agent-interpreter-rule-723c81dd.yaml
ai-hints-consumer-instructions-0ed2db.yaml
ai-hints-llm-and-enforce-00eb1a.yaml
ai-hints-preferred-patterns-32b1e0.yaml
arch-gate-skips-build-output-2c02991f.yaml
architecture-from-spec-42af48.yaml
atomic-ac-evidence-fanout-12d740.yaml
attestation-marker-a5228c.yaml
attestation-v2-per-module-b0f898a6.yaml
audit-bundle-html-e940fffe.yaml
b1-adoption-protocol-e803c149.yaml
bash-edit-blind-spot-e7d59c88.yaml
benchmarks-prune-27e56a00.yaml
blind-author-agent-d8223c.yaml
capabilities-in-spec-f6d13e.yaml
capabilities-yaml-llm-extract-d3bde4.yaml
changelog-render-904495a5.yaml
checkpoint-events-c2c996.yaml
clad-doctor-bb15e6.yaml
clad-done-gated-transition-7afbd4.yaml
clad-refine-09d68b.yaml
clad-verdict-2e28cc72.yaml
cladding-self-fixes-99c6e5.yaml
claude-code-dogfood-6f80e7.yaml
claude-md-diet-288864ae.yaml
code-compact-c58263b8.yaml
cold-start-cycle-signal-be5306eb.yaml
deliverable-smoke-9064ff.yaml
dependency-cycle-detector-a4b512.yaml
detector-count-auto-recompute-098d3b.yaml
detector-layer-purity-b010427b.yaml
doc-graph-links-ee5f643e.yaml
docs-prune-987be195.yaml
dogfood-recovery-v0-3-16-245bd5.yaml
drift-baseline-cleanup-18e951.yaml
drive-auto-rollback-2de65d.yaml
ears-complex-pattern-9d168287.yaml
ears-validation-at-creation-dddb89.yaml
enforcement-advisory-f4e184f7.yaml
enforcement-triggers-16746b.yaml
external-docs-update-v0-3-13-fcece7.yaml
F-001.yaml
F-002.yaml
F-003.yaml
F-004.yaml
F-005.yaml
F-006.yaml
F-007.yaml
F-008.yaml
F-009.yaml
F-010.yaml
F-011.yaml
F-012.yaml
F-013.yaml
F-014.yaml
F-015.yaml
F-016.yaml
... 754 more© 2026 Flowy · Free and open source
Built for Claude Code · Not affiliated with Anthropic