Thanks for your interest in contributing. This document covers the essentials.
Before changing product-facing behavior or docs, read these first:
Current product frame:
git-mindis a Git-native semantic intelligence layer for software repositories- current work should be judged against low-input semantic bootstrap, provenance-backed query, and living-map upkeep
- personal cognition tooling belongs in
think, not here
Git Mind officially uses IBM Design Thinking to guide product work.
Before proposing substantial product or workflow changes, identify:
- the sponsor user
- the job to be done
- the Hill this work moves, or the supporting lane it strengthens
- the playback evidence that would prove progress
Canonical planning references:
Git Mind uses a design-to-test delivery cycle.
For substantial work:
- write or update the relevant design artifact
- make the acceptance criteria explicit
- translate those acceptance criteria into failing tests
- implement until the tests are green
- run a playback / retrospective and capture backlog follow-ups
- update README.md if user-facing reality changed
- open the PR, land it, and capture review-cycle learnings back into the backlog
This is not just for happy paths. Tests should cover edge cases, failure modes, and fuzz/stress behavior when the design risk justifies it.
GitHub issues are the execution backlog. GitHub milestones are not the primary planning surface for this repository.
- Node.js >= 22.0.0
- Git
- npm access to install published dependencies, including
@git-stunts/git-warp
git clone https://github.com/neuroglyph/git-mind.git
cd git-mind
npm install
npm test- Create a branch from
main(or the current development branch) - For substantial work, start from a design artifact and acceptance criteria
- Add or update failing tests before implementation when behavior is changing
- Make your changes
- Run the tests:
npm test - Commit using Conventional Commits:
feat:— new featurefix:— bug fixdocs:— documentation onlychore:— maintenance, toolingrefactor:— code change that neither fixes a bug nor adds a featuretest:— adding or updating tests
- Open a pull request
Follow the conventional commit format:
type(scope): short description
Longer explanation if needed.
Refs #issue-number
Every commit should reference a GitHub issue. If one doesn't exist, create it.
- Plain JavaScript with JSDoc type annotations (no TypeScript)
- ES modules (
import/export) - Format with Prettier:
npm run format - Lint with ESLint:
npm run lint
Tests use vitest. Run them with:
npm test # single run
npm run test:watch # watch modeTesting doctrine:
- tests are the executable form of design acceptance criteria
- cover golden paths, edge cases, failure cases, and fuzz/stress behavior where warranted
- prefer repository-shaped fixtures for repository-shaped behavior
- avoid copying
mkdtemp + git init + configboilerplate across suites when a shared fixture helper would do better
Canonical fixture guidance lives in docs/design/repo-fixture-strategy.md. The intended direction is a fluent repo builder with reusable base repos and scenario overlays.
bin/git-mind.js — CLI entry point
src/
graph.js — WarpGraph wrapper (init, load, save)
edges.js — Edge CRUD with types + confidence
views.js — Observer view definitions and rendering
hooks.js — Post-commit directive parser
cli/
commands.js — CLI command implementations
format.js — Terminal output formatting
index.js — Public API exports
test/
graph.test.js — Graph lifecycle tests
edges.test.js — Edge CRUD tests
views.test.js — View filtering tests
hooks.test.js — Directive parsing tests
By contributing, you agree that your contributions will be licensed under Apache-2.0.