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
|
@@ -41,11 +41,11 @@ Subcommands: `search`, `replace` (dry-run; `--apply` to write), `scan`, `test`,
|
|
|
41
41
|
|
|
42
42
|
```bash
|
|
43
43
|
# from packages/shared-skills/skills/ast-grep/
|
|
44
|
-
python3 scripts/ast_grep_helper.py search '<PATTERN>' --lang
|
|
44
|
+
python3 scripts/ast_grep_helper.py search '<PATTERN>' [path] --lang <LANG>
|
|
45
45
|
python3 scripts/ast_grep_helper.py replace '<PATTERN>' '<REWRITE>' --lang ts # dry-run; add --apply
|
|
46
46
|
python3 scripts/ast_grep_helper.py doctor
|
|
47
47
|
bash tests/smoke.sh # or: pwsh tests/smoke.ps1
|
|
48
48
|
# direct: sg run -p '<PATTERN>' --lang ts path
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
-
- Parent:
|
|
51
|
+
- Parent (source checkout only, not shipped with the installed skill): `packages/shared-skills/AGENTS.md`.
|
|
@@ -29,13 +29,13 @@ ln -s /path/to/your/clone ~/.agents/skills/ast-grep
|
|
|
29
29
|
|
|
30
30
|
```bash
|
|
31
31
|
# Search by AST pattern (the helper validates patterns offline first)
|
|
32
|
-
python3 scripts/ast_grep_helper.py search 'console.log($MSG)' --lang ts
|
|
32
|
+
python3 scripts/ast_grep_helper.py search 'console.log($MSG)' src/ --lang ts
|
|
33
33
|
|
|
34
34
|
# Rewrite (dry-run preview by default)
|
|
35
|
-
python3 scripts/ast_grep_helper.py replace 'console.log($MSG)' 'logger.info($MSG)' --lang ts
|
|
35
|
+
python3 scripts/ast_grep_helper.py replace 'console.log($MSG)' 'logger.info($MSG)' src/ --lang ts
|
|
36
36
|
|
|
37
37
|
# Apply the rewrite (two-pass: preview JSON + then --update-all)
|
|
38
|
-
python3 scripts/ast_grep_helper.py replace 'console.log($MSG)' 'logger.info($MSG)' --lang ts
|
|
38
|
+
python3 scripts/ast_grep_helper.py replace 'console.log($MSG)' 'logger.info($MSG)' src/ --lang ts --apply
|
|
39
39
|
|
|
40
40
|
# Run YAML lint rules from sgconfig.yml
|
|
41
41
|
python3 scripts/ast_grep_helper.py scan src/
|
|
@@ -85,7 +85,7 @@ ast-grep-skill/
|
|
|
85
85
|
|
|
86
86
|
1. **Wraps `sg`** with a single Python 3 stdlib script that works the same on macOS, Linux, Windows, WSL, Git Bash.
|
|
87
87
|
2. **Validates patterns offline** before calling `sg` — catches the regex-misuse class of mistakes (`\w`, `.*`, `|`, `[a-z]`) plus language-specific traps (Python trailing colons, JS/Go/Rust missing function bodies).
|
|
88
|
-
3. **Resolves the binary** through
|
|
88
|
+
3. **Resolves the binary** through 5 candidates: `OMO_AST_GREP_SG_PATH` override → OMO runtime dirs → cached → PATH (with Linux `setgroups` collision detection) → Homebrew. Falls through to a clear install hint with copy-paste commands.
|
|
89
89
|
4. **Runs the two-pass write trick** when applying rewrites — `sg run` silently ignores `--update-all` when `--json` is set, so `replace --apply` runs two invocations: pass 1 collects JSON matches, pass 2 mutates files.
|
|
90
90
|
5. **Ships per-OS installers** that try every reasonable package manager and fall back to a GitHub release tarball.
|
|
91
91
|
6. **Documents the failure modes** the model will hit (regex misuse, incomplete patterns, `--update-all` + `--json` trap, scope/type questions ast-grep can't answer) in `references/pitfalls.md`.
|
|
@@ -17,9 +17,9 @@ OmO native also registers a bundled ast-grep MCP server. Its three tools are **d
|
|
|
17
17
|
|
|
18
18
|
- `mcp__ast_grep_search({ pattern, language, paths })` — AST-shape search, the MCP equivalent of `sg run -p`. Prefer this over shelling out to `sg` for one-off lookups: no install, no PATH issues.
|
|
19
19
|
- `mcp__ast_grep_rewrite({ pattern, rewrite, language, paths, apply })` — preview matches (`apply: false`, the default) or apply the rewrite (`apply: true`). Same two-pass discipline as `sg run -r`: preview first, then apply.
|
|
20
|
-
- `mcp__ast_grep_scan({ paths })` — run
|
|
20
|
+
- `mcp__ast_grep_scan({ ruleFile | inlineRules, paths, apply })` — run exactly one explicit YAML rule source (a rule file or inline rules), the MCP equivalent of `sg scan --rule` / `--inline-rules`. It never discovers `sgconfig.yml`; to run a project's whole rule set, use `sg scan` (or the helper's `scan`) from the shell.
|
|
21
21
|
|
|
22
|
-
Same pattern language as the CLI: `$VAR` matches one AST node, `$$$VAR` matches zero or more, and the pattern is code, not regex. `paths` accepts a file or directory list; `language` is required
|
|
22
|
+
Same pattern language as the CLI: `$VAR` matches one AST node, `$$$VAR` matches zero or more, and the pattern is code, not regex. `paths` accepts a file or directory list; `language` is always required by `mcp__ast_grep_search` and `mcp__ast_grep_rewrite`.
|
|
23
23
|
|
|
24
24
|
---
|
|
25
25
|
|
|
@@ -79,7 +79,7 @@ A single-file Python 3 stdlib wrapper. Same on every OS. The agent's default ent
|
|
|
79
79
|
### `search` — find all matches of a pattern
|
|
80
80
|
|
|
81
81
|
```bash
|
|
82
|
-
python3 scripts/ast_grep_helper.py search 'console.log($MSG)' --lang ts
|
|
82
|
+
python3 scripts/ast_grep_helper.py search 'console.log($MSG)' src/ --lang ts
|
|
83
83
|
```
|
|
84
84
|
|
|
85
85
|
Validates the pattern offline first. If the pattern looks like regex (`\w`, `.*`, `|`, etc.) the helper exits with a hint and never calls `sg` — saves a round-trip. Pass `--force` to skip validation.
|
|
@@ -94,10 +94,10 @@ Flags:
|
|
|
94
94
|
|
|
95
95
|
```bash
|
|
96
96
|
# Dry-run preview (default — no files mutated)
|
|
97
|
-
python3 scripts/ast_grep_helper.py replace 'console.log($MSG)' 'logger.info($MSG)' --lang ts
|
|
97
|
+
python3 scripts/ast_grep_helper.py replace 'console.log($MSG)' 'logger.info($MSG)' src/ --lang ts
|
|
98
98
|
|
|
99
99
|
# Actually apply
|
|
100
|
-
python3 scripts/ast_grep_helper.py replace 'console.log($MSG)' 'logger.info($MSG)' --lang ts
|
|
100
|
+
python3 scripts/ast_grep_helper.py replace 'console.log($MSG)' 'logger.info($MSG)' src/ --lang ts --apply
|
|
101
101
|
```
|
|
102
102
|
|
|
103
103
|
The helper:
|
|
@@ -117,10 +117,12 @@ python3 scripts/ast_grep_helper.py scan -r rules/no-console.yml src/
|
|
|
117
117
|
# Apply auto-fixes
|
|
118
118
|
python3 scripts/ast_grep_helper.py scan -U src/
|
|
119
119
|
|
|
120
|
-
#
|
|
120
|
+
# Compact one-line-per-finding report
|
|
121
121
|
python3 scripts/ast_grep_helper.py scan --report-style short src/
|
|
122
122
|
```
|
|
123
123
|
|
|
124
|
+
The helper has no `--format` flag; for CI-friendly GitHub annotations call `sg scan --format github src/` directly (see `references/cli.md`).
|
|
125
|
+
|
|
124
126
|
### `validate` — offline pattern check (no `sg` call)
|
|
125
127
|
|
|
126
128
|
Useful for CI lints, pre-commit hooks, and quick sanity checks:
|
|
@@ -226,7 +228,7 @@ In priority order:
|
|
|
226
228
|
1. **Run `helper validate '<pattern>' --lang <lang>`** — catches regex misuse, missing function bodies, Python trailing colons.
|
|
227
229
|
2. **Check `--lang`** — `sg` infers from extension; if you pass a `.tsx` file with `--lang ts` (not `tsx`), JSX won't parse.
|
|
228
230
|
3. **Inspect the parsed pattern**: `sg run -p '<pattern>' --lang <lang> --debug-query=ast --stdin <<< '<sample>'`. If it shows `ERROR` nodes, the pattern is malformed.
|
|
229
|
-
4. **Check the AST of the target
|
|
231
|
+
4. **Check the AST of the target code**: paste a snippet of the target file as the pattern, `sg run -p '<snippet>' --lang <lang> --debug-query=cst path/to/file 2>&1 >/dev/null | head -40` — the dump goes to stderr and shows the pattern's tree; find the `kind` you're trying to match.
|
|
230
232
|
5. **Try the playground**: <https://ast-grep.github.io/playground.html> — paste code + pattern, see what's happening.
|
|
231
233
|
|
|
232
234
|
Do not blindly retry with variations. Each failure has a reason; surface it.
|
|
@@ -255,7 +257,7 @@ The full YAML rule schema is in `references/yaml-rules.md`. Project setup (`sgco
|
|
|
255
257
|
- `sg run --json=compact` produces an array of match objects: `{ file, range: {start, end}, text, replacement?, lines, language, ... }`. Pipe through `jq` for further processing.
|
|
256
258
|
- Without `--json`, `sg` produces human-readable colored output suitable for terminals.
|
|
257
259
|
- The helper's default output is human-readable (file:line:column + match preview). Pass `--json-out` for raw JSON.
|
|
258
|
-
- The helper's `replace`
|
|
260
|
+
- The helper's `replace` dry-run prints the number of matches, the number of files, and a per-location preview; `--apply` prints only the totals (`APPLIED: rewrote N match(es) across M file(s).`).
|
|
259
261
|
|
|
260
262
|
When summarizing for the user, **always include the count of files affected**, not just the count of matches. Users care about blast radius.
|
|
261
263
|
|
|
@@ -208,9 +208,10 @@ sg completions powershell >> $PROFILE
|
|
|
208
208
|
sg run -p 'console.log($_)' --lang ts --json=compact . \
|
|
209
209
|
| jq -r '.[].file' | sort | uniq -c | sort -rn
|
|
210
210
|
|
|
211
|
-
# Find all unique kinds in a file (great for figuring out kind names)
|
|
212
|
-
|
|
213
|
-
|
|
211
|
+
# Find all unique kinds in a file (great for figuring out kind names).
|
|
212
|
+
# --debug-query dumps the PATTERN's tree to stderr, so pass the file's code as the pattern.
|
|
213
|
+
sg run -p "$(cat src/foo.ts)" --lang ts --debug-query=ast src/foo.ts 2>&1 >/dev/null \
|
|
214
|
+
| grep -oE '[a-z_]+ \(' | tr -d ' (' | sort -u
|
|
214
215
|
|
|
215
216
|
# Rewrite only in a subset of files
|
|
216
217
|
sg run -p 'foo()' -r 'bar()' --update-all --globs 'src/**/*.ts' --globs '!src/legacy/**' .
|
|
@@ -43,9 +43,9 @@ foo === foo.bar
|
|
|
43
43
|
|
|
44
44
|
Useful for finding redundant comparisons, double assignments, etc.
|
|
45
45
|
|
|
46
|
-
### `$$$` is
|
|
46
|
+
### `$$$` is lazy
|
|
47
47
|
|
|
48
|
-
When you write `foo($$$A, b, $$$C)`, the matcher does **not** backtrack or try every possible split. It
|
|
48
|
+
When you write `foo($$$A, b, $$$C)`, the matcher does **not** backtrack or try every possible split. It fills `$$$A` only until the rest of the pattern can match — the first `b` here — then everything left goes into `$$$C`. On `foo(a, c, b, b, c)` that is `A=[a, c]` and `C=[b, c]`, never the longer `A=[a, c, b]`.
|
|
49
49
|
|
|
50
50
|
```ts
|
|
51
51
|
// Pattern
|
|
@@ -116,11 +116,11 @@ Two tools help you confirm a pattern parses the way you expect:
|
|
|
116
116
|
# Print the AST of the pattern itself
|
|
117
117
|
sg run -p 'console.log($MSG)' --lang ts --debug-query=ast
|
|
118
118
|
|
|
119
|
-
# Print the
|
|
120
|
-
sg run -p '
|
|
119
|
+
# Print the CST of code copied from a file (great for figuring out kind names)
|
|
120
|
+
sg run -p 'function f(x: number) { return x + 1 }' --lang ts --debug-query=cst src/example.ts 2>&1 >/dev/null | head -40
|
|
121
121
|
```
|
|
122
122
|
|
|
123
|
-
`--debug-query=ast` shows the named AST nodes only (cleaner). `--debug-query=cst` shows everything including punctuation. Both
|
|
123
|
+
`--debug-query=ast` shows the named AST nodes only (cleaner). `--debug-query=cst` shows everything including punctuation. Both dump the tree of the **pattern** (not of the searched files) to stderr, so they don't interfere with stdout JSON; redirect `2>&1 >/dev/null` to pipe the dump. To learn a file's node kinds, paste that file's code as the pattern.
|
|
124
124
|
|
|
125
125
|
The web playground is also fast: <https://ast-grep.github.io/playground.html>.
|
|
126
126
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Pitfalls — what breaks patterns and how to fix them
|
|
2
2
|
|
|
3
|
-
This is the failure-mode field guide. The `scripts/ast_grep_helper.py validate` subcommand mechanically checks
|
|
3
|
+
This is the failure-mode field guide. The `scripts/ast_grep_helper.py validate` subcommand mechanically checks the §1 items for backslash escapes, `.*`/`.+`, character classes, and `|` alternation before calling `sg` (it does not detect `^`/`$` anchors), plus the missing-body and trailing-colon cases from §2; the rest are lower-frequency but still common.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -126,9 +126,9 @@ If you actually want two independent captures, name them differently: `$X = $Y`.
|
|
|
126
126
|
|
|
127
127
|
---
|
|
128
128
|
|
|
129
|
-
## 6. `$$$` is
|
|
129
|
+
## 6. `$$$` is lazy and never backtracks
|
|
130
130
|
|
|
131
|
-
`$$$` does **not** backtrack. It
|
|
131
|
+
`$$$` does **not** backtrack. It stops at the first node that lets the rest of the pattern match, then commits — on `foo($$$A, b, $$$C)` against `foo(a, c, b, b, c)`, `$$$A` is `[a, c]`, not `[a, c, b]`. If your pattern needs more to land in `$$$A`, structure it differently:
|
|
132
132
|
|
|
133
133
|
```ts
|
|
134
134
|
// You want "match foo($X), where $X is any single arg"
|
|
@@ -5,11 +5,13 @@ Every pattern in this file has been verified against the canonical syntax. They
|
|
|
5
5
|
Use them with the helper:
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
python3 scripts/ast_grep_helper.py search '<PATTERN>' [path] --lang <LANG>
|
|
9
|
+
python3 scripts/ast_grep_helper.py replace '<PATTERN>' '<REWRITE>' [path] --lang <LANG> # dry-run
|
|
10
|
+
python3 scripts/ast_grep_helper.py replace '<PATTERN>' '<REWRITE>' [path] --lang <LANG> --apply
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
+
Put any `[path]` BEFORE `--lang`: the helper's `paths` argument is `nargs='*'`, and on Python 3.9 (the stock macOS `python3`, which the helper supports) a positional after `--lang` is rejected with `unrecognized arguments`. A pattern or rewrite containing a literal `|` (e.g. `$T | None`) is refused by the helper's alternation check — run two calls, or pass `--force` to reach `sg` anyway.
|
|
14
|
+
|
|
13
15
|
Or directly:
|
|
14
16
|
|
|
15
17
|
```bash
|
|
@@ -132,7 +134,7 @@ sg run -p 'print($$$A)' -r 'logger.info($$$A)' --lang py --update-all .
|
|
|
132
134
|
# Optional[X] -> X | None
|
|
133
135
|
sg run -p 'Optional[$T]' -r '$T | None' --lang py --update-all .
|
|
134
136
|
|
|
135
|
-
# from typing import List ->
|
|
137
|
+
# from typing import List -> annotate for manual removal (built-in list works in 3.9+)
|
|
136
138
|
sg run -p 'from typing import List' -r 'from typing import List # TODO: remove, use list' --lang py --update-all .
|
|
137
139
|
```
|
|
138
140
|
|
|
@@ -488,14 +488,14 @@ ignores:
|
|
|
488
488
|
- '**/__generated__/**'
|
|
489
489
|
```
|
|
490
490
|
|
|
491
|
-
If omitted, the rule runs on every file matching its `language`.
|
|
491
|
+
If omitted, the rule runs on every file matching its `language`. `sgconfig.yml` has no project-wide `files`/`ignores` to override; its `languageGlobs` only changes which language a file parses as. To narrow a whole scan, pass `--globs` to `sg scan`.
|
|
492
492
|
|
|
493
493
|
Object form (rare):
|
|
494
494
|
|
|
495
495
|
```yaml
|
|
496
496
|
files:
|
|
497
|
-
-
|
|
498
|
-
|
|
497
|
+
- glob: 'src/**/*.ts'
|
|
498
|
+
caseInsensitive: true
|
|
499
499
|
```
|
|
500
500
|
|
|
501
501
|
---
|
|
@@ -27,13 +27,13 @@ USAGE
|
|
|
27
27
|
|
|
28
28
|
EXAMPLES
|
|
29
29
|
# Find all console.log calls in TypeScript
|
|
30
|
-
ast_grep_helper.py search 'console.log($MSG)' --lang ts
|
|
30
|
+
ast_grep_helper.py search 'console.log($MSG)' src/ --lang ts
|
|
31
31
|
|
|
32
32
|
# Migrate console.log -> logger.info (dry-run preview)
|
|
33
|
-
ast_grep_helper.py replace 'console.log($MSG)' 'logger.info($MSG)' --lang ts
|
|
33
|
+
ast_grep_helper.py replace 'console.log($MSG)' 'logger.info($MSG)' src/ --lang ts
|
|
34
34
|
|
|
35
35
|
# Apply the same replacement
|
|
36
|
-
ast_grep_helper.py replace 'console.log($MSG)' 'logger.info($MSG)' --lang ts
|
|
36
|
+
ast_grep_helper.py replace 'console.log($MSG)' 'logger.info($MSG)' src/ --lang ts --apply
|
|
37
37
|
|
|
38
38
|
# Validate a pattern offline (no sg call, no filesystem access)
|
|
39
39
|
ast_grep_helper.py validate '\\w+' --lang ts
|
|
@@ -117,9 +117,8 @@ changing the extension's automation settings.
|
|
|
117
117
|
out everywhere. No flow here needs it.
|
|
118
118
|
- **`focused: false` by default.** The browser belongs to someone who is probably using it.
|
|
119
119
|
- **One short, named session per task,** always stopped.
|
|
120
|
-
- **Bot-scored or WAF targets go
|
|
121
|
-
capture on every tab it drives, which is a known automation signal
|
|
122
|
-
`connectCloakProfile()` is the stealth path.
|
|
120
|
+
- **Bot-scored or WAF targets never go through the attached engine** — route them to the `ultimate-browsing` skill, whose browser tier is the owned engine (`connectCloakProfile()`). The attached engine's daemon enables console
|
|
121
|
+
capture on every tab it drives, which is a known automation signal.
|
|
123
122
|
|
|
124
123
|
## Where the rest lives
|
|
125
124
|
|
|
@@ -58,5 +58,5 @@ or text), not a timer; `goto(url, { waitUntil: "commit" })` is the escape hatch
|
|
|
58
58
|
- [network.md](network.md) — `createNetworkSnoop`, `collectWhileScrolling`, `createTrace`, `createRoutes`
|
|
59
59
|
- [frames-and-humans.md](frames-and-humans.md) — `snapshotWithFrames`, `describeLayers`, dialog policy, `emulate`, `requestHuman`
|
|
60
60
|
|
|
61
|
-
The
|
|
61
|
+
The omowright repository's own agent guide and its `presets/*`
|
|
62
62
|
is the authoritative, longer treatment of each; these pages are the routing summary.
|
|
@@ -60,4 +60,4 @@ python3 -B scripts/find-agent-sessions.py read <session-id>
|
|
|
60
60
|
pytest scripts/tests
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
-
- Parent:
|
|
63
|
+
- Parent (source checkout only, not shipped with the installed skill): `packages/shared-skills/AGENTS.md`.
|
|
@@ -80,10 +80,11 @@ Each `match_reasons` entry includes `query`, `platform`, `field`, and `snippet`,
|
|
|
80
80
|
| `--cwd` | Working-directory substring |
|
|
81
81
|
| `--model` | Model substring |
|
|
82
82
|
| `--limit` | Maximum results |
|
|
83
|
-
| `--query` | Repeatable search query; multiple queries return per-query groups plus a de-duplicated merged result list |
|
|
84
83
|
| `--workers` | Parallel worker count for platform scans, transcript parsing, OpenCode message joins, and multi-query matching |
|
|
85
84
|
| `--include-subagents` | Include subagent/child sessions as standalone `list`/`search` results (hidden by default) |
|
|
86
85
|
|
|
86
|
+
`search` (alias `find`) also takes `--query`: a repeatable search query; multiple queries return per-query groups plus a de-duplicated merged result list. `list` ignores `--query` and positional text.
|
|
87
|
+
|
|
87
88
|
When `--platform` is omitted, the finder searches every registered platform in parallel. Each optional platform first probes fixed, known transcript roots and returns immediately when the product has no local store, so broad default searches stay cheap. Use repeatable flags such as `--platform openclaw --platform droid` only when narrowing. Comma-separated platform values are intentionally unsupported.
|
|
88
89
|
|
|
89
90
|
For OpenCode, the finder uses `opencode db path` plus direct SQLite queries first, then `opencode session list --format json` as a fallback. It avoids heavy `messages/` or `parts/` scans during normal list/search, and only falls back to file joins when the OpenCode DB/CLI is unavailable or explicit `--root` values request a nonstandard store.
|
|
@@ -42,8 +42,9 @@ Per-surface patterns and pitfalls: read `references/execution-surfaces.md` befor
|
|
|
42
42
|
older spellings.
|
|
43
43
|
- **numpy** when numeric work goes beyond SQL/DataFrame aggregation: statistical tests,
|
|
44
44
|
linear algebra, FFT, random sampling.
|
|
45
|
-
- **matplotlib** for
|
|
46
|
-
|
|
45
|
+
- **matplotlib** for charts in a kernel, a file or a document; a chart shown inline beside a
|
|
46
|
+
reply is drawn in HTML instead. Read `references/visualization.md` first either way; it
|
|
47
|
+
carries the quality bar, the inline case and a mandatory visual check.
|
|
47
48
|
|
|
48
49
|
Performance folklore ("X is Nx faster at filtering") varies with data shape, cardinality,
|
|
49
50
|
and hardware. When the engine choice materially matters, measure on the actual data instead
|
|
@@ -65,10 +66,11 @@ a direct scan. Then place the work:
|
|
|
65
66
|
takes longer.
|
|
66
67
|
- **Query remotely, in place** when the data lives elsewhere: DuckDB reads http(s)/S3
|
|
67
68
|
Parquet and CSV with projection and predicate pushdown, so fetch the columns and rows the
|
|
68
|
-
question needs, never the whole file. When data sits
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
data
|
|
69
|
+
question needs, never the whole file. When data sits in a database, run the aggregation
|
|
70
|
+
there in its own SQL and pull back the result rows, never a table dump. When data sits on
|
|
71
|
+
another machine you can execute on, ship the query to the data and return the small
|
|
72
|
+
result. Rule: result much smaller than data — move the query; repeated local iteration
|
|
73
|
+
planned — move a pruned copy of the data once.
|
|
72
74
|
|
|
73
75
|
Sizing heuristics and recipes: `references/placement.md`.
|
|
74
76
|
|
|
@@ -8,13 +8,17 @@ ten times) or kills the machine (loading a dataset larger than RAM and swapping)
|
|
|
8
8
|
Three facts, one cell or script:
|
|
9
9
|
|
|
10
10
|
```python
|
|
11
|
-
import os, shutil, subprocess, sys
|
|
11
|
+
import os, re, shutil, subprocess, sys
|
|
12
12
|
size = os.path.getsize("data.csv") # bytes on disk
|
|
13
13
|
disk_free = shutil.disk_usage(".").free # spill headroom
|
|
14
|
-
if sys.platform == "darwin":
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
if sys.platform == "darwin": # free RAM = free + inactive + speculative pages
|
|
15
|
+
vm = subprocess.run(["vm_stat"], capture_output=True, text=True).stdout
|
|
16
|
+
page = int(re.search(r"page size of (\d+)", vm).group(1))
|
|
17
|
+
ram_free = page * sum(int(re.search(rf"{k}:\s+(\d+)", vm).group(1))
|
|
18
|
+
for k in ("Pages free", "Pages inactive", "Pages speculative"))
|
|
19
|
+
else: # Linux: MemAvailable
|
|
20
|
+
ram_free = next(int(line.split()[1]) * 1024 for line in open("/proc/meminfo")
|
|
21
|
+
if line.startswith("MemAvailable:"))
|
|
18
22
|
# row estimate without loading (DuckDB streams the scan):
|
|
19
23
|
# duckdb.sql("SELECT count(*) FROM 'data.csv'")
|
|
20
24
|
```
|
|
@@ -6,10 +6,10 @@ This skill's uv lane (kernel-less harnesses, isolated one-shots) runs through `u
|
|
|
6
6
|
|
|
7
7
|
| Platform | Command |
|
|
8
8
|
|---|---|
|
|
9
|
-
| macOS / Linux / WSL
|
|
10
|
-
| Windows (PowerShell) | `powershell -ExecutionPolicy Bypass -File scripts/setup-uv.ps1` |
|
|
9
|
+
| macOS / Linux / WSL | `bash scripts/setup-uv.sh` |
|
|
10
|
+
| Windows (PowerShell; also from Git Bash, where `setup-uv.sh` exits) | `powershell -ExecutionPolicy Bypass -File scripts/setup-uv.ps1` |
|
|
11
11
|
|
|
12
|
-
Both scripts: detect OS + architecture → install uv to the latest release when missing → upgrade it when present (`uv self update`) → make it resolvable for the
|
|
12
|
+
Both scripts: detect OS + architecture → install uv to the latest release when missing → upgrade it when present (`uv self update`) → make it resolvable for the script's own `uv --version` check (an already-open shell still needs the PATH line below) → verify with `uv --version`. They are idempotent — safe to re-run any time.
|
|
13
13
|
|
|
14
14
|
## Manual install per platform
|
|
15
15
|
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
# Visualization
|
|
2
2
|
|
|
3
|
-
A chart exists to answer a question at a glance.
|
|
4
|
-
|
|
3
|
+
A chart exists to answer a question at a glance. A chart shown inline beside a reply
|
|
4
|
+
(`show_html_page`, `html_preview`, `html_render`) is drawn in HTML, never as a matplotlib PNG:
|
|
5
|
+
an image ignores the reader's theme and width. When the `visualize` skill is available, it builds
|
|
6
|
+
that page. There this file's chart-type table, Figures and Quality bar apply, and the matplotlib
|
|
7
|
+
calls do not. Everywhere else (a kernel, a file, a document) render it with matplotlib (resident
|
|
8
|
+
in most Python kernels; `uv run --with matplotlib` otherwise). Either way, look at it before delivering —
|
|
5
9
|
a chart nobody inspected is not evidence.
|
|
6
10
|
|
|
7
11
|
## When to chart
|
|
@@ -22,6 +26,15 @@ question — decoration dilutes the answer.
|
|
|
22
26
|
| Composition of a whole? | stacked or 100% bar — pie only for four or fewer slices |
|
|
23
27
|
| Many series over time? | small multiples over one spaghetti chart |
|
|
24
28
|
|
|
29
|
+
## Figures — every chart
|
|
30
|
+
|
|
31
|
+
- **Days start at the reader's midnight.** Cut daily, weekly and monthly buckets in the
|
|
32
|
+
reader's time zone, not UTC, and name the zone in the axis label or caption. A bucket still
|
|
33
|
+
filling (today, this week) is marked partial on its own bar, or it reads as a drop.
|
|
34
|
+
- **Cross-check one figure.** Recompute a headline number from a second source (another
|
|
35
|
+
table, the system's own dashboard, a raw count) and say beside the chart whether it
|
|
36
|
+
matched, and by how much it differed if not.
|
|
37
|
+
|
|
25
38
|
## Quality bar — every chart
|
|
26
39
|
|
|
27
40
|
- Title states the finding ("Seoul overtook Busan in March"), not the dataset name.
|
|
@@ -51,8 +64,10 @@ matplotlib.rcParams["axes.unicode_minus"] = False # keeps the minus sign rende
|
|
|
51
64
|
|
|
52
65
|
## Output contract
|
|
53
66
|
|
|
54
|
-
1.
|
|
55
|
-
|
|
67
|
+
1. Inline page beside a reply: no PNG. Draw the computed figures in HTML and preview them in
|
|
68
|
+
both themes, following the `visualize` skill when it is available.
|
|
69
|
+
2. Otherwise save a PNG next to the work: `plt.savefig(path, dpi=150, bbox_inches="tight")`,
|
|
70
|
+
and also render it inline when the surface displays rich output (kernels usually do).
|
|
56
71
|
3. Report the file path together with the answer.
|
|
57
72
|
|
|
58
73
|
## Visual QA — mandatory
|
|
@@ -26,7 +26,7 @@ The rest of this file is a map. **The knowledge is in `references/`.** This file
|
|
|
26
26
|
|
|
27
27
|
## Runtime Setup — MANDATORY READING BEFORE ATTACHING
|
|
28
28
|
|
|
29
|
-
The methodology is language-agnostic. The commands to launch, attach, breakpoint, and inspect are not. **Open the matching reference
|
|
29
|
+
The methodology is language-agnostic. The commands to launch, attach, breakpoint, and inspect are not. **Open the matching reference the moment you know the runtime (Phase 0, step 2) and before you attach anything. Not after.**
|
|
30
30
|
|
|
31
31
|
| Your runtime is… | Open this before attaching anything | Non-negotiable because… |
|
|
32
32
|
|---|---|---|
|
|
@@ -39,7 +39,7 @@ The methodology is language-agnostic. The commands to launch, attach, breakpoint
|
|
|
39
39
|
|
|
40
40
|
**If you cannot honestly say you just opened the reference for your runtime, open it now.**
|
|
41
41
|
|
|
42
|
-
> 🚨 **Native binary vs bundled binary — check before committing**: `file ./target` calls them both Mach-O / ELF. The 30-second discriminator is `du -h ./target` (50 MB+ suspect bundled) plus `strings -n 12 ./target | rg -
|
|
42
|
+
> 🚨 **Native binary vs bundled binary — check before committing**: `file ./target` calls them both Mach-O / ELF. The 30-second discriminator is `du -h ./target` (50 MB+ suspect bundled) plus `strings -n 12 ./target | rg -i 'bun|node_modules|webpack|esbuild|deno|pkg/lib|electron|pyinstaller|nexe|NODE_SEA_FUSE|tauri'`. If hits → bundled-js-binary.md. If clean → native-binary.md.
|
|
43
43
|
|
|
44
44
|
---
|
|
45
45
|
|
|
@@ -56,7 +56,7 @@ These are not "optional extras". They are the correct tool in their domain, and
|
|
|
56
56
|
| **Frida** | Any running process you must instrument live without source or symbols — hook a function and print real argument values, trace calls, stub a return. Complements Ghidra: Ghidra reads the bytes, Frida watches them execute. **If Ghidra's static decompile has hit its limit, reach for Frida.** | 📖 **[references/tools/frida.md](references/tools/frida.md)** |
|
|
57
57
|
| **DAP client (`dap.mjs`)** | Any time you would drive a debugger through a PTY and screen-scrape its text. Debuggers already speak the machine-readable Debug Adapter Protocol (debugpy, `dlv dap`, lldb-dap, js-debug); this bundled script drives it with bounded, monitorable output. **Prefer it over scraping `gdb`/`pdb` whenever the debugger speaks DAP.** Design modeled on oh-my-pi's `debug` tool (github.com/can1357/oh-my-pi). | 📖 **[references/tools/dap.md](references/tools/dap.md)** |
|
|
58
58
|
|
|
59
|
-
**Failing to use these tools in their domain is a process failure, not a stylistic choice.** If the bug is in a browser and you did Phase 8 without
|
|
59
|
+
**Failing to use these tools in their domain is a process failure, not a stylistic choice.** If the bug is in a browser and you did Phase 8 without omowright, you are doing it wrong. If the bug is in a stripped binary and you read hex with `xxd`, you are doing it wrong. The references tell you how. Read them.
|
|
60
60
|
|
|
61
61
|
---
|
|
62
62
|
|
|
@@ -74,8 +74,8 @@ Each phase has exactly one reference. Read it as you enter the phase — not in
|
|
|
74
74
|
| 5 | **User decision escalation** — only when evidence exhausted and the call has policy implications | [references/methodology/05-escalate.md](references/methodology/05-escalate.md) |
|
|
75
75
|
| 6 | **Root cause confirmation** — confirmed only when toggling the suspected cause toggles the bug | [references/methodology/06-fix.md](references/methodology/06-fix.md) |
|
|
76
76
|
| 7 | **Fix locked by a failing proof** — reuse the owner test that already fails or add one regression that fails on the pre-fix code, minimal green, no scope expansion | [references/methodology/06-fix.md](references/methodology/06-fix.md) |
|
|
77
|
-
| 8 | **Manual QA** — actually use the system (tmux for CLI,
|
|
78
|
-
| 9 | **Cleanup** — walk the journal, revert every artifact, verify `git diff` shows only fix + test | [references/methodology/09-cleanup.md](references/methodology/09-cleanup.md) |
|
|
77
|
+
| 8 | **Manual QA** — actually use the system (tmux for CLI, omowright for browser, real curl for API, real repro for binary) | [references/methodology/08-qa.md](references/methodology/08-qa.md) |
|
|
78
|
+
| 9 | **Cleanup** — walk the journal, revert every artifact, verify `git diff` shows only fix + test (plus any Phase 7 oversized-file split) | [references/methodology/09-cleanup.md](references/methodology/09-cleanup.md) |
|
|
79
79
|
| 10 | **Final verification** — four evidence gates before declaring done | [references/methodology/09-cleanup.md](references/methodology/09-cleanup.md) |
|
|
80
80
|
|
|
81
81
|
**Phase references are short by design.** Reading one takes a minute. Skipping one costs an hour.
|
|
@@ -66,7 +66,7 @@ Branch depending on what's available.
|
|
|
66
66
|
|
|
67
67
|
When the `team_*` tools are present, create a **debug-squad** team and split investigation across members working on different evidence sources. This is the right default whenever you have ≥3 hypotheses and any of them would take >10 minutes to investigate single-threaded.
|
|
68
68
|
|
|
69
|
-
**Team spec** — write to
|
|
69
|
+
**Team spec** — write to `.omo/teams/debug-squad/config.json` under the project root (the project-scoped spec location the team loader reads):
|
|
70
70
|
|
|
71
71
|
```json
|
|
72
72
|
{
|
|
@@ -86,7 +86,7 @@ When the `team_*` tools are present, create a **debug-squad** team and split inv
|
|
|
86
86
|
{
|
|
87
87
|
"kind": "category",
|
|
88
88
|
"category": "deep-low",
|
|
89
|
-
"prompt": "You are the Reproduction Engineer. Your job: build the smallest reliable repro — a curl command, a vitest/pytest/go test, a tmux script,
|
|
89
|
+
"prompt": "You are the Reproduction Engineer. Your job: build the smallest reliable repro — a curl command, a vitest/pytest/go test, a tmux script, an omowright script for browser bugs, a pwntools script for binary targets. It must reproduce on first try and be copy-pasteable by the Lead. Document exact input, expected output, observed output. Save repro artifacts under /tmp/ and tell the Lead to journal them. If the bug is browser-based you MUST drive a real browser through omowright (references/tools/browser-qa.md) — do not simulate with curl."
|
|
90
90
|
},
|
|
91
91
|
{
|
|
92
92
|
"kind": "category",
|
|
@@ -100,6 +100,8 @@ Only cleanup directly related to the fix. Do not re-architect.
|
|
|
100
100
|
|
|
101
101
|
If the code around the fix is rough, note it in the journal as a follow-up for the user; do not expand scope here. Refactoring during a bugfix is how one-line fixes turn into hundred-line diffs nobody can review.
|
|
102
102
|
|
|
103
|
+
**The one carve-out, and it runs before step 2, not after green:** if the fix must add lines to a file that already exceeds the `programming` skill's 250 pure-LOC ceiling (its DEFECT row forbids new lines in that file), first extract the unit you are touching into its own file as a separate, behavior-preserving move (the red test still fails for the same reason, every other test still passes), journal it, then make the minimal fix in the extracted file. The `programming` skill's SIZE_OK and pure-data-table exceptions still apply. That split ships with the fix; any other rough code stays a follow-up.
|
|
104
|
+
|
|
103
105
|
### 4. Regression — full suite green
|
|
104
106
|
|
|
105
107
|
Run the full test suite for the affected package (not just the one new test). Existing tests must still pass.
|
|
@@ -108,13 +108,13 @@ Last gate before reporting done. All four gates must be true, and all four must
|
|
|
108
108
|
|
|
109
109
|
### The four gates
|
|
110
110
|
|
|
111
|
-
1. **Red→green toggle confirmed** — show the failing test output from before the fix and passing output after. Both outputs visible in the
|
|
111
|
+
1. **Red→green toggle confirmed** — show the failing test output from before the fix and passing output after. Both outputs visible in the final message (the journal was removed in Phase 9).
|
|
112
112
|
|
|
113
113
|
2. **Full test suite green** — show the suite's final pass line (e.g. `42 passed in 3.14s`). Not just the new test.
|
|
114
114
|
|
|
115
115
|
3. **Manual QA reproduced the fix** — show the command or scenario that originally failed and its now-correct output. Verbatim, not paraphrased.
|
|
116
116
|
|
|
117
|
-
4. **Working tree clean of debug artifacts** — show `git diff --stat` output containing only fix + test, plus `git status` clean of untracked debug files.
|
|
117
|
+
4. **Working tree clean of debug artifacts** — show `git diff --stat` output containing only fix + test (plus the Phase 7 oversized-file split, if one was required), plus `git status` clean of untracked debug files.
|
|
118
118
|
|
|
119
119
|
If any of the four lacks evidence, you have not finished — return to the appropriate phase.
|
|
120
120
|
|
package/packages/shared-skills/skills/debugging/references/methodology/partial-runtime-evidence.md
CHANGED
|
@@ -59,7 +59,7 @@ HTTPS_PROXY=http://127.0.0.1:8888 SSL_CERT_FILE=~/.mitmproxy/mitmproxy-ca-cert.p
|
|
|
59
59
|
```bash
|
|
60
60
|
# DYLD_INSERT_LIBRARIES / LD_PRELOAD shim approach
|
|
61
61
|
# Wrap the network call to log payload, return a fake 200
|
|
62
|
-
# See
|
|
62
|
+
# See ../runtimes/native-binary.md (DYLD_INSERT_LIBRARIES interception; "Option C: Wrap / shim") for shim examples
|
|
63
63
|
```
|
|
64
64
|
|
|
65
65
|
**Strength**: Wire-level ground truth, but requires the target to honor your proxy / preload.
|
|
@@ -41,7 +41,7 @@ Step 3 is the unlock — once you have plaintext source on disk, the rest is nor
|
|
|
41
41
|
|
|
42
42
|
```bash
|
|
43
43
|
# Look for runtime-specific markers in plaintext strings
|
|
44
|
-
strings -n 12 ./target 2>/dev/null | rg -
|
|
44
|
+
strings -n 12 ./target 2>/dev/null | rg -i 'bun|node_modules|webpack|esbuild|deno|pkg/lib|electron|pyinstaller|nexe|NODE_SEA_FUSE|NODE_SEA_BLOB|tauri|ESZIP_V2|denort' | head -20
|
|
45
45
|
```
|
|
46
46
|
|
|
47
47
|
| Marker pattern | Bundler | Source format |
|
|
@@ -20,7 +20,7 @@ Quick check:
|
|
|
20
20
|
```bash
|
|
21
21
|
file ./target # Mach-O / ELF / PE - inconclusive
|
|
22
22
|
du -h ./target # 50 MB+ for a "simple CLI" → suspect bundled
|
|
23
|
-
strings -n 12 ./target | rg -
|
|
23
|
+
strings -n 12 ./target | rg -i 'bun|node_modules|webpack|esbuild|deno|pkg/lib|electron|pyinstaller|nexe|NODE_SEA_FUSE|tauri' | head -5
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
**If any hits** → close this file, open [bundled-js-binary.md](bundled-js-binary.md) instead. Following the Ghidra/pwndbg path on a bundled-app binary wastes hours decompiling the runtime VM while the app-level bundle is recoverable with the right per-bundler tool (plaintext for Bun/pkg/nexe/Electron-asar; eszip / V8-cache / `.pyc` for Deno / Node SEA / PyInstaller).
|
|
@@ -25,8 +25,6 @@ const profile = mkdtempSync(join(tmpdir(), "debug-repro-"))
|
|
|
25
25
|
const browser = await omowright.connectPipe({ browserPath, browserArgs: ["--headless", `--user-data-dir=${profile}`], storageRoot: profile })
|
|
26
26
|
const page = await browser.newTab("about:blank")
|
|
27
27
|
const trace = omowright.createTrace(page, { dir: traceDir }) // trace.jsonl + trace.har + before/after screenshots
|
|
28
|
-
const consoleErrors = []
|
|
29
|
-
page.on("console", (entry) => { if (entry.type === "error") consoleErrors.push(entry.text) })
|
|
30
28
|
try {
|
|
31
29
|
await trace.step("open", () => page.goto(url, { waitUntil: "load" }))
|
|
32
30
|
await trace.step("submit", async () => {
|
|
@@ -36,6 +34,7 @@ try {
|
|
|
36
34
|
await page.waitForURL(/\/done/, { timeout: 10_000 })
|
|
37
35
|
})
|
|
38
36
|
await Bun.write(pngPath, await page.screenshot())
|
|
37
|
+
const consoleErrors = (await page.console.logs({ levels: ["error"] })).map((entry) => entry.message)
|
|
39
38
|
} finally {
|
|
40
39
|
await trace.stop()
|
|
41
40
|
await browser.close()
|
|
@@ -5,7 +5,7 @@ description: "Builds, styles, and polishes anything drawn with HTML, CSS, or SVG
|
|
|
5
5
|
|
|
6
6
|
# Frontend
|
|
7
7
|
|
|
8
|
-
This file is a router over `references/`; the rules live there. The flow is ground -> brief -> build -> subtract -> verify. The bar is restraint with a visible hierarchy: one primary action, the important thing first, nothing on the screen without a job. A quiet, correct screen that holds its hierarchy at 390 and 1440 in both themes is a finish. Atmosphere, motion, and award-grade surface work are opt-in: build them when the brief asks (a named brand, "premium", "make it stunning", a marketing page), never by default for an internal tool, dashboard, admin screen, report, or figure.
|
|
8
|
+
This file is a router over `references/`; the rules live there. The flow is ground -> brief -> build -> subtract -> verify. The bar is restraint with a visible hierarchy: one primary action, the important thing first, nothing on the screen without a job. A quiet, correct screen that holds its hierarchy at 390 and 1440 in both themes is a finish. Atmosphere, motion, and award-grade surface work are opt-in: build them when the brief asks (a named brand, "premium", "make it stunning", a marketing page), never by default for an internal tool, dashboard, admin screen, report, or figure. An inline page shown beside a reply (a chart, table, or diagram for `show_html_page`, `html_preview`, or `html_render`) follows the `visualize` skill when it is available; either way it is exempt from the `DESIGN.md` gate, the Lighthouse audit, and the research lanes, and keeps the build rules, the Draft guard, and the lint.
|
|
9
9
|
|
|
10
10
|
## Route: name the references, read exactly those
|
|
11
11
|
|
|
@@ -119,7 +119,7 @@ Layer A (pick AT MOST ONE style skill; they encode opposing philosophies):
|
|
|
119
119
|
| `layout-skill.md` / `interaction-skill.md` / `ambience-skill.md` | Stack on any style skill; mechanics only, no visual direction. |
|
|
120
120
|
| `imagegen-frontend-web.md` / `imagegen-frontend-mobile.md` / `imagegen-brandkit.md` | Image-only output; never code. |
|
|
121
121
|
|
|
122
|
-
Layer B: when the user names a brand or site ("Linear-style", "like Stripe's landing", "Aside-style browser agent"), load `references/design/<brand>.md` as the token source of truth: `aside` `apple` `stripe` `linear.app` `notion` `vercel` `claude` `figma` `airbnb` `nike` `tesla` `spotify` `raycast` `revolut` and ~56 more in `_INDEX.md`. Extract the tokens and apply them to the project's own content; never copy logos or trademarked imagery. A missing brand falls back to a Layer A mood match or the
|
|
122
|
+
Layer B: when the user names a brand or site ("Linear-style", "like Stripe's landing", "Aside-style browser agent"), load `references/design/<brand>.md` as the token source of truth: `aside` `apple` `stripe` `linear.app` `notion` `vercel` `claude` `figma` `airbnb` `nike` `tesla` `spotify` `raycast` `revolut` and ~56 more in `_INDEX.md`. Extract the tokens and apply them to the project's own content; never copy logos or trademarked imagery. A missing brand falls back to a Layer A mood match or to the nexu-io/open-design library (https://github.com/nexu-io/open-design).
|
|
123
123
|
|
|
124
124
|
`perfection/`: `README.md` (the seven tenets: real-browser audits only, 100 in every category, fix at the architecture, never weaken UX for points, design-system compliance, the audit report format) and `react-perf-tooling.md` (Playwright + `playwright-lighthouse` + `react-scan/lite` injection, per-route render budgets). Audit CLI, production build only, mobile and desktop presets, 3-5 runs, take the median:
|
|
125
125
|
|
|
@@ -131,7 +131,7 @@ uv run $SKILL_DIR/scripts/perfection/lighthouse-audit.py https://localhost:3000
|
|
|
131
131
|
|
|
132
132
|
```bash
|
|
133
133
|
python3 -B $SKILL_DIR/references/ui-ux-db/scripts/search.py "<query>" --design-system -p "Project" # design-system generation
|
|
134
|
-
python3 -B $SKILL_DIR/references/ui-ux-db/scripts/search.py "<query>" --domain <domain> # product style typography color landing chart ux react web
|
|
134
|
+
python3 -B $SKILL_DIR/references/ui-ux-db/scripts/search.py "<query>" --domain <domain> # product style typography color landing chart ux react web icons google-fonts
|
|
135
135
|
python3 -B $SKILL_DIR/references/ui-ux-db/scripts/search.py "<query>" --stack <stack> # html-tailwind react nextjs vue svelte astro swiftui react-native flutter shadcn jetpack-compose
|
|
136
136
|
```
|
|
137
137
|
|
|
@@ -141,7 +141,7 @@ python3 -B $SKILL_DIR/references/ui-ux-db/scripts/search.py "<query>" --stack <s
|
|
|
141
141
|
|
|
142
142
|
| Situation | Load |
|
|
143
143
|
|---|---|
|
|
144
|
-
| Brand/style not among the 70 in `references/design/`, or the user says "Open Design" |
|
|
144
|
+
| Brand/style not among the 70 in `references/design/`, or the user says "Open Design" | The nexu-io/open-design library (https://github.com/nexu-io/open-design; 137+ design skills, 150+ design systems) |
|
|
145
145
|
| Driving a browser for captures | `visual-qa` skill: omowright from js eval (owned engine for renders, attached engine for signed-in pages) |
|
|
146
146
|
| Pure TypeScript/logic work with zero visual surface | `programming` skill alone; this skill adds nothing there |
|
|
147
147
|
|