@coralai/sps-cli 0.55.12 → 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 (431) 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/memory.d.ts.map +1 -1
  102. package/dist/core/memory.js +9 -12
  103. package/dist/core/memory.js.map +1 -1
  104. package/dist/core/memoryIngest.d.ts +18 -0
  105. package/dist/core/memoryIngest.d.ts.map +1 -0
  106. package/dist/core/memoryIngest.js +56 -0
  107. package/dist/core/memoryIngest.js.map +1 -0
  108. package/dist/core/memoryProvider.d.ts +63 -0
  109. package/dist/core/memoryProvider.d.ts.map +1 -0
  110. package/dist/core/memoryProvider.js +205 -0
  111. package/dist/core/memoryProvider.js.map +1 -0
  112. package/dist/core/skillStore.d.ts.map +1 -1
  113. package/dist/core/skillStore.js +2 -1
  114. package/dist/core/skillStore.js.map +1 -1
  115. package/dist/core/skills/SkillsManager.d.ts +38 -0
  116. package/dist/core/skills/SkillsManager.d.ts.map +1 -0
  117. package/dist/core/skills/SkillsManager.js +231 -0
  118. package/dist/core/skills/SkillsManager.js.map +1 -0
  119. package/dist/core/skills/distribution.d.ts +64 -0
  120. package/dist/core/skills/distribution.d.ts.map +1 -0
  121. package/dist/core/skills/distribution.js +269 -0
  122. package/dist/core/skills/distribution.js.map +1 -0
  123. package/dist/core/skills/index.d.ts +13 -0
  124. package/dist/core/skills/index.d.ts.map +1 -0
  125. package/dist/core/skills/index.js +13 -0
  126. package/dist/core/skills/index.js.map +1 -0
  127. package/dist/core/skills/types.d.ts +44 -0
  128. package/dist/core/skills/types.d.ts.map +1 -0
  129. package/dist/core/skills/types.js +9 -0
  130. package/dist/core/skills/types.js.map +1 -0
  131. package/dist/core/taskPrompts.d.ts +0 -12
  132. package/dist/core/taskPrompts.d.ts.map +1 -1
  133. package/dist/core/taskPrompts.js +0 -14
  134. package/dist/core/taskPrompts.js.map +1 -1
  135. package/dist/core/transcriptIngest.d.ts +37 -0
  136. package/dist/core/transcriptIngest.d.ts.map +1 -0
  137. package/dist/core/transcriptIngest.js +137 -0
  138. package/dist/core/transcriptIngest.js.map +1 -0
  139. package/dist/core/wiki/types.d.ts +282 -745
  140. package/dist/core/wiki/types.d.ts.map +1 -1
  141. package/dist/core/wiki/types.js +1 -1
  142. package/dist/core/wiki/types.js.map +1 -1
  143. package/dist/engines/SmartArrangeEngine.d.ts +75 -0
  144. package/dist/engines/SmartArrangeEngine.d.ts.map +1 -0
  145. package/dist/engines/SmartArrangeEngine.js +112 -0
  146. package/dist/engines/SmartArrangeEngine.js.map +1 -0
  147. package/dist/engines/StageEngine.d.ts +3 -17
  148. package/dist/engines/StageEngine.d.ts.map +1 -1
  149. package/dist/engines/StageEngine.js +13 -91
  150. package/dist/engines/StageEngine.js.map +1 -1
  151. package/dist/engines/smartarrange/AcpWorkerExec.d.ts +35 -0
  152. package/dist/engines/smartarrange/AcpWorkerExec.d.ts.map +1 -0
  153. package/dist/engines/smartarrange/AcpWorkerExec.js +71 -0
  154. package/dist/engines/smartarrange/AcpWorkerExec.js.map +1 -0
  155. package/dist/engines/smartarrange/cardSink.d.ts +29 -0
  156. package/dist/engines/smartarrange/cardSink.d.ts.map +1 -0
  157. package/dist/engines/smartarrange/cardSink.js +43 -0
  158. package/dist/engines/smartarrange/cardSink.js.map +1 -0
  159. package/dist/engines/smartarrange/runner.d.ts +24 -0
  160. package/dist/engines/smartarrange/runner.d.ts.map +1 -0
  161. package/dist/engines/smartarrange/runner.js +116 -0
  162. package/dist/engines/smartarrange/runner.js.map +1 -0
  163. package/dist/engines/smartarrange/screenshot.d.ts +5 -0
  164. package/dist/engines/smartarrange/screenshot.d.ts.map +1 -0
  165. package/dist/engines/smartarrange/screenshot.js +117 -0
  166. package/dist/engines/smartarrange/screenshot.js.map +1 -0
  167. package/dist/main.js +127 -92
  168. package/dist/main.js.map +1 -1
  169. package/dist/manager/worker-manager-impl.d.ts.map +1 -1
  170. package/dist/manager/worker-manager-impl.js +7 -0
  171. package/dist/manager/worker-manager-impl.js.map +1 -1
  172. package/dist/providers/LLMClient.d.ts +32 -0
  173. package/dist/providers/LLMClient.d.ts.map +1 -0
  174. package/dist/providers/LLMClient.js +108 -0
  175. package/dist/providers/LLMClient.js.map +1 -0
  176. package/dist/providers/MarkdownTaskBackend.d.ts.map +1 -1
  177. package/dist/providers/MarkdownTaskBackend.js +3 -2
  178. package/dist/providers/MarkdownTaskBackend.js.map +1 -1
  179. package/dist/providers/llm/chatTools.d.ts +11 -0
  180. package/dist/providers/llm/chatTools.d.ts.map +1 -0
  181. package/dist/providers/llm/chatTools.js +57 -0
  182. package/dist/providers/llm/chatTools.js.map +1 -0
  183. package/dist/providers/llm/codexAuth.d.ts +8 -0
  184. package/dist/providers/llm/codexAuth.d.ts.map +1 -0
  185. package/dist/providers/llm/codexAuth.js +57 -0
  186. package/dist/providers/llm/codexAuth.js.map +1 -0
  187. package/dist/providers/llm/codexModel.d.ts +14 -0
  188. package/dist/providers/llm/codexModel.d.ts.map +1 -0
  189. package/dist/providers/llm/codexModel.js +96 -0
  190. package/dist/providers/llm/codexModel.js.map +1 -0
  191. package/dist/providers/llm/localSubscription.d.ts +15 -0
  192. package/dist/providers/llm/localSubscription.d.ts.map +1 -0
  193. package/dist/providers/llm/localSubscription.js +66 -0
  194. package/dist/providers/llm/localSubscription.js.map +1 -0
  195. package/dist/providers/llm/modelFactory.d.ts +14 -0
  196. package/dist/providers/llm/modelFactory.d.ts.map +1 -0
  197. package/dist/providers/llm/modelFactory.js +22 -0
  198. package/dist/providers/llm/modelFactory.js.map +1 -0
  199. package/dist/providers/llm/monitorSkills.d.ts +6 -0
  200. package/dist/providers/llm/monitorSkills.d.ts.map +1 -0
  201. package/dist/providers/llm/monitorSkills.js +37 -0
  202. package/dist/providers/llm/monitorSkills.js.map +1 -0
  203. package/dist/providers/llm/probeTools.d.ts +7 -0
  204. package/dist/providers/llm/probeTools.d.ts.map +1 -0
  205. package/dist/providers/llm/probeTools.js +84 -0
  206. package/dist/providers/llm/probeTools.js.map +1 -0
  207. package/dist/providers/llm/providers.d.ts +26 -0
  208. package/dist/providers/llm/providers.d.ts.map +1 -0
  209. package/dist/providers/llm/providers.js +68 -0
  210. package/dist/providers/llm/providers.js.map +1 -0
  211. package/dist/providers/llm/skillTools.d.ts +4 -0
  212. package/dist/providers/llm/skillTools.d.ts.map +1 -0
  213. package/dist/providers/llm/skillTools.js +42 -0
  214. package/dist/providers/llm/skillTools.js.map +1 -0
  215. package/dist/providers/llm/workerTools.d.ts +9 -0
  216. package/dist/providers/llm/workerTools.d.ts.map +1 -0
  217. package/dist/providers/llm/workerTools.js +111 -0
  218. package/dist/providers/llm/workerTools.js.map +1 -0
  219. package/dist/providers/mcp/spsMcpServer.d.ts +15 -0
  220. package/dist/providers/mcp/spsMcpServer.d.ts.map +1 -0
  221. package/dist/providers/mcp/spsMcpServer.js +67 -0
  222. package/dist/providers/mcp/spsMcpServer.js.map +1 -0
  223. package/dist/providers/mcp/spsMcpStdio.d.ts +2 -0
  224. package/dist/providers/mcp/spsMcpStdio.d.ts.map +1 -0
  225. package/dist/providers/mcp/spsMcpStdio.js +32 -0
  226. package/dist/providers/mcp/spsMcpStdio.js.map +1 -0
  227. package/dist/providers/mcp/spsMcpStdioConfig.d.ts +11 -0
  228. package/dist/providers/mcp/spsMcpStdioConfig.d.ts.map +1 -0
  229. package/dist/providers/mcp/spsMcpStdioConfig.js +19 -0
  230. package/dist/providers/mcp/spsMcpStdioConfig.js.map +1 -0
  231. package/dist/server.d.ts +23 -0
  232. package/dist/server.d.ts.map +1 -1
  233. package/dist/server.js +23 -0
  234. package/dist/server.js.map +1 -1
  235. package/dist/services/ChatService.d.ts +8 -0
  236. package/dist/services/ChatService.d.ts.map +1 -1
  237. package/dist/services/ChatService.js +2 -0
  238. package/dist/services/ChatService.js.map +1 -1
  239. package/dist/services/LogService.d.ts +1 -1
  240. package/dist/services/LogService.d.ts.map +1 -1
  241. package/dist/services/LogService.js +3 -2
  242. package/dist/services/LogService.js.map +1 -1
  243. package/dist/services/ProjectService.d.ts +12 -2
  244. package/dist/services/ProjectService.d.ts.map +1 -1
  245. package/dist/services/ProjectService.js +1 -0
  246. package/dist/services/ProjectService.js.map +1 -1
  247. package/dist/services/SkillService.js +11 -13
  248. package/dist/services/SkillService.js.map +1 -1
  249. package/dist/services/SmartArrangeService.d.ts +12 -0
  250. package/dist/services/SmartArrangeService.d.ts.map +1 -0
  251. package/dist/services/SmartArrangeService.js +37 -0
  252. package/dist/services/SmartArrangeService.js.map +1 -0
  253. package/dist/services/SystemService.d.ts +20 -0
  254. package/dist/services/SystemService.d.ts.map +1 -1
  255. package/dist/services/SystemService.js +93 -0
  256. package/dist/services/SystemService.js.map +1 -1
  257. package/dist/services/WorkerService.d.ts +8 -0
  258. package/dist/services/WorkerService.d.ts.map +1 -1
  259. package/dist/services/WorkerService.js +73 -3
  260. package/dist/services/WorkerService.js.map +1 -1
  261. package/dist/services/container.d.ts +2 -0
  262. package/dist/services/container.d.ts.map +1 -1
  263. package/dist/services/container.js +2 -0
  264. package/dist/services/container.js.map +1 -1
  265. package/dist/shared/localTime.d.ts +8 -0
  266. package/dist/shared/localTime.d.ts.map +1 -0
  267. package/dist/shared/localTime.js +11 -0
  268. package/dist/shared/localTime.js.map +1 -0
  269. package/dist/shared/runtimePaths.d.ts +1 -1
  270. package/dist/shared/runtimePaths.d.ts.map +1 -1
  271. package/dist/shared/runtimePaths.js +2 -2
  272. package/dist/shared/runtimePaths.js.map +1 -1
  273. package/dist/shared/runtimeSchemas.d.ts +74 -245
  274. package/dist/shared/runtimeSchemas.d.ts.map +1 -1
  275. package/dist/shared/runtimeSchemas.js +2 -2
  276. package/dist/shared/runtimeSchemas.js.map +1 -1
  277. package/monitor-skills/probe-playbook/SKILL.md +32 -0
  278. package/monitor-skills/visual-rubric/SKILL.md +34 -0
  279. package/package.json +8 -8
  280. package/project-template/.claude/hooks/stop.sh +3 -1
  281. package/dist/console-assets/assets/index-BvWWj69G.js +0 -557
  282. package/dist/console-assets/assets/index-Eo4PuNPl.css +0 -10
  283. package/dist/interfaces/ACPClient.d.ts +0 -107
  284. package/dist/interfaces/ACPClient.d.ts.map +0 -1
  285. package/dist/interfaces/ACPClient.js +0 -17
  286. package/dist/interfaces/ACPClient.js.map +0 -1
  287. package/dist/interfaces/AgentRuntime.d.ts +0 -40
  288. package/dist/interfaces/AgentRuntime.d.ts.map +0 -1
  289. package/dist/interfaces/AgentRuntime.js +0 -17
  290. package/dist/interfaces/AgentRuntime.js.map +0 -1
  291. package/dist/manager/agentmemory.d.ts +0 -6
  292. package/dist/manager/agentmemory.d.ts.map +0 -1
  293. package/dist/manager/agentmemory.js +0 -73
  294. package/dist/manager/agentmemory.js.map +0 -1
  295. package/dist/models/acp.d.ts +0 -64
  296. package/dist/models/acp.d.ts.map +0 -1
  297. package/dist/models/acp.js +0 -17
  298. package/dist/models/acp.js.map +0 -1
  299. package/dist/providers/LocalACPClient.d.ts +0 -27
  300. package/dist/providers/LocalACPClient.d.ts.map +0 -1
  301. package/dist/providers/LocalACPClient.js +0 -26
  302. package/dist/providers/LocalACPClient.js.map +0 -1
  303. package/dist/providers/adapters/AcpSdkAdapter.d.ts +0 -24
  304. package/dist/providers/adapters/AcpSdkAdapter.d.ts.map +0 -1
  305. package/dist/providers/adapters/AcpSdkAdapter.js +0 -439
  306. package/dist/providers/adapters/AcpSdkAdapter.js.map +0 -1
  307. package/dist/providers/adapters/acp-fs-handlers.d.ts +0 -26
  308. package/dist/providers/adapters/acp-fs-handlers.d.ts.map +0 -1
  309. package/dist/providers/adapters/acp-fs-handlers.js +0 -61
  310. package/dist/providers/adapters/acp-fs-handlers.js.map +0 -1
  311. package/dist/providers/adapters/acp-permissions.d.ts +0 -42
  312. package/dist/providers/adapters/acp-permissions.d.ts.map +0 -1
  313. package/dist/providers/adapters/acp-permissions.js +0 -76
  314. package/dist/providers/adapters/acp-permissions.js.map +0 -1
  315. package/dist/providers/adapters/acp-session-accumulator.d.ts +0 -55
  316. package/dist/providers/adapters/acp-session-accumulator.d.ts.map +0 -1
  317. package/dist/providers/adapters/acp-session-accumulator.js +0 -133
  318. package/dist/providers/adapters/acp-session-accumulator.js.map +0 -1
  319. package/dist/providers/adapters/acp-terminal-manager.d.ts +0 -56
  320. package/dist/providers/adapters/acp-terminal-manager.d.ts.map +0 -1
  321. package/dist/providers/adapters/acp-terminal-manager.js +0 -127
  322. package/dist/providers/adapters/acp-terminal-manager.js.map +0 -1
  323. package/project-template/logs/.gitkeep +0 -0
  324. package/skills/architecture-decision-records/SKILL.md +0 -207
  325. package/skills/backend/SKILL.md +0 -62
  326. package/skills/backend/references/api-design.md +0 -168
  327. package/skills/backend/references/caching.md +0 -181
  328. package/skills/backend/references/data-access.md +0 -173
  329. package/skills/backend/references/layering.md +0 -181
  330. package/skills/backend/references/observability.md +0 -190
  331. package/skills/backend/references/resilience.md +0 -201
  332. package/skills/backend/references/security.md +0 -186
  333. package/skills/backend-architect/SKILL.md +0 -119
  334. package/skills/code-reviewer/SKILL.md +0 -143
  335. package/skills/coding-standards/SKILL.md +0 -60
  336. package/skills/coding-standards/references/clean-code.md +0 -258
  337. package/skills/coding-standards/references/code-review.md +0 -192
  338. package/skills/coding-standards/references/commits-and-prs.md +0 -226
  339. package/skills/coding-standards/references/error-strategy.md +0 -193
  340. package/skills/coding-standards/references/naming.md +0 -185
  341. package/skills/coding-standards/references/tdd.md +0 -171
  342. package/skills/database/SKILL.md +0 -53
  343. package/skills/database/references/indexing.md +0 -190
  344. package/skills/database/references/migrations.md +0 -199
  345. package/skills/database/references/nosql.md +0 -185
  346. package/skills/database/references/queries.md +0 -295
  347. package/skills/database/references/scaling.md +0 -203
  348. package/skills/database/references/schema.md +0 -191
  349. package/skills/database-optimizer/SKILL.md +0 -168
  350. package/skills/debugging-workflow/SKILL.md +0 -244
  351. package/skills/dev-worker/SKILL.md +0 -40
  352. package/skills/dev-worker/references/architect.md +0 -139
  353. package/skills/dev-worker/references/backend.md +0 -163
  354. package/skills/dev-worker/references/frontend.md +0 -122
  355. package/skills/dev-worker/references/fullstack.md +0 -179
  356. package/skills/dev-worker/references/optimizer.md +0 -151
  357. package/skills/dev-worker/references/phaser.md +0 -109
  358. package/skills/dev-worker/references/prototyper.md +0 -171
  359. package/skills/dev-worker/references/reviewer.md +0 -122
  360. package/skills/dev-worker/references/security.md +0 -154
  361. package/skills/dev-worker/references/senior.md +0 -155
  362. package/skills/dev-worker/references/typescript.md +0 -65
  363. package/skills/dev-worker/references/writer.md +0 -201
  364. package/skills/devops/SKILL.md +0 -55
  365. package/skills/devops/references/ci-cd.md +0 -204
  366. package/skills/devops/references/containers.md +0 -272
  367. package/skills/devops/references/deploy.md +0 -201
  368. package/skills/devops/references/iac.md +0 -252
  369. package/skills/devops/references/observability.md +0 -228
  370. package/skills/devops/references/secrets.md +0 -178
  371. package/skills/devops-automator/SKILL.md +0 -164
  372. package/skills/frontend/SKILL.md +0 -52
  373. package/skills/frontend/references/accessibility.md +0 -222
  374. package/skills/frontend/references/components.md +0 -206
  375. package/skills/frontend/references/performance.md +0 -219
  376. package/skills/frontend/references/routing.md +0 -209
  377. package/skills/frontend/references/state.md +0 -190
  378. package/skills/frontend/references/testing.md +0 -216
  379. package/skills/frontend-developer/SKILL.md +0 -115
  380. package/skills/git-workflow/SKILL.md +0 -355
  381. package/skills/golang/SKILL.md +0 -49
  382. package/skills/golang/references/concurrency.md +0 -284
  383. package/skills/golang/references/errors.md +0 -241
  384. package/skills/golang/references/idioms.md +0 -285
  385. package/skills/golang/references/testing.md +0 -238
  386. package/skills/java/SKILL.md +0 -50
  387. package/skills/java/references/concurrency.md +0 -194
  388. package/skills/java/references/idioms.md +0 -283
  389. package/skills/java/references/testing.md +0 -228
  390. package/skills/kotlin/SKILL.md +0 -47
  391. package/skills/kotlin/references/coroutines.md +0 -240
  392. package/skills/kotlin/references/idioms.md +0 -268
  393. package/skills/kotlin/references/testing.md +0 -219
  394. package/skills/mobile/SKILL.md +0 -50
  395. package/skills/mobile/references/architecture.md +0 -204
  396. package/skills/mobile/references/navigation.md +0 -158
  397. package/skills/mobile/references/performance.md +0 -152
  398. package/skills/mobile/references/platform.md +0 -166
  399. package/skills/mobile/references/state-and-data.md +0 -174
  400. package/skills/python/SKILL.md +0 -51
  401. package/skills/python/THIRD_PARTY.md +0 -14
  402. package/skills/python/references/async.md +0 -218
  403. package/skills/python/references/error-handling.md +0 -254
  404. package/skills/python/references/idioms.md +0 -279
  405. package/skills/python/references/packaging.md +0 -233
  406. package/skills/python/references/testing.md +0 -269
  407. package/skills/python/references/typing.md +0 -292
  408. package/skills/qa-tester/SKILL.md +0 -186
  409. package/skills/rust/SKILL.md +0 -50
  410. package/skills/rust/references/async.md +0 -224
  411. package/skills/rust/references/errors.md +0 -240
  412. package/skills/rust/references/ownership.md +0 -263
  413. package/skills/rust/references/testing.md +0 -274
  414. package/skills/rust/references/traits.md +0 -250
  415. package/skills/security-engineer/SKILL.md +0 -157
  416. package/skills/sps-memory/SKILL.md +0 -213
  417. package/skills/sps-pipeline/SKILL.md +0 -476
  418. package/skills/swift/SKILL.md +0 -48
  419. package/skills/swift/references/concurrency.md +0 -280
  420. package/skills/swift/references/idioms.md +0 -334
  421. package/skills/swift/references/testing.md +0 -229
  422. package/skills/tax-worker/SKILL.md +0 -150
  423. package/skills/tax-worker/references/account-codes.md +0 -165
  424. package/skills/typescript/SKILL.md +0 -51
  425. package/skills/typescript/references/async.md +0 -241
  426. package/skills/typescript/references/errors.md +0 -208
  427. package/skills/typescript/references/idioms.md +0 -246
  428. package/skills/typescript/references/testing.md +0 -225
  429. package/skills/typescript/references/tooling.md +0 -208
  430. package/skills/typescript/references/types.md +0 -259
  431. package/skills/wiki-update/SKILL.md +0 -300
