tribunal-kit 6.0.0 → 7.0.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 (353) hide show
  1. package/.agent/.manifest.json +78 -0
  2. package/.agent/ARCHITECTURE.md +19 -241
  3. package/.agent/agents/accessibility-reviewer.md +23 -16
  4. package/.agent/agents/ai-code-reviewer.md +25 -21
  5. package/.agent/agents/anti-pattern-reviewer.md +12 -7
  6. package/.agent/agents/api-architect.md +1 -0
  7. package/.agent/agents/backend-specialist.md +23 -22
  8. package/.agent/agents/cloud-engineer.md +1 -0
  9. package/.agent/agents/code-archaeologist.md +1 -0
  10. package/.agent/agents/complexity-reviewer.md +10 -7
  11. package/.agent/agents/database-architect.md +3 -2
  12. package/.agent/agents/db-latency-auditor.md +6 -2
  13. package/.agent/agents/debugger.md +3 -2
  14. package/.agent/agents/dependency-reviewer.md +1 -0
  15. package/.agent/agents/devops-engineer.md +9 -8
  16. package/.agent/agents/documentation-writer.md +6 -5
  17. package/.agent/agents/explorer-agent.md +1 -0
  18. package/.agent/agents/frontend-reviewer.md +21 -17
  19. package/.agent/agents/frontend-specialist.md +23 -20
  20. package/.agent/agents/game-developer.md +1 -0
  21. package/.agent/agents/interaction-reviewer.md +10 -5
  22. package/.agent/agents/logic-reviewer.md +3 -0
  23. package/.agent/agents/minimalist-reviewer.md +6 -0
  24. package/.agent/agents/mobile-developer.md +7 -6
  25. package/.agent/agents/mobile-reviewer.md +14 -13
  26. package/.agent/agents/orchestrator.md +3 -0
  27. package/.agent/agents/penetration-tester.md +1 -0
  28. package/.agent/agents/performance-optimizer.md +6 -5
  29. package/.agent/agents/performance-reviewer.md +6 -6
  30. package/.agent/agents/pipeline-reviewer.md +144 -0
  31. package/.agent/agents/precedence-reviewer.md +1 -0
  32. package/.agent/agents/product-manager.md +1 -0
  33. package/.agent/agents/product-owner.md +1 -0
  34. package/.agent/agents/product-reviewer.md +12 -7
  35. package/.agent/agents/project-planner.md +3 -0
  36. package/.agent/agents/qa-automation-engineer.md +50 -43
  37. package/.agent/agents/resilience-reviewer.md +1 -0
  38. package/.agent/agents/schema-reviewer.md +1 -0
  39. package/.agent/agents/security-auditor.md +24 -24
  40. package/.agent/agents/seo-specialist.md +33 -23
  41. package/.agent/agents/sql-reviewer.md +5 -4
  42. package/.agent/agents/supervisor-agent.md +12 -2
  43. package/.agent/agents/swarm-worker-contracts.md +13 -13
  44. package/.agent/agents/swarm-worker-registry.md +51 -51
  45. package/.agent/agents/system-architect.md +1 -0
  46. package/.agent/agents/test-coverage-reviewer.md +25 -22
  47. package/.agent/agents/test-engineer.md +12 -11
  48. package/.agent/agents/throughput-optimizer.md +45 -40
  49. package/.agent/agents/type-safety-reviewer.md +5 -4
  50. package/.agent/agents/ui-ux-auditor.md +6 -4
  51. package/.agent/agents/ui-visual-auditor.md +3 -0
  52. package/.agent/agents/ux-reviewer.md +11 -6
  53. package/.agent/agents/visual-reviewer.md +11 -6
  54. package/.agent/agents/vitals-reviewer.md +5 -4
  55. package/.agent/history/memory/.memory.idx +3716 -1
  56. package/.agent/history/memory/MEMORY.md +246 -1
  57. package/.agent/mcp_config.json +1 -6
  58. package/.agent/routing_index.json +2034 -263
  59. package/.agent/rules/GEMINI.md +12 -10
  60. package/.agent/rules/GEMINI_PLANNER.md +19 -21
  61. package/.agent/scripts/_colors.js +52 -54
  62. package/.agent/scripts/_utils.js +52 -53
  63. package/.agent/scripts/auto_preview.js +39 -43
  64. package/.agent/scripts/bundle_analyzer.js +47 -60
  65. package/.agent/scripts/case_law_manager.js +200 -294
  66. package/.agent/scripts/checklist.js +73 -94
  67. package/.agent/scripts/cicd_validator.js +305 -0
  68. package/.agent/scripts/compile_router.py +4 -111
  69. package/.agent/scripts/context_broker.js +317 -412
  70. package/.agent/scripts/contract_engine.js +402 -0
  71. package/.agent/scripts/dependency_analyzer.js +112 -124
  72. package/.agent/scripts/graph_builder.js +75 -103
  73. package/.agent/scripts/graph_visualizer.js +10 -12
  74. package/.agent/scripts/graph_zoom.js +38 -55
  75. package/.agent/scripts/guardrail_engine.js +195 -145
  76. package/.agent/scripts/impact_classifier.js +55 -30
  77. package/.agent/scripts/inner_loop_validator.js +108 -159
  78. package/.agent/scripts/integrity_manifest.js +59 -67
  79. package/.agent/scripts/lint_runner.js +65 -75
  80. package/.agent/scripts/marathon_harness.js +131 -208
  81. package/.agent/scripts/migrate_skills_frontmatter.py +4 -63
  82. package/.agent/scripts/minify_context.js +29 -33
  83. package/.agent/scripts/minimal_change_engine.js +95 -87
  84. package/.agent/scripts/mutation_runner.js +46 -62
  85. package/.agent/scripts/pipeline_engine.js +320 -209
  86. package/.agent/scripts/prompt_compiler.js +118 -93
  87. package/.agent/scripts/schema_validator.js +73 -121
  88. package/.agent/scripts/security_scan.js +88 -117
  89. package/.agent/scripts/session_manager.js +52 -69
  90. package/.agent/scripts/signal_detector.js +24 -22
  91. package/.agent/scripts/skill_evolution.js +184 -245
  92. package/.agent/scripts/skill_integrator.js +35 -48
  93. package/.agent/scripts/socratic_gate_policy.js +15 -12
  94. package/.agent/scripts/strengthen_skills.js +29 -33
  95. package/.agent/scripts/swarm_dispatcher.js +120 -151
  96. package/.agent/scripts/test_runner.js +54 -56
  97. package/.agent/scripts/token_budget_broker.js +9 -7
  98. package/.agent/scripts/trace_engine.js +126 -0
  99. package/.agent/scripts/verify_all.js +76 -93
  100. package/.agent/scripts/visual_audit.js +16 -21
  101. package/.agent/skill_topic_map.json +237 -0
  102. package/.agent/skills/12-principles-of-animation/SKILL.md +7 -0
  103. package/.agent/skills/60fps-animation/SKILL.md +7 -0
  104. package/.agent/skills/accessible-animation/SKILL.md +5 -1
  105. package/.agent/skills/adapt/SKILL.md +7 -1
  106. package/.agent/skills/advanced-rag-pipelines/SKILL.md +1 -0
  107. package/.agent/skills/agent-organizer/SKILL.md +1 -0
  108. package/.agent/skills/agentic-patterns/SKILL.md +33 -25
  109. package/.agent/skills/agentic-workflows-2026/SKILL.md +80 -0
  110. package/.agent/skills/ai-app-hardening/SKILL.md +59 -0
  111. package/.agent/skills/ai-prompt-injection-defense/SKILL.md +7 -6
  112. package/.agent/skills/animation-on-scroll/SKILL.md +24 -15
  113. package/.agent/skills/animation-systems/SKILL.md +11 -10
  114. package/.agent/skills/antfu-conventions/SKILL.md +7 -2
  115. package/.agent/skills/api-patterns/SKILL.md +14 -10
  116. package/.agent/skills/api-security-auditor/SKILL.md +15 -14
  117. package/.agent/skills/app-builder/SKILL.md +1 -0
  118. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +2 -2
  119. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +1 -1
  120. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +12 -12
  121. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +3 -3
  122. package/.agent/skills/apple-design/SKILL.md +8 -7
  123. package/.agent/skills/architecture/SKILL.md +3 -2
  124. package/.agent/skills/audit-and-fix/SKILL.md +8 -5
  125. package/.agent/skills/authentication-best-practices/SKILL.md +9 -8
  126. package/.agent/skills/backend-security-expert/SKILL.md +1 -0
  127. package/.agent/skills/baseline-ui/SKILL.md +8 -7
  128. package/.agent/skills/bash-linux/SKILL.md +1 -0
  129. package/.agent/skills/behavioral-modes/SKILL.md +1 -0
  130. package/.agent/skills/better-colors/SKILL.md +11 -7
  131. package/.agent/skills/better-typography/SKILL.md +30 -16
  132. package/.agent/skills/better-ui/SKILL.md +17 -10
  133. package/.agent/skills/bolder/SKILL.md +6 -0
  134. package/.agent/skills/brainstorming/SKILL.md +6 -4
  135. package/.agent/skills/browser-native-ai/SKILL.md +5 -4
  136. package/.agent/skills/build-primitive/SKILL.md +5 -0
  137. package/.agent/skills/building-native-ui/SKILL.md +1 -0
  138. package/.agent/skills/cicd-pro/SKILL.md +2 -1
  139. package/.agent/skills/clarify/SKILL.md +19 -14
  140. package/.agent/skills/clean-code/SKILL.md +16 -15
  141. package/.agent/skills/cloud-architect/SKILL.md +1 -0
  142. package/.agent/skills/cobejs/SKILL.md +7 -9
  143. package/.agent/skills/code-review-checklist/SKILL.md +1 -0
  144. package/.agent/skills/codebase-design/SKILL.md +7 -2
  145. package/.agent/skills/colorize/SKILL.md +8 -3
  146. package/.agent/skills/compact-landing/SKILL.md +8 -3
  147. package/.agent/skills/company-logos/SKILL.md +6 -0
  148. package/.agent/skills/config-validator/SKILL.md +10 -9
  149. package/.agent/skills/containerization-pro/SKILL.md +6 -5
  150. package/.agent/skills/context-engineering-pro/SKILL.md +70 -0
  151. package/.agent/skills/create-design-md/SKILL.md +13 -5
  152. package/.agent/skills/critique/SKILL.md +10 -8
  153. package/.agent/skills/csharp-developer/SKILL.md +1 -0
  154. package/.agent/skills/data-validation-schemas/SKILL.md +28 -23
  155. package/.agent/skills/database-design/SKILL.md +2 -1
  156. package/.agent/skills/delight/SKILL.md +6 -0
  157. package/.agent/skills/deployment-procedures/SKILL.md +2 -1
  158. package/.agent/skills/design-lab/SKILL.md +5 -0
  159. package/.agent/skills/devops-engineer/SKILL.md +3 -2
  160. package/.agent/skills/devops-incident-responder/SKILL.md +2 -1
  161. package/.agent/skills/diagnosing-bugs/SKILL.md +12 -2
  162. package/.agent/skills/distill/SKILL.md +7 -2
  163. package/.agent/skills/documentation-templates/SKILL.md +3 -2
  164. package/.agent/skills/domain-modeling/SKILL.md +12 -4
  165. package/.agent/skills/duckdb-analytical-sql/SKILL.md +59 -0
  166. package/.agent/skills/edge-ai-mobile/SKILL.md +50 -0
  167. package/.agent/skills/edge-computing/SKILL.md +9 -8
  168. package/.agent/skills/emil-design-eng/SKILL.md +43 -27
  169. package/.agent/skills/error-resilience/SKILL.md +34 -16
  170. package/.agent/skills/expo-router-v4/SKILL.md +81 -0
  171. package/.agent/skills/extract-design-system/SKILL.md +12 -11
  172. package/.agent/skills/fabel-protocol/SKILL.md +24 -17
  173. package/.agent/skills/fixing-accessibility/SKILL.md +23 -16
  174. package/.agent/skills/fixing-metadata/SKILL.md +24 -13
  175. package/.agent/skills/fixing-motion-performance/SKILL.md +7 -5
  176. package/.agent/skills/framer-motion-expert/SKILL.md +29 -15
  177. package/.agent/skills/frontend-design/SKILL.md +21 -13
  178. package/.agent/skills/frontend-security-expert/SKILL.md +1 -0
  179. package/.agent/skills/game-design-expert/SKILL.md +1 -0
  180. package/.agent/skills/game-engineering-expert/SKILL.md +1 -0
  181. package/.agent/skills/generative-ui-expert/SKILL.md +3 -2
  182. package/.agent/skills/geo-fundamentals/SKILL.md +2 -1
  183. package/.agent/skills/git-pro/SKILL.md +10 -9
  184. package/.agent/skills/github-operations/SKILL.md +2 -1
  185. package/.agent/skills/gpt-taste/SKILL.md +7 -0
  186. package/.agent/skills/gsap-core/SKILL.md +26 -22
  187. package/.agent/skills/gsap-frameworks/SKILL.md +6 -5
  188. package/.agent/skills/gsap-performance/SKILL.md +4 -3
  189. package/.agent/skills/gsap-plugins/SKILL.md +34 -33
  190. package/.agent/skills/gsap-react/SKILL.md +9 -8
  191. package/.agent/skills/gsap-scrolltrigger/SKILL.md +34 -33
  192. package/.agent/skills/gsap-timeline/SKILL.md +18 -15
  193. package/.agent/skills/gsap-utils/SKILL.md +25 -24
  194. package/.agent/skills/harden/SKILL.md +9 -3
  195. package/.agent/skills/harness-protocol/SKILL.md +1 -0
  196. package/.agent/skills/i18n-localization/SKILL.md +10 -9
  197. package/.agent/skills/impeccable/SKILL.md +5 -0
  198. package/.agent/skills/improve-codebase-architecture/SKILL.md +10 -5
  199. package/.agent/skills/improve-ui/SKILL.md +12 -5
  200. package/.agent/skills/intelligent-routing/SKILL.md +7 -6
  201. package/.agent/skills/knowledge-graph/SKILL.md +1 -0
  202. package/.agent/skills/landing-page/SKILL.md +1 -0
  203. package/.agent/skills/lint-and-validate/SKILL.md +9 -4
  204. package/.agent/skills/llm-engineering/SKILL.md +55 -54
  205. package/.agent/skills/local-first/SKILL.md +20 -19
  206. package/.agent/skills/local-first-architecture/SKILL.md +6 -1
  207. package/.agent/skills/lottie-animation/SKILL.md +7 -3
  208. package/.agent/skills/marquee-loop/SKILL.md +1 -0
  209. package/.agent/skills/masked-reveal/SKILL.md +17 -4
  210. package/.agent/skills/mcp-builder/SKILL.md +13 -10
  211. package/.agent/skills/micro-interaction/SKILL.md +20 -5
  212. package/.agent/skills/mobile-design/SKILL.md +26 -15
  213. package/.agent/skills/monorepo-management/SKILL.md +3 -2
  214. package/.agent/skills/morphing-icons/SKILL.md +16 -6
  215. package/.agent/skills/motion-engineering/SKILL.md +19 -15
  216. package/.agent/skills/nextjs-react-expert/SKILL.md +26 -21
  217. package/.agent/skills/nodejs-best-practices/SKILL.md +89 -76
  218. package/.agent/skills/observability/SKILL.md +45 -44
  219. package/.agent/skills/opentelemetry-observability/SKILL.md +59 -0
  220. package/.agent/skills/page-transition-animation/SKILL.md +6 -3
  221. package/.agent/skills/parallel-agents/SKILL.md +7 -2
  222. package/.agent/skills/performance-profiling/SKILL.md +24 -13
  223. package/.agent/skills/plan-writing/SKILL.md +1 -0
  224. package/.agent/skills/platform-engineer/SKILL.md +3 -2
  225. package/.agent/skills/platform-engineering-opentofu/SKILL.md +68 -0
  226. package/.agent/skills/playwright-ai-e2e/SKILL.md +60 -0
  227. package/.agent/skills/playwright-best-practices/SKILL.md +29 -28
  228. package/.agent/skills/polish/SKILL.md +13 -12
  229. package/.agent/skills/powershell-windows/SKILL.md +1 -0
  230. package/.agent/skills/pricing-page/SKILL.md +8 -3
  231. package/.agent/skills/product-aware-heuristics/SKILL.md +122 -72
  232. package/.agent/skills/progressive-blur/SKILL.md +9 -4
  233. package/.agent/skills/project-idioms/SKILL.md +1 -0
  234. package/.agent/skills/property-based-testing/SKILL.md +58 -0
  235. package/.agent/skills/python-patterns/SKILL.md +1 -0
  236. package/.agent/skills/python-pro/SKILL.md +1 -0
  237. package/.agent/skills/quieter/SKILL.md +6 -0
  238. package/.agent/skills/react-doctor/SKILL.md +6 -0
  239. package/.agent/skills/react-specialist/SKILL.md +32 -28
  240. package/.agent/skills/readme-builder/SKILL.md +1 -0
  241. package/.agent/skills/realtime-patterns/SKILL.md +34 -33
  242. package/.agent/skills/red-team-tactics/SKILL.md +1 -0
  243. package/.agent/skills/redesign-skill/SKILL.md +6 -0
  244. package/.agent/skills/review-animations/SKILL.md +5 -2
  245. package/.agent/skills/review-animations/STANDARDS.md +37 -23
  246. package/.agent/skills/rust-pro/SKILL.md +1 -0
  247. package/.agent/skills/seo-fundamentals/SKILL.md +4 -3
  248. package/.agent/skills/server-management/SKILL.md +1 -0
  249. package/.agent/skills/shadcn-ui-expert/SKILL.md +28 -22
  250. package/.agent/skills/shape/SKILL.md +9 -2
  251. package/.agent/skills/skill-creator/SKILL.md +1 -0
  252. package/.agent/skills/soft-skill/SKILL.md +6 -0
  253. package/.agent/skills/sounds-on-the-web/SKILL.md +1 -0
  254. package/.agent/skills/sql-pro/SKILL.md +1 -0
  255. package/.agent/skills/supabase-postgres-best-practices/SKILL.md +1 -0
  256. package/.agent/skills/svg-animation/SKILL.md +16 -7
  257. package/.agent/skills/swiftui-expert/SKILL.md +1 -0
  258. package/.agent/skills/swiss-design/SKILL.md +5 -0
  259. package/.agent/skills/system-design-pro/SKILL.md +1 -0
  260. package/.agent/skills/systematic-debugging/SKILL.md +1 -0
  261. package/.agent/skills/tailwind-patterns/SKILL.md +25 -11
  262. package/.agent/skills/taste-skill/SKILL.md +6 -0
  263. package/.agent/skills/tdd-workflow/SKILL.md +5 -0
  264. package/.agent/skills/test-result-analyzer/SKILL.md +1 -0
  265. package/.agent/skills/testing-patterns/SKILL.md +123 -115
  266. package/.agent/skills/thermo-nuclear-code-quality-review/SKILL.md +5 -0
  267. package/.agent/skills/thinking-protocol/SKILL.md +3 -0
  268. package/.agent/skills/to-spring-or-not-to-spring/SKILL.md +9 -8
  269. package/.agent/skills/transitions-dev/SKILL.md +19 -6
  270. package/.agent/skills/trend-researcher/SKILL.md +1 -0
  271. package/.agent/skills/typescript-advanced/SKILL.md +23 -18
  272. package/.agent/skills/typeset/SKILL.md +10 -1
  273. package/.agent/skills/ui-reasoning-engine/SKILL.md +67 -48
  274. package/.agent/skills/ui-skill-packs/SKILL.md +6 -1
  275. package/.agent/skills/ui-skills-root/SKILL.md +39 -38
  276. package/.agent/skills/ui-ux-pro-max/SKILL.md +34 -26
  277. package/.agent/skills/ui-ux-researcher/SKILL.md +1 -0
  278. package/.agent/skills/vector-search-pgvector/SKILL.md +78 -0
  279. package/.agent/skills/vue-expert/SKILL.md +22 -19
  280. package/.agent/skills/vulnerability-scanner/SKILL.md +22 -21
  281. package/.agent/skills/web-accessibility-auditor/SKILL.md +2 -1
  282. package/.agent/skills/web-design-guidelines/SKILL.md +16 -10
  283. package/.agent/skills/web-quality-audit/SKILL.md +5 -0
  284. package/.agent/skills/webapp-testing/SKILL.md +14 -13
  285. package/.agent/skills/webgpu-performance/SKILL.md +1 -0
  286. package/.agent/skills/whimsy-injector/SKILL.md +9 -5
  287. package/.agent/skills/workflow-optimizer/SKILL.md +1 -0
  288. package/.agent/skills/zero-trust-passkeys/SKILL.md +90 -0
  289. package/.agent/templates/DESIGN.md +119 -110
  290. package/.agent/templates/design-tokens.json +9 -6
  291. package/.agent/workflows/acf.md +1 -0
  292. package/.agent/workflows/api-tester.md +1 -0
  293. package/.agent/workflows/audit.md +1 -0
  294. package/.agent/workflows/brainstorm.md +1 -0
  295. package/.agent/workflows/changelog.md +1 -0
  296. package/.agent/workflows/contract.md +60 -0
  297. package/.agent/workflows/create.md +1 -0
  298. package/.agent/workflows/debug.md +1 -0
  299. package/.agent/workflows/deploy.md +1 -0
  300. package/.agent/workflows/enhance.md +1 -0
  301. package/.agent/workflows/fix-ci.md +89 -0
  302. package/.agent/workflows/fix.md +1 -0
  303. package/.agent/workflows/generate.md +1 -0
  304. package/.agent/workflows/marathon.md +1 -0
  305. package/.agent/workflows/migrate.md +1 -0
  306. package/.agent/workflows/minimal.md +9 -7
  307. package/.agent/workflows/orchestrate.md +1 -0
  308. package/.agent/workflows/performance-benchmarker.md +1 -0
  309. package/.agent/workflows/pipeline.md +26 -21
  310. package/.agent/workflows/plan.md +1 -0
  311. package/.agent/workflows/preview.md +1 -0
  312. package/.agent/workflows/refactor.md +3 -2
  313. package/.agent/workflows/review-ai.md +4 -3
  314. package/.agent/workflows/review.md +1 -0
  315. package/.agent/workflows/session.md +1 -0
  316. package/.agent/workflows/status.md +1 -0
  317. package/.agent/workflows/strengthen-skills.md +1 -0
  318. package/.agent/workflows/super-prompt.md +1 -0
  319. package/.agent/workflows/swarm.md +15 -3
  320. package/.agent/workflows/test.md +8 -7
  321. package/.agent/workflows/tribunal-backend.md +3 -2
  322. package/.agent/workflows/tribunal-cicd.md +104 -0
  323. package/.agent/workflows/tribunal-database.md +1 -0
  324. package/.agent/workflows/tribunal-frontend.md +8 -6
  325. package/.agent/workflows/tribunal-full.md +15 -14
  326. package/.agent/workflows/tribunal-mobile.md +6 -5
  327. package/.agent/workflows/tribunal-performance.md +1 -0
  328. package/.agent/workflows/tribunal-speed.md +1 -0
  329. package/.agent/workflows/tribunal-ui.md +29 -21
  330. package/.agent/workflows/ui-ux-pro-max.md +19 -15
  331. package/CONTRIBUTING.md +3 -3
  332. package/README.md +160 -88
  333. package/SECURITY.md +11 -11
  334. package/bin/mcp-server.js +512 -233
  335. package/bin/tribunal-kit.js +29 -30
  336. package/bin/wrapper.js +45 -48
  337. package/dist/cli.js +26 -0
  338. package/dist/commands/case.js +2 -0
  339. package/dist/commands/contract.js +440 -0
  340. package/dist/commands/memory.js +3 -2
  341. package/dist/commands/native.js +36 -0
  342. package/dist/commands/status.js +6 -0
  343. package/dist/esm/index.mjs +32 -0
  344. package/dist/index.d.ts +58 -3
  345. package/package.json +20 -16
  346. package/scripts/benchmark.js +62 -86
  347. package/scripts/changelog.js +67 -73
  348. package/scripts/fix-vbc.js +13 -15
  349. package/scripts/fix-vbc.ps1 +2 -118
  350. package/scripts/stress_benchmark.js +358 -0
  351. package/scripts/sync-version.js +71 -41
  352. package/scripts/validate-payload.js +23 -30
  353. package/scripts/visual_audit.js +23 -13
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before designing or implementing API endpoints, you MUST inspect:
23
+
23
24
  1. Authorization Header Token Passing (Section 17) → Pass JWTs in `Authorization: Bearer` headers; strictly ban tokens in URL query params
