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
|
@@ -21,13 +21,13 @@ command -v basedpyright-langserver
|
|
|
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": { "basedpyright": { "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
|
|
|
@@ -36,27 +36,28 @@ or `[tool.basedpyright]` in `pyproject.toml`, not the LSP config.
|
|
|
36
36
|
|
|
37
37
|
## Choosing a server
|
|
38
38
|
|
|
39
|
-
All four are builtin.
|
|
40
|
-
|
|
39
|
+
All four are builtin. The engine starts ONE server per extension: the first
|
|
40
|
+
installed candidate after ordering by config source (project > user > builtin)
|
|
41
|
+
and then `priority`. So `ruff` cannot run alongside a type server for `.py` —
|
|
42
|
+
choosing it replaces type checking with lint/format diagnostics.
|
|
41
43
|
|
|
42
44
|
| id | command | install | role |
|
|
43
45
|
| ------------- | ----------------------------- | ---------------------- | --------------------------------------- |
|
|
44
46
|
| `basedpyright`| `basedpyright-langserver --stdio` | `pip install basedpyright` | strictest types, **default** |
|
|
45
47
|
| `pyright` | `pyright-langserver --stdio` | `pip install pyright` | upstream Microsoft type checker |
|
|
46
48
|
| `ty` | `ty server` | `pip install ty` | Astral, very fast, pre-1.0/experimental |
|
|
47
|
-
| `ruff` | `ruff server` | `pip install ruff` | lint + format only,
|
|
49
|
+
| `ruff` | `ruff server` | `pip install ruff` | lint + format only, no type checking |
|
|
48
50
|
|
|
49
|
-
Recommended
|
|
50
|
-
|
|
51
|
-
|
|
51
|
+
Recommended: **basedpyright** (default) > pyright > ty (experimental). Keep a
|
|
52
|
+
type server as the `.py` server; run `ruff` from the shell or a pre-commit hook
|
|
53
|
+
for lint/format.
|
|
52
54
|
|
|
53
|
-
|
|
55
|
+
Switch this project to pyright:
|
|
54
56
|
|
|
55
57
|
```json
|
|
56
58
|
{ "lsp": {
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"pyright": { "disabled": true }
|
|
59
|
+
"pyright": { "priority": 100 },
|
|
60
|
+
"basedpyright": { "disabled": true }
|
|
60
61
|
} }
|
|
61
62
|
```
|
|
62
63
|
|
|
@@ -22,13 +22,13 @@ command -v rubocop
|
|
|
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": { "ruby-lsp": { "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
|
|
|
@@ -22,13 +22,13 @@ command -v rust-analyzer
|
|
|
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": { "rust": { "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
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Swift — LSP setup
|
|
2
2
|
|
|
3
3
|
- **Builtin server:** `sourcekit-lsp` — `sourcekit-lsp`
|
|
4
|
-
- **Extensions:** `.swift .
|
|
4
|
+
- **Extensions:** `.swift .m .mm`
|
|
5
5
|
- **Install hint:** `Included with Xcode or the Swift toolchain`
|
|
6
6
|
|
|
7
7
|
## Install
|
|
@@ -20,13 +20,13 @@ command -v sourcekit-lsp
|
|
|
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": { "sourcekit-lsp": { "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
|
|
|
@@ -41,7 +41,7 @@ None commonly required. For best results the project needs a **SwiftPM `Package.
|
|
|
41
41
|
- **PATH:** `sourcekit-lsp` on PATH; reopen shell after install (or after `xcode-select -s`).
|
|
42
42
|
- **Wrong toolchain (macOS):** point `xcode-select` at the right Xcode/toolchain; mismatches cause stale or missing results.
|
|
43
43
|
- **No `Package.swift` / compile db:** add a SwiftPM manifest or generate `compile_commands.json` for accurate indexing.
|
|
44
|
-
- **Objective-C (`.
|
|
44
|
+
- **Objective-C (`.m`/`.mm`):** needs a compilation database to resolve headers and frameworks.
|
|
45
45
|
- **First build slow:** the server builds the module graph on first open; wait for it.
|
|
46
46
|
|
|
47
47
|
## Verify
|
|
@@ -23,13 +23,13 @@ command -v terraform
|
|
|
23
23
|
|
|
24
24
|
## Configure
|
|
25
25
|
|
|
26
|
-
Builtin — usually NO config needed (auto-resolved by extension). Configure only to set priority, init options, override extensions, or disable. Same JSON shape in
|
|
26
|
+
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`):
|
|
27
27
|
|
|
28
28
|
```json
|
|
29
29
|
{ "lsp": { "terraform": { "priority": 100 } } }
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
-
For builtin ids in a PROJECT config, `command` is supplied automatically — only set `priority`/`initialization`/`extensions`/`disabled
|
|
32
|
+
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`).
|
|
33
33
|
|
|
34
34
|
### Initialization options (only if commonly needed)
|
|
35
35
|
|
|
@@ -22,13 +22,13 @@ command -v typescript-language-server
|
|
|
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": { "typescript": { "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
|
|
|
@@ -67,7 +67,7 @@ Pick Deno or Biome over the default:
|
|
|
67
67
|
(Swap `"deno"` for `"biome"` to use Biome instead.)
|
|
68
68
|
|
|
69
69
|
## Troubleshooting
|
|
70
|
-
- **PATH:** `typescript-language-server` must be on PATH; reopen shell after `npm i -g`.
|
|
70
|
+
- **PATH:** `typescript-language-server` must be on PATH; reopen shell after `npm i -g`. Your global bin is `$(npm prefix -g)/bin` (Windows: `npm prefix -g`); make sure it is on PATH.
|
|
71
71
|
- **Missing tsserver:** errors like "Could not find tsserver" mean the `typescript` package is absent — install it globally or in the project.
|
|
72
72
|
|
|
73
73
|
## Verify
|
|
@@ -18,13 +18,13 @@ command -v yaml-language-server
|
|
|
18
18
|
|
|
19
19
|
## Configure
|
|
20
20
|
|
|
21
|
-
Builtin — usually NO config needed (auto-resolved by extension). Configure only to set priority, init options, override extensions, or disable. Same JSON shape in
|
|
21
|
+
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`):
|
|
22
22
|
|
|
23
23
|
```json
|
|
24
24
|
{ "lsp": { "yaml-ls": { "priority": 100 } } }
|
|
25
25
|
```
|
|
26
26
|
|
|
27
|
-
For builtin ids in a PROJECT config, `command` is supplied automatically — only set `priority`/`initialization`/`extensions`/`disabled
|
|
27
|
+
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`).
|
|
28
28
|
|
|
29
29
|
### Initialization options (only if commonly needed)
|
|
30
30
|
|
|
@@ -21,13 +21,13 @@ command -v zls
|
|
|
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": { "zls": { "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
|
|
|
@@ -182,7 +182,7 @@ function renderReport(root: string, results: readonly DetectionResult[], configS
|
|
|
182
182
|
missing.length === 0
|
|
183
183
|
? `All ${results.length} detected server(s) installed.`
|
|
184
184
|
: `${missing.length}/${results.length} server(s) NOT installed: ${missing.map((m) => m.server.language).join(", ")}`,
|
|
185
|
-
"Next: read references/<language>/README.md, then configure .
|
|
185
|
+
"Next: read references/<language>/README.md, then configure your harness's project config (SKILL.md, Configure step).",
|
|
186
186
|
)
|
|
187
187
|
return lines.join("\n")
|
|
188
188
|
}
|
|
@@ -58,7 +58,7 @@ export const LANGUAGES: readonly LanguageServer[] = [
|
|
|
58
58
|
{
|
|
59
59
|
language: "kotlin",
|
|
60
60
|
serverId: "kotlin-ls",
|
|
61
|
-
command: ["kotlin-lsp"],
|
|
61
|
+
command: ["kotlin-lsp", "--stdio"],
|
|
62
62
|
extensions: [".kt", ".kts"],
|
|
63
63
|
installHint: "https://github.com/Kotlin/kotlin-lsp",
|
|
64
64
|
},
|
|
@@ -80,7 +80,7 @@ export const LANGUAGES: readonly LanguageServer[] = [
|
|
|
80
80
|
language: "swift",
|
|
81
81
|
serverId: "sourcekit-lsp",
|
|
82
82
|
command: ["sourcekit-lsp"],
|
|
83
|
-
extensions: [".swift", ".
|
|
83
|
+
extensions: [".swift", ".m", ".mm"],
|
|
84
84
|
installHint: "Included with Xcode (xcode-select --install) or the Swift toolchain",
|
|
85
85
|
},
|
|
86
86
|
{
|
|
@@ -174,4 +174,5 @@ export const PROJECT_CONFIG_FILES: readonly string[] = [
|
|
|
174
174
|
".opencode/lsp.json",
|
|
175
175
|
".omo/lsp.json",
|
|
176
176
|
".omo/lsp-client.json",
|
|
177
|
+
".pi/lsp-client.json",
|
|
177
178
|
] as const
|
|
@@ -78,7 +78,7 @@ Apply unless the per-language reference overrides with something stricter.
|
|
|
78
78
|
| Exhaustive variant matching | `match` + `assert_never` | `match` (compiler-enforced) | `switch` + `assertNever` | sealed interface + type switch + **`exhaustive` linter** (the compiler will not help) |
|
|
79
79
|
| No untyped escape hatches | no `Any` in public sigs, no `cast`, no `# type: ignore` | no `unwrap`/`expect` outside tests (invariant `expect` only behind `#[expect(clippy::expect_used, reason)]`), no numeric `as`, no `#[allow]` (silence with `#[expect(lint, reason)]`) | no `any`, no `as` (except `as const`, `satisfies`), no `!`, no `@ts-ignore`, no `@ts-expect-error` | no `interface{}` / bare `any` in domain sigs; no `_ = err`; no `//nolint` without reason |
|
|
80
80
|
| No bare error strings | typed exception dataclass with `__str__` | `thiserror` enum (lib) or `anyhow` with `.context(...)` (app) | `Error` subclass with typed fields | sentinel `errors.New` + typed `*XError` struct; wrap with `%w`; check via `errors.Is/As` |
|
|
81
|
-
| Boundary catch only | catch the exact exception you expect; broad `except Exception` only
|
|
81
|
+
| Boundary catch only | catch the exact exception you expect; broad `except Exception` only at a top-level boundary (`main()`/CLI entry, HTTP handler), with logging + re-raise | `?` everywhere; never `panic!` in library code | `catch` must narrow with `instanceof` and re-throw or convert; no empty catch | every `(T, error)` checked; `panic` only in `main`/tests; one `httperr.Write` funnel in handlers |
|
|
82
82
|
| Resources via RAII | `with` (sync) / `async with` (async) | `Drop` impl or RAII guard | `using`/`await using` (TC39 explicit resource management) | `defer x.Close()` immediately after acquisition; `bodyclose`/`sqlclosecheck` linters enforce |
|
|
83
83
|
| Async runtime is mandatory | `anyio` (NEVER bare `asyncio`) | `tokio` (`async-std` is unmaintained) | platform-native async (Bun/Node) with structured cancellation via `AbortSignal` | `context.Context` as first param + `errgroup` for structured concurrency; `-race` on every test |
|
|
84
84
|
| Modern HTTP client | [`httpx2`](https://github.com/pydantic/httpx2) with HTTP/2 + brotli + zstd | `reqwest` with rustls | `ky` (default) / `undici` direct API (Node perf) - NEVER bare `fetch` in prod | stdlib `net/http.Client` with tuned `Transport` + `go-retryablehttp` for retry/backoff |
|
|
@@ -140,13 +140,13 @@ Full rationale, measurement methods, workaround detection, and split examples: *
|
|
|
140
140
|
|
|
141
141
|
A source file past 250 non-blank, non-comment lines has outgrown a single reviewer's working memory. The module is almost certainly doing more than one thing. Measure: `awk '!/^[[:space:]]*$/ && !/^[[:space:]]*(\/\/|#|--)/' <file> | wc -l`.
|
|
142
142
|
|
|
143
|
-
**When detected:** Name what the file owns in one short noun phrase. If the answer needs "and", the file needs splitting. Load `/refactor` and split by responsibility. If the file genuinely cannot be split (generated parser, indivisible state machine), mark with `// allow: SIZE_OK — <reason
|
|
143
|
+
**When detected:** Name what the file owns in one short noun phrase. If the answer needs "and", the file needs splitting. Load `/refactor` and split by responsibility. If the file genuinely cannot be split (generated parser, indivisible state machine), mark it in the first 10 lines with `# noqa: SIZE_OK — <reason>` in Python (the form `scripts/python/check-no-excuse-rules.py` reads) or `// allow: SIZE_OK — <reason>` in `//`-comment languages.
|
|
144
144
|
|
|
145
145
|
### Smell 2 — Function with more than 3 parameters
|
|
146
146
|
|
|
147
147
|
More than 3 arguments signals the function is doing too much, or that related parameters belong in a typed struct. **Workarounds count as the same smell** — passing `dict`/`Record<string, unknown>`/`map[string]any`/`**kwargs`/`...args` to smuggle parameters through one argument, or a throwaway "config" object with 6+ fields that exists solely to wrap what would otherwise be positional args (genuine reusable domain types like `HttpClientConfig` are fine).
|
|
148
148
|
|
|
149
|
-
**When detected:** Group related parameters into a typed value object with a domain name. If 4+ independent inputs are genuinely required, the justification must be SPECIFIC. See [`references/code-smells.md` Smell 2](references/code-smells.md#smell-2--function-with-more-than-3-parameters) for
|
|
149
|
+
**When detected:** Group related parameters into a typed value object with a domain name. If 4+ independent inputs are genuinely required, the justification must be SPECIFIC. See [`references/code-smells.md` Smell 2](references/code-smells.md#smell-2--function-with-more-than-3-parameters) for Python, TypeScript, and Go examples.
|
|
150
150
|
|
|
151
151
|
### Smell 3 — Redundant verification after a destructive action
|
|
152
152
|
|
|
@@ -242,9 +242,9 @@ These two skills are not optional cosmetics. They are the recovery path for the
|
|
|
242
242
|
|
|
243
243
|
| Trigger | Skill to load | Why |
|
|
244
244
|
|---|---|---|
|
|
245
|
-
| Any [code smell](#code-smells--automatic-review-triggers) fires (250+ LOC, >3 params, redundant verification), OR the post-write loop surfaces
|
|
245
|
+
| Any [code smell](#code-smells--automatic-review-triggers) fires (250+ LOC, >3 params, redundant verification, negative naming), OR the post-write loop surfaces more than two issues, OR the user says "reshape this", "extract this", "clean this up" | `refactor` | Safe codemap-driven multi-step refactor with LSP + tests after each step. Never improvise a structural change. |
|
|
246
246
|
| Recent branch contains AI-authored patterns (broad except, dead helpers, vague comments, oversized files, redundant post-action verification, junk tests), OR the user says "remove slop", "clean AI code", "deslop" | `remove-ai-slops` | Behavior locked by gate-passing tests FIRST, then categorized parallel cleanup (junk tests included, each cut proven by a mutation), then quality gates. Behavior-preserving. |
|
|
247
|
-
| Rust code touches `unsafe`, `*mut`, `*const`, `MaybeUninit`, FFI, `unsafe impl Send/Sync`, or a custom lock-free primitive | `references/rust-ub/` | Full UB taxonomy + Miri strictness escalation. Every `unsafe` block must survive Miri Level 3 (strict provenance + symbolic alignment + preemption) before it ships. |
|
|
247
|
+
| Rust code touches `unsafe`, `*mut`, `*const`, `MaybeUninit`, FFI, `unsafe impl Send/Sync`, or a custom lock-free primitive | `references/rust-ub/` | Full UB taxonomy + Miri strictness escalation. Every `unsafe` block must survive Miri Level 3 (strict provenance + symbolic alignment + preemption) and the Level 4 Tree Borrows pass before it ships. |
|
|
248
248
|
|
|
249
249
|
---
|
|
250
250
|
|
|
@@ -48,10 +48,10 @@ cloc --by-file <file> # the "code" column is the number
|
|
|
48
48
|
|
|
49
49
|
A file may legitimately exceed 250 pure LOC if **and only if** it is:
|
|
50
50
|
|
|
51
|
-
- A truly indivisible single-responsibility unit (e.g., a generated parser table, a state machine whose states share a single closure). Mark with `// allow: SIZE_OK — <reason
|
|
51
|
+
- A truly indivisible single-responsibility unit (e.g., a generated parser table, a state machine whose states share a single closure). Mark it in the first 10 lines with `# noqa: SIZE_OK — <reason>` in Python (the form `scripts/python/check-no-excuse-rules.py` reads) or `// allow: SIZE_OK — <reason>` in `//`-comment languages.
|
|
52
52
|
- A pure data table (translation strings, error code lookup, brand color palette).
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
A SIZE_OK marker without a justifying comment is itself slop.
|
|
55
55
|
|
|
56
56
|
### Concrete split examples
|
|
57
57
|
|
|
@@ -66,9 +66,9 @@ Read these per-file references for the canonical patterns:
|
|
|
66
66
|
- **HTTP backend** → `backend-stack.md` — `gin` server skeleton, middleware ordering, SSE/streaming with `http.Flusher`, structured slog logging, graceful shutdown — distilled from the CLIProxyAPI codebase (a real proxy serving OpenAI/Gemini/Claude APIs).
|
|
67
67
|
- **RPC** → `grpc-connect.md` — when to pick Connect vs grpc-go, codegen pipeline, protovalidate, streaming.
|
|
68
68
|
- **DB** → `sqlc-pgx.md` — compile-time-safe SQL via sqlc + pgx connection pool + migrations via goose + testcontainers in CI.
|
|
69
|
-
- **CLI** → `cobra-stack.md` — cobra layout, slog integration, graceful shutdown on signals,
|
|
69
|
+
- **CLI** → `cobra-stack.md` — cobra layout, slog integration, graceful shutdown on signals, shell completions, `huh` prompts styled with `lipgloss`.
|
|
70
70
|
- **TUI** → `bubbletea-v2.md` — v2 model, `SetVirtualCursor(false)` + `tea.View{Cursor}` for CJK IME, why v1 was broken for Korean/Japanese/Chinese input.
|
|
71
|
-
- **Testing** → `testing.md` — table-driven tests, `require` vs `assert`, `autogold` snapshots, `
|
|
71
|
+
- **Testing** → `testing.md` — table-driven tests, `require` vs `assert`, `autogold` snapshots, `rapid` property tests, `testcontainers` for integration, `goleak` for goroutine leaks.
|
|
72
72
|
- **Bootstrap** → `bootstrap.md` — `scripts/go/new-project.ts` invocation, project layout (`cmd/`, `internal/`, `pkg/`), Taskfile, CI.
|
|
73
73
|
- **Strict config** → `golangci-strict.md` — the canonical `.golangci.yml` with the full linter whitelist and per-linter rationale.
|
|
74
74
|
- **One-liners** → `one-liners.md` — `go run` scripts with `//go:build ignore`, `gorun`-style invocation.
|
|
@@ -81,7 +81,7 @@ The `cmd/server/main.go` is the most common violator. Refactor it: `main.go` onl
|
|
|
81
81
|
|
|
82
82
|
## Existing codebases — non-strict project
|
|
83
83
|
|
|
84
|
-
When editing an existing `.go` file that doesn't follow these rules: **write new code in strict style, don't refactor existing code in the same change.** Use the `remove-ai-slops` skill for branch-scope cleanup.
|
|
84
|
+
When editing an existing `.go` file that doesn't follow these rules: **write new code in strict style, don't refactor existing code in the same change.** The one exception is the 250 pure-LOC ceiling: if your edit adds lines to a file already over it, split the unit you are touching into its own file first (see [`../code-smells.md`](../code-smells.md) Smell 1); everything else waits for a separate change. Use the `remove-ai-slops` skill for branch-scope cleanup.
|
|
85
85
|
|
|
86
86
|
## Activation
|
|
87
87
|
|
|
@@ -41,7 +41,7 @@ These are deliberate project choices. Violations are always wrong, not "style pr
|
|
|
41
41
|
11. **No Any, no object** — both are banned as type annotations. `object` erases all structural information (zero callable attributes, zero narrowing). Use `Protocol` (structural typing), `TypeVar` (generic pass-through), explicit union (known variants), or `TypedDict` (dict shapes).
|
|
42
42
|
12. **No cast** — `cast()` is banned. Redesign the types.
|
|
43
43
|
13. **No type: ignore** — fix the type error. The checker is right; you are wrong.
|
|
44
|
-
14. **No broad except** — `except Exception` and `except BaseException` are banned. Catch the **specific** exception you expect. A broad catch swallows bugs you need to see — `KeyError`, `AttributeError`, `TypeError` all vanish silently. If you genuinely need a catch-all at a top-level boundary (CLI entry, HTTP handler),
|
|
44
|
+
14. **No broad except** — `except Exception` and `except BaseException` are banned. Catch the **specific** exception you expect. A broad catch swallows bugs you need to see — `KeyError`, `AttributeError`, `TypeError` all vanish silently. If you genuinely need a catch-all at a top-level boundary (CLI entry, HTTP handler), put `# noqa: BROAD_EXCEPT_OK` on the `except` line and log + re-raise.
|
|
45
45
|
|
|
46
46
|
### Typing and safety
|
|
47
47
|
|
|
@@ -147,19 +147,19 @@ except Exception:
|
|
|
147
147
|
# GOOD — catch what you expect
|
|
148
148
|
try:
|
|
149
149
|
result = api.fetch(url)
|
|
150
|
-
except
|
|
150
|
+
except httpx2.HTTPStatusError as e:
|
|
151
151
|
logger.error("API %d: %s", e.response.status_code, e.request.url)
|
|
152
152
|
return None
|
|
153
|
-
except
|
|
153
|
+
except httpx2.ConnectError:
|
|
154
154
|
raise ServiceUnavailableError(service="api") from None
|
|
155
155
|
|
|
156
|
-
# GOOD — top-level boundary (only
|
|
157
|
-
def main() -> int:
|
|
156
|
+
# GOOD — top-level boundary (CLI entry or HTTP handler: the only places a broad catch is acceptable)
|
|
157
|
+
def main() -> int:
|
|
158
158
|
try:
|
|
159
159
|
return run()
|
|
160
|
-
except Exception:
|
|
160
|
+
except Exception: # noqa: BROAD_EXCEPT_OK
|
|
161
161
|
logger.exception("unhandled error")
|
|
162
|
-
|
|
162
|
+
raise
|
|
163
163
|
```
|
|
164
164
|
|
|
165
165
|
### Async
|
|
@@ -307,7 +307,7 @@ Tests still follow the iron list — frozen dataclasses, typed errors, exhaustiv
|
|
|
307
307
|
|
|
308
308
|
## Existing codebases
|
|
309
309
|
|
|
310
|
-
When editing an existing file that doesn't follow these rules: **write new code in strict style, don't refactor existing code in the same change.** Mixing feature work with style migration makes reviews harder and bugs likelier.
|
|
310
|
+
When editing an existing file that doesn't follow these rules: **write new code in strict style, don't refactor existing code in the same change.** The one exception is the 250 pure-LOC ceiling: if your edit adds lines to a file already over it, split the unit you are touching into its own file first (see [`../code-smells.md`](../code-smells.md) Smell 1); everything else waits for a separate change. Mixing feature work with style migration makes reviews harder and bugs likelier.
|
|
311
311
|
|
|
312
312
|
## Activation
|
|
313
313
|
|
|
@@ -10,16 +10,16 @@ NEVER pandas. Polars (with numpy) plus DuckDB. Pandas is 10-50x slower, has weak
|
|
|
10
10
|
|---|---|---|
|
|
11
11
|
| `.csv` / `.parquet` / `.json` direct query | DuckDB | Zero memory load, SQL ergonomics |
|
|
12
12
|
| `.duckdb` file | DuckDB | Native format |
|
|
13
|
-
| Filter (any size) | Polars |
|
|
14
|
-
| Sort | Polars |
|
|
15
|
-
| Multi-table join | DuckDB |
|
|
16
|
-
| Heavy GROUP BY aggregation | DuckDB |
|
|
17
|
-
| Window function | Polars |
|
|
18
|
-
| Pivot / melt / string ops | Polars |
|
|
13
|
+
| Filter (any size) | Polars | row-wise filtering, low setup cost |
|
|
14
|
+
| Sort | Polars | in-memory sorting |
|
|
15
|
+
| Multi-table join | DuckDB | more join types, out-of-core joins |
|
|
16
|
+
| Heavy GROUP BY aggregation | DuckDB | large grouped aggregation |
|
|
17
|
+
| Window function | Polars | window expressions |
|
|
18
|
+
| Pivot / melt / string ops | Polars | reshape and string expressions |
|
|
19
19
|
| Larger than RAM | Polars streaming or DuckDB out-of-core | Both handle OOM |
|
|
20
20
|
| Mixed pipeline | Hybrid (zero-copy via Arrow) | Use each tool's strengths |
|
|
21
21
|
|
|
22
|
-
For the deep version (
|
|
22
|
+
For the deep version (engine choice, placement, OOM strategies, execution templates), load the **`data-scientist`** skill - it lives in this same skill set; when the engine choice matters, measure on the actual data, as that skill says.
|
|
23
23
|
|
|
24
24
|
## Standard imports
|
|
25
25
|
|
|
@@ -69,7 +69,7 @@ result = (
|
|
|
69
69
|
pl.len().alias("count"),
|
|
70
70
|
pl.sum("amount").alias("total"),
|
|
71
71
|
])
|
|
72
|
-
.collect(streaming
|
|
72
|
+
.collect(engine="streaming")
|
|
73
73
|
)
|
|
74
74
|
```
|
|
75
75
|
|
|
@@ -84,7 +84,7 @@ joined = duckdb.sql("""
|
|
|
84
84
|
JOIN 'products.parquet' p ON o.product_id = p.id
|
|
85
85
|
""").pl()
|
|
86
86
|
|
|
87
|
-
# Phase 2: Polars for filtering and transformation
|
|
87
|
+
# Phase 2: Polars for filtering and transformation
|
|
88
88
|
processed = (
|
|
89
89
|
joined
|
|
90
90
|
.filter(pl.col("amount") > 100)
|
|
@@ -52,7 +52,7 @@ Next-generation HTTP client under Pydantic stewardship. Sync and async in one li
|
|
|
52
52
|
|
|
53
53
|
**Install**: `httpx2[http2,brotli,zstd]` — always include all three extras, no exceptions.
|
|
54
54
|
|
|
55
|
-
**A bare `httpx2.AsyncClient()` / `httpx2.Client()` is a bug.** Always use the factory pattern from `references/httpx2-optimization.md` with ALL optimizations enabled by default:
|
|
55
|
+
**A bare `httpx2.AsyncClient()` / `httpx2.Client()` is a bug.** Always use the factory pattern from `references/python/httpx2-optimization.md` with ALL optimizations enabled by default:
|
|
56
56
|
|
|
57
57
|
```python
|
|
58
58
|
import socket
|
|
@@ -78,7 +78,7 @@ with httpx2.Client(transport=transport, timeout=_TIMEOUT, follow_redirects=True)
|
|
|
78
78
|
users = response.json()
|
|
79
79
|
```
|
|
80
80
|
|
|
81
|
-
See `references/httpx2-optimization.md` for the full factory functions (`create_client()` / `create_async_client()`), event hooks, and the rationale behind every setting. **Load that reference whenever you write ANY network code.**
|
|
81
|
+
See `references/python/httpx2-optimization.md` for the full factory functions (`create_client()` / `create_async_client()`), event hooks, and the rationale behind every setting. **Load that reference whenever you write ANY network code.**
|
|
82
82
|
|
|
83
83
|
## JSON — stdlib `json` (default) or `orjson` (hot paths)
|
|
84
84
|
|
|
@@ -98,7 +98,7 @@ raw: bytes = orjson.dumps(
|
|
|
98
98
|
|
|
99
99
|
For FastAPI: `app = FastAPI(default_response_class=ORJSONResponse)`. Pydantic-typed responses bypass it (and that's correct — Pydantic's path is faster). Raw `dict`/`list` returns go through orjson.
|
|
100
100
|
|
|
101
|
-
See `references/orjson-stack.md` for the full decision tree, option flag reference, FastAPI integration, Redis/queue/logging patterns, and the `model_dump_json()` vs orjson benchmark.
|
|
101
|
+
See `references/python/orjson-stack.md` for the full decision tree, option flag reference, FastAPI integration, Redis/queue/logging patterns, and the `model_dump_json()` vs orjson benchmark.
|
|
102
102
|
|
|
103
103
|
## Validation — pydantic v2
|
|
104
104
|
|
|
@@ -258,7 +258,7 @@ if __name__ == "__main__":
|
|
|
258
258
|
| `python -m venv .venv && ...` | `uv run --script` handles it |
|
|
259
259
|
| Script without usage comment | Always include the "How to run" block |
|
|
260
260
|
| `import asyncio; asyncio.run(main())` | `import anyio; anyio.run(main)` |
|
|
261
|
-
| Bare `httpx2.AsyncClient()` | Full production defaults (see `references/httpx2-optimization.md`) |
|
|
261
|
+
| Bare `httpx2.AsyncClient()` | Full production defaults (see `references/python/httpx2-optimization.md`) |
|
|
262
262
|
|
|
263
263
|
## Sources
|
|
264
264
|
|
|
@@ -209,7 +209,7 @@ A single `make ci` target combining the four works fine.
|
|
|
209
209
|
|
|
210
210
|
## Enforcement summary
|
|
211
211
|
|
|
212
|
-
The config above, combined with `scripts/check-no-excuse-rules.py`, enforces:
|
|
212
|
+
The config above, combined with `scripts/python/check-no-excuse-rules.py`, enforces:
|
|
213
213
|
|
|
214
214
|
| What | How |
|
|
215
215
|
|---|---|
|
|
@@ -321,7 +321,7 @@ let player: WorldPoint = Point2D::new(3.5, 1.2);
|
|
|
321
321
|
// let mistake = cursor + player; // compile error: different coordinate spaces
|
|
322
322
|
```
|
|
323
323
|
|
|
324
|
-
Generalize the pattern to your own domains (see `references/type-state.md`).
|
|
324
|
+
Generalize the pattern to your own domains (see `references/rust/type-state.md`).
|
|
325
325
|
|
|
326
326
|
## Property tests — `proptest`
|
|
327
327
|
|
|
@@ -380,7 +380,7 @@ Run with `cargo bench`. HTML reports under `target/criterion/`. Pair with `cargo
|
|
|
380
380
|
|
|
381
381
|
## Concurrency model — `loom`
|
|
382
382
|
|
|
383
|
-
For lock-free or atomic-heavy code (channels, refcounts, hazard pointers). See `references/concurrency.md` for the full pattern.
|
|
383
|
+
For lock-free or atomic-heavy code (channels, refcounts, hazard pointers). See `references/rust/concurrency.md` for the full pattern.
|
|
384
384
|
|
|
385
385
|
## Arena allocator — `bumpalo`
|
|
386
386
|
|
|
@@ -98,7 +98,7 @@ MIRIFLAGS="\
|
|
|
98
98
|
**Interpret results:**
|
|
99
99
|
- Fails at Level 1 → Definite UB. Fix immediately.
|
|
100
100
|
- Passes Level 1, fails Level 2 → Provenance or alignment UB. Fix.
|
|
101
|
-
- Passes Levels 1-3, fails Level 4 → Tree Borrows found something Stacked Borrows missed (unusual). Investigate — may be a Tree Borrows false positive, but usually indicates fragile aliasing.
|
|
101
|
+
- Passes Levels 1-3, fails Level 4 → Tree Borrows found something Stacked Borrows missed (unusual). Investigate — may be a Tree Borrows false positive, but usually indicates fragile aliasing. It does not ship until the aliasing is fixed or the false positive is proven and recorded with the Miri output.
|
|
102
102
|
- Passes all 4 → Miri-clean. Proceed to supplementary tools.
|
|
103
103
|
|
|
104
104
|
### Phase 3: Supplementary Scans
|
|
@@ -159,11 +159,11 @@ Is there unsafe code in the changeset?
|
|
|
159
159
|
│ NO → Run Miri Level 2 (strict provenance).
|
|
160
160
|
│ Miri fails?
|
|
161
161
|
│ YES → Stop. Classify. Fix. Prove. Then continue.
|
|
162
|
-
│ NO → Proceed with the original task.
|
|
162
|
+
│ NO → Proceed with the original task; run Levels 3 and 4 before it ships.
|
|
163
163
|
NO → Proceed normally.
|
|
164
164
|
```
|
|
165
165
|
|
|
166
|
-
This is not optional. **Every `unsafe` block
|
|
166
|
+
This is not optional. **Every `unsafe` block passes Miri Levels 3 and 4 before it ships.**
|
|
167
167
|
|
|
168
168
|
## SAFETY Comment Standard
|
|
169
169
|
|
|
@@ -16,7 +16,7 @@ These are deliberate project choices. Violations are always wrong, not "style pr
|
|
|
16
16
|
| Category | Use | Never |
|
|
17
17
|
|---|---|---|
|
|
18
18
|
| Runtime | Bun (native TS, single binary) | ts-node, tsx |
|
|
19
|
-
| Package manager | `pnpm` | npm, yarn (unless workspace requires it) |
|
|
19
|
+
| Package manager | Bun (`bun install`); `pnpm` only when Node is forced | npm, yarn (unless workspace requires it) |
|
|
20
20
|
| Linter + formatter | **oxlint + oxfmt**, with both local copy rules | New ESLint, Prettier, or Biome setups; retain them only in repositories already using them |
|
|
21
21
|
| Type checker | `tsc --noEmit` with strict config | skip type checking |
|
|
22
22
|
| Web framework | Hono | Express |
|
|
@@ -39,7 +39,7 @@ These are deliberate project choices. Violations are always wrong, not "style pr
|
|
|
39
39
|
11. **as const for constants** — module-level constant objects and arrays use `as const`.
|
|
40
40
|
12. **import type** — type-only imports use `import type`. Enforced by `verbatimModuleSyntax`.
|
|
41
41
|
13. **Named exports only** — no `export default`. Exception: framework requirement (Next.js pages, etc.).
|
|
42
|
-
14. **No empty catch, no catch-and-swallow** — every `catch` block must either (a) narrow the error with `instanceof` and handle each case, or (b) re-throw. Empty catch blocks and `catch (e) { console.error(e) }` without narrowing or re-throw are banned — they hide bugs. At top-level boundaries (CLI entry, HTTP handler), opt out with `// no-excuse-ok: catch
|
|
42
|
+
14. **No empty catch, no catch-and-swallow** — every `catch` block must either (a) narrow the error with `instanceof` and handle each case, or (b) re-throw. Empty catch blocks and `catch (e) { console.error(e) }` without narrowing or re-throw are banned — they hide bugs. At top-level boundaries (CLI entry, HTTP handler), opt out with `// no-excuse-ok: catch` on the `catch` line.
|
|
43
43
|
|
|
44
44
|
### Data modeling — which construct, when
|
|
45
45
|
|
|
@@ -91,10 +91,10 @@ try {
|
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
// GOOD — top-level boundary (only place catch-all is acceptable)
|
|
94
|
-
async function main(): Promise<void> {
|
|
94
|
+
async function main(): Promise<void> {
|
|
95
95
|
try {
|
|
96
96
|
await run()
|
|
97
|
-
} catch (e) {
|
|
97
|
+
} catch (e) { // no-excuse-ok: catch
|
|
98
98
|
console.error("unhandled:", e)
|
|
99
99
|
process.exit(1)
|
|
100
100
|
}
|
|
@@ -190,7 +190,7 @@ Tests still follow the iron list — branded types, typed errors, exhaustive swi
|
|
|
190
190
|
|
|
191
191
|
## Existing codebases
|
|
192
192
|
|
|
193
|
-
When editing an existing file that doesn't follow these rules: **write new code in strict style, don't refactor existing code in the same change.**
|
|
193
|
+
When editing an existing file that doesn't follow these rules: **write new code in strict style, don't refactor existing code in the same change.** The one exception is the 250 pure-LOC ceiling: if your edit adds lines to a file already over it, split the unit you are touching into its own file first (see [`../code-smells.md`](../code-smells.md) Smell 1); everything else waits for a separate change.
|
|
194
194
|
|
|
195
195
|
## Activation
|
|
196
196
|
|