claudecode-omc 5.6.5 → 5.6.7

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 (434) hide show
  1. package/.local/commands/code-review.md +416 -0
  2. package/.local/commands/pr.md +250 -0
  3. package/.local/commands/prp-pr.md +244 -0
  4. package/.local/guidelines/CLAUDE.md +47 -0
  5. package/.local/skills/h5-to-swiftui/SKILL.md +201 -0
  6. package/.local/skills/h5-to-swiftui/assets/calibration/README.md +176 -0
  7. package/.local/skills/h5-to-swiftui/assets/calibration/h5-twin/index.html +52 -0
  8. package/.local/skills/h5-to-swiftui/assets/calibration/h5-twin/style.css +133 -0
  9. package/.local/skills/h5-to-swiftui/assets/calibration/swiftui-twin/Package.swift +26 -0
  10. package/.local/skills/h5-to-swiftui/assets/calibration/swiftui-twin/Sources/CalibrationScreen/CalibrationScreen.swift +142 -0
  11. package/.local/skills/h5-to-swiftui/assets/calibration/swiftui-twin-divergent/Package.swift +32 -0
  12. package/.local/skills/h5-to-swiftui/assets/calibration/swiftui-twin-divergent/Sources/CalibrationScreenDivergent/CalibrationScreenDivergent.swift +122 -0
  13. package/.local/skills/h5-to-swiftui/assets/calibration/tokens.json +42 -0
  14. package/.local/skills/h5-to-swiftui/assets/sample-h5-react/index.html +14 -0
  15. package/.local/skills/h5-to-swiftui/assets/sample-h5-react/package.json +20 -0
  16. package/.local/skills/h5-to-swiftui/assets/sample-h5-react/public/api/articles/001.json +96 -0
  17. package/.local/skills/h5-to-swiftui/assets/sample-h5-react/public/api/articles/index.json +89 -0
  18. package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/App.jsx +22 -0
  19. package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/App.module.css +11 -0
  20. package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/components/ArticleCard.jsx +53 -0
  21. package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/components/ArticleCard.module.css +139 -0
  22. package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/components/NavBar.jsx +37 -0
  23. package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/components/NavBar.module.css +72 -0
  24. package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/components/TagCloud.jsx +30 -0
  25. package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/components/TagCloud.module.css +50 -0
  26. package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/components/TrendChart.jsx +159 -0
  27. package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/components/TrendChart.module.css +21 -0
  28. package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/main.jsx +12 -0
  29. package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/screens/ArticleScreen.jsx +182 -0
  30. package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/screens/ArticleScreen.module.css +294 -0
  31. package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/screens/FeedScreen.jsx +147 -0
  32. package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/screens/FeedScreen.module.css +161 -0
  33. package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/styles/global.css +50 -0
  34. package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/styles/tokens.css +103 -0
  35. package/.local/skills/h5-to-swiftui/assets/sample-h5-react/vite.config.js +6 -0
  36. package/.local/skills/h5-to-swiftui/assets/sample-h5-vanilla/data/tasks.js +67 -0
  37. package/.local/skills/h5-to-swiftui/assets/sample-h5-vanilla/index.html +26 -0
  38. package/.local/skills/h5-to-swiftui/assets/sample-h5-vanilla/router.js +73 -0
  39. package/.local/skills/h5-to-swiftui/assets/sample-h5-vanilla/screens/detail.js +164 -0
  40. package/.local/skills/h5-to-swiftui/assets/sample-h5-vanilla/screens/home.js +53 -0
  41. package/.local/skills/h5-to-swiftui/assets/sample-h5-vanilla/screens/list.js +87 -0
  42. package/.local/skills/h5-to-swiftui/assets/sample-h5-vanilla/styles/app.css +342 -0
  43. package/.local/skills/h5-to-swiftui/assets/sample-h5-vanilla/styles/tokens.css +68 -0
  44. package/.local/skills/h5-to-swiftui/references/css-to-swiftui-map.md +205 -0
  45. package/.local/skills/h5-to-swiftui/references/design-token-extraction.md +209 -0
  46. package/.local/skills/h5-to-swiftui/references/high-risk-triage.md +209 -0
  47. package/.local/skills/h5-to-swiftui/references/render-equivalence-calibration.md +193 -0
  48. package/.local/skills/h5-to-swiftui/references/stack-detection.md +160 -0
  49. package/.local/skills/h5-to-swiftui/references/visual-diff-loop-protocol.md +365 -0
  50. package/.local/skills/h5-to-swiftui/scripts/_calib-consts.mjs +150 -0
  51. package/.local/skills/h5-to-swiftui/scripts/_imglib.mjs +547 -0
  52. package/.local/skills/h5-to-swiftui/scripts/_provenance.mjs +123 -0
  53. package/.local/skills/h5-to-swiftui/scripts/calibrate-render.mjs +625 -0
  54. package/.local/skills/h5-to-swiftui/scripts/capture-reference.mjs +386 -0
  55. package/.local/skills/h5-to-swiftui/scripts/detect-stack.mjs +305 -0
  56. package/.local/skills/h5-to-swiftui/scripts/evaluate-convergence.mjs +1093 -0
  57. package/.local/skills/h5-to-swiftui/scripts/extract-tokens.mjs +600 -0
  58. package/.local/skills/h5-to-swiftui/scripts/mark-overlay.mjs +379 -0
  59. package/.local/skills/h5-to-swiftui/scripts/pixel-diff.mjs +530 -0
  60. package/.local/skills/h5-to-swiftui/scripts/sim-screenshot.sh +544 -0
  61. package/bundled/manifest.json +4 -4
  62. package/bundled/upstream/anthropic-skills/skills/algorithmic-art/LICENSE.txt +1 -1
  63. package/bundled/upstream/anthropic-skills/skills/brand-guidelines/LICENSE.txt +1 -1
  64. package/bundled/upstream/anthropic-skills/skills/canvas-design/LICENSE.txt +1 -1
  65. package/bundled/upstream/anthropic-skills/skills/claude-api/LICENSE.txt +1 -1
  66. package/bundled/upstream/anthropic-skills/skills/claude-api/SKILL.md +120 -58
  67. package/bundled/upstream/anthropic-skills/skills/claude-api/curl/examples.md +9 -9
  68. package/bundled/upstream/anthropic-skills/skills/claude-api/curl/managed-agents.md +336 -0
  69. package/bundled/upstream/anthropic-skills/skills/claude-api/go/managed-agents/README.md +561 -0
  70. package/bundled/upstream/anthropic-skills/skills/claude-api/java/claude-api.md +2 -2
  71. package/bundled/upstream/anthropic-skills/skills/claude-api/java/managed-agents/README.md +442 -0
  72. package/bundled/upstream/anthropic-skills/skills/claude-api/php/claude-api.md +10 -10
  73. package/bundled/upstream/anthropic-skills/skills/claude-api/php/managed-agents/README.md +435 -0
  74. package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/README.md +16 -16
  75. package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/batches.md +3 -3
  76. package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/files-api.md +3 -3
  77. package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/streaming.md +7 -7
  78. package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/tool-use.md +19 -19
  79. package/bundled/upstream/anthropic-skills/skills/claude-api/python/managed-agents/README.md +332 -0
  80. package/bundled/upstream/anthropic-skills/skills/claude-api/ruby/claude-api.md +4 -4
  81. package/bundled/upstream/anthropic-skills/skills/claude-api/ruby/managed-agents/README.md +389 -0
  82. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/agent-design.md +101 -0
  83. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/error-codes.md +11 -4
  84. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/live-sources.md +60 -48
  85. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-api-reference.md +372 -0
  86. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-client-patterns.md +209 -0
  87. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-core.md +220 -0
  88. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-environments.md +211 -0
  89. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-events.md +195 -0
  90. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-memory.md +197 -0
  91. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-multiagent.md +99 -0
  92. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-onboarding.md +114 -0
  93. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-outcomes.md +106 -0
  94. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-overview.md +67 -0
  95. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-tools.md +315 -0
  96. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-webhooks.md +110 -0
  97. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/model-migration.md +779 -0
  98. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/models.md +16 -14
  99. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/prompt-caching.md +45 -2
  100. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/tool-use-concepts.md +28 -6
  101. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/README.md +15 -15
  102. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/batches.md +2 -2
  103. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/files-api.md +1 -1
  104. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/streaming.md +5 -5
  105. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/tool-use.md +15 -15
  106. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/managed-agents/README.md +359 -0
  107. package/bundled/upstream/anthropic-skills/skills/internal-comms/LICENSE.txt +1 -1
  108. package/bundled/upstream/anthropic-skills/skills/mcp-builder/LICENSE.txt +1 -1
  109. package/bundled/upstream/anthropic-skills/skills/skill-creator/LICENSE.txt +1 -1
  110. package/bundled/upstream/anthropic-skills/skills/slack-gif-creator/LICENSE.txt +1 -1
  111. package/bundled/upstream/anthropic-skills/skills/theme-factory/LICENSE.txt +1 -1
  112. package/bundled/upstream/anthropic-skills/skills/web-artifacts-builder/LICENSE.txt +1 -1
  113. package/bundled/upstream/anthropic-skills/skills/webapp-testing/LICENSE.txt +1 -1
  114. package/bundled/upstream/ecc/.omc-source/bundle.json +2 -3
  115. package/bundled/upstream/ecc/.omc-source/manifests/.claude-plugin/marketplace.json +4 -4
  116. package/bundled/upstream/ecc/agents/a11y-architect.md +10 -2
  117. package/bundled/upstream/ecc/agents/architect.md +9 -0
  118. package/bundled/upstream/ecc/agents/build-error-resolver.md +9 -0
  119. package/bundled/upstream/ecc/agents/chief-of-staff.md +9 -0
  120. package/bundled/upstream/ecc/agents/code-architect.md +9 -0
  121. package/bundled/upstream/ecc/agents/code-explorer.md +10 -1
  122. package/bundled/upstream/ecc/agents/code-reviewer.md +87 -1
  123. package/bundled/upstream/ecc/agents/code-simplifier.md +9 -0
  124. package/bundled/upstream/ecc/agents/comment-analyzer.md +10 -1
  125. package/bundled/upstream/ecc/agents/conversation-analyzer.md +9 -0
  126. package/bundled/upstream/ecc/agents/cpp-build-resolver.md +9 -0
  127. package/bundled/upstream/ecc/agents/cpp-reviewer.md +9 -0
  128. package/bundled/upstream/ecc/agents/csharp-reviewer.md +9 -0
  129. package/bundled/upstream/ecc/agents/dart-build-resolver.md +9 -0
  130. package/bundled/upstream/ecc/agents/database-reviewer.md +9 -0
  131. package/bundled/upstream/ecc/agents/django-build-resolver.md +252 -0
  132. package/bundled/upstream/ecc/agents/django-reviewer.md +169 -0
  133. package/bundled/upstream/ecc/agents/doc-updater.md +9 -0
  134. package/bundled/upstream/ecc/agents/docs-lookup.md +9 -0
  135. package/bundled/upstream/ecc/agents/e2e-runner.md +9 -0
  136. package/bundled/upstream/ecc/agents/fastapi-reviewer.md +79 -0
  137. package/bundled/upstream/ecc/agents/flutter-reviewer.md +9 -0
  138. package/bundled/upstream/ecc/agents/fsharp-reviewer.md +109 -0
  139. package/bundled/upstream/ecc/agents/gan-evaluator.md +9 -0
  140. package/bundled/upstream/ecc/agents/gan-generator.md +9 -0
  141. package/bundled/upstream/ecc/agents/gan-planner.md +9 -0
  142. package/bundled/upstream/ecc/agents/go-build-resolver.md +9 -0
  143. package/bundled/upstream/ecc/agents/go-reviewer.md +9 -0
  144. package/bundled/upstream/ecc/agents/harmonyos-app-resolver.md +182 -0
  145. package/bundled/upstream/ecc/agents/harness-optimizer.md +9 -0
  146. package/bundled/upstream/ecc/agents/healthcare-reviewer.md +9 -0
  147. package/bundled/upstream/ecc/agents/homelab-architect.md +107 -0
  148. package/bundled/upstream/ecc/agents/java-build-resolver.md +133 -11
  149. package/bundled/upstream/ecc/agents/java-reviewer.md +130 -32
  150. package/bundled/upstream/ecc/agents/kotlin-build-resolver.md +9 -0
  151. package/bundled/upstream/ecc/agents/kotlin-reviewer.md +9 -0
  152. package/bundled/upstream/ecc/agents/loop-operator.md +9 -0
  153. package/bundled/upstream/ecc/agents/mle-reviewer.md +162 -0
  154. package/bundled/upstream/ecc/agents/network-architect.md +106 -0
  155. package/bundled/upstream/ecc/agents/network-config-reviewer.md +106 -0
  156. package/bundled/upstream/ecc/agents/network-troubleshooter.md +128 -0
  157. package/bundled/upstream/ecc/agents/opensource-forker.md +9 -0
  158. package/bundled/upstream/ecc/agents/opensource-packager.md +9 -0
  159. package/bundled/upstream/ecc/agents/opensource-sanitizer.md +9 -0
  160. package/bundled/upstream/ecc/agents/performance-optimizer.md +9 -0
  161. package/bundled/upstream/ecc/agents/planner.md +9 -0
  162. package/bundled/upstream/ecc/agents/pr-test-analyzer.md +9 -0
  163. package/bundled/upstream/ecc/agents/python-reviewer.md +9 -0
  164. package/bundled/upstream/ecc/agents/pytorch-build-resolver.md +12 -3
  165. package/bundled/upstream/ecc/agents/refactor-cleaner.md +9 -0
  166. package/bundled/upstream/ecc/agents/rust-build-resolver.md +9 -0
  167. package/bundled/upstream/ecc/agents/rust-reviewer.md +9 -0
  168. package/bundled/upstream/ecc/agents/security-reviewer.md +9 -0
  169. package/bundled/upstream/ecc/agents/seo-specialist.md +10 -1
  170. package/bundled/upstream/ecc/agents/silent-failure-hunter.md +9 -0
  171. package/bundled/upstream/ecc/agents/swift-build-resolver.md +170 -0
  172. package/bundled/upstream/ecc/agents/swift-reviewer.md +116 -0
  173. package/bundled/upstream/ecc/agents/tdd-guide.md +9 -0
  174. package/bundled/upstream/ecc/agents/type-design-analyzer.md +10 -1
  175. package/bundled/upstream/ecc/agents/typescript-reviewer.md +9 -0
  176. package/bundled/upstream/ecc/commands/auto-update.md +28 -0
  177. package/bundled/upstream/ecc/commands/build-fix.md +4 -0
  178. package/bundled/upstream/ecc/commands/checkpoint.md +4 -0
  179. package/bundled/upstream/ecc/commands/code-review.md +3 -3
  180. package/bundled/upstream/ecc/commands/cost-report.md +107 -0
  181. package/bundled/upstream/ecc/commands/cpp-build.md +1 -1
  182. package/bundled/upstream/ecc/commands/cpp-test.md +1 -1
  183. package/bundled/upstream/ecc/commands/ecc-guide.md +93 -0
  184. package/bundled/upstream/ecc/commands/fastapi-review.md +39 -0
  185. package/bundled/upstream/ecc/commands/flutter-build.md +1 -1
  186. package/bundled/upstream/ecc/commands/flutter-test.md +1 -1
  187. package/bundled/upstream/ecc/commands/gan-build.md +4 -0
  188. package/bundled/upstream/ecc/commands/gan-design.md +4 -0
  189. package/bundled/upstream/ecc/commands/go-build.md +1 -1
  190. package/bundled/upstream/ecc/commands/go-test.md +1 -1
  191. package/bundled/upstream/ecc/commands/harness-audit.md +4 -0
  192. package/bundled/upstream/ecc/commands/jira.md +2 -2
  193. package/bundled/upstream/ecc/commands/kotlin-build.md +1 -1
  194. package/bundled/upstream/ecc/commands/kotlin-test.md +1 -1
  195. package/bundled/upstream/ecc/commands/learn.md +4 -0
  196. package/bundled/upstream/ecc/commands/loop-start.md +4 -0
  197. package/bundled/upstream/ecc/commands/loop-status.md +54 -1
  198. package/bundled/upstream/ecc/commands/model-route.md +4 -0
  199. package/bundled/upstream/ecc/commands/multi-backend.md +4 -0
  200. package/bundled/upstream/ecc/commands/multi-execute.md +4 -0
  201. package/bundled/upstream/ecc/commands/multi-frontend.md +4 -0
  202. package/bundled/upstream/ecc/commands/multi-plan.md +4 -0
  203. package/bundled/upstream/ecc/commands/multi-workflow.md +4 -0
  204. package/bundled/upstream/ecc/commands/plan-prd.md +160 -0
  205. package/bundled/upstream/ecc/commands/plan.md +96 -13
  206. package/bundled/upstream/ecc/commands/pm2.md +4 -0
  207. package/bundled/upstream/ecc/commands/pr.md +184 -0
  208. package/bundled/upstream/ecc/commands/project-init.md +86 -0
  209. package/bundled/upstream/ecc/commands/python-review.md +1 -1
  210. package/bundled/upstream/ecc/commands/quality-gate.md +4 -0
  211. package/bundled/upstream/ecc/commands/refactor-clean.md +4 -0
  212. package/bundled/upstream/ecc/commands/rust-build.md +1 -1
  213. package/bundled/upstream/ecc/commands/rust-test.md +1 -1
  214. package/bundled/upstream/ecc/commands/security-scan.md +92 -0
  215. package/bundled/upstream/ecc/commands/sessions.md +6 -6
  216. package/bundled/upstream/ecc/commands/skill-health.md +3 -3
  217. package/bundled/upstream/ecc/commands/test-coverage.md +4 -0
  218. package/bundled/upstream/ecc/commands/update-codemaps.md +4 -0
  219. package/bundled/upstream/ecc/commands/update-docs.md +4 -0
  220. package/bundled/upstream/ecc/skills/accessibility/SKILL.md +1 -1
  221. package/bundled/upstream/ecc/skills/agent-architecture-audit/SKILL.md +256 -0
  222. package/bundled/upstream/ecc/skills/agent-payment-x402/SKILL.md +49 -3
  223. package/bundled/upstream/ecc/skills/agentic-os/SKILL.md +387 -0
  224. package/bundled/upstream/ecc/skills/angular-developer/SKILL.md +154 -0
  225. package/bundled/upstream/ecc/skills/angular-developer/references/angular-animations.md +160 -0
  226. package/bundled/upstream/ecc/skills/angular-developer/references/angular-aria.md +410 -0
  227. package/bundled/upstream/ecc/skills/angular-developer/references/cli.md +86 -0
  228. package/bundled/upstream/ecc/skills/angular-developer/references/component-harnesses.md +59 -0
  229. package/bundled/upstream/ecc/skills/angular-developer/references/component-styling.md +91 -0
  230. package/bundled/upstream/ecc/skills/angular-developer/references/components.md +117 -0
  231. package/bundled/upstream/ecc/skills/angular-developer/references/creating-services.md +97 -0
  232. package/bundled/upstream/ecc/skills/angular-developer/references/data-resolvers.md +69 -0
  233. package/bundled/upstream/ecc/skills/angular-developer/references/define-routes.md +67 -0
  234. package/bundled/upstream/ecc/skills/angular-developer/references/defining-providers.md +72 -0
  235. package/bundled/upstream/ecc/skills/angular-developer/references/di-fundamentals.md +120 -0
  236. package/bundled/upstream/ecc/skills/angular-developer/references/e2e-testing.md +56 -0
  237. package/bundled/upstream/ecc/skills/angular-developer/references/effects.md +83 -0
  238. package/bundled/upstream/ecc/skills/angular-developer/references/hierarchical-injectors.md +43 -0
  239. package/bundled/upstream/ecc/skills/angular-developer/references/host-elements.md +80 -0
  240. package/bundled/upstream/ecc/skills/angular-developer/references/injection-context.md +63 -0
  241. package/bundled/upstream/ecc/skills/angular-developer/references/inputs.md +101 -0
  242. package/bundled/upstream/ecc/skills/angular-developer/references/linked-signal.md +59 -0
  243. package/bundled/upstream/ecc/skills/angular-developer/references/loading-strategies.md +61 -0
  244. package/bundled/upstream/ecc/skills/angular-developer/references/mcp.md +108 -0
  245. package/bundled/upstream/ecc/skills/angular-developer/references/navigate-to-routes.md +69 -0
  246. package/bundled/upstream/ecc/skills/angular-developer/references/outputs.md +86 -0
  247. package/bundled/upstream/ecc/skills/angular-developer/references/reactive-forms.md +122 -0
  248. package/bundled/upstream/ecc/skills/angular-developer/references/rendering-strategies.md +44 -0
  249. package/bundled/upstream/ecc/skills/angular-developer/references/resource.md +77 -0
  250. package/bundled/upstream/ecc/skills/angular-developer/references/route-animations.md +56 -0
  251. package/bundled/upstream/ecc/skills/angular-developer/references/route-guards.md +52 -0
  252. package/bundled/upstream/ecc/skills/angular-developer/references/router-lifecycle.md +45 -0
  253. package/bundled/upstream/ecc/skills/angular-developer/references/router-testing.md +87 -0
  254. package/bundled/upstream/ecc/skills/angular-developer/references/show-routes-with-outlets.md +68 -0
  255. package/bundled/upstream/ecc/skills/angular-developer/references/signal-forms.md +795 -0
  256. package/bundled/upstream/ecc/skills/angular-developer/references/signals-overview.md +94 -0
  257. package/bundled/upstream/ecc/skills/angular-developer/references/tailwind-css.md +69 -0
  258. package/bundled/upstream/ecc/skills/angular-developer/references/template-driven-forms.md +114 -0
  259. package/bundled/upstream/ecc/skills/angular-developer/references/testing-fundamentals.md +65 -0
  260. package/bundled/upstream/ecc/skills/autonomous-agent-harness/SKILL.md +6 -0
  261. package/bundled/upstream/ecc/skills/backend-patterns/SKILL.md +8 -45
  262. package/bundled/upstream/ecc/skills/cisco-ios-patterns/SKILL.md +163 -0
  263. package/bundled/upstream/ecc/skills/configure-ecc/SKILL.md +31 -14
  264. package/bundled/upstream/ecc/skills/continuous-learning/SKILL.md +10 -2
  265. package/bundled/upstream/ecc/skills/continuous-learning-v2/SKILL.md +19 -5
  266. package/bundled/upstream/ecc/skills/continuous-learning-v2/agents/observer-loop.sh +44 -4
  267. package/bundled/upstream/ecc/skills/continuous-learning-v2/agents/observer.md +4 -4
  268. package/bundled/upstream/ecc/skills/continuous-learning-v2/agents/start-observer.sh +5 -1
  269. package/bundled/upstream/ecc/skills/continuous-learning-v2/hooks/observe.sh +21 -5
  270. package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/detect-project.sh +58 -13
  271. package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/instinct-cli.py +97 -4
  272. package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/lib/homunculus-dir.sh +31 -0
  273. package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/migrate-homunculus.sh +62 -0
  274. package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/test_parse_instinct.py +34 -0
  275. package/bundled/upstream/ecc/skills/cost-tracking/SKILL.md +147 -0
  276. package/bundled/upstream/ecc/skills/deep-research/SKILL.md +4 -0
  277. package/bundled/upstream/ecc/skills/defi-amm-security/SKILL.md +6 -0
  278. package/bundled/upstream/ecc/skills/django-celery/SKILL.md +457 -0
  279. package/bundled/upstream/ecc/skills/ecc-guide/SKILL.md +189 -0
  280. package/bundled/upstream/ecc/skills/error-handling/SKILL.md +376 -0
  281. package/bundled/upstream/ecc/skills/exa-search/SKILL.md +4 -0
  282. package/bundled/upstream/ecc/skills/fal-ai-media/SKILL.md +4 -0
  283. package/bundled/upstream/ecc/skills/fastapi-patterns/SKILL.md +327 -0
  284. package/bundled/upstream/ecc/skills/flox-environments/SKILL.md +496 -0
  285. package/bundled/upstream/ecc/skills/frontend-design-direction/SKILL.md +92 -0
  286. package/bundled/upstream/ecc/skills/frontend-slides/animation-patterns.md +122 -0
  287. package/bundled/upstream/ecc/skills/frontend-slides/html-template.md +419 -0
  288. package/bundled/upstream/ecc/skills/frontend-slides/scripts/export-pdf.sh +418 -0
  289. package/bundled/upstream/ecc/skills/frontend-slides/scripts/extract-pptx.py +96 -0
  290. package/bundled/upstream/ecc/skills/frontend-slides/viewport-base.css +153 -0
  291. package/bundled/upstream/ecc/skills/fsharp-testing/SKILL.md +280 -0
  292. package/bundled/upstream/ecc/skills/gateguard/SKILL.md +4 -0
  293. package/bundled/upstream/ecc/skills/hermes-imports/SKILL.md +88 -0
  294. package/bundled/upstream/ecc/skills/homelab-network-readiness/SKILL.md +169 -0
  295. package/bundled/upstream/ecc/skills/homelab-network-setup/SKILL.md +129 -0
  296. package/bundled/upstream/ecc/skills/homelab-pihole-dns/SKILL.md +274 -0
  297. package/bundled/upstream/ecc/skills/homelab-vlan-segmentation/SKILL.md +311 -0
  298. package/bundled/upstream/ecc/skills/homelab-wireguard-vpn/SKILL.md +305 -0
  299. package/bundled/upstream/ecc/skills/ios-icon-gen/SKILL.md +157 -0
  300. package/bundled/upstream/ecc/skills/ios-icon-gen/scripts/generate_icons.swift +258 -0
  301. package/bundled/upstream/ecc/skills/ios-icon-gen/scripts/iconify_gen.sh +235 -0
  302. package/bundled/upstream/ecc/skills/java-coding-standards/SKILL.md +241 -5
  303. package/bundled/upstream/ecc/skills/make-interfaces-feel-better/SKILL.md +151 -0
  304. package/bundled/upstream/ecc/skills/mle-workflow/SKILL.md +346 -0
  305. package/bundled/upstream/ecc/skills/motion-advanced/SKILL.md +596 -0
  306. package/bundled/upstream/ecc/skills/motion-foundations/SKILL.md +299 -0
  307. package/bundled/upstream/ecc/skills/motion-patterns/SKILL.md +435 -0
  308. package/bundled/upstream/ecc/skills/motion-ui/SKILL.md +575 -0
  309. package/bundled/upstream/ecc/skills/mysql-patterns/SKILL.md +412 -0
  310. package/bundled/upstream/ecc/skills/netmiko-ssh-automation/SKILL.md +173 -0
  311. package/bundled/upstream/ecc/skills/network-bgp-diagnostics/SKILL.md +167 -0
  312. package/bundled/upstream/ecc/skills/network-config-validation/SKILL.md +210 -0
  313. package/bundled/upstream/ecc/skills/network-interface-health/SKILL.md +152 -0
  314. package/bundled/upstream/ecc/skills/openclaw-persona-forge/SKILL.md +1 -9
  315. package/bundled/upstream/ecc/skills/plan-orchestrate/SKILL.md +262 -0
  316. package/bundled/upstream/ecc/skills/prisma-patterns/SKILL.md +371 -0
  317. package/bundled/upstream/ecc/skills/production-audit/SKILL.md +206 -0
  318. package/bundled/upstream/ecc/skills/prompt-optimizer/SKILL.md +24 -400
  319. package/bundled/upstream/ecc/skills/quarkus-patterns/SKILL.md +722 -0
  320. package/bundled/upstream/ecc/skills/quarkus-security/SKILL.md +467 -0
  321. package/bundled/upstream/ecc/skills/quarkus-tdd/SKILL.md +811 -0
  322. package/bundled/upstream/ecc/skills/quarkus-verification/SKILL.md +479 -0
  323. package/bundled/upstream/ecc/skills/redis-patterns/SKILL.md +403 -0
  324. package/bundled/upstream/ecc/skills/scientific-db-pubmed-database/SKILL.md +175 -0
  325. package/bundled/upstream/ecc/skills/scientific-db-uspto-database/SKILL.md +177 -0
  326. package/bundled/upstream/ecc/skills/scientific-pkg-gget/SKILL.md +166 -0
  327. package/bundled/upstream/ecc/skills/scientific-thinking-literature-review/SKILL.md +192 -0
  328. package/bundled/upstream/ecc/skills/scientific-thinking-scholar-evaluation/SKILL.md +160 -0
  329. package/bundled/upstream/ecc/skills/search-first/SKILL.md +23 -2
  330. package/bundled/upstream/ecc/skills/security-review/SKILL.md +10 -2
  331. package/bundled/upstream/ecc/skills/skill-comply/scripts/runner.py +28 -3
  332. package/bundled/upstream/ecc/skills/skill-comply/tests/test_runner.py +172 -0
  333. package/bundled/upstream/ecc/skills/skill-scout/SKILL.md +140 -0
  334. package/bundled/upstream/ecc/skills/skill-stocktake/SKILL.md +1 -0
  335. package/bundled/upstream/ecc/skills/strategic-compact/SKILL.md +2 -2
  336. package/bundled/upstream/ecc/skills/tinystruct-patterns/SKILL.md +203 -0
  337. package/bundled/upstream/ecc/skills/tinystruct-patterns/references/architecture.md +90 -0
  338. package/bundled/upstream/ecc/skills/tinystruct-patterns/references/data-handling.md +60 -0
  339. package/bundled/upstream/ecc/skills/tinystruct-patterns/references/database.md +99 -0
  340. package/bundled/upstream/ecc/skills/tinystruct-patterns/references/routing.md +64 -0
  341. package/bundled/upstream/ecc/skills/tinystruct-patterns/references/system-usage.md +97 -0
  342. package/bundled/upstream/ecc/skills/tinystruct-patterns/references/testing.md +72 -0
  343. package/bundled/upstream/ecc/skills/ui-to-vue/SKILL.md +134 -0
  344. package/bundled/upstream/ecc/skills/vite-patterns/SKILL.md +449 -0
  345. package/bundled/upstream/ecc/skills/windows-desktop-e2e/SKILL.md +788 -0
  346. package/bundled/upstream/ecc/skills/x-api/SKILL.md +4 -0
  347. package/bundled/upstream/oh-my-claudecode/.omc-source/bundle.json +20 -0
  348. package/bundled/upstream/oh-my-claudecode/agents/analyst.md +2 -1
  349. package/bundled/upstream/oh-my-claudecode/agents/architect.md +2 -1
  350. package/bundled/upstream/oh-my-claudecode/agents/code-reviewer.md +26 -7
  351. package/bundled/upstream/oh-my-claudecode/agents/critic.md +2 -1
  352. package/bundled/upstream/oh-my-claudecode/agents/debugger.md +2 -1
  353. package/bundled/upstream/oh-my-claudecode/agents/designer.md +14 -1
  354. package/bundled/upstream/oh-my-claudecode/agents/document-specialist.md +1 -1
  355. package/bundled/upstream/oh-my-claudecode/agents/executor.md +2 -1
  356. package/bundled/upstream/oh-my-claudecode/agents/explore.md +2 -1
  357. package/bundled/upstream/oh-my-claudecode/agents/git-master.md +2 -1
  358. package/bundled/upstream/oh-my-claudecode/agents/planner.md +2 -1
  359. package/bundled/upstream/oh-my-claudecode/agents/qa-tester.md +2 -1
  360. package/bundled/upstream/oh-my-claudecode/agents/scientist.md +2 -1
  361. package/bundled/upstream/oh-my-claudecode/agents/security-reviewer.md +2 -1
  362. package/bundled/upstream/oh-my-claudecode/agents/test-engineer.md +2 -1
  363. package/bundled/upstream/oh-my-claudecode/agents/tracer.md +2 -1
  364. package/bundled/upstream/oh-my-claudecode/agents/verifier.md +2 -1
  365. package/bundled/upstream/oh-my-claudecode/agents/writer.md +2 -1
  366. package/bundled/upstream/oh-my-claudecode/skills/AGENTS.md +4 -3
  367. package/bundled/upstream/oh-my-claudecode/skills/ai-slop-cleaner/SKILL.md +12 -0
  368. package/bundled/upstream/oh-my-claudecode/skills/deep-dive/SKILL.md +69 -13
  369. package/bundled/upstream/oh-my-claudecode/skills/deep-interview/SKILL.md +176 -63
  370. package/bundled/upstream/oh-my-claudecode/skills/learner/SKILL.md +3 -1
  371. package/bundled/upstream/oh-my-claudecode/skills/omc-doctor/SKILL.md +22 -3
  372. package/bundled/upstream/oh-my-claudecode/skills/omc-reference/SKILL.md +1 -1
  373. package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/01-install-claude-md.md +2 -2
  374. package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/02-configure.md +45 -2
  375. package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/03-integrations.md +46 -5
  376. package/bundled/upstream/oh-my-claudecode/skills/plan/SKILL.md +19 -17
  377. package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/config.sh +1 -1
  378. package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/parse.sh +1 -1
  379. package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/azure-devops.sh +1 -1
  380. package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/bitbucket.sh +1 -1
  381. package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/gitea.sh +1 -1
  382. package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/github.sh +1 -1
  383. package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/gitlab.sh +1 -1
  384. package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/interface.sh +1 -1
  385. package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/jira.sh +1 -1
  386. package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/session.sh +1 -1
  387. package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/tmux.sh +1 -1
  388. package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/worktree.sh +1 -1
  389. package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/psm.sh +1 -1
  390. package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/tests/test-psm-prompt-injection.sh +1 -1
  391. package/bundled/upstream/oh-my-claudecode/skills/ralph/SKILL.md +8 -8
  392. package/bundled/upstream/oh-my-claudecode/skills/ralplan/SKILL.md +9 -5
  393. package/bundled/upstream/oh-my-claudecode/skills/skill/SKILL.md +6 -6
  394. package/bundled/upstream/oh-my-claudecode/skills/skillify/SKILL.md +19 -3
  395. package/bundled/upstream/oh-my-claudecode/skills/trace/SKILL.md +3 -1
  396. package/bundled/upstream/oh-my-claudecode/skills/ultrawork/SKILL.md +20 -7
  397. package/bundled/upstream/superpowers/.omc-source/bundle.json +21 -0
  398. package/bundled/upstream/superpowers/hooks/hooks-cursor.json +1 -1
  399. package/bundled/upstream/superpowers/skills/executing-plans/SKILL.md +1 -1
  400. package/bundled/upstream/superpowers/skills/finishing-a-development-branch/SKILL.md +93 -42
  401. package/bundled/upstream/superpowers/skills/requesting-code-review/SKILL.md +7 -9
  402. package/bundled/upstream/superpowers/skills/requesting-code-review/code-reviewer.md +107 -85
  403. package/bundled/upstream/superpowers/skills/subagent-driven-development/SKILL.md +3 -1
  404. package/bundled/upstream/superpowers/skills/subagent-driven-development/code-quality-reviewer-prompt.md +2 -3
  405. package/bundled/upstream/superpowers/skills/systematic-debugging/CREATION-LOG.md +1 -1
  406. package/bundled/upstream/superpowers/skills/systematic-debugging/root-cause-tracing.md +1 -1
  407. package/bundled/upstream/superpowers/skills/using-git-worktrees/SKILL.md +95 -98
  408. package/bundled/upstream/superpowers/skills/using-superpowers/references/codex-tools.md +7 -48
  409. package/bundled/upstream/superpowers/skills/using-superpowers/references/copilot-tools.md +1 -11
  410. package/bundled/upstream/superpowers/skills/using-superpowers/references/gemini-tools.md +21 -3
  411. package/bundled/upstream/superpowers/skills/writing-plans/SKILL.md +1 -1
  412. package/package.json +1 -1
  413. package/bundled/upstream/anthropic-skills/skills/claude-api/python/agent-sdk/README.md +0 -355
  414. package/bundled/upstream/anthropic-skills/skills/claude-api/python/agent-sdk/patterns.md +0 -359
  415. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/agent-sdk/README.md +0 -297
  416. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/agent-sdk/patterns.md +0 -209
  417. package/bundled/upstream/ecc/commands/agent-sort.md +0 -23
  418. package/bundled/upstream/ecc/commands/claw.md +0 -23
  419. package/bundled/upstream/ecc/commands/context-budget.md +0 -23
  420. package/bundled/upstream/ecc/commands/devfleet.md +0 -23
  421. package/bundled/upstream/ecc/commands/docs.md +0 -23
  422. package/bundled/upstream/ecc/commands/e2e.md +0 -268
  423. package/bundled/upstream/ecc/commands/eval.md +0 -23
  424. package/bundled/upstream/ecc/commands/orchestrate.md +0 -135
  425. package/bundled/upstream/ecc/commands/prompt-optimize.md +0 -23
  426. package/bundled/upstream/ecc/commands/rules-distill.md +0 -20
  427. package/bundled/upstream/ecc/commands/tdd.md +0 -231
  428. package/bundled/upstream/ecc/commands/verify.md +0 -23
  429. package/bundled/upstream/ecc/skills/claude-api/SKILL.md +0 -337
  430. package/bundled/upstream/ecc/skills/frontend-design/SKILL.md +0 -145
  431. package/bundled/upstream/superpowers/agents/code-reviewer.md +0 -48
  432. package/bundled/upstream/superpowers/commands/brainstorm.md +0 -5
  433. package/bundled/upstream/superpowers/commands/execute-plan.md +0 -5
  434. package/bundled/upstream/superpowers/commands/write-plan.md +0 -5
