Release he-maintainer v1

This commit is contained in:
2026-05-03 22:18:00 +08:00
parent ee4171e530
commit e35c6088d2
3 changed files with 95 additions and 32 deletions

View File

@@ -7,17 +7,33 @@ Use this reference when the repository contains multiple apps, packages, crates,
- workspace root vs package roots - workspace root vs package roots
- shared libraries vs deployable apps - shared libraries vs deployable apps
- root-level commands vs package-level commands - root-level commands vs package-level commands
- ownership boundaries between packages - ownership or responsibility boundaries between packages
- which decisions are global vs package-local
## Common risks ## Common risks
- commands at the root may not validate a specific package well - root-level commands may not validate a specific package well
- agents may edit shared packages when a local override is safer - agents may edit shared packages when a package-local change is safer
- build, lint, and test commands may vary by package manager and workspace tool - build, lint, and test commands may vary by package manager, workspace tool, or package type
- one package may require a spec, ADR, or risk note even when the rest of the repo does not
- status can become ambiguous when several packages move in parallel
## Good harness patterns ## Good harness patterns
- include a short workspace map - include a short workspace map
- show how to run commands for one package - show how to run commands for one package or crate
- define allowed scope for a task - define allowed scope for a task
- prefer targeted validation for the touched package first - prefer targeted validation for the touched package first
- record cross-package rules in a durable place
- use specs or status docs for multi-package migrations or coordinated refactors
## Artifact guidance
In monorepos, keep the top-level working guide short. Push detail into focused supporting artifacts when needed:
- project map for workspace layout and boundaries
- task contracts for per-package scope
- ADRs for cross-cutting decisions
- status docs for migrations spanning several packages
Do not duplicate every package's README into the harness.

View File

@@ -5,34 +5,44 @@ Use this when asked to audit or score a repository's harness quality.
## Dimensions ## Dimensions
### 1. Project map clarity ### 1. Project map clarity
- strong: key directories and entrypoints are documented and current - strong: key directories, entrypoints, and subsystem boundaries are documented and current
- partial: some structure is documented but stale or incomplete - partial: some structure is documented but stale, shallow, or incomplete
- weak: little or no useful repo map exists - weak: little or no useful repo map exists
### 2. Validation commands ### 2. Validation commands
- strong: build, test, lint, and typecheck are clear and runnable - strong: build, test, lint, typecheck, or equivalent validation commands are clear and runnable
- partial: some commands exist but are incomplete or ambiguous - partial: some commands exist but are incomplete, stale, or ambiguous
- weak: commands are missing, stale, or unverified - weak: commands are missing, misleading, or unverified
### 3. Fast feedback ### 3. Fast feedback
- strong: targeted checks or quick tests exist - strong: targeted package-, crate-, app-, or feature-scoped checks exist
- partial: only slower validation exists - partial: only slower validation paths exist, or quick checks are incomplete
- weak: no obvious quick validation path - weak: no obvious fast validation path exists
### 4. Task templates ### 4. Task contract quality
- strong: reusable templates exist for common work types - strong: reusable task contracts or templates define scope, constraints, validation, and acceptance criteria
- partial: ad hoc instructions exist but are inconsistent - partial: ad hoc task instructions exist but are inconsistent or underspecified
- weak: every task must be reinvented - weak: every task must be reinvented from scratch
### 5. Guardrails ### 5. Guardrails
- strong: high-risk areas and forbidden changes are explicit - strong: high-risk areas, forbidden changes, generated-file boundaries, and slow validations are explicit
- partial: some constraints exist but are vague - partial: some constraints exist but are vague or fragmented
- weak: almost no constraints are documented - weak: almost no meaningful constraints are documented
### 6. Doc-code alignment ### 6. Architecture decision durability
- strong: harness docs match the current repo layout and commands - strong: durable decisions are easy to find in ADRs, accepted docs, or equivalent records
- partial: mixed accuracy - partial: some decisions are documented but scattered, stale, or inconsistently applied
- weak: obviously stale or misleading - weak: important architecture or workflow decisions must be rediscovered from chat or code archaeology
### 7. Failure feedback loop quality
- strong: repeated AI or implementation failures are converted into durable harness, validation, or CI improvements
- partial: some failures are documented, but fixes remain mostly conversational or one-off
- weak: the same classes of failure recur without system updates
### 8. Doc-code alignment
- strong: harness docs match the current repo layout, commands, and constraints
- partial: mixed accuracy with some stale sections
- weak: obviously stale or misleading guidance dominates
## Output format ## Output format
@@ -41,11 +51,13 @@ Keep the score compact. Example:
- project map clarity: partial - project map clarity: partial
- validation commands: strong - validation commands: strong
- fast feedback: weak - fast feedback: weak
- task templates: weak - task contract quality: weak
- guardrails: partial - guardrails: partial
- architecture decision durability: weak
- failure feedback loop quality: weak
- doc-code alignment: partial - doc-code alignment: partial
Top priorities: Top priorities:
1. Add a fast unit test or package-scoped validation command 1. Add a targeted validation command for the touched package or crate
2. Refresh AGENTS.md directory map 2. Record one durable architecture decision in an ADR or accepted design note
3. Document forbidden change areas 3. Turn the most common repeated failure into a task-contract, guardrail, or CI rule

