Thanks for considering a contribution.
git clone git@github.com:woosal1337/stack.git
cd stack
bun install
bun run dev -- --help- Open an issue first for anything larger than a tweak. A 3-line description of the problem and your proposed direction is enough.
- Branch off
main. Keep PRs small and focused. - Before pushing, run:
bun run typecheck bun test bun run build - Conventional Commits in commit messages (
feat:,fix:,chore:,docs:,refactor:,test:). - PR description should answer: what changed, why, and how do I verify it locally.
- TypeScript, strict mode. Avoid
any. Prefer narrow types and discriminated unions. - Scanners are pure and read-only. Each scanner returns
{ tool, kind, items, warnings }. Never throw on malformed user files — surface a warning and return what you can. - Comments explain why, not what. Default to writing none. Add one when the reason isn't obvious from the code.
- No new runtime dependencies unless they're tiny, MIT/BSD licensed, and pull their weight. Current deps:
mri,picocolors,smol-toml. - One scanner per file. New tool → new directory under
src/scanners/<tool>/, wired up insrc/scanners/index.ts. - No telemetry, no network calls. If a feature would need one, open an issue to discuss first.
- Add the data-source path to
src/paths.ts. - Create the scanner under
src/scanners/<tool>/<kind>.ts. Mirror the shape of an existing one. - Add it to
scanAll()insrc/scanners/index.ts. - If the kind needs a different table layout, extend
COLUMNS_*insrc/render/table.ts. - Add a smoke test in
test/scanners.test.ts— verifying it returns the right shape against an empty$HOMEis enough.
Maintained by the project owner. Versions follow SemVer.