clikit-plugin 0.3.10 → 0.3.12
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/AGENTS.md +62 -41
- package/README.md +118 -57
- package/command/create.md +107 -20
- package/command/discuss.md +123 -0
- package/command/handoff.md +7 -5
- package/command/init.md +4 -3
- package/command/pr.md +2 -4
- package/command/research.md +130 -28
- package/command/resume.md +2 -2
- package/command/ship.md +1 -1
- package/command/start.md +12 -11
- package/command/status.md +20 -15
- package/dist/.tsbuildinfo +1 -1
- package/dist/clikit.schema.json +0 -8
- package/dist/config.d.ts +0 -5
- package/dist/config.d.ts.map +1 -1
- package/dist/hooks/index.d.ts +0 -2
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -77
- package/memory/_templates/discussion.md +99 -0
- package/memory/_templates/handoff.md +2 -2
- package/memory/_templates/plan.md +83 -176
- package/memory/_templates/research.md +33 -7
- package/memory/_templates/review.md +2 -2
- package/package.json +7 -6
- package/skill/beads/SKILL.md +29 -29
- package/skill/beads/mcp.json +1 -1
- package/skill/beads/references/api-reference.md +8 -3
- package/skill/requesting-code-review/SKILL.md +2 -2
- package/skill/ritual-workflow/SKILL.md +6 -4
- package/src/agents/AGENTS.md +21 -17
- package/src/agents/build.md +61 -63
- package/src/agents/explore.md +14 -14
- package/src/agents/plan.md +238 -94
- package/src/agents/research.md +41 -11
- package/src/agents/review.md +3 -3
- package/command/import-plan.md +0 -175
- package/command/issue.md +0 -109
- package/dist/hooks/tilth-first-guard.d.ts +0 -18
- package/dist/hooks/tilth-first-guard.d.ts.map +0 -1
- package/memory/_digest.md +0 -6
- package/memory/_templates/spec.md +0 -128
- package/memory/beads/.gitkeep +0 -0
- package/memory/handoffs/.gitkeep +0 -0
- package/memory/memory.db +0 -0
- package/memory/plans/.gitkeep +0 -0
- package/memory/prds/.gitkeep +0 -0
- package/memory/research/.gitkeep +0 -0
- package/memory/reviews/.gitkeep +0 -0
- package/memory/specs/.gitkeep +0 -0
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAG5C,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,KAAK,CAAC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,UAAU,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,+BAA+B;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,iCAAiC;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
* - Git Guard — blocks dangerous git commands
|
|
8
8
|
* - Security Check — scans for secrets before commits
|
|
9
9
|
* - Subagent Question Blocker — prevents subagents from asking questions
|
|
10
|
-
* - Tilth-First Guard — hard-enforces explicit tilth usage for @explore
|
|
11
10
|
* - Truncator — dynamic output truncation
|
|
12
11
|
* - Memory Digest — generates _digest.md from SQLite observations for agent access
|
|
13
12
|
* - Tilth Reading — tilth-first smart file reading with glob/read/grep fallback
|
|
@@ -17,7 +16,6 @@ export { isEmptyContent, sanitizeContent, } from "./empty-message-sanitizer";
|
|
|
17
16
|
export { checkDangerousCommand, formatBlockedWarning, type GitGuardResult, } from "./git-guard";
|
|
18
17
|
export { scanContentForSecrets, isSensitiveFile, formatSecurityWarning, type SecurityFinding, type SecurityCheckResult, } from "./security-check";
|
|
19
18
|
export { containsQuestion, isSubagentTool, formatBlockerWarning, } from "./subagent-question-blocker";
|
|
20
|
-
export { isExploreAgent, isFallbackNavigationTool, isExplicitTilthCommand, markTilthAttempt, shouldBlockTilthFallback, formatTilthFirstGuardWarning, formatTilthFirstGuardReason, formatTilthFirstGuardPass, type TilthFirstGuardState, } from "./tilth-first-guard";
|
|
21
19
|
export { shouldTruncate, truncateOutput, formatTruncationLog, type TruncatorConfig, type TruncateResult, } from "./truncator";
|
|
22
20
|
export { generateMemoryDigest, formatDigestLog, type MemoryDigestConfig, } from "./memory-digest";
|
|
23
21
|
export { syncTodosToBeads, formatTodoBeadsSyncLog, type OpenCodeTodo, type TodoBeadsSyncConfig, type TodoBeadsSyncResult, } from "./todo-beads-sync";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,KAAK,QAAQ,EACb,KAAK,eAAe,GACrB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,cAAc,EACd,eAAe,GAChB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,KAAK,cAAc,GACpB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,KAAK,eAAe,EACpB,KAAK,mBAAmB,GACzB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,oBAAoB,GACrB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACL,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,GACzB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,KAAK,aAAa,GACnB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,gBAAgB,EAChB,2BAA2B,EAC3B,yBAAyB,EACzB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,KAAK,kBAAkB,EACvB,KAAK,eAAe,GACrB,MAAM,iBAAiB,CAAC"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAmIlD,QAAA,MAAM,YAAY,EAAE,MA85BnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -16594,10 +16594,6 @@ var DEFAULT_CONFIG = {
|
|
|
16594
16594
|
subagent_question_blocker: {
|
|
16595
16595
|
enabled: true
|
|
16596
16596
|
},
|
|
16597
|
-
tilth_first_guard: {
|
|
16598
|
-
enabled: true,
|
|
16599
|
-
log: false
|
|
16600
|
-
},
|
|
16601
16597
|
truncator: {
|
|
16602
16598
|
enabled: true,
|
|
16603
16599
|
max_output_chars: 30000,
|
|
@@ -17166,46 +17162,6 @@ function isSubagentTool(toolName) {
|
|
|
17166
17162
|
function formatBlockerWarning() {
|
|
17167
17163
|
return `[CliKit:subagent-blocker] Subagent attempted to ask clarifying questions. Subagents should execute autonomously.`;
|
|
17168
17164
|
}
|
|
17169
|
-
// src/hooks/tilth-first-guard.ts
|
|
17170
|
-
var EXPLORE_AGENT = "explore";
|
|
17171
|
-
var FALLBACK_TOOLS = new Set(["read", "grep", "glob"]);
|
|
17172
|
-
var EXPLICIT_TILTH_COMMAND = /^(?:npx\s+)?tilth(?:\s|$)/i;
|
|
17173
|
-
function normalize(value) {
|
|
17174
|
-
return typeof value === "string" ? value.trim().toLowerCase() : "";
|
|
17175
|
-
}
|
|
17176
|
-
function isExploreAgent(agent) {
|
|
17177
|
-
return normalize(agent) === EXPLORE_AGENT;
|
|
17178
|
-
}
|
|
17179
|
-
function isFallbackNavigationTool(toolName) {
|
|
17180
|
-
return FALLBACK_TOOLS.has(normalize(toolName));
|
|
17181
|
-
}
|
|
17182
|
-
function isExplicitTilthCommand(command) {
|
|
17183
|
-
return typeof command === "string" && EXPLICIT_TILTH_COMMAND.test(command.trim());
|
|
17184
|
-
}
|
|
17185
|
-
function markTilthAttempt(state) {
|
|
17186
|
-
return {
|
|
17187
|
-
...state || {},
|
|
17188
|
-
sawTilthAttempt: true
|
|
17189
|
-
};
|
|
17190
|
-
}
|
|
17191
|
-
function shouldBlockTilthFallback(agent, toolName, state) {
|
|
17192
|
-
if (!isExploreAgent(agent)) {
|
|
17193
|
-
return false;
|
|
17194
|
-
}
|
|
17195
|
-
if (!isFallbackNavigationTool(toolName)) {
|
|
17196
|
-
return false;
|
|
17197
|
-
}
|
|
17198
|
-
return state?.sawTilthAttempt !== true;
|
|
17199
|
-
}
|
|
17200
|
-
function formatTilthFirstGuardWarning(toolName) {
|
|
17201
|
-
return `[CliKit:tilth-first-guard] Blocked @explore from using ${toolName} before an explicit tilth CLI attempt.`;
|
|
17202
|
-
}
|
|
17203
|
-
function formatTilthFirstGuardReason(toolName) {
|
|
17204
|
-
return `@explore must call 'tilth <path>' before using ${toolName}. read/grep/glob are fallback tools only.`;
|
|
17205
|
-
}
|
|
17206
|
-
function formatTilthFirstGuardPass(command) {
|
|
17207
|
-
return `[CliKit:tilth-first-guard] Recorded tilth attempt for @explore: ${command}`;
|
|
17208
|
-
}
|
|
17209
17165
|
// src/hooks/truncator.ts
|
|
17210
17166
|
var DEFAULT_MAX_CHARS = 30000;
|
|
17211
17167
|
var DEFAULT_MAX_LINES = 500;
|
|
@@ -18433,13 +18389,7 @@ function ensureDcpInConfig() {
|
|
|
18433
18389
|
var CliKitPlugin = async (ctx) => {
|
|
18434
18390
|
const todosBySession = new Map;
|
|
18435
18391
|
const sessionAgents = new Map;
|
|
18436
|
-
const tilthFirstBySession = new Map;
|
|
18437
18392
|
const defaultMcpEntries = {
|
|
18438
|
-
"beads-village": {
|
|
18439
|
-
type: "local",
|
|
18440
|
-
command: ["npx", "-y", "beads-village"],
|
|
18441
|
-
enabled: true
|
|
18442
|
-
},
|
|
18443
18393
|
context7: {
|
|
18444
18394
|
type: "remote",
|
|
18445
18395
|
url: "https://mcp.context7.com/mcp",
|
|
@@ -18953,7 +18903,6 @@ ${(content || "").trim()}`.trim();
|
|
|
18953
18903
|
if (sessionID) {
|
|
18954
18904
|
todosBySession.delete(sessionID);
|
|
18955
18905
|
sessionAgents.delete(sessionID);
|
|
18956
|
-
tilthFirstBySession.delete(sessionID);
|
|
18957
18906
|
}
|
|
18958
18907
|
}
|
|
18959
18908
|
},
|
|
@@ -19058,32 +19007,6 @@ ${(content || "").trim()}`.trim();
|
|
|
19058
19007
|
}
|
|
19059
19008
|
}
|
|
19060
19009
|
}
|
|
19061
|
-
if (pluginConfig.hooks?.tilth_first_guard?.enabled !== false && isExploreAgent(activeAgent)) {
|
|
19062
|
-
const tilthGuardConfig = pluginConfig.hooks?.tilth_first_guard;
|
|
19063
|
-
const command = toolInput.command ?? toolInput.cmd;
|
|
19064
|
-
try {
|
|
19065
|
-
if (isToolNamed(toolName, "bash") && command && isExplicitTilthCommand(command)) {
|
|
19066
|
-
const nextState = markTilthAttempt(tilthFirstBySession.get(sessionID));
|
|
19067
|
-
tilthFirstBySession.set(sessionID, nextState);
|
|
19068
|
-
if (tilthGuardConfig?.log === true) {
|
|
19069
|
-
await cliLog("info", formatTilthFirstGuardPass(command.trim()));
|
|
19070
|
-
}
|
|
19071
|
-
}
|
|
19072
|
-
if (isFallbackNavigationTool(toolName)) {
|
|
19073
|
-
const state = tilthFirstBySession.get(sessionID);
|
|
19074
|
-
if (shouldBlockTilthFallback(activeAgent, toolName, state)) {
|
|
19075
|
-
await cliLog("warn", formatTilthFirstGuardWarning(toolName));
|
|
19076
|
-
await showToast("@explore must call tilth before fallback tools", "warning", "CliKit Guard");
|
|
19077
|
-
blockToolExecution(formatTilthFirstGuardReason(toolName));
|
|
19078
|
-
}
|
|
19079
|
-
}
|
|
19080
|
-
} catch (error45) {
|
|
19081
|
-
if (isBlockedToolExecutionError(error45)) {
|
|
19082
|
-
throw error45;
|
|
19083
|
-
}
|
|
19084
|
-
await hookErr("tilth-first-guard", error45, { tool: toolName, sessionID, agent: activeAgent, command });
|
|
19085
|
-
}
|
|
19086
|
-
}
|
|
19087
19010
|
},
|
|
19088
19011
|
"tool.execute.after": async (input, output) => {
|
|
19089
19012
|
const toolName = input.tool;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Discussion Template
|
|
2
|
+
|
|
3
|
+
Use this template when documenting clarified intent before `/create`.
|
|
4
|
+
|
|
5
|
+
**Output path:** `.opencode/memory/discussions/YYYY-MM-DD-<topic>.md`
|
|
6
|
+
|
|
7
|
+
This template is optimized for an **interview-style pre-create discussion**: the report should reduce guessing for `/create`, `/research`, and `/start` by separating what the interview already resolved from what still needs downstream work.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
```markdown
|
|
12
|
+
---
|
|
13
|
+
topic: [Topic Name]
|
|
14
|
+
date: YYYY-MM-DD
|
|
15
|
+
status: draft | approved
|
|
16
|
+
mode: interactive | assumptions
|
|
17
|
+
bead_id: [optional]
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Discussion: [Topic]
|
|
21
|
+
|
|
22
|
+
**Goal:** [What outcome the user wants]
|
|
23
|
+
**Why now:** [Why this needs to be clarified before planning]
|
|
24
|
+
**Assumptions:** [Any assumptions made due to incomplete context, or "None"]
|
|
25
|
+
**Interview focus:** [Which gray areas the discussion prioritized first]
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Scope Boundary
|
|
30
|
+
|
|
31
|
+
- **In scope:** [What this discussion covers]
|
|
32
|
+
- **Out of scope:** [What is explicitly excluded]
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Locked Decisions
|
|
37
|
+
|
|
38
|
+
Record only decisions that the interview actually resolved. If a topic stayed uncertain, move it to **Open Questions** instead of implying certainty.
|
|
39
|
+
|
|
40
|
+
### Decision 1: [Title]
|
|
41
|
+
- **Decision:** [Confirmed choice]
|
|
42
|
+
- **Why it matters:** [Why `/create` or `/research` must preserve it]
|
|
43
|
+
- **Source:** user-confirmed | prior artifact-confirmed
|
|
44
|
+
|
|
45
|
+
### Decision 2: [Title]
|
|
46
|
+
- **Decision:** [Confirmed choice]
|
|
47
|
+
- **Why it matters:** [Practical consequence]
|
|
48
|
+
- **Source:** user-confirmed | prior artifact-confirmed
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Confirmed Assumptions
|
|
53
|
+
|
|
54
|
+
Use this section for defaults accepted during the interview because prior artifacts or codebase evidence made them reasonable.
|
|
55
|
+
|
|
56
|
+
- **Assumption:** [What was assumed]
|
|
57
|
+
- **Confirmed by:** [user / artifact / codebase pattern]
|
|
58
|
+
- **Notes:** [Any caveat]
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Open Questions
|
|
63
|
+
|
|
64
|
+
Use this section for planning-critical ambiguity that the interview intentionally left unresolved.
|
|
65
|
+
|
|
66
|
+
- **Question:** [Unresolved item]
|
|
67
|
+
- **Why unresolved:** [Reason]
|
|
68
|
+
- **Next owner:** `/create` | `/research` | user
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Codebase Context
|
|
73
|
+
|
|
74
|
+
- **Relevant files/modules:** [Paths or components]
|
|
75
|
+
- **Existing patterns:** [Patterns worth preserving]
|
|
76
|
+
- **Reuse opportunities:** [What downstream work should reuse]
|
|
77
|
+
- **Constraints:** [Technical realities discovered locally]
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Canonical References
|
|
82
|
+
|
|
83
|
+
- [Internal doc, file, or prior artifact]
|
|
84
|
+
- [Another source downstream agents should read]
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Deferred / Later
|
|
89
|
+
|
|
90
|
+
- [Idea intentionally postponed]
|
|
91
|
+
- [Follow-up that should not expand current scope]
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Planning Notes
|
|
96
|
+
|
|
97
|
+
- [Specific instruction `/create` should preserve in the plan]
|
|
98
|
+
- [If useful: which question order or interview framing worked best for this topic]
|
|
99
|
+
```
|
|
@@ -9,7 +9,7 @@ Use this template when saving state for session breaks.
|
|
|
9
9
|
```markdown
|
|
10
10
|
---
|
|
11
11
|
date: YYYY-MM-DD
|
|
12
|
-
phase:
|
|
12
|
+
phase: discussed | researched | planned | implementing | validating
|
|
13
13
|
branch: [git branch name]
|
|
14
14
|
bead_id: [optional]
|
|
15
15
|
---
|
|
@@ -28,7 +28,7 @@ bead_id: [optional]
|
|
|
28
28
|
|
|
29
29
|
| Type | Path | Status |
|
|
30
30
|
|------|------|--------|
|
|
31
|
-
|
|
|
31
|
+
| Discussion | `.opencode/memory/discussions/YYYY-MM-DD-topic.md` | 🧭 Reference |
|
|
32
32
|
| Plan | `.opencode/memory/plans/YYYY-MM-DD-feature.md` | ✅ Complete |
|
|
33
33
|
| Research | `.opencode/memory/research/YYYY-MM-DD-topic.md` | 📚 Reference |
|
|
34
34
|
| PRD | `.opencode/memory/prds/YYYY-MM-DD-feature.md` | ⏸️ In Review |
|
|
@@ -7,183 +7,90 @@ Use this template when creating implementation plans.
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
```markdown
|
|
10
|
-
# Implementation Plan: [Feature]
|
|
11
|
-
|
|
12
|
-
**Date:** YYYY-MM-DD
|
|
13
|
-
**Author:** [Name]
|
|
14
|
-
**Status:** Draft | Approved
|
|
15
|
-
**bead_id:** [ID]
|
|
16
|
-
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## Overview
|
|
20
|
-
|
|
21
|
-
[Brief description of what will be built]
|
|
22
|
-
|
|
23
|
-
## References
|
|
24
|
-
|
|
25
|
-
- **Spec:** `.opencode/memory/specs/YYYY-MM-DD-descriptor.md`
|
|
26
|
-
- **PRD:** `.opencode/memory/prds/YYYY-MM-DD-feature.md` (if applicable)
|
|
27
|
-
- **Research:** `.opencode/memory/research/YYYY-MM-DD-topic.md` (if applicable)
|
|
28
|
-
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
## Conventions & Past Decisions
|
|
32
|
-
|
|
33
|
-
### Git Conventions
|
|
34
|
-
- **Commit format:** [e.g., conventional commits, prefix patterns]
|
|
35
|
-
- **Branch naming:** [e.g., feature/xxx, bead/B-xxx]
|
|
36
|
-
- **File organization:** [patterns observed from recent commits]
|
|
37
|
-
|
|
38
|
-
### Relevant Past Decisions
|
|
39
|
-
- [Decision from memory/handoffs that affects this plan, or "None found"]
|
|
40
|
-
|
|
41
|
-
### Learnings & Gotchas
|
|
42
|
-
- [Past learnings, blockers, workarounds from memory that apply, or "None found"]
|
|
43
|
-
|
|
44
|
-
### Prior Research
|
|
45
|
-
- [Relevant findings from .opencode/memory/research/*.md, or "None found"]
|
|
46
|
-
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
## Tasks
|
|
50
|
-
|
|
51
|
-
### Task 1: [Title]
|
|
52
|
-
|
|
53
|
-
| Field | Value |
|
|
54
|
-
|-------|-------|
|
|
55
|
-
| **task_id** | T-001 |
|
|
56
|
-
| **type** | task \| bug \| feature \| chore |
|
|
57
|
-
| **assignee** | build \| fe \| be \| mobile \| devops |
|
|
58
|
-
| **effort** | S \| M \| L \| XL |
|
|
59
|
-
| **priority** | P0 \| P1 \| P2 |
|
|
60
|
-
| **status** | not_started \| in_progress \| blocked \| done |
|
|
61
|
-
| **dependencies** | [T-xxx] or none |
|
|
62
|
-
|
|
63
|
-
**Description:**
|
|
64
|
-
[What needs to be done]
|
|
65
|
-
|
|
66
|
-
**Input:**
|
|
67
|
-
- [Required artifacts/context]
|
|
68
|
-
|
|
69
|
-
**Output:**
|
|
70
|
-
- [Expected deliverables]
|
|
71
|
-
- [Files to create/modify]
|
|
72
|
-
|
|
73
|
-
**Acceptance Criteria:**
|
|
74
|
-
- [ ] AC-01: [Criteria]
|
|
75
|
-
- [ ] AC-02: [Criteria]
|
|
76
|
-
|
|
77
|
-
**Boundaries:**
|
|
78
|
-
- [What NOT to do]
|
|
79
|
-
|
|
80
|
-
**Task Packet:**
|
|
81
|
-
- **packet_id:** P-T-001
|
|
82
|
-
- **goal:** [Single executable concern]
|
|
83
|
-
- **files_in_scope:**
|
|
84
|
-
- create: [`path/to/new-file.ts`]
|
|
85
|
-
- modify: [`path/to/existing.ts`]
|
|
86
|
-
- delete: []
|
|
87
|
-
- **verification_commands:**
|
|
88
|
-
- `bun run typecheck`
|
|
89
|
-
- `bun test path/to/test.ts`
|
|
90
|
-
- **risks:**
|
|
91
|
-
- [Top risk for this packet]
|
|
92
|
-
- **escalate_if:**
|
|
93
|
-
- [Verification fails twice]
|
|
94
|
-
- [A file outside scope must be edited]
|
|
95
|
-
|
|
96
|
-
---
|
|
97
|
-
|
|
98
|
-
### Task 2: [Title]
|
|
99
|
-
|
|
100
|
-
[Repeat structure]
|
|
101
|
-
|
|
102
|
-
---
|
|
103
|
-
|
|
104
|
-
## File Impact
|
|
105
|
-
|
|
106
|
-
**Files to CREATE:**
|
|
107
|
-
- `path/to/new-file.ts` — [Purpose]
|
|
108
|
-
|
|
109
|
-
**Files to MODIFY:**
|
|
110
|
-
- `path/to/existing.ts` — [Reason]
|
|
111
|
-
|
|
112
|
-
**Files to DELETE:**
|
|
113
|
-
- (none)
|
|
114
|
-
|
|
115
|
-
---
|
|
116
|
-
|
|
117
|
-
## Execution Model
|
|
118
|
-
|
|
119
|
-
- Workflow quick mode: `/create → /start → /verify → /ship`
|
|
120
|
-
- Workflow deep mode: `/create → /research → /design → /start → /verify → /ship`
|
|
121
|
-
- Execution unit: **Task Packet**
|
|
122
|
-
- Source of truth: **Beads**
|
|
123
|
-
- `/start`: execute + per-packet verify loop
|
|
124
|
-
- `/verify`: pre-ship gate (all 4 checks, SHIP_READY verdict required before `/ship`)
|
|
125
|
-
- `/ship`: commit + sync/push landed changes in the shared checkout; `/pr` is an explicit exception path
|
|
126
|
-
|
|
127
|
-
---
|
|
128
|
-
|
|
129
|
-
## Dependencies
|
|
130
|
-
|
|
131
|
-
```mermaid
|
|
132
|
-
graph TD
|
|
133
|
-
T001[T-001: Title] --> T002[T-002: Title]
|
|
134
|
-
T002 --> T003[T-003: Title]
|
|
135
|
-
T001 --> T003
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
---
|
|
139
|
-
|
|
140
|
-
## Effort Summary
|
|
141
|
-
|
|
142
|
-
| Task | Effort | Priority |
|
|
143
|
-
|------|--------|----------|
|
|
144
|
-
| T-001 | S | P0 |
|
|
145
|
-
| T-002 | M | P0 |
|
|
146
|
-
| T-003 | S | P1 |
|
|
147
|
-
|
|
148
|
-
**Total Estimated Effort:** [X days/weeks]
|
|
149
|
-
|
|
150
|
-
---
|
|
151
|
-
|
|
152
|
-
## Risk Assessment
|
|
153
|
-
|
|
154
|
-
| Risk | Probability | Impact | Mitigation |
|
|
155
|
-
|------|-------------|--------|------------|
|
|
156
|
-
| [Risk 1] | L/M/H | L/M/H | [Mitigation] |
|
|
157
|
-
|
|
158
|
-
---
|
|
159
|
-
|
|
160
|
-
## Quick Mode Eligibility
|
|
161
|
-
|
|
162
|
-
Tasks eligible for Quick Mode (no full plan needed):
|
|
163
|
-
- [ ] T-001 (S, ≤3 files, no security/db/api)
|
|
164
|
-
|
|
165
|
-
## Packet Checklist
|
|
166
|
-
|
|
167
|
-
- [ ] Every task has a packet_id
|
|
168
|
-
- [ ] Every packet stays within 1–3 files
|
|
169
|
-
- [ ] Every packet has executable verification commands
|
|
170
|
-
- [ ] Every packet has an escalate_if clause
|
|
171
|
-
- [ ] File Impact matches all packet scopes
|
|
172
|
-
|
|
173
10
|
---
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
11
|
+
phase: XX-name
|
|
12
|
+
plan: NN
|
|
13
|
+
type: execute
|
|
14
|
+
wave: N
|
|
15
|
+
depends_on: []
|
|
16
|
+
files_modified: []
|
|
17
|
+
autonomous: true
|
|
18
|
+
requirements: []
|
|
19
|
+
must_haves:
|
|
20
|
+
truths: []
|
|
21
|
+
artifacts: []
|
|
22
|
+
key_links: []
|
|
182
23
|
---
|
|
183
24
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
25
|
+
<objective>
|
|
26
|
+
[What this plan accomplishes]
|
|
27
|
+
</objective>
|
|
28
|
+
|
|
29
|
+
<context>
|
|
30
|
+
[Relevant context files and source references]
|
|
31
|
+
</context>
|
|
32
|
+
|
|
33
|
+
<tasks>
|
|
34
|
+
<task type="auto">
|
|
35
|
+
<packet_id>P-T001</packet_id>
|
|
36
|
+
<task_id>T-001</task_id>
|
|
37
|
+
<name>Task 1: [Action-oriented name]</name>
|
|
38
|
+
<goal>[One executable concern]</goal>
|
|
39
|
+
<files_in_scope>
|
|
40
|
+
<create>[]</create>
|
|
41
|
+
<modify>["path/to/file.ext"]</modify>
|
|
42
|
+
<delete>[]</delete>
|
|
43
|
+
</files_in_scope>
|
|
44
|
+
<dependencies>[]</dependencies>
|
|
45
|
+
<action>[Specific implementation]</action>
|
|
46
|
+
<acceptance_criteria>
|
|
47
|
+
<criterion cmd="bun test path/to/test.ts">exits 0</criterion>
|
|
48
|
+
<criterion cmd="lsp_diagnostics path/to/file.ext">zero errors</criterion>
|
|
49
|
+
</acceptance_criteria>
|
|
50
|
+
<verification_commands>
|
|
51
|
+
<command>bun run typecheck</command>
|
|
52
|
+
<command>bun test path/to/test.ts</command>
|
|
53
|
+
</verification_commands>
|
|
54
|
+
<risks>
|
|
55
|
+
<risk>[Top risk for this packet]</risk>
|
|
56
|
+
</risks>
|
|
57
|
+
<escalate_if>
|
|
58
|
+
<condition>Verification fails after 2 attempts</condition>
|
|
59
|
+
<condition>Implementation requires file outside files_in_scope</condition>
|
|
60
|
+
</escalate_if>
|
|
61
|
+
<context_refs>
|
|
62
|
+
<discussion_paths>[]</discussion_paths>
|
|
63
|
+
<plan_path>.opencode/memory/plans/YYYY-MM-DD-<feature>.md</plan_path>
|
|
64
|
+
<research_paths>[]</research_paths>
|
|
65
|
+
</context_refs>
|
|
66
|
+
</task>
|
|
67
|
+
</tasks>
|
|
68
|
+
|
|
69
|
+
<file_impact>
|
|
70
|
+
<create>[]</create>
|
|
71
|
+
<modify>["path/to/file.ext"]</modify>
|
|
72
|
+
<delete>[]</delete>
|
|
73
|
+
</file_impact>
|
|
74
|
+
|
|
75
|
+
<dag>
|
|
76
|
+
<wave number="1">P-T001</wave>
|
|
77
|
+
</dag>
|
|
78
|
+
|
|
79
|
+
<boundaries>
|
|
80
|
+
<always>[Required invariants and constraints]</always>
|
|
81
|
+
<ask_first>[Changes that require explicit approval]</ask_first>
|
|
82
|
+
<never>[Out-of-scope or forbidden changes]</never>
|
|
83
|
+
</boundaries>
|
|
84
|
+
|
|
85
|
+
<out_of_scope>
|
|
86
|
+
[Explicitly excluded work]
|
|
87
|
+
</out_of_scope>
|
|
88
|
+
|
|
89
|
+
<verification>
|
|
90
|
+
[Overall phase checks]
|
|
91
|
+
</verification>
|
|
92
|
+
|
|
93
|
+
<success_criteria>
|
|
94
|
+
[Measurable completion]
|
|
95
|
+
</success_criteria>
|
|
189
96
|
```
|
|
@@ -4,6 +4,8 @@ Use this template when documenting research findings.
|
|
|
4
4
|
|
|
5
5
|
**Output path:** `.opencode/memory/research/YYYY-MM-DD-<topic>.md`
|
|
6
6
|
|
|
7
|
+
This template is optimized for **pre-plan research**: the report should reduce guessing for Plan and Build, not just summarize information.
|
|
8
|
+
|
|
7
9
|
---
|
|
8
10
|
|
|
9
11
|
```markdown
|
|
@@ -21,25 +23,35 @@ bead_id: [optional]
|
|
|
21
23
|
# Research: [Topic]
|
|
22
24
|
|
|
23
25
|
**Question:** [Original research question]
|
|
26
|
+
**Planning Goal:** [What planning or implementation decision this report should unblock]
|
|
27
|
+
**Assumptions:** [Any assumption made because context was incomplete, or "None"]
|
|
24
28
|
|
|
25
29
|
---
|
|
26
30
|
|
|
27
31
|
## Summary
|
|
28
32
|
|
|
29
|
-
[2-
|
|
33
|
+
[2-4 sentence answer that directly helps planning or execution]
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Research Brief
|
|
38
|
+
|
|
39
|
+
- **Decision gaps:** [Which unknowns this research was meant to resolve]
|
|
40
|
+
- **Constraints:** [Language, framework, platform, architecture, version limits]
|
|
41
|
+
- **Research scope:** [What was investigated and what was intentionally excluded]
|
|
30
42
|
|
|
31
43
|
---
|
|
32
44
|
|
|
33
45
|
## Key Findings
|
|
34
46
|
|
|
35
47
|
### Finding 1: [Title]
|
|
36
|
-
[Details]
|
|
48
|
+
[VERIFIED]/[CITED]/[ASSUMED] [Details and why this matters]
|
|
37
49
|
|
|
38
50
|
### Finding 2: [Title]
|
|
39
|
-
[Details]
|
|
51
|
+
[VERIFIED]/[CITED]/[ASSUMED] [Details and why this matters]
|
|
40
52
|
|
|
41
53
|
### Finding 3: [Title]
|
|
42
|
-
[Details]
|
|
54
|
+
[VERIFIED]/[CITED]/[ASSUMED] [Details and why this matters]
|
|
43
55
|
|
|
44
56
|
---
|
|
45
57
|
|
|
@@ -76,10 +88,24 @@ bead_id: [optional]
|
|
|
76
88
|
|
|
77
89
|
---
|
|
78
90
|
|
|
79
|
-
##
|
|
91
|
+
## Planning Impact
|
|
92
|
+
|
|
93
|
+
- [How this research should influence the plan or packet boundaries]
|
|
94
|
+
- [What Build should avoid or sequence carefully]
|
|
95
|
+
- [Any dependency, migration, or scope implications]
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Verification Hooks
|
|
100
|
+
|
|
101
|
+
- [ ] [Targeted test, command, or assertion to run during implementation]
|
|
102
|
+
- [ ] [Another implementation-time check]
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Conflicting Evidence (if any)
|
|
80
107
|
|
|
81
|
-
- [
|
|
82
|
-
- [ ] [Test with specific scenario]
|
|
108
|
+
- [Source A says X, source B says Y, and the practical implication]
|
|
83
109
|
|
|
84
110
|
---
|
|
85
111
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Review Template
|
|
2
2
|
|
|
3
|
-
Use this template when reviewing code, PRDs,
|
|
3
|
+
Use this template when reviewing code, PRDs, or plans.
|
|
4
4
|
|
|
5
5
|
**Output path:** `.opencode/memory/reviews/YYYY-MM-DD-<subject>-review.md`
|
|
6
6
|
|
|
@@ -8,7 +8,7 @@ Use this template when reviewing code, PRDs, specs, or plans.
|
|
|
8
8
|
|
|
9
9
|
```markdown
|
|
10
10
|
---
|
|
11
|
-
type: Code | PRD |
|
|
11
|
+
type: Code | PRD | Plan | Security
|
|
12
12
|
date: YYYY-MM-DD
|
|
13
13
|
reviewer: [Name/Agent]
|
|
14
14
|
artifact: [Path to reviewed artifact]
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "clikit-plugin",
|
|
3
|
-
"version": "0.3.
|
|
4
|
-
"description": "OpenCode
|
|
3
|
+
"version": "0.3.12",
|
|
4
|
+
"description": "Workflow layer for OpenCode — agents, commands, hooks, memory, and verification",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
8
8
|
"bin": {
|
|
9
|
-
"clikit": "
|
|
9
|
+
"clikit": "dist/cli.js"
|
|
10
10
|
},
|
|
11
11
|
"exports": {
|
|
12
12
|
".": {
|
|
@@ -20,16 +20,17 @@
|
|
|
20
20
|
"src/agents",
|
|
21
21
|
"skill",
|
|
22
22
|
"command",
|
|
23
|
-
"memory",
|
|
23
|
+
"memory/_templates",
|
|
24
|
+
"memory/project",
|
|
24
25
|
"AGENTS.md",
|
|
25
26
|
"README.md"
|
|
26
27
|
],
|
|
27
28
|
"scripts": {
|
|
28
29
|
"build": "bun build src/index.ts src/cli.ts --outdir dist --target bun --format esm && tsc --emitDeclarationOnly && cp src/clikit.schema.json dist/clikit.schema.json",
|
|
29
|
-
"clean": "
|
|
30
|
+
"clean": "node -e \"const fs=require('fs'); fs.rmSync('dist',{recursive:true,force:true});\"",
|
|
30
31
|
"lint": "tsc --noEmit",
|
|
31
32
|
"prepublishOnly": "bun run clean && bun run build",
|
|
32
|
-
"postpublish": "
|
|
33
|
+
"postpublish": "node -e \"const fs=require('fs'); const os=require('os'); const path=require('path'); const root=path.join(os.homedir(),'.cache','opencode'); fs.rmSync(path.join(root,'node_modules','clikit-plugin'),{recursive:true,force:true}); fs.rmSync(path.join(root,'bun.lock'),{force:true}); console.log('✓ Cleared OpenCode plugin cache — next start will install fresh');\"",
|
|
33
34
|
"typecheck": "tsc --noEmit",
|
|
34
35
|
"verify": "bun run lint && bun run build",
|
|
35
36
|
"dev": "bun run build --watch"
|