claude-code-session-manager 0.111.0 → 0.113.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 (290) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/dist/assets/{AgentLibrary-rBO1daqM.js → AgentLibrary-wvrcLGGS.js} +2 -2
  3. package/dist/assets/{Button-DsEYRZg0.js → Button-B6h0F0XT.js} +1 -1
  4. package/dist/assets/{DataModel-D8sbvvBC.js → DataModel-C5pW9E3u.js} +1 -1
  5. package/dist/assets/{History-BEHLtxia.js → History-BV4e8YOM.js} +2 -2
  6. package/dist/assets/{Hooks-CKpvlXrg.js → Hooks-CrFSv4x1.js} +3 -3
  7. package/dist/assets/{Library-CeF4qh9d.js → Library-D-GIt3EY.js} +5 -5
  8. package/dist/assets/{ListDetail-DcfmxPFk.js → ListDetail-Bco_wfs6.js} +1 -1
  9. package/dist/assets/{MarkdownEditor-CvK1pyto.js → MarkdownEditor-C-yHSXNV.js} +1 -1
  10. package/dist/assets/{McpServers-D-h2ihzJ.js → McpServers-CfDekadG.js} +2 -2
  11. package/dist/assets/{Memory-BnF89x8v.js → Memory-CGGLexkR.js} +4 -4
  12. package/dist/assets/{Panel-CQY5zano.js → Panel-DGMEuYYG.js} +1 -1
  13. package/dist/assets/{Permissions-DLukmmsz.js → Permissions-Cx2zjtYZ.js} +3 -3
  14. package/dist/assets/{Plugins-0Pf0OZ4l.js → Plugins-Bc_W3IyR.js} +2 -2
  15. package/dist/assets/ProvenanceBadge-DiKAUR1u.js +1 -0
  16. package/dist/assets/RemoteMachines-8_77-WPD.js +3 -0
  17. package/dist/assets/{SaveBar-DjijiUb0.js → SaveBar-Blpzdq1R.js} +1 -1
  18. package/dist/assets/{Scheduler-Cm3EXZvE.js → Scheduler-Bd70AM4X.js} +9 -9
  19. package/dist/assets/{ScopeSwitcher-B-P-kSfq.js → ScopeSwitcher-wxN0h4YW.js} +1 -1
  20. package/dist/assets/Settings-CQ7DA3zW.js +4 -0
  21. package/dist/assets/{SkillReferenceGraph-Epv2GJmj.js → SkillReferenceGraph-DH1NLOiS.js} +1 -1
  22. package/dist/assets/Skills-CmyRyu4_.js +2 -0
  23. package/dist/assets/SystemPrompt-KAc3UMCd.js +1 -0
  24. package/dist/assets/TagLibrary-C8EvHnpg.js +1 -0
  25. package/dist/assets/{TiptapBody-DAMO3DhO.js → TiptapBody-d423mH6D.js} +1 -1
  26. package/dist/assets/{Toggle-Ba_f7q_m.js → Toggle-D1wsGE9S.js} +1 -1
  27. package/dist/assets/{ViewTabs-CGX6MAhc.js → ViewTabs-CjHw3kGY.js} +1 -1
  28. package/dist/assets/{historyTotals-vgfk8EOL.js → historyTotals-DFHzqLt7.js} +1 -1
  29. package/dist/assets/{index-CPieAFsl.js → index-Ci1u018F.js} +266 -266
  30. package/dist/assets/{settingsSchema-D0FxNrTy.js → settingsSchema-Ctf3pZVI.js} +1 -1
  31. package/dist/assets/{useAgentsDirWatch-DCu6BNYN.js → useAgentsDirWatch-B1NBmOAe.js} +1 -1
  32. package/dist/assets/{useRemotePeers-D4cdJDyh.js → useRemotePeers-BHjSJs9D.js} +1 -1
  33. package/dist/index.html +1 -1
  34. package/package.json +3 -2
  35. package/plugins/CLAUDE.md +5 -8
  36. package/plugins/session-manager-dev/.claude-plugin/plugin.json +3 -6
  37. package/plugins/session-manager-dev/skills/builder/1-classify-and-bump/SKILL.md +2 -2
  38. package/plugins/session-manager-dev/skills/builder/SKILL.md +2 -3
  39. package/plugins/session-manager-dev/skills/develop/SKILL.md +1 -1
  40. package/plugins/session-manager-dev/skills/develop/standards.md +3 -3
  41. package/plugins/session-manager-dev/skills/send-feedback/SKILL.md +13 -0
  42. package/scripts/README.md +3 -3
  43. package/scripts/audit-ops-hygiene.cjs +4 -4
  44. package/scripts/hooks/guard-destructive-git.cjs +4 -4
  45. package/scripts/hooks/guard-inline-implementation.cjs +1 -1
  46. package/scripts/hooks/guard-prd-writes.cjs +2 -2
  47. package/scripts/hooks/lib/guard-destructive-git-policy.cjs +1 -1
  48. package/scripts/mint-epic.cjs +2 -2
  49. package/scripts/scheduler-mcp-server.cjs +27 -9
  50. package/src/main/agentLibrary.cjs +5 -5
  51. package/src/main/agentsIpc.cjs +76 -0
  52. package/src/main/build-info.json +4 -4
  53. package/src/main/chatRunner.cjs +30 -13
  54. package/src/main/config.cjs +20 -3
  55. package/src/main/crashDiagnostics.cjs +2 -2
  56. package/src/main/docEdit.cjs +5 -5
  57. package/src/main/files.cjs +2 -2
  58. package/src/main/git.cjs +1 -1
  59. package/src/main/health.cjs +20 -18
  60. package/src/main/heapSnapshot.cjs +1 -1
  61. package/src/main/historyAggregator.cjs +2 -2
  62. package/src/main/index.cjs +50 -132
  63. package/src/main/ipcSchemas.cjs +13 -10
  64. package/src/main/lib/CLAUDE.md +48 -0
  65. package/src/main/lib/activeSessions.cjs +14 -1
  66. package/src/main/lib/classifyPromptTicket.cjs +2 -2
  67. package/src/main/lib/{agentModelResolve.cjs → claude/agentModelResolve.cjs} +7 -7
  68. package/src/main/lib/{claudeBin.cjs → claude/claudeBin.cjs} +4 -4
  69. package/src/main/lib/{effectiveModelInfo.cjs → claude/effectiveModelInfo.cjs} +9 -9
  70. package/src/main/lib/{modelCatalog.cjs → claude/modelCatalog.cjs} +3 -3
  71. package/src/main/lib/claude/rateLimitDetect.cjs +54 -0
  72. package/src/main/lib/{rateLimitWindow.cjs → claude/rateLimitWindow.cjs} +24 -12
  73. package/src/main/lib/{runClaudeP.cjs → claude/runClaudeP.cjs} +1 -1
  74. package/src/main/lib/credentials.cjs +18 -92
  75. package/src/main/lib/cwdClassify.cjs +1 -1
  76. package/src/main/lib/{activeIndexMerge.cjs → epic/activeIndexMerge.cjs} +3 -3
  77. package/src/main/lib/{activeIndexRebuild.cjs → epic/activeIndexRebuild.cjs} +1 -1
  78. package/src/main/lib/{delegationReadiness.cjs → epic/delegationReadiness.cjs} +21 -29
  79. package/src/main/lib/{epicContextDigest.cjs → epic/epicContextDigest.cjs} +1 -1
  80. package/src/main/lib/{epicDelegationStats.cjs → epic/epicDelegationStats.cjs} +2 -2
  81. package/src/main/lib/{epicMint.cjs → epic/epicMint.cjs} +11 -11
  82. package/src/main/lib/{epicSpawnPlan.cjs → epic/epicSpawnPlan.cjs} +3 -3
  83. package/src/main/lib/{epicStatusMirror.cjs → epic/epicStatusMirror.cjs} +2 -2
  84. package/src/main/lib/{epicTranscriptDiagnostic.cjs → epic/epicTranscriptDiagnostic.cjs} +2 -2
  85. package/src/main/lib/{epicTranscriptPath.cjs → epic/epicTranscriptPath.cjs} +2 -2
  86. package/src/main/lib/{epicValidationHook.cjs → epic/epicValidationHook.cjs} +3 -3
  87. package/src/main/lib/{epicWorktreeBoot.cjs → epic/epicWorktreeBoot.cjs} +1 -1
  88. package/src/main/lib/{epicWorktreeMerge.cjs → epic/epicWorktreeMerge.cjs} +3 -3
  89. package/src/main/lib/{epicWorktreeMint.cjs → epic/epicWorktreeMint.cjs} +3 -3
  90. package/src/main/lib/{epicWorktreeProjectConfig.cjs → epic/epicWorktreeProjectConfig.cjs} +4 -4
  91. package/src/main/lib/{promptSessionsCreateEpic.cjs → epic/promptSessionsCreateEpic.cjs} +4 -4
  92. package/src/main/lib/{crossProjectFeedback.cjs → feedback-remote/crossProjectFeedback.cjs} +114 -16
  93. package/src/main/lib/{customerFeedbackClient.cjs → feedback-remote/customerFeedbackClient.cjs} +3 -3
  94. package/src/main/lib/{customerFeedbackInbox.cjs → feedback-remote/customerFeedbackInbox.cjs} +2 -2
  95. package/src/main/lib/{customerFeedbackIpc.cjs → feedback-remote/customerFeedbackIpc.cjs} +1 -1
  96. package/src/main/lib/feedback-remote/humanPromptLedger.cjs +93 -0
  97. package/src/main/lib/{localAdminHttp.cjs → feedback-remote/localAdminHttp.cjs} +2 -2
  98. package/src/main/lib/{macroAdminRoutes.cjs → feedback-remote/macroAdminRoutes.cjs} +1 -1
  99. package/src/main/lib/{projectHomeAdminRoutes.cjs → feedback-remote/projectHomeAdminRoutes.cjs} +4 -4
  100. package/src/main/lib/{relayClientAuth.cjs → feedback-remote/relayClientAuth.cjs} +2 -2
  101. package/src/main/lib/{remoteClientSessions.cjs → feedback-remote/remoteClientSessions.cjs} +1 -1
  102. package/src/main/lib/{gitWorktree.cjs → git/gitWorktree.cjs} +7 -7
  103. package/src/main/lib/historyRollup.cjs +1 -1
  104. package/src/main/lib/importReferences.cjs +1 -1
  105. package/src/main/lib/machineProfile.cjs +1 -1
  106. package/src/main/lib/mcpToolCatalog.cjs +9 -3
  107. package/src/main/lib/openExternalApp.cjs +1 -1
  108. package/src/main/lib/opsOwnership.cjs +3 -3
  109. package/src/main/lib/{agentPersonaSchema.cjs → persona-macro/agentPersonaSchema.cjs} +2 -2
  110. package/src/main/lib/{macroLibrary.cjs → persona-macro/macroLibrary.cjs} +5 -5
  111. package/src/main/lib/{personaMerge.cjs → persona-macro/personaMerge.cjs} +4 -4
  112. package/src/main/lib/{depSlugResolve.cjs → prd/depSlugResolve.cjs} +16 -1
  113. package/src/main/lib/{prdAdminRoutes.cjs → prd/prdAdminRoutes.cjs} +7 -7
  114. package/src/main/lib/{prdAgentType.cjs → prd/prdAgentType.cjs} +3 -3
  115. package/src/main/lib/{prdCreate.cjs → prd/prdCreate.cjs} +12 -12
  116. package/src/main/lib/{prdDeclaredPaths.cjs → prd/prdDeclaredPaths.cjs} +1 -1
  117. package/src/main/lib/{prdGateFiles.cjs → prd/prdGateFiles.cjs} +1 -1
  118. package/src/main/lib/{prdLocations.cjs → prd/prdLocations.cjs} +2 -2
  119. package/src/main/lib/{prdMigration.cjs → prd/prdMigration.cjs} +3 -3
  120. package/src/main/lib/prereqs.cjs +2 -2
  121. package/src/main/lib/{instanceLock.cjs → process/instanceLock.cjs} +4 -11
  122. package/src/main/lib/{pidAlive.cjs → process/pidAlive.cjs} +1 -1
  123. package/src/main/lib/{procName.cjs → process/procName.cjs} +2 -2
  124. package/src/main/lib/{timeoutShim.cjs → process/timeoutShim.cjs} +1 -1
  125. package/src/main/lib/projectRootResolve.cjs +1 -1
  126. package/src/main/lib/promptSessionSchema.cjs +1 -1
  127. package/src/main/lib/{definitionOfDone.cjs → scheduler/definitionOfDone.cjs} +6 -12
  128. package/src/main/lib/scheduler/finalizeReason.cjs +30 -0
  129. package/src/main/lib/{fixChainDepth.cjs → scheduler/fixChainDepth.cjs} +1 -1
  130. package/src/main/lib/scheduler/flatSweepThrottle.cjs +17 -0
  131. package/src/main/lib/{jobDirtFilter.cjs → scheduler/jobDirtFilter.cjs} +1 -1
  132. package/src/main/lib/{jobSupervisorRecord.cjs → scheduler/jobSupervisorRecord.cjs} +1 -1
  133. package/src/main/lib/{launchFailure.cjs → scheduler/launchFailure.cjs} +2 -2
  134. package/src/main/lib/{queueStore.cjs → scheduler/queueStore.cjs} +6 -6
  135. package/src/main/lib/{quietMachineLease.cjs → scheduler/quietMachineLease.cjs} +1 -1
  136. package/src/main/lib/{rcaReport.cjs → scheduler/rcaReport.cjs} +4 -4
  137. package/src/main/lib/{reaperHelpers.cjs → scheduler/reaperHelpers.cjs} +3 -3
  138. package/src/main/lib/{reservationExpiry.cjs → scheduler/reservationExpiry.cjs} +4 -11
  139. package/src/main/lib/{reviewNotice.cjs → scheduler/reviewNotice.cjs} +1 -1
  140. package/src/main/lib/{runLogRetention.cjs → scheduler/runLogRetention.cjs} +34 -13
  141. package/src/main/lib/{scheduleJobTransitions.cjs → scheduler/scheduleJobTransitions.cjs} +3 -3
  142. package/src/main/lib/{schedulerBatch.cjs → scheduler/schedulerBatch.cjs} +9 -13
  143. package/src/main/lib/{schedulerConfig.cjs → scheduler/schedulerConfig.cjs} +1 -1
  144. package/src/main/lib/{schedulerRuntimeState.cjs → scheduler/schedulerRuntimeState.cjs} +1 -1
  145. package/src/main/lib/{sessionSlots.cjs → scheduler/sessionSlots.cjs} +2 -2
  146. package/src/main/lib/{upgradeDrain.cjs → scheduler/upgradeDrain.cjs} +8 -11
  147. package/src/main/lib/{watchdogHelpers.cjs → scheduler/watchdogHelpers.cjs} +5 -19
  148. package/src/main/lib/{auditLog.cjs → telemetry/auditLog.cjs} +1 -1
  149. package/src/main/lib/{opsErrorLog.cjs → telemetry/opsErrorLog.cjs} +4 -4
  150. package/src/main/lib/{telemetryBacklog.cjs → telemetry/telemetryBacklog.cjs} +4 -4
  151. package/src/main/lib/{telemetryBoot.cjs → telemetry/telemetryBoot.cjs} +1 -1
  152. package/src/main/lib/{telemetryClient.cjs → telemetry/telemetryClient.cjs} +12 -8
  153. package/src/main/lib/{telemetrySettings.cjs → telemetry/telemetrySettings.cjs} +1 -1
  154. package/src/main/lib/{atomicFs.cjs → util/atomicFs.cjs} +42 -0
  155. package/src/main/lib/{loopDelay.cjs → util/loopDelay.cjs} +1 -1
  156. package/src/main/logs.cjs +1 -1
  157. package/src/main/mcpStatus.cjs +2 -2
  158. package/src/main/memoryAggregate.cjs +3 -3
  159. package/src/main/memoryTool.cjs +1 -1
  160. package/src/main/otel.cjs +2 -2
  161. package/src/main/pluginInstall.cjs +29 -3
  162. package/src/main/projectBrief.cjs +6 -6
  163. package/src/main/projectPages.cjs +1 -1
  164. package/src/main/promptSessionEvents.cjs +2 -2
  165. package/src/main/pty.cjs +7 -7
  166. package/src/main/queueOps.cjs +6 -6
  167. package/src/main/remoteClient.cjs +4 -4
  168. package/src/main/remoteClientIpc.cjs +1 -1
  169. package/src/main/runVerify.cjs +6 -3
  170. package/src/main/scheduler/CLAUDE.md +26 -0
  171. package/src/main/scheduler/budget.cjs +576 -0
  172. package/src/main/scheduler/gitTreeGuard.cjs +672 -0
  173. package/src/main/scheduler/prdParser.cjs +4 -4
  174. package/src/main/scheduler/prdPaths.cjs +487 -0
  175. package/src/main/scheduler/reviewLadder.cjs +1011 -0
  176. package/src/main/scheduler/starvation.cjs +390 -0
  177. package/src/main/scheduler.cjs +331 -3320
  178. package/src/main/seedAgentPersonas.cjs +5 -5
  179. package/src/main/seedDevPlugin.cjs +70 -3
  180. package/src/main/seedSchedulerMcp.cjs +2 -2
  181. package/src/main/supervisor.cjs +50 -27
  182. package/src/main/telemetryIpc.cjs +51 -0
  183. package/src/main/transcripts.cjs +3 -3
  184. package/src/main/updaterIpc.cjs +1 -1
  185. package/src/main/usage.cjs +1 -1
  186. package/src/main/watchers.cjs +1 -1
  187. package/src/main/webRemote.cjs +22 -7
  188. package/src/preload/api.d.ts +14 -8
  189. package/src/preload/index.cjs +9 -3
  190. package/dist/assets/ProvenanceBadge-vC7Tj-JP.js +0 -1
  191. package/dist/assets/RemoteMachines-CWnKbFHc.js +0 -3
  192. package/dist/assets/Settings-DYDlp2m_.js +0 -4
  193. package/dist/assets/Skills-DHO0N0C2.js +0 -2
  194. package/dist/assets/SystemPrompt-DxeNofL9.js +0 -1
  195. package/dist/assets/TagLibrary-QOAs7ISO.js +0 -1
  196. package/plugins/session-manager-dev/skills/blog-for-project-feature/0-select/SKILL.md +0 -39
  197. package/plugins/session-manager-dev/skills/blog-for-project-feature/1-research/SKILL.md +0 -37
  198. package/plugins/session-manager-dev/skills/blog-for-project-feature/2-storyboard/SKILL.md +0 -64
  199. package/plugins/session-manager-dev/skills/blog-for-project-feature/3-capture/SKILL.md +0 -52
  200. package/plugins/session-manager-dev/skills/blog-for-project-feature/4-draft-copy/SKILL.md +0 -37
  201. package/plugins/session-manager-dev/skills/blog-for-project-feature/5-illustrate/SKILL.md +0 -50
  202. package/plugins/session-manager-dev/skills/blog-for-project-feature/6-compose/SKILL.md +0 -51
  203. package/plugins/session-manager-dev/skills/blog-for-project-feature/7-review/SKILL.md +0 -54
  204. package/plugins/session-manager-dev/skills/blog-for-project-feature/SKILL.md +0 -144
  205. package/plugins/session-manager-dev/skills/blog-for-project-feature/feature.config.yaml +0 -90
  206. package/plugins/session-manager-dev/skills/discover-features/SKILL.md +0 -95
  207. package/plugins/session-manager-dev/skills/explain-to-me/SKILL.md +0 -205
  208. package/plugins/session-manager-dev/skills/explain-to-me/assets/style-reference.html +0 -163
  209. package/plugins/session-manager-dev/skills/find-opportunity/SKILL.md +0 -83
  210. package/plugins/session-manager-dev/skills/issue-address/0-select/0-fetch-pool/SKILL.md +0 -38
  211. package/plugins/session-manager-dev/skills/issue-address/0-select/1-reject-fixed/SKILL.md +0 -64
  212. package/plugins/session-manager-dev/skills/issue-address/0-select/2-reject-claimed/SKILL.md +0 -71
  213. package/plugins/session-manager-dev/skills/issue-address/0-select/3-rank-impact/SKILL.md +0 -39
  214. package/plugins/session-manager-dev/skills/issue-address/0-select/SKILL.md +0 -75
  215. package/plugins/session-manager-dev/skills/issue-address/1-confirm-open/SKILL.md +0 -39
  216. package/plugins/session-manager-dev/skills/issue-address/2-claim/SKILL.md +0 -57
  217. package/plugins/session-manager-dev/skills/issue-address/3-reproduce/SKILL.md +0 -40
  218. package/plugins/session-manager-dev/skills/issue-address/4-fix/SKILL.md +0 -33
  219. package/plugins/session-manager-dev/skills/issue-address/5-verify/SKILL.md +0 -40
  220. package/plugins/session-manager-dev/skills/issue-address/SKILL.md +0 -120
  221. package/plugins/session-manager-dev/skills/local-project-health/SKILL.md +0 -58
  222. package/plugins/session-manager-dev/skills/memory-sanitation/SKILL.md +0 -147
  223. package/plugins/session-manager-dev/skills/ops-sweep/SKILL.md +0 -137
  224. package/plugins/session-manager-dev/skills/pr-review-sweep/0-fetch/SKILL.md +0 -41
  225. package/plugins/session-manager-dev/skills/pr-review-sweep/1-classify/SKILL.md +0 -56
  226. package/plugins/session-manager-dev/skills/pr-review-sweep/2-check-fixed/SKILL.md +0 -49
  227. package/plugins/session-manager-dev/skills/pr-review-sweep/3-queue/SKILL.md +0 -57
  228. package/plugins/session-manager-dev/skills/pr-review-sweep/4-land-and-resolve/SKILL.md +0 -60
  229. package/plugins/session-manager-dev/skills/pr-review-sweep/SKILL.md +0 -124
  230. package/plugins/session-manager-dev/skills/pr-signal/SKILL.md +0 -67
  231. package/plugins/session-manager-dev/skills/project-status/SKILL.md +0 -243
  232. package/plugins/session-manager-dev/skills/requesting-code-review/SKILL.md +0 -98
  233. package/plugins/session-manager-dev/skills/requesting-code-review/code-reviewer.md +0 -146
  234. package/src/main/lib/rateLimitDetect.cjs +0 -35
  235. /package/src/main/lib/{agentEffortResolve.cjs → claude/agentEffortResolve.cjs} +0 -0
  236. /package/src/main/lib/{claudeCliCaps.cjs → claude/claudeCliCaps.cjs} +0 -0
  237. /package/src/main/lib/{usageCircuit.cjs → claude/usageCircuit.cjs} +0 -0
  238. /package/src/main/lib/{epicSpawnCwd.cjs → epic/epicSpawnCwd.cjs} +0 -0
  239. /package/src/main/lib/{customerFeedbackAdminRoutes.cjs → feedback-remote/customerFeedbackAdminRoutes.cjs} +0 -0
  240. /package/src/main/lib/{remoteE2eCrypto.cjs → feedback-remote/remoteE2eCrypto.cjs} +0 -0
  241. /package/src/main/lib/{branchSweep.cjs → git/branchSweep.cjs} +0 -0
  242. /package/src/main/lib/{gitExec.cjs → git/gitExec.cjs} +0 -0
  243. /package/src/main/lib/{jobWorktree.cjs → git/jobWorktree.cjs} +0 -0
  244. /package/src/main/lib/{jobWorktreeBootLive.cjs → git/jobWorktreeBootLive.cjs} +0 -0
  245. /package/src/main/lib/{jobWorktreeTerminalOrphanLive.cjs → git/jobWorktreeTerminalOrphanLive.cjs} +0 -0
  246. /package/src/main/lib/{builtinMacros.cjs → persona-macro/builtinMacros.cjs} +0 -0
  247. /package/src/main/lib/{personaImportHealth.cjs → persona-macro/personaImportHealth.cjs} +0 -0
  248. /package/src/main/lib/{shippedPersonaSeeds.cjs → persona-macro/shippedPersonaSeeds.cjs} +0 -0
  249. /package/src/main/lib/{planValidator.cjs → prd/planValidator.cjs} +0 -0
  250. /package/src/main/lib/{prdAuthoringSeed.cjs → prd/prdAuthoringSeed.cjs} +0 -0
  251. /package/src/main/lib/{prdDisposition.cjs → prd/prdDisposition.cjs} +0 -0
  252. /package/src/main/lib/{prdFrontmatter.cjs → prd/prdFrontmatter.cjs} +0 -0
  253. /package/src/main/lib/{prdSizing.cjs → prd/prdSizing.cjs} +0 -0
  254. /package/src/main/lib/{workTypeLibrary.cjs → prd/workTypeLibrary.cjs} +0 -0
  255. /package/src/main/lib/{childWithLog.cjs → process/childWithLog.cjs} +0 -0
  256. /package/src/main/lib/{cleanEnv.cjs → process/cleanEnv.cjs} +0 -0
  257. /package/src/main/lib/{defaultShell.cjs → process/defaultShell.cjs} +0 -0
  258. /package/src/main/lib/{killTree.cjs → process/killTree.cjs} +0 -0
  259. /package/src/main/lib/{loginShellPath.cjs → process/loginShellPath.cjs} +0 -0
  260. /package/src/main/lib/{procIdentity.cjs → process/procIdentity.cjs} +0 -0
  261. /package/src/main/lib/{singleInstanceGuard.cjs → process/singleInstanceGuard.cjs} +0 -0
  262. /package/src/main/lib/{smProcNames.cjs → process/smProcNames.cjs} +0 -0
  263. /package/src/main/lib/{timeoutShimScript.cjs → process/timeoutShimScript.cjs} +0 -0
  264. /package/src/main/lib/{winSpawn.cjs → process/winSpawn.cjs} +0 -0
  265. /package/src/main/lib/{adoptedRunSupervisor.cjs → scheduler/adoptedRunSupervisor.cjs} +0 -0
  266. /package/src/main/lib/{dispatchLoop.cjs → scheduler/dispatchLoop.cjs} +0 -0
  267. /package/src/main/lib/{dodDrainHook.cjs → scheduler/dodDrainHook.cjs} +0 -0
  268. /package/src/main/lib/{fixPlanSlug.cjs → scheduler/fixPlanSlug.cjs} +0 -0
  269. /package/src/main/lib/{gateAuthority.cjs → scheduler/gateAuthority.cjs} +0 -0
  270. /package/src/main/lib/{landedSinceRun.cjs → scheduler/landedSinceRun.cjs} +0 -0
  271. /package/src/main/lib/{loadGate.cjs → scheduler/loadGate.cjs} +0 -0
  272. /package/src/main/lib/{needsReviewLedger.cjs → scheduler/needsReviewLedger.cjs} +0 -0
  273. /package/src/main/lib/{queueHealth.cjs → scheduler/queueHealth.cjs} +0 -0
  274. /package/src/main/lib/{queueHistory.cjs → scheduler/queueHistory.cjs} +0 -0
  275. /package/src/main/lib/{scheduleJobSchema.cjs → scheduler/scheduleJobSchema.cjs} +0 -0
  276. /package/src/main/lib/{schedulerPaths.cjs → scheduler/schedulerPaths.cjs} +0 -0
  277. /package/src/main/lib/{terminalRunOutcome.cjs → scheduler/terminalRunOutcome.cjs} +0 -0
  278. /package/src/main/lib/{validationSentinels.cjs → scheduler/validationSentinels.cjs} +0 -0
  279. /package/src/main/lib/{crashTelemetry.cjs → telemetry/crashTelemetry.cjs} +0 -0
  280. /package/src/main/lib/{otlpTraceExporter.cjs → telemetry/otlpTraceExporter.cjs} +0 -0
  281. /package/src/main/lib/{telemetryConsent.cjs → telemetry/telemetryConsent.cjs} +0 -0
  282. /package/src/main/lib/{telemetryCounters.cjs → telemetry/telemetryCounters.cjs} +0 -0
  283. /package/src/main/lib/{encodeCwd.cjs → util/encodeCwd.cjs} +0 -0
  284. /package/src/main/lib/{expandHome.cjs → util/expandHome.cjs} +0 -0
  285. /package/src/main/lib/{extractJson.cjs → util/extractJson.cjs} +0 -0
  286. /package/src/main/lib/{fileTail.cjs → util/fileTail.cjs} +0 -0
  287. /package/src/main/lib/{headTailBuffer.cjs → util/headTailBuffer.cjs} +0 -0
  288. /package/src/main/lib/{kebabCase.cjs → util/kebabCase.cjs} +0 -0
  289. /package/src/main/lib/{lruCache.cjs → util/lruCache.cjs} +0 -0
  290. /package/src/main/lib/{withTimeout.cjs → util/withTimeout.cjs} +0 -0
