@coralai/sps-cli 0.55.13 → 0.56.1

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 (437) hide show
  1. package/dist/commands/cardMarkComplete.d.ts.map +1 -1
  2. package/dist/commands/cardMarkComplete.js +6 -3
  3. package/dist/commands/cardMarkComplete.js.map +1 -1
  4. package/dist/commands/projectInit.d.ts +18 -16
  5. package/dist/commands/projectInit.d.ts.map +1 -1
  6. package/dist/commands/projectInit.js +59 -186
  7. package/dist/commands/projectInit.js.map +1 -1
  8. package/dist/commands/skillCommand.js +7 -4
  9. package/dist/commands/skillCommand.js.map +1 -1
  10. package/dist/commands/tick.d.ts +2 -20
  11. package/dist/commands/tick.d.ts.map +1 -1
  12. package/dist/commands/tick.js +58 -1
  13. package/dist/commands/tick.js.map +1 -1
  14. package/dist/console/index.d.ts.map +1 -1
  15. package/dist/console/index.js +4 -0
  16. package/dist/console/index.js.map +1 -1
  17. package/dist/console/routes/chat.d.ts.map +1 -1
  18. package/dist/console/routes/chat.js +211 -6
  19. package/dist/console/routes/chat.js.map +1 -1
  20. package/dist/console/routes/projects.d.ts +0 -6
  21. package/dist/console/routes/projects.d.ts.map +1 -1
  22. package/dist/console/routes/projects.js +11 -2
  23. package/dist/console/routes/projects.js.map +1 -1
  24. package/dist/console/routes/providers.d.ts +10 -0
  25. package/dist/console/routes/providers.d.ts.map +1 -0
  26. package/dist/console/routes/providers.js +63 -0
  27. package/dist/console/routes/providers.js.map +1 -0
  28. package/dist/console/routes/smartarrange.d.ts +4 -0
  29. package/dist/console/routes/smartarrange.d.ts.map +1 -0
  30. package/dist/console/routes/smartarrange.js +107 -0
  31. package/dist/console/routes/smartarrange.js.map +1 -0
  32. package/dist/console/routes/system.d.ts.map +1 -1
  33. package/dist/console/routes/system.js +28 -0
  34. package/dist/console/routes/system.js.map +1 -1
  35. package/dist/console/routes/workers.d.ts.map +1 -1
  36. package/dist/console/routes/workers.js +36 -4
  37. package/dist/console/routes/workers.js.map +1 -1
  38. package/dist/console-assets/assets/index-CWkYVI5d.js +600 -0
  39. package/dist/console-assets/assets/index-CnUBHNsN.css +10 -0
  40. package/dist/console-assets/index.html +2 -2
  41. package/dist/core/agents/AcpBackend.d.ts +24 -0
  42. package/dist/core/agents/AcpBackend.d.ts.map +1 -0
  43. package/dist/core/agents/AcpBackend.js +86 -0
  44. package/dist/core/agents/AcpBackend.js.map +1 -0
  45. package/dist/core/agents/AgentBackend.d.ts +53 -0
  46. package/dist/core/agents/AgentBackend.d.ts.map +1 -0
  47. package/dist/core/agents/AgentBackend.js +18 -0
  48. package/dist/core/agents/AgentBackend.js.map +1 -0
  49. package/dist/core/agents/ClaudeAcpBackend.d.ts +13 -0
  50. package/dist/core/agents/ClaudeAcpBackend.d.ts.map +1 -0
  51. package/dist/core/agents/ClaudeAcpBackend.js +14 -0
  52. package/dist/core/agents/ClaudeAcpBackend.js.map +1 -0
  53. package/dist/core/agents/ClaudeSdkBackend.d.ts +26 -0
  54. package/dist/core/agents/ClaudeSdkBackend.d.ts.map +1 -0
  55. package/dist/core/agents/ClaudeSdkBackend.js +102 -0
  56. package/dist/core/agents/ClaudeSdkBackend.js.map +1 -0
  57. package/dist/core/agents/CodexAppServerBackend.d.ts +33 -0
  58. package/dist/core/agents/CodexAppServerBackend.d.ts.map +1 -0
  59. package/dist/core/agents/CodexAppServerBackend.js +168 -0
  60. package/dist/core/agents/CodexAppServerBackend.js.map +1 -0
  61. package/dist/core/agents/OpenAiAgentBackend.d.ts +39 -0
  62. package/dist/core/agents/OpenAiAgentBackend.d.ts.map +1 -0
  63. package/dist/core/agents/OpenAiAgentBackend.js +132 -0
  64. package/dist/core/agents/OpenAiAgentBackend.js.map +1 -0
  65. package/dist/core/agents/agentsMd.d.ts +2 -0
  66. package/dist/core/agents/agentsMd.d.ts.map +1 -0
  67. package/dist/core/agents/agentsMd.js +22 -0
  68. package/dist/core/agents/agentsMd.js.map +1 -0
  69. package/dist/core/agents/localTracing.d.ts +3 -0
  70. package/dist/core/agents/localTracing.d.ts.map +1 -0
  71. package/dist/core/agents/localTracing.js +42 -0
  72. package/dist/core/agents/localTracing.js.map +1 -0
  73. package/dist/core/agents/resolveBackend.d.ts +26 -0
  74. package/dist/core/agents/resolveBackend.d.ts.map +1 -0
  75. package/dist/core/agents/resolveBackend.js +27 -0
  76. package/dist/core/agents/resolveBackend.js.map +1 -0
  77. package/dist/core/agents/workerOutputSink.d.ts +4 -0
  78. package/dist/core/agents/workerOutputSink.d.ts.map +1 -0
  79. package/dist/core/agents/workerOutputSink.js +39 -0
  80. package/dist/core/agents/workerOutputSink.js.map +1 -0
  81. package/dist/core/config.d.ts +6 -0
  82. package/dist/core/config.d.ts.map +1 -1
  83. package/dist/core/config.js +4 -0
  84. package/dist/core/config.js.map +1 -1
  85. package/dist/core/intel/RuntimeSession.d.ts +16 -0
  86. package/dist/core/intel/RuntimeSession.d.ts.map +1 -0
  87. package/dist/core/intel/RuntimeSession.js +89 -0
  88. package/dist/core/intel/RuntimeSession.js.map +1 -0
  89. package/dist/core/intel/agentsConfig.d.ts +20 -0
  90. package/dist/core/intel/agentsConfig.d.ts.map +1 -0
  91. package/dist/core/intel/agentsConfig.js +68 -0
  92. package/dist/core/intel/agentsConfig.js.map +1 -0
  93. package/dist/core/intel/planStore.d.ts +23 -0
  94. package/dist/core/intel/planStore.d.ts.map +1 -0
  95. package/dist/core/intel/planStore.js +67 -0
  96. package/dist/core/intel/planStore.js.map +1 -0
  97. package/dist/core/intel/types.d.ts +86 -0
  98. package/dist/core/intel/types.d.ts.map +1 -0
  99. package/dist/core/intel/types.js +8 -0
  100. package/dist/core/intel/types.js.map +1 -0
  101. package/dist/core/memoryIngest.d.ts +18 -0
  102. package/dist/core/memoryIngest.d.ts.map +1 -0
  103. package/dist/core/memoryIngest.js +56 -0
  104. package/dist/core/memoryIngest.js.map +1 -0
  105. package/dist/core/memoryProvider.d.ts +63 -0
  106. package/dist/core/memoryProvider.d.ts.map +1 -0
  107. package/dist/core/memoryProvider.js +205 -0
  108. package/dist/core/memoryProvider.js.map +1 -0
  109. package/dist/core/skillStore.d.ts.map +1 -1
  110. package/dist/core/skillStore.js +2 -1
  111. package/dist/core/skillStore.js.map +1 -1
  112. package/dist/core/skills/SkillsManager.d.ts +38 -0
  113. package/dist/core/skills/SkillsManager.d.ts.map +1 -0
  114. package/dist/core/skills/SkillsManager.js +231 -0
  115. package/dist/core/skills/SkillsManager.js.map +1 -0
  116. package/dist/core/skills/distribution.d.ts +64 -0
  117. package/dist/core/skills/distribution.d.ts.map +1 -0
  118. package/dist/core/skills/distribution.js +269 -0
  119. package/dist/core/skills/distribution.js.map +1 -0
  120. package/dist/core/skills/index.d.ts +13 -0
  121. package/dist/core/skills/index.d.ts.map +1 -0
  122. package/dist/core/skills/index.js +13 -0
  123. package/dist/core/skills/index.js.map +1 -0
  124. package/dist/core/skills/types.d.ts +44 -0
  125. package/dist/core/skills/types.d.ts.map +1 -0
  126. package/dist/core/skills/types.js +9 -0
  127. package/dist/core/skills/types.js.map +1 -0
  128. package/dist/core/taskPrompts.d.ts +0 -12
  129. package/dist/core/taskPrompts.d.ts.map +1 -1
  130. package/dist/core/taskPrompts.js +0 -14
  131. package/dist/core/taskPrompts.js.map +1 -1
  132. package/dist/core/transcriptIngest.d.ts +37 -0
  133. package/dist/core/transcriptIngest.d.ts.map +1 -0
  134. package/dist/core/transcriptIngest.js +137 -0
  135. package/dist/core/transcriptIngest.js.map +1 -0
  136. package/dist/core/wiki/types.d.ts +282 -745
  137. package/dist/core/wiki/types.d.ts.map +1 -1
  138. package/dist/core/wiki/types.js +1 -1
  139. package/dist/core/wiki/types.js.map +1 -1
  140. package/dist/daemon/daemonClient.d.ts +6 -0
  141. package/dist/daemon/daemonClient.d.ts.map +1 -1
  142. package/dist/daemon/daemonClient.js.map +1 -1
  143. package/dist/daemon/sessionDaemon.d.ts.map +1 -1
  144. package/dist/daemon/sessionDaemon.js.map +1 -1
  145. package/dist/engines/SmartArrangeEngine.d.ts +75 -0
  146. package/dist/engines/SmartArrangeEngine.d.ts.map +1 -0
  147. package/dist/engines/SmartArrangeEngine.js +112 -0
  148. package/dist/engines/SmartArrangeEngine.js.map +1 -0
  149. package/dist/engines/StageEngine.d.ts +3 -17
  150. package/dist/engines/StageEngine.d.ts.map +1 -1
  151. package/dist/engines/StageEngine.js +13 -91
  152. package/dist/engines/StageEngine.js.map +1 -1
  153. package/dist/engines/smartarrange/AcpWorkerExec.d.ts +35 -0
  154. package/dist/engines/smartarrange/AcpWorkerExec.d.ts.map +1 -0
  155. package/dist/engines/smartarrange/AcpWorkerExec.js +71 -0
  156. package/dist/engines/smartarrange/AcpWorkerExec.js.map +1 -0
  157. package/dist/engines/smartarrange/cardSink.d.ts +29 -0
  158. package/dist/engines/smartarrange/cardSink.d.ts.map +1 -0
  159. package/dist/engines/smartarrange/cardSink.js +43 -0
  160. package/dist/engines/smartarrange/cardSink.js.map +1 -0
  161. package/dist/engines/smartarrange/runner.d.ts +24 -0
  162. package/dist/engines/smartarrange/runner.d.ts.map +1 -0
  163. package/dist/engines/smartarrange/runner.js +116 -0
  164. package/dist/engines/smartarrange/runner.js.map +1 -0
  165. package/dist/engines/smartarrange/screenshot.d.ts +5 -0
  166. package/dist/engines/smartarrange/screenshot.d.ts.map +1 -0
  167. package/dist/engines/smartarrange/screenshot.js +117 -0
  168. package/dist/engines/smartarrange/screenshot.js.map +1 -0
  169. package/dist/main.js +127 -92
  170. package/dist/main.js.map +1 -1
  171. package/dist/manager/worker-manager-impl.d.ts.map +1 -1
  172. package/dist/manager/worker-manager-impl.js +7 -0
  173. package/dist/manager/worker-manager-impl.js.map +1 -1
  174. package/dist/providers/ACPWorkerRuntime.d.ts +2 -0
  175. package/dist/providers/ACPWorkerRuntime.d.ts.map +1 -1
  176. package/dist/providers/ACPWorkerRuntime.js +1 -0
  177. package/dist/providers/ACPWorkerRuntime.js.map +1 -1
  178. package/dist/providers/LLMClient.d.ts +32 -0
  179. package/dist/providers/LLMClient.d.ts.map +1 -0
  180. package/dist/providers/LLMClient.js +108 -0
  181. package/dist/providers/LLMClient.js.map +1 -0
  182. package/dist/providers/MarkdownTaskBackend.d.ts.map +1 -1
  183. package/dist/providers/MarkdownTaskBackend.js +3 -2
  184. package/dist/providers/MarkdownTaskBackend.js.map +1 -1
  185. package/dist/providers/llm/chatTools.d.ts +11 -0
  186. package/dist/providers/llm/chatTools.d.ts.map +1 -0
  187. package/dist/providers/llm/chatTools.js +57 -0
  188. package/dist/providers/llm/chatTools.js.map +1 -0
  189. package/dist/providers/llm/codexAuth.d.ts +8 -0
  190. package/dist/providers/llm/codexAuth.d.ts.map +1 -0
  191. package/dist/providers/llm/codexAuth.js +57 -0
  192. package/dist/providers/llm/codexAuth.js.map +1 -0
  193. package/dist/providers/llm/codexModel.d.ts +14 -0
  194. package/dist/providers/llm/codexModel.d.ts.map +1 -0
  195. package/dist/providers/llm/codexModel.js +96 -0
  196. package/dist/providers/llm/codexModel.js.map +1 -0
  197. package/dist/providers/llm/localSubscription.d.ts +15 -0
  198. package/dist/providers/llm/localSubscription.d.ts.map +1 -0
  199. package/dist/providers/llm/localSubscription.js +66 -0
  200. package/dist/providers/llm/localSubscription.js.map +1 -0
  201. package/dist/providers/llm/modelFactory.d.ts +14 -0
  202. package/dist/providers/llm/modelFactory.d.ts.map +1 -0
  203. package/dist/providers/llm/modelFactory.js +22 -0
  204. package/dist/providers/llm/modelFactory.js.map +1 -0
  205. package/dist/providers/llm/monitorSkills.d.ts +6 -0
  206. package/dist/providers/llm/monitorSkills.d.ts.map +1 -0
  207. package/dist/providers/llm/monitorSkills.js +37 -0
  208. package/dist/providers/llm/monitorSkills.js.map +1 -0
  209. package/dist/providers/llm/probeTools.d.ts +7 -0
  210. package/dist/providers/llm/probeTools.d.ts.map +1 -0
  211. package/dist/providers/llm/probeTools.js +84 -0
  212. package/dist/providers/llm/probeTools.js.map +1 -0
  213. package/dist/providers/llm/providers.d.ts +26 -0
  214. package/dist/providers/llm/providers.d.ts.map +1 -0
  215. package/dist/providers/llm/providers.js +68 -0
  216. package/dist/providers/llm/providers.js.map +1 -0
  217. package/dist/providers/llm/skillTools.d.ts +4 -0
  218. package/dist/providers/llm/skillTools.d.ts.map +1 -0
  219. package/dist/providers/llm/skillTools.js +42 -0
  220. package/dist/providers/llm/skillTools.js.map +1 -0
  221. package/dist/providers/llm/workerTools.d.ts +9 -0
  222. package/dist/providers/llm/workerTools.d.ts.map +1 -0
  223. package/dist/providers/llm/workerTools.js +111 -0
  224. package/dist/providers/llm/workerTools.js.map +1 -0
  225. package/dist/providers/mcp/spsMcpServer.d.ts +15 -0
  226. package/dist/providers/mcp/spsMcpServer.d.ts.map +1 -0
  227. package/dist/providers/mcp/spsMcpServer.js +67 -0
  228. package/dist/providers/mcp/spsMcpServer.js.map +1 -0
  229. package/dist/providers/mcp/spsMcpStdio.d.ts +2 -0
  230. package/dist/providers/mcp/spsMcpStdio.d.ts.map +1 -0
  231. package/dist/providers/mcp/spsMcpStdio.js +32 -0
  232. package/dist/providers/mcp/spsMcpStdio.js.map +1 -0
  233. package/dist/providers/mcp/spsMcpStdioConfig.d.ts +11 -0
  234. package/dist/providers/mcp/spsMcpStdioConfig.d.ts.map +1 -0
  235. package/dist/providers/mcp/spsMcpStdioConfig.js +19 -0
  236. package/dist/providers/mcp/spsMcpStdioConfig.js.map +1 -0
  237. package/dist/server.d.ts +23 -0
  238. package/dist/server.d.ts.map +1 -1
  239. package/dist/server.js +23 -0
  240. package/dist/server.js.map +1 -1
  241. package/dist/services/ChatService.d.ts +10 -0
  242. package/dist/services/ChatService.d.ts.map +1 -1
  243. package/dist/services/ChatService.js +2 -0
  244. package/dist/services/ChatService.js.map +1 -1
  245. package/dist/services/LogService.d.ts +1 -1
  246. package/dist/services/LogService.d.ts.map +1 -1
  247. package/dist/services/LogService.js +3 -2
  248. package/dist/services/LogService.js.map +1 -1
  249. package/dist/services/ProjectService.d.ts +12 -2
  250. package/dist/services/ProjectService.d.ts.map +1 -1
  251. package/dist/services/ProjectService.js +1 -0
  252. package/dist/services/ProjectService.js.map +1 -1
  253. package/dist/services/SkillService.js +11 -13
  254. package/dist/services/SkillService.js.map +1 -1
  255. package/dist/services/SmartArrangeService.d.ts +12 -0
  256. package/dist/services/SmartArrangeService.d.ts.map +1 -0
  257. package/dist/services/SmartArrangeService.js +37 -0
  258. package/dist/services/SmartArrangeService.js.map +1 -0
  259. package/dist/services/SystemService.d.ts +20 -0
  260. package/dist/services/SystemService.d.ts.map +1 -1
  261. package/dist/services/SystemService.js +93 -0
  262. package/dist/services/SystemService.js.map +1 -1
  263. package/dist/services/WorkerService.d.ts +8 -0
  264. package/dist/services/WorkerService.d.ts.map +1 -1
  265. package/dist/services/WorkerService.js +73 -3
  266. package/dist/services/WorkerService.js.map +1 -1
  267. package/dist/services/container.d.ts +2 -0
  268. package/dist/services/container.d.ts.map +1 -1
  269. package/dist/services/container.js +2 -0
  270. package/dist/services/container.js.map +1 -1
  271. package/dist/shared/localTime.d.ts +8 -0
  272. package/dist/shared/localTime.d.ts.map +1 -0
  273. package/dist/shared/localTime.js +11 -0
  274. package/dist/shared/localTime.js.map +1 -0
  275. package/dist/shared/runtimePaths.d.ts +1 -1
  276. package/dist/shared/runtimePaths.d.ts.map +1 -1
  277. package/dist/shared/runtimePaths.js +2 -2
  278. package/dist/shared/runtimePaths.js.map +1 -1
  279. package/dist/shared/runtimeSchemas.d.ts +74 -245
  280. package/dist/shared/runtimeSchemas.d.ts.map +1 -1
  281. package/dist/shared/runtimeSchemas.js +2 -2
  282. package/dist/shared/runtimeSchemas.js.map +1 -1
  283. package/monitor-skills/probe-playbook/SKILL.md +32 -0
  284. package/monitor-skills/visual-rubric/SKILL.md +34 -0
  285. package/package.json +8 -8
  286. package/project-template/.claude/hooks/stop.sh +3 -1
  287. package/dist/console-assets/assets/index-BvWWj69G.js +0 -557
  288. package/dist/console-assets/assets/index-Eo4PuNPl.css +0 -10
  289. package/dist/interfaces/ACPClient.d.ts +0 -107
  290. package/dist/interfaces/ACPClient.d.ts.map +0 -1
  291. package/dist/interfaces/ACPClient.js +0 -17
  292. package/dist/interfaces/ACPClient.js.map +0 -1
  293. package/dist/interfaces/AgentRuntime.d.ts +0 -40
  294. package/dist/interfaces/AgentRuntime.d.ts.map +0 -1
  295. package/dist/interfaces/AgentRuntime.js +0 -17
  296. package/dist/interfaces/AgentRuntime.js.map +0 -1
  297. package/dist/manager/agentmemory.d.ts +0 -6
  298. package/dist/manager/agentmemory.d.ts.map +0 -1
  299. package/dist/manager/agentmemory.js +0 -73
  300. package/dist/manager/agentmemory.js.map +0 -1
  301. package/dist/models/acp.d.ts +0 -64
  302. package/dist/models/acp.d.ts.map +0 -1
  303. package/dist/models/acp.js +0 -17
  304. package/dist/models/acp.js.map +0 -1
  305. package/dist/providers/LocalACPClient.d.ts +0 -27
  306. package/dist/providers/LocalACPClient.d.ts.map +0 -1
  307. package/dist/providers/LocalACPClient.js +0 -26
  308. package/dist/providers/LocalACPClient.js.map +0 -1
  309. package/dist/providers/adapters/AcpSdkAdapter.d.ts +0 -24
  310. package/dist/providers/adapters/AcpSdkAdapter.d.ts.map +0 -1
  311. package/dist/providers/adapters/AcpSdkAdapter.js +0 -439
  312. package/dist/providers/adapters/AcpSdkAdapter.js.map +0 -1
  313. package/dist/providers/adapters/acp-fs-handlers.d.ts +0 -26
  314. package/dist/providers/adapters/acp-fs-handlers.d.ts.map +0 -1
  315. package/dist/providers/adapters/acp-fs-handlers.js +0 -61
  316. package/dist/providers/adapters/acp-fs-handlers.js.map +0 -1
  317. package/dist/providers/adapters/acp-permissions.d.ts +0 -42
  318. package/dist/providers/adapters/acp-permissions.d.ts.map +0 -1
  319. package/dist/providers/adapters/acp-permissions.js +0 -76
  320. package/dist/providers/adapters/acp-permissions.js.map +0 -1
  321. package/dist/providers/adapters/acp-session-accumulator.d.ts +0 -55
  322. package/dist/providers/adapters/acp-session-accumulator.d.ts.map +0 -1
  323. package/dist/providers/adapters/acp-session-accumulator.js +0 -133
  324. package/dist/providers/adapters/acp-session-accumulator.js.map +0 -1
  325. package/dist/providers/adapters/acp-terminal-manager.d.ts +0 -56
  326. package/dist/providers/adapters/acp-terminal-manager.d.ts.map +0 -1
  327. package/dist/providers/adapters/acp-terminal-manager.js +0 -127
  328. package/dist/providers/adapters/acp-terminal-manager.js.map +0 -1
  329. package/project-template/logs/.gitkeep +0 -0
  330. package/skills/architecture-decision-records/SKILL.md +0 -207
  331. package/skills/backend/SKILL.md +0 -62
  332. package/skills/backend/references/api-design.md +0 -168
  333. package/skills/backend/references/caching.md +0 -181
  334. package/skills/backend/references/data-access.md +0 -173
  335. package/skills/backend/references/layering.md +0 -181
  336. package/skills/backend/references/observability.md +0 -190
  337. package/skills/backend/references/resilience.md +0 -201
  338. package/skills/backend/references/security.md +0 -186
  339. package/skills/backend-architect/SKILL.md +0 -119
  340. package/skills/code-reviewer/SKILL.md +0 -143
  341. package/skills/coding-standards/SKILL.md +0 -60
  342. package/skills/coding-standards/references/clean-code.md +0 -258
  343. package/skills/coding-standards/references/code-review.md +0 -192
  344. package/skills/coding-standards/references/commits-and-prs.md +0 -226
  345. package/skills/coding-standards/references/error-strategy.md +0 -193
  346. package/skills/coding-standards/references/naming.md +0 -185
  347. package/skills/coding-standards/references/tdd.md +0 -171
  348. package/skills/database/SKILL.md +0 -53
  349. package/skills/database/references/indexing.md +0 -190
  350. package/skills/database/references/migrations.md +0 -199
  351. package/skills/database/references/nosql.md +0 -185
  352. package/skills/database/references/queries.md +0 -295
  353. package/skills/database/references/scaling.md +0 -203
  354. package/skills/database/references/schema.md +0 -191
  355. package/skills/database-optimizer/SKILL.md +0 -168
  356. package/skills/debugging-workflow/SKILL.md +0 -244
  357. package/skills/dev-worker/SKILL.md +0 -40
  358. package/skills/dev-worker/references/architect.md +0 -139
  359. package/skills/dev-worker/references/backend.md +0 -163
  360. package/skills/dev-worker/references/frontend.md +0 -122
  361. package/skills/dev-worker/references/fullstack.md +0 -179
  362. package/skills/dev-worker/references/optimizer.md +0 -151
  363. package/skills/dev-worker/references/phaser.md +0 -109
  364. package/skills/dev-worker/references/prototyper.md +0 -171
  365. package/skills/dev-worker/references/reviewer.md +0 -122
  366. package/skills/dev-worker/references/security.md +0 -154
  367. package/skills/dev-worker/references/senior.md +0 -155
  368. package/skills/dev-worker/references/typescript.md +0 -65
  369. package/skills/dev-worker/references/writer.md +0 -201
  370. package/skills/devops/SKILL.md +0 -55
  371. package/skills/devops/references/ci-cd.md +0 -204
  372. package/skills/devops/references/containers.md +0 -272
  373. package/skills/devops/references/deploy.md +0 -201
  374. package/skills/devops/references/iac.md +0 -252
  375. package/skills/devops/references/observability.md +0 -228
  376. package/skills/devops/references/secrets.md +0 -178
  377. package/skills/devops-automator/SKILL.md +0 -164
  378. package/skills/frontend/SKILL.md +0 -52
  379. package/skills/frontend/references/accessibility.md +0 -222
  380. package/skills/frontend/references/components.md +0 -206
  381. package/skills/frontend/references/performance.md +0 -219
  382. package/skills/frontend/references/routing.md +0 -209
  383. package/skills/frontend/references/state.md +0 -190
  384. package/skills/frontend/references/testing.md +0 -216
  385. package/skills/frontend-developer/SKILL.md +0 -115
  386. package/skills/git-workflow/SKILL.md +0 -355
  387. package/skills/golang/SKILL.md +0 -49
  388. package/skills/golang/references/concurrency.md +0 -284
  389. package/skills/golang/references/errors.md +0 -241
  390. package/skills/golang/references/idioms.md +0 -285
  391. package/skills/golang/references/testing.md +0 -238
  392. package/skills/java/SKILL.md +0 -50
  393. package/skills/java/references/concurrency.md +0 -194
  394. package/skills/java/references/idioms.md +0 -283
  395. package/skills/java/references/testing.md +0 -228
  396. package/skills/kotlin/SKILL.md +0 -47
  397. package/skills/kotlin/references/coroutines.md +0 -240
  398. package/skills/kotlin/references/idioms.md +0 -268
  399. package/skills/kotlin/references/testing.md +0 -219
  400. package/skills/mobile/SKILL.md +0 -50
  401. package/skills/mobile/references/architecture.md +0 -204
  402. package/skills/mobile/references/navigation.md +0 -158
  403. package/skills/mobile/references/performance.md +0 -152
  404. package/skills/mobile/references/platform.md +0 -166
  405. package/skills/mobile/references/state-and-data.md +0 -174
  406. package/skills/python/SKILL.md +0 -51
  407. package/skills/python/THIRD_PARTY.md +0 -14
  408. package/skills/python/references/async.md +0 -218
  409. package/skills/python/references/error-handling.md +0 -254
  410. package/skills/python/references/idioms.md +0 -279
  411. package/skills/python/references/packaging.md +0 -233
  412. package/skills/python/references/testing.md +0 -269
  413. package/skills/python/references/typing.md +0 -292
  414. package/skills/qa-tester/SKILL.md +0 -186
  415. package/skills/rust/SKILL.md +0 -50
  416. package/skills/rust/references/async.md +0 -224
  417. package/skills/rust/references/errors.md +0 -240
  418. package/skills/rust/references/ownership.md +0 -263
  419. package/skills/rust/references/testing.md +0 -274
  420. package/skills/rust/references/traits.md +0 -250
  421. package/skills/security-engineer/SKILL.md +0 -157
  422. package/skills/sps-memory/SKILL.md +0 -213
  423. package/skills/sps-pipeline/SKILL.md +0 -476
  424. package/skills/swift/SKILL.md +0 -48
  425. package/skills/swift/references/concurrency.md +0 -280
  426. package/skills/swift/references/idioms.md +0 -334
  427. package/skills/swift/references/testing.md +0 -229
  428. package/skills/tax-worker/SKILL.md +0 -150
  429. package/skills/tax-worker/references/account-codes.md +0 -165
  430. package/skills/typescript/SKILL.md +0 -51
  431. package/skills/typescript/references/async.md +0 -241
  432. package/skills/typescript/references/errors.md +0 -208
  433. package/skills/typescript/references/idioms.md +0 -246
  434. package/skills/typescript/references/testing.md +0 -225
  435. package/skills/typescript/references/tooling.md +0 -208
  436. package/skills/typescript/references/types.md +0 -259
  437. package/skills/wiki-update/SKILL.md +0 -300
