oh-my-opencode 4.12.1 → 4.14.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 (911) hide show
  1. package/.agents/skills/codex-qa/SKILL.md +15 -0
  2. package/.agents/skills/codex-qa/references/logging-debug.md +12 -0
  3. package/.agents/skills/opencode-qa/SKILL.md +17 -0
  4. package/.agents/skills/opencode-qa/references/tui-tmux.md +17 -0
  5. package/.agents/skills/work-with-pr/SKILL.md +18 -10
  6. package/.opencode/skills/work-with-pr/SKILL.md +18 -10
  7. package/README.md +3 -3
  8. package/THIRD-PARTY-NOTICES.md +1 -1
  9. package/dist/agents/sisyphus-agent-factory.d.ts +9 -0
  10. package/dist/agents/sisyphus-runtime-prompt-reconciler.d.ts +31 -0
  11. package/dist/cli/doctor/checks/telemetry.d.ts +2 -0
  12. package/dist/cli/doctor/framework/constants.d.ts +1 -0
  13. package/dist/cli/doctor/framework/doctor-target.d.ts +1 -1
  14. package/dist/cli/index.js +25417 -16991
  15. package/dist/cli-node/index.js +25598 -17172
  16. package/dist/config/schema/codegraph.d.ts +1 -0
  17. package/dist/config/schema/oh-my-opencode-config.d.ts +3 -0
  18. package/dist/config/schema/runtime-fallback.d.ts +1 -0
  19. package/dist/features/background-agent/background-task-marker.d.ts +8 -0
  20. package/dist/features/background-agent/fallback-retry-handler.d.ts +1 -0
  21. package/dist/features/background-agent/manager.d.ts +1 -0
  22. package/dist/features/background-agent/parent-wake-dedupe.d.ts +1 -0
  23. package/dist/features/background-agent/parent-wake-notifier-types.d.ts +2 -0
  24. package/dist/features/background-agent/parent-wake-notifier.d.ts +1 -0
  25. package/dist/features/background-agent/parent-wake-window-recovery.d.ts +2 -0
  26. package/dist/features/team-mode/test-support/async-test-helpers.d.ts +19 -0
  27. package/dist/hooks/atlas/final-wave-approval-gate.d.ts +1 -0
  28. package/dist/hooks/atlas/subagent-completion-reminder.d.ts +30 -0
  29. package/dist/hooks/atlas/types.d.ts +2 -0
  30. package/dist/hooks/atlas/verification-reminders.d.ts +3 -0
  31. package/dist/hooks/runtime-fallback/auto-retry-dispatch.d.ts +2 -2
  32. package/dist/hooks/runtime-fallback/auto-retry-timeout.d.ts +2 -2
  33. package/dist/hooks/runtime-fallback/auto-retry.d.ts +1 -1
  34. package/dist/hooks/runtime-fallback/fallback-state-snapshot.d.ts +13 -0
  35. package/dist/hooks/runtime-fallback/types.d.ts +8 -0
  36. package/dist/hooks/team-session-events/team-idle-wake-hint.d.ts +1 -0
  37. package/dist/index.d.ts +1 -0
  38. package/dist/index.js +33620 -19652
  39. package/dist/mcp/context7.d.ts +9 -8
  40. package/dist/oh-my-opencode.schema.json +12 -0
  41. package/dist/plugin/runtime-skill-resolver.d.ts +35 -0
  42. package/dist/plugin/skill-context.d.ts +9 -0
  43. package/dist/shared/posthog.d.ts +17 -10
  44. package/dist/shared/telemetry-product-identity.d.ts +2 -0
  45. package/dist/skills/coding-agent-sessions/SKILL.md +128 -0
  46. package/dist/skills/coding-agent-sessions/agents/openai.yaml +4 -0
  47. package/dist/skills/coding-agent-sessions/references/all-platforms.md +71 -0
  48. package/dist/skills/coding-agent-sessions/references/claude.md +32 -0
  49. package/dist/skills/coding-agent-sessions/references/codex.md +30 -0
  50. package/dist/skills/coding-agent-sessions/references/opencode.md +43 -0
  51. package/dist/skills/coding-agent-sessions/references/senpi.md +17 -0
  52. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/__init__.py +1 -0
  53. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/claude.py +66 -0
  54. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/cli.py +283 -0
  55. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/codex.py +105 -0
  56. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/file_scanners.py +275 -0
  57. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/jsonio.py +55 -0
  58. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/kiro_scanner.py +91 -0
  59. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/opencode.py +289 -0
  60. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +92 -0
  61. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/sqlite_optional_scanners.py +203 -0
  62. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/sqlite_scanners.py +177 -0
  63. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/timeparse.py +51 -0
  64. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/transcript.py +149 -0
  65. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/types.py +57 -0
  66. package/dist/skills/coding-agent-sessions/scripts/find-agent-sessions.py +19 -0
  67. package/dist/skills/frontend/ATTRIBUTION.md +77 -9
  68. package/dist/skills/frontend/SKILL.md +29 -8
  69. package/dist/skills/frontend/references/design/README.md +29 -12
  70. package/dist/skills/frontend/references/design/_INDEX.md +3 -3
  71. package/dist/skills/frontend/references/design/airbnb.md +3 -0
  72. package/dist/skills/frontend/references/design/airtable.md +3 -0
  73. package/dist/skills/frontend/references/design/apple.md +3 -0
  74. package/dist/skills/frontend/references/design/binance.md +3 -0
  75. package/dist/skills/frontend/references/design/bmw.md +3 -0
  76. package/dist/skills/frontend/references/design/bugatti.md +3 -0
  77. package/dist/skills/frontend/references/design/cal.md +3 -0
  78. package/dist/skills/frontend/references/design/claude.md +3 -0
  79. package/dist/skills/frontend/references/design/clay.md +3 -0
  80. package/dist/skills/frontend/references/design/clickhouse.md +3 -0
  81. package/dist/skills/frontend/references/design/cohere.md +3 -0
  82. package/dist/skills/frontend/references/design/coinbase.md +3 -0
  83. package/dist/skills/frontend/references/design/composio.md +3 -0
  84. package/dist/skills/frontend/references/design/cursor.md +3 -0
  85. package/dist/skills/frontend/references/design/design-system-architecture.md +22 -19
  86. package/dist/skills/frontend/references/design/elevenlabs.md +3 -0
  87. package/dist/skills/frontend/references/design/expo.md +3 -0
  88. package/dist/skills/frontend/references/design/ferrari.md +3 -0
  89. package/dist/skills/frontend/references/design/figma.md +3 -0
  90. package/dist/skills/frontend/references/design/framer.md +3 -0
  91. package/dist/skills/frontend/references/design/hashicorp.md +3 -0
  92. package/dist/skills/frontend/references/design/ibm.md +3 -0
  93. package/dist/skills/frontend/references/design/imagegen-frontend-web.md +380 -79
  94. package/dist/skills/frontend/references/design/intercom.md +3 -0
  95. package/dist/skills/frontend/references/design/kraken.md +3 -0
  96. package/dist/skills/frontend/references/design/lamborghini.md +3 -0
  97. package/dist/skills/frontend/references/design/linear.app.md +3 -0
  98. package/dist/skills/frontend/references/design/lovable.md +3 -0
  99. package/dist/skills/frontend/references/design/mastercard.md +3 -0
  100. package/dist/skills/frontend/references/design/meta.md +3 -0
  101. package/dist/skills/frontend/references/design/minimax.md +3 -0
  102. package/dist/skills/frontend/references/design/mintlify.md +3 -0
  103. package/dist/skills/frontend/references/design/miro.md +3 -0
  104. package/dist/skills/frontend/references/design/mistral.ai.md +3 -0
  105. package/dist/skills/frontend/references/design/mongodb.md +3 -0
  106. package/dist/skills/frontend/references/design/nike.md +3 -0
  107. package/dist/skills/frontend/references/design/notion.md +3 -0
  108. package/dist/skills/frontend/references/design/nvidia.md +3 -0
  109. package/dist/skills/frontend/references/design/ollama.md +3 -0
  110. package/dist/skills/frontend/references/design/opencode.ai.md +3 -0
  111. package/dist/skills/frontend/references/design/pinterest.md +3 -0
  112. package/dist/skills/frontend/references/design/playstation.md +3 -0
  113. package/dist/skills/frontend/references/design/posthog.md +3 -0
  114. package/dist/skills/frontend/references/design/raycast.md +3 -0
  115. package/dist/skills/frontend/references/design/renault.md +3 -0
  116. package/dist/skills/frontend/references/design/replicate.md +3 -0
  117. package/dist/skills/frontend/references/design/resend.md +3 -0
  118. package/dist/skills/frontend/references/design/revolut.md +3 -0
  119. package/dist/skills/frontend/references/design/runwayml.md +3 -0
  120. package/dist/skills/frontend/references/design/sanity.md +3 -0
  121. package/dist/skills/frontend/references/design/sentry.md +3 -0
  122. package/dist/skills/frontend/references/design/shopify.md +3 -0
  123. package/dist/skills/frontend/references/design/spacex.md +3 -0
  124. package/dist/skills/frontend/references/design/spotify.md +3 -0
  125. package/dist/skills/frontend/references/design/starbucks.md +3 -0
  126. package/dist/skills/frontend/references/design/stitch-skill.md +1 -1
  127. package/dist/skills/frontend/references/design/stripe.md +3 -0
  128. package/dist/skills/frontend/references/design/supabase.md +3 -0
  129. package/dist/skills/frontend/references/design/superhuman.md +3 -0
  130. package/dist/skills/frontend/references/design/taste-skill.md +1188 -208
  131. package/dist/skills/frontend/references/design/tesla.md +3 -0
  132. package/dist/skills/frontend/references/design/theverge.md +3 -0
  133. package/dist/skills/frontend/references/design/together.ai.md +3 -0
  134. package/dist/skills/frontend/references/design/uber.md +3 -0
  135. package/dist/skills/frontend/references/design/vercel.md +3 -0
  136. package/dist/skills/frontend/references/design/vodafone.md +3 -0
  137. package/dist/skills/frontend/references/design/voltagent.md +3 -0
  138. package/dist/skills/frontend/references/design/warp.md +3 -0
  139. package/dist/skills/frontend/references/design/webflow.md +3 -0
  140. package/dist/skills/frontend/references/design/wired.md +3 -0
  141. package/dist/skills/frontend/references/design/wise.md +3 -0
  142. package/dist/skills/frontend/references/design/x.ai.md +3 -0
  143. package/dist/skills/frontend/references/design/zapier.md +3 -0
  144. package/dist/skills/frontend/references/designpowers/EVIDENCE.md +89 -0
  145. package/dist/skills/frontend/references/designpowers/README.md +48 -0
  146. package/dist/skills/frontend/references/designpowers/UPSTREAM.md +80 -0
  147. package/dist/skills/frontend/references/designpowers/lane-a-direction.md +64 -0
  148. package/dist/skills/frontend/references/designpowers/lane-b-execution.md +65 -0
  149. package/dist/skills/frontend/references/designpowers/lane-c-review.md +65 -0
  150. package/dist/skills/frontend/references/designpowers/lane-d-memory.md +83 -0
  151. package/dist/skills/frontend/references/designpowers/orchestration.md +80 -0
  152. package/dist/skills/frontend/references/designpowers/routing.md +79 -0
  153. package/dist/skills/frontend/references/designpowers/vendor/LICENSE +21 -0
  154. package/dist/skills/frontend/references/designpowers/vendor/agents/accessibility-reviewer.md +83 -0
  155. package/dist/skills/frontend/references/designpowers/vendor/agents/content-writer.md +132 -0
  156. package/dist/skills/frontend/references/designpowers/vendor/agents/design-builder.md +109 -0
  157. package/dist/skills/frontend/references/designpowers/vendor/agents/design-critic.md +89 -0
  158. package/dist/skills/frontend/references/designpowers/vendor/agents/design-lead.md +113 -0
  159. package/dist/skills/frontend/references/designpowers/vendor/agents/design-scout.md +78 -0
  160. package/dist/skills/frontend/references/designpowers/vendor/agents/design-strategist.md +121 -0
  161. package/dist/skills/frontend/references/designpowers/vendor/agents/heuristic-evaluator.md +268 -0
  162. package/dist/skills/frontend/references/designpowers/vendor/agents/inspiration-scout.md +107 -0
  163. package/dist/skills/frontend/references/designpowers/vendor/agents/motion-designer.md +120 -0
  164. package/dist/skills/frontend/references/designpowers/vendor/skills/accessible-content/SKILL.md +101 -0
  165. package/dist/skills/frontend/references/designpowers/vendor/skills/adaptive-interfaces/SKILL.md +109 -0
  166. package/dist/skills/frontend/references/designpowers/vendor/skills/cognitive-accessibility/SKILL.md +107 -0
  167. package/dist/skills/frontend/references/designpowers/vendor/skills/design-debate/SKILL.md +199 -0
  168. package/dist/skills/frontend/references/designpowers/vendor/skills/design-debt-tracker/SKILL.md +174 -0
  169. package/dist/skills/frontend/references/designpowers/vendor/skills/design-handoff/SKILL.md +125 -0
  170. package/dist/skills/frontend/references/designpowers/vendor/skills/design-md/SKILL.md +106 -0
  171. package/dist/skills/frontend/references/designpowers/vendor/skills/design-retrospective/SKILL.md +266 -0
  172. package/dist/skills/frontend/references/designpowers/vendor/skills/design-review/SKILL.md +123 -0
  173. package/dist/skills/frontend/references/designpowers/vendor/skills/design-system-alignment/SKILL.md +120 -0
  174. package/dist/skills/frontend/references/designpowers/vendor/skills/designpowers-critique/SKILL.md +164 -0
  175. package/dist/skills/frontend/references/designpowers/vendor/skills/heuristic-evaluation/SKILL.md +85 -0
  176. package/dist/skills/frontend/references/designpowers/vendor/skills/inclusive-personas/SKILL.md +98 -0
  177. package/dist/skills/frontend/references/designpowers/vendor/skills/inspiration-scouting/SKILL.md +165 -0
  178. package/dist/skills/frontend/references/designpowers/vendor/skills/interaction-design/SKILL.md +122 -0
  179. package/dist/skills/frontend/references/designpowers/vendor/skills/motion-choreography/SKILL.md +81 -0
  180. package/dist/skills/frontend/references/designpowers/vendor/skills/research-planning/SKILL.md +96 -0
  181. package/dist/skills/frontend/references/designpowers/vendor/skills/responsive-patterns/SKILL.md +77 -0
  182. package/dist/skills/frontend/references/designpowers/vendor/skills/synthetic-user-testing/SKILL.md +192 -0
  183. package/dist/skills/frontend/references/designpowers/vendor/skills/taste-feedback/SKILL.md +165 -0
  184. package/dist/skills/frontend/references/designpowers/vendor/skills/taste-report/SKILL.md +78 -0
  185. package/dist/skills/frontend/references/designpowers/vendor/skills/token-architecture/SKILL.md +75 -0
  186. package/dist/skills/frontend/references/designpowers/vendor/skills/ui-composition/SKILL.md +117 -0
  187. package/dist/skills/frontend/references/designpowers/vendor/skills/usability-testing/SKILL.md +78 -0
  188. package/dist/skills/frontend/references/designpowers/vendor/skills/verification-before-shipping/SKILL.md +125 -0
  189. package/dist/skills/frontend/references/designpowers/vendor/skills/voice-and-tone/SKILL.md +79 -0
  190. package/dist/skills/frontend/references/designpowers/vendor/skills/writing-design-plans/SKILL.md +119 -0
  191. package/dist/skills/frontend/references/ui-ux-db/README.md +501 -115
  192. package/dist/skills/frontend/references/ui-ux-db/data/charts.csv +26 -26
  193. package/dist/skills/frontend/references/ui-ux-db/data/colors.csv +162 -97
  194. package/dist/skills/frontend/references/ui-ux-db/data/icons.csv +105 -100
  195. package/dist/skills/frontend/references/ui-ux-db/data/landing.csv +22 -18
  196. package/dist/skills/frontend/references/ui-ux-db/data/products.csv +162 -97
  197. package/dist/skills/frontend/references/ui-ux-db/data/stacks/flutter.csv +53 -53
  198. package/dist/skills/frontend/references/ui-ux-db/data/stacks/html-tailwind.csv +56 -56
  199. package/dist/skills/frontend/references/ui-ux-db/data/stacks/nextjs.csv +53 -53
  200. package/dist/skills/frontend/references/ui-ux-db/data/stacks/react.csv +54 -54
  201. package/dist/skills/frontend/references/ui-ux-db/data/stacks/svelte.csv +54 -54
  202. package/dist/skills/frontend/references/ui-ux-db/data/stacks/swiftui.csv +51 -51
  203. package/dist/skills/frontend/references/ui-ux-db/data/stacks/vue.csv +50 -50
  204. package/dist/skills/frontend/references/ui-ux-db/data/styles.csv +17 -0
  205. package/dist/skills/frontend/references/ui-ux-db/data/typography.csv +17 -1
  206. package/dist/skills/frontend/references/ui-ux-db/data/ui-reasoning.csv +162 -101
  207. package/dist/skills/frontend/references/ui-ux-db/data/web-interface.csv +30 -30
  208. package/dist/skills/frontend/references/ui-ux-db/scripts/core.py +31 -22
  209. package/dist/skills/frontend/references/ui-ux-db/scripts/design_system.py +150 -69
  210. package/dist/skills/frontend/references/ui-ux-db/scripts/search.py +3 -3
  211. package/dist/skills/git-master/SKILL.md +4 -0
  212. package/dist/skills/lcx-doctor/SKILL.md +1 -1
  213. package/dist/skills/review-work/SKILL.md +3 -3
  214. package/dist/skills/start-work/SKILL.md +7 -5
  215. package/dist/skills/ultimate-browsing/ATTRIBUTION.md +105 -0
  216. package/dist/skills/ultimate-browsing/SKILL.md +140 -0
  217. package/dist/skills/ultimate-browsing/engine/__init__.py +24 -0
  218. package/dist/skills/ultimate-browsing/engine/__main__.py +106 -0
  219. package/dist/skills/ultimate-browsing/engine/bias_check.py +174 -0
  220. package/dist/skills/ultimate-browsing/engine/curl_probe.py +91 -0
  221. package/dist/skills/ultimate-browsing/engine/executor.py +192 -0
  222. package/dist/skills/ultimate-browsing/engine/fetch_chain.py +268 -0
  223. package/dist/skills/ultimate-browsing/engine/referers.py +15 -0
  224. package/dist/skills/ultimate-browsing/engine/result_schema.py +45 -0
  225. package/dist/skills/ultimate-browsing/engine/summary.py +37 -0
  226. package/dist/skills/ultimate-browsing/engine/templates/package.json +11 -0
  227. package/dist/skills/ultimate-browsing/engine/templates/playwright_mobile_chrome.js +129 -0
  228. package/dist/skills/ultimate-browsing/engine/templates/playwright_real_chrome.js +167 -0
  229. package/dist/skills/ultimate-browsing/engine/tests/test_fetch_chain.py +77 -0
  230. package/dist/skills/ultimate-browsing/engine/tests/test_playwright_templates.py +282 -0
  231. package/dist/skills/ultimate-browsing/engine/url_transforms.py +98 -0
  232. package/dist/skills/ultimate-browsing/engine/validators.py +216 -0
  233. package/dist/skills/ultimate-browsing/engine/waf_detector.py +214 -0
  234. package/dist/skills/ultimate-browsing/engine/waf_profiles.yaml +162 -0
  235. package/dist/skills/ultimate-browsing/references/agent-reach/README.md +79 -0
  236. package/dist/skills/ultimate-browsing/references/agent-reach/career.md +29 -0
  237. package/dist/skills/ultimate-browsing/references/agent-reach/dev.md +62 -0
  238. package/dist/skills/ultimate-browsing/references/agent-reach/search.md +33 -0
  239. package/dist/skills/ultimate-browsing/references/agent-reach/social.md +207 -0
  240. package/dist/skills/ultimate-browsing/references/agent-reach/video.md +115 -0
  241. package/dist/skills/ultimate-browsing/references/agent-reach/web.md +76 -0
  242. package/dist/skills/ultimate-browsing/references/chrome-stealth.md +120 -0
  243. package/dist/skills/ultimate-browsing/references/insane-search/README.md +319 -0
  244. package/dist/skills/ultimate-browsing/references/insane-search/cache-archive.md +83 -0
  245. package/dist/skills/ultimate-browsing/references/insane-search/fallback.md +159 -0
  246. package/dist/skills/ultimate-browsing/references/insane-search/jina.md +130 -0
  247. package/dist/skills/ultimate-browsing/references/insane-search/json-api.md +133 -0
  248. package/dist/skills/ultimate-browsing/references/insane-search/media.md +123 -0
  249. package/dist/skills/ultimate-browsing/references/insane-search/metadata.md +116 -0
  250. package/dist/skills/ultimate-browsing/references/insane-search/naver.md +107 -0
  251. package/dist/skills/ultimate-browsing/references/insane-search/playwright.md +142 -0
  252. package/dist/skills/ultimate-browsing/references/insane-search/public-api.md +119 -0
  253. package/dist/skills/ultimate-browsing/references/insane-search/rss.md +123 -0
  254. package/dist/skills/ultimate-browsing/references/insane-search/tls-impersonate.md +186 -0
  255. package/dist/skills/ultimate-browsing/references/insane-search/twitter.md +104 -0
  256. package/dist/skills/ultimate-browsing/scripts/cookie_crypto.py +75 -0
  257. package/dist/skills/ultimate-browsing/scripts/cookie_domains.py +38 -0
  258. package/dist/skills/ultimate-browsing/scripts/cookie_paths.py +112 -0
  259. package/dist/skills/ultimate-browsing/scripts/extract_cookies.py +280 -0
  260. package/dist/skills/ultimate-browsing/scripts/tests/test_cookie_domain_filter.py +110 -0
  261. package/dist/skills/ultimate-browsing/scripts/tests/test_extract_cookies.py +245 -0
  262. package/dist/skills/ultraresearch/SKILL.md +4 -233
  263. package/dist/skills/ulw-plan/SKILL.md +9 -4
  264. package/dist/skills/ulw-plan/references/full-workflow.md +11 -6
  265. package/dist/skills/ulw-plan/references/intent-clear.md +3 -3
  266. package/dist/skills/ulw-plan/references/intent-unclear.md +1 -1
  267. package/dist/skills/ulw-research/ATTRIBUTION.md +49 -0
  268. package/dist/skills/ulw-research/SKILL.md +260 -0
  269. package/dist/skills/visual-qa/SKILL.md +105 -14
  270. package/dist/skills/visual-qa/scripts/skill-prompt-contract.test.ts +120 -1
  271. package/dist/testing/create-plugin-module.d.ts +2 -0
  272. package/dist/tools/delegate-task/sync-task-deps.d.ts +8 -6
  273. package/dist/tools/skill-mcp/tools.d.ts +1 -1
  274. package/dist/tui.js +23924 -16116
  275. package/docs/reference/github-attachment-upload.md +51 -0
  276. package/docs/reference/web-terminal-visual-qa.md +81 -0
  277. package/package.json +23 -15
  278. package/packages/lsp-core/src/lsp/process.ts +4 -1
  279. package/packages/lsp-core/src/mcp.ts +1 -0
  280. package/packages/lsp-daemon/dist/cli.js +5 -1
  281. package/packages/lsp-daemon/dist/index.js +5 -1
  282. package/packages/lsp-daemon/dist/proxy.js +1 -0
  283. package/packages/lsp-tools-mcp/dist/cli.js +5 -1
  284. package/packages/lsp-tools-mcp/dist/lsp/manager.js +4 -1
  285. package/packages/lsp-tools-mcp/dist/mcp.js +5 -1
  286. package/packages/lsp-tools-mcp/dist/tools.js +4 -1
  287. package/packages/omo-codex/THIRD-PARTY-NOTICES.md +27 -4
  288. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  289. package/packages/omo-codex/plugin/README.md +1 -1
  290. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +447 -94
  291. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  292. package/packages/omo-codex/plugin/components/bootstrap/scripts/bootstrap.ps1 +37 -68
  293. package/packages/omo-codex/plugin/components/bootstrap/scripts/node-dispatch.ps1 +75 -0
  294. package/packages/omo-codex/plugin/components/bootstrap/src/cli.ts +1 -1
  295. package/packages/omo-codex/plugin/components/bootstrap/src/setup.ts +2 -18
  296. package/packages/omo-codex/plugin/components/codegraph/LICENSE +21 -0
  297. package/packages/omo-codex/plugin/components/codegraph/NODE-RUNTIME-LICENSES.md +2951 -0
  298. package/packages/omo-codex/plugin/components/codegraph/NOTICE +16 -0
  299. package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +889 -364
  300. package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +497 -59
  301. package/packages/omo-codex/plugin/components/codegraph/package.json +10 -4
  302. package/packages/omo-codex/plugin/components/codegraph/src/hook-types.ts +7 -1
  303. package/packages/omo-codex/plugin/components/codegraph/src/hook.ts +103 -3
  304. package/packages/omo-codex/plugin/components/codegraph/src/mcp-bridge.ts +114 -0
  305. package/packages/omo-codex/plugin/components/codegraph/src/mcp-unavailable.ts +75 -0
  306. package/packages/omo-codex/plugin/components/codegraph/src/serve-invocation.ts +29 -0
  307. package/packages/omo-codex/plugin/components/codegraph/src/serve.ts +60 -70
  308. package/packages/omo-codex/plugin/components/codegraph/src/session-start-worker.ts +27 -11
  309. package/packages/omo-codex/plugin/components/codegraph/test/hook.test.ts +31 -239
  310. package/packages/omo-codex/plugin/components/codegraph/test/package-runtime.test.ts +91 -0
  311. package/packages/omo-codex/plugin/components/codegraph/test/provisioned-node-guard.test.ts +1 -1
  312. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge.test.ts +146 -0
  313. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-facade.test.ts +68 -0
  314. package/packages/omo-codex/plugin/components/codegraph/test/serve-node-support.test.ts +11 -1
  315. package/packages/omo-codex/plugin/components/codegraph/test/serve-unavailable.test.ts +133 -0
  316. package/packages/omo-codex/plugin/components/codegraph/test/serve.test.ts +13 -120
  317. package/packages/omo-codex/plugin/components/codegraph/test/session-start-node-support.test.ts +8 -1
  318. package/packages/omo-codex/plugin/components/codegraph/test/session-start-trust-boundary.test.ts +63 -0
  319. package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-availability.test.ts +106 -0
  320. package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-flow.test.ts +220 -0
  321. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  322. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  323. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  324. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +4 -1
  325. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  326. package/packages/omo-codex/plugin/components/rules/dist/cli.js +3 -3
  327. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  328. package/packages/omo-codex/plugin/components/rules/src/sparkshell-awareness.ts +3 -3
  329. package/packages/omo-codex/plugin/components/rules/test/sparkshell-awareness.test.ts +42 -9
  330. package/packages/omo-codex/plugin/components/start-work-continuation/directive.md +6 -6
  331. package/packages/omo-codex/plugin/components/start-work-continuation/package.json +1 -1
  332. package/packages/omo-codex/plugin/components/start-work-continuation/test/codex-hook.test.ts +23 -0
  333. package/packages/omo-codex/plugin/components/teammode/dist/cli.js +22 -4
  334. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  335. package/packages/omo-codex/plugin/components/teammode/skills/teammode/SKILL.md +97 -32
  336. package/packages/omo-codex/plugin/components/teammode/skills/teammode/scripts/team-guide.mjs +48 -20
  337. package/packages/omo-codex/plugin/components/teammode/skills/teammode/scripts/team-state.mjs +70 -3
  338. package/packages/omo-codex/plugin/components/teammode/skills/teammode/scripts/team-worktree.mjs +113 -0
  339. package/packages/omo-codex/plugin/components/teammode/skills/teammode/scripts/team.mjs +69 -6
  340. package/packages/omo-codex/plugin/components/teammode/src/codex-hook.ts +19 -4
  341. package/packages/omo-codex/plugin/components/teammode/test/thread-title-hook.test.ts +32 -2
  342. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  343. package/packages/omo-codex/plugin/components/ultrawork/README.md +1 -1
  344. package/packages/omo-codex/plugin/components/ultrawork/agents/explorer.toml +1 -1
  345. package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +2 -2
  346. package/packages/omo-codex/plugin/components/ultrawork/directive.md +24 -7
  347. package/packages/omo-codex/plugin/components/ultrawork/dist/cli.js +1 -1
  348. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  349. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +6 -4
  350. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +11 -6
  351. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-clear.md +3 -3
  352. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-unclear.md +1 -1
  353. package/packages/omo-codex/plugin/components/ultrawork/src/codex-hook.ts +1 -1
  354. package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook-trigger-policy.test.ts +24 -0
  355. package/packages/omo-codex/plugin/components/ultrawork/test/package-smoke.test.ts +29 -3
  356. package/packages/omo-codex/plugin/components/ulw-loop/AGENTS.md +1 -1
  357. package/packages/omo-codex/plugin/components/ulw-loop/README.md +25 -21
  358. package/packages/omo-codex/plugin/components/ulw-loop/biome.json +1 -1
  359. package/packages/omo-codex/plugin/components/ulw-loop/directive.md +381 -0
  360. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-steering.js +14 -1
  361. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +145 -14
  362. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-hook.d.ts +6 -3
  363. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-hook.js +16 -6
  364. package/packages/omo-codex/plugin/components/ulw-loop/dist/ultrawork-directive.d.ts +5 -0
  365. package/packages/omo-codex/plugin/components/ulw-loop/dist/ultrawork-directive.js +104 -0
  366. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +1 -1
  367. package/packages/omo-codex/plugin/components/ulw-loop/package.json +2 -1
  368. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +23 -14
  369. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-steering.ts +14 -1
  370. package/packages/omo-codex/plugin/components/ulw-loop/src/cli.ts +4 -2
  371. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-hook.ts +28 -6
  372. package/packages/omo-codex/plugin/components/ulw-loop/src/ultrawork-directive.ts +113 -0
  373. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-entrypoint.test.ts +33 -2
  374. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-steering-kind-guidance.test.ts +31 -0
  375. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-hook.test.ts +13 -0
  376. package/packages/omo-codex/plugin/components/ulw-loop/test/package-smoke.test.ts +36 -0
  377. package/packages/omo-codex/plugin/components/ulw-loop/test/skill-contract.test.ts +13 -1
  378. package/packages/omo-codex/plugin/components/ulw-loop/test/ultrawork-directive.test.ts +64 -0
  379. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +2 -1
  380. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +2 -1
  381. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +2 -1
  382. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +2 -1
  383. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +2 -1
  384. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +2 -1
  385. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +2 -1
  386. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +2 -1
  387. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +2 -1
  388. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +2 -1
  389. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +2 -1
  390. package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +2 -1
  391. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +2 -1
  392. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +2 -1
  393. package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +2 -1
  394. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +2 -1
  395. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +2 -1
  396. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +2 -1
  397. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +2 -1
  398. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +2 -1
  399. package/packages/omo-codex/plugin/package-lock.json +112 -13
  400. package/packages/omo-codex/plugin/package.json +2 -2
  401. package/packages/omo-codex/plugin/scripts/auto-update-plan.mjs +133 -0
  402. package/packages/omo-codex/plugin/scripts/auto-update-release-notes.mjs +135 -0
  403. package/packages/omo-codex/plugin/scripts/auto-update.mjs +42 -138
  404. package/packages/omo-codex/plugin/scripts/materialize-shared-upstreams.mjs +42 -0
  405. package/packages/omo-codex/plugin/scripts/migrate-codex-config/context7-placeholder-guard.mjs +131 -0
  406. package/packages/omo-codex/plugin/scripts/migrate-codex-config/multi-agent-mode-guard.mjs +60 -0
  407. package/packages/omo-codex/plugin/scripts/migrate-codex-config/multi-agent-v2-guard.mjs +3 -10
  408. package/packages/omo-codex/plugin/scripts/migrate-codex-config/root-settings.mjs +31 -1
  409. package/packages/omo-codex/plugin/scripts/migrate-codex-config/subagent-limit-guard.mjs +73 -0
  410. package/packages/omo-codex/plugin/scripts/migrate-codex-config.mjs +20 -3
  411. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +30 -8
  412. package/packages/omo-codex/plugin/shared/src/config-loader.ts +20 -2
  413. package/packages/omo-codex/plugin/shared/test/config-loader.test.ts +16 -0
  414. package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +128 -0
  415. package/packages/omo-codex/plugin/skills/coding-agent-sessions/agents/openai.yaml +4 -0
  416. package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/all-platforms.md +71 -0
  417. package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/claude.md +32 -0
  418. package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/codex.md +30 -0
  419. package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/opencode.md +43 -0
  420. package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/senpi.md +17 -0
  421. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/__init__.py +1 -0
  422. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/claude.py +66 -0
  423. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/cli.py +283 -0
  424. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/codex.py +105 -0
  425. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/file_scanners.py +275 -0
  426. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/jsonio.py +55 -0
  427. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/kiro_scanner.py +91 -0
  428. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/opencode.py +289 -0
  429. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +92 -0
  430. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/sqlite_optional_scanners.py +203 -0
  431. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/sqlite_scanners.py +177 -0
  432. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/timeparse.py +51 -0
  433. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/transcript.py +149 -0
  434. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/types.py +57 -0
  435. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/find-agent-sessions.py +19 -0
  436. package/packages/omo-codex/plugin/skills/frontend/ATTRIBUTION.md +77 -9
  437. package/packages/omo-codex/plugin/skills/frontend/SKILL.md +29 -8
  438. package/packages/omo-codex/plugin/skills/frontend/references/design/README.md +29 -12
  439. package/packages/omo-codex/plugin/skills/frontend/references/design/_INDEX.md +3 -3
  440. package/packages/omo-codex/plugin/skills/frontend/references/design/airbnb.md +3 -0
  441. package/packages/omo-codex/plugin/skills/frontend/references/design/airtable.md +3 -0
  442. package/packages/omo-codex/plugin/skills/frontend/references/design/apple.md +3 -0
  443. package/packages/omo-codex/plugin/skills/frontend/references/design/binance.md +3 -0
  444. package/packages/omo-codex/plugin/skills/frontend/references/design/bmw.md +3 -0
  445. package/packages/omo-codex/plugin/skills/frontend/references/design/bugatti.md +3 -0
  446. package/packages/omo-codex/plugin/skills/frontend/references/design/cal.md +3 -0
  447. package/packages/omo-codex/plugin/skills/frontend/references/design/claude.md +3 -0
  448. package/packages/omo-codex/plugin/skills/frontend/references/design/clay.md +3 -0
  449. package/packages/omo-codex/plugin/skills/frontend/references/design/clickhouse.md +3 -0
  450. package/packages/omo-codex/plugin/skills/frontend/references/design/cohere.md +3 -0
  451. package/packages/omo-codex/plugin/skills/frontend/references/design/coinbase.md +3 -0
  452. package/packages/omo-codex/plugin/skills/frontend/references/design/composio.md +3 -0
  453. package/packages/omo-codex/plugin/skills/frontend/references/design/cursor.md +3 -0
  454. package/packages/omo-codex/plugin/skills/frontend/references/design/design-system-architecture.md +22 -19
  455. package/packages/omo-codex/plugin/skills/frontend/references/design/elevenlabs.md +3 -0
  456. package/packages/omo-codex/plugin/skills/frontend/references/design/expo.md +3 -0
  457. package/packages/omo-codex/plugin/skills/frontend/references/design/ferrari.md +3 -0
  458. package/packages/omo-codex/plugin/skills/frontend/references/design/figma.md +3 -0
  459. package/packages/omo-codex/plugin/skills/frontend/references/design/framer.md +3 -0
  460. package/packages/omo-codex/plugin/skills/frontend/references/design/hashicorp.md +3 -0
  461. package/packages/omo-codex/plugin/skills/frontend/references/design/ibm.md +3 -0
  462. package/packages/omo-codex/plugin/skills/frontend/references/design/imagegen-frontend-web.md +380 -79
  463. package/packages/omo-codex/plugin/skills/frontend/references/design/intercom.md +3 -0
  464. package/packages/omo-codex/plugin/skills/frontend/references/design/kraken.md +3 -0
  465. package/packages/omo-codex/plugin/skills/frontend/references/design/lamborghini.md +3 -0
  466. package/packages/omo-codex/plugin/skills/frontend/references/design/linear.app.md +3 -0
  467. package/packages/omo-codex/plugin/skills/frontend/references/design/lovable.md +3 -0
  468. package/packages/omo-codex/plugin/skills/frontend/references/design/mastercard.md +3 -0
  469. package/packages/omo-codex/plugin/skills/frontend/references/design/meta.md +3 -0
  470. package/packages/omo-codex/plugin/skills/frontend/references/design/minimax.md +3 -0
  471. package/packages/omo-codex/plugin/skills/frontend/references/design/mintlify.md +3 -0
  472. package/packages/omo-codex/plugin/skills/frontend/references/design/miro.md +3 -0
  473. package/packages/omo-codex/plugin/skills/frontend/references/design/mistral.ai.md +3 -0
  474. package/packages/omo-codex/plugin/skills/frontend/references/design/mongodb.md +3 -0
  475. package/packages/omo-codex/plugin/skills/frontend/references/design/nike.md +3 -0
  476. package/packages/omo-codex/plugin/skills/frontend/references/design/notion.md +3 -0
  477. package/packages/omo-codex/plugin/skills/frontend/references/design/nvidia.md +3 -0
  478. package/packages/omo-codex/plugin/skills/frontend/references/design/ollama.md +3 -0
  479. package/packages/omo-codex/plugin/skills/frontend/references/design/opencode.ai.md +3 -0
  480. package/packages/omo-codex/plugin/skills/frontend/references/design/pinterest.md +3 -0
  481. package/packages/omo-codex/plugin/skills/frontend/references/design/playstation.md +3 -0
  482. package/packages/omo-codex/plugin/skills/frontend/references/design/posthog.md +3 -0
  483. package/packages/omo-codex/plugin/skills/frontend/references/design/raycast.md +3 -0
  484. package/packages/omo-codex/plugin/skills/frontend/references/design/renault.md +3 -0
  485. package/packages/omo-codex/plugin/skills/frontend/references/design/replicate.md +3 -0
  486. package/packages/omo-codex/plugin/skills/frontend/references/design/resend.md +3 -0
  487. package/packages/omo-codex/plugin/skills/frontend/references/design/revolut.md +3 -0
  488. package/packages/omo-codex/plugin/skills/frontend/references/design/runwayml.md +3 -0
  489. package/packages/omo-codex/plugin/skills/frontend/references/design/sanity.md +3 -0
  490. package/packages/omo-codex/plugin/skills/frontend/references/design/sentry.md +3 -0
  491. package/packages/omo-codex/plugin/skills/frontend/references/design/shopify.md +3 -0
  492. package/packages/omo-codex/plugin/skills/frontend/references/design/spacex.md +3 -0
  493. package/packages/omo-codex/plugin/skills/frontend/references/design/spotify.md +3 -0
  494. package/packages/omo-codex/plugin/skills/frontend/references/design/starbucks.md +3 -0
  495. package/packages/omo-codex/plugin/skills/frontend/references/design/stitch-skill.md +1 -1
  496. package/packages/omo-codex/plugin/skills/frontend/references/design/stripe.md +3 -0
  497. package/packages/omo-codex/plugin/skills/frontend/references/design/supabase.md +3 -0
  498. package/packages/omo-codex/plugin/skills/frontend/references/design/superhuman.md +3 -0
  499. package/packages/omo-codex/plugin/skills/frontend/references/design/taste-skill.md +1188 -208
  500. package/packages/omo-codex/plugin/skills/frontend/references/design/tesla.md +3 -0
  501. package/packages/omo-codex/plugin/skills/frontend/references/design/theverge.md +3 -0
  502. package/packages/omo-codex/plugin/skills/frontend/references/design/together.ai.md +3 -0
  503. package/packages/omo-codex/plugin/skills/frontend/references/design/uber.md +3 -0
  504. package/packages/omo-codex/plugin/skills/frontend/references/design/vercel.md +3 -0
  505. package/packages/omo-codex/plugin/skills/frontend/references/design/vodafone.md +3 -0
  506. package/packages/omo-codex/plugin/skills/frontend/references/design/voltagent.md +3 -0
  507. package/packages/omo-codex/plugin/skills/frontend/references/design/warp.md +3 -0
  508. package/packages/omo-codex/plugin/skills/frontend/references/design/webflow.md +3 -0
  509. package/packages/omo-codex/plugin/skills/frontend/references/design/wired.md +3 -0
  510. package/packages/omo-codex/plugin/skills/frontend/references/design/wise.md +3 -0
  511. package/packages/omo-codex/plugin/skills/frontend/references/design/x.ai.md +3 -0
  512. package/packages/omo-codex/plugin/skills/frontend/references/design/zapier.md +3 -0
  513. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/EVIDENCE.md +89 -0
  514. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/README.md +48 -0
  515. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/UPSTREAM.md +80 -0
  516. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-a-direction.md +64 -0
  517. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-b-execution.md +65 -0
  518. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-c-review.md +65 -0
  519. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-d-memory.md +83 -0
  520. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/orchestration.md +80 -0
  521. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/routing.md +79 -0
  522. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/LICENSE +21 -0
  523. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/accessibility-reviewer.md +83 -0
  524. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/content-writer.md +132 -0
  525. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/design-builder.md +109 -0
  526. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/design-critic.md +89 -0
  527. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/design-lead.md +113 -0
  528. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/design-scout.md +78 -0
  529. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/design-strategist.md +121 -0
  530. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/heuristic-evaluator.md +268 -0
  531. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/inspiration-scout.md +107 -0
  532. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/motion-designer.md +120 -0
  533. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/accessible-content/SKILL.md +101 -0
  534. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/adaptive-interfaces/SKILL.md +109 -0
  535. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/cognitive-accessibility/SKILL.md +107 -0
  536. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-debate/SKILL.md +199 -0
  537. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-debt-tracker/SKILL.md +174 -0
  538. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-handoff/SKILL.md +125 -0
  539. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-md/SKILL.md +106 -0
  540. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-retrospective/SKILL.md +266 -0
  541. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-review/SKILL.md +123 -0
  542. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-system-alignment/SKILL.md +120 -0
  543. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/designpowers-critique/SKILL.md +164 -0
  544. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/heuristic-evaluation/SKILL.md +85 -0
  545. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/inclusive-personas/SKILL.md +98 -0
  546. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/inspiration-scouting/SKILL.md +165 -0
  547. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/interaction-design/SKILL.md +122 -0
  548. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/motion-choreography/SKILL.md +81 -0
  549. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/research-planning/SKILL.md +96 -0
  550. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/responsive-patterns/SKILL.md +77 -0
  551. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/synthetic-user-testing/SKILL.md +192 -0
  552. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/taste-feedback/SKILL.md +165 -0
  553. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/taste-report/SKILL.md +78 -0
  554. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/token-architecture/SKILL.md +75 -0
  555. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/ui-composition/SKILL.md +117 -0
  556. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/usability-testing/SKILL.md +78 -0
  557. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/verification-before-shipping/SKILL.md +125 -0
  558. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/voice-and-tone/SKILL.md +79 -0
  559. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/writing-design-plans/SKILL.md +119 -0
  560. package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/README.md +501 -115
  561. package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/charts.csv +26 -26
  562. package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/colors.csv +162 -97
  563. package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/icons.csv +105 -100
  564. package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/landing.csv +22 -18
  565. package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/products.csv +162 -97
  566. package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/stacks/flutter.csv +53 -53
  567. package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/stacks/html-tailwind.csv +56 -56
  568. package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/stacks/nextjs.csv +53 -53
  569. package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/stacks/react.csv +54 -54
  570. package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/stacks/svelte.csv +54 -54
  571. package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/stacks/swiftui.csv +51 -51
  572. package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/stacks/vue.csv +50 -50
  573. package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/styles.csv +17 -0
  574. package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/typography.csv +17 -1
  575. package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/ui-reasoning.csv +162 -101
  576. package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/web-interface.csv +30 -30
  577. package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/scripts/core.py +31 -22
  578. package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/scripts/design_system.py +150 -69
  579. package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/scripts/search.py +3 -3
  580. package/packages/omo-codex/plugin/skills/git-master/SKILL.md +4 -0
  581. package/packages/omo-codex/plugin/skills/init-deep/SKILL.md +4 -0
  582. package/packages/omo-codex/plugin/skills/lcx-doctor/SKILL.md +1 -1
  583. package/packages/omo-codex/plugin/skills/refactor/SKILL.md +4 -0
  584. package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +4 -0
  585. package/packages/omo-codex/plugin/skills/review-work/SKILL.md +12 -4
  586. package/packages/omo-codex/plugin/skills/start-work/SKILL.md +14 -8
  587. package/packages/omo-codex/plugin/skills/teammode/SKILL.md +97 -32
  588. package/packages/omo-codex/plugin/skills/teammode/scripts/team-guide.mjs +48 -20
  589. package/packages/omo-codex/plugin/skills/teammode/scripts/team-state.mjs +70 -3
  590. package/packages/omo-codex/plugin/skills/teammode/scripts/team-worktree.mjs +113 -0
  591. package/packages/omo-codex/plugin/skills/teammode/scripts/team.mjs +69 -6
  592. package/packages/omo-codex/plugin/skills/ultimate-browsing/ATTRIBUTION.md +105 -0
  593. package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +140 -0
  594. package/packages/omo-codex/plugin/skills/ultimate-browsing/agents/openai.yaml +2 -0
  595. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/__init__.py +24 -0
  596. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/__main__.py +106 -0
  597. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/bias_check.py +174 -0
  598. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/curl_probe.py +91 -0
  599. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/executor.py +192 -0
  600. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/fetch_chain.py +268 -0
  601. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/referers.py +15 -0
  602. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/result_schema.py +45 -0
  603. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/summary.py +37 -0
  604. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/package.json +11 -0
  605. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/playwright_mobile_chrome.js +129 -0
  606. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/playwright_real_chrome.js +167 -0
  607. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/test_fetch_chain.py +77 -0
  608. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/test_playwright_templates.py +282 -0
  609. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/url_transforms.py +98 -0
  610. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/validators.py +216 -0
  611. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/waf_detector.py +214 -0
  612. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/waf_profiles.yaml +162 -0
  613. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/agent-reach/README.md +79 -0
  614. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/agent-reach/career.md +29 -0
  615. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/agent-reach/dev.md +62 -0
  616. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/agent-reach/search.md +33 -0
  617. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/agent-reach/social.md +207 -0
  618. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/agent-reach/video.md +115 -0
  619. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/agent-reach/web.md +76 -0
  620. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +120 -0
  621. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/README.md +319 -0
  622. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/cache-archive.md +83 -0
  623. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/fallback.md +159 -0
  624. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/jina.md +130 -0
  625. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/json-api.md +133 -0
  626. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/media.md +123 -0
  627. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/metadata.md +116 -0
  628. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/naver.md +107 -0
  629. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/playwright.md +142 -0
  630. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/public-api.md +119 -0
  631. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/rss.md +123 -0
  632. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/tls-impersonate.md +186 -0
  633. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/twitter.md +104 -0
  634. package/packages/omo-codex/plugin/skills/ultimate-browsing/scripts/cookie_crypto.py +75 -0
  635. package/packages/omo-codex/plugin/skills/ultimate-browsing/scripts/cookie_domains.py +38 -0
  636. package/packages/omo-codex/plugin/skills/ultimate-browsing/scripts/cookie_paths.py +112 -0
  637. package/packages/omo-codex/plugin/skills/ultimate-browsing/scripts/extract_cookies.py +280 -0
  638. package/packages/omo-codex/plugin/skills/ultraresearch/SKILL.md +4 -231
  639. package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +23 -14
  640. package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +6 -4
  641. package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +11 -6
  642. package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-clear.md +3 -3
  643. package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-unclear.md +1 -1
  644. package/packages/omo-codex/plugin/skills/ulw-research/ATTRIBUTION.md +49 -0
  645. package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +262 -0
  646. package/packages/omo-codex/plugin/skills/ulw-research/agents/openai.yaml +2 -0
  647. package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +109 -14
  648. package/packages/omo-codex/plugin/test/aggregate-build.test.mjs +2 -1
  649. package/packages/omo-codex/plugin/test/aggregate-hooks.test.mjs +23 -0
  650. package/packages/omo-codex/plugin/test/aggregate-manifest.test.mjs +1 -0
  651. package/packages/omo-codex/plugin/test/auto-update-release-notes.test.mjs +96 -0
  652. package/packages/omo-codex/plugin/test/auto-update-restart-notice.test.mjs +36 -4
  653. package/packages/omo-codex/plugin/test/bootstrap-binlinks.test.mjs +23 -5
  654. package/packages/omo-codex/plugin/test/bootstrap-hooks.test.mjs +38 -0
  655. package/packages/omo-codex/plugin/test/bootstrap-ps-guard.test.mjs +25 -0
  656. package/packages/omo-codex/plugin/test/bootstrap-setup.test.mjs +1 -7
  657. package/packages/omo-codex/plugin/test/component-codegraph-mcp-smoke.test.mjs +76 -0
  658. package/packages/omo-codex/plugin/test/migrate-codex-config.test.mjs +206 -6
  659. package/packages/omo-codex/plugin/test/subagent-limit-migration.test.mjs +44 -0
  660. package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +50 -1
  661. package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +11 -7
  662. package/packages/omo-codex/plugin/test/sync-skills.test.mjs +28 -2
  663. package/packages/omo-codex/plugin/test/teammode-communication.test.mjs +107 -0
  664. package/packages/omo-codex/plugin/test/teammode-thread-links.test.mjs +117 -0
  665. package/packages/omo-codex/plugin/test/teammode-thread-title.test.mjs +169 -0
  666. package/packages/omo-codex/plugin/test/teammode-worktree.test.mjs +249 -0
  667. package/packages/omo-codex/plugin/test/ulw-research-skill-contract.test.mjs +285 -0
  668. package/packages/omo-codex/scripts/install-bin-links.test.mjs +6 -1
  669. package/packages/omo-codex/scripts/install-cache-copy.test.mjs +51 -0
  670. package/packages/omo-codex/scripts/install-cli-args.test.mjs +1 -1
  671. package/packages/omo-codex/scripts/install-config-git-bash.test.mjs +23 -0
  672. package/packages/omo-codex/scripts/install-config.test.mjs +198 -17
  673. package/packages/omo-codex/scripts/install-delegated-command.test.mjs +76 -4
  674. package/packages/omo-codex/scripts/install-dist/install-local.mjs +1021 -298
  675. package/packages/omo-codex/scripts/install-local-entrypoint.test.mjs +40 -3
  676. package/packages/omo-codex/scripts/install-local-git-bash-preflight.test.mjs +24 -15
  677. package/packages/omo-codex/scripts/install-local.test.mjs +5 -1
  678. package/packages/omo-codex/scripts/install-mcp-context7-runtime.test.mjs +84 -0
  679. package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +128 -0
  680. package/packages/shared-skills/skills/coding-agent-sessions/agents/openai.yaml +4 -0
  681. package/packages/shared-skills/skills/coding-agent-sessions/references/all-platforms.md +71 -0
  682. package/packages/shared-skills/skills/coding-agent-sessions/references/claude.md +32 -0
  683. package/packages/shared-skills/skills/coding-agent-sessions/references/codex.md +30 -0
  684. package/packages/shared-skills/skills/coding-agent-sessions/references/opencode.md +43 -0
  685. package/packages/shared-skills/skills/coding-agent-sessions/references/senpi.md +17 -0
  686. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/__init__.py +1 -0
  687. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/claude.py +66 -0
  688. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/cli.py +283 -0
  689. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/codex.py +105 -0
  690. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/file_scanners.py +275 -0
  691. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/jsonio.py +55 -0
  692. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/kiro_scanner.py +91 -0
  693. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/opencode.py +289 -0
  694. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +92 -0
  695. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/sqlite_optional_scanners.py +203 -0
  696. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/sqlite_scanners.py +177 -0
  697. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/timeparse.py +51 -0
  698. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/transcript.py +149 -0
  699. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/types.py +57 -0
  700. package/packages/shared-skills/skills/coding-agent-sessions/scripts/find-agent-sessions.py +19 -0
  701. package/packages/shared-skills/skills/frontend/ATTRIBUTION.md +77 -9
  702. package/packages/shared-skills/skills/frontend/SKILL.md +29 -8
  703. package/packages/shared-skills/skills/frontend/references/design/README.md +29 -12
  704. package/packages/shared-skills/skills/frontend/references/design/_INDEX.md +3 -3
  705. package/packages/shared-skills/skills/frontend/references/design/airbnb.md +3 -0
  706. package/packages/shared-skills/skills/frontend/references/design/airtable.md +3 -0
  707. package/packages/shared-skills/skills/frontend/references/design/apple.md +3 -0
  708. package/packages/shared-skills/skills/frontend/references/design/binance.md +3 -0
  709. package/packages/shared-skills/skills/frontend/references/design/bmw.md +3 -0
  710. package/packages/shared-skills/skills/frontend/references/design/bugatti.md +3 -0
  711. package/packages/shared-skills/skills/frontend/references/design/cal.md +3 -0
  712. package/packages/shared-skills/skills/frontend/references/design/claude.md +3 -0
  713. package/packages/shared-skills/skills/frontend/references/design/clay.md +3 -0
  714. package/packages/shared-skills/skills/frontend/references/design/clickhouse.md +3 -0
  715. package/packages/shared-skills/skills/frontend/references/design/cohere.md +3 -0
  716. package/packages/shared-skills/skills/frontend/references/design/coinbase.md +3 -0
  717. package/packages/shared-skills/skills/frontend/references/design/composio.md +3 -0
  718. package/packages/shared-skills/skills/frontend/references/design/cursor.md +3 -0
  719. package/packages/shared-skills/skills/frontend/references/design/design-system-architecture.md +22 -19
  720. package/packages/shared-skills/skills/frontend/references/design/elevenlabs.md +3 -0
  721. package/packages/shared-skills/skills/frontend/references/design/expo.md +3 -0
  722. package/packages/shared-skills/skills/frontend/references/design/ferrari.md +3 -0
  723. package/packages/shared-skills/skills/frontend/references/design/figma.md +3 -0
  724. package/packages/shared-skills/skills/frontend/references/design/framer.md +3 -0
  725. package/packages/shared-skills/skills/frontend/references/design/hashicorp.md +3 -0
  726. package/packages/shared-skills/skills/frontend/references/design/ibm.md +3 -0
  727. package/packages/shared-skills/skills/frontend/references/design/imagegen-frontend-web.md +380 -79
  728. package/packages/shared-skills/skills/frontend/references/design/intercom.md +3 -0
  729. package/packages/shared-skills/skills/frontend/references/design/kraken.md +3 -0
  730. package/packages/shared-skills/skills/frontend/references/design/lamborghini.md +3 -0
  731. package/packages/shared-skills/skills/frontend/references/design/linear.app.md +3 -0
  732. package/packages/shared-skills/skills/frontend/references/design/lovable.md +3 -0
  733. package/packages/shared-skills/skills/frontend/references/design/mastercard.md +3 -0
  734. package/packages/shared-skills/skills/frontend/references/design/meta.md +3 -0
  735. package/packages/shared-skills/skills/frontend/references/design/minimax.md +3 -0
  736. package/packages/shared-skills/skills/frontend/references/design/mintlify.md +3 -0
  737. package/packages/shared-skills/skills/frontend/references/design/miro.md +3 -0
  738. package/packages/shared-skills/skills/frontend/references/design/mistral.ai.md +3 -0
  739. package/packages/shared-skills/skills/frontend/references/design/mongodb.md +3 -0
  740. package/packages/shared-skills/skills/frontend/references/design/nike.md +3 -0
  741. package/packages/shared-skills/skills/frontend/references/design/notion.md +3 -0
  742. package/packages/shared-skills/skills/frontend/references/design/nvidia.md +3 -0
  743. package/packages/shared-skills/skills/frontend/references/design/ollama.md +3 -0
  744. package/packages/shared-skills/skills/frontend/references/design/opencode.ai.md +3 -0
  745. package/packages/shared-skills/skills/frontend/references/design/pinterest.md +3 -0
  746. package/packages/shared-skills/skills/frontend/references/design/playstation.md +3 -0
  747. package/packages/shared-skills/skills/frontend/references/design/posthog.md +3 -0
  748. package/packages/shared-skills/skills/frontend/references/design/raycast.md +3 -0
  749. package/packages/shared-skills/skills/frontend/references/design/renault.md +3 -0
  750. package/packages/shared-skills/skills/frontend/references/design/replicate.md +3 -0
  751. package/packages/shared-skills/skills/frontend/references/design/resend.md +3 -0
  752. package/packages/shared-skills/skills/frontend/references/design/revolut.md +3 -0
  753. package/packages/shared-skills/skills/frontend/references/design/runwayml.md +3 -0
  754. package/packages/shared-skills/skills/frontend/references/design/sanity.md +3 -0
  755. package/packages/shared-skills/skills/frontend/references/design/sentry.md +3 -0
  756. package/packages/shared-skills/skills/frontend/references/design/shopify.md +3 -0
  757. package/packages/shared-skills/skills/frontend/references/design/spacex.md +3 -0
  758. package/packages/shared-skills/skills/frontend/references/design/spotify.md +3 -0
  759. package/packages/shared-skills/skills/frontend/references/design/starbucks.md +3 -0
  760. package/packages/shared-skills/skills/frontend/references/design/stitch-skill.md +1 -1
  761. package/packages/shared-skills/skills/frontend/references/design/stripe.md +3 -0
  762. package/packages/shared-skills/skills/frontend/references/design/supabase.md +3 -0
  763. package/packages/shared-skills/skills/frontend/references/design/superhuman.md +3 -0
  764. package/packages/shared-skills/skills/frontend/references/design/taste-skill.md +1188 -208
  765. package/packages/shared-skills/skills/frontend/references/design/tesla.md +3 -0
  766. package/packages/shared-skills/skills/frontend/references/design/theverge.md +3 -0
  767. package/packages/shared-skills/skills/frontend/references/design/together.ai.md +3 -0
  768. package/packages/shared-skills/skills/frontend/references/design/uber.md +3 -0
  769. package/packages/shared-skills/skills/frontend/references/design/vercel.md +3 -0
  770. package/packages/shared-skills/skills/frontend/references/design/vodafone.md +3 -0
  771. package/packages/shared-skills/skills/frontend/references/design/voltagent.md +3 -0
  772. package/packages/shared-skills/skills/frontend/references/design/warp.md +3 -0
  773. package/packages/shared-skills/skills/frontend/references/design/webflow.md +3 -0
  774. package/packages/shared-skills/skills/frontend/references/design/wired.md +3 -0
  775. package/packages/shared-skills/skills/frontend/references/design/wise.md +3 -0
  776. package/packages/shared-skills/skills/frontend/references/design/x.ai.md +3 -0
  777. package/packages/shared-skills/skills/frontend/references/design/zapier.md +3 -0
  778. package/packages/shared-skills/skills/frontend/references/designpowers/EVIDENCE.md +89 -0
  779. package/packages/shared-skills/skills/frontend/references/designpowers/README.md +48 -0
  780. package/packages/shared-skills/skills/frontend/references/designpowers/UPSTREAM.md +80 -0
  781. package/packages/shared-skills/skills/frontend/references/designpowers/lane-a-direction.md +64 -0
  782. package/packages/shared-skills/skills/frontend/references/designpowers/lane-b-execution.md +65 -0
  783. package/packages/shared-skills/skills/frontend/references/designpowers/lane-c-review.md +65 -0
  784. package/packages/shared-skills/skills/frontend/references/designpowers/lane-d-memory.md +83 -0
  785. package/packages/shared-skills/skills/frontend/references/designpowers/orchestration.md +80 -0
  786. package/packages/shared-skills/skills/frontend/references/designpowers/routing.md +79 -0
  787. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/LICENSE +21 -0
  788. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/accessibility-reviewer.md +83 -0
  789. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/content-writer.md +132 -0
  790. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/design-builder.md +109 -0
  791. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/design-critic.md +89 -0
  792. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/design-lead.md +113 -0
  793. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/design-scout.md +78 -0
  794. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/design-strategist.md +121 -0
  795. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/heuristic-evaluator.md +268 -0
  796. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/inspiration-scout.md +107 -0
  797. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/motion-designer.md +120 -0
  798. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/accessible-content/SKILL.md +101 -0
  799. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/adaptive-interfaces/SKILL.md +109 -0
  800. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/cognitive-accessibility/SKILL.md +107 -0
  801. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-debate/SKILL.md +199 -0
  802. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-debt-tracker/SKILL.md +174 -0
  803. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-handoff/SKILL.md +125 -0
  804. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-md/SKILL.md +106 -0
  805. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-retrospective/SKILL.md +266 -0
  806. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-review/SKILL.md +123 -0
  807. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-system-alignment/SKILL.md +120 -0
  808. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/designpowers-critique/SKILL.md +164 -0
  809. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/heuristic-evaluation/SKILL.md +85 -0
  810. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/inclusive-personas/SKILL.md +98 -0
  811. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/inspiration-scouting/SKILL.md +165 -0
  812. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/interaction-design/SKILL.md +122 -0
  813. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/motion-choreography/SKILL.md +81 -0
  814. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/research-planning/SKILL.md +96 -0
  815. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/responsive-patterns/SKILL.md +77 -0
  816. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/synthetic-user-testing/SKILL.md +192 -0
  817. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/taste-feedback/SKILL.md +165 -0
  818. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/taste-report/SKILL.md +78 -0
  819. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/token-architecture/SKILL.md +75 -0
  820. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/ui-composition/SKILL.md +117 -0
  821. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/usability-testing/SKILL.md +78 -0
  822. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/verification-before-shipping/SKILL.md +125 -0
  823. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/voice-and-tone/SKILL.md +79 -0
  824. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/writing-design-plans/SKILL.md +119 -0
  825. package/packages/shared-skills/skills/frontend/references/ui-ux-db/README.md +501 -115
  826. package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/charts.csv +26 -26
  827. package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/colors.csv +162 -97
  828. package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/icons.csv +105 -100
  829. package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/landing.csv +22 -18
  830. package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/products.csv +162 -97
  831. package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/stacks/flutter.csv +53 -53
  832. package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/stacks/html-tailwind.csv +56 -56
  833. package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/stacks/nextjs.csv +53 -53
  834. package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/stacks/react.csv +54 -54
  835. package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/stacks/svelte.csv +54 -54
  836. package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/stacks/swiftui.csv +51 -51
  837. package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/stacks/vue.csv +50 -50
  838. package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/styles.csv +17 -0
  839. package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/typography.csv +17 -1
  840. package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/ui-reasoning.csv +162 -101
  841. package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/web-interface.csv +30 -30
  842. package/packages/shared-skills/skills/frontend/references/ui-ux-db/scripts/core.py +31 -22
  843. package/packages/shared-skills/skills/frontend/references/ui-ux-db/scripts/design_system.py +150 -69
  844. package/packages/shared-skills/skills/frontend/references/ui-ux-db/scripts/search.py +3 -3
  845. package/packages/shared-skills/skills/git-master/SKILL.md +4 -0
  846. package/packages/shared-skills/skills/lcx-doctor/SKILL.md +1 -1
  847. package/packages/shared-skills/skills/review-work/SKILL.md +3 -3
  848. package/packages/shared-skills/skills/start-work/SKILL.md +7 -5
  849. package/packages/shared-skills/skills/ultimate-browsing/ATTRIBUTION.md +105 -0
  850. package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +140 -0
  851. package/packages/shared-skills/skills/ultimate-browsing/engine/__init__.py +24 -0
  852. package/packages/shared-skills/skills/ultimate-browsing/engine/__main__.py +106 -0
  853. package/packages/shared-skills/skills/ultimate-browsing/engine/bias_check.py +174 -0
  854. package/packages/shared-skills/skills/ultimate-browsing/engine/curl_probe.py +91 -0
  855. package/packages/shared-skills/skills/ultimate-browsing/engine/executor.py +192 -0
  856. package/packages/shared-skills/skills/ultimate-browsing/engine/fetch_chain.py +268 -0
  857. package/packages/shared-skills/skills/ultimate-browsing/engine/referers.py +15 -0
  858. package/packages/shared-skills/skills/ultimate-browsing/engine/result_schema.py +45 -0
  859. package/packages/shared-skills/skills/ultimate-browsing/engine/summary.py +37 -0
  860. package/packages/shared-skills/skills/ultimate-browsing/engine/templates/package.json +11 -0
  861. package/packages/shared-skills/skills/ultimate-browsing/engine/templates/playwright_mobile_chrome.js +129 -0
  862. package/packages/shared-skills/skills/ultimate-browsing/engine/templates/playwright_real_chrome.js +167 -0
  863. package/packages/shared-skills/skills/ultimate-browsing/engine/tests/test_fetch_chain.py +77 -0
  864. package/packages/shared-skills/skills/ultimate-browsing/engine/tests/test_playwright_templates.py +282 -0
  865. package/packages/shared-skills/skills/ultimate-browsing/engine/url_transforms.py +98 -0
  866. package/packages/shared-skills/skills/ultimate-browsing/engine/validators.py +216 -0
  867. package/packages/shared-skills/skills/ultimate-browsing/engine/waf_detector.py +214 -0
  868. package/packages/shared-skills/skills/ultimate-browsing/engine/waf_profiles.yaml +162 -0
  869. package/packages/shared-skills/skills/ultimate-browsing/references/agent-reach/README.md +79 -0
  870. package/packages/shared-skills/skills/ultimate-browsing/references/agent-reach/career.md +29 -0
  871. package/packages/shared-skills/skills/ultimate-browsing/references/agent-reach/dev.md +62 -0
  872. package/packages/shared-skills/skills/ultimate-browsing/references/agent-reach/search.md +33 -0
  873. package/packages/shared-skills/skills/ultimate-browsing/references/agent-reach/social.md +207 -0
  874. package/packages/shared-skills/skills/ultimate-browsing/references/agent-reach/video.md +115 -0
  875. package/packages/shared-skills/skills/ultimate-browsing/references/agent-reach/web.md +76 -0
  876. package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +120 -0
  877. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/README.md +319 -0
  878. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/cache-archive.md +83 -0
  879. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/fallback.md +159 -0
  880. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/jina.md +130 -0
  881. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/json-api.md +133 -0
  882. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/media.md +123 -0
  883. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/metadata.md +116 -0
  884. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/naver.md +107 -0
  885. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/playwright.md +142 -0
  886. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/public-api.md +119 -0
  887. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/rss.md +123 -0
  888. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/tls-impersonate.md +186 -0
  889. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/twitter.md +104 -0
  890. package/packages/shared-skills/skills/ultimate-browsing/scripts/cookie_crypto.py +75 -0
  891. package/packages/shared-skills/skills/ultimate-browsing/scripts/cookie_domains.py +38 -0
  892. package/packages/shared-skills/skills/ultimate-browsing/scripts/cookie_paths.py +112 -0
  893. package/packages/shared-skills/skills/ultimate-browsing/scripts/extract_cookies.py +280 -0
  894. package/packages/shared-skills/skills/ultimate-browsing/scripts/tests/test_cookie_domain_filter.py +110 -0
  895. package/packages/shared-skills/skills/ultimate-browsing/scripts/tests/test_extract_cookies.py +245 -0
  896. package/packages/shared-skills/skills/ultraresearch/SKILL.md +4 -233
  897. package/packages/shared-skills/skills/ulw-plan/SKILL.md +9 -4
  898. package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +11 -6
  899. package/packages/shared-skills/skills/ulw-plan/references/intent-clear.md +3 -3
  900. package/packages/shared-skills/skills/ulw-plan/references/intent-unclear.md +1 -1
  901. package/packages/shared-skills/skills/ulw-research/ATTRIBUTION.md +49 -0
  902. package/packages/shared-skills/skills/ulw-research/SKILL.md +260 -0
  903. package/packages/shared-skills/skills/visual-qa/SKILL.md +105 -14
  904. package/packages/shared-skills/skills/visual-qa/scripts/skill-prompt-contract.test.ts +120 -1
  905. package/script/qa/web-terminal-redaction.d.mts +13 -0
  906. package/script/qa/web-terminal-redaction.mjs +43 -0
  907. package/script/qa/web-terminal-renderer.mjs +218 -0
  908. package/script/qa/web-terminal-visual-qa.mjs +264 -0
  909. package/packages/omo-codex/plugin/components/codegraph/dist/cli.d.ts +0 -2
  910. package/packages/omo-codex/plugin/components/codegraph/dist/serve.d.ts +0 -32
  911. package/packages/omo-codex/plugin/test/ultraresearch-skill-contract.test.mjs +0 -174
