@engramm/dev-workflow 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/dist/agents/context-builder.d.ts +11 -0
- package/dist/agents/context-builder.d.ts.map +1 -0
- package/dist/agents/context-builder.js +62 -0
- package/dist/agents/context-builder.js.map +1 -0
- package/dist/agents/loader.d.ts +3 -0
- package/dist/agents/loader.d.ts.map +1 -0
- package/dist/agents/loader.js +54 -0
- package/dist/agents/loader.js.map +1 -0
- package/dist/agents/registry.d.ts +10 -0
- package/dist/agents/registry.d.ts.map +1 -0
- package/dist/agents/registry.js +35 -0
- package/dist/agents/registry.js.map +1 -0
- package/dist/agents/types.d.ts +20 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +2 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/cli/agent.d.ts +2 -0
- package/dist/cli/agent.d.ts.map +1 -0
- package/dist/cli/agent.js +101 -0
- package/dist/cli/agent.js.map +1 -0
- package/dist/cli/config.d.ts +2 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +100 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/doctor.d.ts +2 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/doctor.js +123 -0
- package/dist/cli/doctor.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +94 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init.d.ts +7 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +177 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/run.d.ts +4 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +191 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/cli/search.d.ts +2 -0
- package/dist/cli/search.d.ts.map +1 -0
- package/dist/cli/search.js +75 -0
- package/dist/cli/search.js.map +1 -0
- package/dist/cli/serve.d.ts +2 -0
- package/dist/cli/serve.d.ts.map +1 -0
- package/dist/cli/serve.js +34 -0
- package/dist/cli/serve.js.map +1 -0
- package/dist/cli/status.d.ts +2 -0
- package/dist/cli/status.d.ts.map +1 -0
- package/dist/cli/status.js +89 -0
- package/dist/cli/status.js.map +1 -0
- package/dist/cli/task.d.ts +2 -0
- package/dist/cli/task.d.ts.map +1 -0
- package/dist/cli/task.js +153 -0
- package/dist/cli/task.js.map +1 -0
- package/dist/cli/vault-io.d.ts +3 -0
- package/dist/cli/vault-io.d.ts.map +1 -0
- package/dist/cli/vault-io.js +75 -0
- package/dist/cli/vault-io.js.map +1 -0
- package/dist/hooks/post-edit.d.ts +3 -0
- package/dist/hooks/post-edit.d.ts.map +1 -0
- package/dist/hooks/post-edit.js +43 -0
- package/dist/hooks/post-edit.js.map +1 -0
- package/dist/hooks/post-task.d.ts +3 -0
- package/dist/hooks/post-task.d.ts.map +1 -0
- package/dist/hooks/post-task.js +25 -0
- package/dist/hooks/post-task.js.map +1 -0
- package/dist/hooks/pre-compact.d.ts +7 -0
- package/dist/hooks/pre-compact.d.ts.map +1 -0
- package/dist/hooks/pre-compact.js +34 -0
- package/dist/hooks/pre-compact.js.map +1 -0
- package/dist/hooks/session-end.d.ts +3 -0
- package/dist/hooks/session-end.d.ts.map +1 -0
- package/dist/hooks/session-end.js +80 -0
- package/dist/hooks/session-end.js.map +1 -0
- package/dist/hooks/session-start.d.ts +3 -0
- package/dist/hooks/session-start.d.ts.map +1 -0
- package/dist/hooks/session-start.js +108 -0
- package/dist/hooks/session-start.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/intelligence/collector.d.ts +12 -0
- package/dist/intelligence/collector.d.ts.map +1 -0
- package/dist/intelligence/collector.js +93 -0
- package/dist/intelligence/collector.js.map +1 -0
- package/dist/intelligence/ranker.d.ts +5 -0
- package/dist/intelligence/ranker.d.ts.map +1 -0
- package/dist/intelligence/ranker.js +107 -0
- package/dist/intelligence/ranker.js.map +1 -0
- package/dist/intelligence/store.d.ts +17 -0
- package/dist/intelligence/store.d.ts.map +1 -0
- package/dist/intelligence/store.js +75 -0
- package/dist/intelligence/store.js.map +1 -0
- package/dist/intelligence/sync.d.ts +3 -0
- package/dist/intelligence/sync.d.ts.map +1 -0
- package/dist/intelligence/sync.js +83 -0
- package/dist/intelligence/sync.js.map +1 -0
- package/dist/intelligence/types.d.ts +35 -0
- package/dist/intelligence/types.d.ts.map +1 -0
- package/dist/intelligence/types.js +2 -0
- package/dist/intelligence/types.js.map +1 -0
- package/dist/lib/context.d.ts +3 -0
- package/dist/lib/context.d.ts.map +1 -0
- package/dist/lib/context.js +56 -0
- package/dist/lib/context.js.map +1 -0
- package/dist/lib/conventions-detect.d.ts +12 -0
- package/dist/lib/conventions-detect.d.ts.map +1 -0
- package/dist/lib/conventions-detect.js +337 -0
- package/dist/lib/conventions-detect.js.map +1 -0
- package/dist/lib/frontmatter.d.ts +7 -0
- package/dist/lib/frontmatter.d.ts.map +1 -0
- package/dist/lib/frontmatter.js +45 -0
- package/dist/lib/frontmatter.js.map +1 -0
- package/dist/lib/fs-helpers.d.ts +6 -0
- package/dist/lib/fs-helpers.d.ts.map +1 -0
- package/dist/lib/fs-helpers.js +24 -0
- package/dist/lib/fs-helpers.js.map +1 -0
- package/dist/lib/interpolate.d.ts +2 -0
- package/dist/lib/interpolate.d.ts.map +1 -0
- package/dist/lib/interpolate.js +4 -0
- package/dist/lib/interpolate.js.map +1 -0
- package/dist/lib/output.d.ts +27 -0
- package/dist/lib/output.d.ts.map +1 -0
- package/dist/lib/output.js +85 -0
- package/dist/lib/output.js.map +1 -0
- package/dist/lib/reader.d.ts +14 -0
- package/dist/lib/reader.d.ts.map +1 -0
- package/dist/lib/reader.js +75 -0
- package/dist/lib/reader.js.map +1 -0
- package/dist/lib/stack-detect.d.ts +12 -0
- package/dist/lib/stack-detect.d.ts.map +1 -0
- package/dist/lib/stack-detect.js +302 -0
- package/dist/lib/stack-detect.js.map +1 -0
- package/dist/lib/statusline.d.ts +3 -0
- package/dist/lib/statusline.d.ts.map +1 -0
- package/dist/lib/statusline.js +40 -0
- package/dist/lib/statusline.js.map +1 -0
- package/dist/lib/templates.d.ts +3 -0
- package/dist/lib/templates.d.ts.map +1 -0
- package/dist/lib/templates.js +174 -0
- package/dist/lib/templates.js.map +1 -0
- package/dist/lib/types.d.ts +44 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +2 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/writer.d.ts +13 -0
- package/dist/lib/writer.d.ts.map +1 -0
- package/dist/lib/writer.js +97 -0
- package/dist/lib/writer.js.map +1 -0
- package/dist/mcp/handlers.d.ts +34 -0
- package/dist/mcp/handlers.d.ts.map +1 -0
- package/dist/mcp/handlers.js +256 -0
- package/dist/mcp/handlers.js.map +1 -0
- package/dist/mcp/server.d.ts +20 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +89 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools.d.ts +11 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +148 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/tasks/manager.d.ts +14 -0
- package/dist/tasks/manager.d.ts.map +1 -0
- package/dist/tasks/manager.js +151 -0
- package/dist/tasks/manager.js.map +1 -0
- package/dist/tasks/tracker.d.ts +11 -0
- package/dist/tasks/tracker.d.ts.map +1 -0
- package/dist/tasks/tracker.js +31 -0
- package/dist/tasks/tracker.js.map +1 -0
- package/dist/tasks/types.d.ts +19 -0
- package/dist/tasks/types.d.ts.map +1 -0
- package/dist/tasks/types.js +2 -0
- package/dist/tasks/types.js.map +1 -0
- package/dist/workflow/builtin.d.ts +4 -0
- package/dist/workflow/builtin.d.ts.map +1 -0
- package/dist/workflow/builtin.js +93 -0
- package/dist/workflow/builtin.js.map +1 -0
- package/dist/workflow/engine.d.ts +38 -0
- package/dist/workflow/engine.d.ts.map +1 -0
- package/dist/workflow/engine.js +217 -0
- package/dist/workflow/engine.js.map +1 -0
- package/dist/workflow/loader.d.ts +4 -0
- package/dist/workflow/loader.d.ts.map +1 -0
- package/dist/workflow/loader.js +106 -0
- package/dist/workflow/loader.js.map +1 -0
- package/dist/workflow/state.d.ts +11 -0
- package/dist/workflow/state.d.ts.map +1 -0
- package/dist/workflow/state.js +49 -0
- package/dist/workflow/state.js.map +1 -0
- package/dist/workflow/types.d.ts +36 -0
- package/dist/workflow/types.d.ts.map +1 -0
- package/dist/workflow/types.js +2 -0
- package/dist/workflow/types.js.map +1 -0
- package/package.json +54 -0
- package/templates/agents/architect.md +46 -0
- package/templates/agents/coder.md +46 -0
- package/templates/agents/committer.md +29 -0
- package/templates/agents/debugger.md +54 -0
- package/templates/agents/planner.md +45 -0
- package/templates/agents/reader.md +48 -0
- package/templates/agents/reviewer.md +48 -0
- package/templates/agents/tester.md +41 -0
- package/templates/claude/agents/researcher.md +47 -0
- package/templates/claude/agents/writer.md +29 -0
- package/templates/claude/commands/git/changelog.md +41 -0
- package/templates/claude/commands/git/merge.md +37 -0
- package/templates/claude/commands/git/new-branch.md +34 -0
- package/templates/claude/commands/git/pr-review.md +64 -0
- package/templates/claude/commands/session/handover.md +49 -0
- package/templates/claude/commands/session/resume.md +43 -0
- package/templates/claude/commands/session/review.md +81 -0
- package/templates/claude/commands/task.md +52 -0
- package/templates/claude/commands/vault/adr.md +39 -0
- package/templates/claude/commands/vault/analyze.md +110 -0
- package/templates/claude/commands/vault/bug.md +31 -0
- package/templates/claude/commands/vault/debt.md +28 -0
- package/templates/claude/commands/vault/deps.md +36 -0
- package/templates/claude/commands/vault/from-spec.md +306 -0
- package/templates/claude/commands/vault/search.md +31 -0
- package/templates/claude/commands/vault/security-scan.md +50 -0
- package/templates/claude/commands/vault/test-gaps.md +38 -0
- package/templates/claude/commands/workflow/dev.md +913 -0
- package/templates/claude/commands/workflow.md +47 -0
- package/templates/claude/settings.json +52 -0
- package/templates/claude/skills/obsidian-markdown/SKILL.md +196 -0
- package/templates/claude/skills/obsidian-markdown/references/CALLOUTS.md +58 -0
- package/templates/claude/skills/obsidian-markdown/references/EMBEDS.md +63 -0
- package/templates/claude/skills/obsidian-markdown/references/PROPERTIES.md +61 -0
- package/templates/workflows/deploy.yaml +21 -0
- package/templates/workflows/release.yaml +26 -0
- package/templates/workflows/spike.yaml +14 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Vault Researcher
|
|
2
|
+
|
|
3
|
+
Read-only agent for gathering project context from the codebase and vault.
|
|
4
|
+
|
|
5
|
+
## Role
|
|
6
|
+
|
|
7
|
+
You are a research agent. You ONLY read files, search code, and report findings. You NEVER create or modify files.
|
|
8
|
+
|
|
9
|
+
## Tools
|
|
10
|
+
|
|
11
|
+
- Read: YES
|
|
12
|
+
- Glob: YES
|
|
13
|
+
- Grep: YES
|
|
14
|
+
- Bash (read-only: git log, git diff, git status, ls, wc): YES
|
|
15
|
+
- Write: NO
|
|
16
|
+
- Edit: NO
|
|
17
|
+
|
|
18
|
+
## Procedure
|
|
19
|
+
|
|
20
|
+
1. Read `.dev-vault/stack.md` and `.dev-vault/conventions.md` for project context
|
|
21
|
+
2. Analyze the task requirements from the user's request
|
|
22
|
+
3. Search the codebase for relevant files using Glob and Grep
|
|
23
|
+
4. Read found files (max 10 files, max 500 lines each)
|
|
24
|
+
5. Check for existing patterns in `.dev-vault/knowledge.md`
|
|
25
|
+
6. Check test files related to the area being investigated
|
|
26
|
+
|
|
27
|
+
## Output format
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
CONTEXT:
|
|
31
|
+
Task: <rephrased task>
|
|
32
|
+
Files to change: <list>
|
|
33
|
+
Dependencies: <files that depend on changed files>
|
|
34
|
+
Tests: <existing test files>
|
|
35
|
+
Patterns found: <how similar things are done in the project>
|
|
36
|
+
Relevant code:
|
|
37
|
+
<key snippets with file:line references>
|
|
38
|
+
END_CONTEXT
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Limits
|
|
42
|
+
|
|
43
|
+
- Max 10 files read
|
|
44
|
+
- Max 500 lines per file
|
|
45
|
+
- No code modifications
|
|
46
|
+
- No file creation
|
|
47
|
+
- Report in under 300 words
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Vault Writer
|
|
2
|
+
|
|
3
|
+
Agent for creating and updating vault records. Operates exclusively within `.dev-vault/`.
|
|
4
|
+
|
|
5
|
+
## Role
|
|
6
|
+
|
|
7
|
+
You create and update knowledge records in the project's `.dev-vault/` directory. You follow Obsidian Markdown conventions.
|
|
8
|
+
|
|
9
|
+
## Tools
|
|
10
|
+
|
|
11
|
+
- Read: YES (`.dev-vault/` only)
|
|
12
|
+
- Write: YES (`.dev-vault/` only)
|
|
13
|
+
- Edit: YES (`.dev-vault/` only)
|
|
14
|
+
- Glob: YES
|
|
15
|
+
- Bash (git only): YES
|
|
16
|
+
|
|
17
|
+
## Rules
|
|
18
|
+
|
|
19
|
+
1. ONLY write to `.dev-vault/` — never touch project source code
|
|
20
|
+
2. Use Obsidian wikilinks for cross-references: `[[knowledge#Section]]`, `[[branches/feature-x]]`
|
|
21
|
+
3. All files must have YAML frontmatter with `date`, `tags`
|
|
22
|
+
4. Keep entries concise — reference material, not essays
|
|
23
|
+
5. Never include secrets, passwords, API keys, or tokens
|
|
24
|
+
6. Use the templates from `/templates/records/` as starting points
|
|
25
|
+
7. When updating knowledge.md, preserve existing content — append to relevant sections
|
|
26
|
+
|
|
27
|
+
## When invoked
|
|
28
|
+
|
|
29
|
+
This agent is called by `/handover`, `/merge`, `/debt`, `/bug`, `/adr` commands to handle the actual file operations.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# /git:changelog — Generate changelog from git history
|
|
2
|
+
|
|
3
|
+
Generate a structured changelog from recent commits.
|
|
4
|
+
|
|
5
|
+
## Procedure
|
|
6
|
+
|
|
7
|
+
1. Determine range (since last tag, or user-specified)
|
|
8
|
+
2. Collect commits: `git log <range> --oneline --no-merges`
|
|
9
|
+
3. Categorize by prefix: Add/Implement, Update/Refactor, Fix, Remove, Security
|
|
10
|
+
|
|
11
|
+
## Output format
|
|
12
|
+
|
|
13
|
+
Use this exact format (markdown, not code block):
|
|
14
|
+
|
|
15
|
+
📋 **Changelog** — \<range description\>
|
|
16
|
+
|
|
17
|
+
### ✨ Added
|
|
18
|
+
- \<description\> (`\<short hash\>`)
|
|
19
|
+
|
|
20
|
+
### 🔄 Changed
|
|
21
|
+
- \<description\> (`\<short hash\>`)
|
|
22
|
+
|
|
23
|
+
### 🐛 Fixed
|
|
24
|
+
- \<description\> (`\<short hash\>`)
|
|
25
|
+
|
|
26
|
+
### 🗑️ Removed
|
|
27
|
+
- \<description\> (`\<short hash\>`)
|
|
28
|
+
|
|
29
|
+
### 🔒 Security
|
|
30
|
+
- \<description\> (`\<short hash\>`)
|
|
31
|
+
|
|
32
|
+
**N commits, M categories.**
|
|
33
|
+
|
|
34
|
+
💡 Prepend to CHANGELOG.md? (yes / no)
|
|
35
|
+
|
|
36
|
+
## Rules
|
|
37
|
+
|
|
38
|
+
- Follow Keep a Changelog format
|
|
39
|
+
- Group related commits
|
|
40
|
+
- Skip merge commits
|
|
41
|
+
- Use present tense
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# /git:merge — Process branch merge
|
|
2
|
+
|
|
3
|
+
Transfer knowledge from a merged branch into permanent storage.
|
|
4
|
+
|
|
5
|
+
## Procedure
|
|
6
|
+
|
|
7
|
+
1. Identify merged branch (from git or user input)
|
|
8
|
+
2. Read `.dev-vault/branches/<branch-slug>.md`
|
|
9
|
+
3. Show what will be transferred:
|
|
10
|
+
|
|
11
|
+
🔀 **Merge:** \<branch name\>
|
|
12
|
+
|
|
13
|
+
### Transfer to knowledge.md
|
|
14
|
+
- **Decisions:** \<list from branch context\>
|
|
15
|
+
- **Gotchas:** \<findings discovered\>
|
|
16
|
+
|
|
17
|
+
### Transfer to gameplan.md
|
|
18
|
+
- **Unfinished:** \<tasks to move to backlog\>
|
|
19
|
+
|
|
20
|
+
### ❓ Open questions
|
|
21
|
+
- \<flag for user attention\>
|
|
22
|
+
|
|
23
|
+
**Proceed?** (yes / skip)
|
|
24
|
+
|
|
25
|
+
4. If yes:
|
|
26
|
+
- Append decisions/gotchas to knowledge.md
|
|
27
|
+
- Move unfinished to gameplan.md backlog
|
|
28
|
+
- Set branch status: `merged`, add `merged: <today>`
|
|
29
|
+
- Update gameplan.md: mark completed tasks
|
|
30
|
+
|
|
31
|
+
✅ **Merged** — branch context archived, knowledge transferred
|
|
32
|
+
|
|
33
|
+
## Rules
|
|
34
|
+
|
|
35
|
+
- Never delete branch file — keep as historical record
|
|
36
|
+
- Transfer only lasting knowledge, not session-specific details
|
|
37
|
+
- If abandoned: set `status: abandoned` with reason
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# /git:new-branch — Create branch context
|
|
2
|
+
|
|
3
|
+
Create a context file for the current git branch in `.dev-vault/branches/`.
|
|
4
|
+
|
|
5
|
+
## Procedure
|
|
6
|
+
|
|
7
|
+
1. Run `git branch --show-current`
|
|
8
|
+
2. Determine parent branch
|
|
9
|
+
3. Check for linked tasks via MCP tool `task_list`
|
|
10
|
+
4. Ask user about branch goal if not clear
|
|
11
|
+
|
|
12
|
+
## Output format
|
|
13
|
+
|
|
14
|
+
Use this exact format (markdown, not code block):
|
|
15
|
+
|
|
16
|
+
🌿 **New Branch:** \<branch name\>
|
|
17
|
+
|
|
18
|
+
- **Parent:** \<parent branch\>
|
|
19
|
+
- **Created:** \<today\>
|
|
20
|
+
- **Linked task:** \<task id or none\>
|
|
21
|
+
|
|
22
|
+
**Goal:** \<what this branch aims to achieve\>
|
|
23
|
+
|
|
24
|
+
**Save?** (yes / edit goal / skip)
|
|
25
|
+
|
|
26
|
+
5. If yes → create `.dev-vault/branches/<branch-slug>.md`
|
|
27
|
+
6. Link to gameplan.md phase if applicable
|
|
28
|
+
7. If task exists → suggest `/task start <id>`
|
|
29
|
+
|
|
30
|
+
✅ **Created** → `.dev-vault/branches/<slug>.md`
|
|
31
|
+
|
|
32
|
+
## Naming
|
|
33
|
+
|
|
34
|
+
Branch slug: replace `/` with `-`. Example: `feature/auth-flow` → `feature-auth-flow.md`
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# /git:pr-review — Multi-perspective PR review with vault context
|
|
2
|
+
|
|
3
|
+
Perform a thorough PR review using project vault knowledge and multiple evaluation perspectives.
|
|
4
|
+
|
|
5
|
+
## Procedure
|
|
6
|
+
|
|
7
|
+
1. Get PR diff: `git diff main...HEAD` and `git log main..HEAD --oneline`
|
|
8
|
+
2. Load vault context (conventions, knowledge, stack)
|
|
9
|
+
3. **Evaluate from 5 perspectives:** Security, Quality, Conventions, Completeness, Pragmatism
|
|
10
|
+
|
|
11
|
+
## Output format
|
|
12
|
+
|
|
13
|
+
Use this exact format (markdown, not code block):
|
|
14
|
+
|
|
15
|
+
🔍 **PR Review:** \<branch name\>
|
|
16
|
+
|
|
17
|
+
### Summary
|
|
18
|
+
\<1-2 sentences describing what the PR does\>
|
|
19
|
+
|
|
20
|
+
**Commits:** N | **Files:** M changed | **Scope:** \<small/medium/large\>
|
|
21
|
+
|
|
22
|
+
### Convention Compliance
|
|
23
|
+
- ✅ \<passing convention from vault\>
|
|
24
|
+
- ❌ \<violated convention\> — **\<file:line\>**
|
|
25
|
+
|
|
26
|
+
### ⚠️ Vault Gotchas
|
|
27
|
+
- \<known gotchas from knowledge.md that apply to this PR\>
|
|
28
|
+
|
|
29
|
+
### Findings by Severity
|
|
30
|
+
|
|
31
|
+
**🔴 Critical** — \<count or "none"\>
|
|
32
|
+
- **\<file:line\>** — \<issue\> *(perspective: Security/Quality/...)*
|
|
33
|
+
💡 *Fix:* \<suggestion\>
|
|
34
|
+
|
|
35
|
+
**🟠 High** — \<count or "none"\>
|
|
36
|
+
- **\<file:line\>** — \<issue\> *(perspective: ...)*
|
|
37
|
+
💡 *Fix:* \<suggestion\>
|
|
38
|
+
|
|
39
|
+
**🟡 Medium** — \<count or "none"\>
|
|
40
|
+
- **\<file:line\>** — \<issue\>
|
|
41
|
+
|
|
42
|
+
**💡 Suggestions**
|
|
43
|
+
- \<improvements\>
|
|
44
|
+
|
|
45
|
+
### Perspective Verdict
|
|
46
|
+
|
|
47
|
+
| Perspective | Assessment | Key concern |
|
|
48
|
+
|-------------|-----------|-------------|
|
|
49
|
+
| Security | ✅ / ⚠️ / 🔴 | \<one-line summary\> |
|
|
50
|
+
| Quality | ✅ / ⚠️ / 🔴 | \<summary\> |
|
|
51
|
+
| Conventions | ✅ / ⚠️ / 🔴 | \<summary\> |
|
|
52
|
+
| Completeness | ✅ / ⚠️ / 🔴 | \<summary\> |
|
|
53
|
+
| Pragmatism | ✅ / ⚠️ / 🔴 | \<summary\> |
|
|
54
|
+
|
|
55
|
+
### ⚠️ Conflicts
|
|
56
|
+
- \<if perspectives disagree: topic, who vs who, resolution\>
|
|
57
|
+
|
|
58
|
+
### Overall Verdict
|
|
59
|
+
✅ **APPROVE** / ⚠️ **APPROVE with notes** / ❌ **REQUEST_CHANGES**
|
|
60
|
+
|
|
61
|
+
### 💡 Suggested vault updates
|
|
62
|
+
- \<new gotchas or patterns discovered during review\>
|
|
63
|
+
|
|
64
|
+
Record findings? → /vault:bug, /vault:adr, /vault:knowledge
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# /session:handover — Save detailed session context
|
|
2
|
+
|
|
3
|
+
Capture the current session's work into `.dev-vault/` for future sessions.
|
|
4
|
+
|
|
5
|
+
## Procedure
|
|
6
|
+
|
|
7
|
+
1. Run `git branch --show-current` and `git diff --stat`
|
|
8
|
+
2. Check workflow status via MCP tool `workflow_status`
|
|
9
|
+
3. Review what was done in this session
|
|
10
|
+
4. Show summary before saving:
|
|
11
|
+
|
|
12
|
+
📤 **Session Handover — \<date\>**
|
|
13
|
+
|
|
14
|
+
**Project:** \<name\> | **Branch:** \<branch\>
|
|
15
|
+
|
|
16
|
+
### ✅ Done
|
|
17
|
+
- \<accomplishment with file/commit reference\>
|
|
18
|
+
|
|
19
|
+
### 🧠 Key Decisions
|
|
20
|
+
- \<decision with reasoning\>
|
|
21
|
+
|
|
22
|
+
### ⚠️ Problems & Findings
|
|
23
|
+
- \<gotchas discovered\>
|
|
24
|
+
|
|
25
|
+
### ❓ Open Questions
|
|
26
|
+
- \<unresolved issues\>
|
|
27
|
+
|
|
28
|
+
### ➡️ Next Steps
|
|
29
|
+
- \<what to do next session\>
|
|
30
|
+
|
|
31
|
+
### 🔄 Status
|
|
32
|
+
- **Workflow:** \<state or idle\>
|
|
33
|
+
- **Tasks:** \<linked tasks and status\>
|
|
34
|
+
- **Uncommitted:** \<N files\>
|
|
35
|
+
|
|
36
|
+
**Save?** (yes / edit / skip)
|
|
37
|
+
|
|
38
|
+
5. If yes → write to `.dev-vault/daily/<date>.md`
|
|
39
|
+
6. Update branch context and knowledge.md if insights found
|
|
40
|
+
7. Offer to create records: /vault:bug, /vault:adr, /vault:debt
|
|
41
|
+
8. Commit vault changes
|
|
42
|
+
|
|
43
|
+
✅ **Saved** → `.dev-vault/daily/<date>.md`
|
|
44
|
+
|
|
45
|
+
## Rules
|
|
46
|
+
|
|
47
|
+
- Keep entries concise — reference material, not essays
|
|
48
|
+
- Use Obsidian wikilinks for cross-references
|
|
49
|
+
- Never include secrets or tokens
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# /session:resume — Restore session context
|
|
2
|
+
|
|
3
|
+
Read the project's `.dev-vault/` and load full context for the current session.
|
|
4
|
+
|
|
5
|
+
## Procedure
|
|
6
|
+
|
|
7
|
+
1. Run `git branch --show-current`
|
|
8
|
+
2. Read vault files: stack.md, conventions.md, knowledge.md, gameplan.md
|
|
9
|
+
3. Read branch context and 3 most recent daily logs
|
|
10
|
+
4. Check for active tasks and paused workflows
|
|
11
|
+
|
|
12
|
+
## Output format
|
|
13
|
+
|
|
14
|
+
Use this exact format (markdown, not code block):
|
|
15
|
+
|
|
16
|
+
📥 **Session Resume — \<projectName\>**
|
|
17
|
+
|
|
18
|
+
- **Branch:** \<branch\> (\<status\>)
|
|
19
|
+
- **Last session:** \<date\>
|
|
20
|
+
- **Current phase:** \<from gameplan\>
|
|
21
|
+
|
|
22
|
+
### 🔄 Where we left off
|
|
23
|
+
- \<from branch context or latest daily log\>
|
|
24
|
+
|
|
25
|
+
### ❓ Open questions
|
|
26
|
+
- \<from branch context\>
|
|
27
|
+
|
|
28
|
+
### ➡️ Next steps
|
|
29
|
+
- \<from branch context or gameplan\>
|
|
30
|
+
|
|
31
|
+
### 📋 Active tasks
|
|
32
|
+
- \<task id\> — \<title\> (\<status\>)
|
|
33
|
+
|
|
34
|
+
### ⏸️ Paused workflow
|
|
35
|
+
- \<workflow name\> — step: \<step\> (run: \<id\>)
|
|
36
|
+
- Resume with: `/workflow resume`
|
|
37
|
+
|
|
38
|
+
## Special cases
|
|
39
|
+
|
|
40
|
+
- **Branch main/master** → show gameplan overview and list active branches
|
|
41
|
+
- **New branch without context** → ask user about goal, create branch file
|
|
42
|
+
- **No vault** → suggest `dev-workflow init`
|
|
43
|
+
- **Empty vault files** → suggest `/vault:analyze`
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# /session:review — Multi-perspective code review
|
|
2
|
+
|
|
3
|
+
Perform a code review of uncommitted changes from multiple perspectives,
|
|
4
|
+
aggregate findings by severity, detect conflicts between perspectives.
|
|
5
|
+
|
|
6
|
+
## Procedure
|
|
7
|
+
|
|
8
|
+
1. Run `git diff --stat` to see scope, then `git diff` for details
|
|
9
|
+
2. Load vault context (conventions, stack, knowledge)
|
|
10
|
+
3. **Evaluate from 5 perspectives** (inspired by consensus protocol):
|
|
11
|
+
|
|
12
|
+
### Perspectives
|
|
13
|
+
|
|
14
|
+
Each perspective reviews the same diff with different focus:
|
|
15
|
+
|
|
16
|
+
- **Security** — OWASP Top 10, injection, secrets, path traversal, auth
|
|
17
|
+
- **Quality** — SOLID, DRY, naming, complexity, error handling
|
|
18
|
+
- **Conventions** — project conventions from .dev-vault/conventions.md
|
|
19
|
+
- **Completeness** — edge cases, error paths, missing tests, cleanup
|
|
20
|
+
- **Pragmatism** — effort vs value, over-engineering, simplicity
|
|
21
|
+
|
|
22
|
+
4. **Aggregate findings** by severity, detect conflicts
|
|
23
|
+
|
|
24
|
+
## Output format
|
|
25
|
+
|
|
26
|
+
Use this exact format (markdown, not code block):
|
|
27
|
+
|
|
28
|
+
📝 **Review:** \<branch or description\>
|
|
29
|
+
|
|
30
|
+
**Scope:** N files changed, M insertions, K deletions
|
|
31
|
+
|
|
32
|
+
### 🔴 Critical (must fix)
|
|
33
|
+
- **\<file:line\>** — \<issue\> *(perspective: Security/Quality/...)*
|
|
34
|
+
💡 *Fix:* \<concrete suggestion\>
|
|
35
|
+
|
|
36
|
+
### 🟠 High (should fix)
|
|
37
|
+
- **\<file:line\>** — \<issue\> *(perspective: ...)*
|
|
38
|
+
💡 *Fix:* \<suggestion\>
|
|
39
|
+
|
|
40
|
+
### 🟡 Medium (consider)
|
|
41
|
+
- **\<file:line\>** — \<issue\> *(perspective: ...)*
|
|
42
|
+
|
|
43
|
+
### 💡 Suggestions
|
|
44
|
+
- \<improvement ideas\>
|
|
45
|
+
|
|
46
|
+
### ✅ Good
|
|
47
|
+
- \<positive observations from any perspective\>
|
|
48
|
+
|
|
49
|
+
### ⚠️ Conflicts between perspectives
|
|
50
|
+
|
|
51
|
+
If perspectives disagree (e.g., Pragmatism says "good enough" but Quality says "refactor"):
|
|
52
|
+
|
|
53
|
+
- **\<topic\>** — \<perspective A\> vs \<perspective B\>: \<nature of disagreement\>
|
|
54
|
+
→ *Resolution:* \<recommendation or escalate to user\>
|
|
55
|
+
|
|
56
|
+
### Verdict
|
|
57
|
+
|
|
58
|
+
| Perspective | Assessment |
|
|
59
|
+
|-------------|-----------|
|
|
60
|
+
| Security | ✅ pass / ⚠️ concerns / 🔴 blocked |
|
|
61
|
+
| Quality | ✅ / ⚠️ / 🔴 |
|
|
62
|
+
| Conventions | ✅ / ⚠️ / 🔴 |
|
|
63
|
+
| Completeness | ✅ / ⚠️ / 🔴 |
|
|
64
|
+
| Pragmatism | ✅ / ⚠️ / 🔴 |
|
|
65
|
+
|
|
66
|
+
**Overall:** ✅ APPROVE / ⚠️ APPROVE with notes / ❌ REQUEST_CHANGES
|
|
67
|
+
|
|
68
|
+
**Summary:** N findings (C critical, H high, M medium, S suggestions)
|
|
69
|
+
|
|
70
|
+
💡 Actions:
|
|
71
|
+
- Bug pattern? → /vault:bug
|
|
72
|
+
- New gotcha? → update knowledge.md
|
|
73
|
+
- Architecture concern? → /vault:adr
|
|
74
|
+
|
|
75
|
+
## Rules
|
|
76
|
+
|
|
77
|
+
- Read-only — never modify project code
|
|
78
|
+
- Reference specific files and line numbers
|
|
79
|
+
- Each finding tagged with source perspective
|
|
80
|
+
- Conflicts: if Security blocks but Pragmatism approves → Security wins
|
|
81
|
+
- Critical from ANY perspective → overall REQUEST_CHANGES
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# /task — Manage development tasks
|
|
2
|
+
|
|
3
|
+
Create, track, and manage tasks linked to git branches and workflows.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
- `/task create "title"` — Create a new task
|
|
8
|
+
- `/task list` — List all tasks
|
|
9
|
+
- `/task start <id>` — Start task (set in-progress)
|
|
10
|
+
- `/task done <id>` — Mark as done
|
|
11
|
+
- `/task show <id>` — Show details
|
|
12
|
+
|
|
13
|
+
## Output format for /task create
|
|
14
|
+
|
|
15
|
+
📋 **Task created**
|
|
16
|
+
|
|
17
|
+
- **ID:** task-001
|
|
18
|
+
- **Title:** \<title\>
|
|
19
|
+
- **Status:** ⚪ pending
|
|
20
|
+
- **Priority:** medium
|
|
21
|
+
|
|
22
|
+
💡 Start working? `/task start task-001`
|
|
23
|
+
|
|
24
|
+
## Output format for /task list
|
|
25
|
+
|
|
26
|
+
📋 **Tasks**
|
|
27
|
+
|
|
28
|
+
- 🟢 **task-001** — \<title\> (done, high)
|
|
29
|
+
- 🔵 **task-002** — \<title\> (in-progress, medium)
|
|
30
|
+
- ⚪ **task-003** — \<title\> (pending, low)
|
|
31
|
+
- 🔴 **task-004** — \<title\> (blocked, high)
|
|
32
|
+
|
|
33
|
+
**N tasks** (done: N, in-progress: N, pending: N)
|
|
34
|
+
|
|
35
|
+
## Output format for /task show
|
|
36
|
+
|
|
37
|
+
📋 **task-001** — \<title\>
|
|
38
|
+
|
|
39
|
+
- **Status:** 🟢 done
|
|
40
|
+
- **Priority:** high
|
|
41
|
+
- **Branch:** \<branch or none\>
|
|
42
|
+
- **Workflow:** \<run id or none\>
|
|
43
|
+
- **Created:** \<date\>
|
|
44
|
+
- **Updated:** \<date\>
|
|
45
|
+
|
|
46
|
+
\<description if any\>
|
|
47
|
+
|
|
48
|
+
## Task Lifecycle
|
|
49
|
+
|
|
50
|
+
⚪ pending → 🔵 in-progress → 🟠 review → 🟢 done
|
|
51
|
+
|
|
52
|
+
↘ 🔴 blocked
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# /vault:adr — Create Architecture Decision Record
|
|
2
|
+
|
|
3
|
+
Record a significant architectural or design decision in `.dev-vault/architecture/`.
|
|
4
|
+
|
|
5
|
+
## Procedure
|
|
6
|
+
|
|
7
|
+
1. Gather from conversation context: Context, Decision, Alternatives, Consequences
|
|
8
|
+
2. Show summary before saving:
|
|
9
|
+
|
|
10
|
+
📋 **New ADR**
|
|
11
|
+
|
|
12
|
+
- **Title:** \<decision title\>
|
|
13
|
+
- **Date:** \<today\>
|
|
14
|
+
- **Status:** accepted
|
|
15
|
+
|
|
16
|
+
**Context:** \<why needed\>
|
|
17
|
+
|
|
18
|
+
**Decision:** \<what was decided\>
|
|
19
|
+
|
|
20
|
+
**Alternatives considered:**
|
|
21
|
+
- **\<option A\>** — \<pros/cons\>
|
|
22
|
+
- **\<option B\>** — \<pros/cons\>
|
|
23
|
+
|
|
24
|
+
**Consequences:** \<trade-offs\>
|
|
25
|
+
|
|
26
|
+
**Save?** (yes / edit / skip)
|
|
27
|
+
|
|
28
|
+
3. If yes → use MCP tool `vault_record` type "adr" or create file directly
|
|
29
|
+
4. Confirm:
|
|
30
|
+
|
|
31
|
+
✅ **Saved** → `.dev-vault/architecture/<date>-<slug>.md`
|
|
32
|
+
|
|
33
|
+
💡 Updated knowledge.md if decision impacts patterns
|
|
34
|
+
|
|
35
|
+
## When to use
|
|
36
|
+
|
|
37
|
+
- Choosing between frameworks, libraries, or approaches
|
|
38
|
+
- Defining data models or API contracts
|
|
39
|
+
- Changing project structure or conventions
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# /vault:analyze — Deep project analysis with phased planning
|
|
2
|
+
|
|
3
|
+
Analyze the codebase and fill all vault sections with discovered information.
|
|
4
|
+
Uses phased approach with gate criteria before each write.
|
|
5
|
+
|
|
6
|
+
## Step 1: Check existing vault state
|
|
7
|
+
|
|
8
|
+
Read all vault files and show current state:
|
|
9
|
+
|
|
10
|
+
🔍 **Analyzing \<projectName\>...**
|
|
11
|
+
|
|
12
|
+
**Step 1/4 — Vault state**
|
|
13
|
+
|
|
14
|
+
| Section | Status | Content |
|
|
15
|
+
|---------|--------|---------|
|
|
16
|
+
| stack.md | ✅ / ○ | N items / empty |
|
|
17
|
+
| conventions.md | ✅ / ○ | N rules / empty |
|
|
18
|
+
| knowledge.md | ✅ / ○ | N entries / empty |
|
|
19
|
+
| gameplan.md | ✅ / ○ | N phases / empty |
|
|
20
|
+
|
|
21
|
+
Read: `.dev-vault/stack.md`, `.dev-vault/conventions.md`, `.dev-vault/knowledge.md`, `.dev-vault/gameplan.md`
|
|
22
|
+
|
|
23
|
+
## Step 2: Scan project structure
|
|
24
|
+
|
|
25
|
+
1. Run `find . -type f -not -path '*/node_modules/*' -not -path '*/.git/*' -not -path '*/target/*' -not -path '*/dist/*' -not -path '*/build/*' -not -path '*/.dev-vault/*' | head -100`
|
|
26
|
+
2. Identify project layout
|
|
27
|
+
|
|
28
|
+
📁 **Project:** \<layout type\> — N source files across M directories
|
|
29
|
+
|
|
30
|
+
## Step 3: Analyze code
|
|
31
|
+
|
|
32
|
+
**IMPORTANT:** Use a single Agent (subagent_type: Explore) to read all files at once.
|
|
33
|
+
Do NOT read files one by one — this creates too many tool calls in the UI.
|
|
34
|
+
|
|
35
|
+
Pick 5-10 diverse files: entry points, core modules, tests, configs.
|
|
36
|
+
|
|
37
|
+
Extract: File Structure, Naming, Code Style, Patterns, Testing conventions.
|
|
38
|
+
|
|
39
|
+
## Step 4: Phased plan with gate criteria
|
|
40
|
+
|
|
41
|
+
📋 **Analysis plan:**
|
|
42
|
+
|
|
43
|
+
### Phase 1: Conventions (gate: user approval)
|
|
44
|
+
- → **conventions.md** — add File Structure (N), Naming (N), Code Style (N)
|
|
45
|
+
- Gate: show items, user confirms
|
|
46
|
+
|
|
47
|
+
### Phase 2: Knowledge (gate: phase 1 complete)
|
|
48
|
+
- → **knowledge.md** — add Architecture (N), Gotchas (N)
|
|
49
|
+
- Gate: show items, user confirms
|
|
50
|
+
|
|
51
|
+
### Phase 3: Verification (gate: phase 2 complete)
|
|
52
|
+
- Verify no contradictions between conventions and knowledge
|
|
53
|
+
- Verify references point to real files
|
|
54
|
+
|
|
55
|
+
**Skip:**
|
|
56
|
+
- ✅ **stack.md** — already filled (verify only)
|
|
57
|
+
- ○ **gameplan.md** — requires human input
|
|
58
|
+
|
|
59
|
+
**Start Phase 1?** (yes / preview all / skip)
|
|
60
|
+
|
|
61
|
+
**Wait for user confirmation before each phase.**
|
|
62
|
+
|
|
63
|
+
## Step 5: Execute phases
|
|
64
|
+
|
|
65
|
+
For each phase:
|
|
66
|
+
1. Show exactly what will be written
|
|
67
|
+
2. Wait for approval
|
|
68
|
+
3. Write to vault via MCP tools or direct edit
|
|
69
|
+
4. Confirm what was written
|
|
70
|
+
5. Proceed to next phase
|
|
71
|
+
|
|
72
|
+
**Preserve existing content** — only append new information.
|
|
73
|
+
|
|
74
|
+
### conventions.md sections:
|
|
75
|
+
- `## File Structure`: `- <directory> — <purpose>`
|
|
76
|
+
- `## Naming`: `- Functions: <convention>`, `- Types: <convention>`, `- Files: <convention>`
|
|
77
|
+
- `## Code Style`: `- Error handling: <pattern>`, `- Logging: <library>`
|
|
78
|
+
- `## Patterns`: `- <pattern>: <where used>`
|
|
79
|
+
|
|
80
|
+
### knowledge.md sections:
|
|
81
|
+
- `## Architecture`: `- <component> → <component>: <relationship>`
|
|
82
|
+
- `## Gotchas`: `- <gotcha from code or README>`
|
|
83
|
+
|
|
84
|
+
## Step 6: Summary
|
|
85
|
+
|
|
86
|
+
✅ **Analyze complete**
|
|
87
|
+
|
|
88
|
+
| Phase | Section | Items added | Status |
|
|
89
|
+
|-------|---------|-------------|--------|
|
|
90
|
+
| 1 | conventions.md | +N | ✅ |
|
|
91
|
+
| 2 | knowledge.md | +N | ✅ |
|
|
92
|
+
| 3 | verification | N checks | ✅ / ⚠️ |
|
|
93
|
+
|
|
94
|
+
**Key findings:**
|
|
95
|
+
- \<most important discovery\>
|
|
96
|
+
- \<second finding\>
|
|
97
|
+
- \<third finding\>
|
|
98
|
+
|
|
99
|
+
💡 **Next:** fill gameplan.md manually, then /session:review
|
|
100
|
+
|
|
101
|
+
## Rules
|
|
102
|
+
|
|
103
|
+
- **Gate criteria:** each phase requires explicit user approval
|
|
104
|
+
- **Preserve existing content** — never overwrite, only append
|
|
105
|
+
- **Be specific** — "functions use snake_case" not "standard naming"
|
|
106
|
+
- **Reference files** — "error handling in cli/src/main.rs uses anyhow"
|
|
107
|
+
- **Skip gameplan.md** — roadmap is human-authored
|
|
108
|
+
- **Don't add utility crates/packages to stack.md** — only frameworks, ORMs, test runners
|
|
109
|
+
- Read max 15 files
|
|
110
|
+
- Never include secrets or credentials
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# /vault:bug — Record a resolved bug
|
|
2
|
+
|
|
3
|
+
Create a bug log in `.dev-vault/bugs/` for non-trivial bugs that were solved.
|
|
4
|
+
|
|
5
|
+
## Procedure
|
|
6
|
+
|
|
7
|
+
1. Gather: Symptoms, Root cause, Fix, Prevention, Severity
|
|
8
|
+
2. Show summary before saving:
|
|
9
|
+
|
|
10
|
+
🐛 **Bug Record**
|
|
11
|
+
|
|
12
|
+
- **Severity:** 🔴 critical / 🟠 high / 🟡 medium / 🟢 low
|
|
13
|
+
- **Title:** \<brief description\>
|
|
14
|
+
|
|
15
|
+
**Symptoms:** \<how it showed up\>
|
|
16
|
+
**Root cause:** \<why it happened\>
|
|
17
|
+
**Fix:** \<what was done — reference files/commits\>
|
|
18
|
+
**Prevention:** \<how to avoid in future\>
|
|
19
|
+
|
|
20
|
+
**Save?** (yes / edit / skip)
|
|
21
|
+
|
|
22
|
+
3. If yes → use MCP tool `vault_record` type "bug"
|
|
23
|
+
4. Confirm:
|
|
24
|
+
|
|
25
|
+
✅ **Saved** → `.dev-vault/bugs/<date>-<slug>.md`
|
|
26
|
+
|
|
27
|
+
💡 Updated knowledge.md → Gotchas (if pattern revealed)
|
|
28
|
+
|
|
29
|
+
## When to use
|
|
30
|
+
|
|
31
|
+
Only for non-trivial bugs worth remembering. Simple typos don't need a record.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# /vault:debt — Record tech debt
|
|
2
|
+
|
|
3
|
+
Create a tech debt record in `.dev-vault/debt/`.
|
|
4
|
+
|
|
5
|
+
## Procedure
|
|
6
|
+
|
|
7
|
+
1. Gather: What, Why deferred, Priority, Effort, Risk
|
|
8
|
+
2. Show summary before saving:
|
|
9
|
+
|
|
10
|
+
📝 **Tech Debt**
|
|
11
|
+
|
|
12
|
+
- **Priority:** 🔴 high / 🟡 medium / 🟢 low
|
|
13
|
+
- **Effort:** small / medium / large
|
|
14
|
+
- **Title:** \<title\>
|
|
15
|
+
|
|
16
|
+
**Problem:** \<what's wrong\>
|
|
17
|
+
**Why deferred:** \<context\>
|
|
18
|
+
**Proposal:** \<how to fix\>
|
|
19
|
+
**Risk if ignored:** \<consequences\>
|
|
20
|
+
|
|
21
|
+
**Save?** (yes / edit / skip)
|
|
22
|
+
|
|
23
|
+
3. If yes → use MCP tool `vault_record` type "debt"
|
|
24
|
+
4. Confirm:
|
|
25
|
+
|
|
26
|
+
✅ **Saved** → `.dev-vault/debt/<date>-<slug>.md`
|
|
27
|
+
|
|
28
|
+
💡 Added to gameplan.md backlog. Consider: `/task create "<title>"`
|