@@ -1,218 +0,0 @@
1
- # Python Async / Concurrency
2
-
3
- `asyncio` patterns for I/O-bound concurrency. For CPU-bound work, use processes, not async.
4
-
5
- ## When to use what
6
-
7
- | Workload | Tool | Why |
8
- |---|---|---|
9
- | I/O-bound (network, files, DB) | `asyncio` | One thread, thousands of connections |
10
- | CPU-bound (crunching, crypto) | `multiprocessing` / `concurrent.futures.ProcessPoolExecutor` | GIL blocks threads |
11
- | Blocking library you can't async-ify | `asyncio.to_thread()` | Offload to the default thread pool |
12
- | Parallelizing blocking syscalls | `concurrent.futures.ThreadPoolExecutor` | Simple, no asyncio required |
13
-
14
- `asyncio` without I/O is pointless — a `async def` that only does CPU work gives you no concurrency.
15
-
16
- ## `async def` / `await` basics
17
-
18
- ```python
19
- import asyncio
20
- import httpx
21
-
22
- async def fetch(url: str) -> str:
23
- async with httpx.AsyncClient() as client:
24
- r = await client.get(url)
25
- return r.text
26
-
27
- async def main() -> None:
28
- html = await fetch("https://example.com")
29
- print(len(html))
30
-
31
- asyncio.run(main())
32
- ```
33
-
34
- Rule: never call `asyncio.run()` from inside already-running async code. It's the entry point, not a utility.
35
-
36
- ## Concurrency — run coroutines in parallel
37
-
38
- ### `asyncio.gather` (legacy, still common)
39
-
40
- ```python
41
- async def fetch_all(urls: list[str]) -> list[str]:
42
- return await asyncio.gather(*(fetch(u) for u in urls))
43
-
44
- # With return_exceptions — failures don't cancel siblings
45
- results = await asyncio.gather(*tasks, return_exceptions=True)
46
- for r in results:
47
- if isinstance(r, Exception):
48
- log.warning("one failed: %s", r)
49
- ```
50
-
51
- ### `asyncio.TaskGroup` (Python 3.11+) — preferred
52
-
53
- Structured concurrency: if any task raises, siblings are cancelled and errors are aggregated into an `ExceptionGroup`.
54
-
55
- ```python
56
- async def fetch_all(urls: list[str]) -> list[str]:
57
- async with asyncio.TaskGroup() as tg:
58
- tasks = [tg.create_task(fetch(u)) for u in urls]
59
- return [t.result() for t in tasks]
60
-
61
- # Error handling
62
- try:
63
- await fetch_all(urls)
64
- except* httpx.ConnectError as eg:
65
- log.warning("network failures: %d", len(eg.exceptions))
66
- except* httpx.HTTPStatusError as eg:
67
- log.error("HTTP errors: %s", [e.response.status_code for e in eg.exceptions])
68
- ```
69
-
70
- Prefer `TaskGroup` over `gather` in new code — cancellation is correct by default.
71
-
72
- ## Timeouts
73
-
74
- ### Python 3.11+: `asyncio.timeout`
75
-
76
- ```python
77
- async def with_deadline():
78
- async with asyncio.timeout(5.0):
79
- return await slow_operation()
80
-
81
- # Nested / reschedulable
82
- async with asyncio.timeout(None) as cm:
83
- cm.reschedule(asyncio.get_running_loop().time() + 10)
84
- ...
85
- ```
86
-
87
- ### Older: `asyncio.wait_for`
88
-
89
- ```python
90
- result = await asyncio.wait_for(slow_operation(), timeout=5.0)
91
- ```
92
-
93
- ## Cancellation
94
-
95
- Cancellation is a `CancelledError` injected at the next `await`. Rules:
96
-
97
- - **Never swallow `CancelledError`** except to run cleanup; always re-raise.
98
- - Cleanup in `finally` must itself be fast and cancellation-safe.
99
- - `asyncio.shield()` protects a critical section from outer cancellation.
100
-
101
- ```python
102
- async def worker():
103
- try:
104
- while True:
105
- await do_work()
106
- except asyncio.CancelledError:
107
- await cleanup() # fast, idempotent
108
- raise # REQUIRED — don't swallow
109
-
110
- async def critical_write(path, data):
111
- # Outer cancel won't interrupt the write
112
- await asyncio.shield(write_file(path, data))
113
- ```
114
-
115
- ## Offloading blocking code
116
-
117
- Never call blocking code from an async function — it stalls the event loop for everyone.
118
-
119
- ```python
120
- # Wrong: blocks the event loop
121
- async def handler(req):
122
- data = requests.get(req.url).text # ❌ blocking library in async code
123
- return data
124
-
125
- # Right: offload to thread pool
126
- async def handler(req):
127
- data = await asyncio.to_thread(requests.get, req.url)
128
- return data.text
129
-
130
- # Or use an async-native library
131
- async def handler(req):
132
- async with httpx.AsyncClient() as client:
133
- r = await client.get(req.url)
134
- return r.text
135
- ```
136
-
137
- `time.sleep()` in async code is always a bug — use `await asyncio.sleep()`.
138
-
139
- ## Async iteration & generators
140
-
141
- ```python
142
- # Async iterator
143
- async def stream_lines(url: str) -> AsyncIterator[str]:
144
- async with httpx.AsyncClient() as client:
145
- async with client.stream("GET", url) as resp:
146
- async for line in resp.aiter_lines():
147
- yield line
148
-
149
- async for line in stream_lines(url):
150
- process(line)
151
-
152
- # Async comprehension
153
- urls = [u async for u in stream_urls() if u.startswith("https://")]
154
- ```
155
-
156
- ## Async context managers
157
-
158
- ```python
159
- from contextlib import asynccontextmanager
160
-
161
- @asynccontextmanager
162
- async def db_transaction(conn):
163
- tx = await conn.begin()
164
- try:
165
- yield tx
166
- except Exception:
167
- await tx.rollback()
168
- raise
169
- else:
170
- await tx.commit()
171
-
172
- async with db_transaction(conn) as tx:
173
- await tx.execute(...)
174
- ```
175
-
176
- ## Backpressure with semaphores
177
-
178
- Limit in-flight concurrency when the downstream can't take unlimited load.
179
-
180
- ```python
181
- async def fetch_bounded(urls: list[str], limit: int = 10) -> list[str]:
182
- sem = asyncio.Semaphore(limit)
183
-
184
- async def one(u):
185
- async with sem:
186
- return await fetch(u)
187
-
188
- async with asyncio.TaskGroup() as tg:
189
- tasks = [tg.create_task(one(u)) for u in urls]
190
- return [t.result() for t in tasks]
191
- ```
192
-
193
- ## Anti-patterns
194
-
195
- | Anti-pattern | Fix |
196
- |---|---|
197
- | `asyncio.run()` inside async code | Pass awaitables up; `asyncio.run()` is the entry point only |
198
- | `time.sleep()` in async | `await asyncio.sleep()` |
199
- | `requests` / blocking HTTP in async | Use `httpx.AsyncClient` or `asyncio.to_thread` |
200
- | Swallowing `CancelledError` | Always re-raise after cleanup |
201
- | Fire-and-forget `asyncio.create_task(x)` without keeping a reference | Reference dropped → task can be garbage-collected mid-flight |
202
- | Mixing threads and asyncio naively | Use `asyncio.to_thread` / `loop.run_in_executor`, not raw `threading` |
203
- | Using async just because "it's modern" | Async has real overhead; pure CPU or simple scripts don't need it |
204
-
205
- ## Running background tasks correctly
206
-
207
- ```python
208
- # Wrong: task may be GC'd before it runs
209
- asyncio.create_task(background())
210
-
211
- # Right: keep a reference
212
- _background_tasks: set[asyncio.Task] = set()
213
-
214
- def schedule(coro):
215
- t = asyncio.create_task(coro)
216
- _background_tasks.add(t)
217
- t.add_done_callback(_background_tasks.discard)
218
- ```
@@ -1,254 +0,0 @@
1
- # Python Error Handling
2
-
3
- Exception design and handling patterns.
4
-
5
- ## Specific exceptions only
6
-
7
- Never `except:` (bare). Never `except Exception:` except at the top of a daemon/server loop.
8
-
9
- ```python
10
- # Good: specific exceptions, each with its own response
11
- def load_config(path: str) -> Config:
12
- try:
13
- with open(path) as f:
14
- return Config.from_json(f.read())
15
- except FileNotFoundError as e:
16
- raise ConfigError(f"Config not found: {path}") from e
17
- except json.JSONDecodeError as e:
18
- raise ConfigError(f"Invalid JSON in {path}: {e}") from e
19
- except PermissionError as e:
20
- raise ConfigError(f"No read permission: {path}") from e
21
-
22
- # Bad: silent catch-all
23
- def load_config(path: str) -> Config:
24
- try:
25
- with open(path) as f:
26
- return Config.from_json(f.read())
27
- except:
28
- return None # caller has no idea what went wrong
29
- ```
30
-
31
- ## Exception chaining (`from`)
32
-
33
- Always preserve the original traceback when re-raising.
34
-
35
- ```python
36
- def process(data: str) -> Result:
37
- try:
38
- parsed = json.loads(data)
39
- except json.JSONDecodeError as e:
40
- # `from e` attaches the original exception
41
- raise ValueError(f"Bad data: {data!r}") from e
42
-
43
- # Output traceback shows both:
44
- # ValueError: Bad data: '...'
45
- # The above exception was the direct cause of the following:
46
- # json.JSONDecodeError: ...
47
- ```
48
-
49
- Use `raise ... from None` to **hide** the chain (rare — only when the chain is noise).
50
-
51
- ## Custom exception hierarchy
52
-
53
- One base class per module/service. Subclasses for specific failures.
54
-
55
- ```python
56
- # errors.py
57
- class AppError(Exception):
58
- """Base exception for this application."""
59
-
60
- class ValidationError(AppError):
61
- """Input validation failed."""
62
-
63
- class NotFoundError(AppError):
64
- """Resource not found."""
65
-
66
- class AuthError(AppError):
67
- """Authentication or authorization failed."""
68
-
69
- class ExternalServiceError(AppError):
70
- """Upstream dependency failed."""
71
-
72
- # Usage
73
- def get_user(user_id: str) -> User:
74
- user = db.find_user(user_id)
75
- if not user:
76
- raise NotFoundError(f"User {user_id}")
77
- return user
78
-
79
- # Callers catch at the right level
80
- try:
81
- user = get_user(uid)
82
- except NotFoundError:
83
- return 404
84
- except AppError:
85
- return 500 # any other app error
86
- except Exception:
87
- logger.exception("unexpected")
88
- return 500
89
- ```
90
-
91
- ## Rules
92
-
93
- | Rule | Why |
94
- |---|---|
95
- | Catch only exceptions you can handle | If you can't recover, let it propagate |
96
- | Never catch `BaseException` | That includes `KeyboardInterrupt` and `SystemExit` |
97
- | Log before re-raising | Otherwise the log line says "unexpected" when you actually expected it |
98
- | Specific exception types | Callers can pattern-match; `Exception` forces logs to be the only debugging aid |
99
- | Use `try/except/else` for 2-phase operations | `else` runs only if no exception — clearer than nesting |
100
-
101
- ## `try/except/else/finally`
102
-
103
- ```python
104
- def fetch(url: str) -> Response:
105
- try:
106
- response = http.get(url)
107
- except TimeoutError:
108
- return fallback_response()
109
- except HTTPError as e:
110
- logger.error("http error: %s", e)
111
- raise
112
- else:
113
- # runs only on success — cleaner than putting this in try
114
- cache.set(url, response)
115
- return response
116
- finally:
117
- # always runs
118
- release_connection()
119
- ```
120
-
121
- ## Context manager for error handling
122
-
123
- For repeated try/except patterns, wrap in a context manager.
124
-
125
- ```python
126
- from contextlib import contextmanager
127
-
128
- @contextmanager
129
- def as_domain_error(target_type: type[Exception], msg: str):
130
- """Re-raise any exception as target_type(msg)."""
131
- try:
132
- yield
133
- except Exception as e:
134
- raise target_type(msg) from e
135
-
136
- # Usage
137
- with as_domain_error(ConfigError, "Failed to load config"):
138
- with open('config.json') as f:
139
- return json.load(f)
140
- ```
141
-
142
- ## Validation vs exceptions
143
-
144
- For user-input validation, prefer returning a result object over raising.
145
-
146
- ```python
147
- from dataclasses import dataclass
148
-
149
- @dataclass
150
- class ValidationResult:
151
- valid: bool
152
- errors: list[str]
153
-
154
- def validate_user(data: dict) -> ValidationResult:
155
- errors = []
156
- if not data.get('email'):
157
- errors.append('email required')
158
- if 'age' in data and not 0 <= data['age'] <= 150:
159
- errors.append('age must be 0-150')
160
- return ValidationResult(valid=not errors, errors=errors)
161
-
162
- # Caller
163
- result = validate_user(input)
164
- if not result.valid:
165
- return {"errors": result.errors}, 400
166
- ```
167
-
168
- Raise exceptions for **exceptional** conditions. Validation failure is **expected**.
169
-
170
- ## Exception groups (Python 3.11+)
171
-
172
- For reporting multiple failures at once — concurrent tasks, batch operations, validation aggregates. Use `ExceptionGroup` and `except*`.
173
-
174
- ```python
175
- def import_batch(records: list[dict]) -> None:
176
- errors = []
177
- for r in records:
178
- try:
179
- import_one(r)
180
- except (ValidationError, DBError) as e:
181
- errors.append(e)
182
- if errors:
183
- raise ExceptionGroup("batch import failed", errors)
184
-
185
- # Caller: except* matches by type across the group
186
- try:
187
- import_batch(data)
188
- except* ValidationError as eg:
189
- for e in eg.exceptions:
190
- log.warning("invalid: %s", e)
191
- except* DBError as eg:
192
- for e in eg.exceptions:
193
- log.error("db failure: %s", e)
194
- ```
195
-
196
- `asyncio.TaskGroup` (3.11+) raises `ExceptionGroup` natively when multiple child tasks fail.
197
-
198
- ## Logging exceptions
199
-
200
- Use `logger.exception()` inside an except block — it auto-includes the traceback.
201
-
202
- ```python
203
- import logging
204
- logger = logging.getLogger(__name__)
205
-
206
- try:
207
- risky_operation()
208
- except ExternalServiceError:
209
- # logger.exception is equivalent to logger.error(exc_info=True)
210
- logger.exception("External service failed")
211
- # Re-raise or handle
212
- raise
213
- ```
214
-
215
- **Never** use `print(e)` in production — print goes to stdout, not your log pipeline, and loses the traceback.
216
-
217
- ## Common mistakes
218
-
219
- ```python
220
- # ❌ Mutating `except` clause without `from`
221
- try: ...
222
- except ValueError:
223
- raise TypeError("wrong type") # original traceback lost
224
-
225
- # ✅
226
- try: ...
227
- except ValueError as e:
228
- raise TypeError("wrong type") from e
229
-
230
-
231
- # ❌ Catching to "convert to None"
232
- try:
233
- return lookup(key)
234
- except KeyError:
235
- return None # if this is your pattern, use dict.get(key) — simpler
236
-
237
- # ✅
238
- return mapping.get(key)
239
-
240
-
241
- # ❌ Overcatching hides bugs
242
- try:
243
- data = get_user(uid)
244
- data.name = new_name # if this raises, you misclassify it as "user not found"
245
- except Exception:
246
- return 404
247
-
248
- # ✅
249
- try:
250
- data = get_user(uid)
251
- except NotFoundError:
252
- return 404
253
- data.name = new_name # let real bugs propagate
254
- ```