@@ -0,0 +1,113 @@
1
+ // team-worktree.mjs - git worktree provisioning + merge integration for teammode.
2
+ //
3
+ // Shells out to `git` through node:child_process so the leader never hand-runs worktree or
4
+ // merge commands and never improvises a branch name. Zero npm dependencies, like the rest of
5
+ // the skill. team-state.mjs stays the pure state model; this file owns the git side only.
6
+
7
+ import { spawnSync } from "node:child_process";
8
+ import { realpathSync } from "node:fs";
9
+ import { isAbsolute, join, relative, resolve } from "node:path";
10
+
11
+ // A member id that also names a directory and a branch segment: no "/", no "..", no leading dot.
12
+ const MEMBER_ID_SEGMENT = /^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/;
13
+
14
+ // Compare two on-disk paths regardless of OS. realpathSync canonicalizes separators, Windows
15
+ // 8.3 short names (RUNNER~1) and drive-letter case, and the macOS /var -> /private/var symlink -
16
+ // none of which plain resolve() reconciles. Returns false if either side no longer exists.
17
+ function samePath(a, b) {
18
+ try {
19
+ return realpathSync(a) === realpathSync(b);
20
+ } catch {
21
+ return false;
22
+ }
23
+ }
24
+
25
+ function git(cwd, args) {
26
+ const result = spawnSync("git", args, { cwd, encoding: "utf8" });
27
+ if (result.error) throw new Error(`git ${args.join(" ")} could not run: ${result.error.message}`);
28
+ return result;
29
+ }
30
+
31
+ function gitOrThrow(cwd, args) {
32
+ const result = git(cwd, args);
33
+ if (result.status !== 0) throw new Error(`git ${args.join(" ")} failed: ${(result.stderr || result.stdout || "").trim()}`);
34
+ return result.stdout ?? "";
35
+ }
36
+
37
+ export function deriveMemberBranch(team, member) {
38
+ if (member.worktree?.branch) return member.worktree.branch;
39
+ return `team/${team.sessionId ?? team.teamId}/${member.id}`;
40
+ }
41
+
42
+ // Confine a member worktree to <worktree.root>/<member id>; reject any id that would escape it.
43
+ export function memberWorktreePath(team, member) {
44
+ if (!MEMBER_ID_SEGMENT.test(member.id ?? "")) throw new Error(`unsafe member id for a worktree path: "${member.id}"`);
45
+ const root = team.worktree?.root;
46
+ if (!root) throw new Error("team has no worktree root; re-init the team");
47
+ const path = join(root, member.id);
48
+ const rel = relative(root, path);
49
+ if (rel !== member.id || rel.startsWith("..") || isAbsolute(rel)) throw new Error(`refused: worktree path escapes ${root}`);
50
+ return path;
51
+ }
52
+
53
+ export function listWorktrees(cwd) {
54
+ const out = gitOrThrow(cwd, ["worktree", "list", "--porcelain"]);
55
+ const worktrees = [];
56
+ let current = null;
57
+ for (const line of out.split("\n")) {
58
+ if (line.startsWith("worktree ")) {
59
+ current = { path: line.slice("worktree ".length) };
60
+ worktrees.push(current);
61
+ } else if (line.startsWith("branch ") && current) {
62
+ current.branch = line.slice("branch ".length);
63
+ }
64
+ }
65
+ return worktrees;
66
+ }
67
+
68
+ function branchExists(cwd, branch) {
69
+ return git(cwd, ["rev-parse", "--verify", "--quiet", `refs/heads/${branch}`]).status === 0;
70
+ }
71
+
72
+ function currentBranch(cwd) {
73
+ return gitOrThrow(cwd, ["rev-parse", "--abbrev-ref", "HEAD"]).trim();
74
+ }
75
+
76
+ export function addMemberWorktree(cwd, team, member, { baseBranch } = {}) {
77
+ const base = baseBranch || team.worktree?.baseBranch || "dev";
78
+ const branch = deriveMemberBranch(team, member);
79
+ const path = memberWorktreePath(team, member);
80
+ // Idempotent: skip if a worktree is already checked out on this member's branch (matched on the
81
+ // branch ref, which is OS-agnostic) or already lives at this path (matched on realpath, so a
82
+ // Windows 8.3 git path vs an 8.3-or-long script path still compares equal). Plain string/resolve
83
+ // comparison missed the 8.3-vs-canonical case and re-`git worktree add`-ed into a fatal error.
84
+ if (listWorktrees(cwd).some((w) => w.branch === `refs/heads/${branch}` || samePath(resolve(cwd, w.path), resolve(cwd, path)))) {
85
+ return { path, branch, base, created: false };
86
+ }
87
+ const add = branchExists(cwd, branch)
88
+ ? ["worktree", "add", path, branch]
89
+ : ["worktree", "add", "-b", branch, path, base];
90
+ gitOrThrow(cwd, add);
91
+ return { path, branch, base, created: true };
92
+ }
93
+
94
+ export function removeMemberWorktree(cwd, team, member, { force = false } = {}) {
95
+ const path = memberWorktreePath(team, member);
96
+ gitOrThrow(cwd, ["worktree", "remove", ...(force ? ["--force"] : []), path]);
97
+ return { path };
98
+ }
99
+
100
+ // Land a member branch with a MERGE COMMIT (--no-ff). Never squash, never rebase (repo policy).
101
+ // On conflict the working tree is left mid-merge so the leader can resolve and re-run.
102
+ export function integrateMemberBranch(cwd, branch) {
103
+ const result = git(cwd, ["merge", "--no-ff", "--no-edit", branch]);
104
+ if (result.status === 0) return { branch, merged: true, into: currentBranch(cwd) };
105
+ const conflicts = gitOrThrow(cwd, ["diff", "--name-only", "--diff-filter=U"]).trim();
106
+ return {
107
+ branch,
108
+ merged: false,
109
+ into: currentBranch(cwd),
110
+ conflicts: conflicts ? conflicts.split("\n") : [],
111
+ message: (result.stderr || result.stdout || "").trim(),
112
+ };
113
+ }
@@ -7,7 +7,7 @@
7
7
  // macOS, Linux, and Windows.
