dotbrain 0.6.0__tar.gz → 0.7.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. {dotbrain-0.6.0 → dotbrain-0.7.0}/PKG-INFO +73 -27
  2. {dotbrain-0.6.0 → dotbrain-0.7.0}/README.md +72 -26
  3. dotbrain-0.7.0/docs/.vitepress/config.mts +179 -0
  4. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/.vitepress/theme/style.css +6 -0
  5. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/AGENTS.md +6 -0
  6. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/README.md +2 -0
  7. dotbrain-0.7.0/docs/agent-team.md +269 -0
  8. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/brain-site-configuration.md +2 -2
  9. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/glossary.md +1 -1
  10. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/index.md +2 -0
  11. dotbrain-0.7.0/docs/prompts.md +326 -0
  12. dotbrain-0.7.0/docs/public/assets/banner-dark.png +0 -0
  13. dotbrain-0.7.0/docs/public/assets/banner-light.png +0 -0
  14. dotbrain-0.7.0/docs/public/assets/how-it-works-dark.png +0 -0
  15. dotbrain-0.7.0/docs/public/assets/how-it-works-dark.svg +51 -0
  16. dotbrain-0.7.0/docs/public/assets/how-it-works-light.png +0 -0
  17. dotbrain-0.7.0/docs/public/assets/how-it-works-light.svg +51 -0
  18. dotbrain-0.7.0/docs/public/assets/workflow-dark.png +0 -0
  19. dotbrain-0.7.0/docs/public/assets/workflow-dark.svg +60 -0
  20. dotbrain-0.7.0/docs/public/assets/workflow-light.png +0 -0
  21. dotbrain-0.7.0/docs/public/assets/workflow-light.svg +60 -0
  22. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/session-context.md +8 -0
  23. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/skills.md +2 -2
  24. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/workflow.md +15 -5
  25. dotbrain-0.7.0/docs/zh/agent-team.md +214 -0
  26. dotbrain-0.7.0/docs/zh/architecture.md +135 -0
  27. dotbrain-0.7.0/docs/zh/beads-backend.md +160 -0
  28. dotbrain-0.7.0/docs/zh/brain-site-configuration.md +102 -0
  29. dotbrain-0.7.0/docs/zh/brain-site.md +51 -0
  30. dotbrain-0.7.0/docs/zh/cli-reference.md +383 -0
  31. dotbrain-0.7.0/docs/zh/configuration.md +142 -0
  32. dotbrain-0.7.0/docs/zh/getting-started.md +302 -0
  33. dotbrain-0.7.0/docs/zh/glossary.md +161 -0
  34. dotbrain-0.7.0/docs/zh/index.md +168 -0
  35. dotbrain-0.7.0/docs/zh/learning.md +108 -0
  36. dotbrain-0.7.0/docs/zh/prompts.md +308 -0
  37. dotbrain-0.7.0/docs/zh/session-context.md +85 -0
  38. dotbrain-0.7.0/docs/zh/skills.md +104 -0
  39. dotbrain-0.7.0/docs/zh/troubleshooting.md +101 -0
  40. dotbrain-0.7.0/docs/zh/why-dotbrain.md +88 -0
  41. dotbrain-0.7.0/docs/zh/wiring.md +166 -0
  42. dotbrain-0.7.0/docs/zh/workflow.md +161 -0
  43. {dotbrain-0.6.0 → dotbrain-0.7.0}/pyproject.toml +1 -1
  44. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/__init__.py +1 -1
  45. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/resources/agents/codex/researcher.toml +6 -6
  46. dotbrain-0.7.0/src/dotbrain/resources/agents/codex/reviewer.toml +82 -0
  47. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/resources/agents/codex/verifier.toml +11 -1
  48. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/resources/agents/codex/worker.toml +8 -5
  49. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/resources/templates/brain/DOTBRAIN.md +6 -0
  50. dotbrain-0.6.0/docs/.vitepress/config.mts +0 -104
  51. dotbrain-0.6.0/docs/public/assets/apple-touch-icon-dark.png +0 -0
  52. dotbrain-0.6.0/docs/public/assets/favicon-dark-16.png +0 -0
  53. dotbrain-0.6.0/docs/public/assets/favicon-dark-48.png +0 -0
  54. dotbrain-0.6.0/docs/public/assets/favicon-light-16.png +0 -0
  55. dotbrain-0.6.0/docs/public/assets/favicon-light-48.png +0 -0
  56. dotbrain-0.6.0/docs/public/assets/how-it-works-dark.svg +0 -46
  57. dotbrain-0.6.0/docs/public/assets/how-it-works-light.svg +0 -46
  58. dotbrain-0.6.0/docs/public/assets/icon-dark-192.png +0 -0
  59. dotbrain-0.6.0/docs/public/assets/icon-dark-512.png +0 -0
  60. dotbrain-0.6.0/docs/public/assets/icon-light-192.png +0 -0
  61. dotbrain-0.6.0/docs/public/assets/icon-light-512.png +0 -0
  62. dotbrain-0.6.0/docs/public/assets/lockup-horizontal-dark.png +0 -0
  63. dotbrain-0.6.0/docs/public/assets/lockup-horizontal-light.png +0 -0
  64. dotbrain-0.6.0/docs/public/assets/lockup-stacked-dark-512.png +0 -0
  65. dotbrain-0.6.0/docs/public/assets/lockup-stacked-dark.png +0 -0
  66. dotbrain-0.6.0/docs/public/assets/lockup-stacked-light-512.png +0 -0
  67. dotbrain-0.6.0/docs/public/assets/lockup-stacked-light.png +0 -0
  68. dotbrain-0.6.0/docs/public/assets/mark-dark-1024.png +0 -0
  69. dotbrain-0.6.0/docs/public/assets/mark-light-1024.png +0 -0
  70. dotbrain-0.6.0/docs/public/assets/preview.png +0 -0
  71. dotbrain-0.6.0/docs/public/assets/social-dark.png +0 -0
  72. dotbrain-0.6.0/docs/public/assets/social-light.png +0 -0
  73. dotbrain-0.6.0/src/dotbrain/resources/agents/codex/reviewer.toml +0 -65
  74. {dotbrain-0.6.0 → dotbrain-0.7.0}/.gitignore +0 -0
  75. {dotbrain-0.6.0 → dotbrain-0.7.0}/LICENSE +0 -0
  76. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/.vitepress/theme/Mermaid.vue +0 -0
  77. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/.vitepress/theme/index.ts +0 -0
  78. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/CLAUDE.md +0 -0
  79. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/architecture.md +0 -0
  80. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/beads-backend.md +0 -0
  81. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/brain-site.md +0 -0
  82. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/cli-reference.md +0 -0
  83. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/configuration.md +0 -0
  84. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/getting-started.md +0 -0
  85. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/learning.md +0 -0
  86. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/package-lock.json +0 -0
  87. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/package.json +0 -0
  88. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/public/assets/apple-touch-icon-light.png +0 -0
  89. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/public/assets/favicon-dark-32.png +0 -0
  90. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/public/assets/favicon-light-32.png +0 -0
  91. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/public/assets/lockup-horizontal-dark-1024.png +0 -0
  92. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/public/assets/lockup-horizontal-light-1024.png +0 -0
  93. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/public/assets/mark-dark-512.png +0 -0
  94. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/public/assets/mark-dark.png +0 -0
  95. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/public/assets/mark-light-512.png +0 -0
  96. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/public/assets/mark-light.png +0 -0
  97. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/troubleshooting.md +0 -0
  98. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/why-dotbrain.md +0 -0
  99. {dotbrain-0.6.0 → dotbrain-0.7.0}/docs/wiring.md +0 -0
  100. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/_cli_reference.py +0 -0
  101. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/adopter_repos.py +0 -0
  102. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/asset_cli.py +0 -0
  103. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/assets.py +0 -0
  104. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/beads.py +0 -0
  105. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/bootstrap.py +0 -0
  106. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/brainspaces.py +0 -0
  107. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/cli.py +0 -0
  108. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/config.py +0 -0
  109. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/doctor.py +0 -0
  110. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/hooks.py +0 -0
  111. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/migrate.py +0 -0
  112. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/options.py +0 -0
  113. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/paths.py +0 -0
  114. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/presentation.py +0 -0
  115. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/projects.py +0 -0
  116. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/resource_loader.py +0 -0
  117. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/resources/__init__.py +0 -0
  118. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/resources/config.yaml +0 -0
  119. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/resources/core.yaml +0 -0
  120. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/resources/site/package-lock.json +0 -0
  121. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/resources/site/package.json +0 -0
  122. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/resources/site/vitepress/config.mts +0 -0
  123. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/resources/site/vitepress/theme/DocsOverview.vue +0 -0
  124. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/resources/site/vitepress/theme/HomeTiles.vue +0 -0
  125. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/resources/site/vitepress/theme/LearnOverview.vue +0 -0
  126. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/resources/site/vitepress/theme/Mermaid.vue +0 -0
  127. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/resources/site/vitepress/theme/PageStatus.vue +0 -0
  128. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/resources/site/vitepress/theme/base.ts +0 -0
  129. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/resources/site/vitepress/theme/custom.css +0 -0
  130. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/resources/site/vitepress/theme/empty.css +0 -0
  131. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/resources/site/vitepress/theme/empty.ts +0 -0
  132. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/resources/site/vitepress/theme/index.ts +0 -0
  133. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/resources/templates/brain/AGENTS.md +0 -0
  134. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/resources/templates/brain/adr/README.md +0 -0
  135. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/resources/templates/brain/designs/README.md +0 -0
  136. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/resources/templates/brain/docs/README.md +0 -0
  137. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/resources/templates/brain/project.yaml +0 -0
  138. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/resources/templates/brain/site/configure.md +0 -0
  139. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/resources/templates/brain/site/index.md +0 -0
  140. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/resources/templates/gitignore +0 -0
  141. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/results.py +0 -0
  142. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/site.py +0 -0
  143. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/skills.py +0 -0
  144. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/subagents.py +0 -0
  145. {dotbrain-0.6.0 → dotbrain-0.7.0}/src/dotbrain/workflows.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: dotbrain
