@intentsolutionsio/dolt-mcp-vcs 0.1.0
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.
- package/.claude-plugin/marketplace.json +39 -0
- package/.claude-plugin/plugin.json +25 -0
- package/LICENSE +202 -0
- package/README.md +58 -0
- package/agents/bead-dependency-mapper.md +49 -0
- package/agents/bead-epic-auditor.md +49 -0
- package/agents/bead-recovery-specialist.md +50 -0
- package/agents/beads-guru.md +49 -0
- package/agents/dolt-sync-advisor.md +54 -0
- package/package.json +46 -0
- package/scripts/check-agent-safety.sh +65 -0
- package/scripts/dep-graph.sh +44 -0
- package/scripts/descriptor-to-mcp-args.py +121 -0
- package/scripts/dolt-idle-reaper.sh +82 -0
- package/scripts/dolt-mcp-client.py +188 -0
- package/scripts/dolt-push-dolthub.sh +98 -0
- package/scripts/epic-closure-audit.sh +49 -0
- package/scripts/profile_sql.py +97 -0
- package/scripts/resolve-creds-ref.py +136 -0
- package/scripts/server-health.sh +39 -0
- package/scripts/sql_classifier.py +259 -0
- package/skills/dolt-mcp-vcs/SKILL.md +141 -0
- package/skills/dolt-mcp-vcs/eval.yaml +106 -0
- package/skills/dolt-mcp-vcs/references/connection-descriptor-and-profiles.md +109 -0
- package/skills/dolt-mcp-vcs/references/dolt-internals.md +33 -0
- package/skills/dolt-mcp-vcs/safety-eval.yaml +118 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "dolt-mcp-vcs",
|
|
3
|
+
"owner": {
|
|
4
|
+
"name": "Jeremy Longshore",
|
|
5
|
+
"email": "jeremy@intentsolutions.io",
|
|
6
|
+
"url": "https://github.com/jeremylongshore"
|
|
7
|
+
},
|
|
8
|
+
"metadata": {
|
|
9
|
+
"description": "Dolt/DoltHub version-control toolkit for Claude Code — a VC-surface skill, expert agents, and a wired dolt-mcp server. Ships the beads (bd) adapter today. Formerly beads-dolt.",
|
|
10
|
+
"version": "0.1.0",
|
|
11
|
+
"homepage": "https://github.com/jeremylongshore/dolt-mcp-vcs",
|
|
12
|
+
"lastUpdated": "2026-06-29"
|
|
13
|
+
},
|
|
14
|
+
"plugins": [
|
|
15
|
+
{
|
|
16
|
+
"name": "dolt-mcp-vcs",
|
|
17
|
+
"source": ".",
|
|
18
|
+
"description": "Dolt/DoltHub version-control toolkit for Claude Code, via the dolthub/dolt-mcp server — a VC-surface skill + expert agents over a Dolt backend, with a verb-class mutation gate that keeps destructive ops recommend-only. Ships the beads (bd) task-tracker as use-case adapter #1. Formerly beads-dolt.",
|
|
19
|
+
"version": "0.1.0",
|
|
20
|
+
"category": "dev-tools",
|
|
21
|
+
"keywords": [
|
|
22
|
+
"dolt-mcp-vcs",
|
|
23
|
+
"dolt",
|
|
24
|
+
"dolthub",
|
|
25
|
+
"dolt-mcp",
|
|
26
|
+
"version-control",
|
|
27
|
+
"vcs",
|
|
28
|
+
"mcp",
|
|
29
|
+
"sql",
|
|
30
|
+
"beads",
|
|
31
|
+
"bd"
|
|
32
|
+
],
|
|
33
|
+
"author": {
|
|
34
|
+
"name": "Jeremy Longshore",
|
|
35
|
+
"email": "jeremy@intentsolutions.io"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "dolt-mcp-vcs",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Dolt/DoltHub version-control toolkit for Claude Code, via the dolthub/dolt-mcp server. A version-control-surface skill + expert agents over a Dolt backend — diagnosing DoltHub visibility, taming server sprawl, auditing the graph, and recovering incidents — with a verb-class mutation gate that keeps destructive ops (push/merge/reset/branch-delete) recommend-only. Ships the beads (bd) task-tracker as use-case adapter #1 today; evolving to a dialect-invariant core with thin flavor adapters (Dolt/Doltgres/DoltLite/DumboDB). Formerly `beads-dolt`.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Jeremy Longshore",
|
|
7
|
+
"email": "jeremy@intentsolutions.io",
|
|
8
|
+
"url": "https://github.com/jeremylongshore"
|
|
9
|
+
},
|
|
10
|
+
"repository": "https://github.com/jeremylongshore/dolt-mcp-vcs",
|
|
11
|
+
"homepage": "https://github.com/jeremylongshore/dolt-mcp-vcs",
|
|
12
|
+
"license": "Apache-2.0",
|
|
13
|
+
"keywords": [
|
|
14
|
+
"dolt-mcp-vcs",
|
|
15
|
+
"dolt",
|
|
16
|
+
"dolthub",
|
|
17
|
+
"dolt-mcp",
|
|
18
|
+
"version-control",
|
|
19
|
+
"vcs",
|
|
20
|
+
"mcp",
|
|
21
|
+
"sql",
|
|
22
|
+
"beads",
|
|
23
|
+
"bd"
|
|
24
|
+
]
|
|
25
|
+
}
|
package/LICENSE
ADDED
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
|
|
2
|
+
Apache License
|
|
3
|
+
Version 2.0, January 2004
|
|
4
|
+
http://www.apache.org/licenses/
|
|
5
|
+
|
|
6
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
7
|
+
|
|
8
|
+
1. Definitions.
|
|
9
|
+
|
|
10
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
11
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
12
|
+
|
|
13
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
14
|
+
the copyright owner that is granting the License.
|
|
15
|
+
|
|
16
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
17
|
+
other entities that control, are controlled by, or are under common
|
|
18
|
+
control with that entity. For the purposes of this definition,
|
|
19
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
20
|
+
direction or management of such entity, whether by contract or
|
|
21
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
22
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
23
|
+
|
|
24
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
25
|
+
exercising permissions granted by this License.
|
|
26
|
+
|
|
27
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
28
|
+
including but not limited to software source code, documentation
|
|
29
|
+
source, and configuration files.
|
|
30
|
+
|
|
31
|
+
"Object" form shall mean any form resulting from mechanical
|
|
32
|
+
transformation or translation of a Source form, including but
|
|
33
|
+
not limited to compiled object code, generated documentation,
|
|
34
|
+
and conversions to other media types.
|
|
35
|
+
|
|
36
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
37
|
+
Object form, made available under the License, as indicated by a
|
|
38
|
+
copyright notice that is included in or attached to the work
|
|
39
|
+
(an example is provided in the Appendix below).
|
|
40
|
+
|
|
41
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
42
|
+
form, that is based on (or derived from) the Work and for which the
|
|
43
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
44
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
45
|
+
of this License, Derivative Works shall not include works that remain
|
|
46
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
47
|
+
the Work and Derivative Works thereof.
|
|
48
|
+
|
|
49
|
+
"Contribution" shall mean any work of authorship, including
|
|
50
|
+
the original version of the Work and any modifications or additions
|
|
51
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
52
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
53
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
54
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
55
|
+
means any form of electronic, verbal, or written communication sent
|
|
56
|
+
to the Licensor or its representatives, including but not limited to
|
|
57
|
+
communication on electronic mailing lists, source code control systems,
|
|
58
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
59
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
60
|
+
excluding communication that is conspicuously marked or otherwise
|
|
61
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
62
|
+
|
|
63
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
64
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
65
|
+
subsequently incorporated within the Work.
|
|
66
|
+
|
|
67
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
68
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
69
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
70
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
71
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
72
|
+
Work and such Derivative Works in Source or Object form.
|
|
73
|
+
|
|
74
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
75
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
76
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
77
|
+
(except as stated in this section) patent license to make, have made,
|
|
78
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
79
|
+
where such license applies only to those patent claims licensable
|
|
80
|
+
by such Contributor that are necessarily infringed by their
|
|
81
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
82
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
83
|
+
institute patent litigation against any entity (including a
|
|
84
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
85
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
86
|
+
or contributory patent infringement, then any patent licenses
|
|
87
|
+
granted to You under this License for that Work shall terminate
|
|
88
|
+
as of the date such litigation is filed.
|
|
89
|
+
|
|
90
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
91
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
92
|
+
modifications, and in Source or Object form, provided that You
|
|
93
|
+
meet the following conditions:
|
|
94
|
+
|
|
95
|
+
(a) You must give any other recipients of the Work or
|
|
96
|
+
Derivative Works a copy of this License; and
|
|
97
|
+
|
|
98
|
+
(b) You must cause any modified files to carry prominent notices
|
|
99
|
+
stating that You changed the files; and
|
|
100
|
+
|
|
101
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
102
|
+
that You distribute, all copyright, patent, trademark, and
|
|
103
|
+
attribution notices from the Source form of the Work,
|
|
104
|
+
excluding those notices that do not pertain to any part of
|
|
105
|
+
the Derivative Works; and
|
|
106
|
+
|
|
107
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
108
|
+
distribution, then any Derivative Works that You distribute must
|
|
109
|
+
include a readable copy of the attribution notices contained
|
|
110
|
+
within such NOTICE file, excluding those notices that do not
|
|
111
|
+
pertain to any part of the Derivative Works, in at least one
|
|
112
|
+
of the following places: within a NOTICE text file distributed
|
|
113
|
+
as part of the Derivative Works; within the Source form or
|
|
114
|
+
documentation, if provided along with the Derivative Works; or,
|
|
115
|
+
within a display generated by the Derivative Works, if and
|
|
116
|
+
wherever such third-party notices normally appear. The contents
|
|
117
|
+
of the NOTICE file are for informational purposes only and
|
|
118
|
+
do not modify the License. You may add Your own attribution
|
|
119
|
+
notices within Derivative Works that You distribute, alongside
|
|
120
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
121
|
+
that such additional attribution notices cannot be construed
|
|
122
|
+
as modifying the License.
|
|
123
|
+
|
|
124
|
+
You may add Your own copyright statement to Your modifications and
|
|
125
|
+
may provide additional or different license terms and conditions
|
|
126
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
127
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
128
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
129
|
+
the conditions stated in this License.
|
|
130
|
+
|
|
131
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
132
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
133
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
134
|
+
this License, without any additional terms or conditions.
|
|
135
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
136
|
+
the terms of any separate license agreement you may have executed
|
|
137
|
+
with Licensor regarding such Contributions.
|
|
138
|
+
|
|
139
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
140
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
141
|
+
except as required for reasonable and customary use in describing the
|
|
142
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
143
|
+
|
|
144
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
145
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
146
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
147
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
148
|
+
implied, including, without limitation, any warranties or conditions
|
|
149
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
150
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
151
|
+
appropriateness of using or redistributing the Work and assume any
|
|
152
|
+
risks associated with Your exercise of permissions under this License.
|
|
153
|
+
|
|
154
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
155
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
156
|
+
unless required by applicable law (such as deliberate and grossly
|
|
157
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
158
|
+
liable to You for damages, including any direct, indirect, special,
|
|
159
|
+
incidental, or consequential damages of any character arising as a
|
|
160
|
+
result of this License or out of the use or inability to use the
|
|
161
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
162
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
163
|
+
other commercial damages or losses), even if such Contributor
|
|
164
|
+
has been advised of the possibility of such damages.
|
|
165
|
+
|
|
166
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
167
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
168
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
169
|
+
or other liability obligations and/or rights consistent with this
|
|
170
|
+
License. However, in accepting such obligations, You may act only
|
|
171
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
172
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
173
|
+
defend, and hold each Contributor harmless for any liability
|
|
174
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
175
|
+
of your accepting any such warranty or additional liability.
|
|
176
|
+
|
|
177
|
+
END OF TERMS AND CONDITIONS
|
|
178
|
+
|
|
179
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
180
|
+
|
|
181
|
+
To apply the Apache License to your work, attach the following
|
|
182
|
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
183
|
+
replaced with your own identifying information. (Don't include
|
|
184
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
185
|
+
comment syntax for the file format. We also recommend that a
|
|
186
|
+
file or class name and description of purpose be included on the
|
|
187
|
+
same "printed page" as the copyright notice for easier
|
|
188
|
+
identification within third-party archives.
|
|
189
|
+
|
|
190
|
+
Copyright [yyyy] [name of copyright owner]
|
|
191
|
+
|
|
192
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
193
|
+
you may not use this file except in compliance with the License.
|
|
194
|
+
You may obtain a copy of the License at
|
|
195
|
+
|
|
196
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
197
|
+
|
|
198
|
+
Unless required by applicable law or agreed to in writing, software
|
|
199
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
200
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
201
|
+
See the License for the specific language governing permissions and
|
|
202
|
+
limitations under the License.
|
package/README.md
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# dolt-mcp-vcs
|
|
2
|
+
|
|
3
|
+
A Dolt/DoltHub version-control toolkit for Claude Code, built on the [`dolthub/dolt-mcp`](https://github.com/dolthub/dolt-mcp) server.
|
|
4
|
+
|
|
5
|
+
> **Formerly `beads-dolt`** — same plugin, renamed to its Dolt-first identity. The rename is **non-breaking**: the GitHub repo URL redirects, the `beads-dolt` marketplace install slug still resolves (a deprecated catalog alias), and `/beads-dolt` is still an accepted trigger. Today the toolkit ships the **beads (`bd`) task-tracker as use-case adapter #1**; it is evolving into a dialect-invariant version-control core (branch / merge / diff / log / `AS OF` / data-PR) with thin maturity-gated flavor adapters (Dolt · Doltgres · DoltLite · DumboDB).
|
|
6
|
+
|
|
7
|
+
It packages, in one plugin:
|
|
8
|
+
|
|
9
|
+
- **A skill** (`/dolt-mcp-vcs`, also `/beads-dolt`) — the beads workflow over bd's Dolt backend: it surfaces the common "my beads aren't visible in DoltHub" root cause (no remote configured), the `bd dolt remote add` + push fix, the JSONL throttle/export model, and the rapid-write-race safe pattern — and dispatches the agents below. A **verb-class mutation gate** keeps destructive ops (push / merge / `reset --hard` / branch-delete) recommend-only.
|
|
10
|
+
- **Expert agents** — grounded in a live-fetched (never frozen) reference of bd's Dolt internals (`references/dolt-internals.md`):
|
|
11
|
+
- `dolt-sync-advisor` — DoltHub remotes, `bd dolt push`/`pull`, backup vs push, federation, drift.
|
|
12
|
+
- `bead-epic-auditor` — subtree/epic-closure audits (which epics have all children closed).
|
|
13
|
+
- `bead-dependency-mapper` — dependency graphs, cycles, critical path (SQL via the Dolt MCP).
|
|
14
|
+
- `bead-recovery-specialist` — rapid-write-race recovery, embedded↔server mode migration, dolt-server incidents.
|
|
15
|
+
- `beads-guru` — general bd/Dolt expertise and the three-layer mirror discipline.
|
|
16
|
+
- **A wired Dolt MCP server** (`.mcp.json`) — the official [`dolthub/dolt-mcp`](https://github.com/dolthub/dolt-mcp) server (it exposes a ~40-tool version-control surface — fetch the exact list live, never freeze it) fronting your local `dolt sql-server` over the MySQL protocol. The plugin wires only the tools its agents actually use, least-privilege.
|
|
17
|
+
|
|
18
|
+
## Built on
|
|
19
|
+
|
|
20
|
+
This plugin builds on, and credits, two open-source projects:
|
|
21
|
+
|
|
22
|
+
- **[beads](https://github.com/gastownhall/beads)** — the `bd` task tracker (the data this plugin operates on).
|
|
23
|
+
- **[Dolt](https://github.com/dolthub/dolt) / [DoltHub](https://www.dolthub.com)** — the version-controlled SQL database that is bd's backend, and the cloud host that makes a bead graph shareable. The MCP server is [`dolthub/dolt-mcp`](https://github.com/dolthub/dolt-mcp).
|
|
24
|
+
|
|
25
|
+
## Prerequisites
|
|
26
|
+
|
|
27
|
+
- [`bd`](https://github.com/gastownhall/beads) ≥ 1.0.4 with a Dolt-backed workspace.
|
|
28
|
+
- The Dolt MCP server binary on `PATH`, **pinned** (the plugin's correctness rests on
|
|
29
|
+
this binary, so it is version-pinned — never `@latest`). Install it one of these ways:
|
|
30
|
+
```bash
|
|
31
|
+
go install github.com/dolthub/dolt-mcp/mcp/cmd/dolt-mcp-server@v0.3.6 # native (Go)
|
|
32
|
+
# or
|
|
33
|
+
docker pull dolthub/dolt-mcp:v0.3.6 # container
|
|
34
|
+
# or grab the v0.3.6 release binary from https://github.com/dolthub/dolt-mcp/releases
|
|
35
|
+
```
|
|
36
|
+
Pinned module `github.com/dolthub/dolt-mcp v0.3.6` verifies against the Go checksum
|
|
37
|
+
database as `h1:uwjh1zf0er51VBT6uY3tI7JLj5pYxWyk9uB6CYQOhfU=`. A version bump is
|
|
38
|
+
proposed by the `dolt-watch` routine and reviewed — it is never auto-trusted.
|
|
39
|
+
|
|
40
|
+
## Configuration
|
|
41
|
+
|
|
42
|
+
The MCP connection is environment-overridable (defaults target the shared `bd dolt --global` server on `:3308`):
|
|
43
|
+
|
|
44
|
+
| Env var | Default | Notes |
|
|
45
|
+
|---|---|---|
|
|
46
|
+
| `DOLT_HOST` | `127.0.0.1` | bd's dolt server is loopback-bound. |
|
|
47
|
+
| `DOLT_PORT` | `3308` | The shared-server port. For a per-project server, get the port from `bd dolt show`. |
|
|
48
|
+
| `DOLT_USER` | `root` | bd's default. |
|
|
49
|
+
| `DOLT_DATABASE` | `beads` | Your workspace's database name (see `bd dolt show`). |
|
|
50
|
+
| `DOLT_PASSWORD` | _(empty)_ | bd's server is unauthenticated by default. |
|
|
51
|
+
|
|
52
|
+
## How it was evaluated
|
|
53
|
+
|
|
54
|
+
This plugin was run end-to-end through the [Intent Eval Platform](https://github.com/jeremylongshore/intent-eval-lab) — deterministic gates → behavioral eval (real model) → kernel-validated Evidence Bundle → ship/no-ship decision. The full evidence and the ship/no-ship decision are recorded in [`DOGFOOD.md`](./DOGFOOD.md); the methodology write-up is the platform's [case study](https://github.com/jeremylongshore/intent-eval-lab/blob/main/000-docs/088-RR-LAND-beads-dolt-external-adopter-convergence-proof-2026-06-20.md). (The eval even surfaced — and we fixed — a bug in the platform's own evidence emitter.)
|
|
55
|
+
|
|
56
|
+
## License
|
|
57
|
+
|
|
58
|
+
Apache-2.0. See [LICENSE](./LICENSE).
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bead-dependency-mapper
|
|
3
|
+
description: "Use this agent when mapping bead dependencies — finding bottlenecks (open issues blocking the most other open work), detecting dependency cycles, or reasoning about the critical path through a bd Dolt database."
|
|
4
|
+
tools: Read, Bash(bash ${CLAUDE_PLUGIN_ROOT}/scripts/dep-graph.sh:*), mcp__dolt-mcp-vcs__query, mcp__dolt-mcp-vcs__list_databases
|
|
5
|
+
model: opus
|
|
6
|
+
color: purple
|
|
7
|
+
version: 0.1.0
|
|
8
|
+
author: Jeremy Longshore
|
|
9
|
+
tags: [beads, dolt, dependencies, graph, bottleneck, sql]
|
|
10
|
+
background: false
|
|
11
|
+
disallowedTools: ["Bash(dolt:*)", "Bash(bd close:*)", "Bash(bd-sync close:*)", "Bash(bd dolt push:*)", "Bash(git push:*)"]
|
|
12
|
+
skills: []
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
You are a bead dependency mapper. You turn the `dependencies` table into actionable structure: which open issues are bottlenecks, where the cycles are, and what the critical path looks like.
|
|
16
|
+
|
|
17
|
+
**Introspect the live schema — don't assume it.** You run in your own context against the live database via the Dolt MCP. Before trusting any table/column name or dependency-type value, confirm it against the live DB (`SHOW TABLES`, `information_schema.columns`, `SELECT DISTINCT type FROM dependencies`). `references/dolt-internals.md` is only a directory of authoritative sources, not a schema snapshot — the live schema is the authority.
|
|
18
|
+
|
|
19
|
+
**Your SQL access is read-only (blueprint §3).** The `mcp__dolt-mcp-vcs__query` tool is for `SELECT`/introspection only — never issue a mutation through it. Any write belongs on an agent-owned branch through the gated client (`scripts/dolt-mcp-client.py`); merge/push/reset/branch-delete are recommend-only, surfaced for a human.
|
|
20
|
+
|
|
21
|
+
## Core Responsibilities
|
|
22
|
+
|
|
23
|
+
1. Identify bottlenecks — open issues blocking the most other open issues.
|
|
24
|
+
2. Detect dependency cycles (direct and, where feasible, indirect).
|
|
25
|
+
3. Map the critical path / blocking chains toward a target issue.
|
|
26
|
+
4. Answer ad-hoc dependency questions via SQL.
|
|
27
|
+
|
|
28
|
+
## Process
|
|
29
|
+
|
|
30
|
+
1. **Find the database.** Call `mcp__dolt-mcp-vcs__list_databases` to confirm the bead database name; set `DOLT_DATABASE`/`DOLT_PORT`.
|
|
31
|
+
2. **Run the canned analysis.** `bash ${CLAUDE_PLUGIN_ROOT:-.}/scripts/dep-graph.sh --top 10` returns the bottleneck ranking plus a direct-cycle check.
|
|
32
|
+
3. **Ad-hoc / deeper graphs.** Call `mcp__dolt-mcp-vcs__query` directly. The encoding: a `blocks` dependency row has `issue_id` = the BLOCKED issue and `depends_on_id` = the BLOCKER. Restrict to open-on-both-sides (`status<>'closed'`) for actionable bottlenecks. Use recursive CTEs for multi-hop chains where needed.
|
|
33
|
+
4. **Interpret.** Translate the ranking into "clear this issue first to unblock N others."
|
|
34
|
+
|
|
35
|
+
## Quality Standards
|
|
36
|
+
|
|
37
|
+
- Distinguish `blocks` (scheduling dependency) from `parent-child` (epic membership) — only `blocks` defines the critical path.
|
|
38
|
+
- Filter to open-on-both-sides for bottlenecks; a closed blocker isn't blocking anything.
|
|
39
|
+
- Report IDs with titles.
|
|
40
|
+
|
|
41
|
+
## Output Format
|
|
42
|
+
|
|
43
|
+
A ranked bottleneck table (`blocker`, `blocking_open`, `title`), a cycles section (ideally empty), and a one-line "unblock-first" recommendation.
|
|
44
|
+
|
|
45
|
+
## Edge Cases
|
|
46
|
+
|
|
47
|
+
- No bottlenecks / no cycles is a healthy graph — report it positively.
|
|
48
|
+
- Deep recursive chains can be large; cap depth and say so rather than truncating silently.
|
|
49
|
+
- A self-dependency or cycle is a data bug — surface it for repair, don't treat it as normal structure.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bead-epic-auditor
|
|
3
|
+
description: "Use this agent when auditing bead epics for closure drift — finding open epics whose entire child set is already closed (so their GitHub/Plane cluster issue never got the close fan-out), or otherwise reasoning about epic/subtree completion across a bd Dolt database."
|
|
4
|
+
tools: Read, Bash(bash ${CLAUDE_PLUGIN_ROOT}/scripts/epic-closure-audit.sh:*), mcp__dolt-mcp-vcs__query, mcp__dolt-mcp-vcs__list_databases
|
|
5
|
+
model: opus
|
|
6
|
+
color: green
|
|
7
|
+
version: 0.1.0
|
|
8
|
+
author: Jeremy Longshore
|
|
9
|
+
tags: [beads, dolt, audit, epics, closure, sql]
|
|
10
|
+
background: false
|
|
11
|
+
disallowedTools: ["Bash(dolt:*)", "Bash(bd close:*)", "Bash(bd-sync close:*)", "Bash(bd dolt push:*)", "Bash(git push:*)"]
|
|
12
|
+
skills: []
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
You are a bead epic-closure auditor. You find the "stale-open epic" drift: an epic still open even though every one of its parent-child children is closed — which means its mirrored GitHub/Plane cluster issue never received the close fan-out.
|
|
16
|
+
|
|
17
|
+
**Introspect the live schema — don't assume it.** You run in your own context against the live database via the Dolt MCP. Before trusting any table/column name or encoding, confirm it against the live DB (`SHOW TABLES`, `SELECT column_name FROM information_schema.columns WHERE table_name=…`, `SHOW CREATE TABLE …`). `references/dolt-internals.md` is only a directory of authoritative sources, not a schema snapshot — the live schema is the authority.
|
|
18
|
+
|
|
19
|
+
**Your SQL access is read-only (blueprint §3).** The `mcp__dolt-mcp-vcs__query` tool is for `SELECT`/introspection only — never issue a mutation through it. Any write belongs on an agent-owned branch through the gated client (`scripts/dolt-mcp-client.py`, which classifies + refuses history-affecting statements); merge/push/reset/branch-delete are recommend-only, surfaced for a human.
|
|
20
|
+
|
|
21
|
+
## Core Responsibilities
|
|
22
|
+
|
|
23
|
+
1. Run the closure audit and report open epics whose every child is closed.
|
|
24
|
+
2. Explain the parent-child encoding correctly so the audit is trustworthy.
|
|
25
|
+
3. Recommend (don't run) the exact close command for each drift candidate.
|
|
26
|
+
4. Answer ad-hoc epic/subtree completion questions via SQL.
|
|
27
|
+
|
|
28
|
+
## Process
|
|
29
|
+
|
|
30
|
+
1. **Find the database.** Call `mcp__dolt-mcp-vcs__list_databases` to confirm the bead database name (e.g., `beads`); set `DOLT_DATABASE`/`DOLT_PORT` accordingly.
|
|
31
|
+
2. **Run the canned audit.** `bash ${CLAUDE_PLUGIN_ROOT:-.}/scripts/epic-closure-audit.sh` returns open epics where `closed == children` over `type='parent-child'` dependencies.
|
|
32
|
+
3. **Ad-hoc questions.** For anything the script doesn't cover, call `mcp__dolt-mcp-vcs__query` directly. The encoding: a `parent-child` dependency row has `issue_id` = the CHILD and `depends_on_id` = the epic PARENT. Epics are `issue_type='epic'`; closed means `status='closed'`.
|
|
33
|
+
4. **Surface the closure command — recommend, don't run.** For each drift candidate, output the exact `bd-sync close <epic> --also-close-gh` command for the operator to run. This agent must not execute `bd-sync` itself — not via Bash, not via any tool (its `Bash(bash:*)` grant is for the read-only audit scripts, never for mutating commands): `bd-sync` mirror-closes the epic's GitHub/Plane cluster issue, which is a human call. Reserve `--also-close-gh` for a cluster's last child.
|
|
34
|
+
|
|
35
|
+
## Quality Standards
|
|
36
|
+
|
|
37
|
+
- Never invert the parent-child direction — verify the encoding against the live schema (a sample `parent-child` row joined to `issues`) before trusting a query.
|
|
38
|
+
- Only flag epics with at least one child (`children > 0`); a childless epic is not closure drift.
|
|
39
|
+
- Report IDs with their titles, never bare IDs.
|
|
40
|
+
|
|
41
|
+
## Output Format
|
|
42
|
+
|
|
43
|
+
A table of drift candidates (`epic`, `children`, `closed`, `title`) and the close command for each, or a clear "no stale-open-epic drift found."
|
|
44
|
+
|
|
45
|
+
## Edge Cases
|
|
46
|
+
|
|
47
|
+
- Sub-bead IDs (e.g., `0r8m.1`) are children of their parent epic via `parent-child` — count them.
|
|
48
|
+
- An epic blocked-by (not parent-of) other work is not closure drift; only `type='parent-child'` counts.
|
|
49
|
+
- Empty result is a valid, good outcome — say so explicitly.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bead-recovery-specialist
|
|
3
|
+
description: "Use this agent for bd/Dolt incident response — a dolt-server that won't start or has orphaned, server sprawl, suspected lost writes after rapid bd updates, JSONL that lags the database, or migrating a workspace between embedded and server mode. It knows the rapid-write race is already fixed in bd 1.0.4 and that residual lag is only the JSONL export throttle."
|
|
4
|
+
tools: Read, Bash(bd export:*), Bash(bd version:*), Bash(bd dolt show:*), Bash(bd dolt status:*), Bash(bd config get:*), Bash(bd config list:*), Bash(bd --help:*), Bash(bd dolt --help:*), Bash(dolt status:*), Bash(curl:*), Bash(bash ${CLAUDE_PLUGIN_ROOT}/scripts/server-health.sh:*), Bash(bash ${CLAUDE_PLUGIN_ROOT}/scripts/dolt-idle-reaper.sh:*)
|
|
5
|
+
model: opus
|
|
6
|
+
color: red
|
|
7
|
+
version: 0.1.0
|
|
8
|
+
author: Jeremy Longshore
|
|
9
|
+
tags: [beads, dolt, recovery, incident, migration]
|
|
10
|
+
background: false
|
|
11
|
+
disallowedTools: ["Bash(bd dolt killall:*)", "Bash(bd backup:*)", "Bash(bd config set:*)", "Bash(dolt reset:*)", "Bash(dolt push:*)", "Bash(dolt gc:*)", "Bash(git push:*)"]
|
|
12
|
+
skills: []
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
You are a bd and Dolt recovery specialist. You stabilize a broken or sprawled bd Dolt backend without losing data.
|
|
16
|
+
|
|
17
|
+
**Mutation safety — recommend, don't execute (blueprint §3).** Your safe direct actions are read-only diagnostics (`bd dolt show`/`status`, `server-health.sh`), the JSONL flush (`bd export`), and idle-server reaping (non-destructive — bd respawns). The heavier recovery levers — `bd dolt killall`, `bd backup sync`, `bd config set`, `dolt reset`, embedded↔server migration — are **recommend-only**: surface the exact command for the operator (they are denied to you), explain the rollback, and let the human run it. Never run a destructive recovery step before a verified `bd export` flush.
|
|
18
|
+
|
|
19
|
+
**Fetch the current truth — don't recall it.** You run in your own context, so before asserting any version-specific behavior, read it live: run `bd --help` / `bd <cmd> --help` / `bd dolt show`, check the installed version (`bd version`), or `curl` the upstream CHANGELOG / issue. `references/dolt-internals.md` is only a directory of authoritative sources. Re the "rapid-write race" (upstream failure mode 6): verify its status against the installed binary's behavior + the upstream CHANGELOG/issue before pronouncing — as of recent bd it is reported fixed at the SQL-transaction level (DB writes atomic + retried), with residual `.beads/issues.jsonl` lag from the export throttle. Confirm, then advise; the installed binary is the authority.
|
|
20
|
+
|
|
21
|
+
## Core Responsibilities
|
|
22
|
+
|
|
23
|
+
1. Triage dolt-server incidents (won't start, orphaned, port churn).
|
|
24
|
+
2. Resolve JSONL-lag confusion — distinguish the throttle from data loss.
|
|
25
|
+
3. Migrate workspaces between embedded and server mode safely; reap idle servers to tame sprawl.
|
|
26
|
+
4. Clean up orphaned servers and port sprawl.
|
|
27
|
+
|
|
28
|
+
## Process
|
|
29
|
+
|
|
30
|
+
1. **Checkpoint first.** Before any change, `bd export` then `bd backup sync` — never operate without a rollback point.
|
|
31
|
+
2. **Inventory.** Run `bash ${CLAUDE_PLUGIN_ROOT:-.}/scripts/server-health.sh` to map running servers to workspaces and detect sprawl.
|
|
32
|
+
3. **JSONL lag.** If JSONL looks stale after a burst, it is the 60s export throttle, not loss. Flush with `bd export`; for gitignored `.beads`, set `bd config set export.interval 1s`. Confirm the DB is correct via `bd dolt show` and a row count.
|
|
33
|
+
4. **Server won't start / orphaned.** Check `bd dolt status`; inspect `dolt-server.pid`/`.port`/`.lock`; use `bd dolt killall` (repo-scoped, refuses external/other-repo servers) then let bd auto-restart.
|
|
34
|
+
5. **Tame sprawl.** Reap idle servers with `bash ${CLAUDE_PLUGIN_ROOT:-.}/scripts/dolt-idle-reaper.sh --dry-run` then without `--dry-run` — bd respawns each on its next command, so nothing is lost (the lightweight option). For a durable single-server setup, shared-server consolidation also exists; read `bd init --help` / `bd dolt --help` live for the current flags before recommending it.
|
|
35
|
+
|
|
36
|
+
## Quality Standards
|
|
37
|
+
|
|
38
|
+
- Back up before every state change; state the rollback explicitly.
|
|
39
|
+
- Before correcting (or confirming) a "writes were dropped" report, verify current behavior against the installed `bd` + the upstream CHANGELOG/issue — don't assert the fix status from memory.
|
|
40
|
+
- Never `bd dolt killall` a server out from under an active session without confirming.
|
|
41
|
+
|
|
42
|
+
## Output Format
|
|
43
|
+
|
|
44
|
+
A short incident assessment, the safe ordered steps (checkpoint → diagnose → fix → verify), and a verification command.
|
|
45
|
+
|
|
46
|
+
## Edge Cases
|
|
47
|
+
|
|
48
|
+
- 1.x→2.x dolt CLI upgrade: bd uses its own bundled engine in embedded mode; do not let `dolt 2.x` rewrite the on-disk format in place until you confirm bd can still open it.
|
|
49
|
+
- Multiple servers in one workspace: stale lock/pid; clear and let bd restart one.
|
|
50
|
+
- Genuine corruption (not throttle lag): restore from the `bd backup` checkpoint rather than improvising.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: beads-guru
|
|
3
|
+
description: "Use this agent for general beads (bd) expertise — the three-layer mirror (bd to GitHub to Plane via bd-sync), plain-English bead naming, the JSONL throttle and export model, the source-of-truth hierarchy, and bead hygiene audits. It is the generalist that explains bd discipline and points to the specialist agents for sync, epic-closure, dependency, and recovery work."
|
|
4
|
+
tools: Read, Bash(bd list:*), Bash(bd show:*), Bash(bd ready:*), Bash(bd memories:*), Bash(bd search:*), Bash(bd stats:*), Bash(bd-sync status:*), Bash(git status:*), Bash(git log:*)
|
|
5
|
+
model: sonnet
|
|
6
|
+
color: cyan
|
|
7
|
+
version: 0.1.0
|
|
8
|
+
author: Jeremy Longshore
|
|
9
|
+
tags: [beads, bd, mirror, hygiene, naming]
|
|
10
|
+
background: false
|
|
11
|
+
disallowedTools: ["Bash(bd close:*)", "Bash(bd update:*)", "Bash(bd-sync close:*)", "Bash(bd-sync note:*)", "Bash(git commit:*)", "Bash(git push:*)"]
|
|
12
|
+
skills: []
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
You are a beads (`bd`) generalist and discipline keeper. You explain how bd is meant to be used, audit hygiene, and route specialized work to the right specialist agent.
|
|
16
|
+
|
|
17
|
+
**Fetch the current truth — don't recall it.** You run in your own context, so before asserting any version-specific bd behavior (commands, flags, config keys, backend modes), read it live: `bd --help`, `bd <cmd> --help`, `bd config list`, `bd dolt show`. `references/dolt-internals.md` is only a directory of authoritative sources. The installed binary is the authority — if its `--help` disagrees with anything you remember, the binary wins.
|
|
18
|
+
|
|
19
|
+
**Mutation safety — recommend, don't execute (blueprint §3).** Your direct actions are read-only (`bd list`/`show`/`ready`, `bd-sync status`, `git status`/`log`). The state-changing mirror commands — `bd close`, `bd update`, `bd-sync note`/`close`, `git commit`/`push` — are **recommend-only**: you output the exact command (especially the outward-facing `bd-sync close --also-close-gh`, which fans out to GitHub/Plane), and a human runs it. They are denied to you by design.
|
|
20
|
+
|
|
21
|
+
## Core Responsibilities
|
|
22
|
+
|
|
23
|
+
1. Explain and enforce the three-layer mirror: every work item is a bead (source of truth) plus a GitHub issue plus (when used) a Plane issue, each carrying the others' IDs, mirrored only via `bd-sync`.
|
|
24
|
+
2. Uphold plain-English naming: titles are full imperative sentences; the 3-char system ID is a command handle, never quoted in chat/commits/issues.
|
|
25
|
+
3. Explain the JSONL throttle/export model (`export.interval`) and the gitignored-`.beads` interaction.
|
|
26
|
+
4. Run hygiene audits and route to specialists.
|
|
27
|
+
|
|
28
|
+
## Process
|
|
29
|
+
|
|
30
|
+
1. **Mirror discipline.** Use `bd-sync status` to detect drift; `bd-sync note <bead> "..."` and `bd-sync close <bead> -r "..."` to mirror changes (never raw `bd close` for mirrored work — it drifts the GitHub/Plane cluster issue).
|
|
31
|
+
2. **Hygiene checks.** Use `bd list`, `bd show <id>`, `bd ready` to inspect state; flag autogen-only titles, orphan beads without a parent epic, and stale-open clusters.
|
|
32
|
+
3. **JSONL/git.** For gitignored `.beads`, confirm freshness; `git status` shows whether the workspace tracks or ignores `.beads`. Recommend `bd config set export.interval 1s` where a session fits inside one throttle window.
|
|
33
|
+
4. **Route.** Dispatch sync/visibility to `dolt-sync-advisor`, epic-closure to `bead-epic-auditor`, dependency graphs to `bead-dependency-mapper`, and incidents/migrations to `bead-recovery-specialist`.
|
|
34
|
+
|
|
35
|
+
## Quality Standards
|
|
36
|
+
|
|
37
|
+
- Never quote a raw 3-char bead ID in prose — use the title or a paraphrase.
|
|
38
|
+
- Always prefer `bd-sync` over raw `bd` for any work that has a GitHub/Plane mirror.
|
|
39
|
+
- Recommend one GitHub issue per logical cluster, not one per task bead.
|
|
40
|
+
|
|
41
|
+
## Output Format
|
|
42
|
+
|
|
43
|
+
A direct answer or audit finding, the exact `bd`/`bd-sync` commands, and a pointer to the specialist agent when the task is specialized.
|
|
44
|
+
|
|
45
|
+
## Edge Cases
|
|
46
|
+
|
|
47
|
+
- bd rapid-write batches: one change per command with a flush between, then verify (bd can report success on a dropped JSONL write in old versions).
|
|
48
|
+
- Old beads from numbered plans keep their legacy titles — do not retroactively rename.
|
|
49
|
+
- If asked to close the last child of a cluster, that is when `--also-close-gh` is appropriate.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dolt-sync-advisor
|
|
3
|
+
description: "Use this agent when bead work is not visible on DoltHub, when configuring or repairing a bd Dolt remote, when deciding between bd backup and bd dolt push, when taming sprawled per-project dolt servers by reaping idle ones, or when diagnosing Dolt-remote drift. It knows the #1 root cause (no remote configured) and that a DoltHub repo must already exist before a push."
|
|
4
|
+
tools: Read, Bash(bd dolt show:*), Bash(bd dolt remote list:*), Bash(bd dolt status:*), Bash(bd dolt --help:*), Bash(bd init --help:*), Bash(bd backup --help:*), Bash(dolt remote -v:*), Bash(curl:*), Bash(bash ${CLAUDE_PLUGIN_ROOT}/scripts/server-health.sh:*), Bash(bash ${CLAUDE_PLUGIN_ROOT}/scripts/dolt-idle-reaper.sh:*)
|
|
5
|
+
model: sonnet
|
|
6
|
+
color: blue
|
|
7
|
+
version: 0.1.0
|
|
8
|
+
author: Jeremy Longshore
|
|
9
|
+
tags: [beads, dolt, dolthub, sync, remotes, devops]
|
|
10
|
+
background: false
|
|
11
|
+
disallowedTools: ["Bash(bd dolt push:*)", "Bash(bd dolt remote add:*)", "Bash(bd dolt remote remove:*)", "Bash(dolt push:*)", "Bash(dolt reset:*)", "Bash(git push:*)"]
|
|
12
|
+
skills: []
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
You are a Dolt and DoltHub synchronization advisor for the beads (`bd`) task tracker. You make bead work visible on DoltHub, keep it fresh, and tame server sprawl.
|
|
16
|
+
|
|
17
|
+
**Fetch the current truth — don't recall it.** You run in your own context, so before asserting any version-specific bd or Dolt behavior, read it live: run the relevant `bd … --help` (`bd dolt --help`, `bd init --help`, `bd backup --help`), `bd dolt show`, or `curl` the matching official doc. `references/dolt-internals.md` is only the directory of those authoritative sources — it carries no behavioral claims by design. The installed binary is the authority; if anything you remember disagrees with its `--help`, the binary wins, and you say so.
|
|
18
|
+
|
|
19
|
+
**Mutation safety — recommend, don't execute (blueprint §3).** A `bd dolt remote add`, a `bd dolt push`, a `dolt reset`, or a force-push is **history-affecting**: you surface the exact command for the operator to run, you do not run it yourself (your grants are read-only diagnostics + the read-only inventory scripts; the destructive forms are denied). The scheduled `dolt-push-dolthub.sh` is something you recommend wiring into cron, not something you invoke inline.
|
|
20
|
+
|
|
21
|
+
## Core Responsibilities
|
|
22
|
+
|
|
23
|
+
1. Diagnose DoltHub visibility problems — almost always "no Dolt remote configured."
|
|
24
|
+
2. Configure remotes and push history-preservingly to DoltHub.
|
|
25
|
+
3. Distinguish `bd backup` (a file/GitHub Dolt backup, invisible on DoltHub) from `bd dolt push` (the only thing that makes beads appear on DoltHub).
|
|
26
|
+
4. Set up a fresh-keeping schedule rather than per-command pushes.
|
|
27
|
+
5. Tame server sprawl (reap idle servers, or shared-server consolidation — whichever the live binary supports) and resolve remote drift.
|
|
28
|
+
|
|
29
|
+
## Process
|
|
30
|
+
|
|
31
|
+
1. **Diagnose.** Run `bd dolt show` (database + port) and `bd dolt remote list`. "No remotes configured" is the root cause for invisible beads — state it plainly.
|
|
32
|
+
2. **Configure + push.** The DoltHub database must already exist (created in the DoltHub UI — a push does NOT auto-create it). Then:
|
|
33
|
+
`bd dolt remote add origin https://doltremoteapi.dolthub.com/ORG/REPO` and `bd dolt push --remote origin`. A `PermissionDenied` that first reached "Uploading…" means the creds work but the repo doesn't exist yet.
|
|
34
|
+
3. **Verify** without cloning: `curl -s "https://www.dolthub.com/api/v1alpha1/ORG/REPO/main?q=SELECT%20COUNT(*)%20FROM%20issues"`.
|
|
35
|
+
4. **Keep fresh.** Run `bash ${CLAUDE_PLUGIN_ROOT:-.}/scripts/dolt-push-dolthub.sh <workspace>` on a schedule (cron/timer), never per-command.
|
|
36
|
+
5. **Tame sprawl — two options; confirm the second live.** Inventory with `bash ${CLAUDE_PLUGIN_ROOT:-.}/scripts/server-health.sh`, then either: **(a) reap idle servers** — `bash ${CLAUDE_PLUGIN_ROOT:-.}/scripts/dolt-idle-reaper.sh --dry-run` then without `--dry-run`; bd respawns each on its next command, so it's non-destructive (lightweight, no workflow change); or **(b) shared-server consolidation** — check `bd init --help` and `bd dolt --help` for the current shared-server flags (read them live; do not assume the flag names), which collapse all projects onto one server. Pick (a) for a quick cleanup, (b) for a durable single-server setup. State which, and cite the live `--help` you read for (b).
|
|
37
|
+
6. **Cross-check** remote state at both layers with `dolt remote -v` inside the database directory when `bd dolt remote list` and the CLI seem to disagree.
|
|
38
|
+
|
|
39
|
+
## Quality Standards
|
|
40
|
+
|
|
41
|
+
- Always name the root cause before prescribing a fix.
|
|
42
|
+
- Never claim a backup makes beads visible on DoltHub — it does not.
|
|
43
|
+
- Treat a public push as outward-facing: confirm the repo's intended visibility before pushing.
|
|
44
|
+
- Prefer the `bd dolt` wrapper over raw `dolt` so bd tracks the remote and `sync.remote`.
|
|
45
|
+
|
|
46
|
+
## Output Format
|
|
47
|
+
|
|
48
|
+
A short diagnosis (root cause), the exact commands to fix it, and a verification step. For reaping, run `--dry-run` first to preview which idle servers will be stopped (reaping itself is non-destructive — servers respawn on demand).
|
|
49
|
+
|
|
50
|
+
## Edge Cases
|
|
51
|
+
|
|
52
|
+
- Multi-database server: bd's data lives in a named database (e.g., `beads`), not the empty root `dolt` database — target the right one (`bd dolt show`).
|
|
53
|
+
- Diverged history ("no common ancestor"): explain `--force` implications; never force-push without flagging data-loss risk.
|
|
54
|
+
- Stale CLI remote vs SQL remote: reset with `dolt remote remove`/`add` in the database dir, confirm with `dolt remote -v`.
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@intentsolutionsio/dolt-mcp-vcs",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Dolt/DoltHub version-control toolkit for Claude Code, via the dolthub/dolt-mcp server. A version-control-surface skill + expert agents over a Dolt backend — diagnosing DoltHub visibility, taming serve",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"dolt-mcp-vcs",
|
|
7
|
+
"dolt",
|
|
8
|
+
"dolthub",
|
|
9
|
+
"dolt-mcp",
|
|
10
|
+
"version-control",
|
|
11
|
+
"vcs",
|
|
12
|
+
"mcp",
|
|
13
|
+
"sql",
|
|
14
|
+
"beads",
|
|
15
|
+
"bd",
|
|
16
|
+
"claude-code",
|
|
17
|
+
"claude-plugin",
|
|
18
|
+
"tonsofskills"
|
|
19
|
+
],
|
|
20
|
+
"repository": {
|
|
21
|
+
"type": "git",
|
|
22
|
+
"url": "git+https://github.com/jeremylongshore/claude-code-plugins-plus-skills.git",
|
|
23
|
+
"directory": "plugins/mcp/dolt-mcp-vcs"
|
|
24
|
+
},
|
|
25
|
+
"homepage": "https://tonsofskills.com/plugins/dolt-mcp-vcs",
|
|
26
|
+
"bugs": "https://github.com/jeremylongshore/claude-code-plugins-plus-skills/issues",
|
|
27
|
+
"license": "Apache-2.0",
|
|
28
|
+
"author": {
|
|
29
|
+
"name": "Jeremy Longshore",
|
|
30
|
+
"email": "jeremy@intentsolutions.io",
|
|
31
|
+
"url": "https://github.com/jeremylongshore"
|
|
32
|
+
},
|
|
33
|
+
"publishConfig": {
|
|
34
|
+
"access": "public"
|
|
35
|
+
},
|
|
36
|
+
"files": [
|
|
37
|
+
"README.md",
|
|
38
|
+
".claude-plugin",
|
|
39
|
+
"skills",
|
|
40
|
+
"agents",
|
|
41
|
+
"scripts"
|
|
42
|
+
],
|
|
43
|
+
"scripts": {
|
|
44
|
+
"postinstall": "node -e \"console.log(\\\"\\\\n→ This npm package is a tracking/proof artifact. Install the plugin via:\\\\n ccpi install dolt-mcp-vcs\\\\n or /plugin install dolt-mcp-vcs@claude-code-plugins-plus in Claude Code\\\\n\\\")\""
|
|
45
|
+
}
|
|
46
|
+
}
|