@@ -1,229 +0,0 @@
1
- # Swift — Testing
2
-
3
- XCTest and Swift Testing (Swift 6+). For TDD, see `coding-standards/references/tdd.md`.
4
-
5
- ## Runner choice
6
-
7
- - **XCTest** — mature, ships with Xcode, required for UI tests.
8
- - **Swift Testing** — Swift 6 stdlib, cleaner API, macros for parametrized tests. Use for new unit tests when your toolchain supports it.
9
-
10
- Both can coexist in the same target.
11
-
12
- ## XCTest
13
-
14
- ```swift
15
- import XCTest
16
- @testable import MyApp
17
-
18
- final class UserServiceTests: XCTestCase {
19
- func test_createUser_returnsPersistedUser() async throws {
20
- let service = UserService(repo: InMemoryUserRepo())
21
- let user = try await service.create(email: "a@x.com")
22
- XCTAssertEqual(user.email, "a@x.com")
23
- XCTAssertFalse(user.id.isEmpty)
24
- }
25
-
26
- func test_createUser_rejectsEmptyEmail() async {
27
- let service = UserService(repo: InMemoryUserRepo())
28
- do {
29
- _ = try await service.create(email: "")
30
- XCTFail("expected ValidationError")
31
- } catch is ValidationError {
32
- // expected
33
- } catch {
34
- XCTFail("unexpected error: \(error)")
35
- }
36
- }
37
- }
38
- ```
39
-
40
- Name tests `test_behaviour_expectation`. Structure: **Arrange → Act → Assert**.
41
-
42
- ## Swift Testing (Swift 6+)
43
-
44
- ```swift
45
- import Testing
46
- @testable import MyApp
47
-
48
- struct UserServiceTests {
49
- @Test
50
- func createUserReturnsPersistedUser() async throws {
51
- let service = UserService(repo: InMemoryUserRepo())
52
- let user = try await service.create(email: "a@x.com")
53
- #expect(user.email == "a@x.com")
54
- #expect(!user.id.isEmpty)
55
- }
56
-
57
- @Test
58
- func createUserRejectsEmptyEmail() async throws {
59
- let service = UserService(repo: InMemoryUserRepo())
60
- await #expect(throws: ValidationError.self) {
61
- try await service.create(email: "")
62
- }
63
- }
64
- }
65
- ```
66
-
67
- Cleaner: `#expect(...)` macro, `@Test` annotation, real async support.
68
-
69
- ## Parametrized tests
70
-
71
- ```swift
72
- @Test("add cases", arguments: [
73
- (1, 2, 3),
74
- (0, 0, 0),
75
- (-1, 1, 0),
76
- ])
77
- func add(a: Int, b: Int, expected: Int) {
78
- #expect(MyApp.add(a, b) == expected)
79
- }
80
- ```
81
-
82
- XCTest equivalent requires manual loops or `XCTestCase` subclasses.
83
-
84
- ## Assertions
85
-
86
- | XCTest | Swift Testing |
87
- |---|---|
88
- | `XCTAssertEqual(a, b)` | `#expect(a == b)` |
89
- | `XCTAssertTrue(x)` | `#expect(x)` |
90
- | `XCTAssertNil(x)` | `#expect(x == nil)` |
91
- | `XCTAssertThrowsError { ... }` | `#expect(throws: ...) { ... }` |
92
- | `XCTFail("msg")` | `Issue.record("msg")` |
93
-
94
- ## Fakes over mocks
95
-
96
- Hand-roll fakes; Swift's strong type system makes them cheap.
97
-
98
- ```swift
99
- final class InMemoryUserRepo: UserRepositoryProtocol {
100
- private var users: [String: User] = [:]
101
- func find(id: String) async -> User? { users[id] }
102
- func save(_ u: User) async { users[u.id] = u }
103
- }
104
- ```
105
-
106
- For mock libraries, `Cuckoo` and `Mockable` exist; most teams find hand-rolled cheaper in Swift than in JVM.
107
-
108
- ## Async tests
109
-
110
- Swift Testing supports `async` natively. XCTest also, from iOS 13+ / macOS 10.15+:
111
-
112
- ```swift
113
- func test_loads() async throws {
114
- let user = try await service.load(id: "u1")
115
- XCTAssertEqual(user.id, "u1")
116
- }
117
- ```
118
-
119
- For code using completion callbacks (legacy), use `XCTestExpectation`:
120
-
121
- ```swift
122
- func test_legacy() {
123
- let exp = expectation(description: "callback")
124
- legacy { result in
125
- XCTAssertNotNil(result)
126
- exp.fulfill()
127
- }
128
- wait(for: [exp], timeout: 5)
129
- }
130
- ```
131
-
132
- New code shouldn't need this — bridge to `async` with `withCheckedContinuation`.
133
-
134
- ## Timing / clock control
135
-
136
- Mock time with a `Clock` protocol:
137
-
138
- ```swift
139
- protocol Clock { func now() -> Date }
140
-
141
- final class FixedClock: Clock {
142
- var time: Date
143
- init(_ t: Date) { self.time = t }
144
- func now() -> Date { time }
145
- }
146
- ```
147
-
148
- For `Task.sleep` in tests, use `ContinuousClock` with a manually advanced test clock (Swift Testing / swift-async-algorithms).
149
-
150
- Swift Testing integrates with the new `Clock` primitives and supports virtual time.
151
-
152
- ## UI tests — XCUITest
153
-
154
- ```swift
155
- final class AppUITests: XCTestCase {
156
- func test_login_success() {
157
- let app = XCUIApplication()
158
- app.launch()
159
- app.textFields["email"].tap()
160
- app.textFields["email"].typeText("a@x.com")
161
- app.buttons["Continue"].tap()
162
- XCTAssertTrue(app.staticTexts["Welcome"].waitForExistence(timeout: 5))
163
- }
164
- }
165
- ```
166
-
167
- Rules:
168
- - Use `accessibilityIdentifier`, not labels — labels break when copy changes.
169
- - Reset app state in `setUp`; UI tests are order-dependent if you don't.
170
- - Keep to happy paths and critical flows; they're slow and brittle.
171
-
172
- ## Snapshot tests
173
-
174
- `swift-snapshot-testing` (`point-free`) for views, JSON, formatted strings.
175
-
176
- ```swift
177
- import SnapshotTesting
178
- import XCTest
179
-
180
- final class UserViewTests: XCTestCase {
181
- func test_userView() {
182
- let vc = UserViewController(user: .sample)
183
- assertSnapshot(matching: vc, as: .image)
184
- }
185
- }
186
- ```
187
-
188
- Review diffs deliberately; don't mass-accept.
189
-
190
- ## Coverage
191
-
192
- Xcode can emit `.xcresult` with coverage; `xcrun xccov view --report` for CLI. Set a threshold in your `fastlane` / CI.
193
-
194
- ## Performance tests
195
-
196
- ```swift
197
- func test_perf_parsing() {
198
- measure {
199
- _ = parse(sampleInput)
200
- }
201
- }
202
- ```
203
-
204
- Xcode stores baselines; regressions highlight on re-run. Keep perf tests to critical paths; they're slow and machine-dependent.
205
-
206
- ## Test plans
207
-
208
- Use Xcode test plans to split fast unit tests, slower integration, UI tests into separate CI stages:
209
-
210
- ```
211
- UnitTests.xctestplan # fast, ~seconds
212
- IntegrationTests.xctestplan # real deps, minutes
213
- UITests.xctestplan # UI, slow
214
- ```
215
-
216
- Run unit on every PR; integration and UI on merge-to-main.
217
-
218
- ## Anti-patterns
219
-
220
- | Anti-pattern | Fix |
221
- |---|---|
222
- | `Thread.sleep` / `sleep()` in tests to wait for async | `XCTestExpectation` or `async/await` |
223
- | `try!` inside a test | Use `try` + `XCTAssertNoThrow` or Swift Testing `#expect(throws:)` |
224
- | Shared state across tests via singletons | Reset in `setUp`; prefer DI |
225
- | Snapshot test accepted without review | Always diff before committing |
226
- | UI tests finding by label (`"Log in"`) | Use `accessibilityIdentifier` |
227
- | Mocking the thing you're testing | Test via real public API |
228
- | `XCTFail` + guard + `return` scattered inline | Use Swift Testing `#expect(throws:)` or helper methods |
229
- | Tests depending on device locale / time | Inject locale / clock |
@@ -1,150 +0,0 @@
1
- ---
2
- name: tax-worker
3
- description: |
4
- 财税代理记账 worker — 处理客户公司财务资料:工资表Excel、发票PDF、银行流水PDF、
5
- 收据图片、电子回单PDF。提取数据、分类科目、计算税额、生成报表。
6
- 适用于小企业会计准则(五级科目)。(🪸 Coral SPS)
7
- ---
8
-
9
- # 财税 Worker 行为规范
10
-
11
- ## 角色
12
-
13
- 你是一名专业的代理记账会计。你负责处理客户公司的季度财务资料,完成从原始凭证提取到报税表生成的全过程。
14
-
15
- ## 适用准则
16
-
17
- **小企业会计准则**(财会〔2011〕17号),五级科目体系。
18
-
19
- ## 输入文件类型
20
-
21
- | 文件类型 | 格式 | 内容 |
22
- |---------|------|------|
23
- | 工资表 | .xlsx / .xls | 员工姓名、基本工资、社保、公积金、个税 |
24
- | 发票 | .pdf | 发票代码、号码、金额、税额、税率、购销方、日期 |
25
- | 银行流水 | .pdf | 日期、摘要、金额、对方户名、余额 |
26
- | 收据 | .jpg / .png | 金额、用途、日期 |
27
- | 电子回单 | .pdf | 交易金额、对方信息、用途 |
28
-
29
- ## 处理流程
30
-
31
- ### Stage 1: 数据提取(extract)
32
-
33
- 对每种文件类型进行识别和结构化提取:
34
-
35
- 1. **读取文件**:使用适当的工具(Excel解析、PDF文字提取、OCR图片识别)
36
- 2. **识别字段**:按文件类型提取对应字段
37
- 3. **输出 JSON**:每种文件类型输出一个 JSON 文件
38
-
39
- 输出文件:
40
- - `extracted/salary.json` — 工资数据
41
- - `extracted/invoices.json` — 发票数据
42
- - `extracted/bank_transactions.json` — 银行流水
43
- - `extracted/receipts.json` — 收据数据
44
- - `extracted/e_receipts.json` — 电子回单
45
-
46
- ### Stage 2: 分类汇总 + 报表生成(summarize)
47
-
48
- 1. **科目分类**:将每笔交易分配到对应的会计科目(参考 references/account-codes.md)
49
- 2. **交叉核对**:银行流水 vs 发票/回单金额匹配
50
- 3. **计算汇总**:
51
- - 收入合计、成本合计、费用分类合计
52
- - 应交增值税(销项 - 进项)
53
- - 附加税(城建税、教育费附加)
54
- - 企业所得税预缴
55
- 4. **生成报表**:
56
- - `report/balance_sheet.xlsx` — 资产负债表
57
- - `report/income_statement.xlsx` — 利润表
58
- - `report/cashflow_statement.xlsx` — 现金流量表
59
-
60
- ## 数据格式规范
61
-
62
- ### salary.json
63
-
64
- ```json
65
- [
66
- {
67
- "name": "张三",
68
- "basic_salary": 8000.00,
69
- "social_insurance": 1200.00,
70
- "housing_fund": 800.00,
71
- "personal_tax": 150.00,
72
- "net_salary": 5850.00
73
- }
74
- ]
75
- ```
76
-
77
- ### invoices.json
78
-
79
- ```json
80
- [
81
- {
82
- "invoice_code": "3200221130",
83
- "invoice_number": "12345678",
84
- "date": "2026-01-15",
85
- "seller": "XX办公用品有限公司",
86
- "buyer": "客户公司名称",
87
- "amount": 1000.00,
88
- "tax_amount": 130.00,
89
- "tax_rate": 0.13,
90
- "total": 1130.00,
91
- "type": "input",
92
- "category": "办公用品"
93
- }
94
- ]
95
- ```
96
-
97
- ### bank_transactions.json
98
-
99
- ```json
100
- [
101
- {
102
- "date": "2026-01-10",
103
- "summary": "转账-货款",
104
- "debit": 5000.00,
105
- "credit": 0,
106
- "counterparty": "XX供应商",
107
- "balance": 150000.00
108
- }
109
- ]
110
- ```
111
-
112
- ## 规则
113
-
114
- 1. **精度**:所有金额精确到分(两位小数),使用 `number` 类型
115
- 2. **科目编码**:必须使用标准五级编码(见 references/account-codes.md)
116
- 3. **进销项分离**:增值税进项税额和销项税额必须分开统计
117
- 4. **不确定标记**:无法确定分类的交易标记为 `REVIEW`,不要猜测
118
- 5. **凭证对应**:每笔会计分录必须有原始凭证对应
119
- 6. **借贷平衡**:每笔分录借方合计 = 贷方合计
120
- 7. **跨期检查**:确认所有凭证日期在当前季度范围内
121
-
122
- ## 常见科目分类指引
123
-
124
- | 业务类型 | 借方科目 | 贷方科目 |
125
- |---------|---------|---------|
126
- | 销售收入 | 应收账款/银行存款 | 主营业务收入 + 应交税费-销项税 |
127
- | 采购商品 | 库存商品 + 应交税费-进项税 | 应付账款/银行存款 |
128
- | 发放工资 | 应付职工薪酬 | 银行存款 |
129
- | 计提工资 | 管理费用-工资/销售费用-工资 | 应付职工薪酬 |
130
- | 办公用品 | 管理费用-办公费 | 银行存款/库存现金 |
131
- | 房租水电 | 管理费用-租赁费/水电费 | 银行存款 |
132
- | 差旅费 | 管理费用-差旅费 | 库存现金/银行存款 |
133
- | 社保公积金 | 管理费用-社保/公积金 | 银行存款 |
134
- | 折旧 | 管理费用-折旧 | 累计折旧 |
135
- | 银行手续费 | 财务费用-手续费 | 银行存款 |
136
-
137
- ## 错误处理
138
-
139
- - 文件无法读取 → 记录到 `extracted/errors.json`,继续处理其他文件
140
- - OCR 识别模糊 → 标记 `confidence: low`,分类为 `REVIEW`
141
- - 金额不匹配 → 记录差异到 `report/discrepancies.json`
142
- - 跨期凭证 → 标记 `out_of_period: true`,不计入当期
143
-
144
- ## 项目记忆
145
-
146
- 利用 SPS 记忆系统(~/.coral/memory/projects/<project>/)保存客户特有规则:
147
- - 特殊科目分类习惯
148
- - 固定资产折旧信息
149
- - 社保基数和比例
150
- - 经常性业务的分类模板
@@ -1,165 +0,0 @@
1
- # 小企业会计准则 — 常用科目编码表(五级)
2
-
3
- ## 一、资产类(1xxx)
4
-
5
- ### 1001 库存现金
6
- - 1001.01 人民币现金
7
-
8
- ### 1002 银行存款
9
- - 1002.01 基本户
10
- - 1002.02 一般户
11
-
12
- ### 1122 应收账款
13
- - 按客户设明细
14
-
15
- ### 1123 预付账款
16
- - 按供应商设明细
17
-
18
- ### 1131 应收股利
19
-
20
- ### 1221 其他应收款
21
- - 1221.01 备用金
22
- - 1221.02 押金保证金
23
-
24
- ### 1401 材料采购
25
-
26
- ### 1403 原材料
27
-
28
- ### 1405 库存商品
29
-
30
- ### 1601 固定资产
31
- - 1601.01 房屋建筑物
32
- - 1601.02 机器设备
33
- - 1601.03 运输工具
34
- - 1601.04 电子设备
35
- - 1601.05 办公家具
36
-
37
- ### 1602 累计折旧
38
-
39
- ### 1701 无形资产
40
-
41
- ### 1702 累计摊销
42
-
43
- ## 二、负债类(2xxx)
44
-
45
- ### 2001 短期借款
46
-
47
- ### 2201 应付账款
48
- - 按供应商设明细
49
-
50
- ### 2202 预收账款
51
- - 按客户设明细
52
-
53
- ### 2211 应付职工薪酬
54
- - 2211.01 工资
55
- - 2211.02 社会保险费
56
- - 2211.03 住房公积金
57
- - 2211.04 福利费
58
-
59
- ### 2221 应交税费
60
- - 2221.01 应交增值税
61
- - 2221.01.01 进项税额
62
- - 2221.01.02 销项税额
63
- - 2221.01.03 已交税金
64
- - 2221.01.04 转出未交增值税
65
- - 2221.02 未交增值税
66
- - 2221.03 应交企业所得税
67
- - 2221.04 应交个人所得税
68
- - 2221.05 应交城市维护建设税
69
- - 2221.06 应交教育费附加
70
- - 2221.07 应交地方教育附加
71
- - 2221.08 应交印花税
72
-
73
- ### 2231 应付利息
74
-
75
- ### 2241 其他应付款
76
-
77
- ## 三、所有者权益类(3xxx)
78
-
79
- ### 3001 实收资本
80
-
81
- ### 3002 资本公积
82
-
83
- ### 3101 盈余公积
84
-
85
- ### 3103 本年利润
86
-
87
- ### 3104 利润分配
88
- - 3104.01 未分配利润
89
-
90
- ## 四、成本类(4xxx)
91
-
92
- ### 4001 生产成本
93
- - 4001.01 直接材料
94
- - 4001.02 直接人工
95
- - 4001.03 制造费用
96
-
97
- ### 4101 制造费用
98
-
99
- ## 五、损益类(5xxx / 6xxx)
100
-
101
- ### 5001 主营业务收入
102
- - 按产品/服务分明细
103
-
104
- ### 5051 其他业务收入
105
-
106
- ### 5111 投资收益
107
-
108
- ### 5301 营业外收入
109
-
110
- ### 5401 主营业务成本
111
- - 按产品/服务分明细
112
-
113
- ### 5402 其他业务成本
114
-
115
- ### 5403 营业税金及附加
116
- - 5403.01 城市维护建设税
117
- - 5403.02 教育费附加
118
- - 5403.03 地方教育附加
119
- - 5403.04 印花税
120
-
121
- ### 5601 销售费用
122
- - 5601.01 工资
123
- - 5601.02 广告费
124
- - 5601.03 运输费
125
- - 5601.04 业务招待费
126
-
127
- ### 5602 管理费用
128
- - 5602.01 工资
129
- - 5602.02 办公费
130
- - 5602.03 差旅费
131
- - 5602.04 租赁费
132
- - 5602.05 水电费
133
- - 5602.06 折旧费
134
- - 5602.07 修理费
135
- - 5602.08 社会保险费
136
- - 5602.09 住房公积金
137
- - 5602.10 业务招待费
138
- - 5602.11 咨询服务费
139
- - 5602.12 通讯费
140
-
141
- ### 5603 财务费用
142
- - 5603.01 利息支出
143
- - 5603.02 手续费
144
- - 5603.03 利息收入(借方红字)
145
-
146
- ### 5711 营业外支出
147
-
148
- ### 5801 所得税费用
149
-
150
- ## 增值税税率参考
151
-
152
- | 类型 | 税率 |
153
- |------|------|
154
- | 一般货物销售 | 13% |
155
- | 交通运输、建筑、基础电信 | 9% |
156
- | 现代服务、生活服务 | 6% |
157
- | 小规模纳税人 | 3%(减按1%) |
158
-
159
- ## 附加税费率
160
-
161
- | 税种 | 税率 | 计算基数 |
162
- |------|------|---------|
163
- | 城市维护建设税 | 7%(市区)/ 5%(县镇)/ 1%(其他) | 实际缴纳的增值税 |
164
- | 教育费附加 | 3% | 实际缴纳的增值税 |
165
- | 地方教育附加 | 2% | 实际缴纳的增值税 |
@@ -1,51 +0,0 @@
1
- ---
2
- name: typescript
3
- description: TypeScript language skill — types, idioms, async, tooling. Pair with end skills (`backend`, `frontend`, `mobile`) for architecture and with `coding-standards` for cross-language principles.
4
- origin: ecc-fork + original (https://github.com/affaan-m/everything-claude-code, MIT)
5
- ---
6
-
7
- # TypeScript
8
-
9
- Type system, idioms, async, tooling. **Language-focused**. Architecture belongs to end skills; general principles (TDD, naming, error strategy) live in `coding-standards`.
10
-
11
- ## When to load
12
-
13
- - Project primary language is TypeScript (Node.js / Deno / Bun / browser)
14
- - Reviewing TS code
15
- - Designing types, generics, discriminated unions
16
- - Setting up `tsconfig.json`, build, test tooling
17
-
18
- ## Core principles
19
-
20
- 1. **`strict: true`, always.** Non-negotiable. The rest of TS is barely worth using without it.
21
- 2. **No `any`.** Use `unknown` + narrowing if you don't know the shape. Every `any` in review gets a blocker.
22
- 3. **Types describe intent.** Prefer `UserId` branded type over bare `string`; use discriminated unions over boolean flags.
23
- 4. **Inference first.** Let TS infer; add annotations on public signatures and where inference is wrong or opaque.
24
- 5. **`const` by default, `let` only when reassigning.** Never `var`.
25
- 6. **Immutability where practical.** `readonly` on fields, `ReadonlyArray<T>` for inputs.
26
- 7. **`===` only.** `==` has JS quirks; there is no legitimate reason to use it in new code.
27
- 8. **Explicit error types at boundaries** (HTTP, queue, FFI). Inside, throw freely.
28
-
29
- ## How to use references
30
-
31
- | Reference | When to load |
32
- |---|---|
33
- | [`references/types.md`](references/types.md) | Generics, unions, discriminated unions, conditional types, utility types, brands |
34
- | [`references/idioms.md`](references/idioms.md) | Destructuring, optional chaining, nullish coalescing, modules, enums vs. union |
35
- | [`references/async.md`](references/async.md) | Promises, async/await, error propagation, cancellation (AbortController), concurrency |
36
- | [`references/errors.md`](references/errors.md) | Error classes, `Result` / `neverthrow`, `try/catch`, re-throw semantics |
37
- | [`references/testing.md`](references/testing.md) | Vitest / Jest, mocking, fixtures, integration tests |
38
- | [`references/tooling.md`](references/tooling.md) | `tsconfig`, ESLint, formatter, bundlers, monorepo layout |
39
-
40
- ## Forbidden patterns (auto-reject)
41
-
42
- - `any` without a comment explaining why
43
- - `as X` casts without runtime validation (use a schema validator at boundaries)
44
- - `==` / `!=`
45
- - `var`
46
- - Unhandled promise (`.then()` without `.catch()`, or an `await` without containing `try`)
47
- - `Function` / `Object` as a type
48
- - Default-exporting everything in new code (named exports — one public name per import)
49
- - Enums for string constants (use literal string unions instead — smaller, tree-shakeable)
50
- - Mutating function parameters
51
- - `console.log` left in committed code