24
25
  2. Cursor-Based Pagination (Section 19) → Use cursor pagination for datasets >10K rows to eliminate `OFFSET N` performance degradation
25
26
  3. Idempotency Header for Mutations (Section 21) → Require `Idempotency-Key` headers for state-changing `POST` or `PATCH` retry operations
@@ -108,7 +109,7 @@ interface ApiError {
108
109
  // GET /api/v1/posts?cursor=eyJpZCI6MTAwfQ&limit=20
109
110
  const posts = await db.post.findMany({
110
111
  where: { id: { lt: decodeCursor(req.query.cursor).id } },
111
- orderBy: { id: "desc" },
112
+ orderBy: { id: 'desc' },
112
113
  take: limit + 1, // fetch one extra to determine hasMore
113
114
  });
114
115
  const hasMore = posts.length > limit;
@@ -126,15 +127,15 @@ return { data: posts, meta: { hasMore, nextCursor: encodeCursor(posts.at(-1)) }
126
127
 
127
128
  ```typescript
128
129
  // POST /api/v1/payments with header: Idempotency-Key: <uuid>
129
- app.post("/api/v1/payments", async (req, res) => {
130
- const key = req.headers["idempotency-key"];
131
- if (!key) return res.status(400).json({ error: "Missing Idempotency-Key" });
130
+ app.post('/api/v1/payments', async (req, res) => {
131
+ const key = req.headers['idempotency-key'];
132
+ if (!key) return res.status(400).json({ error: 'Missing Idempotency-Key' });
132
133
 
133
134
  const cached = await redis.get(`idempotency:${key}`);
134
135
  if (cached) return res.status(200).json(JSON.parse(cached));
135
136
 
136
137
  const result = await processPayment(req.body);
137
- await redis.set(`idempotency:${key}`, JSON.stringify(result), "EX", 86400);
138
+ await redis.set(`idempotency:${key}`, JSON.stringify(result), 'EX', 86400);
138
139
  return res.status(201).json(result);
139
140
  });
140
141
  // GET, PUT, DELETE → naturally idempotent (safe to retry without a key)
@@ -147,15 +148,18 @@ app.post("/api/v1/payments", async (req, res) => {
147
148
 
148
149
  ```typescript
149
150
  // HMAC signature verification (always verify — never trust unsigned webhooks)
150
- import { createHmac, timingSafeEqual } from "node:crypto";
151
+ import { createHmac, timingSafeEqual } from 'node:crypto';
151
152
  function verify(payload: string, signature: string, secret: string): boolean {
152
- const expected = createHmac("sha256", secret).update(payload).digest("hex");
153
+ const expected = createHmac('sha256', secret).update(payload).digest('hex');
153
154
  return timingSafeEqual(Buffer.from(signature), Buffer.from(expected));
154
155
  }
155
156
 
156
- app.post("/webhooks", (req, res) => {
157
- if (!verify(JSON.stringify(req.body), req.headers["x-webhook-signature"] as string, WEBHOOK_SECRET)) return res.status(401).send("Invalid signature");
158
- res.status(200).send("OK"); // respond immediately
157
+ app.post('/webhooks', (req, res) => {
158
+ if (
159
+ !verify(JSON.stringify(req.body), req.headers['x-webhook-signature'] as string, WEBHOOK_SECRET)
160
+ )
161
+ return res.status(401).send('Invalid signature');
162
+ res.status(200).send('OK'); // respond immediately
159
163
  processWebhookAsync(req.body); // process asynchronously
160
164
  });
161
165
  // Retry policy: 3 retries with exponential backoff (1s → 10s → 100s)
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before auditing or hardening API endpoints, you MUST inspect:
23
+
23
24
  1. IDOR Prevention (Section 17) → Perform explicit tenancy checks (`receipt.userId === req.user.id`) and prefer UUIDv4/CUID over sequential integer IDs
24
25
  2. Mass Assignment Mitigations (Section 47) → Enforce strict Zod schemas (`.strict()`) to prevent parameter overposting into DB updates
25
26
  3. Distributed Rate Limiting (Section 80) → Store rate limit state in Redis for multi-pod load balanced environments to prevent limit bypasses
@@ -34,19 +35,19 @@ IDOR occurs when an application provides direct access to objects based on user-
34
35
 
35
36
  ```typescript
36
37
  // ❌ VULNERABLE: Trusting the requested ID blindly
37
- app.get("/api/receipts/:id", async (req, res) => {
38
+ app.get('/api/receipts/:id', async (req, res) => {
38
39
  const receipt = await db.receipts.findById(req.params.id);
39
40
  res.json(receipt); // Attack: Increment ID to view others' receipts
40
41
  });
41
42
 
42
43
  // ✅ SAFE: Verifying ownership
43
- app.get("/api/receipts/:id", async (req, res) => {
44
+ app.get('/api/receipts/:id', async (req, res) => {
44
45
  const receipt = await db.receipts.findById(req.params.id);
45
46
  if (!receipt) return res.status(404).send();
46
47
 
47
48
  // Explicit tenancy check
48
- if (receipt.userId !== req.user.id && req.user.role !== "admin") {
49
- return res.status(403).json({ error: "Access denied" });
49
+ if (receipt.userId !== req.user.id && req.user.role !== 'admin') {
50
+ return res.status(403).json({ error: 'Access denied' });
50
51
  }
51
52
 
52
53
  res.json(receipt);
@@ -64,20 +65,20 @@ Occurs when web frameworks automatically bind HTTP request parameters to applica
64
65
 
65
66
  ```typescript
66
67
  // ❌ VULNERABLE: Direct object binding
67
- app.put("/api/users/:id", async (req, res) => {
68
+ app.put('/api/users/:id', async (req, res) => {
68
69
  // Attack: req.body = { name: "Bob", role: "admin", isPaid: true }
69
70
  await db.users.update({ id: req.params.id }, req.body);
70
- res.send("Updated");
71
+ res.send('Updated');
71
72
  });
72
73
 
73
74
  // ✅ SAFE: Explicit property selection (DTOs)
74
- app.put("/api/users/:id", async (req, res) => {
75
+ app.put('/api/users/:id', async (req, res) => {
75
76
  // Only extract explicitly allowed fields
76
77
  const { name, email, bio } = req.body;
77
78
  const safeData = { name, email, bio };
78
79
 
79
80
  await db.users.update({ id: req.params.id }, safeData);
80
- res.send("Updated");
81
+ res.send('Updated');
81
82
  });
82
83
 
83
84
  // ✅ BEST: Validation libraries (Zod, Joi) handling stripping
@@ -95,8 +96,8 @@ const UpdateUserSchema = z
95
96
 
96
97
  ```typescript
97
98
  // Basic Rate Limiting (Express)
98
- import rateLimit from "express-rate-limit";
99
- import RedisStore from "rate-limit-redis";
99
+ import rateLimit from 'express-rate-limit';
100
+ import RedisStore from 'rate-limit-redis';
100
101
 
101
102
  // Global baseline limit
102
103
  export const globalLimiter = rateLimit({
@@ -111,7 +112,7 @@ export const authLimiter = rateLimit({
111
112
  store: new RedisStore({ client: redisClient }),
112
113
  windowMs: 60 * 60 * 1000, // 1 Hour
113
114
  max: 5, // 5 login attempts per IP per hour
114
- message: "Too many login attempts, please try again later",
115
+ message: 'Too many login attempts, please try again later',
115
116
  });
116
117
 
117
118
  // ❌ HALLUCINATION TRAP: In-memory rate limiting across multiple server pods
@@ -144,8 +145,8 @@ Best Practices for issuance and storage:
144
145
 
145
146
  // 1. Query Depth Limiting (Prevent nested joins crushing the DB)
146
147
  // User -> Posts -> Comments -> Author -> Posts -> Comments...
147
- import depthLimit from "graphql-depth-limit";
148
- app.use("/graphql", graphqlHTTP({ validationRules: [depthLimit(5)] }));
148
+ import depthLimit from 'graphql-depth-limit';
149
+ app.use('/graphql', graphqlHTTP({ validationRules: [depthLimit(5)] }));
149
150
 
150
151
  // 2. Query Cost Analysis
151
152
  // Prevent attackers from requesting 100,000 items in a single query
@@ -155,7 +156,7 @@ app.use("/graphql", graphqlHTTP({ validationRules: [depthLimit(5)] }));
155
156
  // Introspection allows attackers to download your entire schema.
156
157
  const server = new ApolloServer({
157
158
  schema,
158
- introspection: process.env.NODE_ENV !== "production",
159
+ introspection: process.env.NODE_ENV !== 'production',
159
160
  });
160
161
  ```
161
162
 
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before scaffolding or orchestrating application builds, you MUST inspect:
23
+
23
24
  1. Clarification Gate (Section 48) → Ask 4 core purpose/constraint questions before selecting stack or creating files
24
25
  2. Plan Verification (Section 220) → Ensure `{task-slug}.md` is created and verified in project root before invoking specialist agents
25
26
  3. Incremental Build Rule (Section 15) → Never generate entire applications in one shot; build and verify module by module
@@ -93,11 +93,11 @@ project-name/
93
93
  Ensure `src/app/globals.css` uses the new import syntax instead of a config file:
94
94
 
95
95
  ```css
96
- @import "tailwindcss";
96
+ @import 'tailwindcss';
97
97
 
98
98
  @theme {
99
99
  --color-primary: oklch(0.5 0.2 240);
100
- --font-sans: "Inter", sans-serif;
100
+ --font-sans: 'Inter', sans-serif;
101
101
  }
102
102
  ```
103
103
 
@@ -104,7 +104,7 @@ project-name/
104
104
  3. Install Tailwind v4 (Add to globals.css):
105
105
 
106
106
  ```css
107
- @import "tailwindcss";
107
+ @import 'tailwindcss';
108
108
  ```
109
109
 
110
110
  4. Configure environment (.env.local)
@@ -52,10 +52,10 @@ Using `next.config.ts` instead of `.js` for better type safety.
52
52
 
53
53
  ```typescript
54
54
  // next.config.ts
55
- import type { NextConfig } from "next";
55
+ import type { NextConfig } from 'next';
56
56
 
57
57
  const nextConfig: NextConfig = {
58
- output: "export", // Required for Static Hosting (S3, GitHub Pages)
58
+ output: 'export', // Required for Static Hosting (S3, GitHub Pages)
59
59
  images: {
60
60
  unoptimized: true, // Required if not using Node.js server image optimization
61
61
  },
@@ -74,19 +74,19 @@ Deprecated next-seo. Configure directly in layout.tsx or page.tsx.
74
74
 
75
75
  ```typescript
76
76
  // src/app/layout.tsx
77
- import type { Metadata } from "next";
77
+ import type { Metadata } from 'next';
78
78
 
79
79
  export const metadata: Metadata = {
80
80
  title: {
81
- template: "%s | Product Name",
82
- default: "Home - Product Name",
81
+ template: '%s | Product Name',
82
+ default: 'Home - Product Name',
83
83
  },
84
- description: "SEO optimized description for the landing page.",
84
+ description: 'SEO optimized description for the landing page.',
85
85
  openGraph: {
86
- type: "website",
87
- locale: "en_US",
88
- url: "https://mysite.com",
89
- siteName: "My Brand",
86
+ type: 'website',
87
+ locale: 'en_US',
88
+ url: 'https://mysite.com',
89
+ siteName: 'My Brand',
90
90
  },
91
91
  };
92
92
  ```
@@ -138,11 +138,11 @@ export const metadata: Metadata = {
138
138
  3. Configure Tailwind v4 (in `src/app/globals.css`):
139
139
 
140
140
  ```css
141
- @import "tailwindcss";
141
+ @import 'tailwindcss';
142
142
 
143
143
  @theme {
144
144
  --color-primary: #3b82f6;
145
- --font-sans: "Inter", sans-serif;
145
+ --font-sans: 'Inter', sans-serif;
146
146
  }
147
147
  ```
148
148
 
@@ -99,12 +99,12 @@ project-name/
99
99
  Add to `nuxt.config.ts`:
100
100
 
101
101
  ```ts
102
- import tailwindcss from "@tailwindcss/vite";
102
+ import tailwindcss from '@tailwindcss/vite';
103
103
  export default defineNuxtConfig({
104
104
  vite: {
105
105
  plugins: [tailwindcss()],
106
106
  },
107
- css: ["~/assets/css/main.css"],
107
+ css: ['~/assets/css/main.css'],
108
108
  });
109
109
  ```
110
110
 
@@ -112,7 +112,7 @@ project-name/
112
112
  In `app/assets/css/main.css`:
113
113
 
114
114
  ```css
115
- @import "tailwindcss";
115
+ @import 'tailwindcss';
116
116
  @theme {
117
117
  --color-primary: oklch(0.6 0.15 150);
118
118
  }
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before engineering Apple-style UIs or gesture-driven components, you MUST inspect:
23
+
23
24
  1. Interruptible Physics-Based Springs (Section 22) → Use physics springs (`stiffness: 300, damping: 24, mass: 0.8`) instead of fixed-duration CSS cubic-beziers
24
25
  2. Translucent Backdrop Blur (Section 44) → Limit `backdrop-filter: blur(20px) saturate(180%)` strictly to sticky headers or modals to avoid GPU scroll jank
25
26
  3. Optical Letter-Spacing (Section 72) → Apply inverse tracking (`-0.025em` for titles, `+0.015em` for small captions) based on SF Pro font scaling
@@ -41,10 +42,10 @@ Apple interfaces do NOT use fixed-duration cubic-beziers for interactive element
41
42
  ```javascript
42
43
  // Framer Motion / Motion React Spring Config
43
44
  const appleSpring = {
44
- type: "spring",
45
+ type: 'spring',
45
46
  stiffness: 300,
46
47
  damping: 24,
47
- mass: 0.8
48
+ mass: 0.8,
48
49
  };
49
50
  ```
50
51
 
@@ -87,11 +88,11 @@ Apple depth relies on subtle, multi-layered backdrop blur and border highlights:
87
88
 
88
89
  ## Anti-Slop Table
89
90
 
90
- | Anti-Pattern | Apple Design Solution | Rationale |
91
- | --- | --- | --- |
92
- | Rigid linear/ease transitions | Physics-based spring curves (`stiffness: 300, damping: 24`) | Simulates real-world physical momentum |
93
- | Opaque static dropdowns | Translucent backdrop blur panel (`blur(20px) saturate(180%)`) | Preserves spatial context beneath UI |
94
- | Sudden state jumps | Interruptible velocity-preserving spring animations | Prevents visual jarring during rapid user input |
91
+ | Anti-Pattern | Apple Design Solution | Rationale |
92
+ | ----------------------------- | ------------------------------------------------------------- | ----------------------------------------------- |
93
+ | Rigid linear/ease transitions | Physics-based spring curves (`stiffness: 300, damping: 24`) | Simulates real-world physical momentum |
94
+ | Opaque static dropdowns | Translucent backdrop blur panel (`blur(20px) saturate(180%)`) | Preserves spatial context beneath UI |
95
+ | Sudden state jumps | Interruptible velocity-preserving spring animations | Prevents visual jarring during rapid user input |
95
96
 
96
97
  ---
97
98
 
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before selecting architectural patterns or designing systems, you MUST inspect:
23
+
23
24
  1. Pragmatic Monolith Default (Section 31) → Start with a modular monolith for teams <5 or scale <100K RPM; ban premature microservices
24
25
  2. Clean Architecture Dependency Direction (Section 50) → Ensure dependency arrows point strictly inward to Domain; Domain must have zero external infrastructure dependencies
25
26
  3. ADR Requirement for Non-Trivial Decisons (Section 135) → Document every major architectural decision with an ADR in `docs/architecture/`
@@ -72,7 +73,7 @@ interface UserRepository {
72
73
  }
73
74
  class User {
74
75
  promote(): void {
75
- if (this._role === UserRole.ADMIN) throw new DomainError("Already admin");
76
+ if (this._role === UserRole.ADMIN) throw new DomainError('Already admin');
76
77
  this._role = UserRole.ADMIN;
77
78
  }
78
79
  }
@@ -81,7 +82,7 @@ class User {
81
82
  class PromoteUserUseCase {
82
83
  async execute(userId: string): Promise<void> {
83
84
  const user = await this.userRepo.findById(userId);
84
- if (!user) throw new NotFoundError("User", userId);
85
+ if (!user) throw new NotFoundError('User', userId);
85
86
  user.promote();
86
87
  await this.userRepo.save(user);
87
88
  await this.eventBus.publish(new UserPromotedEvent(userId));
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before performing accessibility audits or fixes, you MUST inspect:
23
+
23
24
  1. Automated Violation Detection (Section 24) → Audit markup for missing `alt`, un-labeled inputs/buttons, and `onClick` on non-interactive elements
24
25
  2. Prioritization Matrix (Section 31) → Fix Level A blockers (forms, focus traps, keyboard access) before addressing contrast or landmark regions
25
26
  3. Anti-Redundant ARIA rule (Section 60) → Do NOT add `role="button"` to native `<button>` tags; apply `aria-hidden="true"` to decorative inner SVGs
@@ -31,7 +32,9 @@ Systematically audit HTML/JSX markup against WCAG 2.2 AA standards, prioritize a
31
32
  ## 4-Step Remediation Pipeline
32
33
 
33
34
  ### 1. Automated Violation Detection
35
+
34
36
  Scan component code for:
37
+
35
38
  - Missing `alt` tags on `<img>` elements.
36
39
  - Form controls (`<input>`, `<select>`) missing associated `<label>` or `aria-label`.
37
40
  - Buttons with icon-only content missing `aria-label`.
@@ -39,11 +42,11 @@ Scan component code for:
39
42
 
40
43
  ### 2. Prioritization Matrix
41
44
 
42
- | Severity Level | Violation Type | Remediation Action |
43
- | --- | --- | --- |
44
- | 🔴 **Blocker (Level A)** | Inaccessible form inputs, un-trapped focus in modal, zero keyboard access | Add explicit `<label>`, focus trap, and keyboard handlers immediately. |
45
- | 🟠 **Critical (Level AA)** | Low text contrast ratio ($< 4.5:1$), missing ARIA states on custom dropdowns | Adjust text colors to OKLCH contrast targets; add `aria-expanded`. |
46
- | 🟡 **Moderate (Level AA)** | Missing landmark regions (`<main>`, `<nav>`, `<header>`), heading hierarchy gaps | Wrap layout blocks in semantic HTML5 tags. |
45
+ | Severity Level | Violation Type | Remediation Action |
46
+ | -------------------------- | -------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
47
+ | 🔴 **Blocker (Level A)** | Inaccessible form inputs, un-trapped focus in modal, zero keyboard access | Add explicit `<label>`, focus trap, and keyboard handlers immediately. |
48
+ | 🟠 **Critical (Level AA)** | Low text contrast ratio ($< 4.5:1$), missing ARIA states on custom dropdowns | Adjust text colors to OKLCH contrast targets; add `aria-expanded`. |
49
+ | 🟡 **Moderate (Level AA)** | Missing landmark regions (`<main>`, `<nav>`, `<header>`), heading hierarchy gaps | Wrap layout blocks in semantic HTML5 tags. |
47
50
 
48
51
  ### 3. Concrete Code Fix Examples
49
52
 
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before implementing authentication or session flows, you MUST inspect:
23
+
23
24
  1. Modern Password Hashing (Section 28) → Use Argon2id or bcrypt; ban legacy fast algorithms (`md5`, `sha256`) for credential hashing
24
25
  2. Token Storage Separation (Section 83) → Keep short-lived access tokens in JS memory and long-lived refresh tokens in `HttpOnly`, `SameSite=Lax/Strict` cookies
25
26
  3. OAuth PKCE Flow Requirement (Section 109) → Enforce Authorization Code Flow with PKCE for all single-page and mobile apps; ban deprecated Implicit Flow
@@ -32,10 +33,10 @@ Before implementing authentication or session flows, you MUST inspect:
32
33
 
33
34
  ```typescript
34
35
  // ❌ BAD: md5, sha1, sha256 (too fast, vulnerable to brute force/rainbow tables)
35
- const hash = crypto.createHash("sha256").update(password).digest("hex");
36
+ const hash = crypto.createHash('sha256').update(password).digest('hex');
36
37
 
37
38
  // ✅ GOOD: Argon2 (memory-hard, ASIC resistant) or bcrypt
38
- import * as argon2 from "argon2";
39
+ import * as argon2 from 'argon2';
39
40
 
40
41
  async function hashPassword(password: string): Promise<string> {
41
42
  // Argon2 hashes include the salt inherently in the resulting string
@@ -86,11 +87,11 @@ async function verifyPassword(hash: string, password: string): Promise<boolean>
86
87
  // Scenario: API authentication
87
88
  // 1. Access Token (Short-lived: 15 mins)
88
89
  const accessToken = jwt.sign({ userId: user.id }, JWT_SECRET, {
89
- expiresIn: "15m",
90
- algorithm: "HS256", // ALWAYS explicitly specify
90
+ expiresIn: '15m',
91
+ algorithm: 'HS256', // ALWAYS explicitly specify
91
92
  });
92
93
  // 2. Refresh Token (Long-lived: 7 days, opaque string in DB)
93
- const refreshToken = crypto.randomBytes(40).toString("hex");
94
+ const refreshToken = crypto.randomBytes(40).toString('hex');
94
95
  await db.refreshTokens.create({ token: refreshToken, userId: user.id, expires: addDays(7) });
95
96
 
96
97
  // Client flow:
@@ -142,7 +143,7 @@ Flow (Authorization Code + PKCE):
142
143
 
143
144
  ```typescript
144
145
  // ✅ Check permissions, not roles directly (more flexible)
145
- if (!user.permissions.includes("delete:user")) {
146
+ if (!user.permissions.includes('delete:user')) {
146
147
  throw new ForbiddenError();
147
148
  }
148
149
  ```
@@ -154,9 +155,9 @@ if (!user.permissions.includes("delete:user")) {
154
155
  ```typescript
155
156
  // Example Policy
156
157
  function canEditPost(user: User, post: Post): boolean {
157
- if (user.role === "admin") return true;
158
+ if (user.role === 'admin') return true;
158
159
  if (post.authorId === user.id) return true;
159
- if (post.status === "draft" && user.department === "content") return true;
160
+ if (post.status === 'draft' && user.department === 'content') return true;
160
161
  return false;
161
162
  }
162
163
  ```
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before auditing or writing backend server code, you MUST inspect:
23
+
23
24
  1. Server Action Endpoints (Section 26) → Treat Next.js Server Actions as public API routes: authenticate session and parse input with Zod at entry
24
25
  2. JWT Algorithm Verification (Section 17) → Enforce explicit algorithms (`alg: "HS256"`) when verifying JWT tokens to prevent "None" algorithm exploits
25
26
  3. IDOR & RBAC Validation (Section 34) → Verify resource ownership (`WHERE userId = session.userId`) and user roles before executing mutations
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before cleaning up UI styles, you MUST inspect:
23
+
23
24
  1. `DESIGN.md` / `package.json` → Check Tailwind CSS configuration and accessibility primitives (`Base UI`, `Radix`)
24
25
  2. The 5-Step Deslop Protocol (Section 33) → Fix spacing violations, establish 3-tier typographic hierarchy, and eliminate harsh borders
25
26
  3. Anti-Slop Table (Section 43) → Replace hardcoded arbitrary paddings and low-contrast text with tokenized CSS variables
@@ -51,13 +52,13 @@ Enforces an opinionated UI baseline to clean up sloppy code and prevent AI-gener
51
52
 
52
53
  ## Anti-Slop Table
53
54
 
54
- | Slop Pattern | Baseline Fix | Rationale |
55
- | --- | --- | --- |
56
- | `color: #888` on dark background | `color: var(--text-muted)` (min 4.5:1 ratio) | Improves readability and WCAG compliance |
57
- | `padding: 15px 23px` | `padding: 16px 24px` | Aligns to 8px structural grid |
58
- | `border: 1px solid black` | `border: 1px solid rgba(0,0,0,0.1)` | Removes harsh, distracting lines |
59
- | Mixed font sizes (13px, 14px, 15px) | Standardized scale (12px, 14px, 16px) | Establishes clear visual hierarchy |
60
- | Plain text buttons without states | Rounded button with hover/active press feedback | Indicates clickability and tactile response |
55
+ | Slop Pattern | Baseline Fix | Rationale |
56
+ | ----------------------------------- | ----------------------------------------------- | ------------------------------------------- |
57
+ | `color: #888` on dark background | `color: var(--text-muted)` (min 4.5:1 ratio) | Improves readability and WCAG compliance |
58
+ | `padding: 15px 23px` | `padding: 16px 24px` | Aligns to 8px structural grid |
59
+ | `border: 1px solid black` | `border: 1px solid rgba(0,0,0,0.1)` | Removes harsh, distracting lines |
60
+ | Mixed font sizes (13px, 14px, 15px) | Standardized scale (12px, 14px, 16px) | Establishes clear visual hierarchy |
61
+ | Plain text buttons without states | Rounded button with hover/active press feedback | Indicates clickability and tactile response |
61
62
 
62
63
  ---
63
64
 
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before writing Bash scripts or terminal automation pipelines, you MUST inspect:
23
+
23
24
  1. Strict Mode Flags (`set -euo pipefail`) (Section 39) → Always set `set -euo pipefail` and `IFS=$'\n\t'` at top of every script to fail fast on errors or unset vars
24
25
  2. Variable Quoting Safeguards (Section 122) → Double-quote all path and string variables (`"$FILE"`, `"${FILES[@]}"`) to prevent whitespace expansion bugs
25
26
  3. Modern CLI Efficiency Rules (Section 102) → Prefer `rg` over `grep`, `fd` over `find`, `jq` over regex JSON parsing for performance and safety
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before selecting an operational mode, you MUST inspect:
23
+
23
24
  1. User prompt intent & keywords (Section 148 Mode Selection Rules) → Classify request type (TEACH, DEBUG, REVIEW, PLAN, BUILD, DISCOVER, SHIP, ORCHESTRATE)
24
25
  2. Mode Leakage Mitigation rules (Section 160) → Prevent writing unapproved code during DISCOVER or REVIEW modes
25
26
  3. Output format contracts → Ensure findings use labeled severity tags (CRITICAL / WARNING / SUGGESTION)
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before defining color palettes or CSS theme variables, you MUST inspect:
23
+
23
24
  1. `DESIGN.md` / `index.css` → Check existing CSS custom properties and color variables
24
25
  2. OKLCH Syntax & Relative Color Rules (Section 30) → Use `oklch(L C H)` format with subtle chroma (`C: 0.01-0.02`) for neutrals
25
26
  3. WCAG 2.2 AA Contrast Thresholds (Section 82) → Ensure `L ≤ 45%` for text on light background and `L ≥ 70%` on dark background
@@ -63,7 +64,7 @@ $$\text{Format: } \text{oklch}(L \quad C \quad H [\quad / \quad A])$$
63
64
  /* Neutrals: Subtly Tinted (Chroma ~ 0.015) */
64
65
  --bg-surface: oklch(0.99 0.005 260);
65
66
  --bg-surface-raised: oklch(0.96 0.01 260);
66
- --text-main: oklch(0.20 0.02 260);
67
+ --text-main: oklch(0.2 0.02 260);
67
68
  --text-muted: oklch(0.45 0.02 260);
68
69
  --border-subtle: oklch(0.88 0.015 260);
69
70
  }
@@ -72,7 +73,7 @@ $$\text{Format: } \text{oklch}(L \quad C \quad H [\quad / \quad A])$$
72
73
  :root {
73
74
  color-scheme: light dark;
74
75
  --surface-adaptive: light-dark(oklch(0.99 0.005 260), oklch(0.14 0.015 260));
75
- --text-adaptive: light-dark(oklch(0.20 0.02 260), oklch(0.96 0.01 260));
76
+ --text-adaptive: light-dark(oklch(0.2 0.02 260), oklch(0.96 0.01 260));
76
77
  }
77
78
 
78
79
  @media (prefers-color-scheme: dark) {
@@ -91,12 +92,15 @@ $$\text{Format: } \text{oklch}(L \quad C \quad H [\quad / \quad A])$$
91
92
  ## 3. WCAG 2.2 AA Contrast Standards
92
93
 
93
94
  Always verify contrast using WCAG AA minimum thresholds:
95
+
94
96
  - **Normal Text (< 18pt / < 24px)**: Minimum **4.5:1** contrast ratio.
95
97
  - **Large Text (≥ 18pt / ≥ 24px bold)**: Minimum **3.0:1** contrast ratio.
96
98
  - **UI Components & Icons**: Minimum **3.0:1** contrast ratio against adjacent surface.
97
99
 
98
100
  ### Rule of Thumb in OKLCH:
101
+
99
102
  To achieve 4.5:1 text contrast against a surface:
103
+
100
104
  - Against Light Surface (`L ≈ 98%`): Text lightness `L` MUST be **`≤ 45%`**.
101
105
  - Against Dark Surface (`L ≈ 14%`): Text lightness `L` MUST be **`≥ 70%`**.
102
106
 
@@ -111,11 +115,11 @@ To achieve 4.5:1 text contrast against a surface:
111
115
 
112
116
  ## Anti-Slop Table
113
117
 
114
- | Anti-Pattern | OKLCH Solution | Rationale |
115
- | --- | --- | --- |
116
- | Single gray for all backgrounds | Neutral tinted with brand hue (`C: 0.01-0.02`) | Creates cohesive, harmonious UI surfaces |
117
- | Over-saturated dark mode accents | Scale chroma down (`C: 0.22` → `C: 0.15`) in dark mode | Eliminates glowing text vibration & visual strain |
118
- | Harsh pure black borders (`#000`) | Alpha-tinted borders (`rgba(255,255,255,0.08)`) | Smooths elevation layers |
118
+ | Anti-Pattern | OKLCH Solution | Rationale |
119
+ | --------------------------------- | ------------------------------------------------------ | ------------------------------------------------- |
120
+ | Single gray for all backgrounds | Neutral tinted with brand hue (`C: 0.01-0.02`) | Creates cohesive, harmonious UI surfaces |
121
+ | Over-saturated dark mode accents | Scale chroma down (`C: 0.22` → `C: 0.15`) in dark mode | Eliminates glowing text vibration & visual strain |
122
+ | Harsh pure black borders (`#000`) | Alpha-tinted borders (`rgba(255,255,255,0.08)`) | Smooths elevation layers |
119
123
 
120
124
  ---
121
125
 
@@ -9,7 +9,17 @@ routing:
9
9
  tier: pro
10
10
  co-requires: [typeset, better-ui]
11
11
  trigger-signals:
12
- strong: [better-typography, typography, type scale, font pairing, tabular numbers, text-wrap balance, line-length, optical sizing]
12
+ strong:
13
+ [
14
+ better-typography,
15
+ typography,
16
+ type scale,
17
+ font pairing,
18
+ tabular numbers,
19
+ text-wrap balance,
20
+ line-length,
21
+ optical sizing,
22
+ ]
13
23
  weak: [fonts, text style, line height]
14
24
  ---
15
25
 
@@ -25,14 +35,14 @@ Scale font sizes using a consistent multiplier ($1.25$ Major Third or $1.20$ Min
25
35
 
26
36
  ```css
27
37
  :root {
28
- --font-size-xs: 0.75rem; /* 12px - Labels, Badges */
29
- --font-size-sm: 0.875rem; /* 14px - Meta, Caption */
30
- --font-size-base: 1rem; /* 16px - Body Text */
31
- --font-size-lg: 1.125rem; /* 18px - Lead Body */
32
- --font-size-xl: 1.375rem; /* 22px - Subheadings */
33
- --font-size-2xl: 1.75rem; /* 28px - H3 */
34
- --font-size-3xl: 2.25rem; /* 36px - H2 */
35
- --font-size-4xl: 3rem; /* 48px - H1 Hero */
38
+ --font-size-xs: 0.75rem; /* 12px - Labels, Badges */
39
+ --font-size-sm: 0.875rem; /* 14px - Meta, Caption */
40
+ --font-size-base: 1rem; /* 16px - Body Text */
41
+ --font-size-lg: 1.125rem; /* 18px - Lead Body */
42
+ --font-size-xl: 1.375rem; /* 22px - Subheadings */
43
+ --font-size-2xl: 1.75rem; /* 28px - H3 */
44
+ --font-size-3xl: 2.25rem; /* 36px - H2 */
45
+ --font-size-4xl: 3rem; /* 48px - H1 Hero */
36
46
 
37
47
  /* Line Heights proportional to font size */
38
48
  --line-height-heading: 1.15;
@@ -50,7 +60,10 @@ Scale font sizes using a consistent multiplier ($1.25$ Major Third or $1.20$ Min
50
60
  - **Paragraph Wrapping**: Use `text-wrap: pretty` for long body paragraphs to prevent awkward line breaks.
51
61
 
52
62
  ```css
53
- h1, h2, h3, h4 {
63
+ h1,
64
+ h2,
65
+ h3,
66
+ h4 {
54
67
  text-wrap: balance;
55
68
  letter-spacing: -0.025em;
56
69
  line-height: var(--line-height-heading);
@@ -69,6 +82,7 @@ p {
69
82
 
70
83
  - **Tabular Numbers for Data & Timers**: Use `font-variant-numeric: tabular-nums` (or `tnum`) for data tables, counters, prices, and timestamps so numbers align vertically without jumping when values update.
71
84
  - **Font Smoothing**: Enable crisp font smoothing on macOS/iOS:
85
+
72
86
  ```css
73
87
  body {
74
88
  -webkit-font-smoothing: antialiased;
@@ -80,12 +94,12 @@ body {
80
94
 
81
95
  ## Anti-Slop Table
82
96
 
83
- | Anti-Pattern | Typography Solution | Rationale |
84
- | --- | --- | --- |
85
- | Full-width body text (`width: 100%`) | `max-width: 65ch` | Prevents eye fatigue across wide desktop screens |
86
- | Single-word widows on headings | `text-wrap: balance` | Creates balanced visual hierarchy |
87
- | Jittering numbers in data tables | `font-variant-numeric: tabular-nums` | Keeps columns strictly aligned |
88
- | Default browser line-height (`1.2` on body) | `line-height: 1.5` | Improves reading comfort |
97
+ | Anti-Pattern | Typography Solution | Rationale |
98
+ | ------------------------------------------- | ------------------------------------ | ------------------------------------------------ |
99
+ | Full-width body text (`width: 100%`) | `max-width: 65ch` | Prevents eye fatigue across wide desktop screens |
100
+ | Single-word widows on headings | `text-wrap: balance` | Creates balanced visual hierarchy |
101
+ | Jittering numbers in data tables | `font-variant-numeric: tabular-nums` | Keeps columns strictly aligned |
102
+ | Default browser line-height (`1.2` on body) | `line-height: 1.5` | Improves reading comfort |
89
103
 
90
104
  ---
91
105