claudecode-omc 5.11.0 → 5.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (447) hide show
  1. package/bundled/manifest.json +3 -3
  2. package/bundled/upstream/anthropic-skills/.omc-source/bundle.json +2 -2
  3. package/bundled/upstream/anthropic-skills/.omc-source/provenance.json +394 -390
  4. package/bundled/upstream/anthropic-skills/skills/claude-api/SKILL.md +60 -29
  5. package/bundled/upstream/anthropic-skills/skills/claude-api/csharp/claude-api.md +46 -1
  6. package/bundled/upstream/anthropic-skills/skills/claude-api/curl/examples.md +2 -2
  7. package/bundled/upstream/anthropic-skills/skills/claude-api/curl/managed-agents.md +3 -1
  8. package/bundled/upstream/anthropic-skills/skills/claude-api/go/claude-api.md +23 -4
  9. package/bundled/upstream/anthropic-skills/skills/claude-api/java/claude-api.md +32 -3
  10. package/bundled/upstream/anthropic-skills/skills/claude-api/php/claude-api.md +27 -0
  11. package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/README.md +123 -7
  12. package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/batches.md +13 -0
  13. package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/files-api.md +7 -2
  14. package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/streaming.md +18 -1
  15. package/bundled/upstream/anthropic-skills/skills/claude-api/python/managed-agents/README.md +9 -7
  16. package/bundled/upstream/anthropic-skills/skills/claude-api/ruby/claude-api.md +27 -0
  17. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/agent-design.md +1 -1
  18. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/anthropic-cli.md +246 -0
  19. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/claude-platform-on-aws.md +59 -0
  20. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/error-codes.md +24 -4
  21. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/live-sources.md +8 -0
  22. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-api-reference.md +48 -4
  23. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-client-patterns.md +3 -1
  24. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-core.md +15 -1
  25. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-environments.md +10 -6
  26. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-events.md +25 -0
  27. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-onboarding.md +48 -18
  28. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-overview.md +8 -5
  29. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-scheduled-deployments.md +144 -0
  30. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-self-hosted-sandboxes.md +2 -1
  31. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-tools.md +46 -9
  32. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/model-migration.md +259 -3
  33. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/models.md +17 -9
  34. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/prompt-caching.md +55 -3
  35. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/token-counting.md +56 -0
  36. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/tool-use-concepts.md +22 -2
  37. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/README.md +45 -6
  38. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/streaming.md +1 -1
  39. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/managed-agents/README.md +10 -12
  40. package/bundled/upstream/anthropic-skills/skills/frontend-design/SKILL.md +39 -26
  41. package/bundled/upstream/ecc/.omc-source/bundle.json +2 -2
  42. package/bundled/upstream/ecc/.omc-source/manifests/.claude-plugin/marketplace.json +2 -2
  43. package/bundled/upstream/ecc/.omc-source/provenance.json +602 -550
  44. package/bundled/upstream/ecc/agents/agent-evaluator.md +206 -0
  45. package/bundled/upstream/ecc/agents/performance-optimizer.md +9 -9
  46. package/bundled/upstream/ecc/agents/php-reviewer.md +109 -0
  47. package/bundled/upstream/ecc/agents/spec-miner.md +217 -0
  48. package/bundled/upstream/ecc/agents/vue-reviewer.md +206 -0
  49. package/bundled/upstream/ecc/commands/cost-report.md +58 -84
  50. package/bundled/upstream/ecc/commands/epic-claim.md +26 -0
  51. package/bundled/upstream/ecc/commands/epic-decompose.md +23 -0
  52. package/bundled/upstream/ecc/commands/epic-publish.md +23 -0
  53. package/bundled/upstream/ecc/commands/epic-review.md +23 -0
  54. package/bundled/upstream/ecc/commands/epic-sync.md +23 -0
  55. package/bundled/upstream/ecc/commands/epic-unblock.md +22 -0
  56. package/bundled/upstream/ecc/commands/epic-validate.md +22 -0
  57. package/bundled/upstream/ecc/commands/instinct-status.md +8 -8
  58. package/bundled/upstream/ecc/commands/multi-backend.md +2 -0
  59. package/bundled/upstream/ecc/commands/multi-execute.md +2 -0
  60. package/bundled/upstream/ecc/commands/multi-frontend.md +2 -0
  61. package/bundled/upstream/ecc/commands/multi-plan.md +2 -0
  62. package/bundled/upstream/ecc/commands/multi-workflow.md +2 -0
  63. package/bundled/upstream/ecc/commands/orch-add-feature.md +36 -0
  64. package/bundled/upstream/ecc/commands/orch-build-mvp.md +36 -0
  65. package/bundled/upstream/ecc/commands/orch-change-feature.md +38 -0
  66. package/bundled/upstream/ecc/commands/orch-fix-defect.md +38 -0
  67. package/bundled/upstream/ecc/commands/orch-refine-code.md +39 -0
  68. package/bundled/upstream/ecc/commands/quality-gate.md +34 -16
  69. package/bundled/upstream/ecc/commands/vue-review.md +174 -0
  70. package/bundled/upstream/ecc/skills/accessibility/SKILL.md +2 -1
  71. package/bundled/upstream/ecc/skills/agent-architecture-audit/SKILL.md +2 -1
  72. package/bundled/upstream/ecc/skills/agent-eval/SKILL.md +2 -1
  73. package/bundled/upstream/ecc/skills/agent-harness-construction/SKILL.md +2 -1
  74. package/bundled/upstream/ecc/skills/agent-introspection-debugging/SKILL.md +2 -1
  75. package/bundled/upstream/ecc/skills/agent-payment-x402/SKILL.md +2 -1
  76. package/bundled/upstream/ecc/skills/agent-self-evaluation/SKILL.md +182 -0
  77. package/bundled/upstream/ecc/skills/agent-self-evaluation/examples/high-score-example.md +87 -0
  78. package/bundled/upstream/ecc/skills/agent-self-evaluation/examples/low-score-example.md +86 -0
  79. package/bundled/upstream/ecc/skills/agent-self-evaluation/references/evaluation-criteria.md +71 -0
  80. package/bundled/upstream/ecc/skills/agent-self-evaluation/references/hook-integration.md +64 -0
  81. package/bundled/upstream/ecc/skills/agent-self-evaluation/scripts/evaluate.py +408 -0
  82. package/bundled/upstream/ecc/skills/agent-self-evaluation/templates/evaluation-report.md +86 -0
  83. package/bundled/upstream/ecc/skills/agent-sort/SKILL.md +2 -1
  84. package/bundled/upstream/ecc/skills/agentic-engineering/SKILL.md +2 -1
  85. package/bundled/upstream/ecc/skills/agentic-os/SKILL.md +2 -1
  86. package/bundled/upstream/ecc/skills/ai-first-engineering/SKILL.md +2 -1
  87. package/bundled/upstream/ecc/skills/ai-regression-testing/SKILL.md +2 -1
  88. package/bundled/upstream/ecc/skills/android-clean-architecture/SKILL.md +2 -1
  89. package/bundled/upstream/ecc/skills/angular-developer/SKILL.md +2 -1
  90. package/bundled/upstream/ecc/skills/api-connector-builder/SKILL.md +2 -1
  91. package/bundled/upstream/ecc/skills/api-design/SKILL.md +2 -1
  92. package/bundled/upstream/ecc/skills/architecture-decision-records/SKILL.md +2 -1
  93. package/bundled/upstream/ecc/skills/article-writing/SKILL.md +2 -1
  94. package/bundled/upstream/ecc/skills/automation-audit-ops/SKILL.md +2 -1
  95. package/bundled/upstream/ecc/skills/autonomous-agent-harness/SKILL.md +2 -1
  96. package/bundled/upstream/ecc/skills/autonomous-loops/SKILL.md +2 -1
  97. package/bundled/upstream/ecc/skills/backend-patterns/SKILL.md +2 -1
  98. package/bundled/upstream/ecc/skills/benchmark/SKILL.md +2 -1
  99. package/bundled/upstream/ecc/skills/benchmark-methodology/SKILL.md +190 -0
  100. package/bundled/upstream/ecc/skills/benchmark-optimization-loop/SKILL.md +2 -1
  101. package/bundled/upstream/ecc/skills/blender-motion-state-inspection/SKILL.md +2 -1
  102. package/bundled/upstream/ecc/skills/blueprint/SKILL.md +2 -1
  103. package/bundled/upstream/ecc/skills/brand-discovery/SKILL.md +145 -0
  104. package/bundled/upstream/ecc/skills/brand-discovery/references/10_purpose-why.md +40 -0
  105. package/bundled/upstream/ecc/skills/brand-discovery/references/20_positioning.md +44 -0
  106. package/bundled/upstream/ecc/skills/brand-discovery/references/30_audience-niche.md +52 -0
  107. package/bundled/upstream/ecc/skills/brand-discovery/references/40_personality-archetype.md +57 -0
  108. package/bundled/upstream/ecc/skills/brand-discovery/references/50_voice-tone.md +59 -0
  109. package/bundled/upstream/ecc/skills/brand-discovery/references/60_narrative-story.md +50 -0
  110. package/bundled/upstream/ecc/skills/brand-discovery/references/70_founder-tension.md +49 -0
  111. package/bundled/upstream/ecc/skills/brand-discovery/references/90_SYNTHESIS.md +133 -0
  112. package/bundled/upstream/ecc/skills/brand-voice/SKILL.md +2 -1
  113. package/bundled/upstream/ecc/skills/browser-qa/SKILL.md +22 -4
  114. package/bundled/upstream/ecc/skills/bun-runtime/SKILL.md +2 -1
  115. package/bundled/upstream/ecc/skills/canary-watch/SKILL.md +2 -1
  116. package/bundled/upstream/ecc/skills/carrier-relationship-management/SKILL.md +1 -1
  117. package/bundled/upstream/ecc/skills/cisco-ios-patterns/SKILL.md +2 -1
  118. package/bundled/upstream/ecc/skills/ck/SKILL.md +2 -1
  119. package/bundled/upstream/ecc/skills/claude-devfleet/SKILL.md +11 -2
  120. package/bundled/upstream/ecc/skills/click-path-audit/SKILL.md +2 -1
  121. package/bundled/upstream/ecc/skills/clickhouse-io/SKILL.md +2 -1
  122. package/bundled/upstream/ecc/skills/code-tour/SKILL.md +2 -1
  123. package/bundled/upstream/ecc/skills/codebase-onboarding/SKILL.md +2 -1
  124. package/bundled/upstream/ecc/skills/codehealth-mcp/SKILL.md +167 -0
  125. package/bundled/upstream/ecc/skills/coding-standards/SKILL.md +4 -2
  126. package/bundled/upstream/ecc/skills/competitive-platform-analysis/SKILL.md +214 -0
  127. package/bundled/upstream/ecc/skills/competitive-report-structure/SKILL.md +162 -0
  128. package/bundled/upstream/ecc/skills/compose-multiplatform-patterns/SKILL.md +2 -1
  129. package/bundled/upstream/ecc/skills/config-gc/SKILL.md +120 -0
  130. package/bundled/upstream/ecc/skills/configure-ecc/SKILL.md +2 -1
  131. package/bundled/upstream/ecc/skills/connections-optimizer/SKILL.md +2 -1
  132. package/bundled/upstream/ecc/skills/content-engine/SKILL.md +2 -1
  133. package/bundled/upstream/ecc/skills/content-hash-cache-pattern/SKILL.md +2 -1
  134. package/bundled/upstream/ecc/skills/context-budget/SKILL.md +2 -1
  135. package/bundled/upstream/ecc/skills/continuous-agent-loop/SKILL.md +2 -1
  136. package/bundled/upstream/ecc/skills/continuous-learning/SKILL.md +2 -1
  137. package/bundled/upstream/ecc/skills/continuous-learning-v2/SKILL.md +2 -1
  138. package/bundled/upstream/ecc/skills/continuous-learning-v2/agents/observer-loop.sh +14 -1
  139. package/bundled/upstream/ecc/skills/continuous-learning-v2/hooks/observe.sh +31 -7
  140. package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/instinct-cli.py +90 -2
  141. package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/test_parse_instinct.py +27 -0
  142. package/bundled/upstream/ecc/skills/cost-aware-llm-pipeline/SKILL.md +2 -1
  143. package/bundled/upstream/ecc/skills/cost-tracking/SKILL.md +58 -108
  144. package/bundled/upstream/ecc/skills/council/SKILL.md +2 -1
  145. package/bundled/upstream/ecc/skills/cpp-coding-standards/SKILL.md +2 -1
  146. package/bundled/upstream/ecc/skills/cpp-testing/SKILL.md +2 -1
  147. package/bundled/upstream/ecc/skills/crosspost/SKILL.md +2 -1
  148. package/bundled/upstream/ecc/skills/csharp-testing/SKILL.md +2 -1
  149. package/bundled/upstream/ecc/skills/customer-billing-ops/SKILL.md +2 -1
  150. package/bundled/upstream/ecc/skills/customs-trade-compliance/SKILL.md +1 -1
  151. package/bundled/upstream/ecc/skills/dart-flutter-patterns/SKILL.md +2 -1
  152. package/bundled/upstream/ecc/skills/dashboard-builder/SKILL.md +2 -1
  153. package/bundled/upstream/ecc/skills/data-scraper-agent/SKILL.md +2 -1
  154. package/bundled/upstream/ecc/skills/data-throughput-accelerator/SKILL.md +2 -1
  155. package/bundled/upstream/ecc/skills/database-migrations/SKILL.md +2 -1
  156. package/bundled/upstream/ecc/skills/deep-research/SKILL.md +2 -1
  157. package/bundled/upstream/ecc/skills/defi-amm-security/SKILL.md +2 -1
  158. package/bundled/upstream/ecc/skills/deployment-patterns/SKILL.md +2 -1
  159. package/bundled/upstream/ecc/skills/design-system/SKILL.md +2 -1
  160. package/bundled/upstream/ecc/skills/django-celery/SKILL.md +3 -2
  161. package/bundled/upstream/ecc/skills/django-patterns/SKILL.md +2 -1
  162. package/bundled/upstream/ecc/skills/django-security/SKILL.md +2 -1
  163. package/bundled/upstream/ecc/skills/django-tdd/SKILL.md +2 -1
  164. package/bundled/upstream/ecc/skills/django-verification/SKILL.md +2 -1
  165. package/bundled/upstream/ecc/skills/dmux-workflows/SKILL.md +2 -1
  166. package/bundled/upstream/ecc/skills/docker-patterns/SKILL.md +2 -1
  167. package/bundled/upstream/ecc/skills/documentation-lookup/SKILL.md +2 -1
  168. package/bundled/upstream/ecc/skills/dotnet-patterns/SKILL.md +2 -1
  169. package/bundled/upstream/ecc/skills/dynamic-workflow-mode/SKILL.md +2 -1
  170. package/bundled/upstream/ecc/skills/e2e-testing/SKILL.md +2 -1
  171. package/bundled/upstream/ecc/skills/ecc-guide/SKILL.md +2 -1
  172. package/bundled/upstream/ecc/skills/ecc-tools-cost-audit/SKILL.md +2 -1
  173. package/bundled/upstream/ecc/skills/email-ops/SKILL.md +2 -1
  174. package/bundled/upstream/ecc/skills/energy-procurement/SKILL.md +1 -1
  175. package/bundled/upstream/ecc/skills/enterprise-agent-ops/SKILL.md +2 -1
  176. package/bundled/upstream/ecc/skills/error-handling/SKILL.md +2 -1
  177. package/bundled/upstream/ecc/skills/eval-harness/SKILL.md +2 -1
  178. package/bundled/upstream/ecc/skills/evm-token-decimals/SKILL.md +2 -1
  179. package/bundled/upstream/ecc/skills/exa-search/SKILL.md +2 -1
  180. package/bundled/upstream/ecc/skills/fal-ai-media/SKILL.md +2 -1
  181. package/bundled/upstream/ecc/skills/fastapi-patterns/SKILL.md +375 -188
  182. package/bundled/upstream/ecc/skills/finance-billing-ops/SKILL.md +2 -1
  183. package/bundled/upstream/ecc/skills/flox-environments/SKILL.md +3 -2
  184. package/bundled/upstream/ecc/skills/flutter-dart-code-review/SKILL.md +2 -1
  185. package/bundled/upstream/ecc/skills/frontend-a11y/SKILL.md +3 -3
  186. package/bundled/upstream/ecc/skills/frontend-design-direction/SKILL.md +2 -1
  187. package/bundled/upstream/ecc/skills/frontend-patterns/SKILL.md +23 -8
  188. package/bundled/upstream/ecc/skills/frontend-slides/SKILL.md +2 -1
  189. package/bundled/upstream/ecc/skills/frontend-slides/scripts/export-pdf.sh +1 -1
  190. package/bundled/upstream/ecc/skills/fsharp-testing/SKILL.md +2 -1
  191. package/bundled/upstream/ecc/skills/gan-style-harness/SKILL.md +2 -1
  192. package/bundled/upstream/ecc/skills/gateguard/SKILL.md +9 -1
  193. package/bundled/upstream/ecc/skills/generating-python-installer/SKILL.md +820 -0
  194. package/bundled/upstream/ecc/skills/git-workflow/SKILL.md +2 -1
  195. package/bundled/upstream/ecc/skills/github-ops/SKILL.md +2 -1
  196. package/bundled/upstream/ecc/skills/golang-patterns/SKILL.md +2 -1
  197. package/bundled/upstream/ecc/skills/golang-testing/SKILL.md +2 -1
  198. package/bundled/upstream/ecc/skills/google-workspace-ops/SKILL.md +2 -1
  199. package/bundled/upstream/ecc/skills/healthcare-cdss-patterns/SKILL.md +2 -1
  200. package/bundled/upstream/ecc/skills/healthcare-emr-patterns/SKILL.md +2 -1
  201. package/bundled/upstream/ecc/skills/healthcare-eval-harness/SKILL.md +2 -1
  202. package/bundled/upstream/ecc/skills/healthcare-phi-compliance/SKILL.md +2 -1
  203. package/bundled/upstream/ecc/skills/hermes-imports/SKILL.md +2 -1
  204. package/bundled/upstream/ecc/skills/hexagonal-architecture/SKILL.md +2 -1
  205. package/bundled/upstream/ecc/skills/hipaa-compliance/SKILL.md +2 -1
  206. package/bundled/upstream/ecc/skills/homelab-network-readiness/SKILL.md +2 -1
  207. package/bundled/upstream/ecc/skills/homelab-network-setup/SKILL.md +2 -1
  208. package/bundled/upstream/ecc/skills/homelab-pihole-dns/SKILL.md +10 -9
  209. package/bundled/upstream/ecc/skills/homelab-vlan-segmentation/SKILL.md +2 -1
  210. package/bundled/upstream/ecc/skills/homelab-wireguard-vpn/SKILL.md +4 -3
  211. package/bundled/upstream/ecc/skills/inherit-legacy-style/SKILL.md +157 -0
  212. package/bundled/upstream/ecc/skills/intent-driven-development/SKILL.md +360 -0
  213. package/bundled/upstream/ecc/skills/inventory-demand-planning/SKILL.md +1 -1
  214. package/bundled/upstream/ecc/skills/investor-materials/SKILL.md +2 -1
  215. package/bundled/upstream/ecc/skills/investor-outreach/SKILL.md +2 -1
  216. package/bundled/upstream/ecc/skills/ios-icon-gen/SKILL.md +2 -1
  217. package/bundled/upstream/ecc/skills/iterative-retrieval/SKILL.md +2 -1
  218. package/bundled/upstream/ecc/skills/ito-basket-compare/SKILL.md +2 -1
  219. package/bundled/upstream/ecc/skills/ito-data-atlas-agent/SKILL.md +2 -1
  220. package/bundled/upstream/ecc/skills/ito-market-intelligence/SKILL.md +2 -1
  221. package/bundled/upstream/ecc/skills/ito-trade-planner/SKILL.md +2 -1
  222. package/bundled/upstream/ecc/skills/java-coding-standards/SKILL.md +2 -1
  223. package/bundled/upstream/ecc/skills/jira-integration/SKILL.md +17 -7
  224. package/bundled/upstream/ecc/skills/jpa-patterns/SKILL.md +2 -1
  225. package/bundled/upstream/ecc/skills/knowledge-ops/SKILL.md +2 -1
  226. package/bundled/upstream/ecc/skills/kotlin-coroutines-flows/SKILL.md +2 -1
  227. package/bundled/upstream/ecc/skills/kotlin-exposed-patterns/SKILL.md +2 -1
  228. package/bundled/upstream/ecc/skills/kotlin-ktor-patterns/SKILL.md +2 -1
  229. package/bundled/upstream/ecc/skills/kotlin-patterns/SKILL.md +2 -1
  230. package/bundled/upstream/ecc/skills/kotlin-testing/SKILL.md +2 -1
  231. package/bundled/upstream/ecc/skills/kubernetes-patterns/SKILL.md +756 -0
  232. package/bundled/upstream/ecc/skills/laravel-patterns/SKILL.md +2 -1
  233. package/bundled/upstream/ecc/skills/laravel-plugin-discovery/SKILL.md +2 -1
  234. package/bundled/upstream/ecc/skills/laravel-security/SKILL.md +826 -163
  235. package/bundled/upstream/ecc/skills/laravel-tdd/SKILL.md +541 -149
  236. package/bundled/upstream/ecc/skills/laravel-verification/SKILL.md +2 -1
  237. package/bundled/upstream/ecc/skills/latency-critical-systems/SKILL.md +2 -1
  238. package/bundled/upstream/ecc/skills/lead-intelligence/SKILL.md +2 -1
  239. package/bundled/upstream/ecc/skills/llm-trading-agent-security/SKILL.md +2 -1
  240. package/bundled/upstream/ecc/skills/logistics-exception-management/SKILL.md +1 -1
  241. package/bundled/upstream/ecc/skills/make-interfaces-feel-better/SKILL.md +2 -1
  242. package/bundled/upstream/ecc/skills/manim-video/SKILL.md +2 -1
  243. package/bundled/upstream/ecc/skills/market-research/SKILL.md +2 -1
  244. package/bundled/upstream/ecc/skills/marketing-campaign/SKILL.md +2 -1
  245. package/bundled/upstream/ecc/skills/mcp-server-patterns/SKILL.md +2 -1
  246. package/bundled/upstream/ecc/skills/messages-ops/SKILL.md +2 -1
  247. package/bundled/upstream/ecc/skills/ml-adoption-playbook/SKILL.md +57 -0
  248. package/bundled/upstream/ecc/skills/mle-workflow/SKILL.md +2 -1
  249. package/bundled/upstream/ecc/skills/motion-patterns/SKILL.md +1 -2
  250. package/bundled/upstream/ecc/skills/motion-ui/SKILL.md +2 -1
  251. package/bundled/upstream/ecc/skills/mysql-patterns/SKILL.md +2 -1
  252. package/bundled/upstream/ecc/skills/nanoclaw-repl/SKILL.md +2 -1
  253. package/bundled/upstream/ecc/skills/nestjs-patterns/SKILL.md +2 -1
  254. package/bundled/upstream/ecc/skills/netmiko-ssh-automation/SKILL.md +2 -1
  255. package/bundled/upstream/ecc/skills/network-bgp-diagnostics/SKILL.md +2 -1
  256. package/bundled/upstream/ecc/skills/network-config-validation/SKILL.md +2 -1
  257. package/bundled/upstream/ecc/skills/network-interface-health/SKILL.md +2 -1
  258. package/bundled/upstream/ecc/skills/nextjs-turbopack/SKILL.md +2 -1
  259. package/bundled/upstream/ecc/skills/nodejs-keccak256/SKILL.md +2 -1
  260. package/bundled/upstream/ecc/skills/nutrient-document-processing/SKILL.md +2 -1
  261. package/bundled/upstream/ecc/skills/nuxt4-patterns/SKILL.md +2 -1
  262. package/bundled/upstream/ecc/skills/openclaw-persona-forge/SKILL.md +2 -1
  263. package/bundled/upstream/ecc/skills/opensource-pipeline/SKILL.md +2 -1
  264. package/bundled/upstream/ecc/skills/orch-add-feature/SKILL.md +45 -0
  265. package/bundled/upstream/ecc/skills/orch-build-mvp/SKILL.md +49 -0
  266. package/bundled/upstream/ecc/skills/orch-change-feature/SKILL.md +43 -0
  267. package/bundled/upstream/ecc/skills/orch-fix-defect/SKILL.md +43 -0
  268. package/bundled/upstream/ecc/skills/orch-pipeline/SKILL.md +121 -0
  269. package/bundled/upstream/ecc/skills/orch-refine-code/SKILL.md +44 -0
  270. package/bundled/upstream/ecc/skills/parallel-execution-optimizer/SKILL.md +2 -1
  271. package/bundled/upstream/ecc/skills/perl-patterns/SKILL.md +2 -1
  272. package/bundled/upstream/ecc/skills/perl-security/SKILL.md +2 -1
  273. package/bundled/upstream/ecc/skills/perl-testing/SKILL.md +2 -1
  274. package/bundled/upstream/ecc/skills/plan-orchestrate/SKILL.md +2 -1
  275. package/bundled/upstream/ecc/skills/plankton-code-quality/SKILL.md +2 -1
  276. package/bundled/upstream/ecc/skills/postgres-patterns/SKILL.md +2 -1
  277. package/bundled/upstream/ecc/skills/prediction-market-oracle-research/SKILL.md +2 -1
  278. package/bundled/upstream/ecc/skills/prediction-market-risk-review/SKILL.md +2 -1
  279. package/bundled/upstream/ecc/skills/prisma-patterns/SKILL.md +2 -1
  280. package/bundled/upstream/ecc/skills/product-capability/SKILL.md +2 -1
  281. package/bundled/upstream/ecc/skills/product-lens/SKILL.md +2 -1
  282. package/bundled/upstream/ecc/skills/production-audit/SKILL.md +2 -1
  283. package/bundled/upstream/ecc/skills/production-scheduling/SKILL.md +1 -1
  284. package/bundled/upstream/ecc/skills/project-flow-ops/SKILL.md +2 -1
  285. package/bundled/upstream/ecc/skills/prompt-optimizer/SKILL.md +1 -1
  286. package/bundled/upstream/ecc/skills/python-patterns/SKILL.md +4 -3
  287. package/bundled/upstream/ecc/skills/python-testing/SKILL.md +2 -1
  288. package/bundled/upstream/ecc/skills/pytorch-patterns/SKILL.md +2 -1
  289. package/bundled/upstream/ecc/skills/quality-nonconformance/SKILL.md +1 -1
  290. package/bundled/upstream/ecc/skills/quarkus-patterns/SKILL.md +51 -50
  291. package/bundled/upstream/ecc/skills/quarkus-security/SKILL.md +25 -24
  292. package/bundled/upstream/ecc/skills/quarkus-tdd/SKILL.md +73 -72
  293. package/bundled/upstream/ecc/skills/quarkus-verification/SKILL.md +8 -7
  294. package/bundled/upstream/ecc/skills/ralphinho-rfc-pipeline/SKILL.md +2 -1
  295. package/bundled/upstream/ecc/skills/react-patterns/SKILL.md +2 -1
  296. package/bundled/upstream/ecc/skills/react-performance/SKILL.md +2 -1
  297. package/bundled/upstream/ecc/skills/react-testing/SKILL.md +2 -1
  298. package/bundled/upstream/ecc/skills/recsys-pipeline-architect/SKILL.md +2 -1
  299. package/bundled/upstream/ecc/skills/recursive-decision-ledger/SKILL.md +2 -1
  300. package/bundled/upstream/ecc/skills/redis-patterns/SKILL.md +2 -1
  301. package/bundled/upstream/ecc/skills/regex-vs-llm-structured-text/SKILL.md +2 -1
  302. package/bundled/upstream/ecc/skills/repo-scan/SKILL.md +64 -63
  303. package/bundled/upstream/ecc/skills/research-ops/SKILL.md +2 -1
  304. package/bundled/upstream/ecc/skills/returns-reverse-logistics/SKILL.md +1 -1
  305. package/bundled/upstream/ecc/skills/rules-distill/SKILL.md +2 -1
  306. package/bundled/upstream/ecc/skills/rust-patterns/SKILL.md +2 -1
  307. package/bundled/upstream/ecc/skills/rust-testing/SKILL.md +2 -1
  308. package/bundled/upstream/ecc/skills/safety-guard/SKILL.md +2 -1
  309. package/bundled/upstream/ecc/skills/santa-method/SKILL.md +2 -1
  310. package/bundled/upstream/ecc/skills/scientific-db-pubmed-database/SKILL.md +2 -1
  311. package/bundled/upstream/ecc/skills/scientific-db-uspto-database/SKILL.md +2 -1
  312. package/bundled/upstream/ecc/skills/scientific-pkg-gget/SKILL.md +2 -1
  313. package/bundled/upstream/ecc/skills/scientific-thinking-literature-review/SKILL.md +2 -1
  314. package/bundled/upstream/ecc/skills/scientific-thinking-scholar-evaluation/SKILL.md +2 -1
  315. package/bundled/upstream/ecc/skills/search-first/SKILL.md +2 -1
  316. package/bundled/upstream/ecc/skills/security-bounty-hunter/SKILL.md +2 -1
  317. package/bundled/upstream/ecc/skills/security-review/SKILL.md +2 -1
  318. package/bundled/upstream/ecc/skills/security-scan/SKILL.md +2 -1
  319. package/bundled/upstream/ecc/skills/seo/SKILL.md +2 -1
  320. package/bundled/upstream/ecc/skills/skill-comply/SKILL.md +2 -1
  321. package/bundled/upstream/ecc/skills/skill-comply/scripts/runner.py +8 -0
  322. package/bundled/upstream/ecc/skills/skill-scout/SKILL.md +2 -1
  323. package/bundled/upstream/ecc/skills/skill-stocktake/SKILL.md +2 -1
  324. package/bundled/upstream/ecc/skills/social-graph-ranker/SKILL.md +2 -1
  325. package/bundled/upstream/ecc/skills/social-publisher/SKILL.md +17 -2
  326. package/bundled/upstream/ecc/skills/springboot-patterns/SKILL.md +2 -1
  327. package/bundled/upstream/ecc/skills/springboot-security/SKILL.md +2 -1
  328. package/bundled/upstream/ecc/skills/springboot-tdd/SKILL.md +2 -1
  329. package/bundled/upstream/ecc/skills/springboot-verification/SKILL.md +2 -1
  330. package/bundled/upstream/ecc/skills/strategic-compact/SKILL.md +10 -5
  331. package/bundled/upstream/ecc/skills/swift-actor-persistence/SKILL.md +2 -1
  332. package/bundled/upstream/ecc/skills/swift-protocol-di-testing/SKILL.md +2 -1
  333. package/bundled/upstream/ecc/skills/taste/SKILL.md +264 -0
  334. package/bundled/upstream/ecc/skills/taste/references/genre-taxonomy.md +87 -0
  335. package/bundled/upstream/ecc/skills/tdd-workflow/SKILL.md +64 -1
  336. package/bundled/upstream/ecc/skills/team-agent-orchestration/SKILL.md +2 -1
  337. package/bundled/upstream/ecc/skills/team-builder/SKILL.md +2 -1
  338. package/bundled/upstream/ecc/skills/terminal-ops/SKILL.md +2 -1
  339. package/bundled/upstream/ecc/skills/tinystruct-patterns/SKILL.md +77 -1
  340. package/bundled/upstream/ecc/skills/token-budget-advisor/SKILL.md +2 -1
  341. package/bundled/upstream/ecc/skills/ui-demo/SKILL.md +2 -1
  342. package/bundled/upstream/ecc/skills/ui-to-vue/SKILL.md +2 -1
  343. package/bundled/upstream/ecc/skills/uncloud/SKILL.md +2 -1
  344. package/bundled/upstream/ecc/skills/unified-notifications-ops/SKILL.md +2 -1
  345. package/bundled/upstream/ecc/skills/verification-loop/SKILL.md +2 -1
  346. package/bundled/upstream/ecc/skills/video-editing/SKILL.md +2 -1
  347. package/bundled/upstream/ecc/skills/videodb/SKILL.md +2 -1
  348. package/bundled/upstream/ecc/skills/vite-patterns/SKILL.md +2 -1
  349. package/bundled/upstream/ecc/skills/vue-patterns/SKILL.md +471 -0
  350. package/bundled/upstream/ecc/skills/windows-desktop-e2e/SKILL.md +9 -8
  351. package/bundled/upstream/ecc/skills/workspace-surface-audit/SKILL.md +2 -1
  352. package/bundled/upstream/ecc/skills/x-api/SKILL.md +2 -1
  353. package/bundled/upstream/impeccable/.omc-source/bundle.json +2 -2
  354. package/bundled/upstream/impeccable/.omc-source/provenance.json +30 -25
  355. package/bundled/upstream/impeccable/skills/impeccable/SKILL.md +2 -2
  356. package/bundled/upstream/impeccable/skills/impeccable/reference/hooks.md +10 -8
  357. package/bundled/upstream/impeccable/skills/impeccable/reference/live.md +1 -1
  358. package/bundled/upstream/impeccable/skills/impeccable/scripts/context.mjs +707 -26
  359. package/bundled/upstream/impeccable/skills/impeccable/scripts/detector/browser/injected/index.mjs +202 -0
  360. package/bundled/upstream/impeccable/skills/impeccable/scripts/detector/cli/main.mjs +57 -11
  361. package/bundled/upstream/impeccable/skills/impeccable/scripts/detector/design-system.mjs +750 -0
  362. package/bundled/upstream/impeccable/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +231 -0
  363. package/bundled/upstream/impeccable/skills/impeccable/scripts/detector/detect-antipatterns.mjs +7 -0
  364. package/bundled/upstream/impeccable/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +29 -4
  365. package/bundled/upstream/impeccable/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +20 -4
  366. package/bundled/upstream/impeccable/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +2 -0
  367. package/bundled/upstream/impeccable/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +27 -1
  368. package/bundled/upstream/impeccable/skills/impeccable/scripts/detector/registry/antipatterns.mjs +29 -0
  369. package/bundled/upstream/impeccable/skills/impeccable/scripts/detector/shared/inline-ignores.mjs +148 -0
  370. package/bundled/upstream/impeccable/skills/impeccable/scripts/hook-admin.mjs +135 -48
  371. package/bundled/upstream/impeccable/skills/impeccable/scripts/hook-before-edit.mjs +5 -2
  372. package/bundled/upstream/impeccable/skills/impeccable/scripts/hook-lib.mjs +375 -29
  373. package/bundled/upstream/impeccable/skills/impeccable/scripts/lib/design-parser.mjs +8 -1
  374. package/bundled/upstream/impeccable/skills/impeccable/scripts/lib/impeccable-config.mjs +638 -0
  375. package/bundled/upstream/impeccable/skills/impeccable/scripts/lib/impeccable-paths.mjs +37 -35
  376. package/bundled/upstream/impeccable/skills/impeccable/scripts/lib/target-args.mjs +42 -0
  377. package/bundled/upstream/impeccable/skills/impeccable/scripts/live-browser.js +159 -72
  378. package/bundled/upstream/impeccable/skills/impeccable/scripts/live-poll.mjs +16 -11
  379. package/bundled/upstream/impeccable/skills/impeccable/scripts/live-server.mjs +9 -8
  380. package/bundled/upstream/impeccable/skills/impeccable/scripts/live-target.mjs +30 -0
  381. package/bundled/upstream/impeccable/skills/impeccable/scripts/live-wrap.mjs +1 -1
  382. package/bundled/upstream/impeccable/skills/impeccable/scripts/live.mjs +72 -21
  383. package/bundled/upstream/oh-my-claudecode/.omc-source/bundle.json +2 -2
  384. package/bundled/upstream/oh-my-claudecode/.omc-source/provenance.json +103 -103
  385. package/bundled/upstream/oh-my-claudecode/agents/analyst.md +6 -0
  386. package/bundled/upstream/oh-my-claudecode/agents/architect.md +6 -0
  387. package/bundled/upstream/oh-my-claudecode/agents/code-reviewer.md +6 -0
  388. package/bundled/upstream/oh-my-claudecode/agents/critic.md +6 -0
  389. package/bundled/upstream/oh-my-claudecode/agents/debugger.md +6 -0
  390. package/bundled/upstream/oh-my-claudecode/agents/security-reviewer.md +6 -0
  391. package/bundled/upstream/oh-my-claudecode/agents/tracer.md +6 -0
  392. package/bundled/upstream/oh-my-claudecode/agents/verifier.md +7 -0
  393. package/bundled/upstream/oh-my-claudecode/hooks/hooks.json +9 -2
  394. package/bundled/upstream/oh-my-claudecode/skills/ask/SKILL.md +15 -4
  395. package/bundled/upstream/oh-my-claudecode/skills/autopilot/SKILL.md +30 -1
  396. package/bundled/upstream/oh-my-claudecode/skills/cancel/SKILL.md +29 -35
  397. package/bundled/upstream/oh-my-claudecode/skills/ccg/SKILL.md +20 -9
  398. package/bundled/upstream/oh-my-claudecode/skills/configure-notifications/SKILL.md +2 -2
  399. package/bundled/upstream/oh-my-claudecode/skills/omc-reference/SKILL.md +6 -4
  400. package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/02-configure.md +1 -1
  401. package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/03-integrations.md +2 -1
  402. package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/04-welcome.md +2 -2
  403. package/bundled/upstream/oh-my-claudecode/skills/omc-teams/SKILL.md +29 -18
  404. package/bundled/upstream/oh-my-claudecode/skills/team/SKILL.md +127 -165
  405. package/bundled/upstream/superpowers/.omc-source/bundle.json +2 -2
  406. package/bundled/upstream/superpowers/.omc-source/provenance.json +59 -52
  407. package/bundled/upstream/superpowers/hooks/hooks-codex.json +16 -0
  408. package/bundled/upstream/superpowers/hooks/session-start +4 -12
  409. package/bundled/upstream/superpowers/hooks/session-start-codex +26 -0
  410. package/bundled/upstream/superpowers/skills/brainstorming/SKILL.md +5 -10
  411. package/bundled/upstream/superpowers/skills/brainstorming/scripts/frame-template.html +25 -26
  412. package/bundled/upstream/superpowers/skills/brainstorming/scripts/helper.js +101 -22
  413. package/bundled/upstream/superpowers/skills/brainstorming/scripts/server.cjs +399 -30
  414. package/bundled/upstream/superpowers/skills/brainstorming/scripts/start-server.sh +70 -9
  415. package/bundled/upstream/superpowers/skills/brainstorming/scripts/stop-server.sh +66 -2
  416. package/bundled/upstream/superpowers/skills/brainstorming/spec-document-reviewer-prompt.md +1 -1
  417. package/bundled/upstream/superpowers/skills/brainstorming/visual-companion.md +33 -22
  418. package/bundled/upstream/superpowers/skills/dispatching-parallel-agents/SKILL.md +9 -6
  419. package/bundled/upstream/superpowers/skills/executing-plans/SKILL.md +2 -2
  420. package/bundled/upstream/superpowers/skills/finishing-a-development-branch/SKILL.md +2 -12
  421. package/bundled/upstream/superpowers/skills/receiving-code-review/SKILL.md +2 -2
  422. package/bundled/upstream/superpowers/skills/requesting-code-review/SKILL.md +2 -2
  423. package/bundled/upstream/superpowers/skills/requesting-code-review/code-reviewer.md +15 -11
  424. package/bundled/upstream/superpowers/skills/subagent-driven-development/SKILL.md +206 -67
  425. package/bundled/upstream/superpowers/skills/subagent-driven-development/implementer-prompt.md +30 -4
  426. package/bundled/upstream/superpowers/skills/subagent-driven-development/scripts/review-package +44 -0
  427. package/bundled/upstream/superpowers/skills/subagent-driven-development/scripts/sdd-workspace +22 -0
  428. package/bundled/upstream/superpowers/skills/subagent-driven-development/scripts/task-brief +40 -0
  429. package/bundled/upstream/superpowers/skills/subagent-driven-development/task-reviewer-prompt.md +188 -0
  430. package/bundled/upstream/superpowers/skills/systematic-debugging/SKILL.md +1 -1
  431. package/bundled/upstream/superpowers/skills/test-driven-development/SKILL.md +1 -1
  432. package/bundled/upstream/superpowers/skills/using-git-worktrees/SKILL.md +9 -22
  433. package/bundled/upstream/superpowers/skills/using-superpowers/SKILL.md +19 -15
  434. package/bundled/upstream/superpowers/skills/using-superpowers/references/antigravity-tools.md +96 -0
  435. package/bundled/upstream/superpowers/skills/using-superpowers/references/claude-code-tools.md +50 -0
  436. package/bundled/upstream/superpowers/skills/using-superpowers/references/codex-tools.md +25 -12
  437. package/bundled/upstream/superpowers/skills/using-superpowers/references/copilot-tools.md +27 -20
  438. package/bundled/upstream/superpowers/skills/using-superpowers/references/gemini-tools.md +44 -32
  439. package/bundled/upstream/superpowers/skills/using-superpowers/references/pi-tools.md +28 -0
  440. package/bundled/upstream/superpowers/skills/writing-plans/SKILL.md +22 -0
  441. package/bundled/upstream/superpowers/skills/writing-plans/plan-document-reviewer-prompt.md +1 -1
  442. package/bundled/upstream/superpowers/skills/writing-skills/SKILL.md +52 -18
  443. package/bundled/upstream/superpowers/skills/writing-skills/anthropic-best-practices.md +88 -88
  444. package/bundled/upstream/superpowers/skills/writing-skills/persuasion-principles.md +3 -3
  445. package/package.json +1 -1
  446. package/bundled/upstream/superpowers/skills/subagent-driven-development/code-quality-reviewer-prompt.md +0 -25
  447. package/bundled/upstream/superpowers/skills/subagent-driven-development/spec-reviewer-prompt.md +0 -61
