lazycodex-ai 5.1.61 → 5.1.63

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 (300) hide show
  1. package/dist/cli/index.js +1722 -281
  2. package/dist/cli/service-auth/closed-device-login.fixture.d.ts +1 -0
  3. package/dist/cli/service-auth/credential-lock.d.ts +8 -2
  4. package/dist/cli/service-auth/index.d.ts +2 -1
  5. package/dist/cli/service-auth/keychain-helper/access.d.ts +27 -0
  6. package/dist/cli/service-auth/keychain-helper/approval-cache.d.ts +51 -0
  7. package/dist/cli/service-auth/keychain-helper/client.d.ts +68 -0
  8. package/dist/cli/service-auth/keychain-helper/creator-handoff.d.ts +31 -0
  9. package/dist/cli/service-auth/keychain-helper/darwin-backend.d.ts +75 -0
  10. package/dist/cli/service-auth/keychain-helper/darwin-read.d.ts +46 -0
  11. package/dist/cli/service-auth/keychain-helper/darwin-store.d.ts +28 -0
  12. package/dist/cli/service-auth/keychain-helper/fake-keychain.test-support.d.ts +85 -0
  13. package/dist/cli/service-auth/keychain-helper/location.d.ts +28 -0
  14. package/dist/cli/service-auth/keychain-helper/migration.d.ts +20 -0
  15. package/dist/cli/service-auth/keychain-helper/owner-marker.d.ts +7 -0
  16. package/dist/cli/service-auth/keychain-helper/pin.d.ts +20 -0
  17. package/dist/cli/service-auth/keychain-helper/process-copy.test-support.d.ts +3 -0
  18. package/dist/cli/service-auth/keychain-helper/process-state.d.ts +19 -0
  19. package/dist/cli/service-auth/keychain-helper/prompt-lock.d.ts +14 -0
  20. package/dist/cli/service-auth/keychain-helper/recovery.d.ts +34 -0
  21. package/dist/cli/service-auth/keychain-helper/runtime-capabilities.d.ts +13 -0
  22. package/dist/cli/service-auth/keychain-helper/secrets-gate.d.ts +4 -0
  23. package/dist/cli/service-auth/keychain-helper/signature.d.ts +17 -0
  24. package/dist/cli/service-auth/keychain-helper/store-binding.d.ts +46 -0
  25. package/dist/cli/service-auth/keystore.d.ts +18 -3
  26. package/dist/cli/service-auth/session.d.ts +29 -2
  27. package/dist/cli/service-auth/sync-pin-retire.d.ts +7 -0
  28. package/dist/cli-node/index.js +1722 -281
  29. package/package.json +1 -1
  30. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  31. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  32. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  33. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  34. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  35. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  36. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  37. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  38. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  39. package/packages/omo-codex/plugin/components/lcx/skills/lcx-doctor/SKILL.md +1 -1
  40. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
  41. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  42. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  43. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  44. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  45. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  46. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  47. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  48. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  49. package/packages/omo-codex/plugin/components/ultrawork/dist/cli.js +2 -0
  50. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  51. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  52. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +1 -1
  53. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-unclear.md +2 -2
  54. package/packages/omo-codex/plugin/components/ultrawork/src/directive-content.ts +1 -1
  55. package/packages/omo-codex/plugin/components/ulw-execute-continuation/directive.md +1 -1
  56. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
  57. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
  58. package/packages/omo-codex/plugin/components/ulw-loop/directive.md +2 -0
  59. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
  60. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  61. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +1 -1
  62. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/define-goal.md +1 -1
  63. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +10 -10
  64. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  65. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  66. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  67. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  68. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  69. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  70. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  71. package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
  72. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  73. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  74. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  75. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  76. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  77. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  78. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  79. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  80. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  81. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  82. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  83. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  84. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  85. package/packages/omo-codex/plugin/package-lock.json +12 -12
  86. package/packages/omo-codex/plugin/package.json +1 -1
  87. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +6 -3
  88. package/packages/omo-codex/plugin/skills/ast-grep/AGENTS.md +2 -2
  89. package/packages/omo-codex/plugin/skills/ast-grep/README.md +4 -4
  90. package/packages/omo-codex/plugin/skills/ast-grep/SKILL.md +10 -8
  91. package/packages/omo-codex/plugin/skills/ast-grep/references/cli.md +4 -3
  92. package/packages/omo-codex/plugin/skills/ast-grep/references/patterns.md +5 -5
  93. package/packages/omo-codex/plugin/skills/ast-grep/references/pitfalls.md +3 -3
  94. package/packages/omo-codex/plugin/skills/ast-grep/references/recipes.md +6 -4
  95. package/packages/omo-codex/plugin/skills/ast-grep/references/yaml-rules.md +3 -3
  96. package/packages/omo-codex/plugin/skills/ast-grep/scripts/ast_grep_helper.py +3 -3
  97. package/packages/omo-codex/plugin/skills/browser/SKILL.md +2 -3
  98. package/packages/omo-codex/plugin/skills/browser/references/owned-engine/README.md +1 -1
  99. package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +1 -1
  100. package/packages/omo-codex/plugin/skills/coding-agent-sessions/AGENTS.md +1 -1
  101. package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +2 -1
  102. package/packages/omo-codex/plugin/skills/data-scientist/SKILL.md +8 -6
  103. package/packages/omo-codex/plugin/skills/data-scientist/references/placement.md +9 -5
  104. package/packages/omo-codex/plugin/skills/data-scientist/references/uv-setup.md +3 -3
  105. package/packages/omo-codex/plugin/skills/data-scientist/references/visualization.md +19 -4
  106. package/packages/omo-codex/plugin/skills/debugging/SKILL.md +5 -5
  107. package/packages/omo-codex/plugin/skills/debugging/references/methodology/02-investigate.md +2 -2
  108. package/packages/omo-codex/plugin/skills/debugging/references/methodology/06-fix.md +2 -0
  109. package/packages/omo-codex/plugin/skills/debugging/references/methodology/09-cleanup.md +2 -2
  110. package/packages/omo-codex/plugin/skills/debugging/references/methodology/partial-runtime-evidence.md +1 -1
  111. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/bundled-js-binary.md +1 -1
  112. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/native-binary.md +1 -1
  113. package/packages/omo-codex/plugin/skills/debugging/references/tools/browser-qa.md +1 -2
  114. package/packages/omo-codex/plugin/skills/frontend/SKILL.md +4 -4
  115. package/packages/omo-codex/plugin/skills/frontend/references/design/README.md +2 -2
  116. package/packages/omo-codex/plugin/skills/frontend/references/design/component-catalogs.md +1 -1
  117. package/packages/omo-codex/plugin/skills/frontend/references/design/design-system-architecture.md +2 -2
  118. package/packages/omo-codex/plugin/skills/frontend/references/design/print-paged-media.md +1 -1
  119. package/packages/omo-codex/plugin/skills/frontend/references/design/react-dev-tooling-skill.md +1 -1
  120. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-a-direction.md +5 -5
  121. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/routing.md +2 -2
  122. package/packages/omo-codex/plugin/skills/frontend/references/perfection/README.md +1 -2
  123. package/packages/omo-codex/plugin/skills/frontend/references/perfection/react-perf-tooling.md +27 -8
  124. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/lighthouse-audit.py +0 -1
  125. package/packages/omo-codex/plugin/skills/git-master/SKILL.md +12 -2
  126. package/packages/omo-codex/plugin/skills/init-deep/SKILL.md +1 -1
  127. package/packages/omo-codex/plugin/skills/lcx-doctor/SKILL.md +1 -1
  128. package/packages/omo-codex/plugin/skills/lsp-setup/SKILL.md +24 -15
  129. package/packages/omo-codex/plugin/skills/lsp-setup/references/bash/README.md +3 -3
  130. package/packages/omo-codex/plugin/skills/lsp-setup/references/c-cpp/README.md +2 -2
  131. package/packages/omo-codex/plugin/skills/lsp-setup/references/csharp/README.md +2 -2
  132. package/packages/omo-codex/plugin/skills/lsp-setup/references/dart/README.md +2 -2
  133. package/packages/omo-codex/plugin/skills/lsp-setup/references/elixir/README.md +2 -2
  134. package/packages/omo-codex/plugin/skills/lsp-setup/references/go/README.md +2 -2
  135. package/packages/omo-codex/plugin/skills/lsp-setup/references/haskell/README.md +2 -2
  136. package/packages/omo-codex/plugin/skills/lsp-setup/references/java/README.md +3 -3
  137. package/packages/omo-codex/plugin/skills/lsp-setup/references/julia/README.md +3 -3
  138. package/packages/omo-codex/plugin/skills/lsp-setup/references/kotlin/README.md +4 -4
  139. package/packages/omo-codex/plugin/skills/lsp-setup/references/lua/README.md +2 -2
  140. package/packages/omo-codex/plugin/skills/lsp-setup/references/php/README.md +3 -3
  141. package/packages/omo-codex/plugin/skills/lsp-setup/references/python/README.md +13 -12
  142. package/packages/omo-codex/plugin/skills/lsp-setup/references/ruby/README.md +2 -2
  143. package/packages/omo-codex/plugin/skills/lsp-setup/references/rust/README.md +2 -2
  144. package/packages/omo-codex/plugin/skills/lsp-setup/references/swift/README.md +4 -4
  145. package/packages/omo-codex/plugin/skills/lsp-setup/references/terraform/README.md +2 -2
  146. package/packages/omo-codex/plugin/skills/lsp-setup/references/typescript/README.md +3 -3
  147. package/packages/omo-codex/plugin/skills/lsp-setup/references/yaml/README.md +2 -2
  148. package/packages/omo-codex/plugin/skills/lsp-setup/references/zig/README.md +2 -2
  149. package/packages/omo-codex/plugin/skills/lsp-setup/scripts/detect-lsp.ts +1 -1
  150. package/packages/omo-codex/plugin/skills/lsp-setup/scripts/lsp-server-table.ts +3 -2
  151. package/packages/omo-codex/plugin/skills/programming/SKILL.md +5 -5
  152. package/packages/omo-codex/plugin/skills/programming/references/code-smells.md +2 -2
  153. package/packages/omo-codex/plugin/skills/programming/references/go/README.md +3 -3
  154. package/packages/omo-codex/plugin/skills/programming/references/python/README.md +8 -8
  155. package/packages/omo-codex/plugin/skills/programming/references/python/data-processing.md +9 -9
  156. package/packages/omo-codex/plugin/skills/programming/references/python/libraries.md +3 -3
  157. package/packages/omo-codex/plugin/skills/programming/references/python/one-liners.md +1 -1
  158. package/packages/omo-codex/plugin/skills/programming/references/python/pyproject-strict.md +1 -1
  159. package/packages/omo-codex/plugin/skills/programming/references/rust/libraries.md +2 -2
  160. package/packages/omo-codex/plugin/skills/programming/references/rust-ub/README.md +3 -3
  161. package/packages/omo-codex/plugin/skills/programming/references/typescript/README.md +5 -5
  162. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/new-project.ts +1 -1
  163. package/packages/omo-codex/plugin/skills/refactor/SKILL.md +36 -36
  164. package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +6 -6
  165. package/packages/omo-codex/plugin/skills/review-work/SKILL.md +2 -2
  166. package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +11 -8
  167. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/AGENTS.md +4 -4
  168. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/agent-reach/README.md +2 -2
  169. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/agent-reach/career.md +1 -1
  170. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/agent-reach/social.md +1 -1
  171. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/agent-reach/web.md +4 -4
  172. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +2 -1
  173. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/README.md +17 -18
  174. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/fallback.md +10 -6
  175. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/jina.md +12 -12
  176. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/naver.md +3 -3
  177. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/playwright.md +1 -1
  178. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/rss.md +1 -1
  179. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/tls-impersonate.md +12 -7
  180. package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +2 -0
  181. package/packages/omo-codex/plugin/skills/ulw-execute/SKILL.md +9 -6
  182. package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +1 -1
  183. package/packages/omo-codex/plugin/skills/ulw-loop/references/define-goal.md +1 -1
  184. package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +10 -10
  185. package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +1 -1
  186. package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-unclear.md +2 -2
  187. package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +4 -4
  188. package/packages/omo-codex/plugin/skills/ulw-research/references/deliverable-phase.md +5 -5
  189. package/packages/omo-codex/plugin/skills/ulw-research/references/report-visualization.md +2 -2
  190. package/packages/omo-codex/plugin/skills/ulw-research/references/research-collection.md +2 -2
  191. package/packages/omo-codex/plugin/skills/ulw-research/references/unit-rules.md +2 -2
  192. package/packages/omo-codex/plugin/skills/visual-qa/AGENTS.md +1 -1
  193. package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +5 -5
  194. package/packages/omo-codex/plugin/skills/visual-qa/references/browser-setup.md +4 -2
  195. package/packages/omo-codex/plugin/test/sync-skills-codex-compatibility.test.mjs +2 -0
  196. package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +7 -3
  197. package/packages/omo-codex/scripts/install-dist/install-local.mjs +2 -2
  198. package/packages/prompts-core/prompts/ultrawork/codex.md +2 -0
  199. package/packages/shared-skills/skills/ast-grep/AGENTS.md +2 -2
  200. package/packages/shared-skills/skills/ast-grep/README.md +4 -4
  201. package/packages/shared-skills/skills/ast-grep/SKILL.md +10 -8
  202. package/packages/shared-skills/skills/ast-grep/references/cli.md +4 -3
  203. package/packages/shared-skills/skills/ast-grep/references/patterns.md +5 -5
  204. package/packages/shared-skills/skills/ast-grep/references/pitfalls.md +3 -3
  205. package/packages/shared-skills/skills/ast-grep/references/recipes.md +6 -4
  206. package/packages/shared-skills/skills/ast-grep/references/yaml-rules.md +3 -3
  207. package/packages/shared-skills/skills/ast-grep/scripts/ast_grep_helper.py +3 -3
  208. package/packages/shared-skills/skills/browser/SKILL.md +2 -3
  209. package/packages/shared-skills/skills/browser/references/owned-engine/README.md +1 -1
  210. package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
  211. package/packages/shared-skills/skills/coding-agent-sessions/AGENTS.md +1 -1
  212. package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +2 -1
  213. package/packages/shared-skills/skills/data-scientist/SKILL.md +8 -6
  214. package/packages/shared-skills/skills/data-scientist/references/placement.md +9 -5
  215. package/packages/shared-skills/skills/data-scientist/references/uv-setup.md +3 -3
  216. package/packages/shared-skills/skills/data-scientist/references/visualization.md +19 -4
  217. package/packages/shared-skills/skills/debugging/SKILL.md +5 -5
  218. package/packages/shared-skills/skills/debugging/references/methodology/02-investigate.md +2 -2
  219. package/packages/shared-skills/skills/debugging/references/methodology/06-fix.md +2 -0
  220. package/packages/shared-skills/skills/debugging/references/methodology/09-cleanup.md +2 -2
  221. package/packages/shared-skills/skills/debugging/references/methodology/partial-runtime-evidence.md +1 -1
  222. package/packages/shared-skills/skills/debugging/references/runtimes/bundled-js-binary.md +1 -1
  223. package/packages/shared-skills/skills/debugging/references/runtimes/native-binary.md +1 -1
  224. package/packages/shared-skills/skills/debugging/references/tools/browser-qa.md +1 -2
  225. package/packages/shared-skills/skills/frontend/SKILL.md +4 -4
  226. package/packages/shared-skills/skills/frontend/references/design/README.md +2 -2
  227. package/packages/shared-skills/skills/frontend/references/design/component-catalogs.md +1 -1
  228. package/packages/shared-skills/skills/frontend/references/design/design-system-architecture.md +2 -2
  229. package/packages/shared-skills/skills/frontend/references/design/print-paged-media.md +1 -1
  230. package/packages/shared-skills/skills/frontend/references/design/react-dev-tooling-skill.md +1 -1
  231. package/packages/shared-skills/skills/frontend/references/designpowers/lane-a-direction.md +5 -5
  232. package/packages/shared-skills/skills/frontend/references/designpowers/routing.md +2 -2
  233. package/packages/shared-skills/skills/frontend/references/perfection/README.md +1 -2
  234. package/packages/shared-skills/skills/frontend/references/perfection/react-perf-tooling.md +27 -8
  235. package/packages/shared-skills/skills/frontend/scripts/perfection/lighthouse-audit.py +0 -1
  236. package/packages/shared-skills/skills/git-master/SKILL.md +12 -2
  237. package/packages/shared-skills/skills/init-deep/SKILL.md +1 -1
  238. package/packages/shared-skills/skills/lsp-setup/SKILL.md +24 -15
  239. package/packages/shared-skills/skills/lsp-setup/references/bash/README.md +3 -3
  240. package/packages/shared-skills/skills/lsp-setup/references/c-cpp/README.md +2 -2
  241. package/packages/shared-skills/skills/lsp-setup/references/csharp/README.md +2 -2
  242. package/packages/shared-skills/skills/lsp-setup/references/dart/README.md +2 -2
  243. package/packages/shared-skills/skills/lsp-setup/references/elixir/README.md +2 -2
  244. package/packages/shared-skills/skills/lsp-setup/references/go/README.md +2 -2
  245. package/packages/shared-skills/skills/lsp-setup/references/haskell/README.md +2 -2
  246. package/packages/shared-skills/skills/lsp-setup/references/java/README.md +3 -3
  247. package/packages/shared-skills/skills/lsp-setup/references/julia/README.md +3 -3
  248. package/packages/shared-skills/skills/lsp-setup/references/kotlin/README.md +4 -4
  249. package/packages/shared-skills/skills/lsp-setup/references/lua/README.md +2 -2
  250. package/packages/shared-skills/skills/lsp-setup/references/php/README.md +3 -3
  251. package/packages/shared-skills/skills/lsp-setup/references/python/README.md +13 -12
  252. package/packages/shared-skills/skills/lsp-setup/references/ruby/README.md +2 -2
  253. package/packages/shared-skills/skills/lsp-setup/references/rust/README.md +2 -2
  254. package/packages/shared-skills/skills/lsp-setup/references/swift/README.md +4 -4
  255. package/packages/shared-skills/skills/lsp-setup/references/terraform/README.md +2 -2
  256. package/packages/shared-skills/skills/lsp-setup/references/typescript/README.md +3 -3
  257. package/packages/shared-skills/skills/lsp-setup/references/yaml/README.md +2 -2
  258. package/packages/shared-skills/skills/lsp-setup/references/zig/README.md +2 -2
  259. package/packages/shared-skills/skills/lsp-setup/scripts/detect-lsp.ts +1 -1
  260. package/packages/shared-skills/skills/lsp-setup/scripts/lsp-server-table.ts +3 -2
  261. package/packages/shared-skills/skills/programming/SKILL.md +5 -5
  262. package/packages/shared-skills/skills/programming/references/code-smells.md +2 -2
  263. package/packages/shared-skills/skills/programming/references/go/README.md +3 -3
  264. package/packages/shared-skills/skills/programming/references/python/README.md +8 -8
  265. package/packages/shared-skills/skills/programming/references/python/data-processing.md +9 -9
  266. package/packages/shared-skills/skills/programming/references/python/libraries.md +3 -3
  267. package/packages/shared-skills/skills/programming/references/python/one-liners.md +1 -1
  268. package/packages/shared-skills/skills/programming/references/python/pyproject-strict.md +1 -1
  269. package/packages/shared-skills/skills/programming/references/rust/libraries.md +2 -2
  270. package/packages/shared-skills/skills/programming/references/rust-ub/README.md +3 -3
  271. package/packages/shared-skills/skills/programming/references/typescript/README.md +5 -5
  272. package/packages/shared-skills/skills/programming/scripts/typescript/new-project.ts +1 -1
  273. package/packages/shared-skills/skills/refactor/SKILL.md +36 -36
  274. package/packages/shared-skills/skills/remove-ai-slops/SKILL.md +6 -6
  275. package/packages/shared-skills/skills/review-work/SKILL.md +2 -2
  276. package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +11 -8
  277. package/packages/shared-skills/skills/ultimate-browsing/engine/AGENTS.md +4 -4
  278. package/packages/shared-skills/skills/ultimate-browsing/references/agent-reach/README.md +2 -2
  279. package/packages/shared-skills/skills/ultimate-browsing/references/agent-reach/career.md +1 -1
  280. package/packages/shared-skills/skills/ultimate-browsing/references/agent-reach/social.md +1 -1
  281. package/packages/shared-skills/skills/ultimate-browsing/references/agent-reach/web.md +4 -4
  282. package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +2 -1
  283. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/README.md +17 -18
  284. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/fallback.md +10 -6
  285. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/jina.md +12 -12
  286. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/naver.md +3 -3
  287. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/playwright.md +1 -1
  288. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/rss.md +1 -1
  289. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/tls-impersonate.md +12 -7
  290. package/packages/shared-skills/skills/ulw-execute/SKILL.md +9 -6
  291. package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +1 -1
  292. package/packages/shared-skills/skills/ulw-plan/references/intent-unclear.md +2 -2
  293. package/packages/shared-skills/skills/ulw-research/SKILL.md +5 -5
  294. package/packages/shared-skills/skills/ulw-research/references/deliverable-phase.md +5 -5
  295. package/packages/shared-skills/skills/ulw-research/references/report-visualization.md +2 -2
  296. package/packages/shared-skills/skills/ulw-research/references/research-collection.md +2 -2
  297. package/packages/shared-skills/skills/ulw-research/references/unit-rules.md +2 -2
  298. package/packages/shared-skills/skills/visual-qa/AGENTS.md +1 -1
  299. package/packages/shared-skills/skills/visual-qa/SKILL.md +5 -5
  300. package/packages/shared-skills/skills/visual-qa/references/browser-setup.md +4 -2
