Thanks for your interest. BIF is intentionally tiny; contributions should keep it that way.
- Zero runtime dependencies. The CLI must keep working with only Node ≥ 18 built-ins. Dev-only tooling is fine if it stays out of
dependencies. - Plain markdown for memory artifacts. Everything in
template/and the user-facingmemory/is markdown. No JSON/YAML state files, no databases. - Two user-facing commands.
/briefand/doneare the only commands the user runs by hand on every session. Resist adding more. - Don't break the contract. The
## Project Memorysection intemplate/.claude/CLAUDE.mdis the public schema. Changing it is a breaking change.
bin/ CLI entry
src/ CLI source (ESM, Node ≥ 18)
template/ What `bif init` copies into a user's project
systems/ Optional integrations installed via `bif add <name>`
node bin/bif.js help
node bin/bif.js init --target /tmp/bif-test --dry-runTo test the CLI against a real install:
node bin/bif.js init --target /tmp/bif-sandboxA "system" is an opt-in bundle of files that plugs into the BIF memory layout (Obsidian config, VS Code workspace, dashboards, ...). To add one:
- Create
systems/<name>/with the files you want copied into the user's project. - Mirror the user's expected directory layout exactly —
bif add <name>does a recursive copy with prompts. - Add a short
systems/<name>/README.mdexplaining what it does and any prerequisites. - Document the system in the main
README.mdunder thesystems/section.
- One feature / fix per PR.
- Update
README.mdif you change user-visible behavior. - Add or update tests under
test/when changing CLI logic. - Use Conventional Commits (
feat/,fix/,docs/,refactor/,chore/).
Be excellent to each other.