@@ -1,54 +0,0 @@
1
- ---
2
- name: blog-for-project-feature:review
3
- description: Step 7 of blog-for-project-feature — check the composed HTML against feature.config.yaml's gate list before reporting it ready. Loops back to :compose for content issues, :capture for screenshot gaps, or :illustrate for a mislabeled companion image; never ships on a failed gate.
4
- ---
5
-
6
- # blog-for-project-feature:review
7
-
8
- ## Input
9
- Path to the composed HTML (or html+folder) + output mode + size, from `:compose`.
10
-
11
- ## Steps
12
-
13
- Check every item in `feature.config.yaml`'s `gates` list against the actual file:
14
-
15
- 1. Open it (or inspect its markup directly) and confirm every image reference resolves — for
16
- base64-embedded images this means the data URI is present and non-empty; for the folder mode,
17
- confirm each referenced file actually exists on disk.
18
- 2. Confirm zero placeholder/mockup images slipped through — cross-check every `kind: screenshot`
19
- image against `:capture`'s reported real captures; anything not in that list is a violation.
20
- If a companion illustration is present, confirm it's placed only in the Feature Description
21
- header (never inside the Click-Through Demo) and is visually distinguishable from a real
22
- screenshot (no fake window chrome/UI text) — if it could pass as a captured screen, that's a
23
- violation too.
24
- 3. Confirm all three required sections are present and non-empty (or explicitly gap-noted per
25
- `:compose` step 5, which is an acceptable non-empty state). The companion illustration is
26
- optional — its absence is never a gate failure.
27
- 4. Confirm the section order matches `feature.config.yaml`'s `content.sections_required` —
28
- Click-Through Demo leads the page (above the fold, before the prose sections), each visible
29
- step showing its real image on top and the caption directly below it.
30
- 5. Confirm the demo is genuinely click-through — the next/prev or tab controls exist and their
31
- JS actually switches the visible step (not just a cosmetic active-class flip with all steps
32
- rendered stacked underneath).
33
- 6. Confirm no external network calls (grep for `http://`/`https://` in `<script src>`,
34
- `<link href>`, `fetch(`, `@import` — should be none).
35
- 7. Confirm the size ceiling was respected for the mode chosen.
36
- 8. Spot-check 2-3 sentences in the Mission/Feature sections against `:research`'s notes for
37
- traceability — flag anything that reads like invented marketing language.
38
-
39
- ## On failure
40
-
41
- - **Content/structure issue** (sections, theme, controls, external calls, size) → loop back to
42
- `:compose` with the specific gate that failed.
43
- - **Screenshot issue** (missing/broken image, a step that needs re-capturing) → loop back to
44
- `:capture` for that step specifically, then re-run `:compose` for just the affected step.
45
- - **Illustration issue** (looks like a mockup/screenshot, placed in the wrong section) → loop
46
- back to `:illustrate` for one more attempt, or drop it entirely and re-run `:compose` without it.
47
- - Never mark the page ready with a known-failing gate "to save time" — a shorter honest page
48
- beats a complete one that fails its own checklist.
49
-
50
- ## Output
51
-
52
- On all-pass: report the final path, output mode, size, and step count to the user. State clearly
53
- that publishing/uploading/deploying happens **only if explicitly asked next** — this step's job
54
- ends at "ready," not "shipped."
@@ -1,144 +0,0 @@
1
- ---
2
- name: blog-for-project-feature
3
- description: Produce a self-contained, interactive HTML "feature showcase" for one project + one feature — Project Mission & Description, Feature Description (with an optional generated companion illustration), and a Click-Through Demo built from REAL screenshots (never mockups) — one aspect revealed at a time. Output is a single portable HTML file uploadable anywhere (no server, no build step). Distinct from blog-from-git (which drafts narrative bilko.run changelog posts from git history) — this is an evergreen, per-feature product page, not a dated post. Orchestrates 8 nested sub-skills (blog-for-project-feature:select, :research, :storyboard, :capture, :draft-copy, :illustrate, :compose, :review) so each step is independently invokable and inspectable. Use for "make a feature page for X", "showcase this feature", "/blog-for-project-feature", "interactive demo of X", or turning a shipped feature in Session Manager / Social Signal Builder (or any project) into something you can hand someone a link to.
4
- ---
5
-
6
- # blog-for-project-feature (orchestrator)
7
-
8
- Project-agnostic. Runs against whatever project the current working directory (or a named
9
- project path) points to — built first for **Session Manager** and **Social Signal Builder**,
10
- but nothing here is hardcoded to either.
11
-
12
- **Not `blog-from-git`.** That skill drafts a dated, narrative bilko.run post from git activity
13
- ("here's what shipped this week"). This skill produces an **evergreen, single-feature product
14
- page** — no date, no changelog framing, not tied to a publishing cadence. One project, one
15
- feature, three things: what the project is for, what this feature does, and a real click-through
16
- demo of it working. The two skills never share output or ledger state.
17
-
18
- **`feature.config.yaml` in this folder is the grounding authority** for output conventions
19
- (where the HTML lands, image size/compression limits, single-file-vs-folder default, theme
20
- tokens). Read it first, before any sub-skill file. If prose here ever disagrees with the config,
21
- the config wins.
22
-
23
- ## Pipeline DAG
24
-
25
- ```
26
- project (+ optional feature name)
27
- │
28
- ▼
29
- ┌───────────────────────────────┐
30
- │ 0. blog-for-project-feature:select │──▶ one confirmed project + one confirmed feature
31
- └───────────────────────────────┘
32
- │
33
- ▼
34
- ┌───────────────────────────────┐
35
- │ 1. :research │──▶ mission, feature description, key files/entry points
36
- └───────────────────────────────┘
37
- │
38
- ▼
39
- ┌───────────────────────────────┐
40
- │ 2. :storyboard │──▶ ordered demo steps (action, expected screen, caption)
41
- └───────────────────────────────┘
42
- │
43
- ▼
44
- ┌───────────────────────────────┐
45
- │ 3. :capture │──▶ real screenshots per step (+ storyboard corrections)
46
- └───────────────────────────────┘ │ no real screenshot obtainable for a step
47
- │ all steps captured ▼
48
- ▼ STOP — report which step blocked, don't fabricate
49
- ┌───────────────────────────────┐
50
- │ 4. :draft-copy │──▶ FINAL mission/feature text + one-sentence "essence" line
51
- └───────────────────────────────┘
52
- │
53
- ▼
54
- ┌───────────────────────────────┐
55
- │ 5. :illustrate │──▶ one companion illustration from the essence line
56
- └───────────────────────────────┘ (or a clean "omitted" note — never blocks the pipeline)
57
- │
58
- ▼
59
- ┌───────────────────────────────┐
60
- │ 6. :compose │──▶ one self-contained interactive HTML file
61
- └───────────────────────────────┘
62
- │
63
- ▼
64
- ┌───────────────────────────────┐
65
- │ 7. :review │──── fails a check ────┐
66
- └───────────────────────────────┘ │
67
- │ passes │
68
- ▼ │
69
- report path, wait for explicit │
70
- "publish/upload" instruction loop back to :compose / :capture / :illustrate
71
- ```
72
-
73
- | Step | Input | Output | On failure |
74
- |---|---|---|---|
75
- | 0. `:select` | project (cwd or named) + optional feature hint | one confirmed project + one confirmed feature name + why it's demo-worthy | **STOP** — report if no clear feature can be confirmed (don't guess) |
76
- | 1. `:research` | confirmed project + feature | mission/description (project-level), feature description, key files, how it actually works | n/a — always produces notes, flags gaps explicitly rather than inventing claims |
77
- | 2. `:storyboard` | mission + feature notes | ordered list of `{step, action, expected_screen, capture_scope, caption}`, 5-10 steps, a deliberate mix of full-page and component-scoped shots | n/a — storyboard is a draft, `:capture` is allowed to correct it |
78
- | 3. `:capture` | storyboard | one real screenshot file per step + any corrected captions | **STOP** on that step — report what's missing; never substitute a placeholder/mockup image |
79
- | 4. `:draft-copy` | research notes + captured captions | final Mission & Feature Description prose + one-sentence essence line | n/a — always produces final text, gaps stay explicit |
80
- | 5. `:illustrate` | the essence line (text must exist first) | one companion illustration, tagged distinct from screenshots — or an explicit omission note | never blocks — skips cleanly if no image generator is configured, or after one off-brief retry |
81
- | 6. `:compose` | final copy + captured steps + optional illustration | one self-contained HTML file (or html+images folder per config) | loop back to `:capture` if a required image is missing, else fix and retry |
82
- | 7. `:review` | the composed HTML | pass/fail against the gate below | loop back to `:compose` (content), `:capture` (screenshot), or `:illustrate` (mislabeled companion image) — never ship on a failed gate |
83
-
84
- ## Golden rule: screenshots are real or the step doesn't exist
85
-
86
- This skill exists specifically because "feature demo" content is worthless if the images are
87
- invented, stale, or from the wrong build. `:capture` uses `mcp__playwright__*` (or the project's
88
- own screenshot tooling if `run`/a project skill already drives it — check for one first) against
89
- a running instance of the actual project. If a step can't be captured for real (app won't start,
90
- feature is behind auth you don't have, flow requires data that doesn't exist locally), **that
91
- step is dropped and reported, not faked.** A shorter, honest demo beats a complete, fabricated one.
92
-
93
- ## Output
94
-
95
- Default: one self-contained `.html` file (inline CSS/JS, base64-embedded images) written to
96
- `docs/feature-showcase/<project-slug>-<feature-slug>.html` inside **`~/Projects/Bilko`** —
97
- never inside the showcased project's own repo, even when the feature being showcased belongs
98
- to a different project entirely. Bilko is the author/publisher of every showcase (same as
99
- `blog-from-git`'s posts), is guaranteed to be locally writable across sessions, and these pages
100
- are destined to eventually post to bilko.run — so output collects in one place from the start.
101
- See `feature.config.yaml` for the exact path convention, size ceiling, and the single-file vs.
102
- folder fallback (used when embedded images would blow past the size ceiling). This is what
103
- "uploadable anywhere" means: no server, no relative asset paths, no build step — open the file
104
- or drop it on any static host and it works.
105
-
106
- **Only push, deploy, or upload when explicitly asked.** Report the local path and a one-line
107
- description of what the page shows, and wait — same convention as `blog-from-git`'s seed gate
108
- and `issue-address`'s "only push when asked" rule.
109
-
110
- ## Why nested skills instead of one inline pass
111
-
112
- Same reasoning as `issue-address` and `pr-review-sweep`: each phase is a real, independently
113
- invokable `SKILL.md` so progress is visible step by step ("storyboard produced 5 steps, capture
114
- got 4 real screenshots, 1 dropped") instead of one opaque generation pass, and a single phase
115
- (e.g. swapping the screenshot tool, changing the HTML theme) can be edited without touching the
116
- others. If a step is still doing too much once this ships, decompose it further the same way
117
- `issue-address:select` was (nested sub-DAG) — continuously, wherever one file covers too much to
118
- inspect as one unit.
119
-
120
- ## Folder map
121
-
122
- ```
123
- blog-for-project-feature/
124
- feature.config.yaml ← output path convention, size ceiling, theme tokens — read first
125
- SKILL.md ← this file: pipeline, DAG, output contract
126
- 0-select/SKILL.md
127
- 1-research/SKILL.md
128
- 2-storyboard/SKILL.md
129
- 3-capture/SKILL.md
130
- 4-draft-copy/SKILL.md
131
- 5-illustrate/SKILL.md
132
- 6-compose/SKILL.md
133
- 7-review/SKILL.md
134
- ```
135
-
136
- ## What this skill is not
137
-
138
- - Not `blog-from-git` — no dated post, no rotation ledger, no git-diff scan. This is
139
- feature-scoped and evergreen; that skill is time-scoped and narrative.
140
- - Not a marketing copy generator — every claim in `:research`'s output must trace to real code,
141
- docs, or a live screenshot, same evidentiary bar as `blog-from-git`'s `ground.md`.
142
- - Not a full site generator — one feature, one page, per run. A project with N features worth
143
- showcasing gets N runs (and, if wanted later, a separate index/landing skill — not built yet,
144
- don't invent one inline).
@@ -1,90 +0,0 @@
1
- # Grounding authority for blog-for-project-feature. Read this before any sub-skill file.
2
- # If prose in a SKILL.md ever disagrees with this file, this file wins.
3
-
4
- output:
5
- # Path is relative to ~/Projects/Bilko (the Bilko repo) — ALWAYS, regardless of which
6
- # project the showcased feature lives in. Bilko is the author/publisher of every showcase
7
- # (same reason blog-from-git's posts live in Bilko, not in the project they're about) and
8
- # these pages are destined to eventually be posted on bilko.run — Bilko is the one repo
9
- # guaranteed to be locally writable across every session this skill runs in, and keeping
10
- # output there means all showcases accumulate in one place instead of scattering across
11
- # sibling repos. Never write the HTML into the target project's own repo.
12
- base_repo: "~/Projects/Bilko"
13
- path_template: "docs/feature-showcase/{project-slug}-{feature-slug}.html"
14
- project_slug_rule: "kebab-case, the showcased project's own repo/registry slug (e.g. session-manager, signal-builder) — always prefixed so multi-project output never collides"
15
- feature_slug_rule: "kebab-case, derived from the confirmed feature name in :select"
16
- # Prefer one self-contained file. Only fall back to a folder when the size ceiling
17
- # below would be exceeded by inlining images.
18
- default_mode: single_file # single_file | folder
19
- folder_fallback_layout:
20
- html: "docs/feature-showcase/{project-slug}-{feature-slug}/index.html"
21
- images: "docs/feature-showcase/{project-slug}-{feature-slug}/screenshots/"
22
- single_file_size_ceiling_mb: 8 # switch to folder_fallback_layout above this
23
- never_upload_or_deploy_without_explicit_ask: true
24
-
25
- images:
26
- format: png
27
- max_width_px: 1600 # downscale before embedding; demo clarity, not pixel-perfect
28
- compression: "reasonable lossy ok for PNG->WebP if it keeps text legible; never so lossy captions become unreadable"
29
- source_of_truth: "mcp__playwright__browser_take_screenshot against a real running instance"
30
- placeholder_or_mockup_images: forbidden # a dropped step beats a fabricated one
31
- capture_scope: "full_page | component, chosen per step in :storyboard and executed in :capture.
32
- Full-page screenshots are not always the clearest way to show a feature — a control or state
33
- change is often clearer cropped to just that component. Default to component-scoped shots for
34
- mechanism/detail steps; reserve full_page for orientation (where the feature lives) and
35
- outcome (the result landing back in the real product) steps. See :storyboard's composition
36
- recipe for the authoritative mix."
37
-
38
- illustration:
39
- # The ONE companion image, generated by :illustrate — a distinct image class from the
40
- # click-through screenshots above. Optional: omitted cleanly if no generator is configured.
41
- runs_after: draft-copy # never generate from anything but finalized copy
42
- generator: "project-local generator if the target project has one, else Gemini
43
- (gemini-2.5-flash-image via google-genai — same provider/pattern as Burrow's
44
- app/shared/image_gen.py) using GEMINI_API_KEY / GOOGLE_API_KEY from the environment"
45
- count: 1
46
- placement: "Feature Description section header only — never inside the Click-Through Demo"
47
- format: png
48
- max_width_px: 1200
49
- style: "conceptual/editorial illustration — mood/palette should follow the project's own
50
- theme tokens above if it has brand colors, otherwise a clean flat/geometric style"
51
- must_not_resemble: "a UI mockup, screenshot, or contain invented interface text/window chrome
52
- — must be visually distinguishable from a real captured screen at a glance"
53
- max_regeneration_attempts: 1
54
- on_no_generator_available: "skip silently, no page-visible note, report to the operator only"
55
-
56
- content:
57
- sections_required:
58
- # Order matters: this IS the on-page order, top to bottom.
59
- - "Click-Through Demo" # LEADS the page — the storyboard steps, one aspect
60
- # revealed at a time; screenshot on top, caption below
61
- - "Project Mission & Description" # 2-4 sentences, from :research, project-level not feature-level
62
- - "Feature Description" # what it does, why it matters, 1-2 short paragraphs
63
- demo_interaction: "one-step-at-a-time reveal (next/prev controls or numbered tabs) — never a single long scroll dump of every screenshot at once. Each step: real image on top, caption directly below it."
64
- demo_step_count: "5-10 steps (a mix of full_page and component-scoped captures — see :storyboard's composition recipe), not a flat full-page-per-step dump"
65
- tone: "same plain, non-salesy, show-don't-tell bar as blog-from-git/voice.md bot-tell blocklist — no 'excited to share', no grand-implication filler"
66
- caption_rule: "every screenshot has a one-sentence caption naming what changed on screen, not what the code does internally"
67
-
68
- theme:
69
- # Minimal neutral tokens so every showcase looks consistent without importing a design system.
70
- # Swap these per-project only if the project has its own documented brand tokens.
71
- font_stack: "system-ui, -apple-system, 'Segoe UI', sans-serif"
72
- bg: "#0b0d10"
73
- surface: "#15181d"
74
- text: "#e8eaed"
75
- text_muted: "#9aa0a6"
76
- accent: "#5b9dff"
77
- radius_px: 10
78
- max_width_px: 900
79
-
80
- gates:
81
- # Checked in step 7 (:review). All must pass before reporting the page ready.
82
- - "every image referenced actually loads (no broken src, no 404 in a local file:// open)"
83
- - "zero placeholder/mockup images — every screenshot traces to a real :capture run"
84
- - "if present, the companion illustration sits only in the Feature Description header and is
85
- visually distinguishable from a real screenshot (no UI chrome/invented interface text)"
86
- - "all three required sections present and non-empty (illustration is optional, never gates)"
87
- - "demo is click-through (has working next/prev or tab controls), not a flat scroll"
88
- - "file opens correctly via file:// with no console errors (network calls, external CDN fonts/JS forbidden — must be fully offline-capable)"
89
- - "single_file_size_ceiling_mb respected, or folder fallback used instead"
90
- - "no invented claims — every sentence in Mission/Feature sections traces to :research notes"
@@ -1,95 +0,0 @@
1
- ---
2
- name: discover-features
3
- description: >-
4
- Propose and prototype NEW features for the current project. Reads the project's issues, PRs,
5
- `main`, and md/docs to learn its objectives, then runs THREE independent discovery sessions
6
- (each may also web-search for ideas) that every one proposes 5 high-level feature ideas best
7
- fitting the project's goals — 15 total. Synthesises and ranks them, picks the top 3, and runs a
8
- high-quality `/develop` build for each. Delivers a deployed URL per feature plus a validation
9
- checklist so the human can try them — and NEVER opens a PR or a GitHub issue from a proposed
10
- feature (the human validates first, then decides). Use when the user says "/discover-features",
11
- "propose features", "discover feature opportunities", "what should we build next", "prototype
12
- some new features for me to try". Keywords: discover, propose, feature, opportunity, ideation,
13
- prototype, what's next, roadmap.
14
- ---
15
-
16
- # /discover-features — propose → prototype → hand over URLs (no PRs)
17
-
18
- **Role:** the *generative* counterpart to `/find-opportunity`. `/find-opportunity` triages the
19
- *existing* backlog to pick the next issue to resolve; `/discover-features` *invents* net-new
20
- features the backlog doesn't contain yet, prototypes the best ones, and hands the human running
21
- URLs to validate. It is for "what should we build next?", not "which open issue next?".
22
-
23
- **Hard rules (do not violate):**
24
- - **Never open a PR or a GitHub issue** from a proposed feature. The deliverable is a *running,
25
- validatable prototype on a branch* + a URL + a validation checklist — the human decides what
26
- (if anything) becomes a PR. (See the `solve-dont-open-issues` principle.)
27
- - **No fabricated data.** Prototypes run on the project's real data layer / real queries. If a
28
- feature needs data that doesn't exist, it shows an honest empty state — never seeded fakes.
29
- - **Don't touch `main`.** Build on a fresh branch (or worktrees) off the latest `main`.
30
- - **Respect the conflict-skip sense** (from `/find-opportunity`): don't prototype something an
31
- open PR is already building.
32
-
33
- ## Phase 0 — Ground in the project's objectives
34
-
35
- Before ideating, learn what the project is *for* (so ideas fit, not just dazzle):
36
- ```bash
37
- gh issue list --state open --limit 100 --json number,title,labels
38
- gh pr list --state all --limit 60 --json number,title,headRefName,state
39
- ls docs/ README.md AGENTS.md CLAUDE.md 2>/dev/null
40
- ```
41
- Read the design docs / README / AGENTS for the mission, the north-star, the explicit
42
- non-goals/constraints, and the data model. Extract a short **objectives + constraints** brief —
43
- this is the anchor every discovery session and the ranking use.
44
-
45
- ## Phase 1 — THREE independent discovery sessions (fan-out)
46
-
47
- Spawn **3 independent agents in parallel**. Each gets the objectives brief and is told to think
48
- differently from the others (assign distinct stances, e.g. *user-value first* / *data-leverage
49
- first* / *differentiation-&-novelty first*). Each agent:
50
- - Re-reads the issues / PRs / `main` / docs itself (independent grounding, not just your brief).
51
- - **May web-search** for ideas — comparable products, domain best-practice, what peer
52
- civic/▢-tech projects ship — and bring back what genuinely fits.
53
- - Returns **exactly 5 high-level feature ideas**, each with: one-line pitch; which project
54
- objective it advances; the data/infra it leans on (must already exist or be honestly stubbable);
55
- rough surface (new route/page is preferred so it's independently deployable + validatable); a
56
- novelty/effort/impact read. Be creative — no artificial limits.
57
-
58
- 15 ideas total. Keep each agent blind to the others (diversity > consensus).
59
-
60
- ## Phase 2 — Synthesise & rank → top 3
61
-
62
- Merge the 15. De-dupe near-identicals (keep the sharpest framing). Drop anything that: an open PR
63
- already builds, needs data the project doesn't have, or is a multi-week epic that can't reach a
64
- *validatable* prototype in one build. Rank the survivors by **objective-fit × user-value ×
65
- prototype-feasibility**. Pick the **top 3**. State *why* each won and what you dropped (no silent
66
- cuts). Prefer 3 that are independently deployable (separate routes) so the human can validate each
67
- in isolation.
68
-
69
- ## Phase 3 — High-quality build of each top-3 feature
70
-
71
- For each of the 3, run a `/develop` `quality: high`-style build (deep-check → plan → implement →
72
- tests → self-validate). Build all three on **one branch** (or worktrees) so a single running app
73
- serves all three. Wire each as its own route/page where possible. Real data via real queries;
74
- honest empty states. Typecheck + the project's tests must pass before you call a feature done.
75
-
76
- ## Phase 4 — Deploy locally & hand over (NO PR)
77
-
78
- Launch the project's dev server (or preview) so the features are reachable. Deliver, per feature:
79
- - **The URL** it's live at (e.g. `http://localhost:<port>/<route>`).
80
- - **What it does** in two lines + which objective it serves.
81
- - **A validation checklist** — concrete things for the human to click/observe to judge it
82
- ("filter to sector X, confirm the sparkline matches the table total", "open on mobile width",
83
- "try an entity with no data → honest empty state").
84
- - Note any assumptions or stubs.
85
-
86
- End with: the branch name (un-pushed), the 3 URLs, and "say which to keep → I'll turn those into
87
- PRs." **Do not push or PR anything yourself.**
88
-
89
- ## Notes
90
- - This skill is token-intensive by design (3 discovery sessions + 3 builds). Run it when the user
91
- has explicitly asked for a feature-ideation+prototype round, typically as an overnight batch.
92
- - If the dev server can only serve one branch at a time, that's fine — all three features share
93
- the one branch and one server; give three routes/URLs on it.
94
- - Keep ideas anchored to the project's actual objectives — a brilliant idea that fights the
95
- mission is noise. Creativity in service of the goal, not despite it.
@@ -1,205 +0,0 @@
1
- ---
2
- name: explain-to-me
3
- description: >-
4
- Build and maintain session-manager-operations/HUMAN_LEARN/ — a human-readable,
5
- visually-rich HTML knowledge base at the repo root that explains how this
6
- project actually works. Deep-probes the codebase for a given topic/component
7
- (real file:line refs, real constants, real on-disk state — never invented),
8
- then writes or updates a clean, self-contained HTML — one combined component
9
- page (session-manager-operations/HUMAN_LEARN/index.html) plus a separate
10
- skill-chain map (session-manager-operations/HUMAN_LEARN/SKILL_MAP.html) for
11
- the local-dev workflow — with advanced CSS, flow diagrams, sticky nav,
12
- collapsible tables. Use whenever the user says "/explain-to-me X", "explain X
13
- to me", "explain how X works", "document X for me", "add X to HUMAN_LEARN",
14
- "make me a human-readable page for X", or "update the skill map". Keywords:
15
- explain, explain-to-me, human-learn, HUMAN_LEARN, skill map, document,
16
- one-pager, how does X work, visual explainer, knowledge base.
17
- model: opus
18
- ---
19
-
20
- # explain-to-me
21
-
22
- Turn a question about this codebase ("explain how the scheduler works") into a
23
- **clean, visually-rich HTML one-pager** in `session-manager-operations/HUMAN_LEARN/`
24
- at the repo root, and keep that folder's index coherent as it grows. The output
25
- is for a *human* catching up on the project — not for the model. It is the
26
- human-facing complement to the Memory tab (which is Claude's own terse recall
27
- store). All session-manager per-project operations live under
28
- `session-manager-operations/`.
29
-
30
- The bar: **clean, explanatory, visually rich, self-contained** (opens directly in
31
- a browser — no build, no external network deps). Every claim grounded in the
32
- actual code.
33
-
34
- **Document the CURRENT state, present-tense — never the journey.** A reader wants
35
- to know *what the project is and how it works right now*, not how it got there.
36
- This is a snapshot of the system as it stands today, not a changelog. So:
37
-
38
- - **No PRD numbers, ticket ids, or commit refs** ("added in PRD 66", "schema
39
- bumped to v3"). State the field/behavior as it simply *is* — `panels.ticker_metrics`
40
- *carries* an `as_of` freshness field; don't say when or why it was added.
41
- - **No evolution or "was X → now Y"** ("grew from 2 to 5 tools", "migrated off the
42
- local cache", "reborn processed"). Describe the 5 tools that exist; the prior
43
- count is irrelevant to someone reading today.
44
- - **No incident/history narrative** ("the 06-10 churn incident", "the outage that
45
- shaped this", "the bug we fixed"). If a guard exists, describe *what it guards*
46
- in the present, not the failure that motivated it.
47
- - **No migration tiers / in-flight roadmap / "gated" future work.** Document what
48
- is true now; a thing that's being retired is just "internal, not on the public
49
- surface" today.
50
-
51
- Present-tense **design rationale is fine and useful** — *why the system is shaped
52
- this way as it stands* (a tradeoff, a complexity bound, a boundary rule). That is
53
- not history. The line is: explain the *standing* reason, never the *chronology*.
54
- If you can't state it in the present tense without a date or a PRD, cut it.
55
-
56
- ## Where things live
57
-
58
- - Repo root: `git rev-parse --show-toplevel` (fall back to cwd if not a git repo).
59
- - Knowledge base: `<root>/session-manager-operations/HUMAN_LEARN/`. Create it
60
- (and `session-manager-operations/` if needed) if missing.
61
- - **One combined page** — `session-manager-operations/HUMAN_LEARN/index.html`.
62
- Every component explainer is a `<section>` in this single file, under a sticky
63
- section-nav, ordered so the page reads top-to-bottom as one narrative. A new
64
- topic becomes a **new `<section>`**, never a new file. One navigable page that
65
- logically follows itself beats a folder of thin pages; do not re-introduce
66
- per-topic `.html` files.
67
- - **The Skill Map** — `session-manager-operations/HUMAN_LEARN/SKILL_MAP.html`, a
68
- **separate, dedicated** page (NOT a section of index.html) that visualizes the
69
- *local-development skill chain*: the two intakes (interactive human prompt;
70
- human-opened Epics in the app) converging on `/develop`, which owns
71
- PRD authoring + reads `standards.md`, queues onto the scheduler, and gates with
72
- review/verify. It is the "how I build on this
73
- project" companion to index.html's "how this project works." index.html links
74
- to it from the nav; it links back.
75
-
76
- ## Workflow
77
-
78
- 0. **Self-migrate a legacy root-level folder first.** If `HUMAN_LEARN/` exists
79
- at the repo root **and** `session-manager-operations/HUMAN_LEARN/` does not,
80
- relocate it now — `mkdir -p session-manager-operations` (if needed), then
81
- `git mv HUMAN_LEARN session-manager-operations/HUMAN_LEARN` when the repo is
82
- git-tracked, else a plain `mv`. This converges any project this skill runs
83
- in to the new layout even if its bulk-relocation PRD hasn't landed yet.
84
- 1. **Locate & survey.** Find the repo root + `session-manager-operations/HUMAN_LEARN/`.
85
- If `index.html` exists, read it to see what's already documented — you are
86
- *maintaining* a knowledge base, not starting fresh. If the topic already has
87
- a page/section, you are updating it, not duplicating it.
88
- 2. **Deep-probe the topic.** Read the real code. Gather exact `file:line`
89
- references, real constant names + values, and real on-disk state where it
90
- matters (run `ls`/`cat`/`jq` to ground claims in what actually exists). For a
91
- broad topic, fan out parallel `Explore` subagents over the relevant
92
- subsystems and collect the conclusions. **Never invent** a path, constant, or
93
- behavior — if you can't verify it, don't write it.
94
- 3. **Decide placement.** A component/subsystem topic → a new (or edited) `<section>`
95
- in `index.html`, slotted into the narrative order. The dev skill chain → it's in
96
- `SKILL_MAP.html`. Re-explaining an existing topic → edit that section in place,
97
- refresh the "generated" date. Never spin up a new per-topic `.html`.
98
- 4. **Write the HTML.** Use the design system below — both pages share the same tokens
99
- and components so they read as one product. A page must be self-contained (inline
100
- `<style>`, no external fonts/scripts/CDNs). Lead with what the thing *is* and *when
101
- it runs*, then the step-by-step flow with `file:line` tags, then the knobs (a
102
- collapsible constants table), then the present-tense design rationale ("why
103
- it's shaped this way" as it *stands* — a standing tradeoff/bound, never a dated
104
- history or a PRD).
105
- 5. **Wire the navigation.** Add/refresh the topic's pill in `index.html`'s sticky
106
- section-nav (and the footer's source-file list). Keep the nav and `SKILL_MAP.html`
107
- cross-links intact: index.html's nav has a "⛓ Skill Map ↗" link, SKILL_MAP.html's
108
- nav links back to "📖 HUMAN_LEARN".
109
- 6. **Maintain the Skill Map.** When the local-dev skills/commands change — a new skill
110
- in `~/.claude/skills/`, a changed Role/Never contract, a re-routed step in the
111
- chain — refresh `SKILL_MAP.html` (its chain diagram + the role-contract table +
112
- the two walkthroughs) so it stays a faithful map of the actual files on disk.
113
- 7. **Tell the user the path** to open (`session-manager-operations/HUMAN_LEARN/index.html`
114
- or `session-manager-operations/HUMAN_LEARN/SKILL_MAP.html`, optionally with a
115
- `#anchor`). Do not commit unless asked.
116
-
117
- ## Grounding rules (non-negotiable)
118
-
119
- - Every behavioral claim cites a real `file:line`. Spot-check by reading the
120
- cited line before writing it.
121
- - Constants show their real values from the source, not approximations.
122
- - "On disk" claims are verified with a real command first.
123
- - If two sources disagree (e.g. a stale CLAUDE.md vs the code), trust the code
124
- and note the discrepancy.
125
-
126
- ## Maintenance
127
-
128
- - Idempotent: re-running for the same topic updates that `<section>` (and its nav
129
- pill) in place — it never appends a duplicate or spawns a new file.
130
- - Never clobber unrelated sections. Edit the one section the topic owns.
131
- - Refresh the footer "generated <date>" and the source-file list on each update.
132
- - HUMAN_LEARN holds exactly two pages: `index.html` (components, one combined page)
133
- and `SKILL_MAP.html` (the dev skill chain). They cross-link via their navs. Don't
134
- add a third page.
135
-
136
- ## Design system
137
-
138
- Reuse these tokens and patterns verbatim so every page looks like one product.
139
- A complete, copy-ready exemplar lives at `assets/style-reference.html` next to
140
- this file — **read it and mirror its structure/CSS** for any new page. The
141
- essentials:
142
-
143
- **Palette + base** (inline `<style>`, dark theme):
144
-
145
- ```css
146
- :root{
147
- --bg:#0d1117; --panel:#161b22; --panel2:#1c2330; --line:#2d333b;
148
- --fg:#e6edf3; --dim:#9da7b3; --faint:#6e7681;
149
- --blue:#60a5fa; --green:#34d399; --amber:#fbbf24; --violet:#a78bfa;
150
- --pink:#f472b6; --red:#f87171; --cyan:#22d3ee;
151
- --mono:ui-monospace,'SF Mono',Menlo,Consolas,monospace;
152
- }
153
- *{box-sizing:border-box;margin:0;padding:0}
154
- html{scroll-behavior:smooth}
155
- body{background:var(--bg);color:var(--fg);
156
- font:15px/1.6 ui-sans-serif,system-ui,sans-serif;padding:0 20px 80px}
157
- .wrap{max-width:980px;margin:0 auto}
158
- code{font-family:var(--mono);font-size:12.5px;background:var(--panel2);
159
- border:1px solid var(--line);border-radius:4px;padding:1px 5px}
160
- pre{font-family:var(--mono);font-size:12px;background:var(--panel);
161
- border:1px solid var(--line);border-radius:8px;padding:14px 16px;overflow-x:auto}
162
- ```
163
-
164
- **Component patterns** (use the ones the topic needs — don't force all of them):
165
-
166
- - **`.loc` chip** — a cyan monospace pill for every `file:line` reference. This is
167
- the signature element: claims are traceable.
168
- `font:11px var(--mono);color:var(--cyan);background:rgba(34,211,238,.08);
169
- border:1px solid rgba(34,211,238,.25);border-radius:99px;padding:1px 9px`
170
- - **`.proc` badge** — colored uppercase pill marking *where* a step runs
171
- (e.g. shell hook / main process / subprocess / renderer / disk / network). One
172
- color per layer; show a legend once near the top.
173
- - **Sticky section nav** — for multi-section pages: a `position:sticky;top:0`
174
- bar with `backdrop-filter:blur(6px)` and pill links to each `#section`.
175
- - **Flow diagram** — a horizontal row of `.box` cards joined by `→` arrows for a
176
- pipeline, OR a numbered vertical "stage" stack for a deeper step-by-step. Each
177
- box: a title, a one-line what, and a `.where` `file:line`. Color the top border
178
- by the layer it runs in.
179
- - **Stat strip** — a row of big-number cards for the load-bearing figures
180
- (counts, caps, sizes) pulled from real state.
181
- - **Callout** — left-border tinted block for "the key insight" / "the caveat"
182
- (`.ok` green, `.bad` red, default amber).
183
- - **Collapsible constants table** — `<details><summary>` wrapping a table of
184
- `constant · value · file:line · what it bounds`. Keeps the page scannable.
185
- - **Two-column rationale** — a `grid-template-columns:1fr 1fr` "why it's shaped
186
- this way" section, collapsing to one column under `@media(max-width:760px)`.
187
- - **Footer** — muted, lists the exact source files the page was distilled from +
188
- "generated <date>".
189
-
190
- **Advanced techniques to deploy** (tasteful, not gratuitous): CSS grid layouts,
191
- `position:sticky` nav, `scroll-behavior:smooth` + anchor links, `backdrop-filter`,
192
- `<details>`/`<summary>` for progressive disclosure, responsive `@media`
193
- breakpoints, CSS-only flow diagrams (borders + flex, no images), subtle
194
- `transition`/`:hover` affordances on cards. **No** external fonts, scripts, CDNs,
195
- or build step — every page is one self-contained `.html` file.
196
-
197
- ## What good looks like
198
-
199
- Lead with the outcome (what the thing *is*, when it runs). Make the flow the
200
- centerpiece. Tag everything with `file:line`. Surface the real numbers. Give the
201
- present-tense design rationale where it helps (the *standing* tradeoff or
202
- constraint that makes the shape make sense) — but **no chronology**: no PRD
203
- numbers, no "was X → now Y", no incident/migration history, no roadmap. A reader
204
- should learn what the project *is* today, not how it got here. Keep prose tight
205
- and in complete sentences — visually rich, not noisy.