@@ -12,7 +12,7 @@ Restraint with a visible hierarchy. The brief's primary action is the one promin
12
12
  - **Layer A, taste skills (12 files, named `-skill.md` or `imagegen-`):** how to execute. Discipline, spacing, motion physics, anti-slop guardrails, output completeness.
13
13
  - **Layer B, design systems (70 brand files):** what it looks like. Concrete colour, type, and component tokens for one brand.
14
14
 
15
- `_INDEX.md` lists all 83 with mood-to-brand mappings and stacking rules; read it when routing is not obvious. Most non-trivial tasks load one from each layer. For a brand or style outside the curated set, or when the user says "Open Design", load the `open-design` skill (the local nexu-io/open-design library, 150+ design systems) as the expanded library; this file keeps routing discipline, the `DESIGN.md` gate, and execution quality.
15
+ `_INDEX.md` lists all 83 with mood-to-brand mappings and stacking rules; read it when routing is not obvious. Most non-trivial tasks load one from each layer. For a brand or style outside the curated set, or when the user says "Open Design", use the nexu-io/open-design library (https://github.com/nexu-io/open-design), 150+ design systems, as the expanded library; this file keeps routing discipline, the `DESIGN.md` gate, and execution quality.
16
16
 
17
17
  ## Phase 0: Design System Gate (before routing, before any UI code)
18
18
 
@@ -23,7 +23,7 @@ Look for `DESIGN.md`, `design-system.md`, or `design-tokens.md` at the project r
23
23
  **It does not exist: read `design-system-architecture.md` for the structure, then take the branch:**
24
24
 
25
25
  1. **Greenfield, no concrete reference.** Research is a build step with named deliverables, not exploration to budget: run the lanes in parallel and open `DESIGN.md` with `## 0. Research Log`, one line per lane. A lane with no line did not run; skip a lane only when its tool or network is unavailable, and name the skip there.
26
- - *Embedded references:* shortlist 2-3 plausible Layer B candidates from `_INDEX.md`, then read ONE Layer A style skill and ONE Layer B reference in full, every line (they are 200-500 lines; a sliced read produces the flattened token set this gate exists to prevent). Log the shortlist, the pick, and why. `open-design` only when the curated set has no fit; `ui-ux-db` lookups for palette, type, and domain questions that come up here.
26
+ - *Embedded references:* shortlist 2-3 plausible Layer B candidates from `_INDEX.md`, then read ONE Layer A style skill and ONE Layer B reference in full, every line (they are 200-500 lines; a sliced read produces the flattened token set this gate exists to prevent). Log the shortlist, the pick, and why. The open-design library only when the curated set has no fit; `ui-ux-db` lookups for palette, type, and domain questions that come up here.
27
27
  - *Lazyweb real-product screens:* read `lazyweb.md` FIRST and run its recipe verbatim; it mints its own anonymous token, so never improvise curl calls against the host. Log the queries, how many screens you actually viewed, and the layout grammar taken, never pixel copies. When the harness has the user's own Mobbin MCP connected, run its `search_screens`, `search_flows`, or `search_sections` in this lane too; never reach Mobbin any other way (`component-catalogs.md` section 2). For every reference keep the product name and URL, write what you saw apart from what you recommend, and treat a recurring pattern as a convention, not proof. If the findings lean on one product, widen the set before you build.
28
28
  - *StyleGallery:* read `stylegallery.md`, fetch the pattern whose primary spatial problem matches the screen, and write the `Layout:` line.
29
29
  - *Imagen concept drafts:* generate 2-3 drafts, each seeded with the loaded Layer A + Layer B tokens (palette, type, material); pick the strongest and treat it as the reference-fidelity contract. Log the paths and the pick.
@@ -15,7 +15,7 @@
15
15
  | Tailwind-only, no React, server-rendered HTML | daisyUI class components | - | Motion is CSS transitions on `DESIGN.md` section 6 tokens. |
16
16
  | Charts and data viz | `ui-ux-db` `--domain chart` for the chart type | bklit for animated chart source; MUI X Charts on Material projects | Section 4. |
17
17
  | Landing sections: header, pricing, FAQ, logo cloud, stats, testimonials, footer | smoothui blocks, cult-ui blocks | the section galleries in section 2 (navbar, pricing, CTA, hero, footer) | Take structure only; copy and imagery stay the project's. |
18
- | A brand outside the 70 Layer B files | `open-design` skill | designmd.ai: community `DESIGN.md` files, MCP; read each file's licence first (its uploader picks MIT, CC0, CC-BY, CC-BY-SA, or a custom one) | Never refero styles (section 2). |
18
+ | A brand outside the 70 Layer B files | The nexu-io/open-design library | designmd.ai: community `DESIGN.md` files, MCP; read each file's licence first (its uploader picks MIT, CC0, CC-BY, CC-BY-SA, or a custom one) | Never refero styles (section 2). |
19
19
 
20
20
  ## 2. Catalogs (measured 2026-10-06; microkit, motion-primitives, uiverse, and 21st.dev on 2026-10-25)
21
21
 
@@ -60,7 +60,7 @@ rather than borders, creating layers you feel more than see."
60
60
  | Status/info | --status-info | #2563EB | #3B82F6 | Informational |
61
61
 
62
62
  ### Rules
63
- - Accent marks the one or two most likely actions on a screen, on the control's background rather than its glyph or label. Peer choices differ by style, never by size. Nothing decorative carries accent.
63
+ - Accent marks the screen's one primary action, on the control's background rather than its glyph or label; a second likely action takes a quieter style. Peer choices differ by style, never by size. Nothing decorative carries accent.
64
64
  - Never introduce a color not in this table. Extend the table first.
65
65
 
66
66
  ## 3. Typography
@@ -229,7 +229,7 @@ Both paths start with `grounding.md`: the guideline source read in full, the ide
229
229
 
230
230
  ### For New Projects
231
231
 
232
- 1. **Select references before taste** — no visual reference means `_INDEX.md` shortlist of 2-3 Layer B candidates, then exactly one Layer A style skill and one Layer B brand/design-system reference. Use `open-design` only when the curated set has no fit.
232
+ 1. **Select references before taste** — no visual reference means `_INDEX.md` shortlist of 2-3 Layer B candidates, then exactly one Layer A style skill and one Layer B brand/design-system reference. Use the open-design library only when the curated set has no fit.
233
233
  2. **Assemble from references** — extract tokens, layout grammar, component anatomy, states, motion, and taste decisions, then recombine them into project-specific primitives. Customize for the user's product; never copy logos, trademarked assets, or brand-specific copy.
234
234
  3. **Define the system** — colour roles first (both themes), then atmosphere, typography, spacing, and one depth strategy, grounded in the selected references and product semantics. Sanity-check the palette and type pairing with one `ui-ux-db` domain search (CLI in `references/ui-ux-db/README.md`).
235
235
  4. **Document initial primitives** — only components you are about to build, including variants and states, starting from shadcn/ui anatomy (or the project's own kit) restyled with the tokens.
@@ -73,4 +73,4 @@ pdftoppm -png -r 150 report.pdf out/page # one PNG per page
73
73
 
74
74
  Read every page image for: blank or near-empty pages, a block stranded alone after a keep-together push, a table or figure split mid-exhibit, a heading orphaned at a page foot, clipped or overflowing text, and a running header or footer that drifted or vanished.
75
75
 
76
- Extracting the text proves the words are present. It cannot see any defect in this list - layout is exactly the information that extraction discards. Fix, re-render, and look again until the pages are clean; the same standard governs the `ulw-research` delivery gate and the `mass-ulw` verification wave.
76
+ Extracting the text proves the words are present. It cannot see any defect in this list - layout is exactly the information that extraction discards. Fix, re-render, and look again until the pages are clean. The `ulw-research` delivery gate and the `mass-ulw` verification wave hold the same page-by-page inspection standard; `ulw-research` bounds its repair loop (its `repair decide` stop rules) and ships any residual defect listed in its manifest.
@@ -222,7 +222,7 @@ If any of those leak into production, the dev gate is broken. Fix the gate befor
222
222
  ## Cross-skill references
223
223
 
224
224
  - For **render performance / Lighthouse 100** work, see `../perfection/react-perf-tooling.md` — Playwright + `react-scan/lite` integration used during automated audits.
225
- - For **debugging an in-flight React bug**, see `../../debugging/references/tools/react-devtools.md` — runtime/static use during a bug hunt rather than initial setup.
225
+ - For **browser runtime inspection during an in-flight React bug** (rendered state, console, network), load the `debugging` skill and follow its `references/tools/browser-qa.md`; React-specific inspection uses the React dev tooling this file sets up.
226
226
  - The Phase 0 Design System Gate (in `README.md`) and this React Dev Tooling Gate are both pre-implementation gates. Run Phase 0 first (design system must exist), then this gate (dev tooling must be installed).
227
227
 
228
228
  ## Mantra
@@ -1,17 +1,17 @@
1
1
  # Lane A: Direction & Discovery
2
2
 
3
- Lane A feeds `ulw-plan`. It does not replace Prometheus, write a parallel plan, or start implementation. Its job is to translate designpowers discovery, research, persona, taste, debate, and state capabilities into prompt context that lets `ulw-plan` produce a decision-complete work plan with design-specific acceptance criteria.
3
+ Lane A feeds `ulw-plan`. It does not replace the `ulw-plan` planner, write a parallel plan, or start implementation. Its job is to translate designpowers discovery, research, persona, taste, debate, and state capabilities into prompt context that lets `ulw-plan` produce a decision-complete work plan with design-specific acceptance criteria.
4
4
 
5
5
  ## Phase Owner
6
6
 
7
7
  | Capability | Source boundary | owner | Mapping |
8
8
  |---|---|---|---|
9
- | Discover the human problem, constraints, audience, success criteria, and early taste signals | Authored concept preserved from excluded raw `design-discovery` | `ulw-plan` | Inject a compact design brief request before Prometheus drafts tasks. Prometheus still decides the plan structure and asks only unresolved owner decisions. |
9
+ | Discover the human problem, constraints, audience, success criteria, and early taste signals | Authored concept preserved from excluded raw `design-discovery` | `ulw-plan` | Inject a compact design brief request before the planner drafts tasks. The planner still decides the plan structure and asks only unresolved owner decisions. |
10
10
  | Identify research gaps and inclusion-aware research methods | `research-planning` | `ulw-plan` | Convert research questions into plan discovery tasks or explicit assumptions with evidence requirements. |
11
11
  | Define principles, experience map, positioning, and success metrics | Authored concept preserved from excluded raw `design-strategy` | `ulw-plan` | Add strategy constraints and design principles to the plan's acceptance criteria. |
12
12
  | Represent the full ability spectrum | `inclusive-personas` | `ulw-plan` | Require personas and stress cases in plan inputs, including permanent, temporary, and situational contexts. |
13
13
  | Calibrate current-project taste and quality bar | Authored concept preserved from excluded raw `design-taste` | `ulw-plan` | Add live taste constraints for this project only; do not import cross-project memory as a design rule. |
14
- | Surface competing directions and trade-offs | `design-debate` | `ulw-plan` | When direction is ambiguous, ask Prometheus to present 2-3 options with accessibility and usability trade-offs before choosing defaults. |
14
+ | Surface competing directions and trade-offs | `design-debate` | `ulw-plan` | When direction is ambiguous, ask the planner to present 2-3 options with accessibility and usability trade-offs before choosing defaults. |
15
15
  | Curate references and inspiration without copying | `inspiration-scouting` | `ulw-plan` | Add evidence-backed inspiration notes as optional plan context, with "what to take" and "what to leave." |
16
16
  | Maintain shared design state | Authored concept preserved from excluded raw `design-state` | `ulw-plan` | Read and update `.omo/frontend-design/state.md` as the OpenAgent-native state ledger. |
17
17
 
@@ -33,7 +33,7 @@ Before planning, extract or infer:
33
33
  - competing directions and trade-offs when direction is not settled
34
34
  - existing `.omo/frontend-design/state.md` decisions, debt, and open questions
35
35
 
36
- Add design-specific acceptance criteria to the Prometheus plan:
36
+ Add design-specific acceptance criteria to the `ulw-plan` plan:
37
37
  - each UI task names the persona or journey it serves
38
38
  - each task has accessibility and cognitive-accessibility checks where relevant
39
39
  - each visual decision traces to a design principle, taste signal, or design-system token
@@ -52,7 +52,7 @@ Lane A passes only when the plan has inspectable design context, not vague inten
52
52
  ## Guardrails
53
53
 
54
54
  - `ulw-plan` owns the final plan. Lane A may enrich prompts, but it must not create a second planning lane or standalone design plan.
55
- - `writing-design-plans` content is used only as task-quality guidance; Prometheus remains the source of executable TODOs.
55
+ - `writing-design-plans` content is used only as task-quality guidance; the `ulw-plan` plan remains the source of executable TODOs.
56
56
  - Cross-project memory is descriptive only and must not steer this project's direction unless the user states the preference now.
57
57
  - Direction debates pause for user decision when the trade-off is product-shaping, accessibility-critical, or hard to reverse.
58
58
  - No new scheduler, background automation, or project root design-state convention is introduced; state stays at `.omo/frontend-design/state.md`.
@@ -14,7 +14,7 @@
14
14
 
15
15
  ## Planning Through `/ulw-plan`
16
16
 
17
- When planning is needed, `designpowers` supplies design-specific context and lets `/ulw-plan` own the plan artifact. Do not write a separate design plan. The Prometheus plan should receive:
17
+ When planning is needed, `designpowers` supplies design-specific context and lets `/ulw-plan` own the plan artifact. Do not write a separate design plan. The `ulw-plan` plan should receive:
18
18
 
19
19
  - product or page goal;
20
20
  - primary tasks and user journeys;
@@ -35,7 +35,7 @@ When a plan is approved or selected, `/ulw-execute` remains the orchestrator. `d
35
35
  - required `/visual-qa` loading for rendered visual proof;
36
36
  - the design debt rule: unresolved accessibility debt cannot disappear into a summary.
37
37
 
38
- Direct implementation outside `/ulw-execute` is not part of this routing contract when a Prometheus plan is active.
38
+ Direct implementation outside `/ulw-execute` is not part of this routing contract when a `ulw-plan` plan is active.
39
39
 
40
40
  ## UI Build Through Frontend `design` And `perfection`
41
41
 
@@ -16,7 +16,7 @@ The correct path:
16
16
  3. Run Lighthouse against the Playwright-controlled page via `playwright-lighthouse` OR via `chrome-launcher` + the `lighthouse` Node API, attaching to the Playwright CDP endpoint so cookies, auth state, and warmed caches mirror what a real returning user sees.
17
17
  4. Use the **mobile** preset (4x CPU throttle, Fast 3G) for the primary number, AND the **desktop** preset for the secondary number. Report both.
18
18
 
19
- If the `playwright` skill is not loaded in this session, load it now via the `skill` tool.
19
+ If no browser-automation skill is loaded in this session, load the `browser` skill now (read its `SKILL.md`).
20
20
 
21
21
  ### 2. 100 IN EVERY CATEGORY IS THE FLOOR.
22
22
 
@@ -90,7 +90,6 @@ Quick audit via the cross-platform Python CLI (macOS, Linux, Windows):
90
90
 
91
91
  ```bash
92
92
  uv run $SKILL_DIR/scripts/perfection/lighthouse-audit.py https://localhost:3000
93
- uv run $SKILL_DIR/scripts/perfection/lighthouse-audit.py https://localhost:3000 --threshold 95
94
93
  uv run $SKILL_DIR/scripts/perfection/lighthouse-audit.py https://localhost:3000 --desktop-only
95
94
  bun $SKILL_DIR/scripts/perfection/check-draft-guard.ts src/ # exit 1 = accent stripe or outline, promo copy, emoji icon, hype badge, or vanity stat
96
95
  ```
@@ -20,17 +20,38 @@ If the project does not yet have react-scan and react-doctor wired into its dev
20
20
  import { chromium } from "playwright";
21
21
  import { playAudit } from "playwright-lighthouse";
22
22
 
23
+ declare global {
24
+ interface Window {
25
+ __renderEvents: unknown[];
26
+ }
27
+ }
28
+
29
+ // Narrow only the fields this gate reads from a react-scan commit event.
30
+ function hasUnnecessaryRender(event: unknown): boolean {
31
+ if (typeof event !== "object" || event === null || !("tree" in event) || !Array.isArray(event.tree)) return false;
32
+ return event.tree.some(
33
+ (node: unknown) =>
34
+ typeof node === "object" &&
35
+ node !== null &&
36
+ "changeDescription" in node &&
37
+ typeof node.changeDescription === "object" &&
38
+ node.changeDescription !== null &&
39
+ "kind" in node.changeDescription &&
40
+ node.changeDescription.kind === "unnecessary",
41
+ );
42
+ }
43
+
23
44
  const browser = await chromium.launch({ channel: "chrome" });
24
45
  const context = await browser.newContext();
25
46
 
26
47
  // Inject react-scan/lite BEFORE the app boots
27
48
  await context.addInitScript(() => {
28
- // @ts-ignore — pulled from the project's node_modules or a self-hosted bundle
49
+ // react-scan is a dev dependency of the project (see ../design/react-dev-tooling-skill.md), so its types resolve
29
50
  import("react-scan/lite").then(({ instrument }) => {
30
- (window as any).__renderEvents = [];
51
+ window.__renderEvents = [];
31
52
  instrument({
32
- onEvent: (event: any) => {
33
- if (event.kind === "commit") (window as any).__renderEvents.push(event);
53
+ onEvent: (event) => {
54
+ if (event.kind === "commit") window.__renderEvents.push(event);
34
55
  },
35
56
  recordChangeDescriptions: true,
36
57
  includeFiberSource: true,
@@ -51,10 +72,8 @@ await playAudit({
51
72
  });
52
73
 
53
74
  // Pull render events and assert on render quality
54
- const events = await page.evaluate(() => (window as any).__renderEvents);
55
- const unnecessary = events.filter((e: any) =>
56
- e.tree?.some((node: any) => node.changeDescription?.kind === "unnecessary"),
57
- );
75
+ const events = await page.evaluate(() => window.__renderEvents);
76
+ const unnecessary = events.filter(hasUnnecessaryRender);
58
77
 
59
78
  if (unnecessary.length > 0) {
60
79
  console.error(`FAIL: ${unnecessary.length} unnecessary renders detected during audit`);
@@ -16,7 +16,6 @@
16
16
  # 3. Run:
17
17
  # uv run lighthouse-audit.py https://example.com
18
18
  # uv run lighthouse-audit.py https://example.com --desktop-only
19
- # uv run lighthouse-audit.py https://example.com --threshold 95
20
19
  # ──────────────────
21
20
 
22
21
  """Lighthouse audit via real Playwright Chrome.
@@ -16,7 +16,7 @@ Classify the request first:
16
16
  - `HISTORY`: answer when, where, who, why, or which commit changed something.
17
17
  - `STATUS`: inspect branch, diff, or working-tree state without changing it.
18
18
 
19
- Do not commit, rebase, push, force-push, reset, stash-pop, or delete anything unless the user explicitly asked for that operation. If the request is only investigative, report findings and stop.
19
+ Do not commit, rebase, push, force-push, reset, stash-pop, or delete anything unless the user explicitly asked for that operation. When a workflow the user started mandates one of them (ulw-loop commits each verified unit, ulw-execute lands its branches), that workflow's instruction is the ask. If the request is only investigative, report findings and stop.
20
20
 
21
21
  ## Ground Truth
22
22
 
@@ -38,7 +38,17 @@ Missing upstream or missing `main`/`master` is normal. Fall back to the best ava
38
38
 
39
39
  ## PR Body Evidence Attachments
40
40
 
41
- When a PR body needs screenshots or terminal PNGs, use the repo reference at `docs/reference/github-attachment-upload.md`. The allowed hosting path is GitHub user attachments from the authenticated web attachment flow; never commit temporary images, never use GitHub Releases for PR evidence, and never use external image hosts. Do not log browser cookies, CSRF tokens, S3 form fields, or upload headers.
41
+ When a PR body needs screenshots or terminal PNGs, the allowed hosting path is GitHub user attachments from the authenticated web attachment flow; never commit temporary images, never use GitHub Releases for PR evidence, and never use external image hosts. Do not log browser cookies, CSRF tokens, S3 form fields, or upload headers.
42
+
43
+ The flow needs an authenticated GitHub web session (a `gh` API token alone is not enough):
44
+
45
+ 1. Open the target PR or issue page in that session and read its file-attachment CSRF token and repository id.
46
+ 2. `POST https://github.com/upload/policies/assets` with `repository_id`, `name`, `size`, `content_type`, and that token as `authenticity_token`.
47
+ 3. Upload the bytes to the returned S3 URL with the returned form fields exactly as given.
48
+ 4. `PUT https://github.com/upload/assets/:id` with the returned `asset_upload_authenticity_token`.
49
+ 5. Put only the final `https://github.com/user-attachments/assets/<uuid>` URL in the PR body (write the body to a temp file and pass it with `gh pr edit --body-file`).
50
+
51
+ If no authenticated browser session is available, leave the local evidence paths in the PR body and state the blocker.
42
52
 
43
53
  ## Commit Mode
44
54
 
@@ -171,7 +171,7 @@ for each background task ID (`bg_...`): background_output(task_id="bg_...")
171
171
  ```
172
172
  AGENTS_LOCATIONS = [
173
173
  { path: ".", type: "root" },
174
- { path: "src/hooks", score: 18, reason: "high complexity" },
174
+ { path: "src/hooks", score: 16, reason: "high complexity" },
175
175
  { path: "src/api", score: 12, reason: "distinct domain" }
176
176
  ]
177
177
  ```
@@ -27,11 +27,11 @@ reference before installing or configuring anything**.
27
27
  | `.py .pyi` | `references/python/README.md` |
28
28
  | `.go` | `references/go/README.md` |
29
29
  | `.rs` | `references/rust/README.md` |
30
- | `.c .cpp .cc .cxx .h .hpp .hh .hxx` | `references/c-cpp/README.md` |
30
+ | `.c .cpp .cc .cxx .c++ .h .hpp .hh .hxx .h++` | `references/c-cpp/README.md` |
31
31
  | `.java` | `references/java/README.md` |
32
32
  | `.kt .kts` | `references/kotlin/README.md` |
33
33
  | `.cs .razor .cshtml` | `references/csharp/README.md` |
34
- | `.swift` | `references/swift/README.md` |
34
+ | `.swift .m .mm` | `references/swift/README.md` |
35
35
  | `.rb .rake .gemspec .ru` | `references/ruby/README.md` |
36
36
  | `.php` | `references/php/README.md` |
37
37
  | `.dart` | `references/dart/README.md` |
@@ -75,13 +75,20 @@ command -v <server-executable> # e.g. typescript-language-server, gopls, rust-
75
75
 
76
76
  Most builtin servers need **no config** — they are resolved automatically by
77
77
  file extension. Write config only to: pick between competing servers, set a
78
- `priority`, pass `initialization` options, override `extensions`, set `env`, or
79
- `disable` a server.
78
+ `priority`, pass `initialization` options, override `extensions`, set `env`
79
+ (user config only), or `disable` a server.
80
80
 
81
- Two project-scoped config files, **identical JSON shape**:
81
+ Config files per harness, **identical JSON shape**. Each harness reads the
82
+ first project file that exists, plus one user file:
82
83
 
83
- - Codex harness → `.codex/lsp-client.json` (user: `~/.codex/lsp-client.json`)
84
- - OpenCode/omo harness → `.opencode/lsp.json` (also `.omo/lsp.json`)
84
+ | Harness | Project config | User config |
85
+ |---|---|---|
86
+ | Codex | `.codex/lsp-client.json` | `$CODEX_HOME/lsp-client.json` (default `~/.codex/lsp-client.json`) |
87
+ | OpenCode | `.opencode/lsp.json`, then `.omo/lsp.json`, then `.omo/lsp-client.json` | `lsp.json` in the OpenCode config dir (default `~/.config/opencode/lsp.json`) |
88
+ | OmO native | `.omo/lsp-client.json`, then `.pi/lsp-client.json` | `~/.omo/lsp-client.json` (`~/.pi/lsp-client.json` when only that one exists) |
89
+
90
+ A standalone `lsp-tools-mcp` launch reads the paths in
91
+ `LSP_TOOLS_MCP_PROJECT_CONFIG` / `LSP_TOOLS_MCP_USER_CONFIG` instead.
85
92
 
86
93
  ```jsonc
87
94
  {
@@ -100,14 +107,16 @@ Two project-scoped config files, **identical JSON shape**:
100
107
 
101
108
  Rules enforced by `config-loader.ts`:
102
109
 
103
- - In a **project** config (`.codex/lsp-client.json`, `.opencode/lsp.json`) an
104
- entry whose id is a **builtin** server inherits `command` automatically — you
105
- only override `extensions` / `priority` / `initialization`. A non-builtin id
106
- in a project config is **ignored**.
107
- - To define a **fully custom** (non-builtin) server with its own `command`, put
108
- it in the **user** config (`~/.codex/lsp-client.json`, or the path set by
109
- `LSP_TOOLS_MCP_USER_CONFIG`), where `command` + `extensions` are honored.
110
- - Project entries win over user entries; both win over builtin defaults.
110
+ - In a **project** config an entry whose id is a **builtin** server inherits
111
+ `command` automatically — you only override `extensions` / `priority` /
112
+ `initialization` / `disabled`. Its `env` is dropped, and a non-builtin id in
113
+ a project config is **ignored**.
114
+ - To set `env`, or to define a **fully custom** (non-builtin) server with its
115
+ own `command`, put it in the **user** config from the table above, where
116
+ `command` + `extensions` + `env` are honored.
117
+ - Project entries win over user entries; both win over builtin defaults. A user
118
+ entry is skipped when an enabled project entry has the same id, so keep an id
119
+ that needs `env` out of the project config.
111
120
 
112
121
  Each language reference gives a ready-to-paste snippet.
113
122
 
@@ -27,17 +27,17 @@ command -v shellcheck
27
27
 
28
28
  ## Configure
29
29
 
30
- Builtin — usually NO config needed (auto-resolved by extension). Configure only to set priority, init options, override extensions, or disable. Same JSON shape in `.codex/lsp-client.json` (Codex) AND `.opencode/lsp.json` (OpenCode/omo):
30
+ Builtin — usually NO config needed (auto-resolved by extension). Configure only to set priority, init options, override extensions, or disable. Same JSON shape in every harness's project config (per-harness paths: the Configure step in `SKILL.md`):
31
31
 
32
32
  ```json
33
33
  { "lsp": { "bash": { "priority": 100 } } }
34
34
  ```
35
35
 
36
- For builtin ids in a PROJECT config, `command` is supplied automatically — only set `priority`/`initialization`/`extensions`/`disabled`/`env`. A fully custom (non-builtin) server with its own `command` must go in the USER config (`~/.codex/lsp-client.json`).
36
+ For builtin ids in a PROJECT config, `command` is supplied automatically — only set `priority`/`initialization`/`extensions`/`disabled` (a project entry drops `env`). `env`, and a fully custom (non-builtin) server with its own `command`, must go in your harness's USER config (see the Configure step in `SKILL.md`).
37
37
 
38
38
  ### Initialization options (only if commonly needed)
39
39
 
40
- None commonly required. `bash-language-server` discovers `shellcheck` on PATH automatically. To point at a non-PATH binary, export `SHELLCHECK_PATH` via `env`:
40
+ None commonly required. `bash-language-server` discovers `shellcheck` on PATH automatically. To point at a non-PATH binary, export `SHELLCHECK_PATH` via `env` (USER config only; a project entry drops `env`):
41
41
 
42
42
  ```json
43
43
  { "lsp": { "bash": { "env": { "SHELLCHECK_PATH": "/opt/bin/shellcheck" } } } }
@@ -20,13 +20,13 @@ command -v clangd
20
20
 
21
21
  ## Configure
22
22
 
23
- Builtin — usually NO config needed (auto-resolved by extension). Configure only to set priority, init options, override extensions, or disable. Same JSON shape in `.codex/lsp-client.json` (Codex) AND `.opencode/lsp.json` (OpenCode/omo):
23
+ Builtin — usually NO config needed (auto-resolved by extension). Configure only to set priority, init options, override extensions, or disable. Same JSON shape in every harness's project config (per-harness paths: the Configure step in `SKILL.md`):
24
24
 
25
25
  ```json
26
26
  { "lsp": { "clangd": { "priority": 100 } } }
27
27
  ```
28
28
 
29
- For builtin ids in a PROJECT config, `command` is supplied automatically — only set `priority`/`initialization`/`extensions`/`disabled`/`env`. A fully custom (non-builtin) server with its own `command` must go in the USER config (`~/.codex/lsp-client.json`).
29
+ For builtin ids in a PROJECT config, `command` is supplied automatically — only set `priority`/`initialization`/`extensions`/`disabled` (a project entry drops `env`). `env`, and a fully custom (non-builtin) server with its own `command`, must go in your harness's USER config (see the Configure step in `SKILL.md`).
30
30
 
31
31
  ### Initialization options (only if commonly needed)
32
32
 
@@ -22,13 +22,13 @@ command -v csharp-ls
22
22
 
23
23
  ## Configure
24
24
 
25
- Builtin — usually NO config needed (auto-resolved by extension). Configure only to set priority, init options, override extensions, or disable. Same JSON shape in `.codex/lsp-client.json` (Codex) AND `.opencode/lsp.json` (OpenCode/omo):
25
+ Builtin — usually NO config needed (auto-resolved by extension). Configure only to set priority, init options, override extensions, or disable. Same JSON shape in every harness's project config (per-harness paths: the Configure step in `SKILL.md`):
26
26
 
27
27
  ```json
28
28
  { "lsp": { "csharp": { "priority": 100 } } }
29
29
  ```
30
30
 
31
- For builtin ids in a PROJECT config, `command` is supplied automatically — only set `priority`/`initialization`/`extensions`/`disabled`/`env`. A fully custom (non-builtin) server with its own `command` must go in the USER config (`~/.codex/lsp-client.json`).
31
+ For builtin ids in a PROJECT config, `command` is supplied automatically — only set `priority`/`initialization`/`extensions`/`disabled` (a project entry drops `env`). `env`, and a fully custom (non-builtin) server with its own `command`, must go in your harness's USER config (see the Configure step in `SKILL.md`).
32
32
 
33
33
  ### Initialization options (only if commonly needed)
34
34
 
@@ -20,13 +20,13 @@ command -v dart
20
20
 
21
21
  ## Configure
22
22
 
23
- Builtin — usually NO config needed (auto-resolved by extension). Configure only to set priority, init options, override extensions, or disable. Same JSON shape in `.codex/lsp-client.json` (Codex) AND `.opencode/lsp.json` (OpenCode/omo):
23
+ Builtin — usually NO config needed (auto-resolved by extension). Configure only to set priority, init options, override extensions, or disable. Same JSON shape in every harness's project config (per-harness paths: the Configure step in `SKILL.md`):
24
24
 
25
25
  ```json
26
26
  { "lsp": { "dart": { "priority": 100 } } }
27
27
  ```
28
28
 
29
- For builtin ids in a PROJECT config, `command` is supplied automatically — only set `priority`/`initialization`/`extensions`/`disabled`/`env`. A fully custom (non-builtin) server with its own `command` must go in the USER config (`~/.codex/lsp-client.json`).
29
+ For builtin ids in a PROJECT config, `command` is supplied automatically — only set `priority`/`initialization`/`extensions`/`disabled` (a project entry drops `env`). `env`, and a fully custom (non-builtin) server with its own `command`, must go in your harness's USER config (see the Configure step in `SKILL.md`).
30
30
 
31
31
  ### Initialization options (only if commonly needed)
32
32
 
@@ -21,13 +21,13 @@ command -v elixir-ls
21
21
 
22
22
  ## Configure
23
23
 
24
- Builtin — usually NO config needed (auto-resolved by extension). Configure only to set priority, init options, override extensions, or disable. Same JSON shape in `.codex/lsp-client.json` (Codex) AND `.opencode/lsp.json` (OpenCode/omo):
24
+ Builtin — usually NO config needed (auto-resolved by extension). Configure only to set priority, init options, override extensions, or disable. Same JSON shape in every harness's project config (per-harness paths: the Configure step in `SKILL.md`):
25
25
 
26
26
  ```json
27
27
  { "lsp": { "elixir-ls": { "priority": 100 } } }
28
28
  ```
29
29
 
30
- For builtin ids in a PROJECT config, `command` is supplied automatically — only set `priority`/`initialization`/`extensions`/`disabled`/`env`. A fully custom (non-builtin) server with its own `command` must go in the USER config (`~/.codex/lsp-client.json`).
30
+ For builtin ids in a PROJECT config, `command` is supplied automatically — only set `priority`/`initialization`/`extensions`/`disabled` (a project entry drops `env`). `env`, and a fully custom (non-builtin) server with its own `command`, must go in your harness's USER config (see the Configure step in `SKILL.md`).
31
31
 
32
32
  ### Initialization options (only if commonly needed)
33
33
 
@@ -25,13 +25,13 @@ command -v gopls
25
25
 
26
26
  ## Configure
27
27
 
28
- Builtin — usually NO config needed (auto-resolved by extension). Configure only to set priority, init options, override extensions, or disable. Same JSON shape in `.codex/lsp-client.json` (Codex) AND `.opencode/lsp.json` (OpenCode/omo):
28
+ Builtin — usually NO config needed (auto-resolved by extension). Configure only to set priority, init options, override extensions, or disable. Same JSON shape in every harness's project config (per-harness paths: the Configure step in `SKILL.md`):
29
29
 
30
30
  ```json
31
31
  { "lsp": { "gopls": { "priority": 100 } } }
32
32
  ```
33
33
 
34
- For builtin ids in a PROJECT config, `command` is supplied automatically — only set `priority`/`initialization`/`extensions`/`disabled`/`env`. A fully custom (non-builtin) server with its own `command` must go in the USER config (`~/.codex/lsp-client.json`).
34
+ For builtin ids in a PROJECT config, `command` is supplied automatically — only set `priority`/`initialization`/`extensions`/`disabled` (a project entry drops `env`). `env`, and a fully custom (non-builtin) server with its own `command`, must go in your harness's USER config (see the Configure step in `SKILL.md`).
35
35
 
36
36
  ### Initialization options (only if commonly needed)
37
37
 
@@ -27,13 +27,13 @@ command -v haskell-language-server-wrapper
27
27
 
28
28
  ## Configure
29
29
 
30
- Builtin — usually NO config needed (auto-resolved by extension). Configure only to set priority, init options, override extensions, or disable. Same JSON shape in `.codex/lsp-client.json` (Codex) AND `.opencode/lsp.json` (OpenCode/omo):
30
+ Builtin — usually NO config needed (auto-resolved by extension). Configure only to set priority, init options, override extensions, or disable. Same JSON shape in every harness's project config (per-harness paths: the Configure step in `SKILL.md`):
31
31
 
32
32
  ```json
33
33
  { "lsp": { "haskell-language-server": { "priority": 100 } } }
34
34
  ```
35
35
 
36
- For builtin ids in a PROJECT config, `command` is supplied automatically — only set `priority`/`initialization`/`extensions`/`disabled`/`env`. A fully custom (non-builtin) server with its own `command` must go in the USER config (`~/.codex/lsp-client.json`).
36
+ For builtin ids in a PROJECT config, `command` is supplied automatically — only set `priority`/`initialization`/`extensions`/`disabled` (a project entry drops `env`). `env`, and a fully custom (non-builtin) server with its own `command`, must go in your harness's USER config (see the Configure step in `SKILL.md`).
37
37
 
38
38
  ### Initialization options (only if commonly needed)
39
39
 
@@ -20,17 +20,17 @@ command -v jdtls
20
20
 
21
21
  ## Configure
22
22
 
23
- Builtin — usually NO config needed (auto-resolved by extension). Configure only to set priority, init options, override extensions, or disable. Same JSON shape in `.codex/lsp-client.json` (Codex) AND `.opencode/lsp.json` (OpenCode/omo):
23
+ Builtin — usually NO config needed (auto-resolved by extension). Configure only to set priority, init options, override extensions, or disable. Same JSON shape in every harness's project config (per-harness paths: the Configure step in `SKILL.md`):
24
24
 
25
25
  ```json
26
26
  { "lsp": { "jdtls": { "priority": 100 } } }
27
27
  ```
28
28
 
29
- For builtin ids in a PROJECT config, `command` is supplied automatically — only set `priority`/`initialization`/`extensions`/`disabled`/`env`. A fully custom (non-builtin) server with its own `command` must go in the USER config (`~/.codex/lsp-client.json`).
29
+ For builtin ids in a PROJECT config, `command` is supplied automatically — only set `priority`/`initialization`/`extensions`/`disabled` (a project entry drops `env`). `env`, and a fully custom (non-builtin) server with its own `command`, must go in your harness's USER config (see the Configure step in `SKILL.md`).
30
30
 
31
31
  ### Initialization options (only if commonly needed)
32
32
 
33
- jdtls maintains a per-project **workspace data directory** and the **first index is slow** (it resolves the full classpath and builds). Point `JAVA_HOME` at a JDK 17+ if `jdtls` cannot find one:
33
+ jdtls maintains a per-project **workspace data directory** and the **first index is slow** (it resolves the full classpath and builds). Point `JAVA_HOME` at a JDK 17+ if `jdtls` cannot find one (USER config only; a project entry drops `env`):
34
34
 
35
35
  ```json
36
36
  { "lsp": { "jdtls": { "env": { "JAVA_HOME": "/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home" } } } }
@@ -28,17 +28,17 @@ command -v julia
28
28
 
29
29
  ## Configure
30
30
 
31
- Builtin — usually NO config needed (auto-resolved by extension). Configure only to set priority, init options, override extensions, or disable. Same JSON shape in `.codex/lsp-client.json` (Codex) AND `.opencode/lsp.json` (OpenCode/omo):
31
+ Builtin — usually NO config needed (auto-resolved by extension). Configure only to set priority, init options, override extensions, or disable. Same JSON shape in every harness's project config (per-harness paths: the Configure step in `SKILL.md`):
32
32
 
33
33
  ```json
34
34
  { "lsp": { "julials": { "priority": 100 } } }
35
35
  ```
36
36
 
37
- For builtin ids in a PROJECT config, `command` is supplied automatically — only set `priority`/`initialization`/`extensions`/`disabled`/`env`. A fully custom (non-builtin) server with its own `command` must go in the USER config (`~/.codex/lsp-client.json`).
37
+ For builtin ids in a PROJECT config, `command` is supplied automatically — only set `priority`/`initialization`/`extensions`/`disabled` (a project entry drops `env`). `env`, and a fully custom (non-builtin) server with its own `command`, must go in your harness's USER config (see the Configure step in `SKILL.md`).
38
38
 
39
39
  ### Initialization options (only if commonly needed)
40
40
 
41
- None commonly required. To pin which environment hosts LanguageServer.jl, set `JULIA_PROJECT` (or `JULIA_DEPOT_PATH`) via `env`:
41
+ None commonly required. To pin which environment hosts LanguageServer.jl, set `JULIA_PROJECT` (or `JULIA_DEPOT_PATH`) via `env` (USER config only; a project entry drops `env`):
42
42
 
43
43
  ```json
44
44
  { "lsp": { "julials": { "env": { "JULIA_PROJECT": "@lsp" } } } }
@@ -1,6 +1,6 @@
1
1
  # Kotlin — LSP setup
2
2
 
3
- - **Builtin server:** `kotlin-ls` — `kotlin-lsp`
3
+ - **Builtin server:** `kotlin-ls` — `kotlin-lsp --stdio`
4
4
  - **Extensions:** `.kt .kts`
5
5
  - **Install hint:** `https://github.com/Kotlin/kotlin-lsp`
6
6
 
@@ -22,17 +22,17 @@ command -v kotlin-lsp
22
22
 
23
23
  ## Configure
24
24
 
25
- Builtin — usually NO config needed (auto-resolved by extension). Configure only to set priority, init options, override extensions, or disable. Same JSON shape in `.codex/lsp-client.json` (Codex) AND `.opencode/lsp.json` (OpenCode/omo):
25
+ Builtin — usually NO config needed (auto-resolved by extension). Configure only to set priority, init options, override extensions, or disable. Same JSON shape in every harness's project config (per-harness paths: the Configure step in `SKILL.md`):
26
26
 
27
27
  ```json
28
28
  { "lsp": { "kotlin-ls": { "priority": 100 } } }
29
29
  ```
30
30
 
31
- For builtin ids in a PROJECT config, `command` is supplied automatically — only set `priority`/`initialization`/`extensions`/`disabled`/`env`. A fully custom (non-builtin) server with its own `command` must go in the USER config (`~/.codex/lsp-client.json`).
31
+ For builtin ids in a PROJECT config, `command` is supplied automatically — only set `priority`/`initialization`/`extensions`/`disabled` (a project entry drops `env`). `env`, and a fully custom (non-builtin) server with its own `command`, must go in your harness's USER config (see the Configure step in `SKILL.md`).
32
32
 
33
33
  ### Initialization options (only if commonly needed)
34
34
 
35
- None commonly required. If `kotlin-lsp` cannot find a Java runtime, set `JAVA_HOME`:
35
+ None commonly required. If `kotlin-lsp` cannot find a Java runtime, set `JAVA_HOME` (USER config only; a project entry drops `env`):
36
36
 
37
37
  ```json
38
38
  { "lsp": { "kotlin-ls": { "env": { "JAVA_HOME": "/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home" } } } }
@@ -20,13 +20,13 @@ command -v lua-language-server
20
20
 
21
21
  ## Configure
22
22
 
23
- Builtin — usually NO config needed (auto-resolved by extension). Configure only to set priority, init options, override extensions, or disable. Same JSON shape in `.codex/lsp-client.json` (Codex) AND `.opencode/lsp.json` (OpenCode/omo):
23
+ Builtin — usually NO config needed (auto-resolved by extension). Configure only to set priority, init options, override extensions, or disable. Same JSON shape in every harness's project config (per-harness paths: the Configure step in `SKILL.md`):
24
24
 
25
25
  ```json
26
26
  { "lsp": { "lua-ls": { "priority": 100 } } }
27
27
  ```
28
28
 
29
- For builtin ids in a PROJECT config, `command` is supplied automatically — only set `priority`/`initialization`/`extensions`/`disabled`/`env`. A fully custom (non-builtin) server with its own `command` must go in the USER config (`~/.codex/lsp-client.json`).
29
+ For builtin ids in a PROJECT config, `command` is supplied automatically — only set `priority`/`initialization`/`extensions`/`disabled` (a project entry drops `env`). `env`, and a fully custom (non-builtin) server with its own `command`, must go in your harness's USER config (see the Configure step in `SKILL.md`).
30
30
 
31
31
  ### Initialization options (only if commonly needed)
32
32
 
@@ -20,13 +20,13 @@ command -v intelephense
20
20
 
21
21
  ## Configure
22
22
 
23
- Builtin — usually NO config needed (auto-resolved by extension). Configure only to set priority, init options, override extensions, or disable. Same JSON shape in `.codex/lsp-client.json` (Codex) AND `.opencode/lsp.json` (OpenCode/omo):
23
+ Builtin — usually NO config needed (auto-resolved by extension). Configure only to set priority, init options, override extensions, or disable. Same JSON shape in every harness's project config (per-harness paths: the Configure step in `SKILL.md`):
24
24
 
25
25
  ```json
26
26
  { "lsp": { "php": { "priority": 100 } } }
27
27
  ```
28
28
 
29
- For builtin ids in a PROJECT config, `command` is supplied automatically — only set `priority`/`initialization`/`extensions`/`disabled`/`env`. A fully custom (non-builtin) server with its own `command` must go in the USER config (`~/.codex/lsp-client.json`).
29
+ For builtin ids in a PROJECT config, `command` is supplied automatically — only set `priority`/`initialization`/`extensions`/`disabled` (a project entry drops `env`). `env`, and a fully custom (non-builtin) server with its own `command`, must go in your harness's USER config (see the Configure step in `SKILL.md`).
30
30
 
31
31
  ### Initialization options (only if commonly needed)
32
32
 
@@ -51,7 +51,7 @@ Without a key the server runs fine in free mode.
51
51
  - **phpactor** (not builtin): `phpactor language-server`. Pure-PHP, no Node dependency.
52
52
 
53
53
  ## Troubleshooting
54
- - **PATH:** `intelephense` must be on PATH; reopen the shell after a global npm install. If missing, check `npm bin -g` is on PATH.
54
+ - **PATH:** `intelephense` must be on PATH; reopen the shell after a global npm install. If missing, check that `$(npm prefix -g)/bin` (Windows: `npm prefix -g`) is on PATH.
55
55
  - **No Node:** Intelephense fails to start without Node.js. Install Node, then reinstall.
56
56
  - **Wrong PHP version inference:** set `intelephense.environment.phpVersion` via `initialization` to match your project.
57
57