@kinqs/brainrouter-mcp-server 0.3.4

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 (337) hide show
  1. package/.env.example +144 -0
  2. package/README.md +56 -0
  3. package/agents/README.md +120 -0
  4. package/agents/code-reviewer.md +97 -0
  5. package/agents/security-auditor.md +101 -0
  6. package/agents/test-engineer.md +95 -0
  7. package/dist/__tests__/agent_mode.test.d.ts +1 -0
  8. package/dist/__tests__/api-routes.test.d.ts +1 -0
  9. package/dist/__tests__/api-routes.test.js +170 -0
  10. package/dist/__tests__/crypto.test.d.ts +1 -0
  11. package/dist/__tests__/crypto.test.js +28 -0
  12. package/dist/__tests__/host-integrations.test.d.ts +1 -0
  13. package/dist/__tests__/host-integrations.test.js +82 -0
  14. package/dist/__tests__/integration.test.d.ts +1 -0
  15. package/dist/__tests__/integration.test.js +50 -0
  16. package/dist/__tests__/loader.test.d.ts +1 -0
  17. package/dist/__tests__/loader.test.js +89 -0
  18. package/dist/__tests__/neural-spark.test.d.ts +1 -0
  19. package/dist/__tests__/neural-spark.test.js +112 -0
  20. package/dist/__tests__/pagination.test.d.ts +1 -0
  21. package/dist/__tests__/pagination.test.js +23 -0
  22. package/dist/__tests__/redaction.test.d.ts +1 -0
  23. package/dist/__tests__/redaction.test.js +17 -0
  24. package/dist/__tests__/registry.test.d.ts +1 -0
  25. package/dist/__tests__/registry.test.js +56 -0
  26. package/dist/__tests__/retry.test.d.ts +1 -0
  27. package/dist/__tests__/retry.test.js +30 -0
  28. package/dist/__tests__/skill-activation.test.d.ts +1 -0
  29. package/dist/__tests__/skill-activation.test.js +112 -0
  30. package/dist/__tests__/working-memory.test.d.ts +1 -0
  31. package/dist/__tests__/working-memory.test.js +200 -0
  32. package/dist/__tests__/workspace-paths.test.d.ts +1 -0
  33. package/dist/__tests__/workspace-paths.test.js +56 -0
  34. package/dist/__tests__/writer.test.d.ts +1 -0
  35. package/dist/__tests__/writer.test.js +94 -0
  36. package/dist/api/auth/crypto.d.ts +4 -0
  37. package/dist/api/auth/crypto.js +54 -0
  38. package/dist/api/middleware/auth.d.ts +12 -0
  39. package/dist/api/middleware/auth.js +90 -0
  40. package/dist/api/pagination.d.ts +18 -0
  41. package/dist/api/pagination.js +32 -0
  42. package/dist/api/routes/auth.d.ts +1 -0
  43. package/dist/api/routes/auth.js +130 -0
  44. package/dist/api/routes/chat-completions.d.ts +7 -0
  45. package/dist/api/routes/chat-completions.js +474 -0
  46. package/dist/api/routes/contradictions.d.ts +1 -0
  47. package/dist/api/routes/contradictions.js +28 -0
  48. package/dist/api/routes/evidence.d.ts +1 -0
  49. package/dist/api/routes/evidence.js +59 -0
  50. package/dist/api/routes/governance.d.ts +1 -0
  51. package/dist/api/routes/governance.js +95 -0
  52. package/dist/api/routes/graph.d.ts +1 -0
  53. package/dist/api/routes/graph.js +25 -0
  54. package/dist/api/routes/hooks.d.ts +1 -0
  55. package/dist/api/routes/hooks.js +88 -0
  56. package/dist/api/routes/memories.d.ts +1 -0
  57. package/dist/api/routes/memories.js +92 -0
  58. package/dist/api/routes/persona.d.ts +1 -0
  59. package/dist/api/routes/persona.js +9 -0
  60. package/dist/api/routes/scenes.d.ts +1 -0
  61. package/dist/api/routes/scenes.js +35 -0
  62. package/dist/api/routes/skills.d.ts +1 -0
  63. package/dist/api/routes/skills.js +14 -0
  64. package/dist/api/routes/stats.d.ts +1 -0
  65. package/dist/api/routes/stats.js +8 -0
  66. package/dist/api/routes/users.d.ts +1 -0
  67. package/dist/api/routes/users.js +82 -0
  68. package/dist/api/routes/working.d.ts +1 -0
  69. package/dist/api/routes/working.js +88 -0
  70. package/dist/index.d.ts +2 -0
  71. package/dist/index.js +492 -0
  72. package/dist/integrations/claude-code.d.ts +12 -0
  73. package/dist/integrations/claude-code.js +35 -0
  74. package/dist/integrations/codex.d.ts +12 -0
  75. package/dist/integrations/codex.js +34 -0
  76. package/dist/integrations/generic-mcp.d.ts +52 -0
  77. package/dist/integrations/generic-mcp.js +118 -0
  78. package/dist/loader.d.ts +29 -0
  79. package/dist/loader.js +200 -0
  80. package/dist/memory/capture.d.ts +35 -0
  81. package/dist/memory/capture.js +230 -0
  82. package/dist/memory/config.d.ts +2 -0
  83. package/dist/memory/config.js +3 -0
  84. package/dist/memory/engine.d.ts +203 -0
  85. package/dist/memory/engine.js +626 -0
  86. package/dist/memory/llm-semaphore.d.ts +41 -0
  87. package/dist/memory/llm-semaphore.js +81 -0
  88. package/dist/memory/memory-type-config.d.ts +11 -0
  89. package/dist/memory/memory-type-config.js +65 -0
  90. package/dist/memory/pipeline/cognitive-contradiction.d.ts +7 -0
  91. package/dist/memory/pipeline/cognitive-contradiction.js +59 -0
  92. package/dist/memory/pipeline/cognitive-dedup.d.ts +23 -0
  93. package/dist/memory/pipeline/cognitive-dedup.js +38 -0
  94. package/dist/memory/pipeline/cognitive-extractor.d.ts +21 -0
  95. package/dist/memory/pipeline/cognitive-extractor.js +183 -0
  96. package/dist/memory/pipeline/contextual-focus-builder.d.ts +13 -0
  97. package/dist/memory/pipeline/contextual-focus-builder.js +135 -0
  98. package/dist/memory/pipeline/focus-direction-shift.d.ts +10 -0
  99. package/dist/memory/pipeline/focus-direction-shift.js +27 -0
  100. package/dist/memory/pipeline/graph-builder.d.ts +11 -0
  101. package/dist/memory/pipeline/graph-builder.js +88 -0
  102. package/dist/memory/pipeline/graph-recall.d.ts +13 -0
  103. package/dist/memory/pipeline/graph-recall.js +55 -0
  104. package/dist/memory/pipeline/identity-distiller.d.ts +15 -0
  105. package/dist/memory/pipeline/identity-distiller.js +40 -0
  106. package/dist/memory/pipeline/l1-contradiction.d.ts +7 -0
  107. package/dist/memory/pipeline/l1-contradiction.js +66 -0
  108. package/dist/memory/pipeline/l1-dedup.d.ts +23 -0
  109. package/dist/memory/pipeline/l1-dedup.js +39 -0
  110. package/dist/memory/pipeline/l1-extractor.d.ts +21 -0
  111. package/dist/memory/pipeline/l1-extractor.js +180 -0
  112. package/dist/memory/pipeline/l2-direction-shift.d.ts +10 -0
  113. package/dist/memory/pipeline/l2-direction-shift.js +27 -0
  114. package/dist/memory/pipeline/l2-scene.d.ts +15 -0
  115. package/dist/memory/pipeline/l2-scene.js +140 -0
  116. package/dist/memory/pipeline/l3-distiller.d.ts +15 -0
  117. package/dist/memory/pipeline/l3-distiller.js +40 -0
  118. package/dist/memory/pipeline/neural-spark.d.ts +27 -0
  119. package/dist/memory/pipeline/neural-spark.js +78 -0
  120. package/dist/memory/pipeline/skill-prewarm.d.ts +63 -0
  121. package/dist/memory/pipeline/skill-prewarm.js +127 -0
  122. package/dist/memory/pipeline/task-queue.d.ts +54 -0
  123. package/dist/memory/pipeline/task-queue.js +117 -0
  124. package/dist/memory/prompts/cognitive-contradiction.d.ts +1 -0
  125. package/dist/memory/prompts/cognitive-contradiction.js +25 -0
  126. package/dist/memory/prompts/cognitive-extraction.d.ts +10 -0
  127. package/dist/memory/prompts/cognitive-extraction.js +114 -0
  128. package/dist/memory/prompts/core-identity.d.ts +6 -0
  129. package/dist/memory/prompts/core-identity.js +60 -0
  130. package/dist/memory/prompts/focus-direction-shift.d.ts +5 -0
  131. package/dist/memory/prompts/focus-direction-shift.js +32 -0
  132. package/dist/memory/prompts/focus-scene-cluster.d.ts +2 -0
  133. package/dist/memory/prompts/focus-scene-cluster.js +33 -0
  134. package/dist/memory/prompts/focus-scene.d.ts +7 -0
  135. package/dist/memory/prompts/focus-scene.js +40 -0
  136. package/dist/memory/prompts/graph-extraction-batch.d.ts +14 -0
  137. package/dist/memory/prompts/graph-extraction-batch.js +54 -0
  138. package/dist/memory/prompts/graph-extraction.d.ts +2 -0
  139. package/dist/memory/prompts/graph-extraction.js +53 -0
  140. package/dist/memory/prompts/l1-contradiction-batch.d.ts +16 -0
  141. package/dist/memory/prompts/l1-contradiction-batch.js +47 -0
  142. package/dist/memory/prompts/l1-contradiction.d.ts +1 -0
  143. package/dist/memory/prompts/l1-contradiction.js +25 -0
  144. package/dist/memory/prompts/l1-extraction.d.ts +10 -0
  145. package/dist/memory/prompts/l1-extraction.js +114 -0
  146. package/dist/memory/prompts/l2-direction-shift.d.ts +5 -0
  147. package/dist/memory/prompts/l2-direction-shift.js +32 -0
  148. package/dist/memory/prompts/l2-scene-cluster.d.ts +2 -0
  149. package/dist/memory/prompts/l2-scene-cluster.js +33 -0
  150. package/dist/memory/prompts/l2-scene.d.ts +7 -0
  151. package/dist/memory/prompts/l2-scene.js +40 -0
  152. package/dist/memory/prompts/l3-persona.d.ts +6 -0
  153. package/dist/memory/prompts/l3-persona.js +60 -0
  154. package/dist/memory/recall.d.ts +47 -0
  155. package/dist/memory/recall.js +427 -0
  156. package/dist/memory/redaction.d.ts +1 -0
  157. package/dist/memory/redaction.js +24 -0
  158. package/dist/memory/retry.d.ts +13 -0
  159. package/dist/memory/retry.js +53 -0
  160. package/dist/memory/scheduler.d.ts +9 -0
  161. package/dist/memory/scheduler.js +16 -0
  162. package/dist/memory/skill-hints-loader.d.ts +30 -0
  163. package/dist/memory/skill-hints-loader.js +100 -0
  164. package/dist/memory/store/embedding.d.ts +16 -0
  165. package/dist/memory/store/embedding.js +68 -0
  166. package/dist/memory/store/reranker.d.ts +24 -0
  167. package/dist/memory/store/reranker.js +83 -0
  168. package/dist/memory/store/sqlite.d.ts +167 -0
  169. package/dist/memory/store/sqlite.js +1816 -0
  170. package/dist/memory/store/types.d.ts +101 -0
  171. package/dist/memory/store/types.js +1 -0
  172. package/dist/memory/types.d.ts +207 -0
  173. package/dist/memory/types.js +7 -0
  174. package/dist/memory/validation.d.ts +441 -0
  175. package/dist/memory/validation.js +129 -0
  176. package/dist/memory/working/canvas.d.ts +5 -0
  177. package/dist/memory/working/canvas.js +43 -0
  178. package/dist/memory/working/offload.d.ts +71 -0
  179. package/dist/memory/working/offload.js +211 -0
  180. package/dist/memory/working/step-log.d.ts +16 -0
  181. package/dist/memory/working/step-log.js +35 -0
  182. package/dist/registry.d.ts +34 -0
  183. package/dist/registry.js +305 -0
  184. package/dist/resolver.d.ts +17 -0
  185. package/dist/resolver.js +126 -0
  186. package/dist/scripts/validate-foreign-workspace-path.d.ts +1 -0
  187. package/dist/scripts/validate-foreign-workspace-path.js +39 -0
  188. package/dist/tools/agent_memory_tools.d.ts +485 -0
  189. package/dist/tools/agent_memory_tools.js +793 -0
  190. package/dist/tools/create_skill.d.ts +46 -0
  191. package/dist/tools/create_skill.js +46 -0
  192. package/dist/tools/get_doc.d.ts +21 -0
  193. package/dist/tools/get_doc.js +24 -0
  194. package/dist/tools/get_persona.d.ts +15 -0
  195. package/dist/tools/get_persona.js +20 -0
  196. package/dist/tools/get_reference.d.ts +15 -0
  197. package/dist/tools/get_reference.js +20 -0
  198. package/dist/tools/get_skill.d.ts +34 -0
  199. package/dist/tools/get_skill.js +65 -0
  200. package/dist/tools/get_template_doc.d.ts +21 -0
  201. package/dist/tools/get_template_doc.js +24 -0
  202. package/dist/tools/list_docs.d.ts +15 -0
  203. package/dist/tools/list_docs.js +16 -0
  204. package/dist/tools/list_skills.d.ts +18 -0
  205. package/dist/tools/list_skills.js +17 -0
  206. package/dist/tools/list_template_docs.d.ts +15 -0
  207. package/dist/tools/list_template_docs.js +16 -0
  208. package/dist/tools/memory-engineering.d.ts +225 -0
  209. package/dist/tools/memory-engineering.js +284 -0
  210. package/dist/tools/memory-explain.d.ts +34 -0
  211. package/dist/tools/memory-explain.js +109 -0
  212. package/dist/tools/memory-governance.d.ts +171 -0
  213. package/dist/tools/memory-governance.js +224 -0
  214. package/dist/tools/memory-hooks.d.ts +67 -0
  215. package/dist/tools/memory-hooks.js +102 -0
  216. package/dist/tools/memory-working.d.ts +98 -0
  217. package/dist/tools/memory-working.js +101 -0
  218. package/dist/tools/memory_capture_turn.d.ts +66 -0
  219. package/dist/tools/memory_capture_turn.js +85 -0
  220. package/dist/tools/memory_consolidate.d.ts +55 -0
  221. package/dist/tools/memory_consolidate.js +176 -0
  222. package/dist/tools/memory_contradictions.d.ts +53 -0
  223. package/dist/tools/memory_contradictions.js +52 -0
  224. package/dist/tools/memory_graph_query.d.ts +51 -0
  225. package/dist/tools/memory_graph_query.js +35 -0
  226. package/dist/tools/memory_mark_cited.d.ts +43 -0
  227. package/dist/tools/memory_mark_cited.js +63 -0
  228. package/dist/tools/memory_recall.d.ts +77 -0
  229. package/dist/tools/memory_recall.js +81 -0
  230. package/dist/tools/memory_register_skill_hints.d.ts +49 -0
  231. package/dist/tools/memory_register_skill_hints.js +55 -0
  232. package/dist/tools/memory_resolve_session.d.ts +24 -0
  233. package/dist/tools/memory_resolve_session.js +133 -0
  234. package/dist/tools/memory_search.d.ts +146 -0
  235. package/dist/tools/memory_search.js +84 -0
  236. package/dist/tools/search_skills.d.ts +18 -0
  237. package/dist/tools/search_skills.js +17 -0
  238. package/dist/tools/update_doc.d.ts +24 -0
  239. package/dist/tools/update_doc.js +35 -0
  240. package/dist/tools/update_skill.d.ts +30 -0
  241. package/dist/tools/update_skill.js +80 -0
  242. package/dist/types.d.ts +81 -0
  243. package/dist/types.js +4 -0
  244. package/dist/writer.d.ts +30 -0
  245. package/dist/writer.js +220 -0
  246. package/docs/TEMPLATE ONLY +1 -0
  247. package/docs/api/API.md +64 -0
  248. package/docs/api/security/SECURITY.md +58 -0
  249. package/docs/deployment/DockerDeployment.md +30 -0
  250. package/docs/design/Design.md +59 -0
  251. package/docs/design/themes/apple.md +101 -0
  252. package/docs/design/themes/dieter-grid.md +100 -0
  253. package/docs/design/themes/gallery-white.md +100 -0
  254. package/docs/design/themes/pinterest.md +101 -0
  255. package/docs/design/themes/realty-open-house.md +101 -0
  256. package/docs/design/themes/vodafone.md +101 -0
  257. package/docs/hooks/Hooks.md +30 -0
  258. package/docs/schema/Schema.md +35 -0
  259. package/docs/strategy/ScalingStrategy.md +19 -0
  260. package/package.json +88 -0
  261. package/references/accessibility-checklist.md +160 -0
  262. package/references/orchestration-patterns.md +370 -0
  263. package/references/performance-checklist.md +153 -0
  264. package/references/security-checklist.md +134 -0
  265. package/references/testing-patterns.md +236 -0
  266. package/skills/agent/adr-skill/SKILL.md +299 -0
  267. package/skills/agent/agentic-engineering-workflow/SKILL.md +95 -0
  268. package/skills/agent/bootstrap-skill/SKILL.md +103 -0
  269. package/skills/agent/context-engineering/SKILL.md +307 -0
  270. package/skills/agent/debugging-and-error-recovery/SKILL.md +308 -0
  271. package/skills/agent/developer-growth-analysis/SKILL.md +328 -0
  272. package/skills/agent/doubt-driven-skill/SKILL.md +249 -0
  273. package/skills/agent/handover-skill/SKILL.md +112 -0
  274. package/skills/agent/idea-refine-skill/SKILL.md +185 -0
  275. package/skills/agent/idea-refine-skill/examples.md +238 -0
  276. package/skills/agent/idea-refine-skill/frameworks.md +99 -0
  277. package/skills/agent/idea-refine-skill/refinement-criteria.md +113 -0
  278. package/skills/agent/interview-skill/SKILL.md +226 -0
  279. package/skills/agent/planning-skill/SKILL.md +270 -0
  280. package/skills/agent/skill-authoring/SKILL.md +189 -0
  281. package/skills/agent/source-driven-skill/SKILL.md +197 -0
  282. package/skills/agent/spec-driven-skill/SKILL.md +221 -0
  283. package/skills/agent/sync-skill/SKILL.md +92 -0
  284. package/skills/agent/using-agent-skills/SKILL.md +189 -0
  285. package/skills/api/a11y-skill/SKILL.md +88 -0
  286. package/skills/api/api-skill/SKILL.md +123 -0
  287. package/skills/api/auth-skill/SKILL.md +80 -0
  288. package/skills/api/debug-skill/SKILL.md +535 -0
  289. package/skills/api/performance-skill/SKILL.md +100 -0
  290. package/skills/api/testing-skill/SKILL.md +100 -0
  291. package/skills/codebase/code-review-and-quality/SKILL.md +228 -0
  292. package/skills/codebase/code-simplification/SKILL.md +352 -0
  293. package/skills/codebase/code-structure-cleanup/SKILL.md +142 -0
  294. package/skills/codebase/concerns-skill/SKILL.md +89 -0
  295. package/skills/codebase/conventions-skill/SKILL.md +95 -0
  296. package/skills/codebase/doc-management-skill/SKILL.md +47 -0
  297. package/skills/codebase/git-workflow-skill/SKILL.md +312 -0
  298. package/skills/communication/1-3-1-rule/SKILL.md +120 -0
  299. package/skills/design/brutalist-skill/SKILL.md +131 -0
  300. package/skills/design/concept-diagrams/SKILL.md +387 -0
  301. package/skills/design/concept-diagrams/examples/apartment-floor-plan-conversion.md +244 -0
  302. package/skills/design/concept-diagrams/examples/automated-password-reset-flow.md +276 -0
  303. package/skills/design/concept-diagrams/examples/autonomous-llm-research-agent-flow.md +240 -0
  304. package/skills/design/concept-diagrams/examples/banana-journey-tree-to-smoothie.md +161 -0
  305. package/skills/design/concept-diagrams/examples/commercial-aircraft-structure.md +209 -0
  306. package/skills/design/concept-diagrams/examples/cpu-ooo-microarchitecture.md +236 -0
  307. package/skills/design/concept-diagrams/examples/electricity-grid-flow.md +182 -0
  308. package/skills/design/concept-diagrams/examples/feature-film-production-pipeline.md +172 -0
  309. package/skills/design/concept-diagrams/examples/hospital-emergency-department-flow.md +165 -0
  310. package/skills/design/concept-diagrams/examples/ml-benchmark-grouped-bar-chart.md +114 -0
  311. package/skills/design/concept-diagrams/examples/place-order-uml-sequence.md +325 -0
  312. package/skills/design/concept-diagrams/examples/smart-city-infrastructure.md +173 -0
  313. package/skills/design/concept-diagrams/examples/smartphone-layer-anatomy.md +154 -0
  314. package/skills/design/concept-diagrams/examples/sn2-reaction-mechanism.md +247 -0
  315. package/skills/design/concept-diagrams/examples/wind-turbine-structure.md +338 -0
  316. package/skills/design/concept-diagrams/references/dashboard-patterns.md +43 -0
  317. package/skills/design/concept-diagrams/references/infrastructure-patterns.md +144 -0
  318. package/skills/design/concept-diagrams/references/physical-shape-cookbook.md +42 -0
  319. package/skills/design/concept-diagrams/templates/template.html +174 -0
  320. package/skills/design/gpt-tasteskill/SKILL.md +114 -0
  321. package/skills/design/minimalist-skill/SKILL.md +116 -0
  322. package/skills/design/output-skill/SKILL.md +87 -0
  323. package/skills/design/redesign-skill/SKILL.md +213 -0
  324. package/skills/design/soft-skill/SKILL.md +132 -0
  325. package/skills/design/stitch-skill/EXAMPLE.md +121 -0
  326. package/skills/design/stitch-skill/SKILL.md +222 -0
  327. package/skills/design/taste-skill/SKILL.md +269 -0
  328. package/skills/devops/ci-cd-skill/SKILL.md +402 -0
  329. package/skills/devops/docker-skill/SKILL.md +297 -0
  330. package/skills/devops/domain-skill/SKILL.md +234 -0
  331. package/skills/lifecycle/changelog-generator/SKILL.md +135 -0
  332. package/skills/lifecycle/incremental-skill/SKILL.md +257 -0
  333. package/skills/lifecycle/migration-skill/SKILL.md +218 -0
  334. package/skills/lifecycle/shipping-skill/SKILL.md +321 -0
  335. package/skills/memory/agent-memory/SKILL.md +122 -0
  336. package/skills/qa/browser-testing-skill/SKILL.md +314 -0
  337. package/skills/ux/adversarial-ux-skill/SKILL.md +168 -0
