context-mode 1.0.111 → 1.0.113

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.openclaw-plugin/index.ts +3 -2
  4. package/.openclaw-plugin/openclaw.plugin.json +1 -1
  5. package/.openclaw-plugin/package.json +1 -1
  6. package/README.md +152 -34
  7. package/bin/statusline.mjs +144 -127
  8. package/build/adapters/base.d.ts +8 -5
  9. package/build/adapters/base.js +8 -18
  10. package/build/adapters/claude-code/index.d.ts +24 -3
  11. package/build/adapters/claude-code/index.js +44 -11
  12. package/build/adapters/codex/hooks.d.ts +10 -5
  13. package/build/adapters/codex/hooks.js +10 -5
  14. package/build/adapters/codex/index.d.ts +17 -5
  15. package/build/adapters/codex/index.js +337 -37
  16. package/build/adapters/codex/paths.d.ts +1 -0
  17. package/build/adapters/codex/paths.js +12 -0
  18. package/build/adapters/cursor/index.d.ts +6 -0
  19. package/build/adapters/cursor/index.js +83 -2
  20. package/build/adapters/detect.d.ts +1 -1
  21. package/build/adapters/detect.js +29 -6
  22. package/build/adapters/omp/index.d.ts +65 -0
  23. package/build/adapters/omp/index.js +182 -0
  24. package/build/adapters/omp/plugin.d.ts +75 -0
  25. package/build/adapters/omp/plugin.js +220 -0
  26. package/build/adapters/openclaw/mcp-tools.d.ts +54 -0
  27. package/build/adapters/openclaw/mcp-tools.js +198 -0
  28. package/build/adapters/openclaw/plugin.d.ts +130 -0
  29. package/build/adapters/openclaw/plugin.js +629 -0
  30. package/build/adapters/openclaw/workspace-router.d.ts +29 -0
  31. package/build/adapters/openclaw/workspace-router.js +64 -0
  32. package/build/adapters/opencode/plugin.d.ts +145 -0
  33. package/build/adapters/opencode/plugin.js +457 -0
  34. package/build/adapters/pi/extension.d.ts +26 -0
  35. package/build/adapters/pi/extension.js +552 -0
  36. package/build/adapters/pi/index.d.ts +57 -0
  37. package/build/adapters/pi/index.js +173 -0
  38. package/build/adapters/pi/mcp-bridge.d.ts +113 -0
  39. package/build/adapters/pi/mcp-bridge.js +251 -0
  40. package/build/adapters/types.d.ts +11 -6
  41. package/build/cli.js +186 -170
  42. package/build/db-base.d.ts +15 -2
  43. package/build/db-base.js +50 -5
  44. package/build/executor.d.ts +2 -0
  45. package/build/executor.js +15 -2
  46. package/build/runPool.d.ts +36 -0
  47. package/build/runPool.js +51 -0
  48. package/build/runtime.js +64 -5
  49. package/build/search/auto-memory.js +6 -4
  50. package/build/security.js +30 -10
  51. package/build/server.d.ts +23 -1
  52. package/build/server.js +662 -182
  53. package/build/session/analytics.d.ts +404 -1
  54. package/build/session/analytics.js +1347 -42
  55. package/build/session/db.d.ts +114 -5
  56. package/build/session/db.js +275 -27
  57. package/build/session/event-emit.d.ts +48 -0
  58. package/build/session/event-emit.js +101 -0
  59. package/build/session/extract.d.ts +1 -0
  60. package/build/session/extract.js +79 -12
  61. package/build/session/purge.d.ts +111 -0
  62. package/build/session/purge.js +138 -0
  63. package/build/store.d.ts +7 -0
  64. package/build/store.js +69 -6
  65. package/build/util/claude-config.d.ts +26 -0
  66. package/build/util/claude-config.js +91 -0
  67. package/build/util/hook-config.d.ts +4 -0
  68. package/build/util/hook-config.js +39 -0
  69. package/build/util/project-dir.d.ts +49 -0
  70. package/build/util/project-dir.js +67 -0
  71. package/cli.bundle.mjs +411 -208
  72. package/configs/antigravity/GEMINI.md +0 -3
  73. package/configs/claude-code/CLAUDE.md +1 -4
  74. package/configs/codex/AGENTS.md +1 -4
  75. package/configs/codex/config.toml +3 -0
  76. package/configs/codex/hooks.json +8 -0
  77. package/configs/cursor/context-mode.mdc +0 -3
  78. package/configs/gemini-cli/GEMINI.md +0 -3
  79. package/configs/jetbrains-copilot/copilot-instructions.md +0 -3
  80. package/configs/kilo/AGENTS.md +0 -3
  81. package/configs/kiro/KIRO.md +0 -3
  82. package/configs/omp/SYSTEM.md +85 -0
  83. package/configs/omp/mcp.json +7 -0
  84. package/configs/openclaw/AGENTS.md +0 -3
  85. package/configs/opencode/AGENTS.md +0 -3
  86. package/configs/pi/AGENTS.md +0 -3
  87. package/configs/qwen-code/QWEN.md +1 -4
  88. package/configs/vscode-copilot/copilot-instructions.md +0 -3
  89. package/configs/zed/AGENTS.md +0 -3
  90. package/hooks/codex/posttooluse.mjs +9 -2
  91. package/hooks/codex/precompact.mjs +69 -0
  92. package/hooks/codex/sessionstart.mjs +13 -9
  93. package/hooks/codex/stop.mjs +1 -2
  94. package/hooks/codex/userpromptsubmit.mjs +1 -2
  95. package/hooks/core/routing.mjs +237 -18
  96. package/hooks/cursor/afteragentresponse.mjs +1 -1
  97. package/hooks/cursor/hooks.json +31 -0
  98. package/hooks/cursor/posttooluse.mjs +1 -1
  99. package/hooks/cursor/sessionstart.mjs +5 -5
  100. package/hooks/cursor/stop.mjs +1 -1
  101. package/hooks/ensure-deps.mjs +12 -13
  102. package/hooks/gemini-cli/aftertool.mjs +1 -1
  103. package/hooks/gemini-cli/beforeagent.mjs +1 -1
  104. package/hooks/gemini-cli/precompress.mjs +3 -2
  105. package/hooks/gemini-cli/sessionstart.mjs +9 -9
  106. package/hooks/jetbrains-copilot/posttooluse.mjs +1 -1
  107. package/hooks/jetbrains-copilot/precompact.mjs +3 -2
  108. package/hooks/jetbrains-copilot/sessionstart.mjs +9 -9
  109. package/hooks/kiro/agentspawn.mjs +5 -5
  110. package/hooks/kiro/posttooluse.mjs +2 -2
  111. package/hooks/kiro/userpromptsubmit.mjs +1 -1
  112. package/hooks/posttooluse.mjs +45 -0
  113. package/hooks/precompact.mjs +17 -0
  114. package/hooks/pretooluse.mjs +23 -0
  115. package/hooks/routing-block.mjs +0 -12
  116. package/hooks/run-hook.mjs +16 -3
  117. package/hooks/session-db.bundle.mjs +27 -18
  118. package/hooks/session-extract.bundle.mjs +2 -2
  119. package/hooks/session-helpers.mjs +101 -64
  120. package/hooks/sessionstart.mjs +51 -2
  121. package/hooks/vscode-copilot/posttooluse.mjs +1 -1
  122. package/hooks/vscode-copilot/precompact.mjs +3 -2
  123. package/hooks/vscode-copilot/sessionstart.mjs +9 -9
  124. package/openclaw.plugin.json +1 -1
  125. package/package.json +14 -8
  126. package/server.bundle.mjs +349 -147
  127. package/start.mjs +16 -4
  128. package/skills/UPSTREAM-CREDITS.md +0 -51
  129. package/skills/context-mode-ops/SKILL.md +0 -299
  130. package/skills/context-mode-ops/agent-teams.md +0 -198
  131. package/skills/context-mode-ops/communication.md +0 -224
  132. package/skills/context-mode-ops/marketing.md +0 -124
  133. package/skills/context-mode-ops/release.md +0 -214
  134. package/skills/context-mode-ops/review-pr.md +0 -269
  135. package/skills/context-mode-ops/tdd.md +0 -329
  136. package/skills/context-mode-ops/triage-issue.md +0 -266
  137. package/skills/context-mode-ops/validation.md +0 -307
  138. package/skills/diagnose/SKILL.md +0 -122
  139. package/skills/diagnose/scripts/hitl-loop.template.sh +0 -41
  140. package/skills/grill-me/SKILL.md +0 -15
  141. package/skills/grill-with-docs/ADR-FORMAT.md +0 -47
  142. package/skills/grill-with-docs/CONTEXT-FORMAT.md +0 -77
  143. package/skills/grill-with-docs/SKILL.md +0 -93
  144. package/skills/improve-codebase-architecture/DEEPENING.md +0 -37
  145. package/skills/improve-codebase-architecture/INTERFACE-DESIGN.md +0 -44
  146. package/skills/improve-codebase-architecture/LANGUAGE.md +0 -53
  147. package/skills/improve-codebase-architecture/SKILL.md +0 -76
  148. package/skills/tdd/SKILL.md +0 -114
  149. package/skills/tdd/deep-modules.md +0 -33
  150. package/skills/tdd/interface-design.md +0 -31
  151. package/skills/tdd/mocking.md +0 -59
  152. package/skills/tdd/refactoring.md +0 -10
  153. package/skills/tdd/tests.md +0 -61
