Skip to main content

Armature

The invisible skeleton that gives shape to what AI coding agents produce.

Armature is a harness engineering framework for AI coding agents. It wraps agents (Claude Code, Cursor, Copilot, Windsurf, Aider) in automated guides, sensors, budget controls, architectural enforcement, garbage collection, and self-healing pipelines.

Armature Banner

System Architecture

Armature Architecture

Usage Flow

Armature Usage Flow

Quick Start

pip install armature-harness

# Initialize in your project
cd your-project/
armature init

# Run quality checks
armature check

# Wire into Claude Code
armature hooks --claude-code

# Self-heal lint violations
armature heal --failures lint

The 6 Pillars

Pillar What CLI
Budget Token/cost tracking, multi-provider routing, semantic cache, auto-calibration armature budget
Quality 8 weighted checks (lint, type, test, security, complexity, deps, docstring, ratio) armature check
Context CLAUDE.md/AGENTS.md generation, progressive disclosure, cross-session memory armature hooks
Architecture Layer boundary enforcement, class conformance, schema sync armature check
GC Architecture drift, stale docs, dead code, budget audit armature gc
Self-Heal Auto-fix lint, report type/test errors, circuit breaker escalation armature heal

Quality Checks (v0.2.1)

8 weighted checks with configurable gates:

Check Tool Weight Type
Lint ruff 25 External
Type-check mypy 25 External
Tests pytest 20 External
Security bandit 20 External
Complexity radon 15 External
Dependency audit pip-audit 15 External
Docstring coverage AST analysis 10 Internal
Test-to-code ratio LOC analysis 10 Internal

Scoring: weighted_score = sum(score * weight) / sum(weight)

Gates: Draft (70%) | Review Ready (85%) | Merge Ready (95%)

Configuration

Everything is configured in armature.yaml:

project:
  name: "my-project"
  language: python
  src_dir: "src/"

quality:
  enabled: true
  checks:
    lint: { tool: ruff, weight: 25 }
    type_check: { tool: mypy, weight: 25 }
    test: { tool: pytest, weight: 20, coverage_min: 85 }
    security: { tool: bandit, weight: 20 }
    complexity: { kind: internal, weight: 15, threshold: 10.0 }
    dependency_audit: { tool: pip-audit, weight: 15 }
    docstring: { kind: internal, weight: 10 }
    test_ratio: { kind: internal, weight: 10, threshold: 0.5 }
  post_write:
    enabled: true  # shift-left: check on every file write

budget:
  enabled: true
  providers:
    strategy: cost_optimized
    enabled_models: [claude-sonnet, claude-haiku, claude-opus]
  cache: { enabled: true }
  calibration: { enabled: true, auto_calibrate: true }

architecture:
  enabled: true
  layers:
    - { name: models, dirs: ["src/models/"] }
    - { name: services, dirs: ["src/services/"] }
    - { name: routes, dirs: ["src/routes/"] }
  boundaries:
    - { from: models, to: [routes] }

heal:
  enabled: true
  healers:
    lint: { auto_fix: true }

integrations:
  claude_code: { enabled: true }

Implementation Roadmap

Version Features Status
v0.1.x Core framework, 3 quality checks (lint, type, test), budget tracking Shipped
v0.2.0 Budget 2.5x increases, multi-provider routing, semantic cache, calibration Shipped
v0.2.1 5 new quality checks, weighted scoring, baseline regression deltas Shipped
v0.2.2 Architecture diagrams, code deduplication, type error fixes, function refactoring Shipped
v0.3.0 Cognitive complexity, mutation testing, flaky test detection Planned
v0.4.0 Change failure rate, agent edit accuracy, cross-project dashboards Planned
v1.0.0 Stable API, full TypeScript parity, plugin architecture Planned

IDE Integrations

armature hooks --claude-code      # .claude/settings.local.json
armature hooks --cursor           # .cursor/rules
armature hooks --copilot          # .github/copilot-instructions.md
armature hooks --github-actions   # .github/workflows/armature.yml
armature hooks --pre-commit       # .pre-commit-config.yaml

The Harness Engineering Model

Armature implements the harness engineering 2x2 grid:

Computational (fast, deterministic) Inferential (LLM-based)
Feedforward (guides) armature.yaml rules, architecture config, type hints CLAUDE.md rules, spec constraints
Feedback (sensors) ruff, mypy, boundary checks, conformance, GC sweeps LLM code review, eval judges

Claude Code Skills

Armature provides slash commands for Claude Code:

  • /armature-check -- Run quality sensors
  • /armature-heal -- Self-healing pipeline
  • /armature-gc -- Garbage collection sweep
  • /armature-budget -- Cost tracking and reporting

Budget Control

Track and optimize AI coding costs:

# Log usage
armature budget --spec SPEC-001 --phase build --tokens 50000 --cost 1.25

# Generate report
armature budget --report SPEC-001

Armature analyzes phase distribution, per-request token usage, and suggests optimizations: batch file reads, narrow context, progressive disclosure.

References

License

MIT

Metadata

Release files for armature-harness 0.2.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for armature-harness 0.2.3
File Size Uploaded
armature_harness-0.2.3.tar.gz 828.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for armature-harness 0.2.3
File Interpreter ABI Platform
armature_harness-0.2.3-py3-none-any.whl Python 3 none any Details

Total release size: 951.4 kB

Release files / armature_harness-0.2.3.tar.gz

Download URL armature_harness-0.2.3.tar.gz
Size 828.5 kB
Tags Source
SHA-256 checksum
How to use checksums
0c2afc791db1dec3ceb62ede0ff9009bf128a9babcbb05964c4797769f8873d4
BLAKE2b-256 checksum
How to use checksums
8638af6843b6fbf799cccfde6c4b6539238054292a9abf014670f7cd9332adf2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / armature_harness-0.2.3-py3-none-any.whl

Download URL armature_harness-0.2.3-py3-none-any.whl
Size 122.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a25903910c4aabd678f19f503d3ed6b5520c996b147337c58c86e86f8c22b9f9
BLAKE2b-256 checksum
How to use checksums
c762302ac17fac6bf6737a4df5e0b7706cd8d1ba930b4169979baaa63bb3f052
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release history Release notifications | RSS feed

This release

0.2.3 This release

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page