@@ -0,0 +1,147 @@
1
+ import React, { useState, useEffect } from 'react';
2
+ import ArticleCard from '../components/ArticleCard.jsx';
3
+ import TagCloud from '../components/TagCloud.jsx';
4
+ import TrendChart from '../components/TrendChart.jsx';
5
+ import styles from './FeedScreen.module.css';
6
+
7
+ const ALL_TAGS = [
8
+ 'Technology',
9
+ 'Design',
10
+ 'Engineering',
11
+ 'Swift',
12
+ 'SwiftUI',
13
+ 'Machine Learning',
14
+ 'Web Performance',
15
+ 'Accessibility',
16
+ 'Open Source',
17
+ 'Developer Experience',
18
+ 'iOS 18',
19
+ 'WWDC',
20
+ ];
21
+
22
+ const TREND_DATA = [12, 19, 8, 24, 17, 31, 28, 35, 22, 40, 38, 45];
23
+
24
+ export default function FeedScreen() {
25
+ const [articles, setArticles] = useState([]);
26
+ const [loading, setLoading] = useState(true);
27
+ const [error, setError] = useState(null);
28
+ const [selectedTag, setSelectedTag] = useState(null);
29
+
30
+ useEffect(() => {
31
+ let cancelled = false;
32
+
33
+ async function loadFeed() {
34
+ setLoading(true);
35
+ setError(null);
36
+ try {
37
+ // Fetch from mock API endpoint (relative URL; real server returns JSON)
38
+ const res = await fetch('/api/articles');
39
+ if (!res.ok) throw new Error(`HTTP ${res.status}: ${res.statusText}`);
40
+ const data = await res.json();
41
+ if (!cancelled) setArticles(data.articles ?? []);
42
+ } catch (err) {
43
+ if (!cancelled) setError(err.message);
44
+ } finally {
45
+ if (!cancelled) setLoading(false);
46
+ }
47
+ }
48
+
49
+ loadFeed();
50
+ return () => { cancelled = true; };
51
+ }, []);
52
+
53
+ const filtered = selectedTag
54
+ ? articles.filter(a => a.tag === selectedTag)
55
+ : articles;
56
+
57
+ return (
58
+ <div className={styles.screen}>
59
+ {/* ── Hero header ───────────────────────────────────────── */}
60
+ <section className={styles.hero}>
61
+ <div className={styles.heroInner}>
62
+ <p className={styles.heroEyebrow}>Daily Edition — May 2026</p>
63
+ <h1 className={styles.heroTitle}>The Chronicle</h1>
64
+ <p className={styles.heroSubtitle}>
65
+ Thoughtful writing on technology, design, and the craft of building software.
66
+ </p>
67
+ </div>
68
+ </section>
69
+
70
+ <div className={styles.content}>
71
+ {/* ── Trend chart — TIER3 surface ───────────────────── */}
72
+ {/* TIER3: WebGL canvas chart via TrendChart component.
73
+ This component uses WebGLRenderingContext (GLSL shaders) for
74
+ GPU-accelerated sparkline rendering. It cannot be transpiled to
75
+ SwiftUI; must be replaced with Swift Charts LineChart or WKWebView.
76
+ See TrendChart.jsx for full TIER3 annotation. */}
77
+ <section className={styles.trendSection}>
78
+ <TrendChart
79
+ data={TREND_DATA}
80
+ label="Reader engagement — last 12 weeks"
81
+ color="var(--color-accent)"
82
+ />
83
+ </section>
84
+
85
+ {/* ── Tag filter ────────────────────────────────────── */}
86
+ <section className={styles.tagsSection}>
87
+ <h2 className={styles.sectionHeading}>Topics</h2>
88
+ {/* CUSTOM-LAYOUT: flex-wrap:wrap (see TagCloud.module.css) */}
89
+ <TagCloud
90
+ tags={ALL_TAGS}
91
+ selectedTag={selectedTag}
92
+ onTagClick={setSelectedTag}
93
+ />
94
+ </section>
95
+
96
+ {/* ── Articles grid ─────────────────────────────────── */}
97
+ <section className={styles.feedSection}>
98
+ <div className={styles.feedHeader}>
99
+ <h2 className={styles.sectionHeading}>
100
+ {selectedTag ? `#${selectedTag}` : 'Latest'}
101
+ </h2>
102
+ {selectedTag && (
103
+ <button
104
+ className={styles.clearFilter}
105
+ onClick={() => setSelectedTag(null)}
106
+ >
107
+ Clear filter
108
+ </button>
109
+ )}
110
+ </div>
111
+
112
+ {loading && (
113
+ <div className={styles.stateContainer}>
114
+ <div className={styles.spinner} aria-label="Loading articles" />
115
+ <p className={styles.stateText}>Loading articles…</p>
116
+ </div>
117
+ )}
118
+
119
+ {error && !loading && (
120
+ <div className={styles.stateContainer} role="alert">
121
+ <p className={styles.errorHeading}>Failed to load feed</p>
122
+ <p className={styles.stateText}>{error}</p>
123
+ </div>
124
+ )}
125
+
126
+ {!loading && !error && filtered.length === 0 && (
127
+ <div className={styles.stateContainer}>
128
+ <p className={styles.stateText}>
129
+ {selectedTag
130
+ ? `No articles tagged "${selectedTag}" yet.`
131
+ : 'No articles found.'}
132
+ </p>
133
+ </div>
134
+ )}
135
+
136
+ {!loading && !error && filtered.length > 0 && (
137
+ <div className={styles.grid}>
138
+ {filtered.map(article => (
139
+ <ArticleCard key={article.id} article={article} />
140
+ ))}
141
+ </div>
142
+ )}
143
+ </section>
144
+ </div>
145
+ </div>
146
+ );
147
+ }
@@ -0,0 +1,161 @@
1
+ .screen {
2
+ display: flex;
3
+ flex-direction: column;
4
+ }
5
+
6
+ /* ── Hero ─────────────────────────────────────────────────────── */
7
+ .hero {
8
+ background: linear-gradient(
9
+ 160deg,
10
+ var(--color-bg-primary) 0%,
11
+ var(--color-bg-secondary) 100%
12
+ );
13
+ border-bottom: 1px solid var(--color-border);
14
+ padding: var(--space-12) var(--space-6) var(--space-10);
15
+ }
16
+
17
+ .heroInner {
18
+ max-width: 680px;
19
+ margin: 0 auto;
20
+ display: flex;
21
+ flex-direction: column;
22
+ gap: var(--space-3);
23
+ }
24
+
25
+ .heroEyebrow {
26
+ font-size: var(--font-size-xs);
27
+ font-weight: var(--font-weight-semibold);
28
+ color: var(--color-text-accent);
29
+ text-transform: uppercase;
30
+ letter-spacing: 1px;
31
+ }
32
+
33
+ .heroTitle {
34
+ font-family: var(--font-family-display);
35
+ font-size: var(--font-size-display);
36
+ font-weight: var(--font-weight-heavy);
37
+ color: var(--color-text-primary);
38
+ line-height: var(--line-height-tight);
39
+ letter-spacing: -1.5px;
40
+ }
41
+
42
+ .heroSubtitle {
43
+ font-size: var(--font-size-body-lg);
44
+ color: var(--color-text-secondary);
45
+ line-height: var(--line-height-relaxed);
46
+ max-width: 520px;
47
+ }
48
+
49
+ /* ── Content container ────────────────────────────────────────── */
50
+ .content {
51
+ max-width: 1100px;
52
+ margin: 0 auto;
53
+ width: 100%;
54
+ padding: var(--space-8) var(--space-6) var(--space-12);
55
+ display: flex;
56
+ flex-direction: column;
57
+ gap: var(--space-8);
58
+ }
59
+
60
+ /* ── Trend chart section ──────────────────────────────────────── */
61
+ .trendSection {
62
+ padding: var(--space-5);
63
+ background-color: var(--color-bg-card);
64
+ border-radius: var(--radius-lg);
65
+ box-shadow: var(--shadow-card);
66
+ border: 1px solid var(--color-border);
67
+ }
68
+
69
+ /* ── Tags section ─────────────────────────────────────────────── */
70
+ .tagsSection {
71
+ display: flex;
72
+ flex-direction: column;
73
+ }
74
+
75
+ .sectionHeading {
76
+ font-family: var(--font-family-display);
77
+ font-size: var(--font-size-headline);
78
+ font-weight: var(--font-weight-bold);
79
+ color: var(--color-text-primary);
80
+ letter-spacing: -0.4px;
81
+ }
82
+
83
+ /* ── Feed section ─────────────────────────────────────────────── */
84
+ .feedSection {
85
+ display: flex;
86
+ flex-direction: column;
87
+ gap: var(--space-5);
88
+ }
89
+
90
+ .feedHeader {
91
+ display: flex;
92
+ flex-direction: row;
93
+ align-items: center;
94
+ justify-content: space-between;
95
+ }
96
+
97
+ .clearFilter {
98
+ font-size: var(--font-size-sm);
99
+ font-weight: var(--font-weight-medium);
100
+ color: var(--color-text-accent);
101
+ padding: var(--space-1) var(--space-3);
102
+ border-radius: var(--radius-full);
103
+ border: 1px solid var(--color-border);
104
+ transition: background-color var(--duration-fast) var(--easing-default);
105
+ }
106
+
107
+ .clearFilter:hover {
108
+ background-color: var(--color-bg-secondary);
109
+ }
110
+
111
+ /* ── Article grid ─────────────────────────────────────────────── */
112
+ /*
113
+ * Responsive masonry-ish grid with auto-fill columns.
114
+ * grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)) creates a
115
+ * flexible grid where column count adapts to viewport width and column widths
116
+ * are non-uniform when items don't fill the row exactly.
117
+ *
118
+ * This maps to LazyVGrid with GridItem(.adaptive(minimum: 320)) in SwiftUI —
119
+ * which is the closest approximation. However if the design requires
120
+ * exact column-span or row-span overrides, a custom Layout is needed.
121
+ */
122
+ .grid {
123
+ display: grid;
124
+ grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
125
+ gap: var(--space-5);
126
+ align-items: start;
127
+ }
128
+
129
+ /* ── Loading / error / empty states ──────────────────────────── */
130
+ .stateContainer {
131
+ display: flex;
132
+ flex-direction: column;
133
+ align-items: center;
134
+ gap: var(--space-3);
135
+ padding: var(--space-12) var(--space-6);
136
+ }
137
+
138
+ .spinner {
139
+ width: 32px;
140
+ height: 32px;
141
+ border: 3px solid var(--color-border);
142
+ border-top-color: var(--color-accent);
143
+ border-radius: var(--radius-full);
144
+ animation: spin 0.8s linear infinite;
145
+ }
146
+
147
+ @keyframes spin {
148
+ to { transform: rotate(360deg); }
149
+ }
150
+
151
+ .stateText {
152
+ font-size: var(--font-size-body);
153
+ color: var(--color-text-secondary);
154
+ text-align: center;
155
+ }
156
+
157
+ .errorHeading {
158
+ font-size: var(--font-size-headline);
159
+ font-weight: var(--font-weight-semibold);
160
+ color: var(--color-danger);
161
+ }
@@ -0,0 +1,50 @@
1
+ *,
2
+ *::before,
3
+ *::after {
4
+ box-sizing: border-box;
5
+ margin: 0;
6
+ padding: 0;
7
+ }
8
+
9
+ html {
10
+ font-size: 16px;
11
+ -webkit-font-smoothing: antialiased;
12
+ -moz-osx-font-smoothing: grayscale;
13
+ }
14
+
15
+ body {
16
+ font-family: var(--font-family-base);
17
+ font-size: var(--font-size-body);
18
+ color: var(--color-text-primary);
19
+ background-color: var(--color-bg-primary);
20
+ line-height: var(--line-height-normal);
21
+ min-height: 100dvh;
22
+ }
23
+
24
+ #root {
25
+ display: flex;
26
+ flex-direction: column;
27
+ min-height: 100dvh;
28
+ }
29
+
30
+ a {
31
+ color: var(--color-text-accent);
32
+ text-decoration: none;
33
+ }
34
+
35
+ a:hover {
36
+ text-decoration: underline;
37
+ }
38
+
39
+ img {
40
+ max-width: 100%;
41
+ height: auto;
42
+ display: block;
43
+ }
44
+
45
+ button {
46
+ font-family: inherit;
47
+ cursor: pointer;
48
+ border: none;
49
+ background: none;
50
+ }
@@ -0,0 +1,103 @@
1
+ /* Design tokens — harvested by extract-tokens.mjs */
2
+
3
+ :root {
4
+ /* ── Color: Light theme ─────────────────────────────────────── */
5
+ --color-bg-primary: #ffffff;
6
+ --color-bg-secondary: #f5f5f7;
7
+ --color-bg-card: #ffffff;
8
+ --color-bg-tag: #e8f0fe;
9
+
10
+ --color-text-primary: #1d1d1f;
11
+ --color-text-secondary: #6e6e73;
12
+ --color-text-caption: #9a9a9f;
13
+ --color-text-accent: #0071e3;
14
+ --color-text-on-accent: #ffffff;
15
+
16
+ --color-border: #d2d2d7;
17
+ --color-divider: #e5e5ea;
18
+
19
+ --color-accent: #0071e3;
20
+ --color-accent-hover: #0077ed;
21
+ --color-danger: #ff3b30;
22
+ --color-success: #34c759;
23
+ --color-warning: #ff9f0a;
24
+
25
+ /* ── Typography ─────────────────────────────────────────────── */
26
+ --font-family-base: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', sans-serif;
27
+ --font-family-display: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Segoe UI', sans-serif;
28
+ --font-family-mono: 'SF Mono', 'Fira Code', 'Cascadia Code', monospace;
29
+
30
+ --font-size-xs: 11px;
31
+ --font-size-sm: 13px;
32
+ --font-size-body: 16px;
33
+ --font-size-body-lg: 17px;
34
+ --font-size-subhead: 19px;
35
+ --font-size-headline: 22px;
36
+ --font-size-title: 28px;
37
+ --font-size-display: 40px;
38
+
39
+ --font-weight-regular: 400;
40
+ --font-weight-medium: 500;
41
+ --font-weight-semibold: 600;
42
+ --font-weight-bold: 700;
43
+ --font-weight-heavy: 800;
44
+
45
+ --line-height-tight: 1.2;
46
+ --line-height-normal: 1.5;
47
+ --line-height-relaxed: 1.75;
48
+
49
+ /* ── Spacing ─────────────────────────────────────────────────── */
50
+ --space-1: 4px;
51
+ --space-2: 8px;
52
+ --space-3: 12px;
53
+ --space-4: 16px;
54
+ --space-5: 20px;
55
+ --space-6: 24px;
56
+ --space-8: 32px;
57
+ --space-10: 40px;
58
+ --space-12: 48px;
59
+
60
+ /* ── Radius ──────────────────────────────────────────────────── */
61
+ --radius-sm: 6px;
62
+ --radius-md: 10px;
63
+ --radius-lg: 16px;
64
+ --radius-full: 9999px;
65
+
66
+ /* ── Shadow ──────────────────────────────────────────────────── */
67
+ --shadow-card: 0 1px 3px rgba(0, 0, 0, 0.08), 0 4px 12px rgba(0, 0, 0, 0.06);
68
+ --shadow-elevated: 0 8px 24px rgba(0, 0, 0, 0.12);
69
+
70
+ /* ── Transitions ─────────────────────────────────────────────── */
71
+ --duration-fast: 120ms;
72
+ --duration-normal: 220ms;
73
+ --duration-slow: 400ms;
74
+ --easing-default: cubic-bezier(0.25, 0.1, 0.25, 1);
75
+ }
76
+
77
+ /* ── Dark theme ───────────────────────────────────────────────── */
78
+ @media (prefers-color-scheme: dark) {
79
+ :root {
80
+ --color-bg-primary: #000000;
81
+ --color-bg-secondary: #1c1c1e;
82
+ --color-bg-card: #1c1c1e;
83
+ --color-bg-tag: #1a2744;
84
+
85
+ --color-text-primary: #f5f5f7;
86
+ --color-text-secondary: #aeaeb2;
87
+ --color-text-caption: #636366;
88
+ --color-text-accent: #2997ff;
89
+ --color-text-on-accent: #ffffff;
90
+
91
+ --color-border: #38383a;
92
+ --color-divider: #2c2c2e;
93
+
94
+ --color-accent: #2997ff;
95
+ --color-accent-hover: #409cff;
96
+ --color-danger: #ff453a;
97
+ --color-success: #32d74b;
98
+ --color-warning: #ffd60a;
99
+
100
+ --shadow-card: 0 1px 3px rgba(0, 0, 0, 0.3), 0 4px 12px rgba(0, 0, 0, 0.2);
101
+ --shadow-elevated: 0 8px 24px rgba(0, 0, 0, 0.4);
102
+ }
103
+ }
@@ -0,0 +1,6 @@
1
+ import { defineConfig } from 'vite';
2
+ import react from '@vitejs/plugin-react';
3
+
4
+ export default defineConfig({
5
+ plugins: [react()],
6
+ });
@@ -0,0 +1,67 @@
1
+ /* ── Task data store ─────────────────────────────────────────────────────── *
2
+ * In-file JS array — no network fetch required.
3
+ * Stage 6 behavioral-parity will port this to a Swift @State array.
4
+ * ─────────────────────────────────────────────────────────────────────────── */
5
+
6
+ window.TASKS = [
7
+ {
8
+ id: 1,
9
+ title: 'Design system tokens',
10
+ description: 'Define all color, spacing, and typography tokens as CSS custom properties so they can be extracted by automated tooling and mapped to SwiftUI theme values.',
11
+ category: 'Design',
12
+ priority: 'high',
13
+ done: false,
14
+ dueDate: '2026-05-22',
15
+ progress: [40, 55, 60, 72, 85, 90, 88, 95],
16
+ },
17
+ {
18
+ id: 2,
19
+ title: 'Implement hash router',
20
+ description: 'Build a minimal client-side router using the hashchange event. Supports three routes: home, list, and detail. No library dependencies.',
21
+ category: 'Engineering',
22
+ priority: 'high',
23
+ done: false,
24
+ dueDate: '2026-05-23',
25
+ progress: [10, 25, 45, 68, 80, 90, 95, 100],
26
+ },
27
+ {
28
+ id: 3,
29
+ title: 'Write unit tests for router',
30
+ description: 'Cover route matching, missing routes, and the detail screen id extraction from the URL hash fragment.',
31
+ category: 'QA',
32
+ priority: 'medium',
33
+ done: true,
34
+ dueDate: '2026-05-20',
35
+ progress: [20, 40, 60, 80, 100, 100, 100, 100],
36
+ },
37
+ {
38
+ id: 4,
39
+ title: 'Canvas sparkline Tier-3 spike',
40
+ description: 'Prototype the canvas-based sparkline widget on the detail screen. This surface is explicitly Tier-3 (high risk) and will require human review before SwiftUI porting.',
41
+ category: 'Research',
42
+ priority: 'medium',
43
+ done: false,
44
+ dueDate: '2026-05-28',
45
+ progress: [5, 10, 15, 20, 30, 35, 42, 50],
46
+ },
47
+ {
48
+ id: 5,
49
+ title: 'Accessibility audit',
50
+ description: 'Check all screens for WCAG 2.2 AA compliance: color contrast ratios, focus management, ARIA labels, and keyboard navigation.',
51
+ category: 'Accessibility',
52
+ priority: 'low',
53
+ done: false,
54
+ dueDate: '2026-06-01',
55
+ progress: [0, 0, 5, 5, 10, 15, 20, 28],
56
+ },
57
+ {
58
+ id: 6,
59
+ title: 'Dark mode tokens',
60
+ description: 'Add @media (prefers-color-scheme: dark) overrides for every CSS custom property in tokens.css.',
61
+ category: 'Design',
62
+ priority: 'low',
63
+ done: true,
64
+ dueDate: '2026-05-19',
65
+ progress: [30, 55, 70, 85, 90, 95, 98, 100],
66
+ },
67
+ ];
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>TaskFlow</title>
7
+ <link rel="stylesheet" href="styles/tokens.css" />
8
+ <link rel="stylesheet" href="styles/app.css" />
9
+ </head>
10
+ <body>
11
+ <!-- Root shell — screens are injected here by router.js -->
12
+ <div id="app">
13
+ <nav id="nav-bar">
14
+ <a href="#/home" class="nav-link" data-route="home">Home</a>
15
+ <a href="#/list" class="nav-link" data-route="list">Tasks</a>
16
+ </nav>
17
+ <main id="screen-root"></main>
18
+ </div>
19
+
20
+ <script src="data/tasks.js"></script>
21
+ <script src="screens/home.js"></script>
22
+ <script src="screens/list.js"></script>
23
+ <script src="screens/detail.js"></script>
24
+ <script src="router.js"></script>
25
+ </body>
26
+ </html>
@@ -0,0 +1,73 @@
1
+ /* ── Client-side hash router ─────────────────────────────────────────────── *
2
+ * Routes:
3
+ * #/home → HomeScreen
4
+ * #/list → ListScreen
5
+ * #/detail?id=<N> → DetailScreen
6
+ *
7
+ * Plain DOM addEventListener — no library, no framework.
8
+ * Stage 1 will inventory these routes for NavigationStack mapping.
9
+ * ─────────────────────────────────────────────────────────────────────────── */
10
+
11
+ (function () {
12
+ 'use strict';
13
+
14
+ /** @type {HTMLElement} */
15
+ const screenRoot = document.getElementById('screen-root');
16
+
17
+ // Route table: path prefix → screen factory function
18
+ const routes = {
19
+ '/home': renderHome,
20
+ '/list': renderList,
21
+ '/detail': renderDetail,
22
+ };
23
+
24
+ /**
25
+ * Parse the current window.location.hash into { path, params }.
26
+ * Hash format: #/path?key=value&key2=value2
27
+ */
28
+ function parseHash() {
29
+ const raw = window.location.hash.replace(/^#/, '') || '/home';
30
+ const [path, qs] = raw.split('?');
31
+ const params = {};
32
+ if (qs) {
33
+ qs.split('&').forEach(pair => {
34
+ const [k, v] = pair.split('=');
35
+ if (k) params[decodeURIComponent(k)] = decodeURIComponent(v ?? '');
36
+ });
37
+ }
38
+ return { path: path || '/home', params };
39
+ }
40
+
41
+ /** Update nav link active state */
42
+ function syncNav(path) {
43
+ document.querySelectorAll('.nav-link').forEach(link => {
44
+ const route = link.dataset.route;
45
+ const active = path.startsWith('/' + route);
46
+ link.classList.toggle('active', active);
47
+ });
48
+ }
49
+
50
+ /** Dispatch to the correct screen factory */
51
+ function navigate() {
52
+ const { path, params } = parseHash();
53
+ syncNav(path);
54
+
55
+ // Find the matching route (longest prefix wins)
56
+ const match = Object.keys(routes).find(r => path === r || path.startsWith(r));
57
+ const factory = match ? routes[match] : null;
58
+
59
+ if (!factory) {
60
+ screenRoot.innerHTML = `<div class="empty-state"><p>404 — route not found: <code>${path}</code></p></div>`;
61
+ return;
62
+ }
63
+
64
+ // Clear previous content, then render
65
+ screenRoot.innerHTML = '';
66
+ const node = factory(params);
67
+ if (node) screenRoot.appendChild(node);
68
+ }
69
+
70
+ // Trigger on hash change and on first load
71
+ window.addEventListener('hashchange', navigate);
72
+ window.addEventListener('DOMContentLoaded', navigate);
73
+ }());