Every change happens in a lane, never in the main checkout and never in a bare git worktree add.
lane new <name>, then work in the tree it prints (.lane/trees/<name>). lane clones ignored files by reflink, sonode_modulesand the native build scratch innative/.buildcome along without a reinstall or refetch.lane why <path>before editing a file, and keep what its notes say still true.- Commit. Record a constraint another agent would otherwise rediscover with a
Why: <path> | <note>trailer (see.agents/skills/lane/SKILL.md). Don't use trailers to summarize the change. lane check, and confirm, replace or retire every stale note.lane push, thengh pr create, and squash-merge the PR.- In the main checkout:
git pull --ff-only, thenlane prune --dry-run. Prune misses lanes whose PRs were squash-merged, so remove a merged lane withlane rm <name>.
npm run dev-app builds and launches the one dev copy of the app; see docs/build.md. Peekaboo is vendored: edit native/vendor/Peekaboo directly, and see native/vendor/README.md. Run its Swift tests only through npm run peekaboo-test with a narrow --filter, since they hold the real ~/.peekaboo locks.