← ClaudeAtlas

pm-contribution-synclisted

Fan-out skill: discovers every project under ~/code-projects/, runs scripts/team-hours.py for each, updates the #contributors table and #pulse chart in each project's docs/project-status.html, and writes a scripts/contribution-snapshot.json per project for hub aggregation. Respects the three-basis methodology and all editorial rules from docs/assessments/team-hours-methodology.md.
talentedgeai/infinite-leverage · ★ 0 · Testing & QA · score 62
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