@uasyraf/helm 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.
Files changed (263) hide show
  1. package/.claude-plugin/plugin.json +9 -0
  2. package/.mcp.json +8 -0
  3. package/LICENSE +21 -0
  4. package/README.md +114 -0
  5. package/dashboard/build/client/_app/immutable/assets/0.DPthOi2j.css +1 -0
  6. package/dashboard/build/client/_app/immutable/assets/0.DPthOi2j.css.br +0 -0
  7. package/dashboard/build/client/_app/immutable/assets/0.DPthOi2j.css.gz +0 -0
  8. package/dashboard/build/client/_app/immutable/chunks/B3NJzl7g.js +1 -0
  9. package/dashboard/build/client/_app/immutable/chunks/B3NJzl7g.js.br +0 -0
  10. package/dashboard/build/client/_app/immutable/chunks/B3NJzl7g.js.gz +0 -0
  11. package/dashboard/build/client/_app/immutable/chunks/Bvgn0Gys.js +1 -0
  12. package/dashboard/build/client/_app/immutable/chunks/Bvgn0Gys.js.br +0 -0
  13. package/dashboard/build/client/_app/immutable/chunks/Bvgn0Gys.js.gz +0 -0
  14. package/dashboard/build/client/_app/immutable/chunks/C72aErMY.js +3 -0
  15. package/dashboard/build/client/_app/immutable/chunks/C72aErMY.js.br +0 -0
  16. package/dashboard/build/client/_app/immutable/chunks/C72aErMY.js.gz +0 -0
  17. package/dashboard/build/client/_app/immutable/chunks/CjpPs8iz.js +1 -0
  18. package/dashboard/build/client/_app/immutable/chunks/CjpPs8iz.js.br +0 -0
  19. package/dashboard/build/client/_app/immutable/chunks/CjpPs8iz.js.gz +0 -0
  20. package/dashboard/build/client/_app/immutable/chunks/DNLp8810.js +1 -0
  21. package/dashboard/build/client/_app/immutable/chunks/DNLp8810.js.br +0 -0
  22. package/dashboard/build/client/_app/immutable/chunks/DNLp8810.js.gz +0 -0
  23. package/dashboard/build/client/_app/immutable/chunks/DYkFpqG7.js +1 -0
  24. package/dashboard/build/client/_app/immutable/chunks/DYkFpqG7.js.br +0 -0
  25. package/dashboard/build/client/_app/immutable/chunks/DYkFpqG7.js.gz +0 -0
  26. package/dashboard/build/client/_app/immutable/chunks/DsiL0ppy.js +2 -0
  27. package/dashboard/build/client/_app/immutable/chunks/DsiL0ppy.js.br +0 -0
  28. package/dashboard/build/client/_app/immutable/chunks/DsiL0ppy.js.gz +0 -0
  29. package/dashboard/build/client/_app/immutable/chunks/bJX5vhEj.js +1 -0
  30. package/dashboard/build/client/_app/immutable/chunks/bJX5vhEj.js.br +0 -0
  31. package/dashboard/build/client/_app/immutable/chunks/bJX5vhEj.js.gz +0 -0
  32. package/dashboard/build/client/_app/immutable/chunks/gQDp4_Ul.js +1 -0
  33. package/dashboard/build/client/_app/immutable/chunks/gQDp4_Ul.js.br +0 -0
  34. package/dashboard/build/client/_app/immutable/chunks/gQDp4_Ul.js.gz +0 -0
  35. package/dashboard/build/client/_app/immutable/entry/app.D4j9hUjJ.js +2 -0
  36. package/dashboard/build/client/_app/immutable/entry/app.D4j9hUjJ.js.br +0 -0
  37. package/dashboard/build/client/_app/immutable/entry/app.D4j9hUjJ.js.gz +0 -0
  38. package/dashboard/build/client/_app/immutable/entry/start.D59wIHuS.js +1 -0
  39. package/dashboard/build/client/_app/immutable/entry/start.D59wIHuS.js.br +2 -0
  40. package/dashboard/build/client/_app/immutable/entry/start.D59wIHuS.js.gz +0 -0
  41. package/dashboard/build/client/_app/immutable/nodes/0.HocD0HAQ.js +1 -0
  42. package/dashboard/build/client/_app/immutable/nodes/0.HocD0HAQ.js.br +0 -0
  43. package/dashboard/build/client/_app/immutable/nodes/0.HocD0HAQ.js.gz +0 -0
  44. package/dashboard/build/client/_app/immutable/nodes/1.xo_a-jPh.js +1 -0
  45. package/dashboard/build/client/_app/immutable/nodes/1.xo_a-jPh.js.br +0 -0
  46. package/dashboard/build/client/_app/immutable/nodes/1.xo_a-jPh.js.gz +0 -0
  47. package/dashboard/build/client/_app/immutable/nodes/2.BwywD4n3.js +1 -0
  48. package/dashboard/build/client/_app/immutable/nodes/2.BwywD4n3.js.br +0 -0
  49. package/dashboard/build/client/_app/immutable/nodes/2.BwywD4n3.js.gz +0 -0
  50. package/dashboard/build/client/_app/immutable/nodes/3.BGY0bNfC.js +1 -0
  51. package/dashboard/build/client/_app/immutable/nodes/3.BGY0bNfC.js.br +0 -0
  52. package/dashboard/build/client/_app/immutable/nodes/3.BGY0bNfC.js.gz +0 -0
  53. package/dashboard/build/client/_app/immutable/nodes/4.C7uIivCS.js +1 -0
  54. package/dashboard/build/client/_app/immutable/nodes/4.C7uIivCS.js.br +0 -0
  55. package/dashboard/build/client/_app/immutable/nodes/4.C7uIivCS.js.gz +0 -0
  56. package/dashboard/build/client/_app/immutable/nodes/5.YszfczJW.js +1 -0
  57. package/dashboard/build/client/_app/immutable/nodes/5.YszfczJW.js.br +0 -0
  58. package/dashboard/build/client/_app/immutable/nodes/5.YszfczJW.js.gz +0 -0
  59. package/dashboard/build/client/_app/immutable/nodes/6.7fhKcbBK.js +1 -0
  60. package/dashboard/build/client/_app/immutable/nodes/6.7fhKcbBK.js.br +0 -0
  61. package/dashboard/build/client/_app/immutable/nodes/6.7fhKcbBK.js.gz +0 -0
  62. package/dashboard/build/client/_app/version.json +1 -0
  63. package/dashboard/build/client/_app/version.json.br +0 -0
  64. package/dashboard/build/client/_app/version.json.gz +0 -0
  65. package/dashboard/build/env.js +94 -0
  66. package/dashboard/build/handler.js +1494 -0
  67. package/dashboard/build/index.js +345 -0
  68. package/dashboard/build/server/chunks/0-DUUsxI66.js +40 -0
  69. package/dashboard/build/server/chunks/0-DUUsxI66.js.map +1 -0
  70. package/dashboard/build/server/chunks/1-BDkdOGL6.js +9 -0
  71. package/dashboard/build/server/chunks/1-BDkdOGL6.js.map +1 -0
  72. package/dashboard/build/server/chunks/2-BLt1vNET.js +51 -0
  73. package/dashboard/build/server/chunks/2-BLt1vNET.js.map +1 -0
  74. package/dashboard/build/server/chunks/3-B-4sxMk4.js +41 -0
  75. package/dashboard/build/server/chunks/3-B-4sxMk4.js.map +1 -0
  76. package/dashboard/build/server/chunks/4-CRZIwHJO.js +39 -0
  77. package/dashboard/build/server/chunks/4-CRZIwHJO.js.map +1 -0
  78. package/dashboard/build/server/chunks/5-CwiVOtz6.js +30 -0
  79. package/dashboard/build/server/chunks/5-CwiVOtz6.js.map +1 -0
  80. package/dashboard/build/server/chunks/6-mID2_gX2.js +53 -0
  81. package/dashboard/build/server/chunks/6-mID2_gX2.js.map +1 -0
  82. package/dashboard/build/server/chunks/_layout.svelte-DeOKequ-.js +31 -0
  83. package/dashboard/build/server/chunks/_layout.svelte-DeOKequ-.js.map +1 -0
  84. package/dashboard/build/server/chunks/_page.svelte-BGS-bwra.js +65 -0
  85. package/dashboard/build/server/chunks/_page.svelte-BGS-bwra.js.map +1 -0
  86. package/dashboard/build/server/chunks/_page.svelte-BiRjdIbl.js +35 -0
  87. package/dashboard/build/server/chunks/_page.svelte-BiRjdIbl.js.map +1 -0
  88. package/dashboard/build/server/chunks/_page.svelte-C_NO0kPy.js +49 -0
  89. package/dashboard/build/server/chunks/_page.svelte-C_NO0kPy.js.map +1 -0
  90. package/dashboard/build/server/chunks/_page.svelte-DvSQBjcA.js +80 -0
  91. package/dashboard/build/server/chunks/_page.svelte-DvSQBjcA.js.map +1 -0
  92. package/dashboard/build/server/chunks/_page.svelte-ZUq8J-ew.js +33 -0
  93. package/dashboard/build/server/chunks/_page.svelte-ZUq8J-ew.js.map +1 -0
  94. package/dashboard/build/server/chunks/error.svelte-DJ3O9Tia.js +12 -0
  95. package/dashboard/build/server/chunks/error.svelte-DJ3O9Tia.js.map +1 -0
  96. package/dashboard/build/server/chunks/exports-BnaAAAnL.js +3262 -0
  97. package/dashboard/build/server/chunks/exports-BnaAAAnL.js.map +1 -0
  98. package/dashboard/build/server/chunks/index-DwR_KaNY.js +44 -0
  99. package/dashboard/build/server/chunks/index-DwR_KaNY.js.map +1 -0
  100. package/dashboard/build/server/chunks/index-lhTMmBNn.js +207 -0
  101. package/dashboard/build/server/chunks/index-lhTMmBNn.js.map +1 -0
  102. package/dashboard/build/server/chunks/queries-DGWi-KlP.js +198 -0
  103. package/dashboard/build/server/chunks/queries-DGWi-KlP.js.map +1 -0
  104. package/dashboard/build/server/chunks/renderer-DdMvhZZr.js +1930 -0
  105. package/dashboard/build/server/chunks/renderer-DdMvhZZr.js.map +1 -0
  106. package/dashboard/build/server/index.js +5911 -0
  107. package/dashboard/build/server/index.js.map +1 -0
  108. package/dashboard/build/server/manifest.js +78 -0
  109. package/dashboard/build/server/manifest.js.map +1 -0
  110. package/dashboard/build/shims.js +32 -0
  111. package/dashboard/package.json +29 -0
  112. package/dashboard/svelte.config.js +15 -0
  113. package/dist/bin/helm.d.ts +2 -0
  114. package/dist/bin/helm.js +167 -0
  115. package/dist/bin/helm.js.map +1 -0
  116. package/dist/server/src/banner.d.ts +1 -0
  117. package/dist/server/src/banner.js +34 -0
  118. package/dist/server/src/banner.js.map +1 -0
  119. package/dist/server/src/config/load.d.ts +14 -0
  120. package/dist/server/src/config/load.js +43 -0
  121. package/dist/server/src/config/load.js.map +1 -0
  122. package/dist/server/src/dashboard.d.ts +5 -0
  123. package/dist/server/src/dashboard.js +79 -0
  124. package/dist/server/src/dashboard.js.map +1 -0
  125. package/dist/server/src/db/bootstrap.d.ts +2 -0
  126. package/dist/server/src/db/bootstrap.js +106 -0
  127. package/dist/server/src/db/bootstrap.js.map +1 -0
  128. package/dist/server/src/db/client.d.ts +14 -0
  129. package/dist/server/src/db/client.js +32 -0
  130. package/dist/server/src/db/client.js.map +1 -0
  131. package/dist/server/src/db/open-project.d.ts +17 -0
  132. package/dist/server/src/db/open-project.js +27 -0
  133. package/dist/server/src/db/open-project.js.map +1 -0
  134. package/dist/server/src/db/open-repo.d.ts +8 -0
  135. package/dist/server/src/db/open-repo.js +45 -0
  136. package/dist/server/src/db/open-repo.js.map +1 -0
  137. package/dist/server/src/db/pg-bootstrap.d.ts +4 -0
  138. package/dist/server/src/db/pg-bootstrap.js +106 -0
  139. package/dist/server/src/db/pg-bootstrap.js.map +1 -0
  140. package/dist/server/src/db/pg-client.d.ts +10 -0
  141. package/dist/server/src/db/pg-client.js +42 -0
  142. package/dist/server/src/db/pg-client.js.map +1 -0
  143. package/dist/server/src/db/repo-pg.d.ts +3 -0
  144. package/dist/server/src/db/repo-pg.js +245 -0
  145. package/dist/server/src/db/repo-pg.js.map +1 -0
  146. package/dist/server/src/db/repo-sqlite.d.ts +3 -0
  147. package/dist/server/src/db/repo-sqlite.js +224 -0
  148. package/dist/server/src/db/repo-sqlite.js.map +1 -0
  149. package/dist/server/src/db/repo.d.ts +54 -0
  150. package/dist/server/src/db/repo.js +2 -0
  151. package/dist/server/src/db/repo.js.map +1 -0
  152. package/dist/server/src/db/schema-pg.d.ts +2712 -0
  153. package/dist/server/src/db/schema-pg.js +107 -0
  154. package/dist/server/src/db/schema-pg.js.map +1 -0
  155. package/dist/server/src/db/schema.d.ts +2721 -0
  156. package/dist/server/src/db/schema.js +107 -0
  157. package/dist/server/src/db/schema.js.map +1 -0
  158. package/dist/server/src/events/emit.d.ts +21 -0
  159. package/dist/server/src/events/emit.js +17 -0
  160. package/dist/server/src/events/emit.js.map +1 -0
  161. package/dist/server/src/http/server.d.ts +10 -0
  162. package/dist/server/src/http/server.js +119 -0
  163. package/dist/server/src/http/server.js.map +1 -0
  164. package/dist/server/src/index.d.ts +2 -0
  165. package/dist/server/src/index.js +13 -0
  166. package/dist/server/src/index.js.map +1 -0
  167. package/dist/server/src/init.d.ts +12 -0
  168. package/dist/server/src/init.js +59 -0
  169. package/dist/server/src/init.js.map +1 -0
  170. package/dist/server/src/install.d.ts +8 -0
  171. package/dist/server/src/install.js +100 -0
  172. package/dist/server/src/install.js.map +1 -0
  173. package/dist/server/src/project/bootstrap.d.ts +9 -0
  174. package/dist/server/src/project/bootstrap.js +83 -0
  175. package/dist/server/src/project/bootstrap.js.map +1 -0
  176. package/dist/server/src/project/detect.d.ts +10 -0
  177. package/dist/server/src/project/detect.js +82 -0
  178. package/dist/server/src/project/detect.js.map +1 -0
  179. package/dist/server/src/project/identity.d.ts +8 -0
  180. package/dist/server/src/project/identity.js +42 -0
  181. package/dist/server/src/project/identity.js.map +1 -0
  182. package/dist/server/src/server.d.ts +8 -0
  183. package/dist/server/src/server.js +22 -0
  184. package/dist/server/src/server.js.map +1 -0
  185. package/dist/server/src/tools/debt.d.ts +2 -0
  186. package/dist/server/src/tools/debt.js +88 -0
  187. package/dist/server/src/tools/debt.js.map +1 -0
  188. package/dist/server/src/tools/decision.d.ts +2 -0
  189. package/dist/server/src/tools/decision.js +39 -0
  190. package/dist/server/src/tools/decision.js.map +1 -0
  191. package/dist/server/src/tools/epic.d.ts +2 -0
  192. package/dist/server/src/tools/epic.js +95 -0
  193. package/dist/server/src/tools/epic.js.map +1 -0
  194. package/dist/server/src/tools/index.d.ts +3 -0
  195. package/dist/server/src/tools/index.js +21 -0
  196. package/dist/server/src/tools/index.js.map +1 -0
  197. package/dist/server/src/tools/nelson.d.ts +2 -0
  198. package/dist/server/src/tools/nelson.js +28 -0
  199. package/dist/server/src/tools/nelson.js.map +1 -0
  200. package/dist/server/src/tools/progress.d.ts +2 -0
  201. package/dist/server/src/tools/progress.js +45 -0
  202. package/dist/server/src/tools/progress.js.map +1 -0
  203. package/dist/server/src/tools/sprint.d.ts +2 -0
  204. package/dist/server/src/tools/sprint.js +98 -0
  205. package/dist/server/src/tools/sprint.js.map +1 -0
  206. package/dist/server/src/tools/status.d.ts +2 -0
  207. package/dist/server/src/tools/status.js +31 -0
  208. package/dist/server/src/tools/status.js.map +1 -0
  209. package/dist/server/src/tools/story.d.ts +2 -0
  210. package/dist/server/src/tools/story.js +155 -0
  211. package/dist/server/src/tools/story.js.map +1 -0
  212. package/dist/server/src/tools/task.d.ts +2 -0
  213. package/dist/server/src/tools/task.js +90 -0
  214. package/dist/server/src/tools/task.js.map +1 -0
  215. package/dist/server/src/tools/types.d.ts +15 -0
  216. package/dist/server/src/tools/types.js +11 -0
  217. package/dist/server/src/tools/types.js.map +1 -0
  218. package/dist/server/src/util/git.d.ts +8 -0
  219. package/dist/server/src/util/git.js +51 -0
  220. package/dist/server/src/util/git.js.map +1 -0
  221. package/dist/server/src/util/ids.d.ts +2 -0
  222. package/dist/server/src/util/ids.js +8 -0
  223. package/dist/server/src/util/ids.js.map +1 -0
  224. package/dist/server/src/util/paths.d.ts +2 -0
  225. package/dist/server/src/util/paths.js +9 -0
  226. package/dist/server/src/util/paths.js.map +1 -0
  227. package/dist/server/src/worker/client.d.ts +12 -0
  228. package/dist/server/src/worker/client.js +89 -0
  229. package/dist/server/src/worker/client.js.map +1 -0
  230. package/dist/server/src/worker/hook.d.ts +1 -0
  231. package/dist/server/src/worker/hook.js +36 -0
  232. package/dist/server/src/worker/hook.js.map +1 -0
  233. package/dist/server/src/worker/ingest.d.ts +14 -0
  234. package/dist/server/src/worker/ingest.js +86 -0
  235. package/dist/server/src/worker/ingest.js.map +1 -0
  236. package/dist/server/src/worker/markers/any-type.d.ts +6 -0
  237. package/dist/server/src/worker/markers/any-type.js +19 -0
  238. package/dist/server/src/worker/markers/any-type.js.map +1 -0
  239. package/dist/server/src/worker/markers/debt.d.ts +11 -0
  240. package/dist/server/src/worker/markers/debt.js +53 -0
  241. package/dist/server/src/worker/markers/debt.js.map +1 -0
  242. package/dist/server/src/worker/markers/file-size.d.ts +5 -0
  243. package/dist/server/src/worker/markers/file-size.js +32 -0
  244. package/dist/server/src/worker/markers/file-size.js.map +1 -0
  245. package/dist/server/src/worker/scanner.d.ts +23 -0
  246. package/dist/server/src/worker/scanner.js +23 -0
  247. package/dist/server/src/worker/scanner.js.map +1 -0
  248. package/dist/server/src/worker/server.d.ts +1 -0
  249. package/dist/server/src/worker/server.js +137 -0
  250. package/dist/server/src/worker/server.js.map +1 -0
  251. package/dist/server/src/worker/socket.d.ts +3 -0
  252. package/dist/server/src/worker/socket.js +12 -0
  253. package/dist/server/src/worker/socket.js.map +1 -0
  254. package/hooks/hooks.json +33 -0
  255. package/package.json +56 -0
  256. package/skills/backlog/SKILL.md +18 -0
  257. package/skills/debt/SKILL.md +39 -0
  258. package/skills/epic/SKILL.md +22 -0
  259. package/skills/nelson-integration/SKILL.md +44 -0
  260. package/skills/project-tracker/SKILL.md +60 -0
  261. package/skills/review/SKILL.md +27 -0
  262. package/skills/sprint/SKILL.md +23 -0
  263. package/skills/story/SKILL.md +29 -0