@@ -1,50 +1,52 @@
1
1
  import fs from 'node:fs';
2
2
  import path from 'node:path';
3
+ import { resolveProjectRoot } from '../context.mjs';
3
4
 
4
5
  export const IMPECCABLE_DIR = '.impeccable';
5
6
  export const LIVE_DIR = 'live';
6
7
  export const CRITIQUE_DIR = 'critique';
7
8
 
8
- export function getImpeccableDir(cwd = process.cwd()) {
9
- return path.join(cwd, IMPECCABLE_DIR);
9
+ export function getImpeccableDir(cwd = process.cwd(), options = {}) {
10
+ return path.join(resolveProjectRoot(cwd, options), IMPECCABLE_DIR);
10
11
  }
11
12
 
12
- export function getDesignSidecarPath(cwd = process.cwd()) {
13
- return path.join(getImpeccableDir(cwd), 'design.json');
13
+ export function getDesignSidecarPath(cwd = process.cwd(), options = {}) {
14
+ return path.join(getImpeccableDir(cwd, options), 'design.json');
14
15
  }
15
16
 
16
- export function getDesignSidecarCandidates(cwd = process.cwd(), contextDir = cwd) {
17
+ export function getDesignSidecarCandidates(cwd = process.cwd(), contextDir = cwd, options = {}) {
18
+ const projectRoot = resolveProjectRoot(cwd, options);
17
19
  const candidates = [
18
- getDesignSidecarPath(cwd),
19
- path.join(cwd, 'DESIGN.json'),
20
+ getDesignSidecarPath(cwd, options),
21
+ path.join(projectRoot, 'DESIGN.json'),
20
22
  ];
21
23
  const contextLegacy = path.join(contextDir, 'DESIGN.json');
22
24
  if (!candidates.includes(contextLegacy)) candidates.push(contextLegacy);
23
25
  return candidates;
24
26
  }
25
27
 
26
- export function resolveDesignSidecarPath(cwd = process.cwd(), contextDir = cwd) {
27
- return firstExisting(getDesignSidecarCandidates(cwd, contextDir));
28
+ export function resolveDesignSidecarPath(cwd = process.cwd(), contextDir = cwd, options = {}) {
29
+ return firstExisting(getDesignSidecarCandidates(cwd, contextDir, options));
28
30
  }
29
31
 
30
- export function getLiveDir(cwd = process.cwd()) {
31
- return path.join(getImpeccableDir(cwd), LIVE_DIR);
32
+ export function getLiveDir(cwd = process.cwd(), options = {}) {
33
+ return path.join(getImpeccableDir(cwd, options), LIVE_DIR);
32
34
  }
33
35
 
34
- export function getLiveConfigPath(cwd = process.cwd()) {
35
- return path.join(getLiveDir(cwd), 'config.json');
36
+ export function getLiveConfigPath(cwd = process.cwd(), options = {}) {
37
+ return path.join(getLiveDir(cwd, options), 'config.json');
36
38
  }
37
39
 
38
40
  export function getLegacyLiveConfigPath(scriptsDir) {
39
41
  return path.join(scriptsDir, 'config.json');
40
42
  }
41
43
 
42
- export function resolveLiveConfigPath({ cwd = process.cwd(), scriptsDir, env = process.env } = {}) {
44
+ export function resolveLiveConfigPath({ cwd = process.cwd(), scriptsDir, env = process.env, targetPath } = {}) {
43
45
  if (env.IMPECCABLE_LIVE_CONFIG && env.IMPECCABLE_LIVE_CONFIG.trim()) {
44
46
  const configured = env.IMPECCABLE_LIVE_CONFIG.trim();
45
47
  return path.isAbsolute(configured) ? configured : path.resolve(cwd, configured);
46
48
  }
47
- const primary = getLiveConfigPath(cwd);
49
+ const primary = getLiveConfigPath(cwd, { targetPath });
48
50
  if (fs.existsSync(primary)) return primary;
49
51
  if (scriptsDir) {
50
52
  const legacy = getLegacyLiveConfigPath(scriptsDir);
@@ -53,16 +55,16 @@ export function resolveLiveConfigPath({ cwd = process.cwd(), scriptsDir, env = p
53
55
  return primary;
54
56
  }
55
57
 
56
- export function getLiveServerPath(cwd = process.cwd()) {
57
- return path.join(getLiveDir(cwd), 'server.json');
58
+ export function getLiveServerPath(cwd = process.cwd(), options = {}) {
59
+ return path.join(getLiveDir(cwd, options), 'server.json');
58
60
  }
59
61
 
60
- export function getLegacyLiveServerPath(cwd = process.cwd()) {
61
- return path.join(cwd, '.impeccable-live.json');
62
+ export function getLegacyLiveServerPath(cwd = process.cwd(), options = {}) {
63
+ return path.join(resolveProjectRoot(cwd, options), '.impeccable-live.json');
62
64
  }
63
65
 
64
- export function readLiveServerInfo(cwd = process.cwd()) {
65
- for (const filePath of [getLiveServerPath(cwd), getLegacyLiveServerPath(cwd)]) {
66
+ export function readLiveServerInfo(cwd = process.cwd(), options = {}) {
67
+ for (const filePath of [getLiveServerPath(cwd, options), getLegacyLiveServerPath(cwd, options)]) {
66
68
  try {
67
69
  const info = JSON.parse(fs.readFileSync(filePath, 'utf-8'));
68
70
  if (info && typeof info.pid === 'number' && !isLiveServerPidReachable(info.pid)) {
@@ -88,37 +90,37 @@ export function isLiveServerPidReachable(pid) {
88
90
  }
89
91
  }
90
92
 
91
- export function writeLiveServerInfo(cwd = process.cwd(), info) {
92
- const filePath = getLiveServerPath(cwd);
93
+ export function writeLiveServerInfo(cwd = process.cwd(), info, options = {}) {
94
+ const filePath = getLiveServerPath(cwd, options);
93
95
  fs.mkdirSync(path.dirname(filePath), { recursive: true });
94
96
  fs.writeFileSync(filePath, JSON.stringify(info));
95
97
  return filePath;
96
98
  }
97
99
 
98
- export function removeLiveServerInfo(cwd = process.cwd()) {
99
- for (const filePath of [getLiveServerPath(cwd), getLegacyLiveServerPath(cwd)]) {
100
+ export function removeLiveServerInfo(cwd = process.cwd(), options = {}) {
101
+ for (const filePath of [getLiveServerPath(cwd, options), getLegacyLiveServerPath(cwd, options)]) {
100
102
  try { fs.unlinkSync(filePath); } catch {}
101
103
  }
102
104
  }
103
105
 
104
- export function getLiveSessionsDir(cwd = process.cwd()) {
105
- return path.join(getLiveDir(cwd), 'sessions');
106
+ export function getLiveSessionsDir(cwd = process.cwd(), options = {}) {
107
+ return path.join(getLiveDir(cwd, options), 'sessions');
106
108
  }
107
109
 
108
- export function getLegacyLiveSessionsDir(cwd = process.cwd()) {
109
- return path.join(cwd, '.impeccable-live', 'sessions');
110
+ export function getLegacyLiveSessionsDir(cwd = process.cwd(), options = {}) {
111
+ return path.join(resolveProjectRoot(cwd, options), '.impeccable-live', 'sessions');
110
112
  }
111
113
 
112
- export function getLiveAnnotationsDir(cwd = process.cwd()) {
113
- return path.join(getLiveDir(cwd), 'annotations');
114
+ export function getLiveAnnotationsDir(cwd = process.cwd(), options = {}) {
115
+ return path.join(getLiveDir(cwd, options), 'annotations');
114
116
  }
115
117
 
116
- export function getCritiqueDir(cwd = process.cwd()) {
117
- return path.join(getImpeccableDir(cwd), CRITIQUE_DIR);
118
+ export function getCritiqueDir(cwd = process.cwd(), options = {}) {
119
+ return path.join(getImpeccableDir(cwd, options), CRITIQUE_DIR);
118
120
  }
119
121
 
120
- export function getLegacyLiveAnnotationsDir(cwd = process.cwd()) {
121
- return path.join(cwd, '.impeccable-live', 'annotations');
122
+ export function getLegacyLiveAnnotationsDir(cwd = process.cwd(), options = {}) {
123
+ return path.join(resolveProjectRoot(cwd, options), '.impeccable-live', 'annotations');
122
124
  }
123
125
 
124
126
  function firstExisting(paths) {
@@ -0,0 +1,42 @@
1
+ class TargetArgError extends Error {
2
+ constructor(message, code) {
3
+ super(message);
4
+ this.name = 'TargetArgError';
5
+ this.code = code;
6
+ }
7
+ }
8
+
9
+ export function parseTargetPath(args = [], { strict = false } = {}) {
10
+ let targetPath = null;
11
+ for (let i = 0; i < args.length; i++) {
12
+ const arg = String(args[i]);
13
+ if (arg === '--target' || arg === '-t') {
14
+ const next = args[i + 1];
15
+ if (next && !String(next).startsWith('-')) {
16
+ targetPath = String(next);
17
+ i++;
18
+ continue;
19
+ }
20
+ if (strict) {
21
+ throw new TargetArgError('--target requires a path value.', 'TARGET_VALUE_MISSING');
22
+ }
23
+ continue;
24
+ }
25
+ if (arg.startsWith('--target=')) {
26
+ const value = arg.slice('--target='.length);
27
+ if (value) {
28
+ targetPath = value;
29
+ continue;
30
+ }
31
+ if (strict) {
32
+ throw new TargetArgError('--target requires a path value.', 'TARGET_VALUE_MISSING');
33
+ }
34
+ }
35
+ }
36
+ return targetPath;
37
+ }
38
+
39
+ export function parseTargetOptions(args = [], options = {}) {
40
+ const targetPath = parseTargetPath(args, options);
41
+ return targetPath ? { targetPath } : {};
42
+ }
@@ -57,7 +57,7 @@
57
57
  const Z = { highlight: 100001, bar: 100005, picker: 100007, toast: 100010 };
58
58
  const EASE = 'cubic-bezier(0.22, 1, 0.36, 1)'; // ease-out-quint
59
59
  const PREFIX = 'impeccable-live';
60
- const PICK_CURSOR_CLASS = PREFIX + '-pick-cursor';
60
+ const PICK_CURSOR_STYLE_ID = PREFIX + '-pick-cursor-style';
61
61
  const MANUAL_APPLY_STATE_TTL_MS = 15 * 60 * 1000;
62
62
  const sessionState = window.__IMPECCABLE_LIVE_SESSION__?.createLiveBrowserSessionState({
63
63
  prefix: PREFIX,
@@ -152,6 +152,7 @@
152
152
  let scrollLockTargetY = null;
153
153
  let scrollLockRaf = null;
154
154
  let scrollLockAbort = null;
155
+ const SCROLL_ANCHOR_LOCK_ID = 'impeccable-scroll-anchor-lock';
155
156
 
156
157
  // Dedicated key for scroll position - SEPARATE from LS_KEY so that
157
158
  // saveSession's state updates don't clobber a carefully-captured scrollY.
@@ -1915,45 +1916,45 @@
1915
1916
  syncPageInteractionCursor();
1916
1917
  }
1917
1918
 
1918
- let pageInteractionCursorActive = false;
1919
-
1920
- function ensurePickCursorStyle() {
1921
- if (document.getElementById(PREFIX + '-pick-cursor-style')) return;
1922
- const style = document.createElement('style');
1923
- style.id = PREFIX + '-pick-cursor-style';
1919
+ /**
1920
+ * Drive the page-level pick / insert cursor through the textContent of one
1921
+ * injected <style>, never by mutating <html> (className or inline style).
1922
+ * Frameworks that server-render the <html>/<body> roots (Next.js App Router)
1923
+ * report a React 19 hydration mismatch when the client adds an attribute the
1924
+ * server HTML never emitted, so a `class`/inline `style` toggled on
1925
+ * `document.documentElement` trips "a tree hydrated but some attributes ...
1926
+ * didn't match" on the next Fast-Refresh re-render. Keying the cursor off a
1927
+ * stable-id <style> keeps the effect off the hydrated host elements (same
1928
+ * shape as the scroll-anchor lock). A falsy cursor clears the rule.
1929
+ */
1930
+ function setPageInteractionCursor(cursor) {
1931
+ let style = document.getElementById(PICK_CURSOR_STYLE_ID);
1932
+ if (!cursor) {
1933
+ if (style) style.textContent = '';
1934
+ return;
1935
+ }
1936
+ if (!style) {
1937
+ style = document.createElement('style');
1938
+ style.id = PICK_CURSOR_STYLE_ID;
1939
+ // Styles the host page, not the chrome - inside the adapter's shadow UI
1940
+ // root (uiAppendStyle's target) these selectors would match nothing.
1941
+ (document.head || document.documentElement).appendChild(style);
1942
+ }
1924
1943
  style.textContent =
1925
- 'html.' + PICK_CURSOR_CLASS + ' * { cursor: crosshair !important; }\n'
1926
- + 'html.' + PICK_CURSOR_CLASS + ' [id^="' + PREFIX + '"],\n'
1927
- + 'html.' + PICK_CURSOR_CLASS + ' [id^="' + PREFIX + '"] * { cursor: revert !important; }';
1928
- // Styles the host page, not the chrome - inside the adapter's shadow UI
1929
- // root (uiAppendStyle's target) these selectors would match nothing.
1930
- document.head.appendChild(style);
1944
+ '* { cursor: ' + cursor + ' !important; }\n'
1945
+ + '[id^="' + PREFIX + '"],\n'
1946
+ + '[id^="' + PREFIX + '"] * { cursor: revert !important; }';
1931
1947
  }
1932
1948
 
1933
1949
  /** Page-level cursor while pick or insert mode is targeting page elements. */
1934
1950
  function syncPageInteractionCursor() {
1935
- const pickCursor = state === 'PICKING' && pickActive && !insertActive;
1936
- let axisCursor = '';
1937
- if (state === 'PICKING' && insertActive) {
1938
- axisCursor = insertHoverAnchor ? cursorForInsertAxis(insertHoverAxis || 'column') : '';
1939
- }
1940
-
1941
- if (pickCursor) {
1942
- ensurePickCursorStyle();
1943
- document.documentElement.classList.add(PICK_CURSOR_CLASS);
1944
- document.documentElement.style.cursor = '';
1945
- pageInteractionCursorActive = true;
1946
- return;
1947
- }
1948
-
1949
- document.documentElement.classList.remove(PICK_CURSOR_CLASS);
1950
- if (axisCursor) {
1951
- document.documentElement.style.cursor = axisCursor;
1952
- pageInteractionCursorActive = true;
1953
- } else if (pageInteractionCursorActive) {
1954
- document.documentElement.style.cursor = '';
1955
- pageInteractionCursorActive = false;
1951
+ let cursor = '';
1952
+ if (state === 'PICKING' && pickActive && !insertActive) {
1953
+ cursor = 'crosshair';
1954
+ } else if (state === 'PICKING' && insertActive && insertHoverAnchor) {
1955
+ cursor = cursorForInsertAxis(insertHoverAxis || 'column');
1956
1956
  }
1957
+ setPageInteractionCursor(cursor);
1957
1958
  }
1958
1959
 
1959
1960
  /**
@@ -2681,12 +2682,12 @@
2681
2682
  });
2682
2683
  const check = el('span', {
2683
2684
  fontSize: '15px', lineHeight: '1', flexShrink: '0',
2684
- color: 'oklch(45% 0.15 145)',
2685
+ color: 'oklch(45% 0.18 145)',
2685
2686
  });
2686
2687
  check.textContent = '\u2713';
2687
2688
  row.appendChild(check);
2688
2689
  const label = el('span', {
2689
- fontSize: '12px', color: 'oklch(35% 0.1 145)', fontWeight: '600',
2690
+ fontSize: '12px', color: 'oklch(49% 0.08 188)', fontWeight: '600',
2690
2691
  });
2691
2692
  label.textContent = 'Variant applied';
2692
2693
  row.appendChild(label);
@@ -5815,10 +5816,22 @@
5815
5816
 
5816
5817
  try { history.scrollRestoration = 'manual'; } catch {}
5817
5818
 
5818
- const prevHtmlAnchor = document.documentElement.style.overflowAnchor;
5819
- const prevBodyAnchor = document.body.style.overflowAnchor;
5820
- document.documentElement.style.overflowAnchor = 'none';
5821
- document.body.style.overflowAnchor = 'none';
5819
+ // Suppress the browser's scroll-anchoring on the scroll root so it can't
5820
+ // fight our manual scroll correction. Apply this as a stylesheet rule, not
5821
+ // as inline `style` on <html>/<body>: those elements are server-rendered by
5822
+ // frameworks like Next.js App Router, and mutating their inline style makes
5823
+ // React 19 report a hydration mismatch on the next Fast-Refresh re-render.
5824
+ // A <style> rule has the same computed effect without touching any hydrated
5825
+ // element's attributes. Like the inline version, it is recreated on every
5826
+ // startScrollLock call, so reload survival (driven by the persisted scroll
5827
+ // key) is unaffected.
5828
+ let anchorLockStyle = document.getElementById(SCROLL_ANCHOR_LOCK_ID);
5829
+ if (!anchorLockStyle) {
5830
+ anchorLockStyle = document.createElement('style');
5831
+ anchorLockStyle.id = SCROLL_ANCHOR_LOCK_ID;
5832
+ anchorLockStyle.textContent = 'html,body{overflow-anchor:none !important;}';
5833
+ (document.head || document.documentElement).appendChild(anchorLockStyle);
5834
+ }
5822
5835
 
5823
5836
  const correct = (why) => {
5824
5837
  scrollLockRaf = null;
@@ -5853,8 +5866,7 @@
5853
5866
 
5854
5867
  scrollLockAbort = new AbortController();
5855
5868
  scrollLockAbort.signal.addEventListener('abort', () => {
5856
- document.documentElement.style.overflowAnchor = prevHtmlAnchor;
5857
- document.body.style.overflowAnchor = prevBodyAnchor;
5869
+ document.getElementById(SCROLL_ANCHOR_LOCK_ID)?.remove();
5858
5870
  }, { once: true });
5859
5871
  const sig = { signal: scrollLockAbort.signal };
5860
5872
  // Track whether the most recent scroll came from a user gesture. We
@@ -6489,10 +6501,13 @@
6489
6501
  ) {
6490
6502
  return;
6491
6503
  }
6504
+ if (isPageEditableElement(deepActive) && !isInlineEditActive(deepActive)) {
6505
+ return;
6506
+ }
6492
6507
  // While a contenteditable text-leaf is focused, let the browser handle
6493
6508
  // all keys except Escape. Escape cancels the current edit (restores
6494
6509
  // original text) and blurs without saving, staying in CONFIGURING.
6495
- if (e.target.isContentEditable && inlineEditRows.some((r) => r.el === e.target)) {
6510
+ if (e.target.isContentEditable && isInlineEditActive(e.target)) {
6496
6511
  if (e.key !== 'Escape') return;
6497
6512
  e.preventDefault();
6498
6513
  e.stopPropagation();
@@ -8186,18 +8201,18 @@ void main() {
8186
8201
  let voiceInterimBase = '';
8187
8202
  /** @type {{ mode: 'steer'|'configure', input: HTMLInputElement, submit: () => void, beforeStart?: () => void } | null} */
8188
8203
  let voiceCtx = null;
8189
- const PAGE_CHAT_COLLAPSED_W = '88px';
8204
+ const PAGE_CHAT_COLLAPSED_W = '104px';
8190
8205
  const PAGE_CHAT_PROCESSING_W = '76px';
8191
8206
  const PAGE_CHAT_PLACEHOLDER_COLLAPSED = 'Steer…';
8192
8207
  const PAGE_CHAT_PLACEHOLDER_EXPANDED = 'Steer the page…';
8193
8208
  const STEER_AWAIT_TIMEOUT_MS = 120000;
8194
8209
  const AGENT_STATUS_POLL_MS = 5000;
8195
- const AGENT_DISCONNECTED_MARK = 'oklch(56% 0.032 82 / 0.78)';
8210
+ const AGENT_DISCONNECTED_MARK = 'oklch(62% 0 0 / 0.78)';
8196
8211
  const AGENT_DISCONNECTED_TIP = 'Agent disconnected - run live-poll.mjs to connect';
8197
8212
  const GLOBAL_BAR_SECTION_GAP = 8;
8198
8213
  const GLOBAL_BAR_INNER_GAP = 2;
8199
8214
  const GLOBAL_BAR_INNER_PAD_LEFT = 2;
8200
- const PAGE_CHAT_EXPANDED_W = 'min(280px, 38vw)';
8215
+ const PAGE_CHAT_EXPANDED_MAX_W = 280;
8201
8216
  const ICON_PAGE_CHAT =
8202
8217
  '<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>';
8203
8218
  const ICON_PAGE_VOICE =
@@ -8259,8 +8274,8 @@ void main() {
8259
8274
  // Neutral hairline for internal control borders / dividers (was a warm
8260
8275
  // gold rule that read as muddy champagne edges on the pill / input / count).
8261
8276
  hairline: 'oklch(92% 0 0 / 0.12)',
8262
- text: 'oklch(84% 0.035 82)',
8263
- textDim: 'oklch(63% 0.024 82)',
8277
+ text: 'oklch(91% 0 0)',
8278
+ textDim: 'oklch(72% 0 0)',
8264
8279
  accent: C.brand,
8265
8280
  accentSoft: C.brandSoft,
8266
8281
  exitHover: 'oklch(58% 0.15 35 / 0.18)',
@@ -8277,6 +8292,52 @@ void main() {
8277
8292
  return barPaletteForTheme(globalBarEl?.dataset.theme || detectPageTheme());
8278
8293
  }
8279
8294
 
8295
+ function globalBarModeToggles() {
8296
+ return [
8297
+ uiGetById(PREFIX + '-pick-toggle'),
8298
+ uiGetById(PREFIX + '-insert-toggle'),
8299
+ uiGetById(PREFIX + '-detect-toggle'),
8300
+ uiGetById(PREFIX + '-design-toggle'),
8301
+ ].filter(Boolean);
8302
+ }
8303
+
8304
+ function applyGlobalBarLabelState(expandInactive, forceCollapse = false) {
8305
+ globalBarModeToggles().forEach((toggle) => {
8306
+ if (forceCollapse) toggle._collapseLabel?.(true);
8307
+ else if (expandInactive || toggle.dataset.active === 'true') toggle._expandLabel?.();
8308
+ else toggle._collapseLabel?.();
8309
+ });
8310
+ }
8311
+
8312
+ function syncGlobalBarExpandedLabels(expanded = globalBarEl?.matches(':hover')) {
8313
+ const expandInactive = !!(expanded && !pageChatExpanded);
8314
+ applyGlobalBarLabelState(expandInactive, pageChatExpanded);
8315
+
8316
+ if (expandInactive && globalBarEl && globalBarEl.scrollWidth > window.innerWidth - 16) {
8317
+ applyGlobalBarLabelState(false);
8318
+ }
8319
+ }
8320
+
8321
+ function pageChatCollapsedWidthPx() {
8322
+ const parsed = parseFloat(PAGE_CHAT_COLLAPSED_W);
8323
+ return Number.isFinite(parsed) ? parsed : 104;
8324
+ }
8325
+
8326
+ function pageChatExpandedWidth() {
8327
+ if (!pageChatEl || !globalBarEl) return PAGE_CHAT_EXPANDED_MAX_W + 'px';
8328
+ const currentChatWidth = pageChatEl.getBoundingClientRect().width || pageChatCollapsedWidthPx();
8329
+ const barWidth = Math.max(globalBarEl.getBoundingClientRect().width || 0, globalBarEl.scrollWidth || 0);
8330
+ const nonChatWidth = Math.max(0, barWidth - currentChatWidth);
8331
+ const available = window.innerWidth - 16 - nonChatWidth;
8332
+ const next = Math.max(pageChatCollapsedWidthPx(), Math.min(PAGE_CHAT_EXPANDED_MAX_W, available));
8333
+ return Math.round(next) + 'px';
8334
+ }
8335
+
8336
+ function syncPageChatExpandedWidth() {
8337
+ if (!pageChatEl || !pageChatExpanded) return;
8338
+ pageChatEl.style.width = pageChatExpandedWidth();
8339
+ }
8340
+
8280
8341
  function syncPageChatChrome() {
8281
8342
  if (!pageChatEl) return;
8282
8343
  const P = pageChatPalette();
@@ -8312,6 +8373,21 @@ void main() {
8312
8373
  && !steerLocked;
8313
8374
  }
8314
8375
 
8376
+ function isPageEditableElement(el) {
8377
+ if (!el || own(el)) return false;
8378
+ if (/^(INPUT|TEXTAREA|SELECT)$/.test(el.tagName || '')) return true;
8379
+ return !!el.isContentEditable;
8380
+ }
8381
+
8382
+ function isInlineEditActive(el) {
8383
+ return !!el && inlineEditRows.some((r) => r.el === el);
8384
+ }
8385
+
8386
+ function isPageEditableActive() {
8387
+ const active = activeElementDeep();
8388
+ return isPageEditableElement(active) && !isInlineEditActive(active);
8389
+ }
8390
+
8315
8391
  function pageHasHostTextSelection() {
8316
8392
  const sel = window.getSelection?.();
8317
8393
  if (!sel || sel.isCollapsed) return false;
@@ -8325,6 +8401,7 @@ void main() {
8325
8401
  function shouldSteerAutoFocus() {
8326
8402
  return shouldFocusSteerChat()
8327
8403
  && !steerFocusSuspended
8404
+ && !isPageEditableActive()
8328
8405
  && performance.now() >= steerFocusPauseUntil;
8329
8406
  }
8330
8407
 
@@ -8562,7 +8639,8 @@ void main() {
8562
8639
  if (!pageChatEl || !pageChatInput) return false;
8563
8640
  pageChatExpanded = true;
8564
8641
  pageChatEl.dataset.expanded = 'true';
8565
- pageChatEl.style.width = PAGE_CHAT_EXPANDED_W;
8642
+ syncGlobalBarExpandedLabels(false);
8643
+ pageChatEl.style.width = pageChatExpandedWidth();
8566
8644
  pageChatEl.style.cursor = steerLocked ? 'default' : 'text';
8567
8645
  pageChatInput.placeholder = PAGE_CHAT_PLACEHOLDER_EXPANDED;
8568
8646
  if (pageChatHint) {
@@ -8657,7 +8735,7 @@ void main() {
8657
8735
  pageChatEl.setAttribute('aria-label', 'Steer the page');
8658
8736
  pageChatExpanded = keepExpanded;
8659
8737
  pageChatEl.dataset.expanded = keepExpanded ? 'true' : 'false';
8660
- pageChatEl.style.width = keepExpanded ? PAGE_CHAT_EXPANDED_W : PAGE_CHAT_COLLAPSED_W;
8738
+ pageChatEl.style.width = keepExpanded ? pageChatExpandedWidth() : PAGE_CHAT_COLLAPSED_W;
8661
8739
  pageChatEl.style.cursor = 'pointer';
8662
8740
  if (pageChatInput) {
8663
8741
  pageChatInput.disabled = false;
@@ -8971,6 +9049,7 @@ void main() {
8971
9049
  pageChatEl.dataset.expanded = 'false';
8972
9050
  pageChatEl.style.width = PAGE_CHAT_COLLAPSED_W;
8973
9051
  pageChatEl.style.cursor = 'pointer';
9052
+ syncGlobalBarExpandedLabels(globalBarEl?.matches(':hover'));
8974
9053
  if (blur) {
8975
9054
  pageChatInput.blur();
8976
9055
  pageChatInput.style.pointerEvents = 'none';
@@ -9064,9 +9143,9 @@ void main() {
9064
9143
  '#' + PREFIX + '-page-chat[data-voice-listening="true"] { border-color: oklch(70% 0.12 188 / 0.45); }' +
9065
9144
  '#' + PREFIX + '-page-chat-voice[data-listening="true"] svg { animation: impeccable-voice-pulse 1.1s ease-in-out infinite; }' +
9066
9145
  '@media (prefers-reduced-motion: reduce) { #' + PREFIX + '-page-chat-voice[data-listening="true"] svg { animation: none; opacity: 1; } }' +
9067
- '#' + PREFIX + '-page-chat-input::placeholder { color: oklch(63% 0.024 82); opacity: 1; }' +
9146
+ '#' + PREFIX + '-page-chat-input::placeholder { color: oklch(72% 0 0); opacity: 1; }' +
9068
9147
  '#' + PREFIX + '-page-chat-input { caret-color: oklch(84% 0.19 80.46); }' +
9069
- '#' + PREFIX + '-page-chat[data-input-focused="true"]:not([data-expanded="true"]) #' + PREFIX + '-page-chat-input::placeholder { color: oklch(72% 0.024 82); }' +
9148
+ '#' + PREFIX + '-page-chat[data-input-focused="true"]:not([data-expanded="true"]) #' + PREFIX + '-page-chat-input::placeholder { color: oklch(72% 0 0); }' +
9070
9149
  '#' + PREFIX + '-page-chat-voice:hover { background: oklch(78% 0.12 82 / 0.12); }';
9071
9150
  uiAppendStyle(s);
9072
9151
  }
@@ -9270,6 +9349,7 @@ void main() {
9270
9349
  zIndex: Z.bar + 5,
9271
9350
  display: 'flex', alignItems: 'stretch',
9272
9351
  gap: '0',
9352
+ width: 'max-content',
9273
9353
  background: P.surface,
9274
9354
  border: '1px solid ' + P.border,
9275
9355
  borderRadius: '8px',
@@ -9277,6 +9357,8 @@ void main() {
9277
9357
  fontFamily: FONT, fontSize: '12px', lineHeight: '1',
9278
9358
  opacity: '0',
9279
9359
  overflow: 'hidden', // clip the full-bleed brand mark to the bar radius
9360
+ maxWidth: 'calc(100vw - 16px)',
9361
+ boxSizing: 'border-box',
9280
9362
  transition: 'opacity 0.3s ' + EASE + ', transform 0.3s ' + EASE,
9281
9363
  });
9282
9364
  globalBarEl.id = PREFIX + '-global-bar';
@@ -9306,7 +9388,7 @@ void main() {
9306
9388
  const agentDot = el('span', {
9307
9389
  position: 'absolute', right: '-1px', bottom: '7px',
9308
9390
  width: '6px', height: '6px', borderRadius: '50%',
9309
- background: 'oklch(78% 0.14 75)',
9391
+ background: 'oklch(77% 0.13 82)',
9310
9392
  boxShadow: '0 0 0 2px ' + P.surface,
9311
9393
  display: 'none', pointerEvents: 'none',
9312
9394
  });
@@ -9325,6 +9407,7 @@ void main() {
9325
9407
  const inner = el('div', {
9326
9408
  display: 'flex', alignItems: 'center',
9327
9409
  padding: '4px 5px 4px ' + GLOBAL_BAR_INNER_PAD_LEFT + 'px', gap: GLOBAL_BAR_INNER_GAP + 'px',
9410
+ flex: '0 0 auto',
9328
9411
  });
9329
9412
  inner.id = PREFIX + '-global-bar-inner';
9330
9413
  globalBarEl.appendChild(inner);
@@ -9333,7 +9416,10 @@ void main() {
9333
9416
  function makeIconBtn({ id, svg, label, ariaLabel, labelFont, onClick }) {
9334
9417
  const b = el('button', {
9335
9418
  position: 'relative',
9336
- display: 'inline-flex', alignItems: 'center',
9419
+ display: 'inline-flex', alignItems: 'center', justifyContent: 'center',
9420
+ boxSizing: 'border-box',
9421
+ flex: '0 0 auto',
9422
+ minWidth: '30px',
9337
9423
  padding: '6px 8px', borderRadius: '7px',
9338
9424
  border: 'none', background: 'transparent',
9339
9425
  color: P.textDim, fontFamily: FONT, fontSize: '11.5px', fontWeight: '500',
@@ -9352,8 +9438,8 @@ void main() {
9352
9438
  if (!labelEl) return;
9353
9439
  labelEl.style.maxWidth = '120px'; labelEl.style.opacity = '1'; labelEl.style.marginLeft = '6px'; labelEl.style.transform = 'translateX(0)';
9354
9440
  };
9355
- const collapse = () => {
9356
- if (!labelEl || b.dataset.active === 'true') return;
9441
+ const collapse = (force = false) => {
9442
+ if (!labelEl || (!force && b.dataset.active === 'true')) return;
9357
9443
  labelEl.style.maxWidth = '0'; labelEl.style.opacity = '0'; labelEl.style.marginLeft = '0'; labelEl.style.transform = 'translateX(-4px)';
9358
9444
  };
9359
9445
  // Per-button hover only changes color (no layout). The label expand/
@@ -9408,11 +9494,11 @@ void main() {
9408
9494
  // DESIGN.md panel toggle - quartet of color squares as the mark.
9409
9495
  const designBtn = makeIconBtn({
9410
9496
  id: PREFIX + '-design-toggle',
9411
- svg: `<span style="display:inline-grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;width:14px;height:14px;border-radius:3px;overflow:hidden;box-shadow:inset 0 0 0 1px oklch(58% 0.065 82 / 0.55);flex-shrink:0">
9497
+ svg: `<span style="display:inline-grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;width:14px;height:14px;border-radius:3px;overflow:hidden;box-shadow:inset 0 0 0 1px oklch(92% 0 0 / 0.13);flex-shrink:0">
9412
9498
  <span style="background:oklch(84% 0.19 80.46)"></span>
9413
9499
  <span style="background:oklch(70% 0.12 188)"></span>
9414
- <span style="background:oklch(84% 0.035 82)"></span>
9415
- <span style="background:oklch(34% 0.014 82)"></span>
9500
+ <span style="background:oklch(91% 0 0)"></span>
9501
+ <span style="background:oklch(34% 0 0)"></span>
9416
9502
  </span>`,
9417
9503
  label: 'DESIGN.md',
9418
9504
  ariaLabel: 'Toggle DESIGN.md panel',
@@ -9604,6 +9690,7 @@ void main() {
9604
9690
  width: '1px', height: '18px',
9605
9691
  background: P.hairline,
9606
9692
  margin: '0 4px 0 2px',
9693
+ flexShrink: '0',
9607
9694
  });
9608
9695
  inner.appendChild(divider);
9609
9696
 
@@ -9620,6 +9707,7 @@ void main() {
9620
9707
  display: 'inline-flex', alignItems: 'center', justifyContent: 'center',
9621
9708
  padding: '0', boxSizing: 'border-box',
9622
9709
  width: '24px', height: '24px', borderRadius: '6px',
9710
+ flexShrink: '0',
9623
9711
  border: 'none', background: 'transparent',
9624
9712
  color: P.textDim, fontFamily: FONT, fontSize: '0', lineHeight: '0',
9625
9713
  cursor: 'pointer', transition: 'color 0.12s ease, background 0.12s ease',
@@ -9632,16 +9720,16 @@ void main() {
9632
9720
  exitBtn.addEventListener('click', () => { sendEvent({ type: 'exit' }); teardown(); });
9633
9721
  inner.appendChild(exitBtn);
9634
9722
 
9635
- // Bar-level hover: expand every toggle's label at once; collapse on leave.
9723
+ // Bar-level hover: expand mode labels unless Steer is using the space.
9636
9724
  // Buttons with dataset.active="true" ignore collapse (their label stays).
9637
- const toggles = [pickBtn, insertBtn, detectBtn, designBtn];
9638
9725
  globalBarEl.addEventListener('mouseenter', () => {
9639
- toggles.forEach((t) => t._expandLabel && t._expandLabel());
9726
+ syncGlobalBarExpandedLabels(true);
9727
+ syncPageChatExpandedWidth();
9640
9728
  schedulePendingDockPosition();
9641
9729
  setTimeout(schedulePendingDockPosition, 260);
9642
9730
  });
9643
9731
  globalBarEl.addEventListener('mouseleave', () => {
9644
- toggles.forEach((t) => t._collapseLabel && t._collapseLabel());
9732
+ syncGlobalBarExpandedLabels(false);
9645
9733
  schedulePendingDockPosition();
9646
9734
  setTimeout(schedulePendingDockPosition, 260);
9647
9735
  });
@@ -9659,6 +9747,7 @@ void main() {
9659
9747
  pendingDockResizeObserver.observe(globalBarEl);
9660
9748
  }
9661
9749
  window.addEventListener('resize', positionPendingDock);
9750
+ window.addEventListener('resize', syncPageChatExpandedWidth);
9662
9751
 
9663
9752
  requestAnimationFrame(() => {
9664
9753
  globalBarEl.style.opacity = '1';
@@ -9705,9 +9794,7 @@ void main() {
9705
9794
  // If the bar is currently under the cursor, keep all labels expanded -
9706
9795
  // otherwise clicking a toggle that deactivates (e.g. closing DESIGN.md)
9707
9796
  // would collapse its label while the user's mouse is still on the bar.
9708
- if (globalBarEl && globalBarEl.matches(':hover')) {
9709
- [pickToggle, insertToggle, detectToggle, designToggle].forEach((t) => t?._expandLabel?.());
9710
- }
9797
+ syncGlobalBarExpandedLabels(globalBarEl && globalBarEl.matches(':hover'));
9711
9798
 
9712
9799
  if (detectBadge) {
9713
9800
  detectBadge.style.display = (detectActive && detectCount > 0) ? 'inline' : 'none';
@@ -9896,7 +9983,7 @@ void main() {
9896
9983
  // Remove detection overlays
9897
9984
  window.postMessage({ source: 'impeccable-command', action: 'remove' }, '*');
9898
9985
  setLiveState('IDLE');
9899
- document.getElementById(PREFIX + '-pick-cursor-style')?.remove();
9986
+ document.getElementById(PICK_CURSOR_STYLE_ID)?.remove();
9900
9987
  window.__IMPECCABLE_LIVE_INIT__ = false;
9901
9988
  console.log('[impeccable] Live mode exited.');
9902
9989
  }
@@ -9996,8 +10083,8 @@ void main() {
9996
10083
  meta: 'oklch(55% 0 0)',
9997
10084
  hairline: 'oklch(88% 0 0)',
9998
10085
  hairlineSoft: 'oklch(92% 0 0)',
9999
- amber: 'oklch(70% 0.13 65)', // stale-hint accent
10000
- amberBg: 'oklch(95% 0.05 80)',
10086
+ amber: 'oklch(77% 0.13 82)', // stale-hint accent
10087
+ amberBg: 'oklch(89% 0.055 84)',
10001
10088
  };
10002
10089
 
10003
10090
  function designPanelCss(BP) {
@@ -10088,7 +10175,7 @@ void main() {
10088
10175
  }
10089
10176
  .empty strong { color: ${DP.ink}; display: block; margin-bottom: 6px; font-size: 14px; }
10090
10177
  .empty code { font-family: ${MONO}; background: ${DP.canvas}; padding: 1px 6px; border-radius: 4px; font-size: 12px; color: ${DP.ink}; }
10091
- .error { color: oklch(45% 0.15 25); }
10178
+ .error { color: oklch(58% 0.15 35); }
10092
10179
 
10093
10180
  /* Stale hint */
10094
10181
  .stale {
@@ -10240,8 +10327,8 @@ void main() {
10240
10327
  content: ''; position: absolute; left: 4px; top: 13px;
10241
10328
  width: 8px; height: 8px; border-radius: 50%;
10242
10329
  }
10243
- .coll .do::before { background: oklch(62% 0.16 145); }
10244
- .coll .dont::before { background: oklch(58% 0.22 25); }
10330
+ .coll .do::before { background: oklch(45% 0.18 145); }
10331
+ .coll .dont::before { background: oklch(58% 0.15 35); }
10245
10332
 
10246
10333
  .coll .overview-body {
10247
10334
  font-size: 12px; line-height: 1.55; color: ${DP.ink2};