@@ -0,0 +1,234 @@
1
+ ---
2
+ name: domain-skill
3
+ description: Architect production-ready domain routing. Configure reverse proxies (e.g., Traefik), SSL/TLS certificates, and Cloudflare tunnels for secure public access.
4
+ hints: |
5
+ - Always identify the primary hostnames (e.g. app.domain.com, api.domain.com) before structuring routing.
6
+ - Review Traefik labels in docker-compose.yml to ensure correct entrypoint and rule mappings.
7
+ - Use Cloudflare Zero Trust tunnels to establish secure outbound-only ingress paths without exposing local ports.
8
+ - Set up environment variables (like DOMAIN, CORS_ORIGIN, and WebAuthn relying party IDs) dynamically.
9
+ - Test routing and certificate issuance sequentially, beginning with Flexible TLS before strict enforcement.
10
+ ---
11
+
12
+ # Custom Domain & Networking
13
+
14
+ ## Overview
15
+
16
+ A robust routing architecture ensures secure, encrypted public access to backend and frontend services. This skill guides the setup of production-ready routing using reverse proxies (e.g., Traefik v3) coupled with secure edge ingress (e.g., Cloudflare Tunnels) to direct external traffic cleanly to containerized services without exposing local ports.
17
+
18
+ ## Ingress Architecture
19
+
20
+ ```
21
+ Browser
22
+ │ HTTPS (TLS terminated by Cloudflare)
23
+
24
+ Cloudflare Edge (api.yourdomain.com)
25
+ │ Outbound tunnel (no open ports needed)
26
+
27
+ cloudflared daemon ← Docker container, profile: production
28
+ │ HTTP http://traefik:80
29
+
30
+ Traefik v3 ← traefik container
31
+ │ HTTP :3001
32
+
33
+ Node.js / Express ← backend container
34
+ ```
35
+
36
+ > Local dev skips cloudflared entirely. Traefik routes `Host(\`localhost\`)` directly.
37
+
38
+ ---
39
+
40
+ ## Environment Variables
41
+
42
+ Ensure the following networking environment variables are configured in the `.env` or deployment settings:
43
+
44
+ | Variable | Dev value | Prod value | Purpose |
45
+ |---|---|---|---|
46
+ | `DOMAIN` | `api.yourdomain.com` | `api.yourdomain.com` | Traefik HTTPS router host rule |
47
+ | `ACME_EMAIL` | `admin@yourdomain.com` | `admin@yourdomain.com` | Let's Encrypt certificate contact |
48
+ | `CLOUDFLARE_TUNNEL_TOKEN` | *(blank)* | `<token from CF dashboard>` | Authenticates cloudflared to Cloudflare |
49
+ | `FRONTEND_URL` | `http://localhost:3000` | `https://yourdomain.com` | Email link base URL |
50
+ | `CORS_ORIGIN` | `http://localhost:3000,https://yourdomain.com` | `https://yourdomain.com` | Allowed CORS origins |
51
+ | `PASSKEY_RP_ID` | `localhost` | `yourdomain.com` | WebAuthn Relying Party ID |
52
+ | `PASSKEY_ORIGIN` | `http://localhost:3000` | `https://yourdomain.com` | WebAuthn allowed origin |
53
+
54
+ ---
55
+
56
+ ## Traefik Router Setup
57
+
58
+ Two routers are typically configured in `docker-compose.yml` on the `backend` service:
59
+
60
+ ### HTTP Router (always active)
61
+
62
+ ```yaml
63
+ - "traefik.http.routers.backend.rule=Host(`localhost`) || Host(`api.yourdomain.com`)"
64
+ - "traefik.http.routers.backend.entrypoints=web"
65
+ ```
66
+
67
+ Accepts both `localhost` (dev) and `api.yourdomain.com` (prod via cloudflared HTTP passthrough).
68
+
69
+ ### HTTPS Router (activates with Cloudflare Full strict)
70
+
71
+ ```yaml
72
+ - "traefik.http.routers.backend-secure.rule=Host(`api.yourdomain.com`)"
73
+ - "traefik.http.routers.backend-secure.entrypoints=websecure"
74
+ - "traefik.http.routers.backend-secure.tls=true"
75
+ - "traefik.http.routers.backend-secure.tls.certresolver=letsencrypt"
76
+ ```
77
+
78
+ Traefik will auto-issue a Let's Encrypt cert once `api.yourdomain.com` is publicly resolvable.
79
+
80
+ ---
81
+
82
+ ## Cloudflare SSL Mode Decision
83
+
84
+ | Mode | When to use | Traefik TLS needed? |
85
+ |---|---|---|
86
+ | **Flexible** | Dev/staging; simplest setup | ❌ No |
87
+ | **Full** | Traefik has any cert (even self-signed) | ✅ Yes |
88
+ | **Full (strict)** | Production; Traefik has valid Let's Encrypt cert | ✅ Yes |
89
+
90
+ > **Recommended:** Start with **Flexible** to verify connectivity, then switch to **Full (strict)** once the domain is proven reachable and Let's Encrypt issues the cert.
91
+
92
+ ---
93
+
94
+ ## Workflow
95
+
96
+ ### Step 1 — Create the tunnel
97
+
98
+ 1. Go to [Cloudflare Zero Trust](https://one.dash.cloudflare.com) → **Networks → Tunnels → Create a tunnel**
99
+ 2. Choose **Cloudflared** connector
100
+ 3. Name the tunnel `app-tunnel`
101
+ 4. Copy the **tunnel token** — this is your `CLOUDFLARE_TUNNEL_TOKEN`
102
+
103
+ ### Step 2 — Configure Public Hostname
104
+
105
+ In the tunnel settings, add a Public Hostname:
106
+
107
+ | Field | Value |
108
+ |---|---|
109
+ | Subdomain | `api` |
110
+ | Domain | `yourdomain.com` |
111
+ | Service Type | `HTTP` |
112
+ | Service URL | `traefik:80` |
113
+
114
+ Cloudflare will automatically create the DNS record:
115
+
116
+ | Type | Name | Target | Proxy |
117
+ |---|---|---|---|
118
+ | CNAME | `api` | `<tunnel-id>.cfargotunnel.com` | ✅ Proxied |
119
+
120
+ ### Step 3 — Add token to `.env`
121
+
122
+ ```bash
123
+ # .env
124
+ CLOUDFLARE_TUNNEL_TOKEN=<paste token here>
125
+ ```
126
+
127
+ ### Step 4 — Start cloudflared
128
+
129
+ ```bash
130
+ # Only starts services with the production profile
131
+ docker compose --profile production up -d cloudflared
132
+
133
+ # Verify connection
134
+ docker logs cloudflared --tail 20
135
+ # Expected: "Connection established" / "Registered tunnel connection"
136
+ ```
137
+
138
+ ### Step 5 — Verify
139
+
140
+ ```bash
141
+ # Health check through the full tunnel
142
+ curl https://api.yourdomain.com/health
143
+ # Expected: { "status": "ok", ... }
144
+
145
+ # Check Traefik picked up the new router
146
+ open http://localhost:8080 # Traefik dashboard
147
+ ```
148
+
149
+ ---
150
+
151
+ ## SSL Mode: Switch to Full (strict)
152
+
153
+ Once Let's Encrypt issues the cert (check Traefik dashboard → TLS), switch Cloudflare:
154
+
155
+ 1. Cloudflare dashboard → **SSL/TLS → Overview**
156
+ 2. Change mode to **Full (strict)**
157
+ 3. No Docker restart needed — Traefik handles this automatically
158
+
159
+ ---
160
+
161
+ ## Cloudflared Compose Profile
162
+
163
+ The `cloudflared` service uses `profiles: [production]` so it **never starts** during normal dev:
164
+
165
+ ```bash
166
+ # Dev (cloudflared excluded)
167
+ docker compose up -d
168
+
169
+ # Production (all services including cloudflared)
170
+ docker compose --profile production up -d
171
+
172
+ # Start cloudflared only (if stack is already running)
173
+ docker compose --profile production up -d cloudflared
174
+ ```
175
+
176
+ ---
177
+
178
+ ## Migration Path: Tunnel → VPS + WireGuard
179
+
180
+ When you move to a dedicated server with a static IP:
181
+
182
+ 1. **Remove** `cloudflared` service from docker-compose (or keep as fallback)
183
+ 2. **Point** Cloudflare DNS `A` record `api` → `<vps-ip>` (Proxied ✅)
184
+ 3. **Open** ports `80` and `443` on the VPS firewall
185
+ 4. **Traefik** will handle Let's Encrypt directly via HTTP challenge on port 80
186
+ 5. **Update** SSL/TLS mode to **Full (strict)** in Cloudflare
187
+
188
+ The Traefik labels and ACME config in docker-compose remain identical — only the ingress path changes.
189
+
190
+ ---
191
+
192
+ ## Pitfalls
193
+
194
+ | Problem | Cause | Fix |
195
+ |---|---|---|
196
+ | `curl: (6) Could not resolve host` | DNS not propagated | Wait 1–5 min after Cloudflare saves the CNAME |
197
+ | Tunnel connected but 502 | cloudflared can't reach `traefik:80` | Verify both are on the same docker network; check `docker network inspect` |
198
+ | Let's Encrypt cert not issued | Domain not publicly reachable on port 80 | Use Flexible SSL mode until tunnel is confirmed working |
199
+ | CORS errors in browser | `CORS_ORIGIN` missing origin domain | Add proper origin to `.env` and restart backend |
200
+ | WebAuthn fails on prod | `PASSKEY_RP_ID` still set to `localhost` | Update to the production domain and redeploy |
201
+ | `--profile production` not recognized | Old Docker Compose version | Upgrade to Docker Compose v2.x (`docker compose version`) |
202
+
203
+ ## When to Use
204
+
205
+ - Mapping custom domains (e.g., `app.domain.com` or `api.domain.com`) to containerized services.
206
+ - Designing secure ingress architectures via reverse proxies (e.g., Traefik, Nginx) and edge providers (e.g., Cloudflare).
207
+ - Setting up SSL/TLS termination, automated certificate resolvers (Let's Encrypt), or Cloudflare Tunnels (`cloudflared`).
208
+
209
+ **When NOT to use:**
210
+ - Basic local-only dev environments that do not require DNS mapping or secure public access.
211
+ - Deploying on serverless platforms (e.g., Vercel, Netlify) where domain routing is fully managed by the provider.
212
+
213
+ ## Common Rationalizations
214
+
215
+ | Rationalization | Reality |
216
+ |---|---|
217
+ | "I will expose the container port directly to the internet." | Exposing service ports directly bypasses reverse proxy benefits (load balancing, SSL termination, request filtering) and introduces massive security vulnerabilities. |
218
+ | "I'll use HTTP in staging to save setup time." | Staging must mimic production. Omitting TLS in staging leads to hidden CORS, WebAuthn, cookie security, or certificate routing errors that only show up in production. |
219
+ | "Setting up Cloudflare tunnels is too slow; I'll just open port 80/443." | Opening incoming ports makes the host machine an active target for automated port scanners. Outbound-only tunnels are vastly more secure. |
220
+
221
+ ## Red Flags
222
+
223
+ - Hardcoded domain names in docker-compose configurations instead of environment variables.
224
+ - Using Flexible SSL/TLS modes in production indefinitely without terminating TLS at the reverse proxy (leaves edge-to-origin traffic unencrypted).
225
+ - Mixing production tunnel credentials or domain records directly inside shared development files.
226
+ - Exposing Traefik dashboards publicly without authentication or strong basic auth middlewares.
227
+
228
+ ## Verification
229
+
230
+ After completing the domain setup, verify:
231
+ - [ ] Ingress paths are tested and return valid HTTP statuses (e.g., 200 OK, secure 301 redirects).
232
+ - [ ] SSL/TLS certificate is verified as valid and issued by a recognized CA (e.g., Let's Encrypt, Cloudflare Edge).
233
+ - [ ] CORS origins and authentication parameters (e.g., WebAuthn/Passkey RP IDs) match the active host exactly.
234
+ - [ ] Cloudflared connections are confirmed in container logs with `Connection established` and no active errors.
@@ -0,0 +1,135 @@
1
+ ---
2
+ name: changelog-generator
3
+ description: Automatically creates user-facing changelogs from git commits by analyzing commit history, categorizing changes, and transforming technical commits into clear, customer-friendly release notes. Turns hours of manual changelog writing into minutes of automated generation.
4
+ hints:
5
+ - Check openSrc/ or existing project files for CHANGELOG.md patterns and formats if available.
6
+ - Exclude developer-only noise (e.g. chore, simple refactoring, config updates) from user-facing logs.
7
+ - Group additions into cohesive, standard categories: Features, Improvements, Bug Fixes, Breaking Changes, Security.
8
+ - Translate technical implementation terms (e.g., class names, SQL keys) into user-facing benefits and actions.
9
+ - Highlight breaking changes or required migration steps prominently at the top of the changelog notes.
10
+ ---
11
+
12
+ # Changelog Generator
13
+
14
+ This skill transforms technical git commits into polished, user-friendly changelogs that your customers and users will actually understand and appreciate.
15
+
16
+ ## When to Use This Skill
17
+
18
+ - Preparing release notes for a new version
19
+ - Creating weekly or monthly product update summaries
20
+ - Documenting changes for customers
21
+ - Writing changelog entries for app store submissions
22
+ - Generating update notifications
23
+ - Creating internal release documentation
24
+ - Maintaining a public changelog/product updates page
25
+
26
+ ## Overview
27
+
28
+ 1. **Scans Git History**: Analyzes commits from a specific time period or between versions
29
+ 2. **Categorizes Changes**: Groups commits into logical categories (features, improvements, bug fixes, breaking changes, security)
30
+ 3. **Translates Technical → User-Friendly**: Converts developer commits into customer language
31
+ 4. **Formats Professionally**: Creates clean, structured changelog entries
32
+ 5. **Filters Noise**: Excludes internal commits (refactoring, tests, etc.)
33
+ 6. **Follows Best Practices**: Applies changelog guidelines and your brand voice
34
+
35
+
36
+ ## Workflow
37
+
38
+ 1. Identify release scope (version range, commit range, or date range).
39
+ 2. Gather relevant commits and exclude maintenance noise.
40
+ 3. Group changes into user-facing categories.
41
+ 4. Rewrite each item in plain customer language.
42
+ 5. Format output as publish-ready markdown and verify clarity.
43
+
44
+ ## Usage
45
+
46
+ ### Basic Usage
47
+
48
+ From your project repository:
49
+
50
+ ```
51
+ Create a changelog from commits since last release
52
+ ```
53
+
54
+ ```
55
+ Generate changelog for all commits from the past week
56
+ ```
57
+
58
+ ```
59
+ Create release notes for version 2.5.0
60
+ ```
61
+
62
+ ### With Specific Date Range
63
+
64
+ ```
65
+ Create a changelog for all commits between March 1 and March 15
66
+ ```
67
+
68
+ ### With Custom Guidelines
69
+
70
+ ```
71
+ Create a changelog for commits since v2.4.0, using my changelog
72
+ guidelines from CHANGELOG_STYLE.md
73
+ ```
74
+
75
+ ## Example
76
+
77
+ **User**: "Create a changelog for commits from the past 7 days"
78
+
79
+ **Output**:
80
+ ```markdown
81
+ # Updates - Week of March 10, 2024
82
+
83
+ ## ✨ New Features
84
+
85
+ - **Team Workspaces**: Create separate workspaces for different
86
+ projects. Invite team members and keep everything organized.
87
+
88
+ - **Keyboard Shortcuts**: Press ? to see all available shortcuts.
89
+ Navigate faster without touching your mouse.
90
+
91
+ ## 🔧 Improvements
92
+
93
+ - **Faster Sync**: Files now sync 2x faster across devices
94
+ - **Better Search**: Search now includes file contents, not just titles
95
+
96
+ ## 🐛 Fixes
97
+
98
+ - Fixed issue where large images wouldn't upload
99
+ - Resolved timezone confusion in scheduled posts
100
+ - Corrected notification badge count
101
+ ```
102
+
103
+ **Inspired by:** Manik Aggarwal's use case from Lenny's Newsletter
104
+
105
+ ## Tips
106
+
107
+ - Run from your git repository root
108
+ - Specify date ranges for focused changelogs
109
+ - Use your CHANGELOG_STYLE.md for consistent formatting
110
+ - Review and adjust the generated changelog before publishing
111
+ - Save output directly to CHANGELOG.md
112
+
113
+ ## Related Use Cases
114
+
115
+ - Creating GitHub release notes
116
+ - Writing app store update descriptions
117
+ - Generating email updates for users
118
+ - Creating social media announcement posts
119
+
120
+ ## Common Rationalizations
121
+ | Rationalization | Reality |
122
+ |---|---|
123
+ | I'll just dump raw commit logs directly. | Raw commits contain internal technical jargon (e.g. `refactor: fix database constraints`) that confuses users. |
124
+ | No one reads changelogs, so formatting doesn't matter. | Well-structured changelogs demonstrate project health, building trust with users and stakeholders. |
125
+
126
+ ## Red Flags
127
+ - Including chore commits (`chore: update eslint`) or test commits in user-facing release notes.
128
+ - Highlighting internal module names or database parameters instead of functional product capabilities.
129
+ - Obfuscating or hiding major breaking changes in fine print.
130
+
131
+ ## Verification
132
+ After completing the skill, confirm:
133
+ - [ ] Technical jargon is completely rewritten to represent user-facing value and utility.
134
+ - [ ] Internal/engineering noise (tests, configs, refactors) is filtered out.
135
+ - [ ] Markdown formatting is verified clean, readable, and properly categorized.
@@ -0,0 +1,257 @@
1
+ ---
2
+ name: incremental-skill
3
+ description: Delivers changes incrementally. Use when implementing any feature or change that touches more than one file. Use when you're about to write a large amount of code at once, or when a task feels too big to land in one step.
4
+ hints:
5
+ - Check openSrc/ or existing project layouts for modular folder structures if available.
6
+ - Implement code in thin vertical slices (e.g. database schema first, then api route, then frontend UI components).
7
+ - Verify every single micro-slice immediately after implementation via test runner or build suites.
8
+ - Wrap incomplete code blocks behind feature flags before merging to the main branch.
9
+ - Adhere strictly to scope discipline: document out-of-scope issues rather than attempting to refactor them immediately.
10
+ ---
11
+
12
+ # Incremental Implementation
13
+
14
+ ## Overview
15
+
16
+ Build in thin vertical slices — implement one piece, test it, verify it, then expand. Avoid implementing an entire feature in one pass. Each increment should leave the system in a working, testable state. This is the execution discipline that makes large features manageable.
17
+
18
+ ## When to Use
19
+
20
+ - Implementing any multi-file change
21
+ - Building a new feature from a task breakdown
22
+ - Refactoring existing code
23
+ - Any time you're tempted to write more than ~100 lines before testing
24
+
25
+ **When NOT to use:** Single-file, single-function changes where the scope is already minimal.
26
+
27
+ ## The Increment Cycle
28
+
29
+ ```
30
+ ┌──────────────────────────────────────┐
31
+ │ │
32
+ │ Implement ──→ Test ──→ Verify ──┐ │
33
+ │ ▲ │ │
34
+ │ └───── Commit ◄─────────────┘ │
35
+ │ │ │
36
+ │ ▼ │
37
+ │ Next slice │
38
+ │ │
39
+ └──────────────────────────────────────┘
40
+ ```
41
+
42
+ For each slice:
43
+
44
+ 1. **Implement** the smallest complete piece of functionality
45
+ 2. **Test** — run the test suite (or write a test if none exists)
46
+ 3. **Verify** — confirm the slice works as expected (tests pass, build succeeds, manual check)
47
+ 4. **Commit** -- save your progress with a descriptive message (see `git-workflow-and-versioning` for atomic commit guidance)
48
+ 5. **Move to the next slice** — carry forward, don't restart
49
+
50
+ ## Slicing Strategies
51
+
52
+ ### Vertical Slices (Preferred)
53
+
54
+ Build one complete path through the stack:
55
+
56
+ ```
57
+ Slice 1: Create a task (DB + API + basic UI)
58
+ → Tests pass, user can create a task via the UI
59
+
60
+ Slice 2: List tasks (query + API + UI)
61
+ → Tests pass, user can see their tasks
62
+
63
+ Slice 3: Edit a task (update + API + UI)
64
+ → Tests pass, user can modify tasks
65
+
66
+ Slice 4: Delete a task (delete + API + UI + confirmation)
67
+ → Tests pass, full CRUD complete
68
+ ```
69
+
70
+ Each slice delivers working end-to-end functionality.
71
+
72
+ ### Contract-First Slicing
73
+
74
+ When backend and frontend need to develop in parallel:
75
+
76
+ ```
77
+ Slice 0: Define the API contract (types, interfaces, OpenAPI spec)
78
+ Slice 1a: Implement backend against the contract + API tests
79
+ Slice 1b: Implement frontend against mock data matching the contract
80
+ Slice 2: Integrate and test end-to-end
81
+ ```
82
+
83
+ ### Risk-First Slicing
84
+
85
+ Tackle the riskiest or most uncertain piece first:
86
+
87
+ ```
88
+ Slice 1: Prove the WebSocket connection works (highest risk)
89
+ Slice 2: Build real-time task updates on the proven connection
90
+ Slice 3: Add offline support and reconnection
91
+ ```
92
+
93
+ If Slice 1 fails, you discover it before investing in Slices 2 and 3.
94
+
95
+ ## Implementation Rules
96
+
97
+ ### Rule 0: Simplicity First
98
+
99
+ Before writing any code, ask: "What is the simplest thing that could work?"
100
+
101
+ After writing code, review it against these checks:
102
+ - Can this be done in fewer lines?
103
+ - Are these abstractions earning their complexity?
104
+ - Would a staff engineer look at this and say "why didn't you just..."?
105
+ - Am I building for hypothetical future requirements, or the current task?
106
+
107
+ ```
108
+ SIMPLICITY CHECK:
109
+ ✗ Generic EventBus with middleware pipeline for one notification
110
+ ✓ Simple function call
111
+
112
+ ✗ Abstract factory pattern for two similar components
113
+ ✓ Two straightforward components with shared utilities
114
+
115
+ ✗ Config-driven form builder for three forms
116
+ ✓ Three form components
117
+ ```
118
+
119
+ Three similar lines of code is better than a premature abstraction. Implement the naive, obviously-correct version first. Optimize only after correctness is proven with tests.
120
+
121
+ ### Rule 0.5: Scope Discipline
122
+
123
+ Touch only what the task requires.
124
+
125
+ Do NOT:
126
+ - "Clean up" code adjacent to your change
127
+ - Refactor imports in files you're not modifying
128
+ - Remove comments you don't fully understand
129
+ - Add features not in the spec because they "seem useful"
130
+ - Modernize syntax in files you're only reading
131
+
132
+ If you notice something worth improving outside your task scope, note it — don't fix it:
133
+
134
+ ```
135
+ NOTICED BUT NOT TOUCHING:
136
+ - src/utils/format.ts has an unused import (unrelated to this task)
137
+ - The auth middleware could use better error messages (separate task)
138
+ → Want me to create tasks for these?
139
+ ```
140
+
141
+ ### Rule 1: One Thing at a Time
142
+
143
+ Each increment changes one logical thing. Don't mix concerns:
144
+
145
+ **Bad:** One commit that adds a new component, refactors an existing one, and updates the build config.
146
+
147
+ **Good:** Three separate commits — one for each change.
148
+
149
+ ### Rule 2: Keep It Compilable
150
+
151
+ After each increment, the project must build and existing tests must pass. Don't leave the codebase in a broken state between slices.
152
+
153
+ ### Rule 3: Feature Flags for Incomplete Features
154
+
155
+ If a feature isn't ready for users but you need to merge increments:
156
+
157
+ ```typescript
158
+ // Feature flag for work-in-progress
159
+ const ENABLE_TASK_SHARING = process.env.FEATURE_TASK_SHARING === 'true';
160
+
161
+ if (ENABLE_TASK_SHARING) {
162
+ // New sharing UI
163
+ }
164
+ ```
165
+
166
+ This lets you merge small increments to the main branch without exposing incomplete work.
167
+
168
+ ### Rule 4: Safe Defaults
169
+
170
+ New code should default to safe, conservative behavior:
171
+
172
+ ```typescript
173
+ // Safe: disabled by default, opt-in
174
+ export function createTask(data: TaskInput, options?: { notify?: boolean }) {
175
+ const shouldNotify = options?.notify ?? false;
176
+ // ...
177
+ }
178
+ ```
179
+
180
+ ### Rule 5: Rollback-Friendly
181
+
182
+ Each increment should be independently revertable:
183
+
184
+ - Additive changes (new files, new functions) are easy to revert
185
+ - Modifications to existing code should be minimal and focused
186
+ - Database migrations should have corresponding rollback migrations
187
+ - Avoid deleting something in one commit and replacing it in the same commit — separate them
188
+
189
+ ## Working with Agents
190
+
191
+ When directing an agent to implement incrementally:
192
+
193
+ ```
194
+ "Let's implement Task 3 from the plan.
195
+
196
+ Start with just the database schema change and the API endpoint.
197
+ Don't touch the UI yet — we'll do that in the next increment.
198
+
199
+ After implementing, run `npm test` and `npm run build` to verify
200
+ nothing is broken."
201
+ ```
202
+
203
+ Be explicit about what's in scope and what's NOT in scope for each increment.
204
+
205
+ ## Increment Checklist
206
+
207
+ After each increment, verify:
208
+
209
+ - [ ] The change does one thing and does it completely
210
+ - [ ] All existing tests still pass (`npm test`)
211
+ - [ ] The build succeeds (`npm run build`)
212
+ - [ ] Type checking passes (`npx tsc --noEmit`)
213
+ - [ ] Linting passes (`npm run lint`)
214
+ - [ ] The new functionality works as expected
215
+ - [ ] The change is committed with a descriptive message
216
+
217
+ **Note:** Run each verification command after a change that could affect it. After a successful run, don't repeat the same command unless the code has changed since — re-running on unchanged code adds no information.
218
+
219
+ ## Common Rationalizations
220
+
221
+ | Rationalization | Reality |
222
+ |---|---|
223
+ | "I'll test it all at the end" | Bugs compound. A bug in Slice 1 makes Slices 2-5 wrong. Test each slice. |
224
+ | "It's faster to do it all at once" | It *feels* faster until something breaks and you can't find which of 500 changed lines caused it. |
225
+ | "These changes are too small to commit separately" | Small commits are free. Large commits hide bugs and make rollbacks painful. |
226
+ | "I'll add the feature flag later" | If the feature isn't complete, it shouldn't be user-visible. Add the flag now. |
227
+ | "This refactor is small enough to include" | Refactors mixed with features make both harder to review and debug. Separate them. |
228
+ | "Let me run the build command again just to be sure" | After a successful run, repeating the same command adds nothing unless the code has changed since. Run it again after subsequent edits, not as reassurance. |
229
+
230
+ ## Red Flags
231
+
232
+ - More than 100 lines of code written without running tests
233
+ - Multiple unrelated changes in a single increment
234
+ - "Let me just quickly add this too" scope expansion
235
+ - Skipping the test/verify step to move faster
236
+ - Build or tests broken between increments
237
+ - Large uncommitted changes accumulating
238
+ - Building abstractions before the third use case demands it
239
+ - Touching files outside the task scope "while I'm here"
240
+ - Creating new utility files for one-time operations
241
+ - Running the same build/test command twice in a row without any intervening code change
242
+
243
+ ## Required Checks
244
+
245
+ After completing all increments for a task:
246
+
247
+ - [ ] Each increment was individually tested and committed.
248
+ - [ ] The full test suite passes.
249
+ - [ ] The build is clean and error-free.
250
+ - [ ] The feature works end-to-end as specified.
251
+ - [ ] No uncommitted files or styling junk are left behind.
252
+
253
+ ## Verification
254
+ After completing the skill, confirm:
255
+ - [ ] Each micro-slice is verified functionally and committed with an atomic, conventional message.
256
+ - [ ] Build processes and lint suites run successfully without errors or warnings.
257
+ - [ ] Scope discipline has been strictly observed, and no out-of-scope code changes were introduced.