claude-code-session-manager 0.110.0 → 0.112.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 (283) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/dist/assets/{AgentLibrary-Cm6MrOnF.js → AgentLibrary-RwPvEgqm.js} +2 -2
  3. package/dist/assets/{Button-CGVncJ6a.js → Button-36j3PzYv.js} +1 -1
  4. package/dist/assets/{DataModel-C3hlMoa8.js → DataModel-DUhANo4l.js} +1 -1
  5. package/dist/assets/{History-CTyfGNKn.js → History-BeZzNjmv.js} +2 -2
  6. package/dist/assets/{Hooks-BXxCBibx.js → Hooks-iQ8845Hp.js} +3 -3
  7. package/dist/assets/{Library-aCs7zxAg.js → Library-DPE1h-1L.js} +6 -6
  8. package/dist/assets/{ListDetail-B9Hqk1_f.js → ListDetail-PStOuQAo.js} +1 -1
  9. package/dist/assets/{MarkdownEditor-Djfgp32k.js → MarkdownEditor-DPw-N2-m.js} +1 -1
  10. package/dist/assets/{McpServers-8HQC6QgR.js → McpServers-CUyRTNep.js} +2 -2
  11. package/dist/assets/{Memory-c4SVE3l2.js → Memory-bZ2xjBGy.js} +3 -3
  12. package/dist/assets/{Panel-BEQTwE4z.js → Panel-_VZ_uXNg.js} +1 -1
  13. package/dist/assets/{Permissions-BaYzgZtc.js → Permissions-PPRmfNbK.js} +3 -3
  14. package/dist/assets/{Plugins-DnXsVau7.js → Plugins-BFcvfvlx.js} +2 -2
  15. package/dist/assets/{ProvenanceBadge-CT2vWps1.js → ProvenanceBadge-B1WUknak.js} +1 -1
  16. package/dist/assets/RemoteMachines-D5V0lzgW.js +3 -0
  17. package/dist/assets/{SaveBar-DwcHt3iR.js → SaveBar-Dw64FVdM.js} +1 -1
  18. package/dist/assets/{Scheduler-D6Gcuo0M.js → Scheduler-C8s_pJ3I.js} +9 -9
  19. package/dist/assets/{ScopeSwitcher-CgvWDc9Y.js → ScopeSwitcher-D-nKDMAE.js} +1 -1
  20. package/dist/assets/{Settings-CJoogVAB.js → Settings-CQSrR4mO.js} +4 -4
  21. package/dist/assets/{SkillReferenceGraph-4fq01kxq.js → SkillReferenceGraph-BbZFMHim.js} +1 -1
  22. package/dist/assets/{Skills-BU4ZX4h4.js → Skills-Bzyrh6EQ.js} +1 -1
  23. package/dist/assets/SystemPrompt-DP6i3Dx0.js +1 -0
  24. package/dist/assets/TagLibrary-iip0C6Bl.js +1 -0
  25. package/dist/assets/{TiptapBody-DVyBsfsT.js → TiptapBody-Cr-hxX8L.js} +1 -1
  26. package/dist/assets/Toggle-7WpPzcZH.js +1 -0
  27. package/dist/assets/{ViewTabs-BLHjKUv-.js → ViewTabs-9lQCRwWJ.js} +1 -1
  28. package/dist/assets/{historyTotals-BXDd3EzP.js → historyTotals-BrFxw5J1.js} +1 -1
  29. package/dist/assets/{index-CuiU3I-8.js → index-CTBpf-26.js} +250 -249
  30. package/dist/assets/{settingsSchema-DD4bc5cT.js → settingsSchema-Dh5Kl7VO.js} +1 -1
  31. package/dist/assets/{useAgentsDirWatch-DMQ_XZtr.js → useAgentsDirWatch-CMpx0d04.js} +1 -1
  32. package/dist/assets/{useRemotePeers-C9NfteSD.js → useRemotePeers-CI2axd-L.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/scripts/README.md +3 -3
  42. package/scripts/audit-ops-hygiene.cjs +4 -4
  43. package/scripts/hooks/guard-destructive-git.cjs +4 -4
  44. package/scripts/hooks/guard-inline-implementation.cjs +1 -1
  45. package/scripts/hooks/guard-prd-writes.cjs +2 -2
  46. package/scripts/hooks/lib/guard-destructive-git-policy.cjs +1 -1
  47. package/scripts/mint-epic.cjs +2 -2
  48. package/scripts/scheduler-mcp-server.cjs +4 -4
  49. package/src/main/agentLibrary.cjs +5 -5
  50. package/src/main/agentsIpc.cjs +76 -0
  51. package/src/main/build-info.json +4 -4
  52. package/src/main/chatRunner.cjs +12 -12
  53. package/src/main/config.cjs +2 -2
  54. package/src/main/crashDiagnostics.cjs +2 -2
  55. package/src/main/docEdit.cjs +5 -5
  56. package/src/main/files.cjs +2 -2
  57. package/src/main/git.cjs +1 -1
  58. package/src/main/health.cjs +20 -18
  59. package/src/main/heapSnapshot.cjs +1 -1
  60. package/src/main/historyAggregator.cjs +2 -2
  61. package/src/main/index.cjs +44 -132
  62. package/src/main/ipcSchemas.cjs +10 -10
  63. package/src/main/lib/CLAUDE.md +48 -0
  64. package/src/main/lib/activeSessions.cjs +1 -1
  65. package/src/main/lib/classifyPromptTicket.cjs +2 -2
  66. package/src/main/lib/{agentModelResolve.cjs → claude/agentModelResolve.cjs} +7 -7
  67. package/src/main/lib/{claudeBin.cjs → claude/claudeBin.cjs} +4 -4
  68. package/src/main/lib/{effectiveModelInfo.cjs → claude/effectiveModelInfo.cjs} +9 -9
  69. package/src/main/lib/{modelCatalog.cjs → claude/modelCatalog.cjs} +3 -3
  70. package/src/main/lib/{rateLimitDetect.cjs → claude/rateLimitDetect.cjs} +1 -1
  71. package/src/main/lib/{rateLimitWindow.cjs → claude/rateLimitWindow.cjs} +1 -1
  72. package/src/main/lib/{runClaudeP.cjs → claude/runClaudeP.cjs} +1 -1
  73. package/src/main/lib/credentials.cjs +3 -3
  74. package/src/main/lib/cwdClassify.cjs +1 -1
  75. package/src/main/lib/{activeIndexMerge.cjs → epic/activeIndexMerge.cjs} +3 -3
  76. package/src/main/lib/{activeIndexRebuild.cjs → epic/activeIndexRebuild.cjs} +1 -1
  77. package/src/main/lib/{delegationReadiness.cjs → epic/delegationReadiness.cjs} +21 -29
  78. package/src/main/lib/{epicContextDigest.cjs → epic/epicContextDigest.cjs} +1 -1
  79. package/src/main/lib/{epicDelegationStats.cjs → epic/epicDelegationStats.cjs} +2 -2
  80. package/src/main/lib/{epicMint.cjs → epic/epicMint.cjs} +11 -11
  81. package/src/main/lib/{epicSpawnPlan.cjs → epic/epicSpawnPlan.cjs} +3 -3
  82. package/src/main/lib/{epicStatusMirror.cjs → epic/epicStatusMirror.cjs} +2 -2
  83. package/src/main/lib/{epicTranscriptDiagnostic.cjs → epic/epicTranscriptDiagnostic.cjs} +2 -2
  84. package/src/main/lib/{epicTranscriptPath.cjs → epic/epicTranscriptPath.cjs} +2 -2
  85. package/src/main/lib/{epicValidationHook.cjs → epic/epicValidationHook.cjs} +3 -3
  86. package/src/main/lib/{epicWorktreeBoot.cjs → epic/epicWorktreeBoot.cjs} +1 -1
  87. package/src/main/lib/{epicWorktreeMerge.cjs → epic/epicWorktreeMerge.cjs} +3 -3
  88. package/src/main/lib/{epicWorktreeMint.cjs → epic/epicWorktreeMint.cjs} +3 -3
  89. package/src/main/lib/{epicWorktreeProjectConfig.cjs → epic/epicWorktreeProjectConfig.cjs} +4 -4
  90. package/src/main/lib/{promptSessionsCreateEpic.cjs → epic/promptSessionsCreateEpic.cjs} +4 -4
  91. package/src/main/lib/{crossProjectFeedback.cjs → feedback-remote/crossProjectFeedback.cjs} +7 -7
  92. package/src/main/lib/{customerFeedbackClient.cjs → feedback-remote/customerFeedbackClient.cjs} +3 -3
  93. package/src/main/lib/{customerFeedbackInbox.cjs → feedback-remote/customerFeedbackInbox.cjs} +2 -2
  94. package/src/main/lib/{customerFeedbackIpc.cjs → feedback-remote/customerFeedbackIpc.cjs} +1 -1
  95. package/src/main/lib/{localAdminHttp.cjs → feedback-remote/localAdminHttp.cjs} +2 -2
  96. package/src/main/lib/{macroAdminRoutes.cjs → feedback-remote/macroAdminRoutes.cjs} +1 -1
  97. package/src/main/lib/{projectHomeAdminRoutes.cjs → feedback-remote/projectHomeAdminRoutes.cjs} +4 -4
  98. package/src/main/lib/{relayClientAuth.cjs → feedback-remote/relayClientAuth.cjs} +2 -2
  99. package/src/main/lib/{remoteClientSessions.cjs → feedback-remote/remoteClientSessions.cjs} +1 -1
  100. package/src/main/lib/{gitWorktree.cjs → git/gitWorktree.cjs} +7 -7
  101. package/src/main/lib/historyRollup.cjs +1 -1
  102. package/src/main/lib/importReferences.cjs +1 -1
  103. package/src/main/lib/machineProfile.cjs +1 -1
  104. package/src/main/lib/openExternalApp.cjs +1 -1
  105. package/src/main/lib/opsOwnership.cjs +3 -3
  106. package/src/main/lib/{agentPersonaSchema.cjs → persona-macro/agentPersonaSchema.cjs} +2 -2
  107. package/src/main/lib/{builtinMacros.cjs → persona-macro/builtinMacros.cjs} +2 -2
  108. package/src/main/lib/{macroLibrary.cjs → persona-macro/macroLibrary.cjs} +5 -5
  109. package/src/main/lib/{personaMerge.cjs → persona-macro/personaMerge.cjs} +4 -4
  110. package/src/main/lib/{shippedPersonaSeeds.cjs → persona-macro/shippedPersonaSeeds.cjs} +11 -0
  111. package/src/main/lib/{prdAdminRoutes.cjs → prd/prdAdminRoutes.cjs} +7 -7
  112. package/src/main/lib/{prdAgentType.cjs → prd/prdAgentType.cjs} +3 -3
  113. package/src/main/lib/{prdCreate.cjs → prd/prdCreate.cjs} +12 -12
  114. package/src/main/lib/{prdDeclaredPaths.cjs → prd/prdDeclaredPaths.cjs} +1 -1
  115. package/src/main/lib/{prdGateFiles.cjs → prd/prdGateFiles.cjs} +1 -1
  116. package/src/main/lib/{prdLocations.cjs → prd/prdLocations.cjs} +2 -2
  117. package/src/main/lib/{prdMigration.cjs → prd/prdMigration.cjs} +3 -3
  118. package/src/main/lib/prereqs.cjs +2 -2
  119. package/src/main/lib/{instanceLock.cjs → process/instanceLock.cjs} +4 -11
  120. package/src/main/lib/{pidAlive.cjs → process/pidAlive.cjs} +1 -1
  121. package/src/main/lib/{procName.cjs → process/procName.cjs} +2 -2
  122. package/src/main/lib/{timeoutShim.cjs → process/timeoutShim.cjs} +1 -1
  123. package/src/main/lib/projectRootResolve.cjs +1 -1
  124. package/src/main/lib/promptSessionSchema.cjs +1 -1
  125. package/src/main/lib/{definitionOfDone.cjs → scheduler/definitionOfDone.cjs} +6 -12
  126. package/src/main/lib/{fixChainDepth.cjs → scheduler/fixChainDepth.cjs} +1 -1
  127. package/src/main/lib/{jobDirtFilter.cjs → scheduler/jobDirtFilter.cjs} +1 -1
  128. package/src/main/lib/{jobSupervisorRecord.cjs → scheduler/jobSupervisorRecord.cjs} +1 -1
  129. package/src/main/lib/{launchFailure.cjs → scheduler/launchFailure.cjs} +2 -2
  130. package/src/main/lib/{queueStore.cjs → scheduler/queueStore.cjs} +6 -6
  131. package/src/main/lib/{quietMachineLease.cjs → scheduler/quietMachineLease.cjs} +1 -1
  132. package/src/main/lib/{rcaReport.cjs → scheduler/rcaReport.cjs} +4 -4
  133. package/src/main/lib/{reaperHelpers.cjs → scheduler/reaperHelpers.cjs} +3 -3
  134. package/src/main/lib/{reservationExpiry.cjs → scheduler/reservationExpiry.cjs} +4 -11
  135. package/src/main/lib/{reviewNotice.cjs → scheduler/reviewNotice.cjs} +1 -1
  136. package/src/main/lib/{scheduleJobTransitions.cjs → scheduler/scheduleJobTransitions.cjs} +3 -3
  137. package/src/main/lib/{schedulerBatch.cjs → scheduler/schedulerBatch.cjs} +2 -2
  138. package/src/main/lib/{schedulerConfig.cjs → scheduler/schedulerConfig.cjs} +1 -1
  139. package/src/main/lib/{schedulerRuntimeState.cjs → scheduler/schedulerRuntimeState.cjs} +1 -1
  140. package/src/main/lib/{sessionSlots.cjs → scheduler/sessionSlots.cjs} +2 -2
  141. package/src/main/lib/{upgradeDrain.cjs → scheduler/upgradeDrain.cjs} +8 -11
  142. package/src/main/lib/{watchdogHelpers.cjs → scheduler/watchdogHelpers.cjs} +5 -19
  143. package/src/main/lib/{auditLog.cjs → telemetry/auditLog.cjs} +1 -1
  144. package/src/main/lib/{opsErrorLog.cjs → telemetry/opsErrorLog.cjs} +4 -4
  145. package/src/main/lib/{telemetryBacklog.cjs → telemetry/telemetryBacklog.cjs} +4 -4
  146. package/src/main/lib/{telemetryBoot.cjs → telemetry/telemetryBoot.cjs} +1 -1
  147. package/src/main/lib/{telemetryClient.cjs → telemetry/telemetryClient.cjs} +4 -4
  148. package/src/main/lib/{telemetrySettings.cjs → telemetry/telemetrySettings.cjs} +1 -1
  149. package/src/main/logs.cjs +1 -1
  150. package/src/main/mcpStatus.cjs +2 -2
  151. package/src/main/memoryAggregate.cjs +3 -3
  152. package/src/main/memoryTool.cjs +1 -1
  153. package/src/main/otel.cjs +2 -2
  154. package/src/main/pluginInstall.cjs +29 -3
  155. package/src/main/projectBrief.cjs +6 -6
  156. package/src/main/projectPages.cjs +1 -1
  157. package/src/main/promptSessionEvents.cjs +2 -2
  158. package/src/main/pty.cjs +7 -7
  159. package/src/main/queueOps.cjs +6 -6
  160. package/src/main/remoteClient.cjs +4 -4
  161. package/src/main/remoteClientIpc.cjs +1 -1
  162. package/src/main/runVerify.cjs +1 -1
  163. package/src/main/scheduler/CLAUDE.md +26 -0
  164. package/src/main/scheduler/budget.cjs +576 -0
  165. package/src/main/scheduler/gitTreeGuard.cjs +672 -0
  166. package/src/main/scheduler/prdParser.cjs +4 -4
  167. package/src/main/scheduler/prdPaths.cjs +487 -0
  168. package/src/main/scheduler/reviewLadder.cjs +1011 -0
  169. package/src/main/scheduler/starvation.cjs +390 -0
  170. package/src/main/scheduler.cjs +289 -3311
  171. package/src/main/seedAgentPersonas.cjs +5 -5
  172. package/src/main/seedDevPlugin.cjs +70 -3
  173. package/src/main/seedSchedulerMcp.cjs +2 -2
  174. package/src/main/supervisor.cjs +5 -5
  175. package/src/main/telemetryIpc.cjs +51 -0
  176. package/src/main/transcripts.cjs +3 -3
  177. package/src/main/updaterIpc.cjs +1 -1
  178. package/src/main/usage.cjs +1 -1
  179. package/src/main/watchers.cjs +1 -1
  180. package/src/main/webRemote.cjs +7 -7
  181. package/src/preload/api.d.ts +8 -8
  182. package/src/preload/index.cjs +3 -3
  183. package/src/seed/agents/demo-video-builder.md +62 -19
  184. package/dist/assets/RemoteMachines-DHJZfdJC.js +0 -3
  185. package/dist/assets/SystemPrompt-BCEyMSEq.js +0 -1
  186. package/dist/assets/TagLibrary-m3It8Oal.js +0 -1
  187. package/dist/assets/Toggle-In_AExPV.js +0 -1
  188. package/plugins/session-manager-dev/skills/blog-for-project-feature/0-select/SKILL.md +0 -39
  189. package/plugins/session-manager-dev/skills/blog-for-project-feature/1-research/SKILL.md +0 -37
  190. package/plugins/session-manager-dev/skills/blog-for-project-feature/2-storyboard/SKILL.md +0 -64
  191. package/plugins/session-manager-dev/skills/blog-for-project-feature/3-capture/SKILL.md +0 -52
  192. package/plugins/session-manager-dev/skills/blog-for-project-feature/4-draft-copy/SKILL.md +0 -37
  193. package/plugins/session-manager-dev/skills/blog-for-project-feature/5-illustrate/SKILL.md +0 -50
  194. package/plugins/session-manager-dev/skills/blog-for-project-feature/6-compose/SKILL.md +0 -51
  195. package/plugins/session-manager-dev/skills/blog-for-project-feature/7-review/SKILL.md +0 -54
  196. package/plugins/session-manager-dev/skills/blog-for-project-feature/SKILL.md +0 -144
  197. package/plugins/session-manager-dev/skills/blog-for-project-feature/feature.config.yaml +0 -90
  198. package/plugins/session-manager-dev/skills/discover-features/SKILL.md +0 -95
  199. package/plugins/session-manager-dev/skills/explain-to-me/SKILL.md +0 -205
  200. package/plugins/session-manager-dev/skills/explain-to-me/assets/style-reference.html +0 -163
  201. package/plugins/session-manager-dev/skills/find-opportunity/SKILL.md +0 -83
  202. package/plugins/session-manager-dev/skills/issue-address/0-select/0-fetch-pool/SKILL.md +0 -38
  203. package/plugins/session-manager-dev/skills/issue-address/0-select/1-reject-fixed/SKILL.md +0 -64
  204. package/plugins/session-manager-dev/skills/issue-address/0-select/2-reject-claimed/SKILL.md +0 -71
  205. package/plugins/session-manager-dev/skills/issue-address/0-select/3-rank-impact/SKILL.md +0 -39
  206. package/plugins/session-manager-dev/skills/issue-address/0-select/SKILL.md +0 -75
  207. package/plugins/session-manager-dev/skills/issue-address/1-confirm-open/SKILL.md +0 -39
  208. package/plugins/session-manager-dev/skills/issue-address/2-claim/SKILL.md +0 -57
  209. package/plugins/session-manager-dev/skills/issue-address/3-reproduce/SKILL.md +0 -40
  210. package/plugins/session-manager-dev/skills/issue-address/4-fix/SKILL.md +0 -33
  211. package/plugins/session-manager-dev/skills/issue-address/5-verify/SKILL.md +0 -40
  212. package/plugins/session-manager-dev/skills/issue-address/SKILL.md +0 -120
  213. package/plugins/session-manager-dev/skills/local-project-health/SKILL.md +0 -58
  214. package/plugins/session-manager-dev/skills/memory-sanitation/SKILL.md +0 -147
  215. package/plugins/session-manager-dev/skills/ops-sweep/SKILL.md +0 -137
  216. package/plugins/session-manager-dev/skills/pr-review-sweep/0-fetch/SKILL.md +0 -41
  217. package/plugins/session-manager-dev/skills/pr-review-sweep/1-classify/SKILL.md +0 -56
  218. package/plugins/session-manager-dev/skills/pr-review-sweep/2-check-fixed/SKILL.md +0 -49
  219. package/plugins/session-manager-dev/skills/pr-review-sweep/3-queue/SKILL.md +0 -57
  220. package/plugins/session-manager-dev/skills/pr-review-sweep/4-land-and-resolve/SKILL.md +0 -60
  221. package/plugins/session-manager-dev/skills/pr-review-sweep/SKILL.md +0 -124
  222. package/plugins/session-manager-dev/skills/pr-signal/SKILL.md +0 -67
  223. package/plugins/session-manager-dev/skills/project-status/SKILL.md +0 -243
  224. package/plugins/session-manager-dev/skills/requesting-code-review/SKILL.md +0 -98
  225. package/plugins/session-manager-dev/skills/requesting-code-review/code-reviewer.md +0 -146
  226. /package/src/main/lib/{agentEffortResolve.cjs → claude/agentEffortResolve.cjs} +0 -0
  227. /package/src/main/lib/{claudeCliCaps.cjs → claude/claudeCliCaps.cjs} +0 -0
  228. /package/src/main/lib/{usageCircuit.cjs → claude/usageCircuit.cjs} +0 -0
  229. /package/src/main/lib/{epicSpawnCwd.cjs → epic/epicSpawnCwd.cjs} +0 -0
  230. /package/src/main/lib/{customerFeedbackAdminRoutes.cjs → feedback-remote/customerFeedbackAdminRoutes.cjs} +0 -0
  231. /package/src/main/lib/{remoteE2eCrypto.cjs → feedback-remote/remoteE2eCrypto.cjs} +0 -0
  232. /package/src/main/lib/{branchSweep.cjs → git/branchSweep.cjs} +0 -0
  233. /package/src/main/lib/{gitExec.cjs → git/gitExec.cjs} +0 -0
  234. /package/src/main/lib/{jobWorktree.cjs → git/jobWorktree.cjs} +0 -0
  235. /package/src/main/lib/{jobWorktreeBootLive.cjs → git/jobWorktreeBootLive.cjs} +0 -0
  236. /package/src/main/lib/{jobWorktreeTerminalOrphanLive.cjs → git/jobWorktreeTerminalOrphanLive.cjs} +0 -0
  237. /package/src/main/lib/{personaImportHealth.cjs → persona-macro/personaImportHealth.cjs} +0 -0
  238. /package/src/main/lib/{depSlugResolve.cjs → prd/depSlugResolve.cjs} +0 -0
  239. /package/src/main/lib/{planValidator.cjs → prd/planValidator.cjs} +0 -0
  240. /package/src/main/lib/{prdAuthoringSeed.cjs → prd/prdAuthoringSeed.cjs} +0 -0
  241. /package/src/main/lib/{prdDisposition.cjs → prd/prdDisposition.cjs} +0 -0
  242. /package/src/main/lib/{prdFrontmatter.cjs → prd/prdFrontmatter.cjs} +0 -0
  243. /package/src/main/lib/{prdSizing.cjs → prd/prdSizing.cjs} +0 -0
  244. /package/src/main/lib/{workTypeLibrary.cjs → prd/workTypeLibrary.cjs} +0 -0
  245. /package/src/main/lib/{childWithLog.cjs → process/childWithLog.cjs} +0 -0
  246. /package/src/main/lib/{cleanEnv.cjs → process/cleanEnv.cjs} +0 -0
  247. /package/src/main/lib/{defaultShell.cjs → process/defaultShell.cjs} +0 -0
  248. /package/src/main/lib/{killTree.cjs → process/killTree.cjs} +0 -0
  249. /package/src/main/lib/{loginShellPath.cjs → process/loginShellPath.cjs} +0 -0
  250. /package/src/main/lib/{procIdentity.cjs → process/procIdentity.cjs} +0 -0
  251. /package/src/main/lib/{singleInstanceGuard.cjs → process/singleInstanceGuard.cjs} +0 -0
  252. /package/src/main/lib/{smProcNames.cjs → process/smProcNames.cjs} +0 -0
  253. /package/src/main/lib/{timeoutShimScript.cjs → process/timeoutShimScript.cjs} +0 -0
  254. /package/src/main/lib/{winSpawn.cjs → process/winSpawn.cjs} +0 -0
  255. /package/src/main/lib/{adoptedRunSupervisor.cjs → scheduler/adoptedRunSupervisor.cjs} +0 -0
  256. /package/src/main/lib/{dispatchLoop.cjs → scheduler/dispatchLoop.cjs} +0 -0
  257. /package/src/main/lib/{dodDrainHook.cjs → scheduler/dodDrainHook.cjs} +0 -0
  258. /package/src/main/lib/{fixPlanSlug.cjs → scheduler/fixPlanSlug.cjs} +0 -0
  259. /package/src/main/lib/{gateAuthority.cjs → scheduler/gateAuthority.cjs} +0 -0
  260. /package/src/main/lib/{landedSinceRun.cjs → scheduler/landedSinceRun.cjs} +0 -0
  261. /package/src/main/lib/{loadGate.cjs → scheduler/loadGate.cjs} +0 -0
  262. /package/src/main/lib/{needsReviewLedger.cjs → scheduler/needsReviewLedger.cjs} +0 -0
  263. /package/src/main/lib/{queueHealth.cjs → scheduler/queueHealth.cjs} +0 -0
  264. /package/src/main/lib/{queueHistory.cjs → scheduler/queueHistory.cjs} +0 -0
  265. /package/src/main/lib/{runLogRetention.cjs → scheduler/runLogRetention.cjs} +0 -0
  266. /package/src/main/lib/{scheduleJobSchema.cjs → scheduler/scheduleJobSchema.cjs} +0 -0
  267. /package/src/main/lib/{schedulerPaths.cjs → scheduler/schedulerPaths.cjs} +0 -0
  268. /package/src/main/lib/{terminalRunOutcome.cjs → scheduler/terminalRunOutcome.cjs} +0 -0
  269. /package/src/main/lib/{validationSentinels.cjs → scheduler/validationSentinels.cjs} +0 -0
  270. /package/src/main/lib/{crashTelemetry.cjs → telemetry/crashTelemetry.cjs} +0 -0
  271. /package/src/main/lib/{otlpTraceExporter.cjs → telemetry/otlpTraceExporter.cjs} +0 -0
  272. /package/src/main/lib/{telemetryConsent.cjs → telemetry/telemetryConsent.cjs} +0 -0
  273. /package/src/main/lib/{telemetryCounters.cjs → telemetry/telemetryCounters.cjs} +0 -0
  274. /package/src/main/lib/{atomicFs.cjs → util/atomicFs.cjs} +0 -0
  275. /package/src/main/lib/{encodeCwd.cjs → util/encodeCwd.cjs} +0 -0
  276. /package/src/main/lib/{expandHome.cjs → util/expandHome.cjs} +0 -0
  277. /package/src/main/lib/{extractJson.cjs → util/extractJson.cjs} +0 -0
  278. /package/src/main/lib/{fileTail.cjs → util/fileTail.cjs} +0 -0
  279. /package/src/main/lib/{headTailBuffer.cjs → util/headTailBuffer.cjs} +0 -0
  280. /package/src/main/lib/{kebabCase.cjs → util/kebabCase.cjs} +0 -0
  281. /package/src/main/lib/{loopDelay.cjs → util/loopDelay.cjs} +0 -0
  282. /package/src/main/lib/{lruCache.cjs → util/lruCache.cjs} +0 -0
  283. /package/src/main/lib/{withTimeout.cjs → util/withTimeout.cjs} +0 -0
@@ -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.
@@ -1,163 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>explain-to-me · style reference (copy this)</title>
7
- <!--
8
- STYLE REFERENCE for the /explain-to-me skill.
9
- This is a complete, self-contained exemplar page. When writing a HUMAN_LEARN
10
- page, mirror this structure and CSS. Replace the placeholder "Widget Pipeline"
11
- content with the real, file:line-grounded explanation of the user's topic.
12
- Every component below is optional — use the ones the topic needs.
13
- -->
14
- <style>
15
- :root{
16
- --bg:#0d1117; --panel:#161b22; --panel2:#1c2330; --line:#2d333b;
17
- --fg:#e6edf3; --dim:#9da7b3; --faint:#6e7681;
18
- --blue:#60a5fa; --green:#34d399; --amber:#fbbf24; --violet:#a78bfa;
19
- --pink:#f472b6; --red:#f87171; --cyan:#22d3ee;
20
- --mono:ui-monospace,'SF Mono',Menlo,Consolas,monospace;
21
- }
22
- *{box-sizing:border-box;margin:0;padding:0}
23
- html{scroll-behavior:smooth}
24
- body{background:var(--bg);color:var(--fg);font:15px/1.6 ui-sans-serif,system-ui,sans-serif;padding:0 20px 80px}
25
- .wrap{max-width:980px;margin:0 auto}
26
- a{color:var(--blue);text-decoration:none} a:hover{text-decoration:underline}
27
- .crumb{font-size:12px;color:var(--faint);margin:24px 0 14px}
28
- h1{font-size:28px;letter-spacing:-.5px;margin-top:26px}
29
- .sub{color:var(--dim);margin:8px 0 6px;max-width:780px}
30
- h2{font-size:22px;margin:44px 0 12px;padding-top:18px;border-top:1px solid var(--line)}
31
- h3{font-size:16px;margin:24px 0 8px}
32
- p{margin:8px 0;color:var(--dim)} p strong,li strong{color:var(--fg)}
33
- ul.tight{margin:6px 0 6px 20px;color:var(--dim);font-size:13.5px} ul.tight li{margin:4px 0}
34
- code{font-family:var(--mono);font-size:12.5px;background:var(--panel2);border:1px solid var(--line);border-radius:4px;padding:1px 5px;color:var(--fg);white-space:nowrap}
35
- pre{font-family:var(--mono);font-size:12px;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:14px 16px;overflow-x:auto;margin:10px 0;line-height:1.55}
36
- pre code{background:none;border:none;padding:0;white-space:pre}
37
-
38
- /* signature element: every file:line reference is a traceable chip */
39
- .loc{font-family:var(--mono);font-size:11px;color:var(--cyan);background:rgba(34,211,238,.08);border:1px solid rgba(34,211,238,.25);border-radius:99px;padding:1px 9px;white-space:nowrap}
40
-
41
- /* layer badges — one color per place a step runs */
42
- .proc{font-size:11px;text-transform:uppercase;letter-spacing:.08em;padding:1px 8px;border-radius:99px;border:1px solid}
43
- .proc.hook{color:var(--amber);border-color:rgba(251,191,36,.4);background:rgba(251,191,36,.07)}
44
- .proc.main{color:var(--green);border-color:rgba(52,211,153,.4);background:rgba(52,211,153,.07)}
45
- .proc.sub{color:var(--violet);border-color:rgba(167,139,250,.4);background:rgba(167,139,250,.07)}
46
- .proc.rend{color:var(--pink);border-color:rgba(244,114,182,.4);background:rgba(244,114,182,.07)}
47
- .proc.disk{color:var(--cyan);border-color:rgba(34,211,238,.4);background:rgba(34,211,238,.07)}
48
- .legend{display:flex;flex-wrap:wrap;gap:14px;margin:10px 0;font-size:12px;color:var(--dim)}
49
-
50
- /* sticky in-page nav */
51
- nav.toc{position:sticky;top:0;z-index:10;background:rgba(13,17,23,.92);backdrop-filter:blur(6px);border-bottom:1px solid var(--line);margin:0 -20px;padding:10px 20px}
52
- nav.toc .row{max-width:980px;margin:0 auto;display:flex;gap:8px;flex-wrap:wrap}
53
- nav.toc a{font-size:13px;padding:4px 14px;border-radius:99px;border:1px solid var(--line);color:var(--dim)}
54
- nav.toc a:hover{color:var(--fg);border-color:var(--faint);text-decoration:none}
55
-
56
- /* stat strip */
57
- .statline{display:flex;gap:18px;flex-wrap:wrap;margin:16px 0}
58
- .stat{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:10px 18px}
59
- .stat .v{font-size:22px;font-weight:700} .stat .k{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--faint)}
60
-
61
- /* horizontal flow diagram */
62
- .flow{display:flex;flex-wrap:wrap;gap:8px;align-items:stretch;margin:16px 0}
63
- .flow .box{flex:1 1 150px;min-width:150px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 12px}
64
- .flow .box .bt{font-weight:700;font-size:13px;margin-bottom:2px}
65
- .flow .box .bd{font-size:12px;color:var(--dim)}
66
- .flow .box .where{font-family:var(--mono);font-size:10px;color:var(--cyan);margin-top:6px}
67
- .flow .arrow{align-self:center;color:var(--faint);font-size:18px;flex:0 0 auto}
68
- .box.b-amber{border-top:3px solid var(--amber)} .box.b-green{border-top:3px solid var(--green)}
69
- .box.b-violet{border-top:3px solid var(--violet)} .box.b-cyan{border-top:3px solid var(--cyan)}
70
- .box.b-pink{border-top:3px solid var(--pink)}
71
-
72
- /* callouts */
73
- .callout{border-left:3px solid var(--amber);background:rgba(251,191,36,.06);border-radius:0 8px 8px 0;padding:12px 16px;margin:14px 0;font-size:14px;color:var(--dim)}
74
- .callout.ok{border-color:var(--green);background:rgba(52,211,153,.06)}
75
- .callout.bad{border-color:var(--red);background:rgba(248,113,113,.06)}
76
- .callout strong{color:var(--fg)}
77
-
78
- /* tables + collapsible knobs */
79
- table{border-collapse:collapse;width:100%;margin:12px 0;font-size:13px}
80
- th,td{text-align:left;padding:6px 11px;border:1px solid var(--line)}
81
- th{background:var(--panel2);font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--dim)}
82
- td{background:var(--panel);color:var(--dim)} td code{white-space:nowrap}
83
- details.consts summary{cursor:pointer;font-size:13px;color:var(--blue);margin:10px 0}
84
-
85
- /* two-column rationale */
86
- .twocol{display:grid;grid-template-columns:1fr 1fr;gap:16px}
87
- @media(max-width:760px){.twocol{grid-template-columns:1fr}.flow .box{flex-basis:100%}}
88
-
89
- footer{margin-top:60px;padding-top:16px;border-top:1px solid var(--line);font-size:12px;color:var(--faint)}
90
- </style>
91
- </head>
92
- <body>
93
-
94
- <nav class="toc"><div class="row">
95
- <a href="index.html">📖 HOME</a>
96
- <a href="#flow">Flow</a>
97
- <a href="#knobs">Knobs</a>
98
- <a href="#why">Why</a>
99
- </div></nav>
100
-
101
- <div class="wrap">
102
- <div class="crumb"><a href="index.html">HUMAN_LEARN</a> / Widget Pipeline</div>
103
- <h1>⚙️ Widget Pipeline — how a request becomes a widget</h1>
104
- <p class="sub">
105
- One-sentence lead: what this is and when it runs. (Replace this whole page with the
106
- real, <code>file:line</code>-grounded explanation of the user's topic — this file is only the
107
- visual template.)
108
- </p>
109
- <div class="legend">
110
- <span><span class="proc hook">trigger</span> what kicks it off</span>
111
- <span><span class="proc main">core</span> main logic</span>
112
- <span><span class="proc sub">worker</span> spawned work</span>
113
- <span><span class="proc disk">store</span> persistence</span>
114
- </div>
115
-
116
- <div class="statline">
117
- <div class="stat"><div class="v">5</div><div class="k">stages</div></div>
118
- <div class="stat"><div class="v">20</div><div class="k">batch cap</div></div>
119
- <div class="stat"><div class="v">8&nbsp;MB</div><div class="k">read window</div></div>
120
- </div>
121
-
122
- <h2 id="flow">The flow, step by step</h2>
123
- <div class="flow">
124
- <div class="box b-amber"><div class="bt">1 · Trigger</div><div class="bd">what starts it</div><div class="where">file.ext:NN</div></div>
125
- <div class="arrow">→</div>
126
- <div class="box b-green"><div class="bt">2 · Read</div><div class="bd">bounded input read</div><div class="where">file.ext:NN</div></div>
127
- <div class="arrow">→</div>
128
- <div class="box b-green"><div class="bt">3 · Transform</div><div class="bd">the core step</div><div class="where">file.ext:NN</div></div>
129
- <div class="arrow">→</div>
130
- <div class="box b-sub b-violet"><div class="bt">4 · Work</div><div class="bd">spawned subprocess</div><div class="where">file.ext:NN</div></div>
131
- <div class="arrow">→</div>
132
- <div class="box b-cyan"><div class="bt">5 · Persist</div><div class="bd">atomic write</div><div class="where">file.ext:NN</div></div>
133
- </div>
134
-
135
- <h3>3 · Transform <span class="proc main">core</span> <span class="loc">file.ext:120-148</span></h3>
136
- <p>Prose explaining the step, with inline <code>constants</code> and a <span class="loc">file.ext:NN</span> for
137
- each claim. Show a real snippet when it clarifies:</p>
138
- <pre><code>doThing(input, { cap: 20, windowBytes: 8 * 1024 * 1024 })</code></pre>
139
-
140
- <div class="callout ok"><strong>Key insight.</strong> The one thing a reader must take away —
141
- e.g. why the design is correct, or the invariant it preserves.</div>
142
-
143
- <h2 id="knobs">The knobs</h2>
144
- <details class="consts" open><summary>All constants (real names + values)</summary>
145
- <table>
146
- <tr><th>Constant</th><th>Value</th><th>Where</th><th>Bounds</th></tr>
147
- <tr><td><code>BATCH</code></td><td>20</td><td><span class="loc">file.ext:50</span></td><td>items per unit of work</td></tr>
148
- <tr><td><code>MAX_BYTES</code></td><td>8 MB</td><td><span class="loc">file.ext:52</span></td><td>read window per run</td></tr>
149
- </table>
150
- </details>
151
-
152
- <h2 id="why">Why it's shaped this way</h2>
153
- <div class="twocol">
154
- <div><h3>Constraint A</h3><p>The real reason — an incident, a platform limit, a cost guard.</p></div>
155
- <div><h3>Constraint B</h3><p>Another forcing function that explains a non-obvious choice.</p></div>
156
- </div>
157
-
158
- <footer>
159
- HUMAN_LEARN · &lt;project&gt; · generated &lt;date&gt; from <code>file.ext</code> + live on-disk state.
160
- </footer>
161
- </div>
162
- </body>
163
- </html>
@@ -1,83 +0,0 @@
1
- ---
2
- name: find-opportunity
3
- description: >-
4
- Triage a shared repo's open issues against open PRs and main to produce a ranked
5
- shortlist of what to work on next, PLUS an explicit, reasoned skip-list of what NOT to
6
- pick (already claimed by a PR — even one only referenced via the PR's title, not a
7
- "Closes #" line — or would conflict with an open PR's diff, or is blocked/needs-decision).
8
- Recommendation only; the human picks. Never opens or files anything. Use whenever the
9
- user says "/find-opportunity", "what should I work on next", "pick the next issue", or
10
- wants a ranked backlog triage for a repo with multiple contributors/open PRs. Keywords:
11
- triage, backlog, next issue, opportunity, ranked shortlist, skip list, PR conflict,
12
- issue claimed.
13
- ---
14
-
15
- # /find-opportunity — rank what to work on next, and say what NOT to touch
16
-
17
- **Role:** the *triage* front-half of a "work the backlog well" loop
18
- (`find-opportunity → develop → repeat`). It answers "what should I pick up next in this
19
- repo" for a shared/multi-contributor project where picking wrong (a duplicate, a merge
20
- fight) wastes real work. It never implements — that's `/develop`'s job once a human
21
- approves a pick.
22
-
23
- **The skip-list is the point, not a footnote.** Knowing what *not* to pick is as
24
- important as ranking what to pick. Every skip gets a reason and, where applicable, the
25
- blocking PR number — never a silent omission.
26
-
27
- ## Procedure
28
-
29
- 1. **Gather.** For the target repo (current cwd unless the user names another):
30
- - Open issues: `gh issue list --state open --json number,title,labels,assignees,body`
31
- (or the project's own issue tracker if it doesn't use GitHub issues — ask if unclear).
32
- - Open PRs: `gh pr list --state open --json number,title,body,headRefName,files`.
33
- - `main`'s current state (`git log --oneline -20`, `git status`) for recency context.
34
-
35
- 2. **Claim-match each issue against open PRs — match aggressively, not just `Closes #`.**
36
- An issue is CLAIMED when any of these link it to an open PR:
37
- - The PR body has `Closes #N` / `Fixes #N` / `Resolves #N` (the obvious case).
38
- - The PR **title** references the issue number (`(#N)`, `#N:`, etc.) — don't rely on
39
- body-only scanning; a title-only reference is real and easy to miss with a naive
40
- `Closes #` grep.
41
- - The PR's branch name encodes the issue number or a close paraphrase of its title.
42
- - A linked-PR field the tracker itself exposes (GitHub's "Development" issue↔PR link,
43
- if the API surfaces it).
44
-
45
- 3. **Conflict-match each remaining issue against open PRs' diffs.** For an issue not
46
- already claimed, check whether fixing it would likely touch files an open PR is
47
- actively rewriting (`gh pr list --json files` per PR, cross-referenced against the
48
- issue's likely target files — infer from the issue body/title, or a quick grep for the
49
- feature area named). High churn overlap on shared/hot files (a core module, a global
50
- stylesheet several PRs touch) → SKIP or DEFER. Cold files (isolated tests, an
51
- untouched route) → safe to proceed even if some other PR is open elsewhere in the repo.
52
-
53
- 4. **Skip anything blocked or owned.** `status: needs-decision`, an assignee already set,
54
- or a "discussion"/"blocked" label → SKIP, not ranked. Not actionable solo.
55
-
56
- 5. **Rank what survives** by impact ÷ conflict-risk. Impact from priority/severity labels,
57
- blast radius (how many surfaces/users it affects), and staleness (an old high-severity
58
- bug outranks a new low one). Conflict-risk from step 3's file-overlap check (even a
59
- non-blocking overlap lowers rank — prefer the fully-cold pick when impact is close).
60
-
61
- 6. **Report both lists, every entry reasoned:**
62
- - **Shortlist** (ranked): issue #, title, one-line reasoning (why this rank), impact
63
- signal, conflict-risk signal.
64
- - **Skip list** (unranked, exhaustive over everything considered): issue #, title,
65
- reason (claimed by PR #N via <title/body/branch> / conflicts with PR #M's diff on
66
- `<file>` / blocked-status / needs-decision / assignee set). Never drop an item
67
- silently — if it was considered, it's in one list or the other.
68
-
69
- 7. **Recommend, don't act.** End with the top pick and why, but the human chooses. Do not
70
- open an issue, start work, or file a PR from this skill — that's `/develop`'s job,
71
- invoked separately once a pick is approved.
72
-
73
- ## Notes
74
-
75
- - This skill only *reads* the tracker (issues/PRs) and git state — it makes no commits,
76
- opens nothing, and files nothing. If the loop surfaces a genuine follow-up that can't be
77
- picked now, note it in the report; do not auto-file a new issue or open an Epic
78
- for it. Filing anything public/outward is a human decision, not this skill's default.
79
- - Don't rank an item you couldn't verify is actually unclaimed and non-conflicting — when
80
- in doubt, put it in the skip list with the uncertainty stated, rather than ranking a
81
- risky guess highly.
82
- - Standalone-useful on its own (triage without ever running `quality: high` on the pick) —
83
- don't assume this skill is only ever the front-half of a longer loop.
@@ -1,38 +0,0 @@
1
- ---
2
- name: issue-address:select:fetch-pool
3
- description: Fetch the FULL open-issue pool on the current project's repo with bodies, with verified completeness (not just a fixed --limit guess). First sub-step of issue-address:select.
4
- ---
5
-
6
- # issue-address:select:fetch-pool
7
-
8
- ## Steps
9
-
10
- 1. **Fetch with a generous limit, then verify nothing was truncated** — don't trust a
11
- single fixed `--limit` the way an earlier version of this skill (and, separately,
12
- `pr-review-sweep`'s original GraphQL query) did; both silently truncated real data on
13
- this repo before. Converge instead of guessing:
14
- ```bash
15
- LIMIT=100
16
- while true; do
17
- COUNT=$(gh issue list --repo "$(gh repo view --json nameWithOwner -q .nameWithOwner)" --state open --limit "$LIMIT" --json number --jq 'length')
18
- if [ "$COUNT" -lt "$LIMIT" ]; then break; fi # got everything — count came in under the cap
19
- LIMIT=$((LIMIT * 2)) # cap was hit exactly — double and re-check
20
- done
21
- gh issue list --repo "$(gh repo view --json nameWithOwner -q .nameWithOwner)" --state open --limit "$LIMIT" \
22
- --json number,title,body,labels,assignees,comments,createdAt,reactionGroups
23
- ```
24
- `COUNT == LIMIT` is the tell that you hit the ceiling, not the true end of the list —
25
- never treat that as "done." Only stop once a fetch returns fewer results than it was
26
- capped at.
27
-
28
- 2. **Fetch bodies, not just titles.** Title-only scanning is what let issue #180 get
29
- picked without anyone reading its file/line citations first. `body` and `comments` are
30
- required output fields, not optional — the next sub-steps depend on them.
31
-
32
- 3. **Also fetch `reactionGroups`** (👍/👎 counts) — a real, if imperfect, community-signal
33
- input for `issue-address:select:rank-impact` later, beyond just label text.
34
-
35
- ## Output
36
-
37
- The full, verified-complete list of open issues with bodies, labels, assignees, comments,
38
- and reaction counts — handed to `issue-address:select:reject-fixed` next.
@@ -1,64 +0,0 @@
1
- ---
2
- name: issue-address:select:reject-fixed
3
- description: Reject candidates from issue-address:select:fetch-pool's pool that are already fixed in current code, by checking the actual file/behavior each issue cites against a freshly-fetched origin/main — semantically, not just a literal string grep. Second sub-step of issue-address:select.
4
- ---
5
-
6
- # issue-address:select:reject-fixed
7
-
8
- The check that would have caught issue #180 before any other work started — its body
9
- cited `apps/web/app/app.css` around specific line numbers, and the current code already
10
- had the exact fix (`min-width: 0`) the issue was reporting the absence of.
11
-
12
- ## Steps
13
-
14
- 0. **Fetch fresh before checking anything.** `git fetch origin main` first, and read
15
- against `origin/main`, not a local branch — a local checkout can be stale or on an
16
- unrelated feature branch, and a stale read produces a false "still broken" verdict.
17
- (Found live: `#194` looked unfixed against a stale local branch, but `origin/main` had
18
- merged the fix days earlier.)
19
-
20
- 1. **For each candidate whose body cites a specific file, line, function, or CSS
21
- selector/rule**, read the actual current code at that location:
22
- ```bash
23
- git show origin/main:<cited-path> | sed -n '<start>,<end>p'
24
- ```
25
- or grep for the cited selector/function name if line numbers have drifted (files get
26
- reorganized — issue #180's citation was for `apps/web/app/app.css`, which had since
27
- been split into `apps/web/app/styles/*.css`; searching by class/function name across
28
- the styles directory found the real current location).
29
-
30
- 2. **Check the behavior semantically, not just for the literal string the issue used.** A
31
- fix can land in a different code *shape* than the issue's own words. (Found live: `#57`
32
- asked for a `<link rel="canonical">` tag; a literal grep for `rel="canonical"` found
33
- nothing, so the naive check would have called it unfixed — but the actual fix was a
34
- data-driven React Router `meta()` descriptor, `{ tagName: 'link', rel: 'canonical', href
35
- }`, which produces the same tag at render time without ever containing that literal
36
- string in source.) Before concluding "not fixed" on a bare grep miss:
37
- - Search one level broader — the surrounding directory/module, a shared
38
- helper/util file, a `meta.ts`/`config.ts`-style indirection layer — for the *behavior*
39
- the issue describes, not just its exact wording.
40
- - If the issue names a concrete symptom (a missing tag, a wrong computed value, a
41
- missing gate), look for whatever code *produces* that output, however it's
42
- structured, before deciding the symptom is still present.
43
-
44
- 3. **Compare what the issue describes as broken against what the code currently does.**
45
- If the issue's own hypothesized fix (or an equivalent one, per step 2) is already
46
- present — reject, log as `already-fixed`, cite the exact current file:line as evidence.
47
- Don't spend a full `issue-address:reproduce` pass confirming what a direct code read
48
- already answered.
49
-
50
- 4. **If the citation is vague, or the file has moved/renamed and a reasonably broadened
51
- search (step 2) still finds nothing**, don't reject on inconclusive evidence — mark the
52
- candidate `unconfirmed` and let it pass through to the next sub-step. This step only
53
- rejects on positive evidence of an existing fix, never on failure-to-locate.
54
-
55
- 5. **If the git history around that file shows the fix landed suspiciously close to the
56
- issue's `createdAt`** (within a day or two, either direction), note that explicitly —
57
- it's a strong signal the report and the fix crossed in flight (exactly what happened
58
- with #180: fix committed 2026-06-29, issue filed 2026-06-30).
59
-
60
- ## Output
61
-
62
- Two lists: `already-fixed` (rejected, with evidence) and `survives` (candidates to pass to
63
- `issue-address:select:reject-claimed` next, tagged `unconfirmed` where this step couldn't
64
- conclusively check).