Spec-driven verification layer for AI coding agents — Claude Code · Codex · Gemini · Antigravity · Cursor. Intent in before it writes, result verified against your spec after. Reference implementation of the Ironclad standard.
The cladding server exposes 27 tools across spec verification, feature management, and assurance workflows. While all tools have descriptions and input schemas are visible, the quality is inconsistent. Tool names follow a consistent prefix pattern (clad_*) but lack clear verb_noun conventions, e.g., 'clad_prepare_init' vs 'clad_init' conflates preparation with execution without clarity on when each is called. Parameter descriptions exist but are minimal (typically 10-40 chars), failing to explain dependencies, constraints, or when the tool should be invoked. Output schemas are not documented anywhere in the visible code, LLMs cannot infer what fields are returned. Error handling is not visible. Security around destructive operations (clad_init, clad_edit_spec, clad_create_feature) lacks confirmation or dry-run patterns. The server exposes workflow-heavy concerns (onboarding, clarification cycles) that would benefit from structured output and error recovery guidance. STDIO transport caps this at 50 maximum; architecture prevents remote hosting.
Author an oracle for test automation
Begin a new verification cycle
Get changelog of spec modifications
Process clarification answers during onboarding
Create a new feature in the spec
Create a test scenario
Edit the spec with operations
Output schemas not documented. LLMs cannot infer what fields the 27 tools return. All tools lack return type documentation, forcing LLMs to guess and plan blindly.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
Get context slice for a feature
Get event log entries
Get details for a specific feature
Get knowledge graph representation
Get impact analysis for a feature
Get working set of related features
Ingest portable receipt evidence
Initialize cladding in the project
Link a capability to features
List all features from the spec
Prepare clarification questions for initialization
Prepare initialization by drafting structured data for onboarding
Prepare spec edits for review
Resolve design impact analysis
Resolve onboarding review targets
Run drift detection checks
Run assurance gate with CLI transport
Record signoff on verified features
Stage initialization changes before applying them
Get verdict on assurance status
Parameter descriptions are minimal (10-40 chars) and lack actionable guidance. E.g., 'User intent for initialization' does not explain what valid values are, what this parameter gates, or when to provide it. Per the rubric baseline, param descriptions should average 72 chars with clear constraints.
Preparation vs. execution tools conflict in naming. clad_prepare_init, clad_stage_init, and clad_init all participate in initialization but lack clear naming distinctions on when each is called and what state transitions occur. LLMs will struggle to choose correctly.
Destructive write operations lack confirmation or dry-run patterns. clad_init, clad_edit_spec, clad_create_feature, clad_create_scenario, clad_link_capability, clad_ingest_receipt, clad_signoff, and clad_author_oracle modify state but offer no confirmation or rollback mechanism. Agents can cause irreversible damage.
No error handling or recovery guidance visible. Tools lack documented error codes, retryability guidance, or actionable next steps for LLMs when calls fail. E.g., what happens if clad_create_feature fails due to duplicate ID? Should the agent retry, search for the existing feature, or ask the user?
Parameter enums missing for constrained fields. clad_run_check and clad_run_gate accept tier, profile, and assuranceLevel as free-form strings. The descriptions list allowed values inline ('pre-commit, pre-push, all') but JSON Schema should declare these as enums for machine parsing and LLM clarity.
Tool names lack clear action verbs in some cases. clad_prepare_*, clad_resolve_*, clad_stage_* use vague verbs that don't clearly signal what the tool does. clad_prepare_init could be clarified as clad_draft_init_plan or clad_propose_init. clad_resolve_design_impact is unclear, does it fetch, compute, or apply the analysis?