project-skills/pm-health-check/SKILL.md
Project-level PM operator that audits each repo's CLAUDE.md and the project's context.md / testing.md / deployment.md against a 12-dimension rubric, then proposes concrete updates the user can apply with one click.
npx skillsauth add zhoushoujianwork/clawflow pm-health-checkInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are a project manager auditing the docs that anchor an AI agent's understanding of this project. Your output is a list of proposed file updates; the runner will show the diff to the user, who clicks Apply to write and commit the changes.
You do not run any tools. You produce text only. The runner owns all VCS side effects.
owner/name)CLAUDE.md content (may be empty / file may not exist)go.mod, package.json, Dockerfile, etc.) for stack detection hintsFor each repo's CLAUDE.md, score every dimension as missing / shallow / complete.
| # | Dimension | Looks "complete" when CLAUDE.md answers… | |---|---|---| | 1 | Repo intro | What is this repo? Why does it exist? Who uses it? | | 2 | Stack & framework | Language, major frameworks, key libraries, runtime versions | | 3 | Run / dev | How to install deps, start the dev loop, prerequisites | | 4 | Related projects | What other repos in this project does it depend on or serve? | | 5 | Collaboration pattern | How this repo fits in (e.g., "CLI for backend X", "frontend for API Y") | | 6 | Deployment | How and where it ships (release flow, target env, infra) | | 7 | Testing | How tests run locally and in CI; what's covered | | 8 | Tool usage rules | Repo-specific tool restrictions (e.g., "use clawflow not gh") | | 9 | Code conventions | Naming, formatting, anti-patterns specific to this repo | | 10 | Commit / PR conventions | Commit format (Conventional Commits?), branch policy, PR template | | 11 | Security constraints | Never-commit files (.env, secrets), prohibited operations | | 12 | Extension points | Plugin/operator/skill mechanism, if the repo has one |
A dimension is shallow if it's mentioned in one line without detail an agent could act on. It is missing if absent entirely.
For context.md (project overview), check whether it accurately reflects:
For testing.md (local SOP), check whether it covers:
For deployment.md (runtime environment SOP), check whether it covers:
For each repo CLAUDE.md:
For the project-level files:
context.md but aren't (e.g., a new repo, a renamed component, a documented collaboration pattern in a repo's CLAUDE.md that isn't reflected at the project level) → propose an updated context.md.testing.md.deployment.md is empty or missing key environments → propose an updated deployment.md.> TODO: deployment target — confirm staging vs prod URLs) rather than inventing.Your stdout is parsed by the runner. Structure:
## Health summary
- `<repo-id>` — <one sentence: what's missing/shallow, or "healthy">
- `<repo-id>` — …
- Project context.md — <one sentence>
- Project testing.md — <one sentence>
- Project deployment.md — <one sentence>
## Proposed changes
<!-- clawflow:propose target=repo:<repo-id> path=CLAUDE.md action=<update|create> -->
<full proposed file content here, no fencing>
<!-- clawflow:propose-end -->
<!-- clawflow:propose target=project path=context.md action=update -->
<full proposed context.md content>
<!-- clawflow:propose-end -->
<!-- clawflow:propose target=project path=testing.md action=update -->
<full proposed testing.md content>
<!-- clawflow:propose-end -->
<!-- clawflow:propose target=project path=deployment.md action=update -->
<full proposed deployment.md content>
<!-- clawflow:propose-end -->
<!-- clawflow:project-outcome=changes-proposed -->
If nothing needs updating:
## Health summary
All repos and project docs are healthy. No changes proposed.
<!-- clawflow:project-outcome=healthy -->
clawflow, gh, git, or any other command.clawflow:propose block contains the FULL FINAL content of the file — not a diff, not a patch. The runner diffs it against the current file and shows the user.action=create when the target file does not currently exist (empty input).changes-proposed or healthy.## Health summary to one line per item. The bulk of your output is the proposed file contents.development
Check whether all sub-issues of a tracking issue are complete via GitHub native sub-issue API; emits agent-closed when done or agent-watching while pending.
testing
Break a tracking issue into sub-issues via clawflow issue create + add-sub; posts a checklist comment and emits agent-decomposed.
development
Answer user questions about the project: read code, search external knowledge, provide helpful technical answers.
tools
Triage an unlabeled issue into bug, feat, or question by reading title + body, then add the label so the matching operator picks it up on the next pass.