From harness-claude
Audits developer experience artifacts including README quality, API docs coverage, getting-started guides, and example code validation. Produces structured DX scorecard with improvements for libraries, SDKs, and open-source projects.
npx claudepluginhub intense-visions/harness-engineering --plugin harness-claudeThis skill uses the workspace's default tool permissions.
> Audit developer experience artifacts -- README quality, API documentation coverage, getting-started guides, and example code validation. Produces a structured DX scorecard with specific improvements and scaffolds missing documentation.
Provides checklists, metrics, scoring, and grep-based detection patterns for auditing README, API, and architecture documentation quality.
Reviews documentation completeness, accuracy, and audience-appropriateness against inferred project norms. Evaluates APIs, READMEs, inline comments, and consistency.
Generates accurate README.md files by scanning codebase, verifying claims with 5-layer anti-hallucination validation, testing scripts, and tracking citations. Use for creating new READMEs, updates, or accuracy checks.
Share bugs, ideas, or general feedback.
Audit developer experience artifacts -- README quality, API documentation coverage, getting-started guides, and example code validation. Produces a structured DX scorecard with specific improvements and scaffolds missing documentation.
Resolve project root. Use provided path or cwd.
Locate documentation artifacts. Search for:
README.md, README.rst, readme.mdGETTING_STARTED.md, QUICKSTART.md, docs/getting-started.mddocs/api/, API.md, generated docs in docs/, site/examples/, demos/, samples/, code blocks in READMECHANGELOG.md, CHANGES.md, HISTORY.mdCONTRIBUTING.md, .github/CONTRIBUTING.mdScore README completeness. Check for the presence and quality of each section:
Evaluate installation instructions. Check:
Assess API documentation coverage. For every exported function, class, or endpoint:
documented / total * 100Check for time-to-hello-world. Estimate the number of steps from git clone to seeing the project work. Fewer than 5 steps is good. More than 10 is a problem.
Extract code examples from documentation. Parse all markdown files for fenced code blocks with language annotations. Track:
Extract standalone examples. Scan examples/, demos/, samples/ for:
Validate example syntax. For each extracted code example:
Run executable examples. When --validate-examples is set:
node or tsx executionpython executionCheck example freshness. Compare examples against the current API surface:
Build coverage map. Map examples to the APIs they demonstrate. Identify APIs with zero examples (documentation gaps).
Generate README sections. For any missing README section identified in Phase 1:
package.json, setup.py, Cargo.toml, or equivalentGenerate API documentation stubs. For undocumented exports:
Generate example files. For APIs with no examples:
examples/Generate getting-started guide. If no quickstart exists:
Propose documentation structure. If documentation is scattered or missing:
docs/ directory structureCheck link integrity. Verify all links in documentation:
Check version consistency. Verify documentation matches the current version:
Check cross-references. Verify README links to detailed docs, and detailed docs link back to the README and to each other where appropriate.
Output DX scorecard. Present the complete audit results:
DX Scorecard: [GRADE]
README: [score]/12 ([grade])
API Coverage: [N]% ([documented]/[total] exports)
Examples: [working]/[total] passing
Time to Hello World: ~[N] steps
Links: [valid]/[total] verified
GAPS:
- Missing: getting-started guide
- Missing: 12 undocumented exports
- Broken: examples/advanced.ts references removed API
GENERATED:
- docs/getting-started.md (draft)
- 4 API documentation stubs added
- examples/basic-usage.ts created
Verify scaffolded content compiles. If documentation was generated, verify:
harness skill run harness-dx -- Primary command for running the DX audit.harness validate -- Run after scaffolding documentation to verify project health.Glob -- Used to locate README files, documentation directories, example folders, and API docs.Grep -- Used to extract exported symbols, find documentation comments, and locate code examples in markdown.Read -- Used to read documentation files, package manifests, and source files for API extraction.Write -- Used to scaffold missing documentation, generate example files, and create getting-started guides.Bash -- Used to run example validation, check link targets, and execute code snippets.emit_interaction -- Used to present the DX scorecard and request confirmation before generating scaffolded files.--validate-examples is setPhase 1: AUDIT
README score: 5/12 (C)
Present: title, description, license
Missing: installation, quick example, API reference link, contributing
API coverage: 23% (7/30 exports documented)
Time to hello world: ~14 steps (too many, target: <5)
Phase 2: EXTRACT
Code examples found: 3 (all in README)
examples/ directory: empty
Validation: 2/3 examples pass syntax check
Broken: README line 45 references `sdk.connect()` -- renamed to `sdk.init()` in v2.0
Phase 3: SCAFFOLD
Generated: docs/getting-started.md (5-step quickstart)
Generated: examples/basic-usage.ts (demonstrates init, query, cleanup)
Generated: 23 JSDoc stubs from TypeScript signatures
README patches: added installation section, updated broken example
Phase 4: VALIDATE
Links: 8/10 valid (2 broken anchors in README)
Generated examples: syntax valid
DX Scorecard: C -> B (projected after applying changes)
Phase 1: AUDIT
README score: 11/12 (A)
Missing only: contributing guide link
API coverage: 89% (142/160 functions documented)
Sphinx docs at docs/_build/html: present, 45 pages
Time to hello world: ~4 steps (good)
Phase 2: EXTRACT
Code examples: 28 in docs, 12 in examples/
Validation: 37/40 pass (3 use deprecated pandas.append)
Stale examples: 3 files last modified 8 months ago, source changed since
Phase 3: SCAFFOLD
Generated: 18 docstring stubs for undocumented functions
Updated: 3 stale examples to use pandas.concat
Added: CONTRIBUTING.md link to README
Phase 4: VALIDATE
Links: 52/52 valid
DX Scorecard: A (maintained, minor freshness issues resolved)
Phase 1: AUDIT
README score: 7/12 (B)
Present: title, description, installation (cargo install), license, API link
Missing: quick example showing actual CLI usage, contributing
API coverage: N/A (CLI tool, not library)
CLI help text: present via clap derive
Time to hello world: ~6 steps
Phase 2: EXTRACT
Code examples: 2 in README (both installation commands)
examples/ directory: 1 example config file, no runnable examples
Missing: actual usage examples showing command output
Phase 3: SCAFFOLD
Generated: docs/getting-started.md with:
1. cargo install myctl
2. myctl init
3. myctl run --config example.toml
(with expected output at each step)
Generated: examples/basic-config.toml with annotated comments
Generated: README quick-example section with terminal output
Phase 4: VALIDATE
CLI help flags match documented flags: YES
Config example matches current schema: YES
DX Scorecard: B -> A (projected after applying changes)
| Rationalization | Reality |
|---|---|
| "The README has an installation section but it only covers npm — yarn and pnpm users can figure it out. I'll mark installation as complete." | Installation instructions must cover all package managers the project supports. If yarn.lock or pnpm-lock.yaml exists alongside package-lock.json, all three installers must be documented. Partial coverage is scored as partial, not complete. |
"This code example in the README uses the old sdk.connect() API — but it still parses syntactically, so it passes the syntax check." | Stale API references are broken examples regardless of syntax validity. A syntactically valid example that calls a renamed or removed function fails the freshness check and must be flagged as broken in the scorecard. |
"The API function's behavior is complex, but I can infer what it does from the name parseAndValidate — I'll write the docstring stub based on that." | Documentation must be derived from actual source code: type signatures, test files, and existing docs. Inferring behavior from function names produces fabricated documentation. Flag functions that cannot be documented from source as requiring developer-written docs. |
| "The getting-started guide already exists in the wiki — it's not in the repo, but I'll mark the quickstart as present." | Documentation must be locatable from the repository root. A wiki link from the README satisfies the API reference link criterion only if the link is explicit. A guide that requires knowing where the wiki is does not meet the discoverability requirement. |
| "There are 18 undocumented exports — I'll generate all 18 JSDoc stubs and commit them without showing the user first." | Scaffolded documentation must be presented for review before being written. Generated stubs may contain inaccurate parameter descriptions or wrong return type assumptions. Use emit_interaction to present scaffolded content and wait for approval. |
emit_interaction to present scaffolded content and wait for approval.init() accepts a string, but the TypeDoc shows it accepts InitConfig. Which is current?"