@@ -0,0 +1,33 @@
1
+ {
2
+ "hooks": {
3
+ "SessionStart": [
4
+ {
5
+ "matcher": "*",
6
+ "hooks": [
7
+ {
8
+ "type": "command",
9
+ "command": "npx -y @uasyraf/helm banner 2>/dev/null # helm: SessionStart",
10
+ "timeout": 5
11
+ }
12
+ ]
13
+ }
14
+ ],
15
+ "PostToolUse": [
16
+ {
17
+ "matcher": "Edit|Write|MultiEdit",
18
+ "hooks": [
19
+ {
20
+ "type": "command",
21
+ "command": "npx -y @uasyraf/helm hook post-tool-use 2>/dev/null # helm: PostToolUse",
22
+ "timeout": 5
23
+ }
24
+ ]
25
+ }
26
+ ]
27
+ },
28
+ "statusLine": {
29
+ "type": "command",
30
+ "command": "npx -y @uasyraf/helm banner 2>/dev/null # helm: statusline",
31
+ "padding": 0
32
+ }
33
+ }
package/package.json ADDED
@@ -0,0 +1,56 @@
1
+ {
2
+ "name": "@uasyraf/helm",
3
+ "version": "0.1.0",
4
+ "description": "Plug-and-play MCP server + dashboard for durable, multi-developer project state. Sprints, epics, stories, tasks, code-linked tech debt.",
5
+ "type": "module",
6
+ "engines": {
7
+ "node": ">=22.0.0"
8
+ },
9
+ "bin": {
10
+ "helm": "dist/bin/helm.js"
11
+ },
12
+ "main": "./dist/server/src/index.js",
13
+ "files": [
14
+ "dist",
15
+ "skills",
16
+ "hooks",
17
+ ".claude-plugin",
18
+ ".mcp.json",
19
+ "dashboard/build",
20
+ "dashboard/package.json",
21
+ "dashboard/svelte.config.js",
22
+ "LICENSE",
23
+ "README.md"
24
+ ],
25
+ "scripts": {
26
+ "build": "tsc -p tsconfig.json",
27
+ "start": "tsx server/src/index.ts",
28
+ "dev": "tsx watch server/src/index.ts",
29
+ "test": "vitest run",
30
+ "test:watch": "vitest",
31
+ "typecheck": "tsc --noEmit",
32
+ "prepublishOnly": "npm run build"
33
+ },
34
+ "dependencies": {
35
+ "@libsql/client": "^0.14.0",
36
+ "@modelcontextprotocol/sdk": "^1.0.0",
37
+ "drizzle-orm": "^0.36.0",
38
+ "zod": "^3.23.0"
39
+ },
40
+ "optionalDependencies": {
41
+ "pg": "^8.20.0"
42
+ },
43
+ "devDependencies": {
44
+ "@electric-sql/pglite": "^0.4.5",
45
+ "@types/node": "^22.0.0",
46
+ "@types/pg": "^8.11.10",
47
+ "tsx": "^4.19.0",
48
+ "typescript": "^5.6.0",
49
+ "vitest": "^2.1.0"
50
+ },
51
+ "license": "MIT",
52
+ "private": false,
53
+ "publishConfig": {
54
+ "access": "public"
55
+ }
56
+ }
@@ -0,0 +1,18 @@
1
+ ---
2
+ name: backlog
3
+ description: View and prioritise the backlog. Use for "what's in the backlog?", "show unsprinted stories", or planning the next sprint.
4
+ ---
5
+
6
+ # /backlog
7
+
8
+ The backlog is the view, not an entity: `stories WHERE sprint_id IS NULL ORDER BY priority`.
9
+
10
+ ## Common flows
11
+
12
+ | User says | Tool |
13
+ |---|---|
14
+ | "what's in the backlog?" | `list_backlog` |
15
+ | "pull X into the sprint" | `move_story(id, sprintId)` |
16
+ | "send X back to backlog" | `move_story(id, sprintId: null)` |
17
+
18
+ The dashboard's `/sprints` page is the visual equivalent — use the MCP tools when the user is in a Claude session; point them at the dashboard for drag-and-plan flows.
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: debt
3
+ description: Tech debt — log, close, list. The killer feature. Use for "log this as debt", "what debt do we have?", "close DEBT-x", or anything tied to code-linked technical debt.
4
+ ---
5
+
6
+ # /debt
7
+
8
+ Tech debt is helm's differentiator. Use helm MCP tools.
9
+
10
+ ## Common flows
11
+
12
+ | User says | Tool | Notes |
13
+ |---|---|---|
14
+ | "log this as debt" | `log_debt` | Include `location` (`file:line`) whenever possible |
15
+ | "what debt do we have?" | `list_debt` | `includeClosed: true` for full history |
16
+ | "close that debt" | `close_debt` | Counts toward killer metric for the active sprint |
17
+
18
+ ## Auto-detected debt
19
+
20
+ The PostToolUse worker scans diffs for:
21
+ - `// DEBT(key=value, ...)` markers (prefix: `//`, `#`, or `--`) — Q2-locked syntax
22
+ - Files crossing 500 lines
23
+ - TypeScript `: any` or `as any`
24
+
25
+ Auto-detected items appear in `list_debt` within seconds of an Edit/Write. They're de-duplicated by location, so the same line won't fire twice.
26
+
27
+ ## Killer metric
28
+
29
+ `(debt opened this sprint) − (debt closed this sprint)` = the number Linear/Jira structurally cannot compute, because they don't see code. Surfaces in `get_status` and `sprint_review`.
30
+
31
+ ## DEBT marker format
32
+
33
+ ```
34
+ // DEBT(owner=alice, expires=2026-Q3, severity=high, ref=DBT-12): description
35
+ # DEBT(owner=bob, expires=2026-12-01)
36
+ -- DEBT(owner=carol)
37
+ ```
38
+
39
+ Recognized fields: `owner`, `expires` (ISO date or `YYYY-Qn`), `severity` (`low|med|high|critical`), `ref`.
@@ -0,0 +1,22 @@
1
+ ---
2
+ name: epic
3
+ description: Epic lifecycle — open, update, close. Cross-sprint themes that group stories. Use for "open an epic for X", "close the auth epic", or theme-level planning.
4
+ ---
5
+
6
+ # /epic
7
+
8
+ Epics are cross-sprint themes (e.g. "auth overhaul", "billing v2"). Each epic contains stories. Use helm MCP tools.
9
+
10
+ ## Common flows
11
+
12
+ | User says | Tool |
13
+ |---|---|
14
+ | "open an epic for X" | `open_epic` |
15
+ | "close the X epic" | `close_epic` (set `dropped: true` to mark dropped instead of done) |
16
+ | "update the epic" | `update_epic` |
17
+
18
+ ## Notes
19
+
20
+ - Optional `target_sprint_id` for soft commitment. Stories under the epic can be in any sprint.
21
+ - Status enum: `open | in-progress | done | dropped`.
22
+ - Priority 1 (highest) to 5 (lowest), default 3.
@@ -0,0 +1,44 @@
1
+ ---
2
+ name: nelson-integration
3
+ description: Standing-orders addendum for Nelson — emit link_mission at Step 3 (Battle Plan approved) and log_progress at Step 7 (Captain's Log). Auto-invokes whenever Nelson runs a Tier 3 mission.
4
+ ---
5
+
6
+ # helm + Nelson integration
7
+
8
+ Two seam-points in Nelson's 8-step framework write durable project state to helm:
9
+
10
+ ## Step 3 — Battle Plan approved
11
+
12
+ Immediately after the user approves the battle plan (Nelson's Step 5 permission gate), the squadron should call:
13
+
14
+ ```
15
+ mcp__helm__link_mission(
16
+ missionId: "<nelson mission id>",
17
+ storyId: "<helm story id, if the mission targets one>",
18
+ sprintId: "<active sprint id, optional — defaults to active>",
19
+ summary: "<one-line mission brief>"
20
+ )
21
+ ```
22
+
23
+ This creates a `progress_event` row with `kind=mission.linked`, anchoring the mission to the planning surface. If the user hasn't opened a story yet, ask first — "Should I open a story for this mission?" — then call `open_story` followed by `link_mission`.
24
+
25
+ ## Step 7 — Captain's Log
26
+
27
+ After Nelson's captain's log is written, the squadron should call:
28
+
29
+ ```
30
+ mcp__helm__log_progress(
31
+ summary: "<mission complete: X files touched, Y debt added, Z debt closed>",
32
+ refId: "<nelson mission id>"
33
+ )
34
+ ```
35
+
36
+ This creates a `progress_event` row with `kind=progress.logged` tied to the mission. The dashboard's `/sprints/[id]` timeline then shows the mission alongside organic story/debt events.
37
+
38
+ ## Why a standing-orders addendum, not a hook
39
+
40
+ Nelson's `SubagentStop` would fire mid-mission (after every subagent returns), producing noise. The Step 3 and Step 7 calls are deliberate captain-level acts, not subagent-level signals — they belong in Nelson's documented flow, not in a hook config.
41
+
42
+ ## Failure mode
43
+
44
+ If helm isn't installed in the user's environment, both MCP calls return tool-not-found. Nelson should swallow this silently — helm integration is opt-in, not load-bearing.
@@ -0,0 +1,60 @@
1
+ ---
2
+ name: project-tracker
3
+ description: Use when the user asks about durable project state — sprints, epics, stories, tasks, tech debt, decisions — or wants to record/log/check status across sessions. Triggers on phrases like "what's the state of", "log this as debt", "open a story", "sprint status", "debt delta", "who's working on", or any mention of helm/tracker tools.
4
+ ---
5
+
6
+ # project-tracker
7
+
8
+ You have access to the helm MCP server, which gives this project durable, shared state across Claude sessions and across teammates.
9
+
10
+ ## When to invoke
11
+
12
+ Use helm tools whenever the user references project-level state that should survive the session. Examples:
13
+
14
+ - "what's our sprint status?" → `get_status`
15
+ - "open a story for the dashboard refactor" → `open_story`
16
+ - "log this as tech debt" → `log_debt`
17
+ - "move STORY-123 to the current sprint" → `move_story`
18
+ - "what's the debt delta this sprint?" → `get_status` (or `sprint_review` if a sprint just closed)
19
+ - "record this decision" → `record_decision`
20
+ - "what did Alice do this week?" → `who_did_what(handle="alice")`
21
+
22
+ ## Boundary with other tools
23
+
24
+ - **TodoWrite** = per-session decomposition. Throw-away. Not shared with teammates.
25
+ - **helm task** = durable, team-shared implementation step inside a story. Survives sessions.
26
+ - **claude-mem** = conversation memory. "What did I try yesterday?" goes there.
27
+ - **helm** = project state. "What's the state of the auth epic?" goes here.
28
+
29
+ If unsure: durable + shared = helm. Per-session + personal = TodoWrite. Conversation recall = claude-mem.
30
+
31
+ ## Tool surface (Phase 0)
32
+
33
+ | Tool | Use for |
34
+ |---|---|
35
+ | `get_status` | Active sprint, story counts, open debt, killer metric |
36
+ | `start_sprint` / `end_sprint` | Sprint lifecycle |
37
+ | `sprint_review` | Sprint summary including debt delta |
38
+ | `open_epic` / `update_epic` / `close_epic` | Cross-sprint themes |
39
+ | `open_story` / `update_story` / `move_story` / `close_story` | The unit that gets pulled into a sprint |
40
+ | `list_backlog` | Unsprinted stories by priority |
41
+ | `open_task` / `update_task` / `close_task` | Implementation steps inside a story |
42
+ | `log_debt` / `close_debt` / `list_debt` | Code-linked tech debt — the killer feature |
43
+ | `record_decision` | ADR-lite capture |
44
+ | `log_progress` | Free-form timeline event |
45
+ | `link_mission` | Nelson Step 3 seam |
46
+ | `who_did_what` | Developer activity feed |
47
+
48
+ ## Conventions
49
+
50
+ - Story IDs are UUIDs. Don't make them up — fetch from `list_backlog` or `get_status` first.
51
+ - The active sprint is auto-detected from session context. Pass `sprintId` explicitly only when targeting a different sprint.
52
+ - When the user describes work that hasn't been opened as a story yet, suggest `open_story` first, then record progress against it.
53
+ - Debt items should include `location` (`file:line` or symbol path) whenever the conversation references specific code.
54
+
55
+ ## Banner format
56
+
57
+ The SessionStart hook prints: `[helm] sprint-N (dX/Y) | stories: a/b done | debt: N (Δ±M)`.
58
+ - `dX/Y` = day X of an Y-day sprint
59
+ - `a/b` = stories done / total in sprint
60
+ - `Δ±M` = debt opened minus closed this sprint (the killer metric)
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: review
3
+ description: Sprint review — completed stories, velocity, killer metric. Use for "show me the review", "how did this sprint go?", "what was our debt delta?".
4
+ ---
5
+
6
+ # /review
7
+
8
+ Sprint review surfaces the four numbers that matter:
9
+
10
+ 1. Completed stories (count + titles + sizes)
11
+ 2. Velocity (sized stories closed)
12
+ 3. Debt opened during sprint
13
+ 4. Debt closed during sprint
14
+ 5. **Net delta** — the killer metric: opened − closed
15
+
16
+ ## Common flows
17
+
18
+ | User says | Tool |
19
+ |---|---|
20
+ | "show me the review" | `sprint_review` (defaults to active sprint) |
21
+ | "review sprint X" | `sprint_review(sprintId: "X")` |
22
+
23
+ ## Boundary
24
+
25
+ Sprint review is a **view**, not a ceremony entity. helm does not model retro/planning/standup as data rows (PRD § Agile Model). Teams run the ceremonies; helm renders the view.
26
+
27
+ The dashboard's `/sprints/[id]` route shows the same data plus the per-sprint event timeline.
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: sprint
3
+ description: Sprint lifecycle and status. Use for "what's our sprint status", "start a new sprint", "end this sprint", "show sprint review", or any cadence-level question.
4
+ ---
5
+
6
+ # /sprint
7
+
8
+ Use the helm MCP tools for sprint operations. The active sprint is auto-detected from session context.
9
+
10
+ ## Common flows
11
+
12
+ | User says | Tool |
13
+ |---|---|
14
+ | "what's the sprint status?" | `get_status` |
15
+ | "start a new sprint" | `start_sprint` (optionally with `name` + `goal`) |
16
+ | "end this sprint" | `end_sprint` (auto-rolls incomplete stories to backlog per PRD F2) |
17
+ | "show me the review" / "sprint summary" | `sprint_review` (defaults to active sprint) |
18
+
19
+ ## Notes
20
+
21
+ - `end_sprint` rolls incomplete stories back to backlog (locked behavior — PRD Q4). Done and dropped stories stay attached.
22
+ - Sprint length defaults to 14 days (per-project override via `sprint_length_days`).
23
+ - The killer metric — debt delta this sprint — surfaces in both `get_status` and `sprint_review`.
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: story
3
+ description: Story lifecycle — open, update, move, close, list backlog. Use for "open a story", "move STORY-x to current sprint", "close this story", "what's in the backlog", or any user-valued-increment work.
4
+ ---
5
+
6
+ # /story
7
+
8
+ Stories are the unit pulled into a sprint and counted toward velocity. Use helm MCP tools for the lifecycle.
9
+
10
+ ## Common flows
11
+
12
+ | User says | Tool | Notes |
13
+ |---|---|---|
14
+ | "open a story for X" | `open_story` | Pass `sprintId` to land in sprint, omit for backlog |
15
+ | "move STORY-x to current sprint" | `move_story` | Pass `sprintId: null` to send back to backlog |
16
+ | "close this story" | `close_story` | Sets `completed_at`, marks done |
17
+ | "what's in the backlog?" | `list_backlog` | Sorted by priority |
18
+ | "update the story title" | `update_story` | Pass only the fields that change |
19
+
20
+ ## Boundary with TodoWrite (resolved 2026-05-18, PRD Q5)
21
+
22
+ - **TodoWrite** = per-session, throw-away decomposition. Not shared with teammates.
23
+ - **helm story** = durable user-valued increment, team-shared, survives sessions.
24
+
25
+ If unsure: is this a long-lived thing the team needs to see? → helm story. Is this just my plan for the next hour? → TodoWrite.
26
+
27
+ ## Story sizing
28
+
29
+ T-shirts (XS/S/M/L/XL/XXL) by default per PRD Q12. Velocity chart counts done stories with size set. Skip sizing if the team doesn't ask for it.