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
|
@@ -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
|
|
|
@@ -106,17 +106,15 @@ Should I proceed with [recommendation], or would you prefer differently?
|
|
|
106
106
|
|
|
107
107
|
## Step 0.3: Create Initial Todos
|
|
108
108
|
|
|
109
|
-
**IMMEDIATELY after understanding the request, create todos:**
|
|
109
|
+
**IMMEDIATELY after understanding the request, create these todos with the session's todo tool (all pending):**
|
|
110
110
|
|
|
111
111
|
\`\`\`
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
{"id": "phase-6", "content": "PHASE 6: Final Verification - full test suite and regression check", "status": "pending", "priority": "high"}
|
|
119
|
-
])
|
|
112
|
+
- phase-1: PHASE 1: Codebase Analysis - launch parallel explore agents
|
|
113
|
+
- phase-2: PHASE 2: Build Codemap - map dependencies and impact zones
|
|
114
|
+
- phase-3: PHASE 3: Test Assessment - analyze test coverage and verification strategy
|
|
115
|
+
- phase-4: PHASE 4: Plan Generation - invoke Plan agent for detailed refactoring plan
|
|
116
|
+
- phase-5: PHASE 5: Execute Refactoring - step-by-step with continuous verification
|
|
117
|
+
- phase-6: PHASE 6: Final Verification - full test suite and regression check
|
|
120
118
|
\`\`\`
|
|
121
119
|
|
|
122
120
|
---
|
|
@@ -179,14 +177,14 @@ While background agents are running, use direct tools:
|
|
|
179
177
|
|
|
180
178
|
\`\`\`typescript
|
|
181
179
|
// Find definition(s)
|
|
182
|
-
|
|
180
|
+
lsp_goto_definition(filePath, line, character) // Where is it defined?
|
|
183
181
|
|
|
184
182
|
// Find ALL usages across workspace
|
|
185
|
-
|
|
183
|
+
lsp_find_references(filePath, line, character, includeDeclaration=true)
|
|
186
184
|
|
|
187
185
|
// Get file structure
|
|
188
|
-
|
|
189
|
-
|
|
186
|
+
lsp_symbols(filePath, scope="document") // Hierarchical outline
|
|
187
|
+
lsp_symbols(filePath, scope="workspace", query="[target_symbol]") // Search by name
|
|
190
188
|
|
|
191
189
|
// Get current diagnostics
|
|
192
190
|
lsp_diagnostics(filePath) // Errors, warnings before we start
|
|
@@ -195,8 +193,8 @@ lsp_diagnostics(filePath) // Errors, warnings before we start
|
|
|
195
193
|
### AST-Grep Skill for Pattern Analysis:
|
|
196
194
|
|
|
197
195
|
\`\`\`bash
|
|
198
|
-
// Find structural patterns
|
|
199
|
-
python3 scripts/ast_grep_helper.py search 'function $NAME($$$) { $$$ }' --lang ts
|
|
196
|
+
// Find structural patterns — run this from the ast-grep skill's directory; this skill ships no scripts/
|
|
197
|
+
python3 scripts/ast_grep_helper.py search 'function $NAME($$$) { $$$ }' src/ --lang ts
|
|
200
198
|
|
|
201
199
|
# Preview refactoring first
|
|
202
200
|
sg --pattern '[old_pattern]' --rewrite '[new_pattern]' --lang ts src/
|
|
@@ -205,7 +203,7 @@ sg --pattern '[old_pattern]' --rewrite '[new_pattern]' --lang ts src/
|
|
|
205
203
|
### Grep for Text Patterns:
|
|
206
204
|
|
|
207
205
|
\`\`\`
|
|
208
|
-
grep(pattern="[search_term]", path="src/"
|
|
206
|
+
grep(pattern="[search_term]", path="src/") // narrow to *.ts with the grep tool's file-filter parameter
|
|
209
207
|
\`\`\`
|
|
210
208
|
|
|
211
209
|
## 1.3: Collect Background Results
|
|
@@ -342,6 +340,11 @@ Which approach do you prefer?
|
|
|
342
340
|
- Unit: \`bun test\` / \`npm test\` / \`pytest\` / etc.
|
|
343
341
|
- Integration: [command if exists]
|
|
344
342
|
- Type check: \`tsc --noEmit\` / \`pyright\` / etc.
|
|
343
|
+
- Lint: [project's linter command, the one Phase 6.3 runs]
|
|
344
|
+
|
|
345
|
+
### Baseline (before any change)
|
|
346
|
+
- Pass counts: [X/Y passing per test command above]
|
|
347
|
+
- lsp_diagnostics: [pre-existing diagnostics recorded in Phase 1.2]
|
|
345
348
|
|
|
346
349
|
### Verification Checkpoints
|
|
347
350
|
After each refactoring step:
|
|
@@ -405,17 +408,14 @@ After receiving plan from Plan agent:
|
|
|
405
408
|
|
|
406
409
|
## 4.3: Register Detailed Todos
|
|
407
410
|
|
|
408
|
-
Convert Plan agent output into granular todos:
|
|
411
|
+
Convert Plan agent output into granular todos with the session's todo tool (each step from the plan becomes a todo, followed by its verify todo):
|
|
409
412
|
|
|
410
413
|
\`\`\`
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
{"id": "verify-2", "content": "Verify Step 2: run tests", "status": "pending", "priority": "medium"},
|
|
417
|
-
// ... continue for all steps
|
|
418
|
-
])
|
|
414
|
+
- refactor-1: Step 1: [description]
|
|
415
|
+
- verify-1: Verify Step 1: run tests
|
|
416
|
+
- refactor-2: Step 2: [description]
|
|
417
|
+
- verify-2: Verify Step 2: run tests
|
|
418
|
+
- ... continue for all steps
|
|
419
419
|
\`\`\`
|
|
420
420
|
|
|
421
421
|
**Mark phase-4 as completed.**
|
|
@@ -449,8 +449,8 @@ lsp_rename(filePath, line, character, newName) // Execute rename
|
|
|
449
449
|
// Preview first
|
|
450
450
|
sg --pattern '[pattern]' --rewrite '[rewrite]' --lang ts path/to/file.ts
|
|
451
451
|
|
|
452
|
-
// If preview looks good, execute
|
|
453
|
-
python3 scripts/ast_grep_helper.py replace '[pattern]' '[rewrite]'
|
|
452
|
+
// If preview looks good, execute (from the ast-grep skill's directory)
|
|
453
|
+
python3 scripts/ast_grep_helper.py replace '[pattern]' '[rewrite]' path/to/file.ts --lang ts --apply
|
|
454
454
|
\`\`\`
|
|
455
455
|
|
|
456
456
|
**For Structural Changes:**
|
|
@@ -543,7 +543,7 @@ bun run build # or npm run build, etc.
|
|
|
543
543
|
\`\`\`typescript
|
|
544
544
|
// Check all changed files
|
|
545
545
|
for (file of changedFiles) {
|
|
546
|
-
lsp_diagnostics(file) // Must
|
|
546
|
+
lsp_diagnostics(file) // Must be clean or same as the Phase 1 baseline: zero new diagnostics
|
|
547
547
|
}
|
|
548
548
|
\`\`\`
|
|
549
549
|
|
|
@@ -609,8 +609,8 @@ You already know these tools. Use them intelligently:
|
|
|
609
609
|
|
|
610
610
|
## LSP Tools
|
|
611
611
|
Leverage LSP tools for precision analysis. Key patterns:
|
|
612
|
-
- **Understand before changing**: \`
|
|
613
|
-
- **Impact analysis**: \`
|
|
612
|
+
- **Understand before changing**: \`lsp_goto_definition\` to grasp context
|
|
613
|
+
- **Impact analysis**: \`lsp_find_references\` to map all usages before modification
|
|
614
614
|
- **Safe refactoring**: \`lsp_prepare_rename\` → \`lsp_rename\` for symbol renames
|
|
615
615
|
- **Continuous verification**: \`lsp_diagnostics\` after every change
|
|
616
616
|
|
|
@@ -674,17 +674,17 @@ Then choose the path:
|
|
|
674
674
|
- **Team path (5.1-T)**: when the plan recommends \`team\` AND \`file_independent_steps >= 3\`. Members execute in parallel, Lead orchestrates, a \`deep-high\` verifier lives outside the team.
|
|
675
675
|
- **Legacy path (5.1-L)**: otherwise. Use the original 5.1 / 5.2 / 5.3 flow from above.
|
|
676
676
|
|
|
677
|
-
Record the chosen path in the
|
|
677
|
+
Record the chosen path in the todo list.
|
|
678
678
|
|
|
679
679
|
## Phase 5.1-T: \`refactor-squad\` team execution
|
|
680
680
|
|
|
681
681
|
**Precondition checks** (fail hard if any step fails):
|
|
682
682
|
|
|
683
|
-
1.
|
|
683
|
+
1. When the session lists the \`team-mode\` skill, load it for lifecycle, message protocol, and limits.
|
|
684
684
|
2. Call \`team_list\` and verify no active \`refactor-squad\` run exists; if one does, shutdown + delete the orphan before proceeding.
|
|
685
|
-
3. If
|
|
685
|
+
3. If the project-level spec \`.omo/teams/refactor-squad/config.json\` (under the project root) is missing, write it using the spec below.
|
|
686
686
|
|
|
687
|
-
**Team spec** (
|
|
687
|
+
**Team spec** (\`<project root>/.omo/teams/refactor-squad/config.json\`):
|
|
688
688
|
|
|
689
689
|
\`\`\`json
|
|
690
690
|
{
|
|
@@ -748,7 +748,7 @@ While any team task is \`pending | claimed | in_progress\`:
|
|
|
748
748
|
prompt=<files touched + verify-spec commands + instruction to return "PASS" or "FAIL:<failing test + specific error + suggested revert hunks>">
|
|
749
749
|
)
|
|
750
750
|
\`\`\`
|
|
751
|
-
If \`deep\` is unavailable, fall back to \`category="unspecified-high"\`. Do not create a commit checkpoint until the verifier returns PASS.
|
|
751
|
+
If \`deep-high\` is unavailable, fall back to \`category="unspecified-high"\`. Do not create a commit checkpoint until the verifier returns PASS.
|
|
752
752
|
- On a verifier PASS: make the commit checkpoint for that step (see original 5.3). Proceed.
|
|
753
753
|
- On a verifier FAIL: Lead decides:
|
|
754
754
|
- **Retry with fix hint**: \`team_task_update(status=pending)\` on the original step + \`team_send_message(teamRunId=<id>, to=<original member>, summary="retry", body=<specific failure from verifier>)\`. Runtime reassigns.
|
|
@@ -765,7 +765,7 @@ If Phase 5 used the team path, dismantle \`refactor-squad\` BEFORE producing the
|
|
|
765
765
|
2. \`team_delete(teamRunId=<id>)\`.
|
|
766
766
|
3. \`team_list\` to confirm no residual \`refactor-squad\` run.
|
|
767
767
|
|
|
768
|
-
The
|
|
768
|
+
The \`.omo/teams/refactor-squad/config.json\` declaration stays on disk in the project; next session reuses it.
|
|
769
769
|
|
|
770
770
|
Append to the 6.6 summary a "Dispatch path" line and, when team path was used, team metrics (teamRunId, tasks created, verifier runs, team lifetime).
|
|
771
771
|
|