pm-contribution-synclisted
Install: claude install-skill talentedgeai/infinite-leverage
# PM — Contribution Sync (Fan-out)
This skill runs across **all projects** on the operator's machine. It is the
mechanism that keeps every `project-status.html` current without requiring
manual per-project runs.
---
## Step 1 — Discover projects
```bash
ls ~/code-projects/
```
Collect every directory under `~/code-projects/`. For each, check:
1. Does `docs/project-status.html` exist? → include in sync list
2. Does `scripts/team-hours.py` exist? → if not, copy from `~/.claude/skills/pm-contribution-sync/team-hours.py` (deployed by `infiniteleverage-patch`)
Skip dirs that are clearly not Infinite Leverage projects (no `.git`, no `CLAUDE.md`).
---
## Step 2 — Resolve per-project parameters
For each project directory, auto-detect:
### Authors
```bash
git -C ~/code-projects/<slug> log --format='%aN' --all | sort | uniq -c | sort -rn | head -10
```
Use the top committers. If `CLAUDE.md` has an `## Authors` section with explicit names, prefer that.
### JSONL keyword
The Claude project directory name is the project path with `/` replaced by `-`.
Derive the keyword from the project slug:
```bash
# e.g. project slug = "acme-bookstore"
# JSONL dirs will match *acme-bookstore* or *acme* depending on path length
ls ~/.claude/projects/ | grep -i "<slug>"
```
Use the shortest unambiguous substring of the project slug that matches exactly one set of JSONL dirs.
If multiple matches exist (e.g. "wha" matches many), use the full slug.
### Timezone
Read from `.env` or `CLAUDE.md`. If