8
8
  //
9
9
  // node "<skill-root>/scripts/team.mjs" init --name "<team>" --session-name "<sess>" [--session <id>] [--worktree] [--base-branch dev]
10
- // node "<skill-root>/scripts/team.mjs" add-member --team <id> --id A --focus "<part/ownership/perspective>" --lens area|ownership|perspective --deliverable "<...>" [--branch <b>]
10
+ // node "<skill-root>/scripts/team.mjs" add-member --team <id> --id A --name "<short role>" --focus "<part/ownership/perspective>" --lens area|ownership|perspective --deliverable "<...>" [--branch <b>]
11
11
  // node "<skill-root>/scripts/team.mjs" bind-thread --team <id> --id A --thread <thread-id> [--cwd <path>]
12
12
  // node "<skill-root>/scripts/team.mjs" member-prompt --team <id> --id A
13
13
  // node "<skill-root>/scripts/team.mjs" set-status --team <id> --id A --status reported|blocked|active|archived [--note "<...>"]
@@ -20,23 +20,25 @@ import { randomUUID } from "node:crypto";
20
20
  import { realpathSync } from "node:fs";
21
21
  import { rm } from "node:fs/promises";
22
22
  import { fileURLToPath, pathToFileURL } from "node:url";
23
- import { buildGuide, buildMemberPrompt } from "./team-guide.mjs";
23
+ import { buildGuide, buildMemberPrompt, codexThreadLink } from "./team-guide.mjs";
24
24
  import {
25
25
  addMember,
26
26
  archive,
27
27
  assertSafeTeamDir,
28
28
  bindThread,
29
29
  buildTeam,
30
+ clearMemberWorktree,
30
31
  ensureTeamDir,
31
32
  isUnderstaffed,
32
33
  MIN_MEMBERS,
33
34
  readTeam,
34
- resolveTeamDir,
35
35
  setMemberStatus,
36
+ setMemberWorktree,
36
37
  teamExists,
37
38
  writeGuideAtomic,
38
39
  writeTeamAtomic,
39
40
  } from "./team-state.mjs";
