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.
- package/dist/cli/index.js +1722 -281
- package/dist/cli/service-auth/closed-device-login.fixture.d.ts +1 -0
- package/dist/cli/service-auth/credential-lock.d.ts +8 -2
- package/dist/cli/service-auth/index.d.ts +2 -1
- package/dist/cli/service-auth/keychain-helper/access.d.ts +27 -0
- package/dist/cli/service-auth/keychain-helper/approval-cache.d.ts +51 -0
- package/dist/cli/service-auth/keychain-helper/client.d.ts +68 -0
- package/dist/cli/service-auth/keychain-helper/creator-handoff.d.ts +31 -0
- package/dist/cli/service-auth/keychain-helper/darwin-backend.d.ts +75 -0
- package/dist/cli/service-auth/keychain-helper/darwin-read.d.ts +46 -0
- package/dist/cli/service-auth/keychain-helper/darwin-store.d.ts +28 -0
- package/dist/cli/service-auth/keychain-helper/fake-keychain.test-support.d.ts +85 -0
- package/dist/cli/service-auth/keychain-helper/location.d.ts +28 -0
- package/dist/cli/service-auth/keychain-helper/migration.d.ts +20 -0
- package/dist/cli/service-auth/keychain-helper/owner-marker.d.ts +7 -0
- package/dist/cli/service-auth/keychain-helper/pin.d.ts +20 -0
- package/dist/cli/service-auth/keychain-helper/process-copy.test-support.d.ts +3 -0
- package/dist/cli/service-auth/keychain-helper/process-state.d.ts +19 -0
- package/dist/cli/service-auth/keychain-helper/prompt-lock.d.ts +14 -0
- package/dist/cli/service-auth/keychain-helper/recovery.d.ts +34 -0
- package/dist/cli/service-auth/keychain-helper/runtime-capabilities.d.ts +13 -0
- package/dist/cli/service-auth/keychain-helper/secrets-gate.d.ts +4 -0
- package/dist/cli/service-auth/keychain-helper/signature.d.ts +17 -0
- package/dist/cli/service-auth/keychain-helper/store-binding.d.ts +46 -0
- package/dist/cli/service-auth/keystore.d.ts +18 -3
- package/dist/cli/service-auth/session.d.ts +29 -2
- package/dist/cli/service-auth/sync-pin-retire.d.ts +7 -0
- package/dist/cli-node/index.js +1722 -281
- package/package.json +1 -1
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lcx/skills/lcx-doctor/SKILL.md +1 -1
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/dist/cli.js +2 -0
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-unclear.md +2 -2
- package/packages/omo-codex/plugin/components/ultrawork/src/directive-content.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/directive.md +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/directive.md +2 -0
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/define-goal.md +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +10 -10
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/package-lock.json +12 -12
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/scripts/sync-skills.mjs +6 -3
- package/packages/omo-codex/plugin/skills/ast-grep/AGENTS.md +2 -2
- package/packages/omo-codex/plugin/skills/ast-grep/README.md +4 -4
- package/packages/omo-codex/plugin/skills/ast-grep/SKILL.md +10 -8
- package/packages/omo-codex/plugin/skills/ast-grep/references/cli.md +4 -3
- package/packages/omo-codex/plugin/skills/ast-grep/references/patterns.md +5 -5
- package/packages/omo-codex/plugin/skills/ast-grep/references/pitfalls.md +3 -3
- package/packages/omo-codex/plugin/skills/ast-grep/references/recipes.md +6 -4
- package/packages/omo-codex/plugin/skills/ast-grep/references/yaml-rules.md +3 -3
- package/packages/omo-codex/plugin/skills/ast-grep/scripts/ast_grep_helper.py +3 -3
- package/packages/omo-codex/plugin/skills/browser/SKILL.md +2 -3
- package/packages/omo-codex/plugin/skills/browser/references/owned-engine/README.md +1 -1
- package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +1 -1
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/AGENTS.md +1 -1
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +2 -1
- package/packages/omo-codex/plugin/skills/data-scientist/SKILL.md +8 -6
- package/packages/omo-codex/plugin/skills/data-scientist/references/placement.md +9 -5
- package/packages/omo-codex/plugin/skills/data-scientist/references/uv-setup.md +3 -3
- package/packages/omo-codex/plugin/skills/data-scientist/references/visualization.md +19 -4
- package/packages/omo-codex/plugin/skills/debugging/SKILL.md +5 -5
- package/packages/omo-codex/plugin/skills/debugging/references/methodology/02-investigate.md +2 -2
- package/packages/omo-codex/plugin/skills/debugging/references/methodology/06-fix.md +2 -0
- package/packages/omo-codex/plugin/skills/debugging/references/methodology/09-cleanup.md +2 -2
- package/packages/omo-codex/plugin/skills/debugging/references/methodology/partial-runtime-evidence.md +1 -1
- package/packages/omo-codex/plugin/skills/debugging/references/runtimes/bundled-js-binary.md +1 -1
- package/packages/omo-codex/plugin/skills/debugging/references/runtimes/native-binary.md +1 -1
- package/packages/omo-codex/plugin/skills/debugging/references/tools/browser-qa.md +1 -2
- package/packages/omo-codex/plugin/skills/frontend/SKILL.md +4 -4
- package/packages/omo-codex/plugin/skills/frontend/references/design/README.md +2 -2
- package/packages/omo-codex/plugin/skills/frontend/references/design/component-catalogs.md +1 -1
- package/packages/omo-codex/plugin/skills/frontend/references/design/design-system-architecture.md +2 -2
- package/packages/omo-codex/plugin/skills/frontend/references/design/print-paged-media.md +1 -1
- package/packages/omo-codex/plugin/skills/frontend/references/design/react-dev-tooling-skill.md +1 -1
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-a-direction.md +5 -5
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/routing.md +2 -2
- package/packages/omo-codex/plugin/skills/frontend/references/perfection/README.md +1 -2
- package/packages/omo-codex/plugin/skills/frontend/references/perfection/react-perf-tooling.md +27 -8
- package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/lighthouse-audit.py +0 -1
- package/packages/omo-codex/plugin/skills/git-master/SKILL.md +12 -2
- package/packages/omo-codex/plugin/skills/init-deep/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/lcx-doctor/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/lsp-setup/SKILL.md +24 -15
- package/packages/omo-codex/plugin/skills/lsp-setup/references/bash/README.md +3 -3
- package/packages/omo-codex/plugin/skills/lsp-setup/references/c-cpp/README.md +2 -2
- package/packages/omo-codex/plugin/skills/lsp-setup/references/csharp/README.md +2 -2
- package/packages/omo-codex/plugin/skills/lsp-setup/references/dart/README.md +2 -2
- package/packages/omo-codex/plugin/skills/lsp-setup/references/elixir/README.md +2 -2
- package/packages/omo-codex/plugin/skills/lsp-setup/references/go/README.md +2 -2
- package/packages/omo-codex/plugin/skills/lsp-setup/references/haskell/README.md +2 -2
- package/packages/omo-codex/plugin/skills/lsp-setup/references/java/README.md +3 -3
- package/packages/omo-codex/plugin/skills/lsp-setup/references/julia/README.md +3 -3
- package/packages/omo-codex/plugin/skills/lsp-setup/references/kotlin/README.md +4 -4
- package/packages/omo-codex/plugin/skills/lsp-setup/references/lua/README.md +2 -2
- package/packages/omo-codex/plugin/skills/lsp-setup/references/php/README.md +3 -3
- package/packages/omo-codex/plugin/skills/lsp-setup/references/python/README.md +13 -12
- package/packages/omo-codex/plugin/skills/lsp-setup/references/ruby/README.md +2 -2
- package/packages/omo-codex/plugin/skills/lsp-setup/references/rust/README.md +2 -2
- package/packages/omo-codex/plugin/skills/lsp-setup/references/swift/README.md +4 -4
- package/packages/omo-codex/plugin/skills/lsp-setup/references/terraform/README.md +2 -2
- package/packages/omo-codex/plugin/skills/lsp-setup/references/typescript/README.md +3 -3
- package/packages/omo-codex/plugin/skills/lsp-setup/references/yaml/README.md +2 -2
- package/packages/omo-codex/plugin/skills/lsp-setup/references/zig/README.md +2 -2
- package/packages/omo-codex/plugin/skills/lsp-setup/scripts/detect-lsp.ts +1 -1
- package/packages/omo-codex/plugin/skills/lsp-setup/scripts/lsp-server-table.ts +3 -2
- package/packages/omo-codex/plugin/skills/programming/SKILL.md +5 -5
- package/packages/omo-codex/plugin/skills/programming/references/code-smells.md +2 -2
- package/packages/omo-codex/plugin/skills/programming/references/go/README.md +3 -3
- package/packages/omo-codex/plugin/skills/programming/references/python/README.md +8 -8
- package/packages/omo-codex/plugin/skills/programming/references/python/data-processing.md +9 -9
- package/packages/omo-codex/plugin/skills/programming/references/python/libraries.md +3 -3
- package/packages/omo-codex/plugin/skills/programming/references/python/one-liners.md +1 -1
- package/packages/omo-codex/plugin/skills/programming/references/python/pyproject-strict.md +1 -1
- package/packages/omo-codex/plugin/skills/programming/references/rust/libraries.md +2 -2
- package/packages/omo-codex/plugin/skills/programming/references/rust-ub/README.md +3 -3
- package/packages/omo-codex/plugin/skills/programming/references/typescript/README.md +5 -5
- package/packages/omo-codex/plugin/skills/programming/scripts/typescript/new-project.ts +1 -1
- package/packages/omo-codex/plugin/skills/refactor/SKILL.md +36 -36
- package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +6 -6
- package/packages/omo-codex/plugin/skills/review-work/SKILL.md +2 -2
- package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +11 -8
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/AGENTS.md +4 -4
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/agent-reach/README.md +2 -2
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/agent-reach/career.md +1 -1
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/agent-reach/social.md +1 -1
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/agent-reach/web.md +4 -4
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +2 -1
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/README.md +17 -18
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/fallback.md +10 -6
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/jina.md +12 -12
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/naver.md +3 -3
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/playwright.md +1 -1
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/rss.md +1 -1
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/tls-impersonate.md +12 -7
- package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +2 -0
- package/packages/omo-codex/plugin/skills/ulw-execute/SKILL.md +9 -6
- package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/ulw-loop/references/define-goal.md +1 -1
- package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +10 -10
- package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +1 -1
- package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-unclear.md +2 -2
- package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +4 -4
- package/packages/omo-codex/plugin/skills/ulw-research/references/deliverable-phase.md +5 -5
- package/packages/omo-codex/plugin/skills/ulw-research/references/report-visualization.md +2 -2
- package/packages/omo-codex/plugin/skills/ulw-research/references/research-collection.md +2 -2
- package/packages/omo-codex/plugin/skills/ulw-research/references/unit-rules.md +2 -2
- package/packages/omo-codex/plugin/skills/visual-qa/AGENTS.md +1 -1
- package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +5 -5
- package/packages/omo-codex/plugin/skills/visual-qa/references/browser-setup.md +4 -2
- package/packages/omo-codex/plugin/test/sync-skills-codex-compatibility.test.mjs +2 -0
- package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +7 -3
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +2 -2
- package/packages/prompts-core/prompts/ultrawork/codex.md +2 -0
- package/packages/shared-skills/skills/ast-grep/AGENTS.md +2 -2
- package/packages/shared-skills/skills/ast-grep/README.md +4 -4
- package/packages/shared-skills/skills/ast-grep/SKILL.md +10 -8
- package/packages/shared-skills/skills/ast-grep/references/cli.md +4 -3
- package/packages/shared-skills/skills/ast-grep/references/patterns.md +5 -5
- package/packages/shared-skills/skills/ast-grep/references/pitfalls.md +3 -3
- package/packages/shared-skills/skills/ast-grep/references/recipes.md +6 -4
- package/packages/shared-skills/skills/ast-grep/references/yaml-rules.md +3 -3
- package/packages/shared-skills/skills/ast-grep/scripts/ast_grep_helper.py +3 -3
- package/packages/shared-skills/skills/browser/SKILL.md +2 -3
- package/packages/shared-skills/skills/browser/references/owned-engine/README.md +1 -1
- package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
- package/packages/shared-skills/skills/coding-agent-sessions/AGENTS.md +1 -1
- package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +2 -1
- package/packages/shared-skills/skills/data-scientist/SKILL.md +8 -6
- package/packages/shared-skills/skills/data-scientist/references/placement.md +9 -5
- package/packages/shared-skills/skills/data-scientist/references/uv-setup.md +3 -3
- package/packages/shared-skills/skills/data-scientist/references/visualization.md +19 -4
- package/packages/shared-skills/skills/debugging/SKILL.md +5 -5
- package/packages/shared-skills/skills/debugging/references/methodology/02-investigate.md +2 -2
- package/packages/shared-skills/skills/debugging/references/methodology/06-fix.md +2 -0
- package/packages/shared-skills/skills/debugging/references/methodology/09-cleanup.md +2 -2
- package/packages/shared-skills/skills/debugging/references/methodology/partial-runtime-evidence.md +1 -1
- package/packages/shared-skills/skills/debugging/references/runtimes/bundled-js-binary.md +1 -1
- package/packages/shared-skills/skills/debugging/references/runtimes/native-binary.md +1 -1
- package/packages/shared-skills/skills/debugging/references/tools/browser-qa.md +1 -2
- package/packages/shared-skills/skills/frontend/SKILL.md +4 -4
- package/packages/shared-skills/skills/frontend/references/design/README.md +2 -2
- package/packages/shared-skills/skills/frontend/references/design/component-catalogs.md +1 -1
- package/packages/shared-skills/skills/frontend/references/design/design-system-architecture.md +2 -2
- package/packages/shared-skills/skills/frontend/references/design/print-paged-media.md +1 -1
- package/packages/shared-skills/skills/frontend/references/design/react-dev-tooling-skill.md +1 -1
- package/packages/shared-skills/skills/frontend/references/designpowers/lane-a-direction.md +5 -5
- package/packages/shared-skills/skills/frontend/references/designpowers/routing.md +2 -2
- package/packages/shared-skills/skills/frontend/references/perfection/README.md +1 -2
- package/packages/shared-skills/skills/frontend/references/perfection/react-perf-tooling.md +27 -8
- package/packages/shared-skills/skills/frontend/scripts/perfection/lighthouse-audit.py +0 -1
- package/packages/shared-skills/skills/git-master/SKILL.md +12 -2
- package/packages/shared-skills/skills/init-deep/SKILL.md +1 -1
- package/packages/shared-skills/skills/lsp-setup/SKILL.md +24 -15
- package/packages/shared-skills/skills/lsp-setup/references/bash/README.md +3 -3
- package/packages/shared-skills/skills/lsp-setup/references/c-cpp/README.md +2 -2
- package/packages/shared-skills/skills/lsp-setup/references/csharp/README.md +2 -2
- package/packages/shared-skills/skills/lsp-setup/references/dart/README.md +2 -2
- package/packages/shared-skills/skills/lsp-setup/references/elixir/README.md +2 -2
- package/packages/shared-skills/skills/lsp-setup/references/go/README.md +2 -2
- package/packages/shared-skills/skills/lsp-setup/references/haskell/README.md +2 -2
- package/packages/shared-skills/skills/lsp-setup/references/java/README.md +3 -3
- package/packages/shared-skills/skills/lsp-setup/references/julia/README.md +3 -3
- package/packages/shared-skills/skills/lsp-setup/references/kotlin/README.md +4 -4
- package/packages/shared-skills/skills/lsp-setup/references/lua/README.md +2 -2
- package/packages/shared-skills/skills/lsp-setup/references/php/README.md +3 -3
- package/packages/shared-skills/skills/lsp-setup/references/python/README.md +13 -12
- package/packages/shared-skills/skills/lsp-setup/references/ruby/README.md +2 -2
- package/packages/shared-skills/skills/lsp-setup/references/rust/README.md +2 -2
- package/packages/shared-skills/skills/lsp-setup/references/swift/README.md +4 -4
- package/packages/shared-skills/skills/lsp-setup/references/terraform/README.md +2 -2
- package/packages/shared-skills/skills/lsp-setup/references/typescript/README.md +3 -3
- package/packages/shared-skills/skills/lsp-setup/references/yaml/README.md +2 -2
- package/packages/shared-skills/skills/lsp-setup/references/zig/README.md +2 -2
- package/packages/shared-skills/skills/lsp-setup/scripts/detect-lsp.ts +1 -1
- package/packages/shared-skills/skills/lsp-setup/scripts/lsp-server-table.ts +3 -2
- package/packages/shared-skills/skills/programming/SKILL.md +5 -5
- package/packages/shared-skills/skills/programming/references/code-smells.md +2 -2
- package/packages/shared-skills/skills/programming/references/go/README.md +3 -3
- package/packages/shared-skills/skills/programming/references/python/README.md +8 -8
- package/packages/shared-skills/skills/programming/references/python/data-processing.md +9 -9
- package/packages/shared-skills/skills/programming/references/python/libraries.md +3 -3
- package/packages/shared-skills/skills/programming/references/python/one-liners.md +1 -1
- package/packages/shared-skills/skills/programming/references/python/pyproject-strict.md +1 -1
- package/packages/shared-skills/skills/programming/references/rust/libraries.md +2 -2
- package/packages/shared-skills/skills/programming/references/rust-ub/README.md +3 -3
- package/packages/shared-skills/skills/programming/references/typescript/README.md +5 -5
- package/packages/shared-skills/skills/programming/scripts/typescript/new-project.ts +1 -1
- package/packages/shared-skills/skills/refactor/SKILL.md +36 -36
- package/packages/shared-skills/skills/remove-ai-slops/SKILL.md +6 -6
- package/packages/shared-skills/skills/review-work/SKILL.md +2 -2
- package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +11 -8
- package/packages/shared-skills/skills/ultimate-browsing/engine/AGENTS.md +4 -4
- package/packages/shared-skills/skills/ultimate-browsing/references/agent-reach/README.md +2 -2
- package/packages/shared-skills/skills/ultimate-browsing/references/agent-reach/career.md +1 -1
- package/packages/shared-skills/skills/ultimate-browsing/references/agent-reach/social.md +1 -1
- package/packages/shared-skills/skills/ultimate-browsing/references/agent-reach/web.md +4 -4
- package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +2 -1
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/README.md +17 -18
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/fallback.md +10 -6
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/jina.md +12 -12
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/naver.md +3 -3
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/playwright.md +1 -1
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/rss.md +1 -1
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/tls-impersonate.md +12 -7
- package/packages/shared-skills/skills/ulw-execute/SKILL.md +9 -6
- package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +1 -1
- package/packages/shared-skills/skills/ulw-plan/references/intent-unclear.md +2 -2
- package/packages/shared-skills/skills/ulw-research/SKILL.md +5 -5
- package/packages/shared-skills/skills/ulw-research/references/deliverable-phase.md +5 -5
- package/packages/shared-skills/skills/ulw-research/references/report-visualization.md +2 -2
- package/packages/shared-skills/skills/ulw-research/references/research-collection.md +2 -2
- package/packages/shared-skills/skills/ulw-research/references/unit-rules.md +2 -2
- package/packages/shared-skills/skills/visual-qa/AGENTS.md +1 -1
- package/packages/shared-skills/skills/visual-qa/SKILL.md +5 -5
- 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",
|
|
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.
|
|
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 |
|
|
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
|
|
package/packages/shared-skills/skills/frontend/references/design/design-system-architecture.md
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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 **
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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;
|
|
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
|
|
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
|
|
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
|
|
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
|
-
//
|
|
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
|
-
|
|
51
|
+
window.__renderEvents = [];
|
|
31
52
|
instrument({
|
|
32
|
-
onEvent: (event
|
|
33
|
-
if (event.kind === "commit")
|
|
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(() =>
|
|
55
|
-
const unnecessary = events.filter(
|
|
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,
|
|
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:
|
|
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
|
|
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
|
|
79
|
-
`disable` a server.
|
|
78
|
+
`priority`, pass `initialization` options, override `extensions`, set `env`
|
|
79
|
+
(user config only), or `disable` a server.
|
|
80
80
|
|
|
81
|
-
|
|
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
|
-
|
|
84
|
-
|
|
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
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
- To define a **fully custom** (non-builtin) server with its
|
|
108
|
-
it in the **user** config
|
|
109
|
-
`
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|