View File

@@ -5,16 +5,51 @@ repo_root="${1:-.}"
cd "$repo_root" cd "$repo_root"
echo "== Harness files ==" echo "== Harness files =="
find . -maxdepth 3 \( -name 'AGENTS.md' -o -name 'CLAUDE.md' -o -name 'AI_GUIDE.md' \) | sort || true find . -maxdepth 4 \( \
-name 'AGENTS.md' -o \
-name 'CLAUDE.md' -o \
-name 'AI_GUIDE.md' -o \
-path '*/ai/*.md' -o \
-path '*/ai/*/*.md' -o \
-path '*/docs/adr/*.md' -o \
-path '*/docs/specs/*.md' \
\) | sort || true
echo echo
echo "== Stack markers ==" echo "== Stack markers =="
find . -maxdepth 3 \( -name 'package.json' -o -name 'pnpm-workspace.yaml' -o -name 'turbo.json' -o -name 'Cargo.toml' -o -name 'go.mod' -o -name 'pyproject.toml' -o -name 'requirements.txt' \) | sort || true find . -maxdepth 4 \( \
-name 'package.json' -o \
-name 'pnpm-workspace.yaml' -o \
-name 'turbo.json' -o \
-name 'Cargo.toml' -o \
-name 'go.mod' -o \
-name 'pyproject.toml' -o \
-name 'requirements.txt' \
\) | sort || true
echo echo
echo "== CI files ==" echo "== CI files =="
find . -maxdepth 4 \( -path '*/.github/workflows/*' -o -path '*/.gitlab-ci.yml' \) | sort || true find . -maxdepth 5 \( -path '*/.github/workflows/*' -o -path '*/.gitlab-ci.yml' \) | sort || true
echo echo
echo "== Common test/build/lint config ==" echo "== Common test/build/lint config =="
find . -maxdepth 3 \( -name 'tsconfig.json' -o -name 'vitest.config.*' -o -name 'jest.config.*' -o -name 'playwright.config.*' -o -name 'tox.ini' -o -name 'noxfile.py' -o -name '.golangci*' -o -name 'rust-toolchain.toml' -o -name 'Makefile' \) | sort || true find . -maxdepth 4 \( \
-name 'tsconfig.json' -o \
-name 'vitest.config.*' -o \
-name 'jest.config.*' -o \
-name 'playwright.config.*' -o \
-name 'tox.ini' -o \
-name 'noxfile.py' -o \
-name '.golangci*' -o \
-name 'rust-toolchain.toml' -o \
-name 'Makefile' \
\) | sort || true
echo
echo "== Likely status / roadmap files =="
find . -maxdepth 4 \( \
-iname '*roadmap*.md' -o \
-iname '*status*.md' -o \
-iname '*plan*.md' -o \
-iname '*vision*.md' \
\) | sort || true