From agent-harness
Evaluate a repository's readiness for autonomous AI agent development, based on Factory AI's agent readiness framework adapted to modern tooling standards. Produces a scored report across 9 pillars with a phased enhancement plan.
How this skill is triggered — by the user, by Claude, or both
Slash command
/agent-harness:agent-readinessThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Evaluate how well a codebase supports autonomous AI-assisted development. Based
resources/documentation_strategy.mdresources/evaluation_template.mdresources/modernization_recommendations.mdresources/pillar1_style_validation.mdresources/pillar2_build_system.mdresources/pillar3_testing.mdresources/pillar4_documentation.mdresources/pillar7_security.mdresources/pillar8_task_discovery.mdEvaluate how well a codebase supports autonomous AI-assisted development. Based on Factory AI Agent Readiness, adapted to modern tooling standards and agent platform conventions.
Before starting the evaluation, collect the following context. If the user does not provide these in the prompt, ask before proceeding.
issues-only, pr-only, or both.
pr-only → K1 (Issue templates) and K3 (Issue labeling) become N/A.issues-only → K2 (PR template) becomes N/A.both → all Task Discovery criteria apply.English, Spanish.
cloud-service, web-app, desktop-app, cli-tool,
library, ai/ml, qa-automation, or agent.
Identify the primary language and framework by inspecting root-level files:
| Indicator Files | Ecosystem |
|---|---|
pyproject.toml, setup.py, requirements.txt | Python |
Cargo.toml | Rust |
package.json + React in deps | React (Node.js) |
package.json (no framework) | Vanilla JS / Node.js |
package.json + TypeScript in deps | TypeScript |
go.mod | Go |
Gemfile | Ruby |
notebooks/, *.ipynb, ML deps (torch, tensorflow, sklearn) | AI Development |
cloudbuild.yaml, app.yaml, .gcloudignore | GCP Infrastructure |
Record the ecosystem; it determines which modernization recommendations apply
(see resources/modernization_recommendations.md).
Evaluate the repository against the 9 pillars listed below. For each criterion, check whether evidence exists in the repo. Mark as:
| # | Criterion | What to Look For |
|---|---|---|
| S1 | Linter configured | Config file for a linter (ruff, eslint, clippy, golangci-lint) |
| S2 | Code formatter configured | Formatter config or "format" in linter config (ruff format, prettier, rustfmt) |
| S3 | Type checker configured | Type checker config (pyright/mypy, TypeScript strict, Rust is typed by default) |
| S4 | Pre-commit hooks | .pre-commit-config.yaml or husky/lint-staged; hooks must match current tools |
| S5 | CI enforces lint/format | CI workflow step that runs linter and formatter in check mode |
| S6 | Import sorting | Import sort configured (ruff I, eslint-plugin-import, goimports) |
| S7 | Linter targets changed code | Pre-commit and CI scope linting to changed files only (not full project) |
S7 scope guidance (pre-commit/CI/full-project) and legacy-project handling:
see resources/pillar1_style_validation.md.
Modernization signals: If the repo uses isort/black/pylint separately →
recommend consolidation to ruff. If it uses tslint → recommend eslint. See
resources/modernization_recommendations.md.
| # | Criterion | What to Look For |
|---|---|---|
| B1 | Build command documented | README or docs describe how to build/run |
| B2 | Dependencies pinned | Lockfile exists (uv.lock, package-lock.json, Cargo.lock, go.sum) |
| B3 | Single-command install | One command installs all deps (uv sync, npm ci, cargo build) |
| B4 | Reproducible CI builds | CI uses lockfile for dependency resolution |
| B5 | Dockerized build | Dockerfile or compose file for containerised builds. See B5 in resources/pillar2_build_system.md |
B5 Docker best-practice sub-criteria (B5.1–B5.5) and scoring: see
resources/pillar2_build_system.md.
Modernization signals: requirements.txt → pyproject.toml + uv.
setup.py only → pyproject.toml. yarn classic → yarn berry or pnpm.
| # | Criterion | What to Look For |
|---|---|---|
| T1 | Unit tests exist | Test files in the repo (test_*.py, *.test.ts, *_test.go) |
| T2 | Test framework configured | Config file (pytest.ini, jest.config, Cargo test) |
| T3 | Tests runnable locally | Single documented command to run tests |
| T4 | CI runs tests | CI workflow step that executes tests |
| T5 | Coverage tracking | Coverage config or CI coverage step |
| T6 | Coverage threshold | Minimum coverage enforced (fail_under, coverageThreshold) |
| T7 | Integration tests exist | Tests that exercise external dependencies or multi-component flows |
| T8 | Test factories/fixtures | Data generation patterns (factory_boy, fishery, faker) |
| T9 | TDD methodology | Tests-first approach with both positive and negative test cases |
T9 TDD-methodology evaluation (tests-first, positive/negative patterns) and
scoring: see resources/pillar3_testing.md.
Modernization signals: unittest → pytest. mocha → jest/vitest.
| # | Criterion | What to Look For |
|---|---|---|
| D1 | README with setup instructions | Tech stack, prerequisites, build/run/test/lint commands, project structure, env vars (see resources/documentation_strategy.md) |
| D2 | Architecture documentation | docs/ with design docs, coding patterns, architecture. Auto-generated docs can replace manual docs; manual multi-file structure is needed only when auto-generated docs do not cover all aspects (e.g., examples, tutorials). Must include a README.md index (see resources/documentation_strategy.md) |
| D3 | Agent context | See D3 in resources/pillar4_documentation.md |
| D4 | Environment variables documented | .env.example, settings docs, or env var table in README |
| D5 | API documentation | Swagger/OpenAPI, or API docs (drf-spectacular, tsoa, protobuf docs). See D5 sub-checks below |
| D5.1 | User manual | End-user documentation (applies to desktop-app and cli-tool project types; N/A for others) |
| D5.2 | Auto-generated docs | Generated documentation (cargo doc, Sphinx, typedoc, etc.) — applies to all project types |
| D6 | Contributing guide | CONTRIBUTING.md or contributing section in README |
| D7 | Changelog | See D7 in resources/pillar4_documentation.md |
| D8 | Code conventions documented | Style guide, naming conventions, patterns documented. Must include domain-specific conventions per project type (see D8 in resources/pillar4_documentation.md) |
Cross-reference accuracy: For every Documentation criterion, verify that documented content matches the actual repository. Check that stated versions match config files, documented commands are runnable, referenced modules and directories exist, and described patterns reflect current code. Mark as ⚠️ (partial) if the documentation exists but is outdated.
D3 Agent Context, D7 Changelog, and D8 Code conventions detail (sub-criteria,
scoring, and evaluator guidance): see resources/pillar4_documentation.md.
| # | Criterion | What to Look For |
|---|---|---|
| E1 | Environment template | .env.example or envfile.template with placeholder values |
| E2 | Devcontainer config | .devcontainer/devcontainer.json |
| E3 | Docker Compose for local services | docker-compose.yml with DB, cache, etc. |
| E4 | One-command local setup | Makefile/justfile target, script, or documented single command. Prefer just (command runner) over make for new projects or non-build tasks; prefer make when incremental/file-based builds are needed. |
| E5 | Seed data mechanism | Fixtures, seeders, or migration-based data population |
| # | Criterion | What to Look For |
|---|---|---|
| O1 | Structured logging configured | Logging library with JSON/structured output (structlog, winston, tracing) |
| O2 | Error tracking | Sentry, Bugsnag, or equivalent integration |
| O3 | Debug tools documented | Debug instructions (debugpy, delve, node --inspect) |
| O4 | Distributed tracing | OpenTelemetry, Jaeger, or cloud-native tracing |
| O5 | Health check endpoint | /health or /readiness endpoint |
| # | Criterion | What to Look For |
|---|---|---|
| X1 | CODEOWNERS file | .github/CODEOWNERS or CODEOWNERS |
| X2 | Security linting rules | Security rules enabled in linter (ruff S, eslint-plugin-security, cargo-audit) |
| X3 | Dependency vulnerability scanning | Dependabot, Snyk, or cargo audit in CI |
| X4 | Secret scanning | GitHub secret scanning, gitleaks, or trufflehog |
| X5 | Branch protection | Require PR reviews, status checks (GitHub setting — note if cannot audit locally) |
X3 dependency-update review-cooldown guidance: see
resources/pillar7_security.md.
| # | Criterion | What to Look For |
|---|---|---|
| K1 | Issue templates | .github/ISSUE_TEMPLATE/ directory with templates. See K1 in resources/pillar8_task_discovery.md |
| K2 | PR template | .github/pull_request_template.md. See K2 in resources/pillar8_task_discovery.md |
| K3 | Issue labeling system | .github/labels.yml or documented label taxonomy. See K3 in resources/pillar8_task_discovery.md |
| K4 | Project board / tracking | Link to project board or tracking tool |
K1 issue-template guidance, K2 PR-template sub-criteria and scoring, and K3
label-consistency guidance (all per repo type): see
resources/pillar8_task_discovery.md.
| # | Criterion | What to Look For |
|---|---|---|
| P1 | Analytics instrumentation | Analytics SDK configured (Segment, Amplitude, PostHog) |
| P2 | Feature flags | Feature flag system (LaunchDarkly, Unleash, env-based flags) |
| P3 | Experiment infrastructure | A/B testing framework or experiment docs |
Criteria marked N/A are excluded from the scoring denominator based on the project type collected in Step 0. Additionally, Task Discovery criteria (K1–K4) are filtered by the repository type.
| Criterion | cloud | web | desktop | cli | library | ai/ml | qa-auto | agent |
|---|---|---|---|---|---|---|---|---|
| B5 Dockerized build | ✅ | ✅ | N/A | N/A | N/A | ⚠️ | ✅ | ✅ |
| T5 Coverage tracking | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | N/A | ✅ |
| T6 Coverage threshold | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | N/A | ✅ |
| D5 API documentation | ✅ | ✅ | N/A | ✅ | ✅ | N/A | ⚠️ | ⚠️ |
| D5.1 User manual | N/A | N/A | ✅ | ✅ | N/A | N/A | ✅ | ⚠️ |
| D5.2 Auto-gen docs | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | ✅ |
| E3 Docker Compose | ✅ | ✅ | N/A | N/A | N/A | ⚠️ | ✅ | ✅ |
| E5 Seed data | ✅ | ✅ | N/A | N/A | N/A | ✅ | ✅ | ✅ |
| O1 Structured logging | ✅ | ✅ | ⚠️ | ⚠️ | N/A | ⚠️ | ⚠️ | ✅ |
| O2 Error tracking | ✅ | ✅ | ✅ | N/A | N/A | N/A | N/A | ✅ |
| O4 Distributed tracing | ✅ | N/A | N/A | N/A | N/A | N/A | N/A | ✅ |
| O5 Health check | ✅ | ✅ | N/A | N/A | N/A | ✅ | N/A | ✅ |
| P1 Analytics | ✅ | ✅ | ✅ | N/A | N/A | N/A | N/A | N/A |
| P2 Feature flags | ✅ | ✅ | ✅ | N/A | N/A | N/A | N/A | ⚠️ |
| P3 A/B testing | ✅ | ✅ | N/A | N/A | N/A | N/A | N/A | N/A |
[!NOTE] ⚠️ in the matrix means the criterion applies but is commonly optional — still scored normally. Only N/A entries are excluded from the denominator.
Count pass/partial/fail per pillar. Scoring rules:
Level definitions (based on Factory AI):
| Level | Name | Meaning | Decision Question for New Criteria |
|---|---|---|---|
| L1 | Functional | Code works, basic tooling exists — agent can build, run, and get feedback | Does this make the code functional and give the agent basic feedback? |
| L2 | Documented | Knowledge is captured and accessible — agent understands architecture, domain rules, and conventions | Does this document knowledge the agent needs to produce correct output? |
| L3 | Standardized | Processes are enforced and reproducible — CI gates, quality thresholds, and automated checks prevent regressions | Does this standardize a process so quality is enforced automatically? |
| L4 | Optimized | Infrastructure is polished and complete — full observability, debugging, contribution workflows, and self-service | Does this optimize the development experience for full self-service? |
| L5 | Autonomous | Agent can drive product decisions — experimentation, analytics, and feature management | Does this enable autonomous product experimentation? |
Each level's criteria are the actionable TODO list for repos at that level. When ≥ 80% of applicable criteria pass, the repo graduates to the next level.
Level thresholds (based on applicable criteria — those not marked N/A for the project type and repository type):
| Level | Requirement |
|---|---|
| L1 Functional | Starting point (all repos) |
| L2 Documented | ≥ 80% of L1 criteria pass (S1-S3, B1-B2, T1-T4, D1, D3, E3, X1) |
| L3 Standardized | L2 + ≥ 80% of L2 criteria (D2, D3.3, D4-D5, E1-E2, O1-O2, K1-K2) |
| L4 Optimized | L3 + ≥ 80% of L3 criteria (S4-S5, S7, B3-B4, T5-T6, T9, X2-X3) |
| L5 Autonomous | L4 + ≥ 80% of L4 criteria (S6, B5, T7-T8, D5.1, D5.2, D6-D8, E4-E5, O3-O5, X4-X5, K3-K4, P1-P3) |
Exclude N/A criteria from each level's set before computing the percentage.
Use the template in resources/evaluation_template.md to produce the final
report. The plan must follow these rules:
resources/modernization_recommendations.md)
rather than adding a parallel tool. Mark legacy as "replace" not "add
alongside".AGENTS.md as
the cross-tool default entry file (with .agents/workflows/ or equivalent
for repeatable commands). When the repo is Claude-centric or already uses
.claude/, recommend CLAUDE.md (with .claude/skills/, .claude/commands/,
.claude/agents/); for cross-tool reach, have it import (@AGENTS.md) or
symlink a shared AGENTS.md rather than duplicating content. Agent files
must reference README.md and docs/ as the single source of truth —
never duplicate their content.> [!WARNING] callout.Save the completed evaluation to the target repository for historical tracking.
Create docs/agent-readiness/ in the target repo if it does not exist.
Save the filled-in evaluation as a markdown file using the naming convention:
agent-readiness_YYYY-MM-DDThh-mm.md
Where YYYY-MM-DDThh-mm is the evaluation datetime (use the local time of
the evaluation, with colons replaced by hyphens for filesystem
compatibility). Example: agent-readiness_2026-03-09T08-37.md.
Fill the Date field in the Ecosystem table with the same datetime value in
ISO 8601 format (YYYY-MM-DDThh:mm).
Use notify_user with BlockedOnUser: true to request review of the
implementation plan. Include questions about:
.env.exampleThe skill produces two artifacts:
| File | Content |
|---|---|
implementation_plan.md | Evaluation report + phased enhancement plan (use template) |
docs/agent-readiness/agent-readiness_YYYY-MM-DDThh-mm.md | Persisted evaluation report for historical tracking |
npx claudepluginhub cosmoscalibur/agent-harness --plugin agent-harnessCreates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.