3
- Version: 0.6.0
3
+ Version: 0.7.0
4
4
  Summary: Wires project Brainspaces and skills into coding agents.
5
5
  Project-URL: Homepage, https://github.com/arminzou/dotbrain
6
6
  Project-URL: Repository, https://github.com/arminzou/dotbrain
@@ -31,6 +31,8 @@ Description-Content-Type: text/markdown
31
31
 
32
32
  # Dotbrain
33
33
 
34
+ English | [简体中文](README.zh-CN.md)
35
+
34
36
  [![PyPI](https://img.shields.io/pypi/v/dotbrain?style=flat&logo=pypi)](https://pypi.org/project/dotbrain/)
35
37
  [![CI](https://img.shields.io/github/actions/workflow/status/arminzou/dotbrain/ci.yml?branch=main&style=flat&logo=github&label=CI)](https://github.com/arminzou/dotbrain/actions/workflows/ci.yml)
36
38
  [![Python](https://img.shields.io/pypi/pyversions/dotbrain?style=flat&logo=python)](https://pypi.org/project/dotbrain/)
@@ -39,8 +41,14 @@ Description-Content-Type: text/markdown
39
41
 
40
42
  **Private project context for Claude Code and Codex.**
41
43
 
42
- Give each coding agent your project's decisions, vocabulary, and issues. Keep that context
43
- versioned and outside your code repo.
44
+ Dotbrain brings the Dotfiles convention to your project work. Keep your working notes, plans,
45
+ instructions, and selected agent resources in a private home, then wire them into the checkouts
46
+ where you work.
47
+
48
+ Your context stays in local files with its own Git history. The CLI connects your workspace to
49
+ the code repo; the plugin's workflow skills guide how your agent uses and maintains it with you.
50
+
51
+ [https://github.com/user-attachments/assets/540e8945-b8bc-4fc1-ac05-c125bf768fa9](https://github.com/user-attachments/assets/021fc13a-db20-4549-8aab-b5240d289bde)
44
52
 
45
53
  [Documentation](https://arminzou.github.io/dotbrain/) ·
46
54
  [Getting started](https://arminzou.github.io/dotbrain/getting-started) ·
@@ -48,20 +56,27 @@ versioned and outside your code repo.
48
56
 
49
57
  ### Why I built it
50
58
 
51
- I built Dotbrain because my projects often start privately and get shared later. The code can be
52
- shared; the half-formed decisions, roadmap, and rationale need their own home. Mine scattered
53
- across Obsidian, gitignored notes, and agent memory. Every new session meant hunting for context
54
- and explaining the project again. I wanted that thinking versioned, available to both agents,
55
- and connected to the work.
59
+ Global agent instructions describe how I want my agent to behave at user level. Shared repository instructions
60
+ describe how anyone should work on the code. My own reasoning, working notes, and plans for a
61
+ particular project need a private home.
62
+
63
+ Mine were scattered across Obsidian, gitignored notes, and agent memory. Finding that context and
64
+ bringing it into another session took effort. So did making my selected skills and subagents
65
+ available in a new checkout. I built Dotbrain to keep that project workspace together and make
66
+ connecting it to where I work repeatable.
67
+
68
+ Read the story behind Dotbrain: [Dotfiles for Your Repo](https://x.com/i/article/2109385521214390273).
56
69
 
57
70
  ## Is this for you?
58
71
 
59
- Use Dotbrain if you work across agents, sessions, or worktrees and have project context worth
60
- preserving. It gives that context a home you can review and version with Git, separate from the
61
- code you share.
72
+ Use Dotbrain when you need a private project workspace you want to keep developing across
73
+ agents, sessions, or worktrees: context you've built up, plans in progress, and your own
74
+ instructions and selected skills for the work.
75
+
76
+ It works alongside your agent's memory system and other context tools. The workspace is yours;
77
+ you decide which outcomes belong in shared repository docs or public proposals.
62
78
 
63
79
  If a few standing instructions in `AGENTS.md` or `CLAUDE.md` cover your needs, keep it simple.
64
- Dotbrain is a local tool, not a hosted team knowledge base.
65
80
 
66
81
  ## Get started
67
82
 
@@ -99,27 +114,55 @@ the repo to its private Brainspace. Check the result with:
99
114
  dotbrain doctor
100
115
  ```
101
116
 
102
- Start a fresh agent session in the wired repo to load its Brain context.
117
+ Start a fresh agent session in the wired repo to load the Dotbrain convention. It tells the
118
+ agent where to find your project context and how to work with it.
103
119
  See [Getting started](https://arminzou.github.io/dotbrain/getting-started) for manual installation,
104
120
  backups, a second machine, and troubleshooting.
105
121
 
122
+ ### Update
123
+
124
+ Update the plugin and the CLI together. In Claude Code, run `/plugin`, update dotbrain from the
125
+ menu, then `/reload-plugins`. In Codex:
126
+
127
+ ```bash
128
+ codex plugin marketplace upgrade
129
+ codex plugin add dotbrain@dotbrain
130
+ ```
131
+
132
+ Then upgrade the CLI and reconcile your machine and projects:
133
+
134
+ ```bash
135
+ uv tool install dotbrain@latest
136
+ dotbrain bootstrap
137
+ dotbrain refresh --all
138
+ ```
139
+
140
+ Installed the CLI with pipx or pip? Upgrade with that tool instead. See
141
+ [Staying current](https://arminzou.github.io/dotbrain/getting-started#staying-current).
142
+
106
143
  ## How it works
107
144
 
108
145
  Each project has a **Brainspace** under your private dotbrain home, by default `~/dotbrain/`.
109
- It holds the **Brain** (vocabulary, decisions, and designs) and an **execution store**
110
- (issues tracked with [Beads](https://github.com/gastownhall/beads)). Gitignored symlinks connect
111
- the code repo to that Brainspace; the private files are stored outside the code repo.
146
+ It holds the **Brain** (`.brain/`: local Markdown files for project rules, vocabulary, decisions,
147
+ and designs) and an **execution store** (`.beads/`: issues tracked with
148
+ [Beads](https://github.com/gastownhall/beads)). Gitignored symlinks make both available through
149
+ the checkout while their files and history stay outside the code repo.
112
150
 
113
151
  <picture>
114
- <source media="(prefers-color-scheme: dark)" srcset="docs/public/assets/how-it-works-dark.svg">
115
- <source media="(prefers-color-scheme: light)" srcset="docs/public/assets/how-it-works-light.svg">
116
- <img src="docs/public/assets/how-it-works-light.svg" alt="Claude Code and Codex work in the code repo. Gitignored links connect it to a separate private Brainspace holding the Brain and Beads." width="1000">
152
+ <source media="(prefers-color-scheme: dark)" srcset="docs/public/assets/how-it-works-dark.png">
153
+ <source media="(prefers-color-scheme: light)" srcset="docs/public/assets/how-it-works-light.png">
154
+ <img src="docs/public/assets/how-it-works-light.png" alt="Claude Code and Codex work in the code repo. Gitignored links connect it to a separate private Brainspace holding the Brain and Beads." width="1000">
117
155
  </picture>
118
156
 
119
- The plugin's session-start hook loads project context. Its skills guide work when invoked,
120
- and wiring delivers selected skills and subagents into the repo's agent workspaces. Skills and
121
- Claude agents use symlinks; Codex agents use generated, Git-ignored TOML files.
122
- `dotbrain wire` connects worktrees to the same Brainspace through Git metadata.
157
+ Wiring also delivers selected skills and subagents into the repo's agent workspaces, `.claude/`
158
+ and `.codex/`. Skills and Claude agents use symlinks; Codex agents use generated, Git-ignored
159
+ TOML files. Wiring a Git worktree connects it to the main checkout's existing Brainspace, so
160
+ both use the same knowledge and tracker.
161
+
162
+ At session start, the plugin hook supplies `DOTBRAIN.md`, the shared convention. The agent then
163
+ reads the project's private rules and retrieves the context the task needs. Workflow skills
164
+ guide how it consults that context and records what you work out together.
165
+ See [Session context](https://arminzou.github.io/dotbrain/session-context) for the loading sequence.
123
166
 
124
167
  Use `dotbrain projects list` to discover registered projects. Inside a wired checkout,
125
168
  `dotbrain refresh` maintains that checkout and `dotbrain unwire` detaches it while retaining the
@@ -138,8 +181,11 @@ See [Architecture](https://arminzou.github.io/dotbrain/architecture),
138
181
  Every piece of work should leave the next session better informed. Dotbrain's bundled skills
139
182
  carry work from idea to implementation, then return what you learned to the project's context.
140
183
 
141
- **Start from the Brain → explore unknowns → settle decisions → write a design → work and
142
- verify issues → review → return lasting decisions to the Brain.**
184
+ <picture>
185
+ <source media="(prefers-color-scheme: dark)" srcset="docs/public/assets/workflow-dark.png">
186
+ <source media="(prefers-color-scheme: light)" srcset="docs/public/assets/workflow-light.png">
187
+ <img src="docs/public/assets/workflow-light.png" alt="Workflow skills guide work through decisions, design, issues, execution, review, and closure. Discoveries update the active design; lasting decisions return to the Brain for the next initiative." width="880">
188
+ </picture>
143
189
 
144
190
  The loop closes in two places:
145
191
 
@@ -150,8 +196,8 @@ The loop closes in two places:
150
196
  vocabulary in the Brain. The next initiative starts with that knowledge already available.
151
197
 
152
198
  The Brain holds durable knowledge, the design holds current intent, and Beads holds execution
153
- state. Each handoff lives in a document or tracker entry, so another session or agent can pick
154
- up the work without reconstructing it from chat history.
199
+ state. Each handoff lives in a document or tracker entry that another session or agent can
200
+ consult to continue the work.
155
201
 
156
202
  You own the success criteria and the final review decision. Use the full loop when work spans
157
203
  sessions or carries open questions; small changes can use just the steps they need.
@@ -8,6 +8,8 @@
8
8
 
9
9
  # Dotbrain
10
10
 
11
+ English | [简体中文](README.zh-CN.md)
12
+
11
13
  [![PyPI](https://img.shields.io/pypi/v/dotbrain?style=flat&logo=pypi)](https://pypi.org/project/dotbrain/)
12
14
  [![CI](https://img.shields.io/github/actions/workflow/status/arminzou/dotbrain/ci.yml?branch=main&style=flat&logo=github&label=CI)](https://github.com/arminzou/dotbrain/actions/workflows/ci.yml)
13
15
  [![Python](https://img.shields.io/pypi/pyversions/dotbrain?style=flat&logo=python)](https://pypi.org/project/dotbrain/)
@@ -16,8 +18,14 @@
16
18
 
17
19
  **Private project context for Claude Code and Codex.**
18
20
 
19
- Give each coding agent your project's decisions, vocabulary, and issues. Keep that context
20
- versioned and outside your code repo.
21
+ Dotbrain brings the Dotfiles convention to your project work. Keep your working notes, plans,
22
+ instructions, and selected agent resources in a private home, then wire them into the checkouts
23
+ where you work.
24
+
25
+ Your context stays in local files with its own Git history. The CLI connects your workspace to
26
+ the code repo; the plugin's workflow skills guide how your agent uses and maintains it with you.
27
+
28
+ [https://github.com/user-attachments/assets/540e8945-b8bc-4fc1-ac05-c125bf768fa9](https://github.com/user-attachments/assets/021fc13a-db20-4549-8aab-b5240d289bde)
21
29
 
22
30
  [Documentation](https://arminzou.github.io/dotbrain/) ·
23
31
  [Getting started](https://arminzou.github.io/dotbrain/getting-started) ·
@@ -25,20 +33,27 @@ versioned and outside your code repo.
25
33
 
26
34
  ### Why I built it
27
35
 
28
- I built Dotbrain because my projects often start privately and get shared later. The code can be
29
- shared; the half-formed decisions, roadmap, and rationale need their own home. Mine scattered
30
- across Obsidian, gitignored notes, and agent memory. Every new session meant hunting for context
31
- and explaining the project again. I wanted that thinking versioned, available to both agents,
32
- and connected to the work.
36
+ Global agent instructions describe how I want my agent to behave at user level. Shared repository instructions
37
+ describe how anyone should work on the code. My own reasoning, working notes, and plans for a
38
+ particular project need a private home.
39
+
40
+ Mine were scattered across Obsidian, gitignored notes, and agent memory. Finding that context and
41
+ bringing it into another session took effort. So did making my selected skills and subagents
42
+ available in a new checkout. I built Dotbrain to keep that project workspace together and make
43
+ connecting it to where I work repeatable.
44
+
45
+ Read the story behind Dotbrain: [Dotfiles for Your Repo](https://x.com/i/article/2109385521214390273).
33
46
 
34
47
  ## Is this for you?
35
48
 
36
- Use Dotbrain if you work across agents, sessions, or worktrees and have project context worth
37
- preserving. It gives that context a home you can review and version with Git, separate from the
38
- code you share.
49
+ Use Dotbrain when you need a private project workspace you want to keep developing across
50
+ agents, sessions, or worktrees: context you've built up, plans in progress, and your own
51
+ instructions and selected skills for the work.
52
+
53
+ It works alongside your agent's memory system and other context tools. The workspace is yours;
54
+ you decide which outcomes belong in shared repository docs or public proposals.
39
55
 
40
56
  If a few standing instructions in `AGENTS.md` or `CLAUDE.md` cover your needs, keep it simple.
41
- Dotbrain is a local tool, not a hosted team knowledge base.
42
57
 
43
58
  ## Get started
44
59
 
@@ -76,27 +91,55 @@ the repo to its private Brainspace. Check the result with:
76
91
  dotbrain doctor
77
92
  ```
78
93
 
79
- Start a fresh agent session in the wired repo to load its Brain context.
94
+ Start a fresh agent session in the wired repo to load the Dotbrain convention. It tells the
95
+ agent where to find your project context and how to work with it.
80
96
  See [Getting started](https://arminzou.github.io/dotbrain/getting-started) for manual installation,
81
97
  backups, a second machine, and troubleshooting.
82
98
 
99
+ ### Update
100
+
101
+ Update the plugin and the CLI together. In Claude Code, run `/plugin`, update dotbrain from the
102
+ menu, then `/reload-plugins`. In Codex:
103
+
104
+ ```bash
105
+ codex plugin marketplace upgrade
106
+ codex plugin add dotbrain@dotbrain
107
+ ```
108
+
109
+ Then upgrade the CLI and reconcile your machine and projects:
110
+
111
+ ```bash
112
+ uv tool install dotbrain@latest
113
+ dotbrain bootstrap
114
+ dotbrain refresh --all
115
+ ```
116
+
117
+ Installed the CLI with pipx or pip? Upgrade with that tool instead. See
118
+ [Staying current](https://arminzou.github.io/dotbrain/getting-started#staying-current).
119
+
83
120
  ## How it works
84
121
 
85
122
  Each project has a **Brainspace** under your private dotbrain home, by default `~/dotbrain/`.
86
- It holds the **Brain** (vocabulary, decisions, and designs) and an **execution store**
87
- (issues tracked with [Beads](https://github.com/gastownhall/beads)). Gitignored symlinks connect
88
- the code repo to that Brainspace; the private files are stored outside the code repo.
123
+ It holds the **Brain** (`.brain/`: local Markdown files for project rules, vocabulary, decisions,
124
+ and designs) and an **execution store** (`.beads/`: issues tracked with
125
+ [Beads](https://github.com/gastownhall/beads)). Gitignored symlinks make both available through
126
+ the checkout while their files and history stay outside the code repo.
89
127
 
90
128
  <picture>
91
- <source media="(prefers-color-scheme: dark)" srcset="docs/public/assets/how-it-works-dark.svg">
92
- <source media="(prefers-color-scheme: light)" srcset="docs/public/assets/how-it-works-light.svg">
93
- <img src="docs/public/assets/how-it-works-light.svg" alt="Claude Code and Codex work in the code repo. Gitignored links connect it to a separate private Brainspace holding the Brain and Beads." width="1000">
129
+ <source media="(prefers-color-scheme: dark)" srcset="docs/public/assets/how-it-works-dark.png">
130
+ <source media="(prefers-color-scheme: light)" srcset="docs/public/assets/how-it-works-light.png">
131
+ <img src="docs/public/assets/how-it-works-light.png" alt="Claude Code and Codex work in the code repo. Gitignored links connect it to a separate private Brainspace holding the Brain and Beads." width="1000">
94
132
  </picture>
95
133
 
96
- The plugin's session-start hook loads project context. Its skills guide work when invoked,
97
- and wiring delivers selected skills and subagents into the repo's agent workspaces. Skills and
98
- Claude agents use symlinks; Codex agents use generated, Git-ignored TOML files.
99
- `dotbrain wire` connects worktrees to the same Brainspace through Git metadata.
134
+ Wiring also delivers selected skills and subagents into the repo's agent workspaces, `.claude/`
135
+ and `.codex/`. Skills and Claude agents use symlinks; Codex agents use generated, Git-ignored
136
+ TOML files. Wiring a Git worktree connects it to the main checkout's existing Brainspace, so
137
+ both use the same knowledge and tracker.
138
+
139
+ At session start, the plugin hook supplies `DOTBRAIN.md`, the shared convention. The agent then
140
+ reads the project's private rules and retrieves the context the task needs. Workflow skills
141
+ guide how it consults that context and records what you work out together.
142
+ See [Session context](https://arminzou.github.io/dotbrain/session-context) for the loading sequence.
100
143
 
101
144
  Use `dotbrain projects list` to discover registered projects. Inside a wired checkout,
102
145
  `dotbrain refresh` maintains that checkout and `dotbrain unwire` detaches it while retaining the
@@ -115,8 +158,11 @@ See [Architecture](https://arminzou.github.io/dotbrain/architecture),
115
158
  Every piece of work should leave the next session better informed. Dotbrain's bundled skills
116
159
  carry work from idea to implementation, then return what you learned to the project's context.
117
160
 
118
- **Start from the Brain → explore unknowns → settle decisions → write a design → work and
119
- verify issues → review → return lasting decisions to the Brain.**
161
+ <picture>
162
+ <source media="(prefers-color-scheme: dark)" srcset="docs/public/assets/workflow-dark.png">
163
+ <source media="(prefers-color-scheme: light)" srcset="docs/public/assets/workflow-light.png">
164
+ <img src="docs/public/assets/workflow-light.png" alt="Workflow skills guide work through decisions, design, issues, execution, review, and closure. Discoveries update the active design; lasting decisions return to the Brain for the next initiative." width="880">
165
+ </picture>
120
166
 
121
167
  The loop closes in two places:
122
168
 
@@ -127,8 +173,8 @@ The loop closes in two places:
127
173
  vocabulary in the Brain. The next initiative starts with that knowledge already available.
128
174
 
129
175
  The Brain holds durable knowledge, the design holds current intent, and Beads holds execution
130
- state. Each handoff lives in a document or tracker entry, so another session or agent can pick
131
- up the work without reconstructing it from chat history.
176
+ state. Each handoff lives in a document or tracker entry that another session or agent can
177
+ consult to continue the work.
132
178
 
133
179
  You own the success criteria and the final review decision. Use the full loop when work spans
134
180
  sessions or carries open questions; small changes can use just the steps they need.
@@ -0,0 +1,179 @@
1
+ import { defineConfig } from 'vitepress'
2
+
3
+ export default defineConfig({
4
+ title: 'Dotbrain',
5
+ description: 'Private project context for coding agents, kept out of your code repo.',
6
+ base: '/',
7
+ cleanUrls: true,
8
+ lastUpdated: true,
9
+ // README.md is the index for browsing docs/ on GitHub, and AGENTS.md/CLAUDE.md guide agents
10
+ // editing docs/; index.md is the site's home.
11
+ srcExclude: ['README.md', 'AGENTS.md', 'CLAUDE.md'],
12
+ head: [
13
+ ['link', { rel: 'icon', type: 'image/png', sizes: '32x32', href: '/assets/favicon-light-32.png' }],
14
+ ['link', { rel: 'icon', type: 'image/png', sizes: '32x32', href: '/assets/favicon-light-32.png', media: '(prefers-color-scheme: light)' }],
15
+ ['link', { rel: 'icon', type: 'image/png', sizes: '32x32', href: '/assets/favicon-dark-32.png', media: '(prefers-color-scheme: dark)' }],
16
+ ['link', { rel: 'apple-touch-icon', sizes: '180x180', href: '/assets/apple-touch-icon-light.png' }],
17
+ ['meta', { property: 'og:site_name', content: 'Dotbrain' }],
18
+ ['meta', { property: 'og:type', content: 'website' }],
19
+ ['meta', { property: 'og:image', content: 'https://dotbrain.net/assets/banner-dark.png' }],
20
+ ['meta', { property: 'og:image:width', content: '1672' }],
21
+ ['meta', { property: 'og:image:height', content: '941' }],
22
+ ['meta', { property: 'og:image:alt', content: 'Dotbrain connected brain mark and wordmark' }],
23
+ ['meta', { name: 'twitter:card', content: 'summary_large_image' }],
24
+ ['meta', { name: 'twitter:image', content: 'https://dotbrain.net/assets/banner-dark.png' }],
25
+ ['meta', { name: 'twitter:image:alt', content: 'Dotbrain connected brain mark and wordmark' }],
26
+ ],
27
+ // English stays at the root so existing URLs keep working; zh/ mirrors its file names.
28
+ locales: {
29
+ root: { label: 'English', lang: 'en-US' },
30
+ zh: {
31
+ label: '简体中文',
32
+ lang: 'zh-CN',
33
+ link: '/zh/',
34
+ description: '为 Coding Agent 提供私有的项目上下文,不放进公开代码仓库。',
35
+ themeConfig: {
36
+ nav: [
37
+ { text: '指南', link: '/zh/getting-started', activeMatch: '^/zh/(why-dotbrain|getting-started|prompts|agent-team|architecture|workflow|learning|wiring|session-context|beads-backend|brain-site|troubleshooting)' },
38
+ { text: '参考', link: '/zh/cli-reference', activeMatch: '^/zh/(cli-reference|configuration|skills|glossary)' },
39
+ { text: 'PyPI', link: 'https://pypi.org/project/dotbrain/' },
40
+ ],
41
+ sidebar: [
42
+ {
43
+ text: '指南',
44
+ items: [
45
+ { text: '为什么用 Dotbrain?', link: '/zh/why-dotbrain' },
46
+ { text: '快速开始', link: '/zh/getting-started' },
47
+ { text: '示例提示词', link: '/zh/prompts' },
48
+ ],
49
+ },
50
+ {
51
+ text: '使用场景',
52
+ items: [
53
+ { text: '开发项目', link: '/zh/workflow' },
54
+ { text: '和 Agent 团队一起工作', link: '/zh/agent-team' },
55
+ { text: '学习项目', link: '/zh/learning' },
56
+ { text: '浏览 Brain', link: '/zh/brain-site' },
57
+ ],
58
+ },
59
+ {
60
+ text: '工作原理',
61
+ items: [
62
+ { text: '架构', link: '/zh/architecture' },
63
+ { text: '项目连接', link: '/zh/wiring' },
64
+ { text: '会话上下文', link: '/zh/session-context' },
65
+ { text: 'Beads 后端', link: '/zh/beads-backend' },
66
+ ],
67
+ },
68
+ {
69
+ text: '帮助',
70
+ items: [{ text: '故障排查与常见问题', link: '/zh/troubleshooting' }],
71
+ },
72
+ {
73
+ text: '参考',
74
+ items: [
75
+ { text: 'CLI 参考', link: '/zh/cli-reference' },
76
+ { text: '配置', link: '/zh/configuration' },
77
+ { text: 'Brain 站点配置', link: '/zh/brain-site-configuration' },
78
+ { text: '技能', link: '/zh/skills' },
79
+ { text: '术语表', link: '/zh/glossary' },
80
+ ],
81
+ },
82
+ ],
83
+ outline: { level: [2, 3], label: '本页目录' },
84
+ editLink: {
85
+ pattern: 'https://github.com/arminzou/dotbrain/edit/main/docs/:path',
86
+ text: '在 GitHub 上编辑此页',
87
+ },
88
+ docFooter: { prev: '上一页', next: '下一页' },
89
+ lastUpdated: { text: '最后更新' },
90
+ langMenuLabel: '切换语言',
91
+ returnToTopLabel: '回到顶部',
92
+ sidebarMenuLabel: '菜单',
93
+ darkModeSwitchLabel: '外观',
94
+ lightModeSwitchTitle: '切换到浅色模式',
95
+ darkModeSwitchTitle: '切换到深色模式',
96
+ footer: { message: '基于 MIT 许可证发布。' },
97
+ },
98
+ },
99
+ },
100
+ transformHead: ({ title, description }) => [
101
+ ['meta', { property: 'og:title', content: title }],
102
+ ['meta', { property: 'og:description', content: description }],
103
+ ],
104
+
105
+ markdown: {
106
+ theme: { light: 'github-light', dark: 'github-dark' },
107
+ // A ```mermaid fence becomes the theme's <Mermaid> component, which draws it in the browser.
108
+ config(md) {
109
+ const fence = md.renderer.rules.fence!
110
+ md.renderer.rules.fence = (tokens, index, ...rest) =>
111
+ tokens[index].info.trim() === 'mermaid'
112
+ ? `<Mermaid code="${encodeURIComponent(tokens[index].content)}" />`
113
+ : fence(tokens, index, ...rest)
114
+ },
115
+ },
116
+
117
+ themeConfig: {
118
+ logo: {
119
+ light: { src: '/assets/mark-light.png', width: 24, height: 24 },
120
+ dark: { src: '/assets/mark-dark.png', width: 24, height: 24 },
121
+ alt: 'Dotbrain',
122
+ },
123
+ nav: [
124
+ { text: 'Guide', link: '/getting-started', activeMatch: '^/(why-dotbrain|getting-started|prompts|agent-team|architecture|workflow|learning|wiring|session-context|beads-backend|brain-site|troubleshooting)' },
125
+ { text: 'Reference', link: '/cli-reference', activeMatch: '^/(cli-reference|configuration|skills|glossary)' },
126
+ { text: 'PyPI', link: 'https://pypi.org/project/dotbrain/' },
127
+ ],
128
+ sidebar: [
129
+ {
130
+ text: 'Guide',
131
+ items: [
132
+ { text: 'Why Dotbrain?', link: '/why-dotbrain' },
133
+ { text: 'Getting started', link: '/getting-started' },
134
+ { text: 'Example prompts', link: '/prompts' },
135
+ ],
136
+ },
137
+ {
138
+ text: 'Use cases',
139
+ items: [
140
+ { text: 'Develop a project', link: '/workflow' },
141
+ { text: 'Work with an agent team', link: '/agent-team' },
142
+ { text: 'Learn your project', link: '/learning' },
143
+ { text: 'Browse the Brain', link: '/brain-site' },
144
+ ],
145
+ },
146
+ {
147
+ text: 'How it works',
148
+ items: [
149
+ { text: 'Architecture', link: '/architecture' },
150
+ { text: 'Wiring', link: '/wiring' },
151
+ { text: 'Session context', link: '/session-context' },
152
+ { text: 'Beads backend', link: '/beads-backend' },
153
+ ],
154
+ },
155
+ {
156
+ text: 'Help',
157
+ items: [{ text: 'Troubleshooting & FAQ', link: '/troubleshooting' }],
158
+ },
159
+ {
160
+ text: 'Reference',
161
+ items: [
162
+ { text: 'CLI reference', link: '/cli-reference' },
163
+ { text: 'Configuration', link: '/configuration' },
164
+ { text: 'Brain site configuration', link: '/brain-site-configuration' },
165
+ { text: 'Skills', link: '/skills' },
166
+ { text: 'Glossary', link: '/glossary' },
167
+ ],
168
+ },
169
+ ],
170
+ outline: { level: [2, 3], label: 'On this page' },
171
+ search: { provider: 'local' },
172
+ socialLinks: [{ icon: 'github', link: 'https://github.com/arminzou/dotbrain' }],
173
+ editLink: {
174
+ pattern: 'https://github.com/arminzou/dotbrain/edit/main/docs/:path',
175
+ text: 'Edit this page on GitHub',
176
+ },
177
+ footer: { message: 'Released under the MIT License.' },
178
+ },
179
+ })
@@ -389,6 +389,12 @@
389
389
  width: 100%;
390
390
  font-size: 14px;
391
391
  }
392
+ .prompt-examples .vp-doc div.language-text code {
393
+ width: 100%;
394
+ white-space: pre-wrap;
395
+ overflow-wrap: anywhere;
396
+ }
397
+
392
398
  .vp-doc td code {
393
399
  white-space: nowrap;
394
400
  }
@@ -16,6 +16,12 @@ npm run build # must pass before a push
16
16
  - `configuration.md` is tested: `tests/test_configuration_docs.py` loads the first YAML block under
17
17
  ``## `config.yaml` `` and ``## `project.yaml` `` through the real config loader. Keep those
18
18
  headings exact, keep the fences plain ```` ```yaml ````, and keep every key the test reads.
19
+ - `zh/` holds the Simplified Chinese pages, one per English page with the same file name. They are
20
+ hand-maintained, best effort: write natural Chinese, keep commands, code, diagrams and terms
21
+ developers know in English (Agent, Coding Agent, PR, worktree, checkout) as is. When translating a
22
+ heading that is a link target, keep the English slug with `{#english-slug}`. `zh/cli-reference.md`
23
+ is a hand translation, not generated. Chinese nav and sidebar live under `locales.zh` in
24
+ `.vitepress/config.mts`.
19
25
  - Name a code block's file in a `# path` comment on its first line. A `[title]` after the language
20
26
  only renders inside a `::: code-group`.
21
27
  - Use `::: code-group` for alternatives (Claude Code / Codex, macOS / Windows, uv / pipx).
@@ -7,10 +7,12 @@ fine on GitHub.
7
7
 
8
8
  - [why-dotbrain.md](why-dotbrain.md) — candid comparisons, trade-offs, and when to skip it.
9
9
  - [getting-started.md](getting-started.md) — install, wire a repo, and verify the result.
10
+ - [prompts.md](prompts.md) — example prompts for each common job, and the skill each triggers.
10
11
 
11
12
  ## Use Cases
12
13
 
13
14
  - [workflow.md](workflow.md) — develop a project from first idea to closed design, one skill per step.
15
+ - [agent-team.md](agent-team.md) — HITL and handoff, sequential and parallel work, and packaged subagents.
14
16
  - [learning.md](learning.md) — learn across sessions, park concepts, and capture demonstrated understanding.
15
17
  - [brain-site.md](brain-site.md) — read, search, and navigate the private Brain.
16
18