@coralai/sps-cli 0.55.13 → 0.56.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 (428) 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 +121 -0
  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/engines/SmartArrangeEngine.d.ts +75 -0
  141. package/dist/engines/SmartArrangeEngine.d.ts.map +1 -0
  142. package/dist/engines/SmartArrangeEngine.js +112 -0
  143. package/dist/engines/SmartArrangeEngine.js.map +1 -0
  144. package/dist/engines/StageEngine.d.ts +3 -17
  145. package/dist/engines/StageEngine.d.ts.map +1 -1
  146. package/dist/engines/StageEngine.js +13 -91
  147. package/dist/engines/StageEngine.js.map +1 -1
  148. package/dist/engines/smartarrange/AcpWorkerExec.d.ts +35 -0
  149. package/dist/engines/smartarrange/AcpWorkerExec.d.ts.map +1 -0
  150. package/dist/engines/smartarrange/AcpWorkerExec.js +71 -0
  151. package/dist/engines/smartarrange/AcpWorkerExec.js.map +1 -0
  152. package/dist/engines/smartarrange/cardSink.d.ts +29 -0
  153. package/dist/engines/smartarrange/cardSink.d.ts.map +1 -0
  154. package/dist/engines/smartarrange/cardSink.js +43 -0
  155. package/dist/engines/smartarrange/cardSink.js.map +1 -0
  156. package/dist/engines/smartarrange/runner.d.ts +24 -0
  157. package/dist/engines/smartarrange/runner.d.ts.map +1 -0
  158. package/dist/engines/smartarrange/runner.js +116 -0
  159. package/dist/engines/smartarrange/runner.js.map +1 -0
  160. package/dist/engines/smartarrange/screenshot.d.ts +5 -0
  161. package/dist/engines/smartarrange/screenshot.d.ts.map +1 -0
  162. package/dist/engines/smartarrange/screenshot.js +117 -0
  163. package/dist/engines/smartarrange/screenshot.js.map +1 -0
  164. package/dist/main.js +127 -92
  165. package/dist/main.js.map +1 -1
  166. package/dist/manager/worker-manager-impl.d.ts.map +1 -1
  167. package/dist/manager/worker-manager-impl.js +7 -0
  168. package/dist/manager/worker-manager-impl.js.map +1 -1
  169. package/dist/providers/LLMClient.d.ts +32 -0
  170. package/dist/providers/LLMClient.d.ts.map +1 -0
  171. package/dist/providers/LLMClient.js +108 -0
  172. package/dist/providers/LLMClient.js.map +1 -0
  173. package/dist/providers/MarkdownTaskBackend.d.ts.map +1 -1
  174. package/dist/providers/MarkdownTaskBackend.js +3 -2
  175. package/dist/providers/MarkdownTaskBackend.js.map +1 -1
  176. package/dist/providers/llm/chatTools.d.ts +11 -0
  177. package/dist/providers/llm/chatTools.d.ts.map +1 -0
  178. package/dist/providers/llm/chatTools.js +57 -0
  179. package/dist/providers/llm/chatTools.js.map +1 -0
  180. package/dist/providers/llm/codexAuth.d.ts +8 -0
  181. package/dist/providers/llm/codexAuth.d.ts.map +1 -0
  182. package/dist/providers/llm/codexAuth.js +57 -0
  183. package/dist/providers/llm/codexAuth.js.map +1 -0
  184. package/dist/providers/llm/codexModel.d.ts +14 -0
  185. package/dist/providers/llm/codexModel.d.ts.map +1 -0
  186. package/dist/providers/llm/codexModel.js +96 -0
  187. package/dist/providers/llm/codexModel.js.map +1 -0
  188. package/dist/providers/llm/localSubscription.d.ts +15 -0
  189. package/dist/providers/llm/localSubscription.d.ts.map +1 -0
  190. package/dist/providers/llm/localSubscription.js +66 -0
  191. package/dist/providers/llm/localSubscription.js.map +1 -0
  192. package/dist/providers/llm/modelFactory.d.ts +14 -0
  193. package/dist/providers/llm/modelFactory.d.ts.map +1 -0
  194. package/dist/providers/llm/modelFactory.js +22 -0
  195. package/dist/providers/llm/modelFactory.js.map +1 -0
  196. package/dist/providers/llm/monitorSkills.d.ts +6 -0
  197. package/dist/providers/llm/monitorSkills.d.ts.map +1 -0
  198. package/dist/providers/llm/monitorSkills.js +37 -0
  199. package/dist/providers/llm/monitorSkills.js.map +1 -0
  200. package/dist/providers/llm/probeTools.d.ts +7 -0
  201. package/dist/providers/llm/probeTools.d.ts.map +1 -0
  202. package/dist/providers/llm/probeTools.js +84 -0
  203. package/dist/providers/llm/probeTools.js.map +1 -0
  204. package/dist/providers/llm/providers.d.ts +26 -0
  205. package/dist/providers/llm/providers.d.ts.map +1 -0
  206. package/dist/providers/llm/providers.js +68 -0
  207. package/dist/providers/llm/providers.js.map +1 -0
  208. package/dist/providers/llm/skillTools.d.ts +4 -0
  209. package/dist/providers/llm/skillTools.d.ts.map +1 -0
  210. package/dist/providers/llm/skillTools.js +42 -0
  211. package/dist/providers/llm/skillTools.js.map +1 -0
  212. package/dist/providers/llm/workerTools.d.ts +9 -0
  213. package/dist/providers/llm/workerTools.d.ts.map +1 -0
  214. package/dist/providers/llm/workerTools.js +111 -0
  215. package/dist/providers/llm/workerTools.js.map +1 -0
  216. package/dist/providers/mcp/spsMcpServer.d.ts +15 -0
  217. package/dist/providers/mcp/spsMcpServer.d.ts.map +1 -0
  218. package/dist/providers/mcp/spsMcpServer.js +67 -0
  219. package/dist/providers/mcp/spsMcpServer.js.map +1 -0
  220. package/dist/providers/mcp/spsMcpStdio.d.ts +2 -0
  221. package/dist/providers/mcp/spsMcpStdio.d.ts.map +1 -0
  222. package/dist/providers/mcp/spsMcpStdio.js +32 -0
  223. package/dist/providers/mcp/spsMcpStdio.js.map +1 -0
  224. package/dist/providers/mcp/spsMcpStdioConfig.d.ts +11 -0
  225. package/dist/providers/mcp/spsMcpStdioConfig.d.ts.map +1 -0
  226. package/dist/providers/mcp/spsMcpStdioConfig.js +19 -0
  227. package/dist/providers/mcp/spsMcpStdioConfig.js.map +1 -0
  228. package/dist/server.d.ts +23 -0
  229. package/dist/server.d.ts.map +1 -1
  230. package/dist/server.js +23 -0
  231. package/dist/server.js.map +1 -1
  232. package/dist/services/ChatService.d.ts +8 -0
  233. package/dist/services/ChatService.d.ts.map +1 -1
  234. package/dist/services/ChatService.js +2 -0
  235. package/dist/services/ChatService.js.map +1 -1
  236. package/dist/services/LogService.d.ts +1 -1
  237. package/dist/services/LogService.d.ts.map +1 -1
  238. package/dist/services/LogService.js +3 -2
  239. package/dist/services/LogService.js.map +1 -1
  240. package/dist/services/ProjectService.d.ts +12 -2
  241. package/dist/services/ProjectService.d.ts.map +1 -1
  242. package/dist/services/ProjectService.js +1 -0
  243. package/dist/services/ProjectService.js.map +1 -1
  244. package/dist/services/SkillService.js +11 -13
  245. package/dist/services/SkillService.js.map +1 -1
  246. package/dist/services/SmartArrangeService.d.ts +12 -0
  247. package/dist/services/SmartArrangeService.d.ts.map +1 -0
  248. package/dist/services/SmartArrangeService.js +37 -0
  249. package/dist/services/SmartArrangeService.js.map +1 -0
  250. package/dist/services/SystemService.d.ts +20 -0
  251. package/dist/services/SystemService.d.ts.map +1 -1
  252. package/dist/services/SystemService.js +93 -0
  253. package/dist/services/SystemService.js.map +1 -1
  254. package/dist/services/WorkerService.d.ts +8 -0
  255. package/dist/services/WorkerService.d.ts.map +1 -1
  256. package/dist/services/WorkerService.js +73 -3
  257. package/dist/services/WorkerService.js.map +1 -1
  258. package/dist/services/container.d.ts +2 -0
  259. package/dist/services/container.d.ts.map +1 -1
  260. package/dist/services/container.js +2 -0
  261. package/dist/services/container.js.map +1 -1
  262. package/dist/shared/localTime.d.ts +8 -0
  263. package/dist/shared/localTime.d.ts.map +1 -0
  264. package/dist/shared/localTime.js +11 -0
  265. package/dist/shared/localTime.js.map +1 -0
  266. package/dist/shared/runtimePaths.d.ts +1 -1
  267. package/dist/shared/runtimePaths.d.ts.map +1 -1
  268. package/dist/shared/runtimePaths.js +2 -2
  269. package/dist/shared/runtimePaths.js.map +1 -1
  270. package/dist/shared/runtimeSchemas.d.ts +74 -245
  271. package/dist/shared/runtimeSchemas.d.ts.map +1 -1
  272. package/dist/shared/runtimeSchemas.js +2 -2
  273. package/dist/shared/runtimeSchemas.js.map +1 -1
  274. package/monitor-skills/probe-playbook/SKILL.md +32 -0
  275. package/monitor-skills/visual-rubric/SKILL.md +34 -0
  276. package/package.json +8 -8
  277. package/project-template/.claude/hooks/stop.sh +3 -1
  278. package/dist/console-assets/assets/index-BvWWj69G.js +0 -557
  279. package/dist/console-assets/assets/index-Eo4PuNPl.css +0 -10
  280. package/dist/interfaces/ACPClient.d.ts +0 -107
  281. package/dist/interfaces/ACPClient.d.ts.map +0 -1
  282. package/dist/interfaces/ACPClient.js +0 -17
  283. package/dist/interfaces/ACPClient.js.map +0 -1
  284. package/dist/interfaces/AgentRuntime.d.ts +0 -40
  285. package/dist/interfaces/AgentRuntime.d.ts.map +0 -1
  286. package/dist/interfaces/AgentRuntime.js +0 -17
  287. package/dist/interfaces/AgentRuntime.js.map +0 -1
  288. package/dist/manager/agentmemory.d.ts +0 -6
  289. package/dist/manager/agentmemory.d.ts.map +0 -1
  290. package/dist/manager/agentmemory.js +0 -73
  291. package/dist/manager/agentmemory.js.map +0 -1
  292. package/dist/models/acp.d.ts +0 -64
  293. package/dist/models/acp.d.ts.map +0 -1
  294. package/dist/models/acp.js +0 -17
  295. package/dist/models/acp.js.map +0 -1
  296. package/dist/providers/LocalACPClient.d.ts +0 -27
  297. package/dist/providers/LocalACPClient.d.ts.map +0 -1
  298. package/dist/providers/LocalACPClient.js +0 -26
  299. package/dist/providers/LocalACPClient.js.map +0 -1
  300. package/dist/providers/adapters/AcpSdkAdapter.d.ts +0 -24
  301. package/dist/providers/adapters/AcpSdkAdapter.d.ts.map +0 -1
  302. package/dist/providers/adapters/AcpSdkAdapter.js +0 -439
  303. package/dist/providers/adapters/AcpSdkAdapter.js.map +0 -1
  304. package/dist/providers/adapters/acp-fs-handlers.d.ts +0 -26
  305. package/dist/providers/adapters/acp-fs-handlers.d.ts.map +0 -1
  306. package/dist/providers/adapters/acp-fs-handlers.js +0 -61
  307. package/dist/providers/adapters/acp-fs-handlers.js.map +0 -1
  308. package/dist/providers/adapters/acp-permissions.d.ts +0 -42
  309. package/dist/providers/adapters/acp-permissions.d.ts.map +0 -1
  310. package/dist/providers/adapters/acp-permissions.js +0 -76
  311. package/dist/providers/adapters/acp-permissions.js.map +0 -1
  312. package/dist/providers/adapters/acp-session-accumulator.d.ts +0 -55
  313. package/dist/providers/adapters/acp-session-accumulator.d.ts.map +0 -1
  314. package/dist/providers/adapters/acp-session-accumulator.js +0 -133
  315. package/dist/providers/adapters/acp-session-accumulator.js.map +0 -1
  316. package/dist/providers/adapters/acp-terminal-manager.d.ts +0 -56
  317. package/dist/providers/adapters/acp-terminal-manager.d.ts.map +0 -1
  318. package/dist/providers/adapters/acp-terminal-manager.js +0 -127
  319. package/dist/providers/adapters/acp-terminal-manager.js.map +0 -1
  320. package/project-template/logs/.gitkeep +0 -0
  321. package/skills/architecture-decision-records/SKILL.md +0 -207
  322. package/skills/backend/SKILL.md +0 -62
  323. package/skills/backend/references/api-design.md +0 -168
  324. package/skills/backend/references/caching.md +0 -181
  325. package/skills/backend/references/data-access.md +0 -173
  326. package/skills/backend/references/layering.md +0 -181
  327. package/skills/backend/references/observability.md +0 -190
  328. package/skills/backend/references/resilience.md +0 -201
  329. package/skills/backend/references/security.md +0 -186
  330. package/skills/backend-architect/SKILL.md +0 -119
  331. package/skills/code-reviewer/SKILL.md +0 -143
  332. package/skills/coding-standards/SKILL.md +0 -60
  333. package/skills/coding-standards/references/clean-code.md +0 -258
  334. package/skills/coding-standards/references/code-review.md +0 -192
  335. package/skills/coding-standards/references/commits-and-prs.md +0 -226
  336. package/skills/coding-standards/references/error-strategy.md +0 -193
  337. package/skills/coding-standards/references/naming.md +0 -185
  338. package/skills/coding-standards/references/tdd.md +0 -171
  339. package/skills/database/SKILL.md +0 -53
  340. package/skills/database/references/indexing.md +0 -190
  341. package/skills/database/references/migrations.md +0 -199
  342. package/skills/database/references/nosql.md +0 -185
  343. package/skills/database/references/queries.md +0 -295
  344. package/skills/database/references/scaling.md +0 -203
  345. package/skills/database/references/schema.md +0 -191
  346. package/skills/database-optimizer/SKILL.md +0 -168
  347. package/skills/debugging-workflow/SKILL.md +0 -244
  348. package/skills/dev-worker/SKILL.md +0 -40
  349. package/skills/dev-worker/references/architect.md +0 -139
  350. package/skills/dev-worker/references/backend.md +0 -163
  351. package/skills/dev-worker/references/frontend.md +0 -122
  352. package/skills/dev-worker/references/fullstack.md +0 -179
  353. package/skills/dev-worker/references/optimizer.md +0 -151
  354. package/skills/dev-worker/references/phaser.md +0 -109
  355. package/skills/dev-worker/references/prototyper.md +0 -171
  356. package/skills/dev-worker/references/reviewer.md +0 -122
  357. package/skills/dev-worker/references/security.md +0 -154
  358. package/skills/dev-worker/references/senior.md +0 -155
  359. package/skills/dev-worker/references/typescript.md +0 -65
  360. package/skills/dev-worker/references/writer.md +0 -201
  361. package/skills/devops/SKILL.md +0 -55
  362. package/skills/devops/references/ci-cd.md +0 -204
  363. package/skills/devops/references/containers.md +0 -272
  364. package/skills/devops/references/deploy.md +0 -201
  365. package/skills/devops/references/iac.md +0 -252
  366. package/skills/devops/references/observability.md +0 -228
  367. package/skills/devops/references/secrets.md +0 -178
  368. package/skills/devops-automator/SKILL.md +0 -164
  369. package/skills/frontend/SKILL.md +0 -52
  370. package/skills/frontend/references/accessibility.md +0 -222
  371. package/skills/frontend/references/components.md +0 -206
  372. package/skills/frontend/references/performance.md +0 -219
  373. package/skills/frontend/references/routing.md +0 -209
  374. package/skills/frontend/references/state.md +0 -190
  375. package/skills/frontend/references/testing.md +0 -216
  376. package/skills/frontend-developer/SKILL.md +0 -115
  377. package/skills/git-workflow/SKILL.md +0 -355
  378. package/skills/golang/SKILL.md +0 -49
  379. package/skills/golang/references/concurrency.md +0 -284
  380. package/skills/golang/references/errors.md +0 -241
  381. package/skills/golang/references/idioms.md +0 -285
  382. package/skills/golang/references/testing.md +0 -238
  383. package/skills/java/SKILL.md +0 -50
  384. package/skills/java/references/concurrency.md +0 -194
  385. package/skills/java/references/idioms.md +0 -283
  386. package/skills/java/references/testing.md +0 -228
  387. package/skills/kotlin/SKILL.md +0 -47
  388. package/skills/kotlin/references/coroutines.md +0 -240
  389. package/skills/kotlin/references/idioms.md +0 -268
  390. package/skills/kotlin/references/testing.md +0 -219
  391. package/skills/mobile/SKILL.md +0 -50
  392. package/skills/mobile/references/architecture.md +0 -204
  393. package/skills/mobile/references/navigation.md +0 -158
  394. package/skills/mobile/references/performance.md +0 -152
  395. package/skills/mobile/references/platform.md +0 -166
  396. package/skills/mobile/references/state-and-data.md +0 -174
  397. package/skills/python/SKILL.md +0 -51
  398. package/skills/python/THIRD_PARTY.md +0 -14
  399. package/skills/python/references/async.md +0 -218
  400. package/skills/python/references/error-handling.md +0 -254
  401. package/skills/python/references/idioms.md +0 -279
  402. package/skills/python/references/packaging.md +0 -233
  403. package/skills/python/references/testing.md +0 -269
  404. package/skills/python/references/typing.md +0 -292
  405. package/skills/qa-tester/SKILL.md +0 -186
  406. package/skills/rust/SKILL.md +0 -50
  407. package/skills/rust/references/async.md +0 -224
  408. package/skills/rust/references/errors.md +0 -240
  409. package/skills/rust/references/ownership.md +0 -263
  410. package/skills/rust/references/testing.md +0 -274
  411. package/skills/rust/references/traits.md +0 -250
  412. package/skills/security-engineer/SKILL.md +0 -157
  413. package/skills/sps-memory/SKILL.md +0 -213
  414. package/skills/sps-pipeline/SKILL.md +0 -476
  415. package/skills/swift/SKILL.md +0 -48
  416. package/skills/swift/references/concurrency.md +0 -280
  417. package/skills/swift/references/idioms.md +0 -334
  418. package/skills/swift/references/testing.md +0 -229
  419. package/skills/tax-worker/SKILL.md +0 -150
  420. package/skills/tax-worker/references/account-codes.md +0 -165
  421. package/skills/typescript/SKILL.md +0 -51
  422. package/skills/typescript/references/async.md +0 -241
  423. package/skills/typescript/references/errors.md +0 -208
  424. package/skills/typescript/references/idioms.md +0 -246
  425. package/skills/typescript/references/testing.md +0 -225
  426. package/skills/typescript/references/tooling.md +0 -208
  427. package/skills/typescript/references/types.md +0 -259
  428. 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
- ```