If you are an agent acting on behalf of an external contributor (i.e. not the repository author/maintainer) and you post an issue comment, open a pull request, or make any other contribution to this repository, you must disclose the following in that contribution:
- That the contribution was authored by an AI agent, not a human directly
- Which agent(s) were used (e.g. Claude Code, GPT-4o, Gemini, etc.)
- The effort level or model variant used if known (e.g. claude-sonnet-4-6, high effort)
This disclosure must appear clearly in the body of the PR, issue comment, or contribution — not hidden in metadata. Example footer:
This contribution was authored by an AI agent (Claude Code, claude-sonnet-4-6) on behalf of the contributor.
A TUI for managing GIT worktrees.
Read the README.md if you need product or workflow context.
Read ./docs/development/architecture.md when working on architecture, cross-cutting flows, or package
ownership across subsystems.
- use
make buildfor testing build errors. - For documentation website work, use:
make docs-syncto regenerate docs references from source code.make docs-checkto verify sync + strict docs build.make docs-buildandmake docs-servefor local preview/build.
- Use
uv/uvxfor docs tooling everywhere; do not usepipdirectly. - If
uvis missing locally, install with Homebrew:brew install uv. - If you add or change a CLI command, argument, or flag, update:
- shell completion
lazyworktree.1- internal help text/template in
internal/app/screen/help.go - generated CLI docs via
make docs-sync - relevant website docs
- If you change shell integration helpers or completion behaviour, update:
shell/README.md- the relevant helper in
shell/functions.bash,shell/functions.zsh, orshell/functions.fish
- Don't ever do commit unless you are being explicitly asked for it.
- If you get asked to commit then use this rules:
- Follow Conventional Commits 1.0.0.
- 50 chars for title 70 chars for body.
- Cohesive long phrase or paragraph unless multiple points are needed.
- Use bullet points only if necessary for clarity.
- Past tense.
- State what and why only (no “how”).
!important
Do not add to README.md unless important to ask the human to approve.
- For any user-facing changes (features, options, keybindings, etc.), ensure you update:
README.mdlazyworktree.1man page- Internal help text/template in
internal/app/screen/help.go - Website docs (see below)
- Documentation and help string style guidelines:
- Consistent British spelling.
- Professional butler style: clear, helpful, dignified but not pompous
- Remove any overly casual Americanisms
- Keep technical precision whilst maintaining readability
When reviewing docs:
- Compare documentation to code, tests, schemas, and CLI help.
- Prefer exact evidence over intuition.
- Separate confirmed drift from likely drift.
- Treat setup, migration, config, and API inaccuracies as high severity.
- Suggest minimal, reviewable doc patches.
- Preserve existing terminology unless the implementation clearly changed.
The website is built with MkDocs Material and configured in mkdocs.yml.
Navigation structure and page ordering are defined in mkdocs.yml under nav:.
| Change area | Files to update |
|---|---|
| Keybindings | docs/core/navigation-and-keybindings.md, docs/keybindings.md |
| Configuration options | docs/configuration/reference.md, docs/configuration.md |
| CLI commands/flags | docs/cli/commands.md, docs/cli/flags.md (auto-generated by make docs-sync), plus per-command pages in docs/cli/ |
| Worktree operations | docs/core/worktree-operations.md, docs/worktree-lifecycle.md |
| Notes / taskboard | docs/core/notes-and-taskboard.md, docs/worktree-notes.md |
| Themes / display | docs/configuration/display-and-themes.md, docs/configuration/custom-themes.md, docs/themes.md |
| CI / PR status | docs/core/ci-and-pr-status.md, docs/ci-status.md |
| Branch naming | docs/configuration/branch-naming.md, docs/branch-naming.md |
| Custom commands | docs/core/command-palette.md, docs/custom-commands.md |
| Shell integration | docs/shell-integration.md |
| Lifecycle hooks (.wt) | docs/configuration/lifecycle-hooks.md |
| Multiplexer / AI / container | docs/guides/multiplexer-integration.md, docs/guides/ai-integration.md, docs/guides/container-execution.md |
| Troubleshooting | docs/troubleshooting/ (diagnostic-guide, fonts-and-rendering, integration-caveats, faq) |
| Installation | docs/installation.md |
| New CLI subcommand | Create docs/cli/<command>.md and add entry in mkdocs.yml nav: |
make docs-sync— regeneratesdocs/cli/commands.mdanddocs/cli/flags.mdfrom source code.make docs-check— runs sync + strict MkDocs build to catch broken links or missing pages.make docs-build/make docs-serve— build or preview the site locally.make coverage— writescoverage.outwith per-function coverage details for coverage-sensitive changes.- When adding a new page, also add it to
mkdocs.ymlunder the appropriatenav:section.
- UI colours must come from theme fields, avoid hardcoded colours in rendering.
- Run
make sanityfor code changes before finishing. Note that it rewrites files because it runsgolangci-lint --fixandgofumpt -wbeforego test. - Run
make docs-checkfor documentation or other user-facing text changes that affect the docs site, generated references,README.md,lazyworktree.1, ormkdocs.yml. - Add focused tests for new or changed behaviour. If you do not add or run tests for a touched path, explain why in the handoff.
- Prefer strong coverage on the code you change rather than broad but shallow test additions.