Repository navigation
Contributing
Make your first change, from clone to a passing presubmit. The full guide, with every convention, is CONTRIBUTING.md.
You need Go 1.25+, Node 22+, Git and golangci-lint v2.
npm install
npx playwright install chromium
npm testnpm install also installs a pre-push hook that runs the presubmit.
Press F5 in VS Code. It builds the daemon and the extension and opens a second window on the sample repos in
testdata/workspace/.
Architecture Overview says which process owns what; the code map (Daemon, Extension Host, Webview) says which file. The Invariants are the rules a change must not break.
Put each test in the cheapest layer that can prove the behaviour, and tag it with what it proves:
// @covers op:since diag:unclosed_paren. See Testing.
| Change | Also update |
|---|---|
| A cross-process message | Protocol schema first |
| A decision someone might question | A new ADR (Decisions) |
| An operator | Its card on the reference page, and its row on Query Language |
| A diagnostic | Its entry on the [[Error index |
| A setting or command | Settings and Commands |
| Anything user-visible |
CHANGELOG.md under Unreleased |
| A screen's behaviour | Its @covers screen:… tests, and its screen block on the page that documents it (Screens) |
The wiki is its own repo (spelunk.wiki.git); commit its change alongside the code's.
| Command | Does |
|---|---|
npm test |
Everything CI runs |
npm run presubmit |
Everything CI runs with CI's tool versions, plus the e2e tests and the wiki check; the pre-push hook runs it |
npm run lint |
Every linter, zero warnings allowed |
npm run gen |
Regenerate protocol types after editing the schema |
node scripts/e2e.mjs |
End-to-end tests in a real VS Code, of the version the script pins |
npm run package |
A .vsix for this platform in out/
|
cd daemon && go test ./... |
Daemon tests only |
Next: Testing: the test layers and oracles.
More in the repo: docs/ · CONTRIBUTING.md · Design canvas
Start here
Query reference
- All operators
- Words, regex and logic
- Files and repos
- Definitions and code shape
- Commits and time
- Results and ranking
- Error index
The panel
How it works
Contributing
- Your first change
- Code map: Daemon · Extension Host · Webview
- Testing
- Screens