@@ -1,224 +0,0 @@
1
- # Communication Templates
2
-
3
- Tone: warm, professional, technical, grateful. Always put testing responsibility on the contributor.
4
-
5
- ## Issue Comments
6
-
7
- ### After Fix (Standard)
8
-
9
- ```markdown
10
- Hey @{author}! 👋
11
-
12
- We investigated this and pushed a fix in #{PR_NUMBER}.
13
-
14
- **Root cause:** {1-2 sentence technical explanation}
15
-
16
- **Fix:** {1-2 sentence description of what changed}
17
-
18
- **Affected area:** `{adapter/module path}`
19
-
20
- This lands on the `next` branch and will ship in the next release. Once it's out, could you please test it in your setup and confirm it resolves the issue? 🙏
21
-
22
- ```
23
- npm update -g context-mode
24
- # or for plugin users:
25
- /context-mode:ctx-upgrade
26
- ```
27
-
28
- Thanks for reporting this — it helped improve context-mode for everyone!
29
- ```
30
-
31
- ### Needs More Information
32
-
33
- ```markdown
34
- Hey @{author}, thanks for opening this!
35
-
36
- To investigate further, could you share:
37
- - Your platform (Claude Code / Gemini CLI / OpenCode / etc.)
38
- - context-mode version (`ctx doctor` or `npm list -g context-mode`)
39
- - The exact command or action that triggers this
40
- - Any error messages or unexpected output
41
-
42
- This will help us reproduce and fix the issue faster. 🙏
43
- ```
44
-
45
- ### Working As Intended
46
-
47
- ```markdown
48
- Hey @{author}, thanks for raising this!
49
-
50
- This is actually working as intended — here's why:
51
-
52
- {Technical explanation of the design decision}
53
-
54
- {If there's a workaround:}
55
- That said, you can achieve what you're looking for by:
56
- {workaround steps}
57
-
58
- {If it's a reasonable feature request:}
59
- I can see why this would be useful though. I'll re-label this as a feature request so we can discuss it with the community.
60
-
61
- Let me know if you have any questions!
62
- ```
63
-
64
- ### Duplicate Issue
65
-
66
- ```markdown
67
- Hey @{author}, thanks for reporting!
68
-
69
- This is a duplicate of #{ORIGINAL_NUMBER} which tracks the same issue. I'm closing this one to keep discussion in one place — please follow #{ORIGINAL_NUMBER} for updates.
70
-
71
- If your case is different from what's described there, please reopen and let us know what's different!
72
- ```
73
-
74
- ### LLM Hallucination (Feature/ENV Doesn't Exist)
75
-
76
- ```markdown
77
- Hey @{author}, thanks for the detailed report!
78
-
79
- After investigation, it looks like `{CLAIMED_FEATURE/ENV}` doesn't actually exist in {PLATFORM}. This is a common issue where AI assistants sometimes reference features or environment variables that don't exist in the actual platform.
80
-
81
- Here's what we found:
82
- - {What we checked}
83
- - {Official docs reference showing it's not a real feature}
84
-
85
- **What actually works:**
86
- {The correct approach or existing alternative}
87
-
88
- No worries at all — this kind of thing is surprisingly common! Let us know if you need help with the correct approach.
89
- ```
90
-
91
- ## PR Comments
92
-
93
- ### After Merge (Clean)
94
-
95
- ```markdown
96
- Thanks for this contribution, @{author}! 🎉
97
-
98
- Merged into `next` — this will ship in the next release.
99
-
100
- Could you please test it in your setup once the release is out? You know this area best, so your verification would be really valuable. 🙏
101
-
102
- Thanks for making context-mode better!
103
- ```
104
-
105
- ### After Merge (With Follow-Up Fixes)
106
-
107
- ```markdown
108
- Thanks @{author}! Merged into `next`.
109
-
110
- I made a few small adjustments on top in {commit_sha}:
111
- - **{change 1}:** {reason — e.g., "aligned with existing pattern in other adapters"}
112
- - **{change 2}:** {reason — e.g., "added missing test for edge case"}
113
-
114
- Could you review those changes and test the complete flow in your environment? Since you're closest to this use case, your verification is important. 🙏
115
-
116
- This will ship in the next release!
117
- ```
118
-
119
- ### After Merge (Significant Fixes Needed)
120
-
121
- ```markdown
122
- Hey @{author}, thanks for putting this together! I've merged it into `next`.
123
-
124
- I did need to make some adjustments though — the core idea is solid but a few things needed fixing:
125
-
126
- **Changes I made:**
127
- - {change 1}: {detailed reason}
128
- - {change 2}: {detailed reason}
129
- - {change 3}: {detailed reason}
130
-
131
- These are in {commit_sha_1} and {commit_sha_2}.
132
-
133
- **Important:** Could you please thoroughly test this in your environment? The responsibility for verifying this works end-to-end is yours since you're closest to the use case and these changes touch {what they touch}. 🙏
134
-
135
- Let me know if anything doesn't work as expected!
136
- ```
137
-
138
- ### Closing Without Merge (Rare)
139
-
140
- ```markdown
141
- Hey @{author}, thanks for taking the time to put this together — I appreciate the effort!
142
-
143
- Unfortunately we can't merge this as-is:
144
- - **{reason 1}:** {technical explanation}
145
- - **{reason 2}:** {technical explanation}
146
-
147
- {IF the work is salvageable:}
148
- If you'd like to take another pass, here's what would make this mergeable:
149
- 1. {specific guidance}
150
- 2. {specific guidance}
151
-
152
- Happy to help if you have questions!
153
-
154
- {IF the direction is wrong:}
155
- The direction we're going with {area} is {explanation}. This is to ensure {rationale}.
156
-
157
- Thanks again for the contribution — hope to see more PRs from you! 🙌
158
- ```
159
-
160
- ### PR Has Hallucinated Features
161
-
162
- ```markdown
163
- Hey @{author}, thanks for this PR!
164
-
165
- While reviewing, I noticed that `{CLAIMED_FEATURE}` doesn't appear to exist in {PLATFORM}'s actual implementation:
166
-
167
- - Searched {PLATFORM}'s source/docs — not found
168
- - The ENV var `{VAR}` isn't documented or used by {PLATFORM}
169
-
170
- This might be an AI assistant suggestion that doesn't match the real platform API. No worries — it's surprisingly common!
171
-
172
- {IF core logic is still valid:}
173
- The rest of the PR looks solid though. I'll merge it and remove the non-existent parts in a follow-up.
174
-
175
- {IF the whole PR is based on the hallucination:}
176
- Since the core change depends on this feature, we'd need to find an alternative approach. {Suggestion for correct approach}
177
-
178
- Let me know how you'd like to proceed!
179
- ```
180
-
181
- ## Release Comments
182
-
183
- ### On Issues Fixed in Release
184
-
185
- ```markdown
186
- 🎉 Released in **v{VERSION}**!
187
-
188
- Please update and test:
189
- ```
190
- npm update -g context-mode
191
- # or for plugin users:
192
- /context-mode:ctx-upgrade
193
- ```
194
-
195
- Let us know if this resolves your issue!
196
- ```
197
-
198
- ### Release Announcement (GitHub Release Body)
199
-
200
- The `gh release create --generate-notes` handles this automatically. Only add a manual note if there are:
201
- - Breaking changes
202
- - Migration steps required
203
- - Notable new features
204
-
205
- ## Tone Guidelines
206
-
207
- ### DO
208
-
209
- - Start with gratitude: "Thanks for..."
210
- - Use names: "@{author}"
211
- - Be specific and technical
212
- - Give clear next steps
213
- - Use emoji sparingly (👋 🎉 🙏 at most)
214
- - Frame responsibility clearly but kindly
215
-
216
- ### DON'T
217
-
218
- - Be passive-aggressive
219
- - Use corporate speak
220
- - Leave ambiguity about next steps
221
- - Promise timelines
222
- - Blame the contributor for mistakes
223
- - Use excessive emoji
224
- - Write walls of text — keep it concise
@@ -1,124 +0,0 @@
1
- # Marketing workflow
2
-
3
- ## Trigger
4
-
5
- User says: "linkedin post", "marketing", "announce release", "write post", "share update"
6
-
7
- ## Voice: Solo technical founder
8
-
9
- You are Mert. You built context-mode alone. You write like an engineer who happens to run a product, not like a marketing team. Your audience is technical VCs, senior engineers, and open source maintainers.
10
-
11
- <writing_rules>
12
- MANDATORY. Every word you write must pass these rules.
13
-
14
- 1. NO em dashes. Not one. Use commas, periods, or rewrite the sentence.
15
- 2. NO promotional language: "groundbreaking", "revolutionary", "game-changing", "seamless", "cutting-edge"
16
- 3. NO significance inflation: "pivotal", "testament", "vital role", "evolving landscape"
17
- 4. NO negative parallelisms: "not just X, it's Y" or "not X but Y"
18
- 5. NO rule of three: stop forcing ideas into groups of three
19
- 6. NO vague attributions: "experts say", "industry observers"
20
- 7. NO filler: "in order to", "it is important to note", "at its core"
21
- 8. NO generic conclusions: "the future looks bright", "exciting times ahead"
22
- 9. NO sycophantic tone: "great question!", "I hope this helps!"
23
- 10. NO copula avoidance: use "is/are/has" instead of "serves as/stands as/represents"
24
- 11. NO excessive hedging: "could potentially possibly"
25
- 12. NO AI vocabulary: "delve", "tapestry", "interplay", "foster", "landscape" (abstract)
26
- 13. NO boldface headers in lists
27
- 14. NO emojis
28
-
29
- DO:
30
- - Start with a personal confession or specific frustration
31
- - Use "I" freely. You are one person, not a company.
32
- - Vary sentence length aggressively. Short. Then longer ones that breathe.
33
- - Be specific: exact numbers, real platform names, actual pain points
34
- - Acknowledge uncertainty and mixed feelings when they exist
35
- - Let some mess in. Rougher transitions are more human.
36
- - Close with a genuine belief, not a sales pitch
37
- </writing_rules>
38
-
39
- ## Data verification: MANDATORY
40
-
41
- <data_enforcement>
42
- Every number in the post MUST come from a real source. Do NOT invent metrics.
43
- Before writing, read these files and use ONLY verified numbers:
44
- </data_enforcement>
45
-
46
- | Data point | Source |
47
- |-----------|--------|
48
- | Total users | `stats.json` field `message` |
49
- | npm installs | `stats.json` field `npm` |
50
- | Marketplace installs | `stats.json` field `marketplace` |
51
- | Current version | `package.json` field `version` |
52
- | Platform count | `src/adapters/detect.ts` (count platforms in validPlatforms array) |
53
- | Adapter count | `tests/adapters/` (count test files) |
54
- | GitHub stars | `gh api repos/mksglu/context-mode --jq '.stargazers_count'` |
55
- | GitHub forks | `gh api repos/mksglu/context-mode --jq '.forks_count'` |
56
- | Open issues | `gh issue list --state open --json number --jq 'length'` |
57
- | Recent release | `gh release list --limit 1` |
58
-
59
- If you cannot verify a number, do not use it.
60
-
61
- ## Workflow
62
-
63
- ### 1. Gather real data (via agent)
64
-
65
- Spawn a Data Engineer agent to collect all numbers from the sources above. Wait for verified data before writing anything.
66
-
67
- ### 2. Identify what changed
68
-
69
- Read the latest commits, release notes, or user request to understand what is being announced.
70
-
71
- ### 3. Write draft
72
-
73
- Follow the writing rules above. Structure:
74
-
75
- ```
76
- Hook (personal, specific pain or confession)
77
- Context (what is context-mode, real numbers)
78
- Problem (specific frustration, not abstract)
79
- Solution (what you built, how it works technically)
80
- Technical details (casual, woven in, not a spec sheet)
81
- Belief (where this is going, honest, not hype)
82
- Links (repo + install command)
83
- ```
84
-
85
- ### 4. Anti-AI audit
86
-
87
- After writing, ask yourself:
88
- - Would a real founder post this or would they cringe?
89
- - Is every number verified?
90
- - Are there any em dashes? (search for the character)
91
- - Any "pivotal", "testament", "landscape", "foster", "delve"?
92
- - Any lists of exactly three items forced together?
93
- - Does it sound like it was assembled or like someone actually wrote it?
94
-
95
- Fix every issue found.
96
-
97
- ### 5. Output
98
-
99
- Write the final post to a file: `linkedin-post-v{VERSION}.md`
100
-
101
- Include three sections in the file:
102
- 1. Final post text (ready to paste into LinkedIn)
103
- 2. Data sources used (which files/commands provided which numbers)
104
- 3. AI pattern audit results (what was caught and fixed)
105
-
106
- ## Examples of good vs bad
107
-
108
- Bad (AI-generated):
109
- "We're thrilled to announce context-mode v1.0.57, a groundbreaking update that represents a pivotal moment in the evolution of AI-powered development tools. This release showcases our commitment to innovation, performance, and developer experience."
110
-
111
- Good (founder voice):
112
- "I have a confession. I built a tool used by 57,000+ developers and I was drowning in GitHub issues."
113
-
114
- Bad:
115
- "The technical architecture features a robust FTS5 search engine, a polyglot execution sandbox, and a dynamic agent orchestration layer, ensuring seamless integration across platforms."
116
-
117
- Good:
118
- "Some numbers on the tech side: FTS5 search with BM25 ranking, sandbox execution in 11 languages, session state survives context window compactions through SQLite event tracking."
119
-
120
- Bad:
121
- "This innovative solution serves as a testament to the transformative potential of AI-native infrastructure."
122
-
123
- Good:
124
- "Solo maintainers will run engineering orgs made of agents. Not because it sounds cool on a slide, but because the alternative is burnout."
@@ -1,214 +0,0 @@
1
- # Release Workflow
2
-
3
- ## Trigger
4
-
5
- User says: "release", "version bump", "npm publish", "ship it"
6
-
7
- ## Pre-Flight Checks
8
-
9
- Before ANY release action, verify:
10
-
11
- ```bash
12
- # Must be on main branch
13
- git branch --show-current # expect: main
14
-
15
- # Must be clean
16
- git status --porcelain # expect: empty
17
-
18
- # Must be up to date
19
- git pull origin main
20
- ```
21
-
22
- ## Step-by-Step
23
-
24
- ### 1. Validate Codebase (Parallel Agents)
25
-
26
- Spawn these agents simultaneously:
27
-
28
- | Agent | Task |
29
- |-------|------|
30
- | **QA Engineer** | Run `npm test` + `npm run typecheck` — report full pass/fail |
31
- | **Security Engineer** | Check for any open security issues, audit recent changes |
32
- | **Release Engineer** | Check current version, changelog, unreleased commits |
33
- | **DX Engineer** | Verify README is current, install instructions work |
34
-
35
- All must report PASS before proceeding.
36
-
37
- ### 1b. Grill-Me Review — MANDATORY BLOCKING GATE
38
-
39
- **Before ANY version bump, the EM MUST run a grill-me interview on all changes in this release.**
40
-
41
- This is not optional. This is not skippable. Every release gets grilled.
42
-
43
- Interview the user relentlessly about every aspect of the changes until reaching shared understanding. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer. Ask questions one at a time. If a question can be answered by exploring the codebase, explore the codebase instead of asking.
44
-
45
- **The release is BLOCKED until:**
46
- - [ ] All branches of the design tree are resolved
47
- - [ ] Zero unresolved questions remain
48
- - [ ] User explicitly approves the grill results
49
-
50
- Only after grill-me approval: proceed to version bump.
51
-
52
- ### 2. Version Bump — MANDATORY
53
-
54
- <version_bump_enforcement>
55
- You MUST run `npm version patch`. This is NOT optional. Do NOT skip this step.
56
- Do NOT manually edit package.json version. Do NOT create git tags manually.
57
- `npm version patch` does EVERYTHING — bump, sync manifests, stage, commit, tag.
58
- </version_bump_enforcement>
59
-
60
- ```bash
61
- npm version patch
62
- ```
63
-
64
- This single command does ALL of the following automatically:
65
- 1. Bumps `package.json` version (e.g., 1.0.56 → 1.0.57)
66
- 2. Triggers `version` lifecycle hook → runs `scripts/version-sync.mjs`
67
- 3. `version-sync.mjs` syncs version to ALL 6 manifest files:
68
- - `.claude-plugin/plugin.json`
69
- - `.claude-plugin/marketplace.json`
70
- - `.openclaw-plugin/openclaw.plugin.json`
71
- - `.openclaw-plugin/package.json`
72
- - `openclaw.plugin.json`
73
- - `.pi/extensions/context-mode/package.json`
74
- 4. Stages the manifest files via `git add`
75
- 5. Creates a git commit and `v{VERSION}` tag
76
-
77
- **Do NOT create your own commit or tag. `npm version patch` handles it.**
78
-
79
- ### 3. Validate (NO Build Needed)
80
-
81
- **Do NOT run `npm run build` or `npm run bundle`.** CI generates bundle files automatically on GitHub. You only validate:
82
-
83
- ```bash
84
- # Tests
85
- npm test
86
-
87
- # TypeScript
88
- npm run typecheck
89
- ```
90
-
91
- ### 4. Git Tag & GitHub Release
92
-
93
- ```bash
94
- # The npm version command already created a git tag
95
- # Verify it exists:
96
- git tag --list 'v*' | tail -5
97
-
98
- # Push the commit and tag
99
- git push origin main --tags
100
-
101
- # Create GitHub release with auto-generated changelog
102
- gh release create v{VERSION} \
103
- --title "v{VERSION}" \
104
- --generate-notes \
105
- --latest
106
- ```
107
-
108
- ### 5. npm Publish (Local)
109
-
110
- **⚠️ REQUIRES USER APPROVAL — ask before running.**
111
-
112
- ```bash
113
- # Dry run first
114
- npm publish --dry-run
115
-
116
- # If dry run looks good, publish
117
- npm publish
118
- ```
119
-
120
- Verify publication:
121
- ```bash
122
- npm view context-mode version # should show new version
123
- ```
124
-
125
- ### 6. Sync Branches
126
-
127
- Sync `next` with `main` to ensure next has all release changes:
128
-
129
- ```bash
130
- # Fetch latest
131
- git fetch origin
132
-
133
- # Merge main into next
134
- git checkout next
135
- git pull origin next
136
- git merge main --no-edit
137
-
138
- # Push
139
- git push origin next
140
-
141
- # Return to main
142
- git checkout main
143
- ```
144
-
145
- **If merge conflict:** Resolve in favor of `main` (release branch is authoritative).
146
-
147
- ### 7. Clean Remote Branches
148
-
149
- **⚠️ REQUIRES USER APPROVAL for EACH branch.**
150
-
151
- List stale remote branches (everything except `main` and `next`):
152
-
153
- ```bash
154
- # List remote branches excluding main and next
155
- git branch -r | grep -v 'origin/main' | grep -v 'origin/next' | grep -v 'origin/HEAD'
156
- ```
157
-
158
- For each branch, ask the user:
159
- ```
160
- Remote branch: origin/{branch-name}
161
- Last commit: {date} — {message}
162
- Related PR: #{number} ({state})
163
-
164
- Delete this branch? [y/n]
165
- ```
166
-
167
- Only delete after explicit approval:
168
- ```bash
169
- git push origin --delete {branch-name}
170
- ```
171
-
172
- ## Release Checklist (EM Verification)
173
-
174
- Before declaring release complete:
175
-
176
- - [ ] `npm test` — all pass
177
- - [ ] `npm run typecheck` — no errors
178
- - [ ] `npm version patch` — version bumped in all manifests
179
- - [ ] `git push origin main --tags` — pushed with tag (CI builds bundles automatically)
180
- - [ ] `gh release create` — GitHub release published
181
- - [ ] `npm publish` — package on npm registry
182
- - [ ] `next` branch synced with `main`
183
- - [ ] Stale remote branches cleaned (user approved)
184
- - [ ] Verify: `npm view context-mode version` shows new version
185
-
186
- ## Rollback Plan
187
-
188
- If something goes wrong after publish:
189
-
190
- ```bash
191
- # Unpublish within 72 hours (npm policy)
192
- npm unpublish context-mode@{BAD_VERSION}
193
-
194
- # Or deprecate
195
- npm deprecate context-mode@{BAD_VERSION} "Known issue: {description}"
196
-
197
- # Revert git
198
- git revert HEAD
199
- git push origin main
200
- ```
201
-
202
- ## Post-Release
203
-
204
- After successful release:
205
-
206
- 1. Comment on all issues fixed in this release:
207
- ```
208
- Released in v{VERSION}! Please update and test:
209
- npm update -g context-mode
210
- ```
211
-
212
- 2. Update Discord if there are noteworthy changes
213
-
214
- 3. Check npm download stats in 24h for any anomalies