git-reaper
git-reaper reaps structured knowledge from repositories: it clones,
gathers, concatenates, and packs the contents of a git repo (or a plain
directory) into clean, portable artifacts. Library first; the CLI is a thin
adapter over git_reaper.core.
Install
uv tool install git-reaper # or: pip install git-reaper
Both reaper and git-reaper land on your PATH (the long form is the
fallback if the REAPER DAW already owns the short one).
Quick start
# concatenate every markdown file in a repo into one artifact
reaper harvest https://github.com/Textualize/rich -o RICH.md
# map a folder, any folder
reaper limbs . --sizes --lines
# pack a repo for a model, then raise it back from the artifact
reaper conjure . --sha256 -o PACKED.md
reaper reanimate PACKED.md --out risen/ --verify
# size the crypt and list the unfinished business
reaper census .
reaper unfinished . --age
# scan the whole history for committed secrets (one-line CI gate)
reaper exhume . --fail-on any
# is this thing alive?
reaper pulse
Behavior you can rely on
- Artifacts to stdout (or
--out); narration to stderr. Piping is always safe. - Deterministic output. Same repo state + same flags = byte-identical artifact (only the provenance timestamp moves).
- Provenance by default. Every artifact opens with source, ref/sha, timestamp, tool version, and the exact invocation.
- Ignore rules honored.
.gitignore+.reaperignore+--excludeglobs;.gitis never reaped. - Caps with receipts. Size caps and binary detection skip files loudly, never silently.
- Published schemas. Every JSON-emitting command prints its JSON schema
with
--schema. - No telemetry. The dead tell no tales.