@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,279 +0,0 @@
1
- # Python Idioms
2
-
3
- Core Pythonic patterns. Language-focused (no architecture here).
4
-
5
- ## EAFP — Easier to Ask Forgiveness Than Permission
6
-
7
- Python prefers exception handling over condition checking.
8
-
9
- ```python
10
- # Good: EAFP
11
- def get_value(d: dict, key: str, default=None):
12
- try:
13
- return d[key]
14
- except KeyError:
15
- return default
16
-
17
- # Bad: LBYL (Look Before You Leap) — race condition risk, slower, less Pythonic
18
- def get_value(d: dict, key: str, default=None):
19
- if key in d:
20
- return d[key]
21
- return default
22
- ```
23
-
24
- When to use which: EAFP is Pythonic for dict / attr / file access. LBYL is fine for user-facing validation where the failure message matters.
25
-
26
- ## Comprehensions
27
-
28
- Prefer comprehensions over `map`/`filter` + lambda. Readability wins.
29
-
30
- ```python
31
- # List / set / dict comprehensions
32
- active_names = [u.name for u in users if u.is_active]
33
- unique_tags = {t.strip() for tag_group in raw for t in tag_group.split(',')}
34
- user_ages = {u.id: u.age for u in users}
35
-
36
- # Generator expression (lazy, memory-efficient)
37
- total = sum(order.total for order in orders if order.paid)
38
- ```
39
-
40
- **Rule**: If the comprehension doesn't fit on 2 lines, rewrite as a `for` loop. Nested comprehensions (`[x for x in y for z in w]`) are almost always unreadable.
41
-
42
- ## Generator Functions
43
-
44
- Lazy iteration for large datasets. Use `yield` to avoid loading everything into memory.
45
-
46
- ```python
47
- def read_large_file(path: str) -> Iterator[str]:
48
- with open(path) as f:
49
- for line in f:
50
- yield line.strip()
51
-
52
- # Caller: streams one line at a time
53
- for line in read_large_file('huge.log'):
54
- process(line)
55
- ```
56
-
57
- Generator expressions (parentheses not brackets):
58
- ```python
59
- squared = (x * x for x in range(10_000_000)) # 0 memory allocated
60
- ```
61
-
62
- ## Context Managers (`with`)
63
-
64
- Use `with` for any resource (file, lock, DB conn, etc.). Never manual `open()` / `close()`.
65
-
66
- ```python
67
- # File
68
- with open('data.json') as f:
69
- data = json.load(f)
70
-
71
- # Multiple resources
72
- with open('in.txt') as src, open('out.txt', 'w') as dst:
73
- dst.write(src.read().upper())
74
-
75
- # Custom context manager (contextlib)
76
- from contextlib import contextmanager
77
-
78
- @contextmanager
79
- def temp_directory():
80
- d = tempfile.mkdtemp()
81
- try:
82
- yield d
83
- finally:
84
- shutil.rmtree(d)
85
-
86
- with temp_directory() as d:
87
- # use d, auto-cleaned
88
- pass
89
- ```
90
-
91
- ## Decorators
92
-
93
- Use for cross-cutting concerns (logging, caching, timing, auth). Don't nest more than 2 deep.
94
-
95
- ```python
96
- # Simple decorator
97
- from functools import wraps
98
-
99
- def timed(func):
100
- @wraps(func) # preserve name, docstring, signature
101
- def wrapper(*args, **kwargs):
102
- start = time.perf_counter()
103
- result = func(*args, **kwargs)
104
- duration = time.perf_counter() - start
105
- logger.info(f"{func.__name__} took {duration:.3f}s")
106
- return result
107
- return wrapper
108
-
109
- @timed
110
- def expensive_operation(x: int) -> int:
111
- time.sleep(1)
112
- return x * 2
113
- ```
114
-
115
- Parameterized decorators (3 levels deep — use sparingly):
116
- ```python
117
- def retry(max_attempts: int = 3):
118
- def decorator(func):
119
- @wraps(func)
120
- def wrapper(*args, **kwargs):
121
- for attempt in range(max_attempts):
122
- try:
123
- return func(*args, **kwargs)
124
- except Exception:
125
- if attempt == max_attempts - 1:
126
- raise
127
- return wrapper
128
- return decorator
129
-
130
- @retry(max_attempts=5)
131
- def flaky_api_call(): ...
132
- ```
133
-
134
- ## Data Classes
135
-
136
- Prefer `dataclass` over manual `__init__` for value objects. Use `frozen=True` for immutability.
137
-
138
- ```python
139
- from dataclasses import dataclass, field
140
- from typing import ClassVar
141
-
142
- @dataclass(frozen=True, slots=True)
143
- class User:
144
- id: str
145
- name: str
146
- email: str
147
- roles: list[str] = field(default_factory=list) # never mutable default!
148
- created_at: datetime = field(default_factory=datetime.now)
149
-
150
- # Class-level constant
151
- MAX_ROLES: ClassVar[int] = 10
152
- ```
153
-
154
- **Rules**:
155
- - `slots=True` for performance (Python 3.10+)
156
- - `frozen=True` if the object shouldn't change after creation
157
- - Never use mutable default (`roles: list[str] = []`) — use `field(default_factory=list)`
158
- - `ClassVar` for constants that shouldn't become instance attrs
159
-
160
- ## `pathlib` over `os.path`
161
-
162
- ```python
163
- from pathlib import Path
164
-
165
- # Good
166
- config = Path.home() / '.myapp' / 'config.json'
167
- if config.exists():
168
- data = json.loads(config.read_text())
169
- for log in Path('logs').glob('*.log'):
170
- process(log)
171
-
172
- # Bad
173
- import os
174
- config = os.path.join(os.path.expanduser('~'), '.myapp', 'config.json')
175
- if os.path.exists(config):
176
- with open(config) as f:
177
- data = json.load(f)
178
- ```
179
-
180
- ## `match`/`case` — structural pattern matching (Python 3.10+)
181
-
182
- Use for dispatch on shape, not just value. For simple value checks, `if/elif` is still cleaner.
183
-
184
- ```python
185
- def describe(point):
186
- match point:
187
- case (0, 0):
188
- return "origin"
189
- case (0, y):
190
- return f"y-axis at {y}"
191
- case (x, 0):
192
- return f"x-axis at {x}"
193
- case (x, y) if x == y:
194
- return f"diagonal at {x}"
195
- case (x, y):
196
- return f"point ({x}, {y})"
197
- case _:
198
- return "not a point"
199
-
200
- # Class patterns — great for ADTs / sum types
201
- match event:
202
- case Click(x=x, y=y):
203
- handle_click(x, y)
204
- case KeyPress(key="q"):
205
- quit()
206
- case KeyPress(key=k):
207
- handle_key(k)
208
- ```
209
-
210
- **When NOT to use**: straightforward value checks (`if x == 1: ... elif x == 2: ...`). Pattern matching shines for destructuring nested shapes.
211
-
212
- ## Walrus operator `:=` (Python 3.8+)
213
-
214
- Assignment expression — assign and use in the same statement. Use sparingly.
215
-
216
- ```python
217
- # Good: avoid double-reading / double-computing
218
- while chunk := f.read(8192):
219
- process(chunk)
220
-
221
- if (n := len(data)) > 10:
222
- print(f"Too many items ({n})")
223
-
224
- # Good in comprehensions: avoid recomputing
225
- results = [y for x in items if (y := expensive(x)) is not None]
226
-
227
- # Bad: over-use where a regular assignment is clearer
228
- if (user := db.find(uid)) and user.active and (perms := user.get_perms()) and "admin" in perms:
229
- ...
230
- # Prefer:
231
- user = db.find(uid)
232
- if user and user.active:
233
- perms = user.get_perms()
234
- if "admin" in perms: ...
235
- ```
236
-
237
- ## f-strings (Python 3.6+)
238
-
239
- Only use `.format()` or `%` for legacy code.
240
-
241
- ```python
242
- # Good
243
- msg = f"User {user.name} (id={user.id}) logged in at {when:%Y-%m-%d %H:%M}"
244
-
245
- # Also good: f-string expressions
246
- msg = f"Total: ${sum(o.amount for o in orders):,.2f}"
247
-
248
- # Python 3.8+: self-documenting expressions with =
249
- msg = f"{x=}, {y=}" # => "x=5, y=10"
250
-
251
- # Python 3.12+: f-strings accept any quotes, backslashes, and multiline
252
- msg = f"path: {Path('a') / 'b'}, lines:\n{"\n".join(items)}"
253
-
254
- # Bad
255
- msg = "User {} (id={}) logged in at {}".format(user.name, user.id, when)
256
- msg = "User %s (id=%d) logged in at %s" % (user.name, user.id, when)
257
- ```
258
-
259
- ## Forbidden patterns (auto-reject in code review)
260
-
261
- | Anti-pattern | Why bad | Fix |
262
- |---|---|---|
263
- | `def f(x=[])` | Mutable default shared across calls | `def f(x=None): x = x or []` |
264
- | `except:` (bare) | Catches SystemExit, KeyboardInterrupt | `except SomeError:` |
265
- | `from m import *` | Pollutes namespace, hides origin | explicit imports |
266
- | `global x` in functions | Hidden state | pass explicitly or use a class |
267
- | `type(x) == Foo` | Doesn't handle subclasses | `isinstance(x, Foo)` |
268
- | `if x == None` | Identity check, not equality | `if x is None` |
269
-
270
- ## Naming conventions (PEP 8)
271
-
272
- | Kind | Style | Example |
273
- |---|---|---|
274
- | Variables, functions | `snake_case` | `user_count`, `get_user()` |
275
- | Constants | `UPPER_SNAKE` | `MAX_RETRIES`, `DEFAULT_TIMEOUT` |
276
- | Classes | `PascalCase` | `UserService`, `HTTPClient` |
277
- | Private (intent) | `_leading_underscore` | `_internal_cache` |
278
- | Name mangling | `__double_leading` | `__private_attr` (use sparingly) |
279
- | Module, package | `snake_case` | `user_service.py`, `payment_gateway/` |
@@ -1,233 +0,0 @@
1
- # Python Packaging & Environments
2
-
3
- Modern Python packaging. Defaults: `pyproject.toml` + `uv` (or `pip` + `venv`). No `setup.py`, no `requirements.txt` pinning in libraries.
4
-
5
- ## Tool landscape (2024–2026)
6
-
7
- | Need | Tool | Notes |
8
- |---|---|---|
9
- | Env + lockfile + installer | **`uv`** | Fastest; Rust-based; drop-in for pip/venv/pip-tools/poetry |
10
- | Traditional installer | `pip` | Still the universal fallback |
11
- | Env isolation only | `venv` (stdlib) | Zero-dependency; fine for simple cases |
12
- | Project manager (alt) | `poetry`, `hatch`, `pdm` | Mature; pick one per project, don't mix |
13
- | Build backend | `hatchling`, `setuptools`, `flit-core`, `poetry-core` | Declared in `pyproject.toml` |
14
-
15
- Default recommendation: `uv` for new work. Its `pyproject.toml` is standard so projects stay portable.
16
-
17
- ## `pyproject.toml` — the one config file
18
-
19
- ```toml
20
- [project]
21
- name = "myapp"
22
- version = "0.1.0"
23
- description = "Short one-liner"
24
- readme = "README.md"
25
- requires-python = ">=3.11"
26
- license = { text = "MIT" }
27
- authors = [{ name = "Coral", email = "coral@example.com" }]
28
- dependencies = [
29
- "httpx>=0.27",
30
- "pydantic>=2.5",
31
- ]
32
-
33
- [project.optional-dependencies]
34
- dev = [
35
- "pytest>=8.0",
36
- "pytest-cov",
37
- "mypy",
38
- "ruff",
39
- ]
40
-
41
- [project.scripts]
42
- myapp = "myapp.cli:main" # creates a `myapp` executable on install
43
-
44
- [build-system]
45
- requires = ["hatchling"]
46
- build-backend = "hatchling.build"
47
-
48
- [tool.hatch.build.targets.wheel]
49
- packages = ["src/myapp"]
50
-
51
- [tool.ruff]
52
- line-length = 100
53
- target-version = "py311"
54
-
55
- [tool.mypy]
56
- strict = true
57
- python_version = "3.11"
58
- ```
59
-
60
- ## Project layout — `src/` over flat
61
-
62
- Keep source under `src/` so `import myapp` during tests uses the installed package, not the working directory. Catches "works locally, broken when installed" bugs early.
63
-
64
- ```
65
- myapp/
66
- ├── pyproject.toml
67
- ├── README.md
68
- ├── src/
69
- │ └── myapp/
70
- │ ├── __init__.py
71
- │ ├── cli.py
72
- │ └── services/
73
- │ └── user.py
74
- └── tests/
75
- ├── conftest.py
76
- └── test_user.py
77
- ```
78
-
79
- Avoid: top-level `myapp/` mixed with `tests/` — `sys.path` tricks mask import bugs.
80
-
81
- ## `uv` — day-to-day commands
82
-
83
- ```bash
84
- # Create project
85
- uv init myapp --package
86
-
87
- # Add / remove dependencies (updates pyproject.toml + uv.lock)
88
- uv add httpx pydantic
89
- uv add --dev pytest pytest-cov mypy ruff
90
- uv remove requests
91
-
92
- # Install everything (reproducible from lockfile)
93
- uv sync
94
-
95
- # Run anything inside the env
96
- uv run pytest
97
- uv run python -m myapp
98
- uv run ruff check src/
99
-
100
- # Pin Python version
101
- uv python pin 3.12
102
-
103
- # Build a wheel / sdist
104
- uv build
105
-
106
- # Upgrade dependencies
107
- uv lock --upgrade
108
- uv lock --upgrade-package httpx
109
- ```
110
-
111
- Commit `uv.lock` for **applications**. For **libraries**, don't commit it — let downstreams resolve against their own constraints.
112
-
113
- ## `pip` + `venv` — classic workflow
114
-
115
- ```bash
116
- python -m venv .venv
117
- source .venv/bin/activate # Windows: .venv\Scripts\activate
118
-
119
- pip install -e '.[dev]' # editable install with dev extras
120
- pip install --upgrade pip
121
-
122
- # Freeze what's installed (for apps, not libs)
123
- pip freeze > requirements.lock.txt
124
- pip install -r requirements.lock.txt
125
- ```
126
-
127
- Never `pip install` into the system Python. Use a venv per project.
128
-
129
- ## Dependency specification
130
-
131
- ```toml
132
- [project]
133
- dependencies = [
134
- "httpx>=0.27,<1.0", # library: allow a compatible range
135
- "pydantic~=2.5", # ~= means >=2.5,<3.0
136
- "requests; python_version<'3.11'", # conditional
137
- "rich[jupyter]>=13.0", # with extras
138
- ]
139
- ```
140
-
141
- | Specifier | Meaning | Use for |
142
- |---|---|---|
143
- | `pkg>=X.Y` | at least this version | libraries |
144
- | `pkg~=X.Y` | compatible release (=X.*, <X+1) | common default |
145
- | `pkg==X.Y.Z` | exact pin | applications with lockfile |
146
- | `pkg>=A,<B` | explicit range | upper bound on known-breaking releases |
147
-
148
- **Libraries**: loose constraints (`>=X`). **Applications**: tight lockfile (`uv.lock` or `requirements.lock.txt`).
149
-
150
- ## Version management
151
-
152
- Single source of truth for the version. Don't duplicate in `__init__.py`.
153
-
154
- ```toml
155
- # pyproject.toml
156
- [project]
157
- dynamic = ["version"]
158
-
159
- [tool.hatch.version]
160
- path = "src/myapp/__about__.py"
161
- ```
162
-
163
- ```python
164
- # src/myapp/__about__.py
165
- __version__ = "0.1.0"
166
-
167
- # src/myapp/__init__.py
168
- from myapp.__about__ import __version__
169
- __all__ = ["__version__"]
170
- ```
171
-
172
- ## Python version management
173
-
174
- `pyenv` for installing Python versions; `uv python` integrates this. Project-level pin:
175
-
176
- ```bash
177
- uv python pin 3.12 # writes .python-version
178
- ```
179
-
180
- CI: install the exact version from `.python-version` so prod and dev match.
181
-
182
- ## Publishing to PyPI
183
-
184
- ```bash
185
- uv build
186
- uv publish # uses PyPI API token from UV_PUBLISH_TOKEN
187
-
188
- # Or with twine
189
- python -m build
190
- twine upload dist/*
191
- ```
192
-
193
- Pre-flight checks:
194
- - `README.md` renders on PyPI (test with `twine check dist/*`)
195
- - Version bumped
196
- - `CHANGELOG.md` updated
197
- - Tag release in git: `git tag v0.1.0 && git push --tags`
198
-
199
- ## Private packages
200
-
201
- ```toml
202
- [tool.uv.sources]
203
- mycompany-lib = { git = "ssh://git@github.com/mycompany/lib.git", tag = "v1.2.0" }
204
- internal = { path = "../internal", editable = true }
205
- ```
206
-
207
- Or via `--extra-index-url` for private PyPI indexes.
208
-
209
- ## `__init__.py` — keep it minimal
210
-
211
- ```python
212
- # src/myapp/__init__.py
213
- """Public API for myapp."""
214
- from myapp.services import UserService
215
- from myapp.models import User
216
-
217
- __all__ = ["UserService", "User"]
218
- ```
219
-
220
- Don't run heavy init logic at import time — it slows down `import myapp` for every caller.
221
-
222
- ## Common mistakes
223
-
224
- | Mistake | Fix |
225
- |---|---|
226
- | `setup.py` in a new project | Use `pyproject.toml` only |
227
- | Committing `venv/` or `.venv/` | Add to `.gitignore` |
228
- | `pip install` without a venv | Always use `uv` or `venv` |
229
- | `requirements.txt` in a library | Declare in `pyproject.toml`; let consumers pin |
230
- | Version duplicated in 3 files | Use `dynamic = ["version"]` |
231
- | `from myapp import *` in `__init__.py` | Explicit exports via `__all__` |
232
- | Flat layout causing import surprises | Use `src/` layout |
233
- | Running tests with local `myapp/` shadowing the installed one | `pip install -e '.[dev]'`, then `pytest` |