@mthanh/vespercli 1.5.1 → 1.7.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/README.md +144 -88
- package/assets/CATALOG.md +19 -1
- package/assets/claude/agents/feature-wrap-document.md +138 -13
- package/assets/claude/agents/history-logger.md +22 -0
- package/assets/claude/agents/workspace-learner.md +45 -12
- package/assets/claude/commands/compact-knowledge.md +1 -1
- package/assets/claude/commands/revalidate-knowledge.md +17 -0
- package/assets/claude/context.md.tpl +38 -14
- package/assets/claude/skills/agent-fundamentals/SKILL.md +15 -0
- package/assets/claude/skills/agent-fundamentals/references/codebase-query.md +4 -0
- package/assets/claude/skills/gitlab-guardrails/SKILL.md +62 -0
- package/assets/claude/skills/vesper-catalog-editing-safety/SKILL.md +141 -0
- package/assets/claude/vesper-orchestrator.md +10 -0
- package/assets/core/agents/feature-wrap-document.agent.md +37 -11
- package/assets/core/agents/history-logger.agent.md +22 -0
- package/assets/core/agents/vesper.agent.md +5 -0
- package/assets/core/agents/workspace-learner.agent.md +43 -12
- package/assets/core/prompts/compact-knowledge.prompt.md +1 -1
- package/assets/core/prompts/revalidate-knowledge.prompt.md +19 -0
- package/assets/core/skills/agent-fundamentals/SKILL.md +15 -0
- package/assets/core/skills/agent-fundamentals/references/codebase-query.md +4 -0
- package/assets/hooks/pre-commit +17 -1
- package/assets/manifest.json +37 -0
- package/assets/skills/aesthetic/manifest.json +1 -1
- package/assets/skills/ai-multimodal/manifest.json +1 -1
- package/assets/skills/backend-development/manifest.json +1 -1
- package/assets/skills/better-auth/manifest.json +1 -1
- package/assets/skills/chrome-devtools/manifest.json +1 -1
- package/assets/skills/code-review/manifest.json +1 -1
- package/assets/skills/databases/manifest.json +1 -1
- package/assets/skills/debugging/manifest.json +1 -1
- package/assets/skills/devops/manifest.json +1 -1
- package/assets/skills/docs-seeker/manifest.json +1 -1
- package/assets/skills/document-skills/manifest.json +1 -1
- package/assets/skills/frontend-design/manifest.json +1 -1
- package/assets/skills/gitlab-guardrails/SKILL.md +62 -0
- package/assets/skills/gitlab-guardrails/manifest.json +8 -0
- package/assets/skills/google-adk-python/manifest.json +1 -1
- package/assets/skills/mcp-builder/manifest.json +1 -1
- package/assets/skills/mermaidjs-v11/manifest.json +1 -1
- package/assets/skills/premium-frontend-ui/manifest.json +6 -4
- package/assets/skills/problem-solving/manifest.json +1 -1
- package/assets/skills/react-mui-tanstack/manifest.json +16 -16
- package/assets/skills/sequential-thinking/manifest.json +1 -1
- package/assets/skills/skill-creator/manifest.json +1 -1
- package/assets/skills/tailwind-shadcn/manifest.json +102 -102
- package/assets/skills/vercel-react-best-practices/manifest.json +2 -2
- package/assets/skills/vesper-catalog-editing-safety/SKILL.md +141 -0
- package/assets/skills/vesper-catalog-editing-safety/manifest.json +8 -0
- package/assets/skills/vscode-agent-config/manifest.json +8 -0
- package/assets/skills/web-design-guidelines/manifest.json +1 -1
- package/assets/skills/web-frameworks/manifest.json +1 -1
- package/dist/cli.min.js +25 -25
- package/package.json +5 -2
- package/src/mcp/vesper-indexing/dist/constants.d.ts.map +1 -1
- package/src/mcp/vesper-indexing/dist/constants.js +3 -0
- package/src/mcp/vesper-indexing/dist/constants.js.map +1 -1
- package/src/mcp/vesper-indexing/package-lock.json +2 -2
- package/src/mcp/vesper-indexing/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,7 +2,65 @@
|
|
|
2
2
|
|
|
3
3
|
CLI tool to manage AI agents, prompts, instructions, and skills for your workspace — for GitHub Copilot Chat in VS Code, and for Claude Code.
|
|
4
4
|
|
|
5
|
-
**Vesper** is a comprehensive agent suite that supercharges your AI coding assistant with specialized agents, reusable skills, and structured workflows.
|
|
5
|
+
**Vesper** is a comprehensive agent suite that supercharges your AI coding assistant with specialized agents, reusable skills, and structured workflows. It supports two platforms — **GitHub Copilot** (VS Code) and **Claude Code** — chosen via a multi-select during `vespercli init`; a single workspace can run both at once, sharing the same `.vesper/` tracking state.
|
|
6
|
+
|
|
7
|
+
## The Vesper Lifecycle
|
|
8
|
+
|
|
9
|
+
Vesper is a **pure orchestrator** — it routes, gates, and approves every hand-off, but never does the work itself. Each task travels one revolution of the cycle: the violet **delivery loop** ships it (specialist subagents research, plan, implement, review, and test, with every step reading and writing tracking documents under `.vesper/.tracking/`), and the amber **learning loop** mines what just happened — comparing plan vs. actual, then minting skills, instructions, and knowledge-graph memory that are re-injected into the next task.
|
|
10
|
+
|
|
11
|
+
<picture>
|
|
12
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/images/lifecycle-ring-dark.svg">
|
|
13
|
+
<img src="docs/images/lifecycle-ring-light.svg" alt="Vesper lifecycle ring: Research, Plan, Validate, Implement, Review + Test (delivery), then Retrospect, Store, Re-inject (learning), with Vesper orchestrating at the center" width="760">
|
|
14
|
+
</picture>
|
|
15
|
+
|
|
16
|
+
Every revolution leaves the system smarter: divergences from plan become glob-scoped instructions, repeated patterns become skills, and task context survives interruption — across sessions and across both client targets.
|
|
17
|
+
|
|
18
|
+
### Tracking documents — the paper trail
|
|
19
|
+
|
|
20
|
+
Delegation prompts pass **paths, never contents**. Each document has one writer and defined readers, so a fresh-context subagent can pick up mid-pipeline — even a subagent on the *other client* (Copilot ↔ Claude Code share `.vesper/` by design).
|
|
21
|
+
|
|
22
|
+
<picture>
|
|
23
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/images/panel-ledger-dark.svg">
|
|
24
|
+
<img src="docs/images/panel-ledger-light.svg" alt="Tracking-documents ledger: research, plans, details, prompts, changes, issues, and stories files — each with one writer and defined consumers; story folders carry status: refining, backlog, inprogress, inreview, completed" width="920">
|
|
25
|
+
</picture>
|
|
26
|
+
|
|
27
|
+
### Implementation runs on prompts, not vibes
|
|
28
|
+
|
|
29
|
+
The planner doesn't just plan — it writes the *executable brief* each developer will follow:
|
|
30
|
+
|
|
31
|
+
<picture>
|
|
32
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/images/panel-chain-dark.svg">
|
|
33
|
+
<img src="docs/images/panel-chain-light.svg" alt="Prompt chain: planner emits plan, details, and one prompt file per track; Vesper's blocking gate verifies all planning files exist; developers execute the prompt exactly in parallel; divergences from plan are logged in the changes file as the retrospective's raw material" width="920">
|
|
34
|
+
</picture>
|
|
35
|
+
|
|
36
|
+
### Task tracker — board is the source of truth
|
|
37
|
+
|
|
38
|
+
The Task Management section of the orchestration file names the system (ClickUp, Jira, …) and its Task Agent; the pipeline never talks to a board directly. **Local mode** works with zero configuration — the story folders alone carry status.
|
|
39
|
+
|
|
40
|
+
<picture>
|
|
41
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/images/panel-tracker-dark.svg">
|
|
42
|
+
<img src="docs/images/panel-tracker-light.svg" alt="Task tracker: ClickUp, Jira, or Local; status flow REFINED to IN PROGRESS to IN REVIEW to DONE with routing guards (never re-refine, re-assign, or re-implement); board wins discrepancies; Case A fetches a referenced task, Case B auto-creates one after refinement" width="920">
|
|
43
|
+
</picture>
|
|
44
|
+
|
|
45
|
+
### The retrospective engine — where skills are born
|
|
46
|
+
|
|
47
|
+
After every implementation, the Feature Wrap agent compares what was planned against what actually happened, then routes each learning through a decision tree:
|
|
48
|
+
|
|
49
|
+
<picture>
|
|
50
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/images/panel-retro-dark.svg">
|
|
51
|
+
<img src="docs/images/panel-retro-light.svg" alt="Retrospective engine: mines changes, plans, details, research, and git diffs; patterns in 3+ files become skills, structures in 5+ files become instructions; decision tree routes learnings to INSTRUCTION, SKILL, DOCUMENTATION, or the MEMORY GRAPH, behind Vesper's approval filter" width="920">
|
|
52
|
+
</picture>
|
|
53
|
+
|
|
54
|
+
### Where learning re-enters the pipeline
|
|
55
|
+
|
|
56
|
+
Capture is worthless without injection — every knowledge output has a named consumer at a named step:
|
|
57
|
+
|
|
58
|
+
<picture>
|
|
59
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/images/panel-reentry-dark.svg">
|
|
60
|
+
<img src="docs/images/panel-reentry-light.svg" alt="Four re-entry points: memory search before research, current_task recall before planning, roster skill injection on every delegation, and glob-bound instruction auto-apply on every matching edit" width="920">
|
|
61
|
+
</picture>
|
|
62
|
+
|
|
63
|
+
The design optimizes for compounding: mistakes convert to rules, workflows convert to skills, and state survives interruption, `/clear`, and even a client switch. When a fix loop caps out (10 iterations), unresolved issues are written to `issues/` and the pipeline continues — dead ends become documents, not lost context.
|
|
6
64
|
|
|
7
65
|
## Installation
|
|
8
66
|
|
|
@@ -17,29 +75,24 @@ npx @mthanh/vespercli <command>
|
|
|
17
75
|
## Quick Start
|
|
18
76
|
|
|
19
77
|
```bash
|
|
20
|
-
# Initialize Vesper in your project
|
|
21
|
-
# (
|
|
22
|
-
# pass --target copilot,claude or --target all to skip the prompt)
|
|
78
|
+
# Initialize Vesper in your project — multi-select GitHub Copilot and/or Claude Code
|
|
79
|
+
# (pass --target copilot,claude or --target all to skip the prompt)
|
|
23
80
|
vespercli init
|
|
81
|
+
```
|
|
24
82
|
|
|
25
|
-
|
|
26
|
-
vespercli add --agent code-reviewer code-planner
|
|
27
|
-
|
|
28
|
-
# Add skills (as local overrides)
|
|
29
|
-
vespercli add --skill aesthetic tailwind-shadcn
|
|
83
|
+
Then say hello:
|
|
30
84
|
|
|
31
|
-
|
|
32
|
-
|
|
85
|
+
- **GitHub Copilot** — reload VS Code (`Developer: Reload Window`), open Copilot Chat, select **Vesper** from the agent dropdown, and prompt `Vesperize` — Vesper scans the workspace and assembles your team.
|
|
86
|
+
- **Claude Code** — start a session and prompt `init` — Vesper detects the missing Team Roster and runs the full workspace setup automatically.
|
|
33
87
|
|
|
34
|
-
|
|
35
|
-
vespercli update
|
|
36
|
-
```
|
|
88
|
+
## Settings-based Asset Injection
|
|
37
89
|
|
|
38
|
-
|
|
90
|
+
Vesper integrates by **pointing your AI client at the packaged catalog** instead of copying assets into your repo — VS Code workspace settings for Copilot, a user-level plugin for Claude Code. Only project-specific files (roster, context, tracking) live in the workspace.
|
|
39
91
|
|
|
40
|
-
|
|
92
|
+
<details>
|
|
93
|
+
<summary><b>GitHub Copilot</b> — VS Code settings + MCP servers</summary>
|
|
41
94
|
|
|
42
|
-
|
|
95
|
+
`vespercli init` (with Copilot selected):
|
|
43
96
|
|
|
44
97
|
- Creates/updates `.vscode/settings.json` to point Copilot Chat at Vesper's packaged assets.
|
|
45
98
|
- Configures core MCP servers in `.vscode/mcp.json`:
|
|
@@ -79,7 +132,29 @@ Example (illustrative):
|
|
|
79
132
|
}
|
|
80
133
|
```
|
|
81
134
|
|
|
82
|
-
|
|
135
|
+
</details>
|
|
136
|
+
|
|
137
|
+
<details>
|
|
138
|
+
<summary><b>Claude Code</b> — user-level plugin + project orchestrator files</summary>
|
|
139
|
+
|
|
140
|
+
Claude Code has no equivalent of VS Code's `chat.agentFilesLocations` setting, so the specialist catalog is distributed as a **user-level plugin** instead: `vespercli init` (with Claude Code selected) installs it once to `~/.claude/skills/vesper/`, making it available in **every** Claude Code project on the machine. In the current project it creates only:
|
|
141
|
+
|
|
142
|
+
- `CLAUDE.md` — a small guarded `@import` block pointing at the three files below (never touches the rest of your `CLAUDE.md`)
|
|
143
|
+
- `.claude/vesper/orchestrator.md` — the orchestration playbook (routing rules, delegation), refreshed on every `init`/`update`
|
|
144
|
+
- `.claude/vesper/orchestration.md` — this project's Team Roster + Task Management config
|
|
145
|
+
- `.claude/vesper/context.md` — this project's architecture/stack/conventions, as a slim, freshness-stamped core (≤200 lines, auto-injected into every session); a fuller **on-demand** tier under `.claude/vesper/context/` (conventions, integrations, technical debt, a bounded Recent-Decisions ring buffer) fills in as the Vesper agent learns the workspace, and is read only when an agent needs that detail
|
|
146
|
+
- `.mcp.json` and `.claude/settings.json` — the `vesper-indexing` MCP server + its tool permissions
|
|
147
|
+
|
|
148
|
+
No editor dependency — these files are read by the Claude Code engine itself, so the same install works from the terminal CLI, VS Code extension, JetBrains, or the desktop app. During install you're asked once whether to prefix catalog names with `vesper-` to avoid collisions with other Claude Code kits.
|
|
149
|
+
|
|
150
|
+
Two slash commands manage that on-demand knowledge over time: `/compact-knowledge` (size-triggered — archives old history/tracking artifacts and trims the memory graph, non-destructively) and `/revalidate-knowledge` (staleness-triggered — re-scans the codebase, re-validates archived and core knowledge against it, and rebalances the slim-core/on-demand split); Vesper only ever suggests these, never auto-runs them.
|
|
151
|
+
|
|
152
|
+
A single project can have both targets installed at once — `.vesper/` (code index, story tracking, `history.md`) is shared and cross-client by design, so a story researched under Copilot can be implemented under Claude Code, or vice versa.
|
|
153
|
+
|
|
154
|
+
</details>
|
|
155
|
+
|
|
156
|
+
<details>
|
|
157
|
+
<summary><b>Local overrides</b> — customize specific assets</summary>
|
|
83
158
|
|
|
84
159
|
If you want to customize a specific agent/prompt/instruction/skill, use `vespercli add`.
|
|
85
160
|
|
|
@@ -87,16 +162,12 @@ If you want to customize a specific agent/prompt/instruction/skill, use `vesperc
|
|
|
87
162
|
- Local copies in `.vesper/` take precedence over the settings-based (package) assets.
|
|
88
163
|
- This is the recommended way to make small, intentional customizations without vendoring everything.
|
|
89
164
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
If Vesper detects a legacy install that previously copied assets into `.vesper/`, `vespercli init` will offer to migrate you to the settings-based approach.
|
|
93
|
-
|
|
94
|
-
- After migrating, you can keep any locally customized files as overrides.
|
|
95
|
-
- Everything else is discovered directly from the Vesper package.
|
|
165
|
+
</details>
|
|
96
166
|
|
|
97
167
|
## Commands
|
|
98
168
|
|
|
99
|
-
|
|
169
|
+
<details>
|
|
170
|
+
<summary><b><code>vespercli init</code></b> — initialize platform(s) in your workspace</summary>
|
|
100
171
|
|
|
101
172
|
Initialize Vesper in your workspace. Pick one or more platforms (GitHub Copilot
|
|
102
173
|
and/or Claude Code) via a multi-select prompt; the CLI lays down the base setup
|
|
@@ -116,7 +187,10 @@ vespercli init --target claude -y # Non-interactive: Claude with default s
|
|
|
116
187
|
vespercli init --path /my/project # Specify workspace path
|
|
117
188
|
```
|
|
118
189
|
|
|
119
|
-
|
|
190
|
+
</details>
|
|
191
|
+
|
|
192
|
+
<details>
|
|
193
|
+
<summary><b><code>vespercli add</code></b> — add local overrides</summary>
|
|
120
194
|
|
|
121
195
|
Add local overrides (copies) for agents, prompts, instructions, or skills into `.vesper/`.
|
|
122
196
|
|
|
@@ -136,9 +210,15 @@ vespercli add -i nextjs reactjs
|
|
|
136
210
|
# Add skills
|
|
137
211
|
vespercli add --skill <name> [name2...]
|
|
138
212
|
vespercli add -s aesthetic backend-development
|
|
213
|
+
|
|
214
|
+
# For Claude Code, adds go to the shared plugin catalog instead
|
|
215
|
+
vespercli add agents code-reviewer --target claude
|
|
139
216
|
```
|
|
140
217
|
|
|
141
|
-
|
|
218
|
+
</details>
|
|
219
|
+
|
|
220
|
+
<details>
|
|
221
|
+
<summary><b><code>vespercli list</code></b> — list local overrides</summary>
|
|
142
222
|
|
|
143
223
|
List local override assets in `.vesper/`.
|
|
144
224
|
|
|
@@ -149,7 +229,10 @@ vespercli list --type agents # Filter by type
|
|
|
149
229
|
vespercli list -t skills # Short form
|
|
150
230
|
```
|
|
151
231
|
|
|
152
|
-
|
|
232
|
+
</details>
|
|
233
|
+
|
|
234
|
+
<details>
|
|
235
|
+
<summary><b><code>vespercli update</code></b> — refresh local overrides</summary>
|
|
153
236
|
|
|
154
237
|
Update local override assets from the package to get the latest versions.
|
|
155
238
|
|
|
@@ -158,7 +241,10 @@ vespercli update # Interactive confirmation
|
|
|
158
241
|
vespercli update -y # Skip confirmation
|
|
159
242
|
```
|
|
160
243
|
|
|
161
|
-
|
|
244
|
+
</details>
|
|
245
|
+
|
|
246
|
+
<details>
|
|
247
|
+
<summary><b><code>vespercli reset</code></b> — remove configuration and/or overrides</summary>
|
|
162
248
|
|
|
163
249
|
Remove Vesper configuration and/or local overrides.
|
|
164
250
|
|
|
@@ -170,7 +256,25 @@ vespercli reset --local-only # Only remove local `.vesper/` folder
|
|
|
170
256
|
vespercli reset --full # Remove EVERYTHING including vesper.agent.md (requires typing "YES")
|
|
171
257
|
```
|
|
172
258
|
|
|
173
|
-
|
|
259
|
+
</details>
|
|
260
|
+
|
|
261
|
+
<details>
|
|
262
|
+
<summary><b><code>vespercli worktree</code></b> — bootstrap a worktree's local-only artifacts</summary>
|
|
263
|
+
|
|
264
|
+
Bootstrap a git worktree (or the current workspace) with Vesper's **local-only** artifacts — files that are intentionally gitignored (`.mcp.json`, the code index `.vesper/index.db`, the gitignore guard block, the managed git hooks and `.gitattributes` merge strategy) and therefore don't come along with a plain `git worktree add`. Idempotent and safe to re-run; it already runs automatically via the Claude `SessionStart` hook, the VS Code folder-open task, and a `post-checkout` git hook, so you rarely need to invoke it by hand. No-op on a workspace that was never vesperized.
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
vespercli worktree bootstrap # Regenerate local-only files in this worktree
|
|
268
|
+
vespercli worktree bootstrap --quiet # Suppress non-error output (used by the hooks above)
|
|
269
|
+
vespercli worktree bootstrap --path /my/project
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
Bootstrap also refreshes the base branch's remote-tracking ref before rebuilding anything else: it resolves the base branch from `origin/HEAD` (e.g. `origin/master`) and runs a bounded (15s) `git fetch` — never `git pull`, so your checked-out branch and working tree are never touched. This keeps anything orienting against "what's on the base branch" (like a fresh worktree) looking at a recent `origin/<base>` instead of a possibly stale local checkout. It never fails the bootstrap: offline, no configured remote, or an unreachable/auth-expired remote all just log a warning (printed even under `--quiet`) and continue with the existing local refs.
|
|
273
|
+
|
|
274
|
+
</details>
|
|
275
|
+
|
|
276
|
+
<details>
|
|
277
|
+
<summary><b><code>vespercli mcp</code></b> — manage MCP servers</summary>
|
|
174
278
|
|
|
175
279
|
Manage MCP servers for whichever target(s) are installed here — Copilot (`.vscode/mcp.json`), Claude Code (`.mcp.json`), or both at once. `mcp add`/`mcp remove`/`mcp list` are for **optional catalog servers** (e.g. `clickup`); the three Vesper-core servers (`vesper-indexing`, `sequential-thinking`, `memory`) are managed separately via `mcp enable`/`mcp disable`/`mcp sync` and are never addable/removable through `mcp add`/`mcp remove`.
|
|
176
280
|
|
|
@@ -187,27 +291,21 @@ vespercli mcp sync # Re-sync tool auto-approval (Copilot
|
|
|
187
291
|
vespercli mcp reindex --full # Clear and rebuild the shared code index
|
|
188
292
|
```
|
|
189
293
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
### `vespercli --version`
|
|
294
|
+
</details>
|
|
193
295
|
|
|
194
|
-
|
|
296
|
+
<details>
|
|
297
|
+
<summary><b><code>vespercli --version</code></b> / <b><code>--help</code></b></summary>
|
|
195
298
|
|
|
196
299
|
```bash
|
|
197
|
-
vespercli -v
|
|
300
|
+
vespercli -v # Display the current version
|
|
198
301
|
vespercli --version
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
### `vespercli --help`
|
|
202
|
-
|
|
203
|
-
Display help information.
|
|
204
|
-
|
|
205
|
-
```bash
|
|
206
|
-
vespercli -h
|
|
302
|
+
vespercli -h # Display help information
|
|
207
303
|
vespercli --help
|
|
208
304
|
vespercli <command> --help
|
|
209
305
|
```
|
|
210
306
|
|
|
307
|
+
</details>
|
|
308
|
+
|
|
211
309
|
## Asset Types
|
|
212
310
|
|
|
213
311
|
Vesper provides a full catalog via VS Code settings, and supports optional local overrides.
|
|
@@ -221,52 +319,10 @@ Vesper provides a full catalog via VS Code settings, and supports optional local
|
|
|
221
319
|
|
|
222
320
|
## After Installation
|
|
223
321
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
3. Select **Vesper** from the agent dropdown
|
|
227
|
-
4. Start working with an AI agent suite that includes specialized developers, planners, reviewers, and more
|
|
228
|
-
|
|
229
|
-
## Claude Code target
|
|
230
|
-
|
|
231
|
-
Vesper also targets **Claude Code**, as a second, fully independent install alongside (or instead of) the Copilot target above — nothing here changes the default behavior of the commands described so far.
|
|
232
|
-
|
|
233
|
-
Claude Code has no equivalent of VS Code's `chat.agentFilesLocations` setting (no way to point it at an arbitrary external directory), so the specialist catalog is distributed as a **user-level plugin** instead of referenced in place: `vespercli init --target claude` installs it once to `~/.claude/skills/vesper/`, and it's then available in **every** Claude Code project on the machine, not just this one. Only genuinely project-specific content lives in the repo:
|
|
234
|
-
|
|
235
|
-
```bash
|
|
236
|
-
vespercli init --target claude # Install the plugin catalog + this project's orchestrator/roster/context
|
|
237
|
-
```
|
|
238
|
-
|
|
239
|
-
This creates, in the current project only:
|
|
240
|
-
|
|
241
|
-
- `CLAUDE.md` — a small guarded `@import` block pointing at the three files below (never touches the rest of your `CLAUDE.md`)
|
|
242
|
-
- `.claude/vesper/orchestrator.md` — the orchestration playbook (routing rules, delegation), refreshed on every `init`/`update`
|
|
243
|
-
- `.claude/vesper/orchestration.md` — this project's Team Roster + Task Management config
|
|
244
|
-
- `.claude/vesper/context.md` — this project's architecture/stack/conventions
|
|
245
|
-
- `.mcp.json` and `.claude/settings.json` — the `vesper-indexing` MCP server + its tool permissions
|
|
246
|
-
|
|
247
|
-
No `.claude/agents/`, `.claude/commands/`, or `.claude/skills/` appear in the project — the full specialist catalog (subagents, slash commands, skills) lives once in the shared plugin at `~/.claude/skills/vesper/`.
|
|
248
|
-
|
|
249
|
-
```bash
|
|
250
|
-
vespercli init --target claude # Install/refresh everything above
|
|
251
|
-
vespercli add agents code-reviewer --target claude # Add one subagent to the plugin catalog
|
|
252
|
-
vespercli list --target claude # See what's installed
|
|
253
|
-
vespercli update --target claude # Refresh the plugin + orchestrator playbook after `npm update`
|
|
254
|
-
vespercli reset --target claude # Remove this project's files (leaves the shared plugin catalog alone)
|
|
255
|
-
vespercli mcp status --target claude # Check the vesper-indexing MCP server in .mcp.json; also warns on .mcp.json vs .vesperrc drift
|
|
256
|
-
vespercli mcp add clickup --target claude # Add an optional catalog MCP server to .mcp.json + record it in .vesperrc
|
|
257
|
-
vespercli mcp remove clickup --target claude # Remove it (prunes both .mcp.json and .vesperrc)
|
|
258
|
-
vespercli mcp list --target claude # List catalog + custom servers configured for this target
|
|
259
|
-
```
|
|
260
|
-
|
|
261
|
-
Unlike the Copilot target, this one has **no editor dependency** — `~/.claude/...` and a project's `.claude/`/`CLAUDE.md`/`.mcp.json` are read by the Claude Code engine itself, so the same install works whether you drive it from the plain terminal CLI, the VS Code extension, JetBrains, or the desktop app.
|
|
262
|
-
|
|
263
|
-
### Mixed-target workspaces
|
|
264
|
-
|
|
265
|
-
A single project can have both targets installed at once — `.vesper/` (the code index, story tracking, `history.md`) is shared and cross-client by design, so a story researched under Copilot can be picked up and implemented under Claude Code, or vice versa. `.vesperrc` records each target under its own key, so running `init --target claude` in an already-Copilot-initialized project adds a `claude` entry without touching the existing Copilot fields.
|
|
266
|
-
|
|
267
|
-
### Naming and conflicts
|
|
322
|
+
- **GitHub Copilot** — reload VS Code, open Copilot Chat (`Ctrl+Shift+I` / `Cmd+Shift+I`), select **Vesper** from the agent dropdown, and prompt `Vesperize` to assemble your team.
|
|
323
|
+
- **Claude Code** — start a session (terminal, VS Code extension, JetBrains, or desktop app) and prompt `init` — Vesper runs the full workspace setup automatically.
|
|
268
324
|
|
|
269
|
-
|
|
325
|
+
Either way you end up with the same suite — specialized developers, planners, reviewers, and testers orchestrated by Vesper, sharing one `.vesper/` tracking state across both clients.
|
|
270
326
|
|
|
271
327
|
## Requirements
|
|
272
328
|
|
package/assets/CATALOG.md
CHANGED
|
@@ -336,6 +336,12 @@ Core skills provide fundamental capabilities and are installed by default alongs
|
|
|
336
336
|
- Description: Build distinctive, production-grade frontend interfaces with high design quality.
|
|
337
337
|
- Pick when: Need UI implementation that's polished and non-generic; building reusable components/pages in React/Next; want design-led decisions baked into the code.
|
|
338
338
|
|
|
339
|
+
### gitlab-guardrails
|
|
340
|
+
|
|
341
|
+
- Path: `skills/gitlab-guardrails/`
|
|
342
|
+
- Description: Vesper-owned GitLab MR safety policy — blocks the experimental `glab mr create --recover` flag and detects/removes stray `mr.json` recovery files before commit. Self-contained (in force even when the synced GitLab skills are absent).
|
|
343
|
+
- Pick when: Creating/updating/reviewing GitLab merge requests or running any `glab mr` command; want a guardrail against leaking `--recover`/`mr.json` recovery state into the repo; agent role runs `Bash`/`glab`.
|
|
344
|
+
|
|
339
345
|
### premium-frontend-ui
|
|
340
346
|
|
|
341
347
|
- Path: `skills/premium-frontend-ui/`
|
|
@@ -403,6 +409,12 @@ Core skills provide fundamental capabilities and are installed by default alongs
|
|
|
403
409
|
- Description: Build accessible UIs with shadcn/ui (Radix UI) + Tailwind CSS — components, theming, dark mode, responsive layouts.
|
|
404
410
|
- Pick when: Project uses Tailwind + shadcn/ui; need accessible component patterns (dialogs, forms, tables); want consistent theming and responsive styling.
|
|
405
411
|
|
|
412
|
+
### vesper-catalog-editing-safety
|
|
413
|
+
|
|
414
|
+
- Path: `skills/vesper-catalog-editing-safety/`
|
|
415
|
+
- Description: Pre-edit safety checklist for touching Vesper's own asset catalog and provisioning code (`assets/`, `scripts/generate-claude-assets.js`, `src/cli/utils/settings.js`, `src/cli/utils/claude-target.js`).
|
|
416
|
+
- Pick when: Editing any catalog asset (agent/skill/prompt/instruction), the Claude-asset generator, or Copilot/Claude settings-injection code in this repo; need to know the dual asset tree boundary, discovery wiring, or the git-hygiene dual list before making the change.
|
|
417
|
+
|
|
406
418
|
### web-design-guidelines
|
|
407
419
|
|
|
408
420
|
- Path: `skills/web-design-guidelines/`
|
|
@@ -549,9 +561,15 @@ Core instructions are part of Vesper's orchestration workflows.
|
|
|
549
561
|
- Description: Generate a comprehensive repository summary and narrative story from commit history.
|
|
550
562
|
- Pick when: Want a "what happened" narrative for onboarding or review; need a summary of evolution and major decisions; preparing documentation or a project retrospective.
|
|
551
563
|
|
|
564
|
+
### revalidate-knowledge
|
|
565
|
+
|
|
566
|
+
- Path: `core/prompts/revalidate-knowledge.prompt.md`
|
|
567
|
+
- Description: Revalidate archived Vesper knowledge against the current codebase and re-balance the slim-core/on-demand context split — a heavier, semantic re-validation pass distinct from `/compact-knowledge`'s trim/dedupe.
|
|
568
|
+
- Pick when: The project context feels stale or drifted from the code (staleness signal, not size); want archived knowledge (prioritizing `.unwrapped` entries) re-checked and re-extracted; need the slim core and on-demand context tiers rebalanced. User-invoked only — Vesper suggests it, never auto-runs it.
|
|
569
|
+
|
|
552
570
|
---
|
|
553
571
|
|
|
554
572
|
## Catalog Metadata
|
|
555
573
|
|
|
556
574
|
- **Version**: 1.4.0
|
|
557
|
-
- **Last Updated**: 2026-
|
|
575
|
+
- **Last Updated**: 2026-07-21
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: feature-wrap-document
|
|
3
3
|
description: Knowledge curator that captures implementation patterns and updates documentation, skills, and context
|
|
4
4
|
model: claude-sonnet-5
|
|
5
|
-
tools: Read, Grep, Glob, Edit, Write, Agent, mcp__vesper-indexing__vesper_search, mcp__memory__create_entities, mcp__memory__create_relations, mcp__memory__add_observations, mcp__memory__search_nodes, mcp__memory__open_nodes, mcp__memory__delete_entities, mcp__memory__delete_observations
|
|
5
|
+
tools: Read, Grep, Glob, Edit, Write, Bash, Agent, mcp__vesper-indexing__vesper_search, mcp__memory__create_entities, mcp__memory__create_relations, mcp__memory__add_observations, mcp__memory__search_nodes, mcp__memory__open_nodes, mcp__memory__delete_entities, mcp__memory__delete_observations
|
|
6
6
|
skills: [agent-fundamentals]
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -105,8 +105,34 @@ You WILL categorize knowledge using this example decision tree:
|
|
|
105
105
|
|
|
106
106
|
```
|
|
107
107
|
START: Is this a RULE about how to write/modify code in THIS project?
|
|
108
|
-
├─ YES →
|
|
109
|
-
│
|
|
108
|
+
├─ YES → Is the rule scoped to a specific set of files (a path/glob)?
|
|
109
|
+
│ │ TIE-BREAKER: a glob that effectively matches all files (e.g. `**/*`, `**`,
|
|
110
|
+
│ │ `*`) is NOT file-scoped — it is semantically project-wide. Treat it as the
|
|
111
|
+
│ │ NO branch (→ context tier / rules), never as a Skill with an always-firing
|
|
112
|
+
│ │ "matching: **/*" description.
|
|
113
|
+
│ ├─ YES (a real, bounded glob) → INSTRUCTION (file-glob-scoped) → SKILL
|
|
114
|
+
│ │ └─ delegate to `skill-creator` to create/update `.claude/skills/{domain}/SKILL.md`,
|
|
115
|
+
│ │ folding the glob into the skill description:
|
|
116
|
+
│ │ "Use when working with files matching: <glob>."
|
|
117
|
+
│ │ (mirrors the build-time convertInstructionToSkill() convention — not a new format)
|
|
118
|
+
│ └─ NO (project-wide / not file-scoped) → PROJECT CONTEXT UPDATE
|
|
119
|
+
│ (on-demand tier by default — keep the auto-injected slim core small)
|
|
120
|
+
│ ├─ Coding rule / convention → `.claude/vesper/context/conventions.md`
|
|
121
|
+
│ ├─ External dep / integration / dev-standard / CI detail → `.claude/vesper/context/integrations.md`
|
|
122
|
+
│ ├─ Known debt / ambiguity → `.claude/vesper/context/technical-debt.md`
|
|
123
|
+
│ ├─ Structural only (Big Picture Architecture / Domain Model / Critical Workflows) →
|
|
124
|
+
│ │ `.claude/vesper/context.md` core (then bump its `Last incremental update` stamp)
|
|
125
|
+
│ └─ Long/verbose but always-on (too big to inline cleanly in a context file) →
|
|
126
|
+
│ create a standalone `.claude/rules/{name}.md` and append
|
|
127
|
+
│ `@.claude/rules/{name}.md` to CLAUDE.md OUTSIDE the vesper:start/vesper:end
|
|
128
|
+
│ guard markers (survives update/reinit — see ensureClaudeMdGuardBlock).
|
|
129
|
+
│ DEDUP GUARD: before appending, check whether that exact
|
|
130
|
+
│ `@.claude/rules/{name}.md` line already exists in CLAUDE.md — append ONLY
|
|
131
|
+
│ if absent, so re-running a retrospective for an updated same-named rule
|
|
132
|
+
│ overwrites `.claude/rules/{name}.md` without appending a duplicate import.
|
|
133
|
+
│ HEURISTIC (B-vs-C): more than ~20-30 lines, or it carries its own
|
|
134
|
+
│ examples / sub-structure → standalone rules file; otherwise route to the
|
|
135
|
+
│ on-demand tier / core above. Misfiling here is low-stakes and self-correcting.
|
|
110
136
|
│
|
|
111
137
|
├─ NO → Is this a REPEATABLE WORKFLOW with multiple steps?
|
|
112
138
|
├─ YES → SKILL
|
|
@@ -131,6 +157,8 @@ START: Is this a RULE about how to write/modify code in THIS project?
|
|
|
131
157
|
|
|
132
158
|
You MUST present ALL proposed updates as a numbered summary, then wait for user to approve by number (partial approval supported).
|
|
133
159
|
|
|
160
|
+
**Scope of this approval gate (important):** this numbered-approval workflow applies ONLY to genuinely **structural** `.claude/vesper/context.md` edits — the slim core's Big Picture Architecture / Domain Model / Critical Workflows, and the on-demand tier's Conventions / Integrations / Technical Debt files. It does **NOT** cover the trivial, high-frequency `.claude/vesper/context/recent-decisions.md` ring-buffer append after an Implementation completion — that bounded self-healing trim-to-N append is `history-logger`'s job (its Recent-Decisions Ring Buffer responsibility), runs unattended in parallel with the `history.md` append, and must never be routed through this approval loop. Do not propose or apply `recent-decisions.md` line appends here.
|
|
161
|
+
|
|
134
162
|
### Step 1: Analyze and Generate All Proposals
|
|
135
163
|
|
|
136
164
|
You WILL:
|
|
@@ -276,15 +304,19 @@ You WILL after all approved updates are applied:
|
|
|
276
304
|
|
|
277
305
|
## Knowledge Type Guidelines
|
|
278
306
|
|
|
279
|
-
### Project Context (
|
|
307
|
+
### Project Context (two-tier: slim core + on-demand tier)
|
|
308
|
+
|
|
309
|
+
**Target routing (avoid slim-core creep):** durable prose lands in the on-demand tier, NOT the auto-injected core. A coding rule/convention → `.claude/vesper/context/conventions.md`; an external dep / integration / dev-standard / CI detail → `.claude/vesper/context/integrations.md`; a known debt/ambiguity → `.claude/vesper/context/technical-debt.md`. Only genuinely **structural** content (Big Picture Architecture / Domain Model / Critical Workflows) belongs in the injected `.claude/vesper/context.md` core — and any such gated structural edit also bumps the core's `Last incremental update` freshness stamp. `recent-decisions.md` is `history-logger`'s ring buffer, never written here.
|
|
280
310
|
|
|
281
311
|
**Characteristics:**
|
|
282
312
|
|
|
283
313
|
- Prescriptive rules ("always", "never", "must", "avoid")
|
|
284
|
-
- Applies to code creation/modification
|
|
314
|
+
- Applies **project-wide** to code creation/modification — NOT scoped to a specific file glob
|
|
285
315
|
- Prevents common mistakes
|
|
286
316
|
- Enforces consistency
|
|
287
317
|
|
|
318
|
+
> Scope boundary: reserve `context.md` for **non-file-scoped** rules only. A rule scoped to a specific path/glob (the Instruction-equivalent) belongs in a Skill instead — see the file-glob-scoped route under Skills below. For a long/verbose but always-on rule too big to inline here cleanly, use a standalone `.claude/rules/{name}.md` with an `@import` from CLAUDE.md (B-vs-C heuristic in the decision tree above).
|
|
319
|
+
|
|
288
320
|
**Format:**
|
|
289
321
|
|
|
290
322
|
```markdown
|
|
@@ -306,11 +338,13 @@ You WILL after all approved updates are applied:
|
|
|
306
338
|
**Applies to:** [scenarios where rule is relevant]
|
|
307
339
|
```
|
|
308
340
|
|
|
309
|
-
**Examples
|
|
341
|
+
**Examples** (all genuinely project-wide — apply everywhere, not scoped to any file path/glob):
|
|
310
342
|
|
|
311
|
-
- "Always use path aliases instead of relative imports"
|
|
312
|
-
- "Never
|
|
313
|
-
- "
|
|
343
|
+
- "Always use path aliases instead of relative imports" (applies to every import in the repo)
|
|
344
|
+
- "Never commit secrets or credentials — load them from environment/config" (applies to all code)
|
|
345
|
+
- "Prefer `node:`-prefixed builtins for standard-library imports" (applies across the whole codebase)
|
|
346
|
+
|
|
347
|
+
> Counter-example — these are NOT `context.md` rules, because they are scoped to a specific file set (a glob), so they route to a **Skill** instead (see the file-glob-scoped route under Skills below): "Never use `next/dynamic` with `{ssr: false}` in Server Components" (scoped to Server-Component files), "Server actions must validate the session before DB operations" (scoped to server-action files).
|
|
314
348
|
|
|
315
349
|
---
|
|
316
350
|
|
|
@@ -322,6 +356,7 @@ You WILL after all approved updates are applied:
|
|
|
322
356
|
- Reusable patterns with variations
|
|
323
357
|
- Domain-specific knowledge
|
|
324
358
|
- Prerequisites and concrete examples
|
|
359
|
+
- **Also the Instruction-equivalent target**: a file-glob-scoped code rule (Copilot would put this in an `*.instructions.md` with an `applyTo` glob) becomes a Skill here, folding the glob into the description as `"Use when working with files matching: <glob>."` — Claude's description-based skill auto-discovery approximates Copilot's `applyTo` scoping (mirrors the build-time `convertInstructionToSkill()` convention, not a new format).
|
|
325
360
|
|
|
326
361
|
**Format:**
|
|
327
362
|
|
|
@@ -427,8 +462,8 @@ description: [What it does + when to use it]
|
|
|
427
462
|
|
|
428
463
|
- **Pattern**: Phased implementation with typed placeholders
|
|
429
464
|
- **Problem solved**: Blocked progress due to complex feature dependency
|
|
430
|
-
- **Knowledge type**: Project context
|
|
431
|
-
- **Target**: `.claude/vesper/context.md`
|
|
465
|
+
- **Knowledge type**: Project context (coding convention)
|
|
466
|
+
- **Target**: `.claude/vesper/context/conventions.md` (on-demand tier — a coding convention, not slim-core structural content)
|
|
432
467
|
|
|
433
468
|
**Proposal:**
|
|
434
469
|
|
|
@@ -454,6 +489,79 @@ message: 'Route refresh not yet implemented'
|
|
|
454
489
|
|
|
455
490
|
---
|
|
456
491
|
|
|
492
|
+
### Pattern: File-Glob-Scoped Rule → Skill
|
|
493
|
+
|
|
494
|
+
**Input (from changes file):**
|
|
495
|
+
|
|
496
|
+
```markdown
|
|
497
|
+
## Phase 3 Notes
|
|
498
|
+
|
|
499
|
+
- Every server action under `src/app/**/actions.ts` now validates the session
|
|
500
|
+
before touching the database — three PRs shipped without this and regressed.
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
**Analysis:**
|
|
504
|
+
|
|
505
|
+
- **Pattern**: A code rule scoped to a specific file set (`src/app/**/actions.ts`) — a real, bounded glob, NOT project-wide
|
|
506
|
+
- **Knowledge type**: Instruction-equivalent → **Skill** (glob folded into the description)
|
|
507
|
+
- **Target**: delegate to `skill-creator` → `.claude/skills/server-actions/SKILL.md`
|
|
508
|
+
|
|
509
|
+
**Proposal:**
|
|
510
|
+
|
|
511
|
+
```markdown
|
|
512
|
+
---
|
|
513
|
+
name: server-actions
|
|
514
|
+
description: Use when working with files matching: src/app/**/actions.ts.
|
|
515
|
+
---
|
|
516
|
+
|
|
517
|
+
# Server Action Session Validation
|
|
518
|
+
|
|
519
|
+
Validate the session before any DB operation in a server action…
|
|
520
|
+
```
|
|
521
|
+
|
|
522
|
+
---
|
|
523
|
+
|
|
524
|
+
### Pattern: Long/Verbose Always-On Rule → `.claude/rules/` + `@import`
|
|
525
|
+
|
|
526
|
+
**Input (from changes file):**
|
|
527
|
+
|
|
528
|
+
```markdown
|
|
529
|
+
## Phase 1 Notes
|
|
530
|
+
|
|
531
|
+
- Documented the full error-handling policy: taxonomy, ret/log/rethrow rules,
|
|
532
|
+
and 4 worked examples — applies to ALL code, ~40 lines, too big for context.md.
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
**Analysis:**
|
|
536
|
+
|
|
537
|
+
- **Pattern**: Project-wide (not file-scoped) but long and self-structured → Branch C
|
|
538
|
+
- **Knowledge type**: standalone rule file + `CLAUDE.md` `@import`
|
|
539
|
+
- **Target**: create `.claude/rules/error-handling.md`; append `@.claude/rules/error-handling.md` to `CLAUDE.md` (outside guard markers, only if the import line isn't already present)
|
|
540
|
+
|
|
541
|
+
**Proposal:**
|
|
542
|
+
|
|
543
|
+
```markdown
|
|
544
|
+
<!-- .claude/rules/error-handling.md -->
|
|
545
|
+
# Error Handling Policy
|
|
546
|
+
|
|
547
|
+
## Taxonomy
|
|
548
|
+
…
|
|
549
|
+
|
|
550
|
+
## Rules
|
|
551
|
+
…
|
|
552
|
+
|
|
553
|
+
## Examples
|
|
554
|
+
…
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
Then append to `CLAUDE.md` (outside `<!-- vesper:start -->…<!-- vesper:end -->`, dedup-checked):
|
|
558
|
+
|
|
559
|
+
```markdown
|
|
560
|
+
@.claude/rules/error-handling.md
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
---
|
|
564
|
+
|
|
457
565
|
## Quality Standards
|
|
458
566
|
|
|
459
567
|
You WILL validate ALL proposals against these standards:
|
|
@@ -511,14 +619,19 @@ You WILL respond to these user commands:
|
|
|
511
619
|
- **READ**: Use `Read`/`Grep`/`Glob` across entire workspace for analysis
|
|
512
620
|
- **WRITE**: Modify files ONLY after explicit user approval by number
|
|
513
621
|
- **ALLOWED WRITES**:
|
|
514
|
-
- `.claude/vesper/context.md`
|
|
622
|
+
- `.claude/vesper/context.md` — structural slim-core only (Big Picture Architecture / Domain Model / Critical Workflows / Freshness); bump `Last incremental update` on a gated structural edit
|
|
623
|
+
- `.claude/vesper/context/conventions.md`, `.claude/vesper/context/integrations.md`, `.claude/vesper/context/technical-debt.md` — on-demand tier (default home for durable Conventions / Integrations / Technical Debt)
|
|
515
624
|
- `.claude/skills/**/SKILL.md` (project-local skills only — delegate to `skill-creator` for these, and for anything meant to join the shared global catalog)
|
|
625
|
+
- `.claude/rules/{name}.md` (decision-tree Branch C — standalone always-on rule files; create/overwrite the rule file itself here)
|
|
626
|
+
- `CLAUDE.md` — **narrow carve-out, Branch C only**: you MAY append a single `@.claude/rules/{name}.md` import line, and ONLY that. It MUST go **outside** the `<!-- vesper:start -->…<!-- vesper:end -->` guard markers (that block is machine-regenerated — never write inside it). Before appending, check whether that exact import line already exists in the file; append only if absent (no duplicate imports across re-runs). No other edit to `CLAUDE.md` is permitted.
|
|
516
627
|
- `docs/*.md`
|
|
517
628
|
- `README.md`
|
|
518
629
|
- **FORBIDDEN WRITES**:
|
|
630
|
+
- `.claude/vesper/context/recent-decisions.md` — `history-logger`'s ring buffer, never written here
|
|
519
631
|
- Source code files (unless explicitly requested)
|
|
520
|
-
- Configuration files
|
|
632
|
+
- Configuration files — **except** the single narrow `CLAUDE.md` `@import`-append carve-out defined under ALLOWED WRITES above
|
|
521
633
|
- Planning/tracking files (`.vesper/.tracking/*`)
|
|
634
|
+
- Anything inside the `CLAUDE.md` `<!-- vesper:start -->…<!-- vesper:end -->` guard block
|
|
522
635
|
|
|
523
636
|
## Output Format
|
|
524
637
|
|
|
@@ -562,3 +675,15 @@ A **separate, explicitly-invoked mode**, distinct from your normal per-task memo
|
|
|
562
675
|
5. Report: entity count before/after, and a short list of what was merged.
|
|
563
676
|
|
|
564
677
|
**Never** perform this compaction as a side effect of a normal feature-wrap invocation — only when explicitly asked for compaction.
|
|
678
|
+
|
|
679
|
+
## 🔁 Knowledge Revalidation Mode (`/revalidate-knowledge` only — never the default behavior)
|
|
680
|
+
|
|
681
|
+
A **separate, explicitly-invoked mode**, distinct from both your normal per-task memory-update job and Memory Compaction Mode above. Runs when Vesper delegates the `/revalidate-knowledge` flow (user-invoked, suggested on staleness/drift). `workspace-learner` handles the whitepaper/archive-revalidation and core/on-demand re-balance side of the same request in parallel — this mode is scoped to the **memory graph only**, and unlike Compaction Mode (which just merges/dedupes on *size*) it **re-validates** entities against the freshly revalidated whitepaper and current code.
|
|
682
|
+
|
|
683
|
+
1. `read_graph()` (or `search_nodes` broadly) to see the full set of entities.
|
|
684
|
+
2. Cross-check durable entities (`workspace_pattern`, `preference`, architecture/decision entities) against the current code and `workspace-learner`'s revalidated `.claude/vesper/context.md` core + on-demand tier. Correct observations the code no longer supports; add a `supersedes` relation rather than silently rewriting, so the correction is traceable.
|
|
685
|
+
3. Give priority to knowledge tied to `.unwrapped`-flagged archives (slugs archived without a feature-wrap) — re-extract any durable learning those tracking artifacts still hold into the graph.
|
|
686
|
+
4. Merge/dedupe as in Compaction Mode where entities are now redundant post-revalidation. Never touch `current_task` or anything with an active relation.
|
|
687
|
+
5. Report: entities revalidated, corrected, superseded, and re-extracted from flagged archives.
|
|
688
|
+
|
|
689
|
+
**Never** perform revalidation as a side effect of a normal feature-wrap invocation — only when explicitly asked via `/revalidate-knowledge`.
|
|
@@ -36,6 +36,19 @@ You must STRICTLY follow this format for every entry:
|
|
|
36
36
|
|
|
37
37
|
When asked to log something (e.g., "Log that Phase 1 started"), generate the formatted string and **append** it to the end of the file using `Edit`.
|
|
38
38
|
|
|
39
|
+
### 4. Recent-Decisions Ring Buffer (Implementation completions only)
|
|
40
|
+
|
|
41
|
+
After every **Implementation pipeline completion** (orchestrator Step 11), in parallel with your normal `history.md` append, also record one bounded line in `.claude/vesper/context/recent-decisions.md`. This is a **self-healing trim-to-N ring buffer** (N=10) — the newest 10 decisions live in the on-demand context tier; everything older rolls into the history archive.
|
|
42
|
+
|
|
43
|
+
On every such append:
|
|
44
|
+
|
|
45
|
+
1. Read `.claude/vesper/context/recent-decisions.md` (create it with a `# Recent Decisions` header if missing).
|
|
46
|
+
2. Append the new entry as **one line**: `- YYYY-MM-DD [slug] — <one-sentence summary of what shipped>` (date via `Bash` `date`, consistent with the `history.md` append; `slug` is the story/task slug).
|
|
47
|
+
3. Count the data lines (exclude the header). If the total exceeds **10**, MOVE the oldest `(total - 10)` lines into `.vesper/history-archive/YYYYMM.md` (grouped by the current month, append-style — create the file with a `# Vesper History Archive — YYYY-MM` header if it doesn't exist). Never delete.
|
|
48
|
+
4. Rewrite `recent-decisions.md` so it holds only the newest 10 entries (plus its header).
|
|
49
|
+
|
|
50
|
+
**Why re-trim on every append (not a one-time pop):** `recent-decisions.md` carries `merge=union` in `.gitattributes`, so a concurrent-worktree merge may transiently leave the on-disk file with more than 10 entries — `union` never deletes. This is **expected and self-corrects** on the very next append. Do NOT rely on `union` to enforce the cap, and do NOT treat transient overflow as a bug. This is a normal-mode responsibility, distinct from Compaction Mode below.
|
|
51
|
+
|
|
39
52
|
## Examples
|
|
40
53
|
|
|
41
54
|
**Input:** "Log that Initialization Phase 2a started."
|
|
@@ -73,6 +86,15 @@ This is a **separate, explicitly-invoked mode** — distinct from your normal ap
|
|
|
73
86
|
2. Never touch `refining/`, `backlog/`, `inprogress/`, or `inreview/` — only `completed/`.
|
|
74
87
|
3. Report the count moved and where.
|
|
75
88
|
|
|
89
|
+
### 3. Archive correlated tracking artifacts
|
|
90
|
+
|
|
91
|
+
For each `stories/completed/<slug>` entry older than the same N-day threshold (default 30), move its correlated tracking artifacts — every `research/`, `plans/`, `details/`, `prompts/`, and `changes/` file whose name contains that `<slug>` — into `.vesper/.tracking/archive/YYYYMM/<slug>/` (grouped by the month the story was completed), via `Bash mv`, never delete.
|
|
92
|
+
|
|
93
|
+
1. **Idempotent move**: if the source is already gone and the destination already holds the file, treat it as already done (a concurrent worktree archived it). Never error, never re-move.
|
|
94
|
+
2. **Archive-with-a-flag fallback**: archive regardless of whether `feature-wrap-document` extracted durable knowledge for the slug first. Check the MCP memory graph (or a recorded wrap marker) for a completed feature-wrap for that slug; if none exists, write an empty `.unwrapped` marker file into the archived `<slug>/` folder so `/revalidate-knowledge` treats it as a **priority re-extraction candidate**. This preserves the non-destructive invariant (nothing is lost — archived, just flagged) without blocking retention indefinitely on a wrap step that may legitimately never run (Lightweight-path tasks have no wrap).
|
|
95
|
+
3. **Ordering**: prefer to run after feature-wrap extraction for the slug, but never block indefinitely — the `.unwrapped` flag is the fallback.
|
|
96
|
+
4. Report which slugs were archived and which were flagged `.unwrapped`.
|
|
97
|
+
|
|
76
98
|
### Constraints (Compaction Mode only)
|
|
77
99
|
|
|
78
100
|
- **Never delete** — every rotation/archive is a move, not a removal.
|