# Bootstrap

> Installs and fully integrates packages and libraries into a project — including config files, helper modules, and scaffolded templates. Use when the user asks to install, set up, configure, add, or bootstrap a specific package: drizzle, date-fns, oxlint, oxfmt or similar. Prefer this over a generic npm install whenever the package has an opinionated setup or requires boilerplate files.

- Skill: `r-portas/bootstrap` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add r-portas/bootstrap`
- Raw SKILL.md: https://api.skillmd.com/api/skills/r-portas/bootstrap/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: r-portas (https://skillmd.com/u/r-portas)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/r-portas/bootstrap

---


# Bootstrap

Fully integrate a package into the current project — not just `npm install`, but
config files, wrapper modules, and any scaffolded boilerplate.

## Steps

1. Identify which package is being bootstrapped from the user's request
2. **Read the reference file** using the `Read` tool before writing any code — do not rely on memory or training data
3. Follow the reference file's instructions exactly — **do not delegate to other skills** (e.g. `update-config`) for steps covered by the reference; execute them directly yourself
4. If no reference file exists for the requested package, consult the `preferred-npm-packages` skill for stack defaults (runtime, package manager, etc.), then install and configure using the package's official docs. Prefer the simplest setup that fits the existing codebase — don't over-engineer.

## Critical rules

- **Never inline hook commands in settings JSON.** When the reference defines a shell script (e.g. `.claude/hooks/format.sh`), create that file and reference it from settings — do not collapse the logic into a one-liner `command` string.
- **Use `$CLAUDE_PROJECT_DIR` for project-relative paths** in hook scripts, not hardcoded absolute paths.
- **Use `node_modules/.bin/<tool>` for local binaries** in hook scripts, not `bunx`/`npx` — it's faster and avoids network calls.
- **Pipe-test every hook script** before writing it to settings: `echo '<json>' | .claude/hooks/script.sh` and verify exit 0 and the expected side effect.

## Packages

| Package               | Reference                                                                  |
| --------------------- | -------------------------------------------------------------------------- |
| drizzle               | [references/drizzle.md](references/drizzle.md)                             |
| date-fns              | [references/date-fns.md](references/date-fns.md)                           |
| oxlint + oxfmt        | [references/oxlint-oxfmt.md](references/oxlint-oxfmt.md)                   |
| react-testing-library | [references/react-testing-library.md](references/react-testing-library.md) |