41
+ import { addMemberWorktree, integrateMemberBranch, removeMemberWorktree } from "./team-worktree.mjs";
40
42
 
41
43
  function parseFlags(args) {
42
44
  const flags = { _: [] };
@@ -69,6 +71,12 @@ async function loadTeam(cwd, sessionId) {
69
71
  return { dir, team: await readTeam(dir) };
70
72
  }
71
73
 
74
+ function memberOrThrow(team, id) {
75
+ const member = team.members.find((m) => m.id === id);
76
+ if (!member) throw new Error(`no member with id "${id}"`);
77
+ return member;
78
+ }
79
+
72
80
  async function persist(team, dir) {
73
81
  await writeTeamAtomic(team, dir);
74
82
  await writeGuideAtomic(team, buildGuide(team), dir);
@@ -95,7 +103,7 @@ const handlers = {
95
103
  await persist(team, dir);
96
104
  process.stdout.write(`created: ${dir}\n`);
97
105
  process.stdout.write(`team.json + guide.md written; artifacts/ ready. session id: ${sessionId}\n`);
98
- process.stdout.write(`next: add-member --team ${sessionId} --id A --focus "<part/ownership/perspective>" --lens area|ownership|perspective --deliverable "<...>"\n`);
106
+ process.stdout.write(`next: add-member --team ${sessionId} --id A --name "<short role>" --focus "<part/ownership/perspective>" --lens area|ownership|perspective --deliverable "<...>"\n`);
99
107
  },
100
108
 
101
109
  async "add-member"(cwd, flags) {
@@ -104,13 +112,15 @@ const handlers = {
104
112
  const memberId = requireFlag(flags, "id").trim();
105
113
  addMember(team, {
106
114
  id: memberId,
115
+ name: typeof flags.name === "string" ? flags.name : null,
107
116
  focus: requireFlag(flags, "focus"),
108
117
  lens: requireFlag(flags, "lens"),
109
118
  deliverable: typeof flags.deliverable === "string" ? flags.deliverable : "",
110
119
  branch: typeof flags.branch === "string" ? flags.branch : null,
111
120
  });
112
121
  await persist(team, dir);
113
- process.stdout.write(`added member ${memberId} to team ${sessionId}.\n\nSend this as the new thread's first message (title it "${team.threadTitleConvention}"):\n---\n${buildMemberPrompt(team, memberId)}\n---\n`);
122
+ const member = team.members.find((m) => m.id === memberId);
123
+ process.stdout.write(`added member ${memberId} to team ${sessionId}.\n\nSend this as the new thread's first message (title the thread "${member.threadTitle}"):\n---\n${buildMemberPrompt(team, memberId)}\n---\n`);
114
124
  },
115
125
 
116
126
  async "bind-thread"(cwd, flags) {
@@ -144,6 +154,58 @@ const handlers = {
144
154
  process.stdout.write(`member ${flags.id} -> ${flags.status}\n`);
145
155
  },
146
156
 
157
+ async "worktree-add"(cwd, flags) {
158
+ const sessionId = requireFlag(flags, "team");
159
+ const { dir, team } = await loadTeam(cwd, sessionId);
160
+ const member = memberOrThrow(team, requireFlag(flags, "id"));
161
+ const result = addMemberWorktree(cwd, team, member, {
162
+ baseBranch: typeof flags["base-branch"] === "string" ? flags["base-branch"] : null,
163
+ });
164
+ setMemberWorktree(team, { id: member.id, path: result.path, branch: result.branch });
165
+ await persist(team, dir);
166
+ const note = result.created ? "" : " (already exists)";
167
+ const thread = member.threadId
168
+ ? `\nMember thread: ${codexThreadLink(member.threadId)}\nTell that member to: cd "${result.path}"`
169
+ : "\nMember thread is not bound yet; wait for the real Codex thread id, then bind-thread before sending bootstrap. After binding, send the member this worktree path.";
170
+ process.stdout.write(
171
+ `worktree for member ${member.id}${note}: ${result.path} on branch ${result.branch} (off ${result.base}).${thread}\n`,
172
+ );
173
+ },
174
+
175
+ async "worktree-remove"(cwd, flags) {
176
+ const sessionId = requireFlag(flags, "team");
177
+ const { dir, team } = await loadTeam(cwd, sessionId);
178
+ const member = memberOrThrow(team, requireFlag(flags, "id"));
179
+ removeMemberWorktree(cwd, team, member, { force: flags.force === true });
180
+ clearMemberWorktree(team, { id: member.id });
181
+ await persist(team, dir);
182
+ process.stdout.write(`removed worktree for member ${member.id}\n`);
183
+ },
184
+
185
+ async integrate(cwd, flags) {
186
+ const sessionId = requireFlag(flags, "team");
187
+ const { team } = await loadTeam(cwd, sessionId);
188
+ const targets = typeof flags.id === "string" ? [memberOrThrow(team, flags.id)] : team.members.filter((m) => m.worktree?.branch);
189
+ if (targets.length === 0) throw new Error("no member has a worktree branch to integrate; run worktree-add first");
190
+ for (const member of targets) {
191
+ const result = integrateMemberBranch(cwd, member.worktree.branch);
192
+ if (!result.merged) {
193
+ if (result.conflicts.length > 0) {
194
+ process.stdout.write(`member ${member.id} (${member.worktree.branch}): CONFLICT into ${result.into}\n`);
195
+ throw new Error(
196
+ `merge conflict integrating member ${member.id} (branch ${member.worktree.branch}). Resolve the conflict, commit the merge, then re-run integrate. Conflicting files: ${result.conflicts.join(", ")}`,
197
+ );
198
+ }
199
+ process.stdout.write(`member ${member.id} (${member.worktree.branch}): could not start merge into ${result.into}\n`);
200
+ throw new Error(
201
+ `could not integrate member ${member.id} (branch ${member.worktree.branch}): ${result.message || "git merge failed; see git status"}`,
202
+ );
203
+ }
204
+ process.stdout.write(`member ${member.id} (${member.worktree.branch}): merged into ${result.into}\n`);
205
+ }
206
+ process.stdout.write(`integrated ${targets.length} member branch(es) with merge commits\n`);
207
+ },
208
+
147
209
  async archive(cwd, flags) {
148
210
  const sessionId = requireFlag(flags, "team");
149
211
  const { dir, team } = await loadTeam(cwd, sessionId);
@@ -173,7 +235,8 @@ const handlers = {
173
235
  const { team } = await loadTeam(cwd, sessionId);
174
236
  process.stdout.write(`Team ${team.teamName} [${team.status}] - leader: main session - ${team.members.length} member(s)\n`);
175
237
  for (const m of team.members) {
176
- process.stdout.write(` ${m.id} (${m.lens}) ${m.focus} -> ${m.deliverable || "(no deliverable)"} [${m.status}]${m.threadId ? ` thread=${m.threadId}` : ""}${m.cwd ? ` cwd=${m.cwd}` : ""}\n`);
238
+ const thread = m.threadId ? ` thread=${m.threadId} link=${codexThreadLink(m.threadId)}` : "";
239
+ process.stdout.write(` ${m.id} (${m.lens}) ${m.focus} -> ${m.deliverable || "(no deliverable)"} [${m.status}]${thread}${m.cwd ? ` cwd=${m.cwd}` : ""}\n`);
177
240
  }
178
241
  if (isUnderstaffed(team)) {
179
242
  process.stdout.write(
@@ -0,0 +1,105 @@
1
+ # ATTRIBUTION / NOTICE
2
+
3
+ This skill (`ultimate-browsing`, part of `@oh-my-opencode/shared-skills`) ships
4
+ project-original content plus two third-party tools that it installs at runtime
5
+ (it does NOT vendor their source). Each runtime tool's license and required
6
+ notices are reproduced below.
7
+
8
+ ---
9
+
10
+ ## 1. Project-original content (no third-party source vendored)
11
+
12
+ The following are authored by the oh-my-openagent project and carry no third-party
13
+ license obligation:
14
+
15
+ - `engine/**` — the insane-search Tier-1 fetch engine (curl_cffi grid, WAF
16
+ detection, Playwright fallback templates, `bias_check.py` no-site-name gate).
17
+ - `references/insane-search/**` and `references/agent-reach/**` — the Tier-1 and
18
+ Tier-1.5 reference docs.
19
+ - `scripts/extract_cookies.py`, `scripts/cookie_paths.py`, `scripts/cookie_crypto.py`
20
+ and their tests — the cross-platform cookie module.
21
+ - `SKILL.md`, `references/chrome-stealth.md`.
22
+
23
+ These reference platform-native CLIs and public APIs by name (e.g. `xhs`, `yt-dlp`,
24
+ `agent-reach`, `mcporter`, Jina Reader, V2EX public API). Those are external tools the
25
+ user installs separately; this skill includes none of their source.
26
+
27
+ ---
28
+
29
+ ## 2. CloakBrowser (CloakHQ) — Tier-2 stealth Chromium (runtime dependency)
30
+
31
+ The Tier-2 stealth browser is **CloakBrowser**, installed at runtime via `pip`
32
+ (`pip install cloakbrowser`). No CloakBrowser source is vendored in this repository.
33
+
34
+ - Source: https://github.com/CloakHQ/CloakBrowser
35
+ - Pinned runtime version: **0.4.0** (documented in `references/chrome-stealth.md`;
36
+ this is a documented version string, not an automated drift check).
37
+ - Wrapper source license: MIT License.
38
+ - Binary license: the compiled CloakBrowser Chromium binary downloaded by
39
+ `cloakbrowser.ensure_binary()` is governed by the separate CloakBrowser
40
+ Binary License:
41
+ https://github.com/CloakHQ/CloakBrowser/blob/main/BINARY-LICENSE.md
42
+ - Redistribution note: this npm package does not redistribute the CloakBrowser
43
+ binary, does not repackage it, and does not include it in `skills/` or
44
+ `dist/skills`. Users who run the Tier-2 setup download the binary directly
45
+ from CloakHQ's official distribution channels and must comply with that
46
+ binary license.
47
+
48
+ MIT wrapper source license:
49
+
50
+ ```
51
+ MIT License
52
+
53
+ Copyright (c) 2026 CloakHQ
54
+
55
+ Permission is hereby granted, free of charge, to any person obtaining a copy
56
+ of this software and associated documentation files (the "Software"), to deal
57
+ in the Software without restriction, including without limitation the rights
58
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
59
+ copies of the Software, and to permit persons to whom the Software is
60
+ furnished to do so, subject to the following conditions:
61
+
62
+ The above copyright notice and this permission notice shall be included in all
63
+ copies or substantial portions of the Software.
64
+
65
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
66
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
67
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
68
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
69
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
70
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
71
+ SOFTWARE.
72
+ ```
73
+
74
+ ---
75
+
76
+ ## 3. agent-browser (vercel-labs) — Tier-2 CDP automation CLI (runtime dependency)
77
+
78
+ The Tier-2 automation CLI is **agent-browser**, installed at runtime via `npm`
79
+ (`npm i -g agent-browser`). No agent-browser source is vendored in this repository.
80
+
81
+ - Source: https://github.com/vercel-labs/agent-browser
82
+ - Pinned runtime version: **0.29.1** (documented in `references/chrome-stealth.md`;
83
+ documented version string, no automated drift check).
84
+ - Licensed under the Apache License, Version 2.0 (the "License"); you may not use
85
+ these files except in compliance with the License. You may obtain a copy of the
86
+ License at:
87
+
88
+ http://www.apache.org/licenses/LICENSE-2.0
89
+
90
+ Unless required by applicable law or agreed to in writing, software distributed under
91
+ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
92
+ KIND, either express or implied. See the License for the specific language governing
93
+ permissions and limitations under the License.
94
+
95
+ - **Changes (Apache-2.0 §4(b)):** none. agent-browser is installed unmodified at
96
+ runtime; no agent-browser source file is copied, modified, or redistributed by this
97
+ skill. This skill only documents how to invoke the upstream CLI.
98
+
99
+ - **NOTICE:** the upstream agent-browser distribution may include a `NOTICE` file. As
100
+ this skill redistributes no agent-browser source, no upstream NOTICE content is
101
+ bundled here; consult the upstream repository for its `NOTICE` file when present.
102
+
103
+ - **Trademark notice:** "agent-browser" and "Vercel" are referenced by name for
104
+ identification only. No trademark license is granted under the Apache License 2.0
105
+ (Section 6).
@@ -0,0 +1,140 @@
1
+ ---
2
+ name: ultimate-browsing
3
+ description: "Escalation skill for blocked or hard-to-reach web access — load it when a normal browse/fetch is blocked (WAF, 403, Cloudflare, JS-only render, login-gated, or a platform a generic fetcher cannot read). Tiered router: TIER 1 insane-search (headless extraction + WAF bypass via curl_cffi TLS impersonation, yt-dlp, Jina Reader, public APIs, Playwright real-Chrome fallback); TIER 1.5 agent-reach (platform-native readers for Chinese and social platforms: Xiaohongshu, Douyin, Weibo, Bilibili, V2EX, WeChat, plus Twitter/Reddit/LinkedIn/GitHub); TIER 2 Chrome stealth (CloakBrowser stealth Chromium + agent-browser CDP for clicks, forms, screenshots, video, cookie login). Triggers: blocked site, bypass bot detection, cloudflare/WAF bypass, scrape, stealth browser, import cookies, fill form, screenshot, play youtube, xiaohongshu, douyin, weibo, bilibili, v2ex, wechat article, podcast transcript. NOT for simple searches (use web-search) or plain fetches (use webfetch)."
4
+ ---
5
+
6
+ # Ultimate Browsing
7
+
8
+ Escalation web access for tasks a normal browse or fetch cannot complete. Reach for this skill the moment a page is blocked (WAF / 403 / Cloudflare), needs JS rendering, hides behind a login, or lives on a platform a generic fetcher cannot read. Escalate only when the cheaper tier cannot do the job:
9
+
10
+ **Tier 1 — insane-search** (headless extraction + WAF bypass) -> **Tier 1.5 — agent-reach** (platform-native APIs, esp. Chinese platforms) -> **Tier 2 — Chrome stealth** (real interaction via CloakBrowser + agent-browser).
11
+
12
+ ## PHASE 0 — ROUTE FIRST (MANDATORY)
13
+
14
+ ```
15
+ User request
16
+ |
17
+ +- extract text/data from a URL --------------------- TIER 1 insane-search
18
+ +- URL blocked / 403 / Cloudflare / WAF ------------- TIER 1 insane-search
19
+ +- YouTube/Vimeo/TikTok subtitles or metadata ------- TIER 1 insane-search (yt-dlp)
20
+ +- read an article / blog / Reddit / HN / arXiv ----- TIER 1 insane-search
21
+ |
22
+ +- Chinese platform (xhs/douyin/weibo/bilibili/v2ex/wechat) TIER 1.5 agent-reach
23
+ +- podcast transcript / stock forum ----------------- TIER 1.5 agent-reach
24
+ +- Twitter feed / LinkedIn profile / GitHub via CLI - TIER 1.5 agent-reach
25
+ |
26
+ +- Tier 1/1.5 returned empty or partial ------------- TIER 2 Chrome stealth
27
+ +- click / fill form / scroll / interact ------------ TIER 2 Chrome stealth
28
+ +- screenshot / render / play video ----------------- TIER 2 Chrome stealth
29
+ +- login session across pages / inject cookies ------ TIER 2 Chrome stealth
30
+ +- test web app / QA / dogfood ---------------------- TIER 2 Chrome stealth
31
+ |
32
+ +- simple search query ------------------------------ NOT this skill (use web-search)
33
+ ```
34
+
35
+ Read the matching reference before acting: [`references/insane-search/README.md`](references/insane-search/README.md), [`references/agent-reach/README.md`](references/agent-reach/README.md), or [`references/chrome-stealth.md`](references/chrome-stealth.md).
36
+
37
+ ## Tier 1 — insane-search (headless extraction)
38
+
39
+ **When**: content extraction, blocked-URL bypass, media metadata — no browser UI needed.
40
+ **Why first**: ~10x faster than a browser, no process spin-up; handles most "fetch this blocked page" requests via curl_cffi TLS impersonation, yt-dlp (1858 sites), Jina Reader, official public APIs, mobile URL transforms, and a Playwright real-Chrome fallback. The engine lives **inside this skill** at `engine/` and is invoked as a module.
41
+
42
+ ```bash
43
+ # Core command — auto-detects WAF, runs the full fetch grid (run from the skill dir):
44
+ python3 -m engine "https://example.com/blocked-page"
45
+ # add --selector "<CSS>" for positive-proof validation, --device auto|desktop|mobile,
46
+ # --trace to inspect every attempt, --json for machine-readable output.
47
+
48
+ # YouTube subtitles / metadata (no browser):
49
+ yt-dlp --write-sub --write-auto-sub --sub-lang "en,ko" --skip-download -o "/tmp/%(id)s" "<URL>"
50
+
51
+ # Reddit / HN / Bluesky / arXiv etc. use official public endpoints — see the Phase 0 index in
52
+ # references/insane-search/README.md (Twitter syndication, Reddit .json, HN Firebase, ...).
53
+ ```
54
+
55
+ The full engine harness (rules R1-R7, the Phase 0 official-API index, the no-site-name rule, and the `references/insane-search/*.md` deep-dives for TLS, Playwright routing, Naver, media, etc.) is in [`references/insane-search/README.md`](references/insane-search/README.md). Read it before tuning the engine or adding a WAF profile.
56
+
57
+ ### Escalate to Tier 1.5 or Tier 2 when
58
+ - The target is a Chinese / social platform with a native reader -> Tier 1.5.
59
+ - insane-search returns empty/partial, or the page needs JS interaction, a screenshot, a persistent login, or media playback -> Tier 2.
60
+
61
+ ## Tier 1.5 — agent-reach (platform-native readers)
62
+
63
+ **When**: the target is a platform with a first-class API/CLI that beats generic fetching — especially Chinese platforms that stealth browsers still cannot reach cleanly. Several channels are zero-config (Douyin, Weibo via Jina, V2EX, Reddit, Jina Reader, RSS, YouTube); others need a one-time auth you supply via environment variables if you have access.
64
+
65
+ | Category | Platforms | Entry |
66
+ |---|---|---|
67
+ | social | xhs (Xiaohongshu), douyin, weibo, bilibili, V2EX, Reddit, Twitter/X | [references/agent-reach/social.md](references/agent-reach/social.md) |
68
+ | web | Jina Reader, WeChat articles, RSS | [references/agent-reach/web.md](references/agent-reach/web.md) |
69
+ | video | YouTube, Bilibili, podcast transcripts, Douyin video | [references/agent-reach/video.md](references/agent-reach/video.md) |
70
+ | career | LinkedIn | [references/agent-reach/career.md](references/agent-reach/career.md) |
71
+ | dev | GitHub (gh CLI) | [references/agent-reach/dev.md](references/agent-reach/dev.md) |
72
+ | search | Exa AI | [references/agent-reach/search.md](references/agent-reach/search.md) |
73
+
74
+ ```bash
75
+ mcporter call 'douyin.parse_douyin_video_info(url: "<URL>")' # douyin, zero-config
76
+ curl -s "https://r.jina.ai/https://weibo.com/<uid>/<pid>" # weibo via Jina
77
+ yt-dlp --dump-json "<bilibili-url>" # Bilibili (overseas: add --cookies-from-browser)
78
+ curl -s "https://www.v2ex.com/api/topics/hot.json" # V2EX public API
79
+ ```
80
+
81
+ Routing table, per-platform auth (set `TWITTER_*` env vars, `gh auth login`, a transcription key — only if you have access), rate-limit notes, and known version quirks are in [references/agent-reach/README.md](references/agent-reach/README.md).
82
+
83
+ ## Tier 2 — Chrome stealth (real interaction)
84
+
85
+ **When**: real interaction is needed (clicks, forms, screenshots, video, persistent login), or Tier 1/1.5 failed.
86
+
87
+ CloakBrowser is a stealth Chromium with source-level fingerprint patches that passes Cloudflare Turnstile, FingerprintJS, BrowserScan, and 30+ detectors; agent-browser is the CDP automation CLI that drives it. Both are runtime-installed tools (not vendored here). Full setup, version pins, launch flow, cookie login, and cross-platform notes are in [references/chrome-stealth.md](references/chrome-stealth.md).
88
+
89
+ ```bash
90
+ # 1. Launch CloakBrowser with CDP on :9242 (see chrome-stealth.md for install + venv).
91
+ # 2. CloakBrowser launches tabless — open the first tab via CDP before any agent-browser command:
92
+ curl -s -X PUT "http://127.0.0.1:9242/json/new?https://example.com"
93
+ # 3. Drive it with agent-browser over CDP:
94
+ agent-browser --cdp 9242 snapshot -i # interactive elements (@eN refs)
95
+ agent-browser --cdp 9242 click @e3
96
+ agent-browser --cdp 9242 screenshot out.png
97
+ agent-browser --cdp 9242 close
98
+ ```
99
+
100
+ ### Cookie login (cross-platform)
101
+
102
+ `scripts/extract_cookies.py` reads cookies from a local Chromium-family or Firefox-family browser and optionally injects them into the running CDP session. It resolves browser profile paths and decrypts cookie values per-OS (macOS Keychain, Linux libsecret, Windows DPAPI):
103
+
104
+ ```bash
105
+ # Extract cookies to a file:
106
+ mkdir -p ~/.local/state/omo-cookies
107
+ python3 scripts/extract_cookies.py --browser chrome --domain youtube.com --output ~/.local/state/omo-cookies/youtube.cookies.json
108
+ # Extract and inject into the running CDP session:
109
+ python3 scripts/extract_cookies.py --browser chrome --domain youtube.com --inject --cdp 9242
110
+ ```
111
+
112
+ Cookie export files are written with owner-only `0600` permissions. Do not place live auth cookies in shared temp directories or commit them to a repo. Cookie injection sends values to CDP over stdin rather than argv. Cookies apply on next navigation — reload after injecting. Google services use fingerprint-bound tokens that may not transfer across browser profiles. Full detail in [references/chrome-stealth.md](references/chrome-stealth.md).
113
+
114
+ ## Reference docs
115
+
116
+ | File | When to read |
117
+ |------|-------------|
118
+ | [references/insane-search/README.md](references/insane-search/README.md) | Tier-1 engine harness (R1-R7, Phase 0 API index, no-site-name rule) + its `*.md` deep-dives |
119
+ | [references/agent-reach/README.md](references/agent-reach/README.md) | Tier-1.5 routing table, platform auth, per-category `*.md` |
120
+ | [references/chrome-stealth.md](references/chrome-stealth.md) | Tier-2 CloakBrowser + agent-browser install, CDP flow, version pins, cookie login |
121
+
122
+ ## Environment variables
123
+
124
+ ```bash
125
+ CLOAK_CDP_PORT=9242 # CloakBrowser CDP port (default 9242)
126
+ AGENT_BROWSER_USER_AGENT="..." # override UA to hide HeadlessChrome
127
+ AGENT_BROWSER_HEADED=1 # show the browser window
128
+ # agent-reach auth: set the channel-specific env vars from each tool's docs only if you have access
129
+ # insane-search needs no env vars — it auto-installs deps on first run
130
+ ```
131
+
132
+ ## Anti-patterns
133
+
134
+ - Do NOT launch Chrome stealth for plain text extraction — use Tier 1.
135
+ - Do NOT pass an `--init-script` for the webdriver flag — CloakBrowser already patches it at source; the only required override is `--user-agent`.
136
+ - Do NOT run agent-browser before creating the first tab via `curl -X PUT .../json/new` — CloakBrowser launches tabless.
137
+ - Do NOT use vanilla Chrome when stealth is needed — always CloakBrowser.
138
+ - Do NOT forget to `close` the session when done.
139
+ - Do NOT inject cookies without reloading the page.
140
+ - Do NOT hardcode site domains/selectors into `engine/**` or `waf_profiles.yaml` — runtime hints only (see the no-site-name rule in the insane-search reference).
@@ -0,0 +1,2 @@
1
+ interface:
2
+ display_name: "(OmO) ultimate-browsing"
@@ -0,0 +1,24 @@
1
+ """insane-search engine — generic WAF-profile-based fetch chain.
2
+
3
+ No site-specific logic lives here. Site specifics belong to runtime hints or
4
+ observations, never to code. See `../SKILL.md` for the No-Site-Name Rule.
5
+ """
6
+
7
+ from .validators import Verdict, ValidationResult, validate, CHALLENGE_MARKERS
8
+ from .waf_detector import detect
9
+ from .url_transforms import TRANSFORMS, apply_transform
10
+ from .fetch_chain import fetch
11
+ from .result_schema import Attempt, FetchResult
12
+
13
+ __all__ = [
14
+ "Verdict",
15
+ "ValidationResult",
16
+ "validate",
17
+ "CHALLENGE_MARKERS",
18
+ "detect",
19
+ "TRANSFORMS",
20
+ "apply_transform",
21
+ "fetch",
22
+ "FetchResult",
23
+ "Attempt",
24
+ ]
@@ -0,0 +1,106 @@
1
+ #!/usr/bin/env python3
2
+ """CLI entrypoint for the insane-search engine.
3
+
4
+ Usage:
5
+ python3 -m engine URL [--selector CSS] [--device auto|desktop|mobile]
6
+ [--timeout N] [--max-attempts N] [--json] [--trace]
7
+
8
+ Examples:
9
+ python3 -m engine "https://example.com/" --selector "h1"
10
+ python3 -m engine "https://example.com/" --json
11
+ python3 -m engine "https://example.com/" --device mobile --trace
12
+
13
+ Exit codes:
14
+ 0 strong_ok or weak_ok
15
+ 1 ok=False (all attempts failed)
16
+ 2 CLI arg error
17
+ """
18
+ from __future__ import annotations
19
+
20
+ import argparse
21
+ import json
22
+ import sys
23
+
24
+ from . import fetch
25
+
26
+
27
+ def build_parser() -> argparse.ArgumentParser:
28
+ p = argparse.ArgumentParser(prog="python3 -m engine",
29
+ description="Generic WAF-profile fetch chain.")
30
+ p.add_argument("url", help="URL to fetch.")
31
+ p.add_argument("--selector", "-s", action="append", default=None,
32
+ dest="selectors", metavar="CSS",
33
+ help="Positive-proof CSS selector. Repeatable.")
34
+ p.add_argument("--device", choices=("auto", "desktop", "mobile"), default="auto",
35
+ help="Device class pin.")
36
+ p.add_argument("--timeout", type=int, default=25,
37
+ help="Per-attempt timeout seconds (default 25).")
38
+ p.add_argument("--max-attempts", type=int, default=12,
39
+ help="Upper bound across all phases (default 12).")
40
+ p.add_argument("--no-playwright", action="store_true",
41
+ help="Skip Playwright fallback (curl-only).")
42
+ p.add_argument("--json", action="store_true",
43
+ help="Emit FetchResult as JSON to stdout (content omitted).")
44
+ p.add_argument("--trace", action="store_true",
45
+ help="Print per-attempt trace to stderr.")
46
+ return p
47
+
48
+
49
+ def main(argv: list[str] | None = None) -> int:
50
+ args = build_parser().parse_args(argv)
51
+ try:
52
+ result = fetch(
53
+ args.url,
54
+ success_selectors=args.selectors,
55
+ device_class=args.device,
56
+ timeout=args.timeout,
57
+ max_attempts=args.max_attempts,
58
+ enable_playwright=not args.no_playwright,
59
+ )
60
+ except Exception as e:
61
+ print(f"engine fatal: {type(e).__name__}: {e}", file=sys.stderr)
62
+ return 2
63
+
64
+ if args.trace:
65
+ print("=== trace ===", file=sys.stderr)
66
+ for att in result.trace:
67
+ d = att.to_dict()
68
+ imp = d.get("impersonate") or "-"
69
+ ref = d.get("referer") or "-"
70
+ print(
71
+ f"[{d['phase']:<8}] {d['executor']:<18} "
72
+ f"xform={d['url_transform']:<16} imp={imp:<14} ref={ref:<14} "
73
+ f"status={d['status']:>4} size={d['body_size']:>8} "
74
+ f"verdict={d['verdict']} {('err=' + d['error'][:60]) if d.get('error') else ''}",
75
+ file=sys.stderr,
76
+ )
77
+ print(f"=== summary: {result.summary} ===", file=sys.stderr)
78
+
79
+ # Surface R7 hint (API-first route) prominently when summary contains it,
80
+ # regardless of --trace flag — this is actionable guidance, not noise.
81
+ if "R7 API-first" in (result.summary or ""):
82
+ print(
83
+ "\n════════════════════════════════════════════════════════════════\n"
84
+ "⚠️ R7 triggered — consider API-first route instead of HTML grid.\n"
85
+ " See summary below (or re-run with --trace for full attempt log).\n"
86
+ "════════════════════════════════════════════════════════════════",
87
+ file=sys.stderr,
88
+ )
89
+ # Also print the full summary (which includes the hint) so caller sees it.
90
+ print(result.summary, file=sys.stderr)
91
+
92
+ if args.json:
93
+ payload = result.to_dict()
94
+ print(json.dumps(payload, ensure_ascii=False, indent=2))
95
+ else:
96
+ # Default: HTML to stdout, status to stderr.
97
+ print(result.content, end="")
98
+ print(f"\n[engine] ok={result.ok} verdict={result.verdict} "
99
+ f"profile={result.profile_used} attempts={len(result.trace)}",
100
+ file=sys.stderr)
101
+
102
+ return 0 if result.ok else 1
103
+
104
+
105
+ if __name__ == "__main__":
106
+ sys.exit(main())