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,164 @@
1
+ /* ── Detail screen ───────────────────────────────────────────────────────── *
2
+ * Route: #/detail?id=<N>
3
+ * Shows: task card with image placeholder, metadata chips, description,
4
+ * and a canvas-based progress sparkline (Tier-3 surface).
5
+ *
6
+ * The sparkline uses <canvas> with plain 2D context drawing.
7
+ * Stage 1 route inventory will capture this screen.
8
+ * Stage 3 NavigationStack will map it as a pushed detail view.
9
+ * Stage risk-triage.json will flag the canvas section as Tier-3.
10
+ * ─────────────────────────────────────────────────────────────────────────── */
11
+
12
+ /* global TASKS */
13
+
14
+ function renderDetail(params) {
15
+ 'use strict';
16
+
17
+ const id = parseInt(params.id, 10);
18
+ const task = TASKS.find(t => t.id === id);
19
+
20
+ const screen = document.createElement('section');
21
+ screen.className = 'screen';
22
+ screen.setAttribute('aria-label', 'Task detail');
23
+
24
+ if (!task) {
25
+ screen.innerHTML = `
26
+ <a href="#/list" class="detail-back">← Back to list</a>
27
+ <div class="empty-state">
28
+ <p>Task #${id} not found.</p>
29
+ <a href="#/list" class="btn btn-secondary">Go to list</a>
30
+ </div>
31
+ `;
32
+ return screen;
33
+ }
34
+
35
+ // ── Static markup for Tier-1 surfaces ──
36
+ screen.innerHTML = `
37
+ <a href="#/list" class="detail-back">← Back to list</a>
38
+
39
+ <article class="detail-card">
40
+ <!-- Image placeholder — maps to AsyncImage in SwiftUI -->
41
+ <div class="detail-image-placeholder" aria-label="Task cover image placeholder">
42
+ Cover image
43
+ </div>
44
+
45
+ <div class="detail-body">
46
+ <h1 class="detail-title">${task.title}</h1>
47
+
48
+ <div class="detail-meta-row">
49
+ <span class="detail-chip">${task.category}</span>
50
+ <span class="detail-chip priority-chip" data-priority="${task.priority}">${task.priority} priority</span>
51
+ <span class="detail-chip">${task.done ? '✓ Done' : 'Pending'}</span>
52
+ <span class="detail-chip">Due ${task.dueDate}</span>
53
+ </div>
54
+
55
+ <p class="detail-desc">${task.description}</p>
56
+ </div>
57
+ </article>
58
+
59
+ <!-- TIER3: canvas custom drawing -->
60
+ <div class="sparkline-section">
61
+ <h3>Progress history (last 8 entries)</h3>
62
+ <canvas id="sparkline-canvas"
63
+ width="600"
64
+ height="80"
65
+ aria-label="Progress sparkline chart"
66
+ role="img">
67
+ Progress values: ${task.progress.join(', ')}
68
+ </canvas>
69
+ </div>
70
+
71
+ <div style="display:flex; gap:var(--space-3); flex-wrap:wrap;">
72
+ <a href="#/list" class="btn btn-secondary">← All tasks</a>
73
+ <a href="#/home" class="btn btn-secondary">Home</a>
74
+ </div>
75
+ `;
76
+
77
+ // ── Canvas sparkline — Tier-3 surface ─────────────────────────────────────
78
+ // This tiny canvas draw is the explicit Tier-3 region.
79
+ // risk-triage.json should flag #sparkline-canvas as requiring human review
80
+ // before any SwiftUI port attempt (Charts.framework vs custom Path).
81
+ // <!-- TIER3: canvas custom drawing -->
82
+ drawSparkline(screen.querySelector('#sparkline-canvas'), task.progress);
83
+
84
+ return screen;
85
+ }
86
+
87
+ /**
88
+ * Draw a minimal line sparkline onto the given canvas element.
89
+ * Uses only the 2D canvas API — no library.
90
+ *
91
+ * @param {HTMLCanvasElement} canvas
92
+ * @param {number[]} values Array of progress percentages (0–100)
93
+ */
94
+ function drawSparkline(canvas, values) {
95
+ 'use strict';
96
+
97
+ if (!canvas || !canvas.getContext) return;
98
+
99
+ const ctx = canvas.getContext('2d');
100
+ const dpr = window.devicePixelRatio || 1;
101
+ const w = canvas.clientWidth || 600;
102
+ const h = canvas.clientHeight || 80;
103
+
104
+ // Resize for device pixel ratio
105
+ canvas.width = w * dpr;
106
+ canvas.height = h * dpr;
107
+ ctx.scale(dpr, dpr);
108
+
109
+ const pad = 12;
110
+ const min = 0;
111
+ const max = 100;
112
+ const rangeX = w - pad * 2;
113
+ const rangeY = h - pad * 2;
114
+
115
+ // Map a value to canvas coordinates
116
+ function xAt(i) { return pad + (i / (values.length - 1)) * rangeX; }
117
+ function yAt(v) { return pad + (1 - (v - min) / (max - min)) * rangeY; }
118
+
119
+ // Detect dark mode for color
120
+ const dark = window.matchMedia('(prefers-color-scheme: dark)').matches;
121
+ const lineColor = dark ? '#0a84ff' : '#007aff';
122
+ const fillFrom = dark ? 'rgba(10,132,255,0.25)' : 'rgba(0,122,255,0.12)';
123
+ const dotColor = dark ? '#ffffff' : '#007aff';
124
+
125
+ // Area fill
126
+ ctx.beginPath();
127
+ ctx.moveTo(xAt(0), yAt(values[0]));
128
+ for (let i = 1; i < values.length; i++) {
129
+ ctx.lineTo(xAt(i), yAt(values[i]));
130
+ }
131
+ ctx.lineTo(xAt(values.length - 1), h - pad);
132
+ ctx.lineTo(xAt(0), h - pad);
133
+ ctx.closePath();
134
+ ctx.fillStyle = fillFrom;
135
+ ctx.fill();
136
+
137
+ // Line stroke
138
+ ctx.beginPath();
139
+ ctx.moveTo(xAt(0), yAt(values[0]));
140
+ for (let i = 1; i < values.length; i++) {
141
+ ctx.lineTo(xAt(i), yAt(values[i]));
142
+ }
143
+ ctx.strokeStyle = lineColor;
144
+ ctx.lineWidth = 2;
145
+ ctx.lineJoin = 'round';
146
+ ctx.stroke();
147
+
148
+ // Data point dots
149
+ ctx.fillStyle = dotColor;
150
+ values.forEach((v, i) => {
151
+ ctx.beginPath();
152
+ ctx.arc(xAt(i), yAt(v), 3, 0, Math.PI * 2);
153
+ ctx.fill();
154
+ });
155
+
156
+ // Last value label
157
+ const lastX = xAt(values.length - 1);
158
+ const lastY = yAt(values[values.length - 1]);
159
+ ctx.fillStyle = lineColor;
160
+ ctx.font = `bold ${11 * dpr / dpr}px -apple-system, sans-serif`;
161
+ ctx.textAlign = 'right';
162
+ ctx.textBaseline = 'bottom';
163
+ ctx.fillText(`${values[values.length - 1]}%`, lastX - 4, lastY - 4);
164
+ }
@@ -0,0 +1,53 @@
1
+ /* ── Home screen ─────────────────────────────────────────────────────────── *
2
+ * Route: #/home
3
+ * Shows: hero text, summary stats derived from TASKS, two CTA buttons.
4
+ * Tier-1 surface: text, buttons, stat cards, flex layout.
5
+ * ─────────────────────────────────────────────────────────────────────────── */
6
+
7
+ /* global TASKS */
8
+
9
+ function renderHome(/* params */) {
10
+ 'use strict';
11
+
12
+ const total = TASKS.length;
13
+ const done = TASKS.filter(t => t.done).length;
14
+ const pending = total - done;
15
+ const highPri = TASKS.filter(t => t.priority === 'high' && !t.done).length;
16
+
17
+ const screen = document.createElement('section');
18
+ screen.className = 'screen';
19
+ screen.setAttribute('aria-label', 'Home');
20
+
21
+ screen.innerHTML = `
22
+ <div class="home-hero">
23
+ <h1>TaskFlow</h1>
24
+ <p>A simple task manager — open <code>index.html</code> directly, no build required.</p>
25
+ </div>
26
+
27
+ <div class="home-stats" role="list" aria-label="Summary stats">
28
+ <div class="stat-card" role="listitem">
29
+ <span class="stat-value">${total}</span>
30
+ <span class="stat-label">Total</span>
31
+ </div>
32
+ <div class="stat-card" role="listitem">
33
+ <span class="stat-value">${pending}</span>
34
+ <span class="stat-label">Pending</span>
35
+ </div>
36
+ <div class="stat-card" role="listitem">
37
+ <span class="stat-value">${done}</span>
38
+ <span class="stat-label">Done</span>
39
+ </div>
40
+ <div class="stat-card" role="listitem">
41
+ <span class="stat-value">${highPri}</span>
42
+ <span class="stat-label">High priority</span>
43
+ </div>
44
+ </div>
45
+
46
+ <div class="home-cta">
47
+ <a href="#/list" class="btn btn-primary">View Tasks</a>
48
+ <a href="#/detail?id=1" class="btn btn-secondary">Sample Detail</a>
49
+ </div>
50
+ `;
51
+
52
+ return screen;
53
+ }
@@ -0,0 +1,87 @@
1
+ /* ── List screen ─────────────────────────────────────────────────────────── *
2
+ * Route: #/list
3
+ * Shows: filterable task list loaded from window.TASKS (in-file JS array).
4
+ * Tier-1 surface: list rows, badges, flex layout, text.
5
+ * ─────────────────────────────────────────────────────────────────────────── */
6
+
7
+ /* global TASKS */
8
+
9
+ function renderList(/* params */) {
10
+ 'use strict';
11
+
12
+ const screen = document.createElement('section');
13
+ screen.className = 'screen';
14
+ screen.setAttribute('aria-label', 'Task list');
15
+
16
+ // ── State ──
17
+ let filter = 'all'; // 'all' | 'pending' | 'done'
18
+
19
+ function filteredTasks() {
20
+ if (filter === 'pending') return TASKS.filter(t => !t.done);
21
+ if (filter === 'done') return TASKS.filter(t => t.done);
22
+ return TASKS;
23
+ }
24
+
25
+ // ── Render task rows ──
26
+ function buildTaskList() {
27
+ const tasks = filteredTasks();
28
+
29
+ if (tasks.length === 0) {
30
+ return `<div class="empty-state"><p>No tasks in this filter.</p></div>`;
31
+ }
32
+
33
+ const rows = tasks.map(task => `
34
+ <li class="task-row ${task.done ? 'task-done' : ''}"
35
+ data-id="${task.id}"
36
+ role="button"
37
+ tabindex="0"
38
+ aria-label="${task.title}, ${task.priority} priority, ${task.done ? 'done' : 'pending'}">
39
+ <span class="task-dot priority-${task.priority}" aria-hidden="true"></span>
40
+ <div class="task-info">
41
+ <span class="task-title">${task.title}</span>
42
+ <span class="task-meta">${task.category} · Due ${task.dueDate}</span>
43
+ </div>
44
+ <span class="task-badge">${task.priority}</span>
45
+ </li>
46
+ `).join('');
47
+
48
+ return `<ul class="task-list" aria-label="Tasks">${rows}</ul>`;
49
+ }
50
+
51
+ // ── Full render ──
52
+ function render() {
53
+ screen.innerHTML = `
54
+ <div class="list-header">
55
+ <h2>Tasks</h2>
56
+ <div style="display:flex; gap:var(--space-2)">
57
+ <button class="btn btn-secondary ${filter === 'all' ? 'active' : ''}" data-filter="all">All</button>
58
+ <button class="btn btn-secondary ${filter === 'pending' ? 'active' : ''}" data-filter="pending">Pending</button>
59
+ <button class="btn btn-secondary ${filter === 'done' ? 'active' : ''}" data-filter="done">Done</button>
60
+ </div>
61
+ </div>
62
+ ${buildTaskList()}
63
+ `;
64
+
65
+ // Bind filter buttons
66
+ screen.querySelectorAll('[data-filter]').forEach(btn => {
67
+ btn.addEventListener('click', () => {
68
+ filter = btn.dataset.filter;
69
+ render();
70
+ });
71
+ });
72
+
73
+ // Bind task rows → navigate to detail
74
+ screen.querySelectorAll('.task-row').forEach(row => {
75
+ function goDetail() {
76
+ window.location.hash = `#/detail?id=${row.dataset.id}`;
77
+ }
78
+ row.addEventListener('click', goDetail);
79
+ row.addEventListener('keydown', e => {
80
+ if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); goDetail(); }
81
+ });
82
+ });
83
+ }
84
+
85
+ render();
86
+ return screen;
87
+ }
@@ -0,0 +1,342 @@
1
+ /* ── Global reset & base ─────────────────────────────────────────────────── */
2
+
3
+ *, *::before, *::after {
4
+ box-sizing: border-box;
5
+ margin: 0;
6
+ padding: 0;
7
+ }
8
+
9
+ body {
10
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
11
+ font-size: var(--font-size-body);
12
+ line-height: var(--line-height-normal);
13
+ background-color: var(--color-bg);
14
+ color: var(--color-text);
15
+ min-height: 100vh;
16
+ }
17
+
18
+ /* ── Nav bar ─────────────────────────────────────────────────────────────── */
19
+
20
+ #nav-bar {
21
+ display: flex;
22
+ align-items: center;
23
+ gap: var(--space-4);
24
+ padding: 0 var(--space-6);
25
+ height: var(--nav-height);
26
+ background-color: var(--color-surface);
27
+ border-bottom: 1px solid var(--color-border);
28
+ position: sticky;
29
+ top: 0;
30
+ z-index: 10;
31
+ }
32
+
33
+ .nav-link {
34
+ font-size: var(--font-size-body);
35
+ font-weight: var(--font-weight-medium);
36
+ color: var(--color-text-secondary);
37
+ text-decoration: none;
38
+ padding: var(--space-1) var(--space-2);
39
+ border-radius: var(--radius-sm);
40
+ transition: color 0.15s, background-color 0.15s;
41
+ }
42
+
43
+ .nav-link:hover {
44
+ color: var(--color-primary);
45
+ background-color: var(--color-surface-alt);
46
+ }
47
+
48
+ .nav-link.active {
49
+ color: var(--color-primary);
50
+ font-weight: var(--font-weight-bold);
51
+ }
52
+
53
+ /* ── Screen root ─────────────────────────────────────────────────────────── */
54
+
55
+ #screen-root {
56
+ padding: var(--space-6);
57
+ max-width: 640px;
58
+ margin: 0 auto;
59
+ }
60
+
61
+ /* ── Screen transition (simple fade) ────────────────────────────────────── */
62
+
63
+ .screen {
64
+ animation: fadeIn 0.2s ease;
65
+ }
66
+
67
+ @keyframes fadeIn {
68
+ from { opacity: 0; transform: translateY(4px); }
69
+ to { opacity: 1; transform: translateY(0); }
70
+ }
71
+
72
+ /* ── Home screen ─────────────────────────────────────────────────────────── */
73
+
74
+ .home-hero {
75
+ display: flex;
76
+ flex-direction: column;
77
+ gap: var(--space-3);
78
+ margin-bottom: var(--space-8);
79
+ }
80
+
81
+ .home-hero h1 {
82
+ font-size: var(--font-size-title);
83
+ font-weight: var(--font-weight-bold);
84
+ line-height: var(--line-height-tight);
85
+ }
86
+
87
+ .home-hero p {
88
+ color: var(--color-text-secondary);
89
+ font-size: var(--font-size-body);
90
+ }
91
+
92
+ .home-stats {
93
+ display: flex;
94
+ gap: var(--space-4);
95
+ flex-wrap: wrap;
96
+ margin-bottom: var(--space-8);
97
+ }
98
+
99
+ .stat-card {
100
+ flex: 1 1 120px;
101
+ background-color: var(--color-surface);
102
+ border-radius: var(--radius-md);
103
+ padding: var(--space-4);
104
+ box-shadow: var(--shadow-card);
105
+ display: flex;
106
+ flex-direction: column;
107
+ gap: var(--space-1);
108
+ }
109
+
110
+ .stat-card .stat-value {
111
+ font-size: var(--font-size-title);
112
+ font-weight: var(--font-weight-bold);
113
+ color: var(--color-primary);
114
+ }
115
+
116
+ .stat-card .stat-label {
117
+ font-size: var(--font-size-caption);
118
+ color: var(--color-text-secondary);
119
+ text-transform: uppercase;
120
+ letter-spacing: 0.04em;
121
+ }
122
+
123
+ .home-cta {
124
+ display: flex;
125
+ gap: var(--space-3);
126
+ flex-wrap: wrap;
127
+ }
128
+
129
+ /* ── Buttons ─────────────────────────────────────────────────────────────── */
130
+
131
+ .btn {
132
+ display: inline-flex;
133
+ align-items: center;
134
+ justify-content: center;
135
+ padding: var(--space-3) var(--space-5);
136
+ border-radius: var(--radius-md);
137
+ font-size: var(--font-size-body);
138
+ font-weight: var(--font-weight-medium);
139
+ cursor: pointer;
140
+ border: none;
141
+ text-decoration: none;
142
+ transition: opacity 0.15s, transform 0.1s;
143
+ }
144
+
145
+ .btn:active { transform: scale(0.97); }
146
+
147
+ .btn-primary {
148
+ background-color: var(--color-primary);
149
+ color: #ffffff;
150
+ }
151
+
152
+ .btn-primary:hover { background-color: var(--color-primary-dark); }
153
+
154
+ .btn-secondary {
155
+ background-color: var(--color-surface-alt);
156
+ color: var(--color-text);
157
+ border: 1px solid var(--color-border);
158
+ }
159
+
160
+ .btn-secondary:hover { background-color: var(--color-border); }
161
+
162
+ /* ── List screen ─────────────────────────────────────────────────────────── */
163
+
164
+ .list-header {
165
+ display: flex;
166
+ align-items: center;
167
+ justify-content: space-between;
168
+ margin-bottom: var(--space-6);
169
+ }
170
+
171
+ .list-header h2 {
172
+ font-size: var(--font-size-heading);
173
+ font-weight: var(--font-weight-bold);
174
+ }
175
+
176
+ .task-list {
177
+ display: flex;
178
+ flex-direction: column;
179
+ gap: var(--space-3);
180
+ list-style: none;
181
+ }
182
+
183
+ .task-row {
184
+ display: flex;
185
+ align-items: center;
186
+ gap: var(--space-3);
187
+ background-color: var(--color-surface);
188
+ border-radius: var(--radius-md);
189
+ padding: var(--space-4);
190
+ box-shadow: var(--shadow-card);
191
+ cursor: pointer;
192
+ transition: transform 0.1s, box-shadow 0.1s;
193
+ }
194
+
195
+ .task-row:hover {
196
+ transform: translateY(-1px);
197
+ box-shadow: 0 4px 14px rgba(0, 0, 0, 0.12);
198
+ }
199
+
200
+ .task-dot {
201
+ width: 10px;
202
+ height: 10px;
203
+ border-radius: var(--radius-full);
204
+ flex-shrink: 0;
205
+ }
206
+
207
+ .task-dot.priority-high { background-color: var(--color-danger); }
208
+ .task-dot.priority-medium { background-color: #ff9f0a; }
209
+ .task-dot.priority-low { background-color: var(--color-success); }
210
+
211
+ .task-info {
212
+ flex: 1;
213
+ display: flex;
214
+ flex-direction: column;
215
+ gap: var(--space-1);
216
+ }
217
+
218
+ .task-title {
219
+ font-size: var(--font-size-body);
220
+ font-weight: var(--font-weight-medium);
221
+ }
222
+
223
+ .task-meta {
224
+ font-size: var(--font-size-caption);
225
+ color: var(--color-text-secondary);
226
+ }
227
+
228
+ .task-done .task-title {
229
+ text-decoration: line-through;
230
+ color: var(--color-text-secondary);
231
+ }
232
+
233
+ .task-badge {
234
+ font-size: var(--font-size-caption);
235
+ font-weight: var(--font-weight-medium);
236
+ padding: var(--space-1) var(--space-2);
237
+ border-radius: var(--radius-full);
238
+ background-color: var(--color-surface-alt);
239
+ color: var(--color-text-secondary);
240
+ white-space: nowrap;
241
+ }
242
+
243
+ /* ── Detail screen ───────────────────────────────────────────────────────── */
244
+
245
+ .detail-back {
246
+ display: inline-flex;
247
+ align-items: center;
248
+ gap: var(--space-2);
249
+ color: var(--color-primary);
250
+ font-size: var(--font-size-body);
251
+ text-decoration: none;
252
+ margin-bottom: var(--space-6);
253
+ }
254
+
255
+ .detail-card {
256
+ background-color: var(--color-surface);
257
+ border-radius: var(--radius-lg);
258
+ overflow: hidden;
259
+ box-shadow: var(--shadow-card);
260
+ margin-bottom: var(--space-6);
261
+ }
262
+
263
+ .detail-image-placeholder {
264
+ width: 100%;
265
+ height: 180px;
266
+ background-color: var(--color-surface-alt);
267
+ display: flex;
268
+ align-items: center;
269
+ justify-content: center;
270
+ color: var(--color-text-secondary);
271
+ font-size: var(--font-size-caption);
272
+ }
273
+
274
+ .detail-body {
275
+ padding: var(--space-5);
276
+ display: flex;
277
+ flex-direction: column;
278
+ gap: var(--space-3);
279
+ }
280
+
281
+ .detail-title {
282
+ font-size: var(--font-size-heading);
283
+ font-weight: var(--font-weight-bold);
284
+ }
285
+
286
+ .detail-desc {
287
+ color: var(--color-text-secondary);
288
+ line-height: var(--line-height-normal);
289
+ }
290
+
291
+ .detail-meta-row {
292
+ display: flex;
293
+ gap: var(--space-3);
294
+ flex-wrap: wrap;
295
+ }
296
+
297
+ .detail-chip {
298
+ font-size: var(--font-size-caption);
299
+ font-weight: var(--font-weight-medium);
300
+ padding: var(--space-1) var(--space-3);
301
+ border-radius: var(--radius-full);
302
+ background-color: var(--color-surface-alt);
303
+ color: var(--color-text);
304
+ }
305
+
306
+ /* ── Canvas sparkline section ────────────────────────────────────────────── */
307
+
308
+ .sparkline-section {
309
+ margin-bottom: var(--space-6);
310
+ }
311
+
312
+ .sparkline-section h3 {
313
+ font-size: var(--font-size-body);
314
+ font-weight: var(--font-weight-medium);
315
+ margin-bottom: var(--space-3);
316
+ color: var(--color-text-secondary);
317
+ }
318
+
319
+ /* TIER3: canvas custom drawing */
320
+ #sparkline-canvas {
321
+ display: block;
322
+ width: 100%;
323
+ height: 80px;
324
+ border-radius: var(--radius-md);
325
+ background-color: var(--color-surface);
326
+ border: 1px solid var(--color-border);
327
+ }
328
+
329
+ /* ── Empty state ─────────────────────────────────────────────────────────── */
330
+
331
+ .empty-state {
332
+ text-align: center;
333
+ padding: var(--space-12) var(--space-6);
334
+ color: var(--color-text-secondary);
335
+ display: flex;
336
+ flex-direction: column;
337
+ gap: var(--space-3);
338
+ }
339
+
340
+ .empty-state p {
341
+ font-size: var(--font-size-body);
342
+ }