research-project-initlisted
Install: claude install-skill 0jg/skills
# Research Project Init Skill
## Toolchain
### Python
| Tool | Role |
|---|---|
| `uv` | Package and environment management — always; never pip, conda, or poetry |
| `ruff` | Linting and formatting |
| `ty` | Type checking |
| `pytest` | Testing |
| `pre-commit` | Local enforcement of ruff and ty before commit |
| GitHub Actions | CI: ruff, ty, pytest on every push and PR |
| Git LFS | Large file storage for data files |
| W&B | Experiment tracking (optional — ask at init time) |
### Rust
| Tool | Role |
|---|---|
| `cargo` | Build, test, and dependency management — always |
| `rustfmt` | Formatting (via `cargo fmt`) |
| `clippy` | Linting (via `cargo clippy -- -D warnings`) |
| `cargo test` | Testing |
| GitHub Actions | CI: fmt, clippy, test on every push and PR |
| Git LFS | Large file storage for data files |
### Mixed projects (Python + Rust)
Both toolchains are active. Python bindings to Rust are handled via `maturin` and
`PyO3`. The Python package wraps the Rust crate; `uv` manages the Python environment.
---
## Bootstrap forked or existing repos
When the human opens a repo that is already populated (forked, cloned, or
otherwise pre-existing) but lacks the Claude Code infrastructure, skip the
full scaffold and run only the bootstrap procedure below. **This procedure
must be run at session start on any forked repo that does not already have
`.claude/hooks/pre-commit-gate.sh`.**
### B1 — Detect what is missing
Check each of the following. Only create what doe