oh-my-opencode 4.12.1 → 4.13.0
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/README.md +1 -1
- package/THIRD-PARTY-NOTICES.md +1 -1
- package/dist/agents/sisyphus-agent-factory.d.ts +9 -0
- package/dist/agents/sisyphus-runtime-prompt-reconciler.d.ts +31 -0
- package/dist/cli/index.js +896 -669
- package/dist/cli-node/index.js +896 -669
- package/dist/config/schema/codegraph.d.ts +1 -0
- package/dist/config/schema/oh-my-opencode-config.d.ts +2 -0
- package/dist/config/schema/runtime-fallback.d.ts +1 -0
- package/dist/features/background-agent/background-task-marker.d.ts +8 -0
- package/dist/features/background-agent/fallback-retry-handler.d.ts +1 -0
- package/dist/features/background-agent/manager.d.ts +1 -0
- package/dist/features/background-agent/parent-wake-dedupe.d.ts +1 -0
- package/dist/features/background-agent/parent-wake-notifier-types.d.ts +2 -0
- package/dist/features/background-agent/parent-wake-notifier.d.ts +1 -0
- package/dist/features/background-agent/parent-wake-window-recovery.d.ts +2 -0
- package/dist/hooks/runtime-fallback/auto-retry-dispatch.d.ts +2 -2
- package/dist/hooks/runtime-fallback/auto-retry-timeout.d.ts +2 -2
- package/dist/hooks/runtime-fallback/auto-retry.d.ts +1 -1
- package/dist/hooks/runtime-fallback/fallback-state-snapshot.d.ts +13 -0
- package/dist/hooks/runtime-fallback/types.d.ts +8 -0
- package/dist/index.js +708 -413
- package/dist/oh-my-opencode.schema.json +8 -0
- package/dist/plugin/runtime-skill-resolver.d.ts +35 -0
- package/dist/plugin/skill-context.d.ts +9 -0
- package/dist/skills/frontend/ATTRIBUTION.md +32 -8
- package/dist/skills/frontend/references/design/airbnb.md +3 -0
- package/dist/skills/frontend/references/design/airtable.md +3 -0
- package/dist/skills/frontend/references/design/apple.md +3 -0
- package/dist/skills/frontend/references/design/binance.md +3 -0
- package/dist/skills/frontend/references/design/bmw.md +3 -0
- package/dist/skills/frontend/references/design/bugatti.md +3 -0
- package/dist/skills/frontend/references/design/cal.md +3 -0
- package/dist/skills/frontend/references/design/claude.md +3 -0
- package/dist/skills/frontend/references/design/clay.md +3 -0
- package/dist/skills/frontend/references/design/clickhouse.md +3 -0
- package/dist/skills/frontend/references/design/cohere.md +3 -0
- package/dist/skills/frontend/references/design/coinbase.md +3 -0
- package/dist/skills/frontend/references/design/composio.md +3 -0
- package/dist/skills/frontend/references/design/cursor.md +3 -0
- package/dist/skills/frontend/references/design/elevenlabs.md +3 -0
- package/dist/skills/frontend/references/design/expo.md +3 -0
- package/dist/skills/frontend/references/design/ferrari.md +3 -0
- package/dist/skills/frontend/references/design/figma.md +3 -0
- package/dist/skills/frontend/references/design/framer.md +3 -0
- package/dist/skills/frontend/references/design/hashicorp.md +3 -0
- package/dist/skills/frontend/references/design/ibm.md +3 -0
- package/dist/skills/frontend/references/design/imagegen-frontend-web.md +380 -79
- package/dist/skills/frontend/references/design/intercom.md +3 -0
- package/dist/skills/frontend/references/design/kraken.md +3 -0
- package/dist/skills/frontend/references/design/lamborghini.md +3 -0
- package/dist/skills/frontend/references/design/linear.app.md +3 -0
- package/dist/skills/frontend/references/design/lovable.md +3 -0
- package/dist/skills/frontend/references/design/mastercard.md +3 -0
- package/dist/skills/frontend/references/design/meta.md +3 -0
- package/dist/skills/frontend/references/design/minimax.md +3 -0
- package/dist/skills/frontend/references/design/mintlify.md +3 -0
- package/dist/skills/frontend/references/design/miro.md +3 -0
- package/dist/skills/frontend/references/design/mistral.ai.md +3 -0
- package/dist/skills/frontend/references/design/mongodb.md +3 -0
- package/dist/skills/frontend/references/design/nike.md +3 -0
- package/dist/skills/frontend/references/design/notion.md +3 -0
- package/dist/skills/frontend/references/design/nvidia.md +3 -0
- package/dist/skills/frontend/references/design/ollama.md +3 -0
- package/dist/skills/frontend/references/design/opencode.ai.md +3 -0
- package/dist/skills/frontend/references/design/pinterest.md +3 -0
- package/dist/skills/frontend/references/design/playstation.md +3 -0
- package/dist/skills/frontend/references/design/posthog.md +3 -0
- package/dist/skills/frontend/references/design/raycast.md +3 -0
- package/dist/skills/frontend/references/design/renault.md +3 -0
- package/dist/skills/frontend/references/design/replicate.md +3 -0
- package/dist/skills/frontend/references/design/resend.md +3 -0
- package/dist/skills/frontend/references/design/revolut.md +3 -0
- package/dist/skills/frontend/references/design/runwayml.md +3 -0
- package/dist/skills/frontend/references/design/sanity.md +3 -0
- package/dist/skills/frontend/references/design/sentry.md +3 -0
- package/dist/skills/frontend/references/design/shopify.md +3 -0
- package/dist/skills/frontend/references/design/spacex.md +3 -0
- package/dist/skills/frontend/references/design/spotify.md +3 -0
- package/dist/skills/frontend/references/design/starbucks.md +3 -0
- package/dist/skills/frontend/references/design/stitch-skill.md +1 -1
- package/dist/skills/frontend/references/design/stripe.md +3 -0
- package/dist/skills/frontend/references/design/supabase.md +3 -0
- package/dist/skills/frontend/references/design/superhuman.md +3 -0
- package/dist/skills/frontend/references/design/taste-skill.md +1188 -208
- package/dist/skills/frontend/references/design/tesla.md +3 -0
- package/dist/skills/frontend/references/design/theverge.md +3 -0
- package/dist/skills/frontend/references/design/together.ai.md +3 -0
- package/dist/skills/frontend/references/design/uber.md +3 -0
- package/dist/skills/frontend/references/design/vercel.md +3 -0
- package/dist/skills/frontend/references/design/vodafone.md +3 -0
- package/dist/skills/frontend/references/design/voltagent.md +3 -0
- package/dist/skills/frontend/references/design/warp.md +3 -0
- package/dist/skills/frontend/references/design/webflow.md +3 -0
- package/dist/skills/frontend/references/design/wired.md +3 -0
- package/dist/skills/frontend/references/design/wise.md +3 -0
- package/dist/skills/frontend/references/design/x.ai.md +3 -0
- package/dist/skills/frontend/references/design/zapier.md +3 -0
- package/dist/skills/frontend/references/ui-ux-db/README.md +501 -115
- package/dist/skills/frontend/references/ui-ux-db/data/charts.csv +26 -26
- package/dist/skills/frontend/references/ui-ux-db/data/colors.csv +162 -97
- package/dist/skills/frontend/references/ui-ux-db/data/icons.csv +105 -100
- package/dist/skills/frontend/references/ui-ux-db/data/landing.csv +22 -18
- package/dist/skills/frontend/references/ui-ux-db/data/products.csv +162 -97
- package/dist/skills/frontend/references/ui-ux-db/data/stacks/flutter.csv +53 -53
- package/dist/skills/frontend/references/ui-ux-db/data/stacks/html-tailwind.csv +56 -56
- package/dist/skills/frontend/references/ui-ux-db/data/stacks/nextjs.csv +53 -53
- package/dist/skills/frontend/references/ui-ux-db/data/stacks/react.csv +54 -54
- package/dist/skills/frontend/references/ui-ux-db/data/stacks/svelte.csv +54 -54
- package/dist/skills/frontend/references/ui-ux-db/data/stacks/swiftui.csv +51 -51
- package/dist/skills/frontend/references/ui-ux-db/data/stacks/vue.csv +50 -50
- package/dist/skills/frontend/references/ui-ux-db/data/styles.csv +17 -0
- package/dist/skills/frontend/references/ui-ux-db/data/typography.csv +17 -1
- package/dist/skills/frontend/references/ui-ux-db/data/ui-reasoning.csv +162 -101
- package/dist/skills/frontend/references/ui-ux-db/data/web-interface.csv +30 -30
- package/dist/skills/frontend/references/ui-ux-db/scripts/core.py +31 -22
- package/dist/skills/frontend/references/ui-ux-db/scripts/design_system.py +150 -69
- package/dist/skills/frontend/references/ui-ux-db/scripts/search.py +3 -3
- package/dist/skills/lcx-doctor/SKILL.md +1 -1
- package/dist/skills/ultimate-browsing/ATTRIBUTION.md +105 -0
- package/dist/skills/ultimate-browsing/SKILL.md +140 -0
- package/dist/skills/ultimate-browsing/engine/__init__.py +24 -0
- package/dist/skills/ultimate-browsing/engine/__main__.py +106 -0
- package/dist/skills/ultimate-browsing/engine/bias_check.py +174 -0
- package/dist/skills/ultimate-browsing/engine/curl_probe.py +91 -0
- package/dist/skills/ultimate-browsing/engine/executor.py +192 -0
- package/dist/skills/ultimate-browsing/engine/fetch_chain.py +268 -0
- package/dist/skills/ultimate-browsing/engine/referers.py +15 -0
- package/dist/skills/ultimate-browsing/engine/result_schema.py +45 -0
- package/dist/skills/ultimate-browsing/engine/summary.py +37 -0
- package/dist/skills/ultimate-browsing/engine/templates/package.json +11 -0
- package/dist/skills/ultimate-browsing/engine/templates/playwright_mobile_chrome.js +129 -0
- package/dist/skills/ultimate-browsing/engine/templates/playwright_real_chrome.js +167 -0
- package/dist/skills/ultimate-browsing/engine/tests/test_fetch_chain.py +77 -0
- package/dist/skills/ultimate-browsing/engine/tests/test_playwright_templates.py +282 -0
- package/dist/skills/ultimate-browsing/engine/url_transforms.py +98 -0
- package/dist/skills/ultimate-browsing/engine/validators.py +216 -0
- package/dist/skills/ultimate-browsing/engine/waf_detector.py +214 -0
- package/dist/skills/ultimate-browsing/engine/waf_profiles.yaml +162 -0
- package/dist/skills/ultimate-browsing/references/agent-reach/README.md +79 -0
- package/dist/skills/ultimate-browsing/references/agent-reach/career.md +29 -0
- package/dist/skills/ultimate-browsing/references/agent-reach/dev.md +62 -0
- package/dist/skills/ultimate-browsing/references/agent-reach/search.md +33 -0
- package/dist/skills/ultimate-browsing/references/agent-reach/social.md +207 -0
- package/dist/skills/ultimate-browsing/references/agent-reach/video.md +115 -0
- package/dist/skills/ultimate-browsing/references/agent-reach/web.md +76 -0
- package/dist/skills/ultimate-browsing/references/chrome-stealth.md +120 -0
- package/dist/skills/ultimate-browsing/references/insane-search/README.md +319 -0
- package/dist/skills/ultimate-browsing/references/insane-search/cache-archive.md +83 -0
- package/dist/skills/ultimate-browsing/references/insane-search/fallback.md +159 -0
- package/dist/skills/ultimate-browsing/references/insane-search/jina.md +130 -0
- package/dist/skills/ultimate-browsing/references/insane-search/json-api.md +133 -0
- package/dist/skills/ultimate-browsing/references/insane-search/media.md +123 -0
- package/dist/skills/ultimate-browsing/references/insane-search/metadata.md +116 -0
- package/dist/skills/ultimate-browsing/references/insane-search/naver.md +107 -0
- package/dist/skills/ultimate-browsing/references/insane-search/playwright.md +142 -0
- package/dist/skills/ultimate-browsing/references/insane-search/public-api.md +119 -0
- package/dist/skills/ultimate-browsing/references/insane-search/rss.md +123 -0
- package/dist/skills/ultimate-browsing/references/insane-search/tls-impersonate.md +186 -0
- package/dist/skills/ultimate-browsing/references/insane-search/twitter.md +104 -0
- package/dist/skills/ultimate-browsing/scripts/cookie_crypto.py +75 -0
- package/dist/skills/ultimate-browsing/scripts/cookie_domains.py +38 -0
- package/dist/skills/ultimate-browsing/scripts/cookie_paths.py +112 -0
- package/dist/skills/ultimate-browsing/scripts/extract_cookies.py +280 -0
- package/dist/skills/ultimate-browsing/scripts/tests/test_cookie_domain_filter.py +110 -0
- package/dist/skills/ultimate-browsing/scripts/tests/test_extract_cookies.py +245 -0
- package/dist/skills/ultraresearch/ATTRIBUTION.md +49 -0
- package/dist/skills/ultraresearch/SKILL.md +23 -4
- package/dist/skills/ulw-plan/SKILL.md +4 -1
- package/dist/tools/delegate-task/sync-task-deps.d.ts +8 -6
- package/dist/tools/skill-mcp/tools.d.ts +1 -1
- package/dist/tui.js +9 -1
- package/package.json +16 -14
- package/packages/omo-codex/THIRD-PARTY-NOTICES.md +27 -4
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/README.md +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +134 -42
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- package/packages/omo-codex/plugin/components/codegraph/LICENSE +21 -0
- package/packages/omo-codex/plugin/components/codegraph/NODE-RUNTIME-LICENSES.md +2951 -0
- package/packages/omo-codex/plugin/components/codegraph/NOTICE +16 -0
- package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +323 -39
- package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +292 -19
- package/packages/omo-codex/plugin/components/codegraph/package.json +9 -3
- package/packages/omo-codex/plugin/components/codegraph/src/mcp-unavailable.ts +75 -0
- package/packages/omo-codex/plugin/components/codegraph/src/serve.ts +29 -13
- package/packages/omo-codex/plugin/components/codegraph/src/session-start-worker.ts +20 -7
- package/packages/omo-codex/plugin/components/codegraph/test/hook.test.ts +1 -243
- package/packages/omo-codex/plugin/components/codegraph/test/package-runtime.test.ts +91 -0
- package/packages/omo-codex/plugin/components/codegraph/test/provisioned-node-guard.test.ts +1 -1
- package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-facade.test.ts +68 -0
- package/packages/omo-codex/plugin/components/codegraph/test/serve-node-support.test.ts +11 -1
- package/packages/omo-codex/plugin/components/codegraph/test/serve-unavailable.test.ts +133 -0
- package/packages/omo-codex/plugin/components/codegraph/test/serve.test.ts +1 -113
- package/packages/omo-codex/plugin/components/codegraph/test/session-start-node-support.test.ts +8 -1
- package/packages/omo-codex/plugin/components/codegraph/test/session-start-trust-boundary.test.ts +63 -0
- package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-availability.test.ts +106 -0
- package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-flow.test.ts +150 -0
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/dist/cli.js +3 -3
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/src/sparkshell-awareness.ts +3 -3
- package/packages/omo-codex/plugin/components/rules/test/sparkshell-awareness.test.ts +33 -9
- package/packages/omo-codex/plugin/components/start-work-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/skills/teammode/SKILL.md +59 -32
- package/packages/omo-codex/plugin/components/teammode/skills/teammode/scripts/team-guide.mjs +17 -16
- package/packages/omo-codex/plugin/components/teammode/skills/teammode/scripts/team-state.mjs +70 -3
- package/packages/omo-codex/plugin/components/teammode/skills/teammode/scripts/team-worktree.mjs +113 -0
- package/packages/omo-codex/plugin/components/teammode/skills/teammode/scripts/team.mjs +63 -4
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/explorer.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/directive.md +5 -4
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/test/package-smoke.test.ts +24 -3
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +8 -7
- package/packages/omo-codex/plugin/components/ulw-loop/test/skill-contract.test.ts +1 -1
- package/packages/omo-codex/plugin/package-lock.json +112 -13
- package/packages/omo-codex/plugin/package.json +2 -2
- package/packages/omo-codex/plugin/scripts/auto-update-plan.mjs +133 -0
- package/packages/omo-codex/plugin/scripts/auto-update-release-notes.mjs +135 -0
- package/packages/omo-codex/plugin/scripts/auto-update.mjs +33 -133
- package/packages/omo-codex/plugin/scripts/materialize-shared-upstreams.mjs +41 -0
- package/packages/omo-codex/plugin/shared/src/config-loader.ts +20 -2
- package/packages/omo-codex/plugin/shared/test/config-loader.test.ts +16 -0
- package/packages/omo-codex/plugin/skills/frontend/ATTRIBUTION.md +32 -8
- package/packages/omo-codex/plugin/skills/frontend/references/design/airbnb.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/airtable.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/apple.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/binance.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/bmw.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/bugatti.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/cal.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/claude.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/clay.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/clickhouse.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/cohere.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/coinbase.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/composio.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/cursor.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/elevenlabs.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/expo.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/ferrari.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/figma.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/framer.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/hashicorp.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/ibm.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/imagegen-frontend-web.md +380 -79
- package/packages/omo-codex/plugin/skills/frontend/references/design/intercom.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/kraken.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/lamborghini.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/linear.app.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/lovable.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/mastercard.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/meta.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/minimax.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/mintlify.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/miro.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/mistral.ai.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/mongodb.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/nike.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/notion.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/nvidia.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/ollama.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/opencode.ai.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/pinterest.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/playstation.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/posthog.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/raycast.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/renault.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/replicate.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/resend.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/revolut.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/runwayml.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/sanity.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/sentry.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/shopify.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/spacex.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/spotify.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/starbucks.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/stitch-skill.md +1 -1
- package/packages/omo-codex/plugin/skills/frontend/references/design/stripe.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/supabase.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/superhuman.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/taste-skill.md +1188 -208
- package/packages/omo-codex/plugin/skills/frontend/references/design/tesla.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/theverge.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/together.ai.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/uber.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/vercel.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/vodafone.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/voltagent.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/warp.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/webflow.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/wired.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/wise.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/x.ai.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/zapier.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/README.md +501 -115
- package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/charts.csv +26 -26
- package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/colors.csv +162 -97
- package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/icons.csv +105 -100
- package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/landing.csv +22 -18
- package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/products.csv +162 -97
- package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/stacks/flutter.csv +53 -53
- package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/stacks/html-tailwind.csv +56 -56
- package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/stacks/nextjs.csv +53 -53
- package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/stacks/react.csv +54 -54
- package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/stacks/svelte.csv +54 -54
- package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/stacks/swiftui.csv +51 -51
- package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/stacks/vue.csv +50 -50
- package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/styles.csv +17 -0
- package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/typography.csv +17 -1
- package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/ui-reasoning.csv +162 -101
- package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/data/web-interface.csv +30 -30
- package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/scripts/core.py +31 -22
- package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/scripts/design_system.py +150 -69
- package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/scripts/search.py +3 -3
- package/packages/omo-codex/plugin/skills/lcx-doctor/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/teammode/SKILL.md +59 -32
- package/packages/omo-codex/plugin/skills/teammode/scripts/team-guide.mjs +17 -16
- package/packages/omo-codex/plugin/skills/teammode/scripts/team-state.mjs +70 -3
- package/packages/omo-codex/plugin/skills/teammode/scripts/team-worktree.mjs +113 -0
- package/packages/omo-codex/plugin/skills/teammode/scripts/team.mjs +63 -4
- package/packages/omo-codex/plugin/skills/ultimate-browsing/ATTRIBUTION.md +105 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +140 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/agents/openai.yaml +2 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/__init__.py +24 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/__main__.py +106 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/bias_check.py +174 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/curl_probe.py +91 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/executor.py +192 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/fetch_chain.py +268 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/referers.py +15 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/result_schema.py +45 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/summary.py +37 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/package.json +11 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/playwright_mobile_chrome.js +129 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/playwright_real_chrome.js +167 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/test_fetch_chain.py +77 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/test_playwright_templates.py +282 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/url_transforms.py +98 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/validators.py +216 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/waf_detector.py +214 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/waf_profiles.yaml +162 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/agent-reach/README.md +79 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/agent-reach/career.md +29 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/agent-reach/dev.md +62 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/agent-reach/search.md +33 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/agent-reach/social.md +207 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/agent-reach/video.md +115 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/agent-reach/web.md +76 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +120 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/README.md +319 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/cache-archive.md +83 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/fallback.md +159 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/jina.md +130 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/json-api.md +133 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/media.md +123 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/metadata.md +116 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/naver.md +107 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/playwright.md +142 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/public-api.md +119 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/rss.md +123 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/tls-impersonate.md +186 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/twitter.md +104 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/scripts/cookie_crypto.py +75 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/scripts/cookie_domains.py +38 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/scripts/cookie_paths.py +112 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/scripts/extract_cookies.py +280 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/scripts/tests/test_cookie_domain_filter.py +110 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/scripts/tests/test_extract_cookies.py +245 -0
- package/packages/omo-codex/plugin/skills/ultraresearch/ATTRIBUTION.md +49 -0
- package/packages/omo-codex/plugin/skills/ultraresearch/SKILL.md +23 -4
- package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +8 -7
- package/packages/omo-codex/plugin/test/aggregate-build.test.mjs +2 -1
- package/packages/omo-codex/plugin/test/auto-update-release-notes.test.mjs +95 -0
- package/packages/omo-codex/plugin/test/auto-update-restart-notice.test.mjs +12 -3
- package/packages/omo-codex/plugin/test/component-codegraph-mcp-smoke.test.mjs +76 -0
- package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +1 -0
- package/packages/omo-codex/plugin/test/teammode-communication.test.mjs +87 -0
- package/packages/omo-codex/plugin/test/teammode-thread-title.test.mjs +169 -0
- package/packages/omo-codex/plugin/test/teammode-worktree.test.mjs +246 -0
- package/packages/omo-codex/plugin/test/ultraresearch-skill-contract.test.mjs +30 -0
- package/packages/omo-codex/scripts/install-cli-args.test.mjs +1 -1
- package/packages/omo-codex/scripts/install-config-git-bash.test.mjs +23 -0
- package/packages/omo-codex/scripts/install-delegated-command.test.mjs +76 -4
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +520 -216
- package/packages/omo-codex/scripts/install-local-entrypoint.test.mjs +40 -3
- package/packages/shared-skills/skills/frontend/ATTRIBUTION.md +32 -8
- package/packages/shared-skills/skills/frontend/references/design/airbnb.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/airtable.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/apple.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/binance.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/bmw.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/bugatti.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/cal.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/claude.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/clay.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/clickhouse.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/cohere.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/coinbase.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/composio.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/cursor.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/elevenlabs.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/expo.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/ferrari.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/figma.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/framer.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/hashicorp.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/ibm.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/imagegen-frontend-web.md +380 -79
- package/packages/shared-skills/skills/frontend/references/design/intercom.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/kraken.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/lamborghini.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/linear.app.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/lovable.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/mastercard.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/meta.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/minimax.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/mintlify.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/miro.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/mistral.ai.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/mongodb.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/nike.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/notion.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/nvidia.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/ollama.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/opencode.ai.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/pinterest.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/playstation.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/posthog.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/raycast.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/renault.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/replicate.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/resend.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/revolut.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/runwayml.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/sanity.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/sentry.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/shopify.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/spacex.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/spotify.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/starbucks.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/stitch-skill.md +1 -1
- package/packages/shared-skills/skills/frontend/references/design/stripe.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/supabase.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/superhuman.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/taste-skill.md +1188 -208
- package/packages/shared-skills/skills/frontend/references/design/tesla.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/theverge.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/together.ai.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/uber.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/vercel.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/vodafone.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/voltagent.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/warp.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/webflow.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/wired.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/wise.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/x.ai.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/zapier.md +3 -0
- package/packages/shared-skills/skills/frontend/references/ui-ux-db/README.md +501 -115
- package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/charts.csv +26 -26
- package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/colors.csv +162 -97
- package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/icons.csv +105 -100
- package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/landing.csv +22 -18
- package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/products.csv +162 -97
- package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/stacks/flutter.csv +53 -53
- package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/stacks/html-tailwind.csv +56 -56
- package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/stacks/nextjs.csv +53 -53
- package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/stacks/react.csv +54 -54
- package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/stacks/svelte.csv +54 -54
- package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/stacks/swiftui.csv +51 -51
- package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/stacks/vue.csv +50 -50
- package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/styles.csv +17 -0
- package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/typography.csv +17 -1
- package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/ui-reasoning.csv +162 -101
- package/packages/shared-skills/skills/frontend/references/ui-ux-db/data/web-interface.csv +30 -30
- package/packages/shared-skills/skills/frontend/references/ui-ux-db/scripts/core.py +31 -22
- package/packages/shared-skills/skills/frontend/references/ui-ux-db/scripts/design_system.py +150 -69
- package/packages/shared-skills/skills/frontend/references/ui-ux-db/scripts/search.py +3 -3
- package/packages/shared-skills/skills/lcx-doctor/SKILL.md +1 -1
- package/packages/shared-skills/skills/ultimate-browsing/ATTRIBUTION.md +105 -0
- package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +140 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/__init__.py +24 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/__main__.py +106 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/bias_check.py +174 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/curl_probe.py +91 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/executor.py +192 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/fetch_chain.py +268 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/referers.py +15 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/result_schema.py +45 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/summary.py +37 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/templates/package.json +11 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/templates/playwright_mobile_chrome.js +129 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/templates/playwright_real_chrome.js +167 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/tests/test_fetch_chain.py +77 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/tests/test_playwright_templates.py +282 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/url_transforms.py +98 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/validators.py +216 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/waf_detector.py +214 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/waf_profiles.yaml +162 -0
- package/packages/shared-skills/skills/ultimate-browsing/references/agent-reach/README.md +79 -0
- package/packages/shared-skills/skills/ultimate-browsing/references/agent-reach/career.md +29 -0
- package/packages/shared-skills/skills/ultimate-browsing/references/agent-reach/dev.md +62 -0
- package/packages/shared-skills/skills/ultimate-browsing/references/agent-reach/search.md +33 -0
- package/packages/shared-skills/skills/ultimate-browsing/references/agent-reach/social.md +207 -0
- package/packages/shared-skills/skills/ultimate-browsing/references/agent-reach/video.md +115 -0
- package/packages/shared-skills/skills/ultimate-browsing/references/agent-reach/web.md +76 -0
- package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +120 -0
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/README.md +319 -0
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/cache-archive.md +83 -0
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/fallback.md +159 -0
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/jina.md +130 -0
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/json-api.md +133 -0
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/media.md +123 -0
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/metadata.md +116 -0
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/naver.md +107 -0
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/playwright.md +142 -0
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/public-api.md +119 -0
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/rss.md +123 -0
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/tls-impersonate.md +186 -0
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/twitter.md +104 -0
- package/packages/shared-skills/skills/ultimate-browsing/scripts/cookie_crypto.py +75 -0
- package/packages/shared-skills/skills/ultimate-browsing/scripts/cookie_domains.py +38 -0
- package/packages/shared-skills/skills/ultimate-browsing/scripts/cookie_paths.py +112 -0
- package/packages/shared-skills/skills/ultimate-browsing/scripts/extract_cookies.py +280 -0
- package/packages/shared-skills/skills/ultimate-browsing/scripts/tests/test_cookie_domain_filter.py +110 -0
- package/packages/shared-skills/skills/ultimate-browsing/scripts/tests/test_extract_cookies.py +245 -0
- package/packages/shared-skills/skills/ultraresearch/ATTRIBUTION.md +49 -0
- package/packages/shared-skills/skills/ultraresearch/SKILL.md +23 -4
- package/packages/shared-skills/skills/ulw-plan/SKILL.md +4 -1
- package/packages/omo-codex/plugin/components/codegraph/dist/cli.d.ts +0 -2
- package/packages/omo-codex/plugin/components/codegraph/dist/serve.d.ts +0 -32
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
import { spawn, spawnSync } from "node:child_process";
|
|
4
|
-
import {
|
|
5
|
-
import { dirname, join } from "node:path";
|
|
6
|
-
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
4
|
+
import { pathToFileURL } from "node:url";
|
|
7
5
|
import {
|
|
8
6
|
DEFAULT_LOCK_STALE_MS,
|
|
9
7
|
acquireLock,
|
|
@@ -13,17 +11,27 @@ import {
|
|
|
13
11
|
resolveStatePath,
|
|
14
12
|
writeState,
|
|
15
13
|
} from "./auto-update-state.mjs";
|
|
16
|
-
import {
|
|
14
|
+
import {
|
|
15
|
+
compareVersions,
|
|
16
|
+
defaultRunCommandForManualUpdate,
|
|
17
|
+
detectAutoUpdateInstallFlow,
|
|
18
|
+
parsePositiveInteger,
|
|
19
|
+
parseVersion,
|
|
20
|
+
resolveArgs,
|
|
21
|
+
resolveCommand,
|
|
22
|
+
resolveCurrentVersion,
|
|
23
|
+
resolveLatestVersion,
|
|
24
|
+
resolveLazyCodexUpdatePlan,
|
|
25
|
+
} from "./auto-update-plan.mjs";
|
|
26
|
+
import { formatMarketplaceFlowNotice, formatUpdateStartedNotice, resolveReleaseNotes } from "./auto-update-release-notes.mjs";
|
|
17
27
|
import { migrateCodexConfig } from "./migrate-codex-config.mjs";
|
|
18
28
|
import { migrateOmoSotConfig } from "./migrate-omo-sot.mjs";
|
|
19
29
|
import { resolveSpawnInvocation } from "./spawn-command.mjs";
|
|
20
30
|
|
|
21
31
|
const DEFAULT_INTERVAL_MS = 24 * 60 * 60 * 1_000;
|
|
22
32
|
const DEFAULT_RETRY_INTERVAL_MS = 30 * 60 * 1_000;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const MARKETPLACE_FLOW_NOTICE =
|
|
26
|
-
"[LazyCodex] Auto-update skipped: this LazyCodex install is managed by the Codex plugin marketplace, so the npx self-update was not started. Tell the user to upgrade with `codex plugin marketplace upgrade sisyphuslabs`, and that Codex will require hook re-approval after the upgrade.";
|
|
33
|
+
|
|
34
|
+
export { resolveLazyCodexUpdatePlan };
|
|
27
35
|
|
|
28
36
|
export function resolveAutoUpdatePlan({ env = process.env, now = Date.now(), lastCheckedAt, lastAttemptedAt, lastStatus, installFlow } = {}) {
|
|
29
37
|
if (env.LAZYCODEX_AUTO_UPDATE_DISABLED === "1" || env.OMO_CODEX_AUTO_UPDATE_DISABLED === "1") {
|
|
@@ -67,15 +75,6 @@ export function resolveAutoUpdatePlan({ env = process.env, now = Date.now(), las
|
|
|
67
75
|
};
|
|
68
76
|
}
|
|
69
77
|
|
|
70
|
-
export function resolveLazyCodexUpdatePlan({ currentVersion, latestVersion, command = DEFAULT_UPDATE_COMMAND, args = DEFAULT_UPDATE_ARGS } = {}) {
|
|
71
|
-
const current = parseVersion(currentVersion);
|
|
72
|
-
if (current === null) return { shouldUpdate: false, reason: "unknown-current" };
|
|
73
|
-
const latest = parseVersion(latestVersion);
|
|
74
|
-
if (latest === null) return { shouldUpdate: false, reason: "unknown-latest" };
|
|
75
|
-
if (compareVersions(latest, current) <= 0) return { shouldUpdate: false, reason: "up-to-date" };
|
|
76
|
-
return { shouldUpdate: true, command, args };
|
|
77
|
-
}
|
|
78
|
-
|
|
79
78
|
export async function runLazyCodexManualUpdate({ env = process.env, dryRun = false, log = console.log, runCommand } = {}) {
|
|
80
79
|
const commandRunner = runCommand ?? defaultRunCommandForManualUpdate;
|
|
81
80
|
const currentVersion = resolveCurrentVersion(env);
|
|
@@ -122,7 +121,11 @@ export async function runAutoUpdateCheck({ env = process.env, now = Date.now() }
|
|
|
122
121
|
if (plan.reason === "marketplace-flow") {
|
|
123
122
|
await appendUpdateLog(env, now, "skipped", { kind: "marketplace-flow" });
|
|
124
123
|
await writeState(statePath, { ...state, lastCheckedAt: now, lastStatus: "success" });
|
|
125
|
-
|
|
124
|
+
const updateContext = resolveUpdateContext({ env });
|
|
125
|
+
const releaseNotes = updateContext.shouldUpdate
|
|
126
|
+
? await resolveReleaseNotes({ env, latestVersion: updateContext.latestVersion })
|
|
127
|
+
: undefined;
|
|
128
|
+
notices.push(formatMarketplaceFlowNotice({ updateContext, releaseNotes }));
|
|
126
129
|
return { started: false, reason: plan.reason, notices };
|
|
127
130
|
}
|
|
128
131
|
await appendUpdateLog(env, now, "skipped", { reason: plan.reason });
|
|
@@ -141,6 +144,7 @@ export async function runAutoUpdateCheck({ env = process.env, now = Date.now() }
|
|
|
141
144
|
try {
|
|
142
145
|
await appendUpdateLog(env, now, "started", { command: plan.command, args: plan.args });
|
|
143
146
|
const pendingNotice = { fromVersion: plan.currentVersion, toVersion: plan.latestVersion, startedAt: now };
|
|
147
|
+
const releaseNotes = await resolveReleaseNotes({ env, latestVersion: plan.latestVersion });
|
|
144
148
|
if (env.LAZYCODEX_AUTO_UPDATE_WAIT === "1") {
|
|
145
149
|
const invocation = resolveSpawnInvocation(plan.command, plan.args);
|
|
146
150
|
const result = spawnSync(invocation.command, invocation.args, {
|
|
@@ -151,7 +155,7 @@ export async function runAutoUpdateCheck({ env = process.env, now = Date.now() }
|
|
|
151
155
|
await appendUpdateLog(env, now, "finished", { status });
|
|
152
156
|
if (status === 0) {
|
|
153
157
|
await writeState(statePath, { lastCheckedAt: now, lastAttemptedAt: now, lastStatus: "success", pendingNotice });
|
|
154
|
-
await recordUpdateStartedNotice({ env, now, notices, pendingNotice });
|
|
158
|
+
await recordUpdateStartedNotice({ env, now, notices, pendingNotice, releaseNotes });
|
|
155
159
|
} else {
|
|
156
160
|
await writeState(statePath, { lastAttemptedAt: now, lastStatus: "failed" });
|
|
157
161
|
}
|
|
@@ -165,7 +169,7 @@ export async function runAutoUpdateCheck({ env = process.env, now = Date.now() }
|
|
|
165
169
|
detached: true,
|
|
166
170
|
});
|
|
167
171
|
await writeState(statePath, { lastAttemptedAt: now, lastStatus: "started", pendingNotice });
|
|
168
|
-
await recordUpdateStartedNotice({ env, now, notices, pendingNotice });
|
|
172
|
+
await recordUpdateStartedNotice({ env, now, notices, pendingNotice, releaseNotes });
|
|
169
173
|
child.unref();
|
|
170
174
|
return { started: true, notices };
|
|
171
175
|
} finally {
|
|
@@ -193,8 +197,8 @@ async function settlePendingNotice({ env, now, statePath, state, notices }) {
|
|
|
193
197
|
return nextState;
|
|
194
198
|
}
|
|
195
199
|
|
|
196
|
-
async function recordUpdateStartedNotice({ env, now, notices, pendingNotice }) {
|
|
197
|
-
notices.push(
|
|
200
|
+
async function recordUpdateStartedNotice({ env, now, notices, pendingNotice, releaseNotes }) {
|
|
201
|
+
notices.push(formatUpdateStartedNotice({ pendingNotice, releaseNotes }));
|
|
198
202
|
await appendUpdateLog(env, now, "notified", {
|
|
199
203
|
kind: "update-started",
|
|
200
204
|
fromVersion: pendingNotice.fromVersion,
|
|
@@ -202,6 +206,13 @@ async function recordUpdateStartedNotice({ env, now, notices, pendingNotice }) {
|
|
|
202
206
|
});
|
|
203
207
|
}
|
|
204
208
|
|
|
209
|
+
function resolveUpdateContext({ env }) {
|
|
210
|
+
const currentVersion = resolveCurrentVersion(env);
|
|
211
|
+
const latestVersion = resolveLatestVersion(env);
|
|
212
|
+
const plan = resolveLazyCodexUpdatePlan({ currentVersion, latestVersion });
|
|
213
|
+
return { currentVersion, latestVersion, shouldUpdate: plan.shouldUpdate };
|
|
214
|
+
}
|
|
215
|
+
|
|
205
216
|
async function runConfigMigration({ env }) {
|
|
206
217
|
if (env.LAZYCODEX_CONFIG_MIGRATION_DISABLED === "1" || env.OMO_CODEX_CONFIG_MIGRATION_DISABLED === "1") return;
|
|
207
218
|
try {
|
|
@@ -213,117 +224,6 @@ async function runConfigMigration({ env }) {
|
|
|
213
224
|
}
|
|
214
225
|
}
|
|
215
226
|
|
|
216
|
-
function resolveCommand(env) {
|
|
217
|
-
return env.LAZYCODEX_AUTO_UPDATE_COMMAND?.trim() || DEFAULT_UPDATE_COMMAND;
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
function resolveArgs(env) {
|
|
221
|
-
if (env.LAZYCODEX_AUTO_UPDATE_ARGS_JSON) {
|
|
222
|
-
const parsed = JSON.parse(env.LAZYCODEX_AUTO_UPDATE_ARGS_JSON);
|
|
223
|
-
if (!Array.isArray(parsed) || parsed.some((value) => typeof value !== "string")) {
|
|
224
|
-
throw new TypeError("LAZYCODEX_AUTO_UPDATE_ARGS_JSON must be a JSON string array");
|
|
225
|
-
}
|
|
226
|
-
return parsed;
|
|
227
|
-
}
|
|
228
|
-
return DEFAULT_UPDATE_ARGS;
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
function detectAutoUpdateInstallFlow(env) {
|
|
232
|
-
return detectInstallFlow({ pluginRoot: resolveAutoUpdatePluginRoot(env), env });
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
function resolveAutoUpdatePluginRoot(env) {
|
|
236
|
-
if (env.PLUGIN_ROOT?.trim()) return env.PLUGIN_ROOT.trim();
|
|
237
|
-
return dirname(dirname(fileURLToPath(import.meta.url)));
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
function resolveCurrentVersion(env) {
|
|
241
|
-
if (env.LAZYCODEX_CURRENT_VERSION?.trim()) return env.LAZYCODEX_CURRENT_VERSION.trim();
|
|
242
|
-
const pluginRoot = dirname(dirname(fileURLToPath(import.meta.url)));
|
|
243
|
-
return (
|
|
244
|
-
readVersionManifest(resolveInstallSnapshotPath(env, pluginRoot)) ??
|
|
245
|
-
readVersionManifest(join(pluginRoot, "..", "..", "..", "package.json")) ??
|
|
246
|
-
readVersionManifest(join(pluginRoot, ".codex-plugin", "plugin.json"))
|
|
247
|
-
);
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
function resolveLatestVersion(env) {
|
|
251
|
-
if (env.LAZYCODEX_LATEST_VERSION?.trim()) return env.LAZYCODEX_LATEST_VERSION.trim();
|
|
252
|
-
const invocation = resolveSpawnInvocation("npm", ["view", "lazycodex-ai", "version", "--silent"]);
|
|
253
|
-
const result = spawnSync(invocation.command, invocation.args, {
|
|
254
|
-
encoding: "utf8",
|
|
255
|
-
stdio: ["ignore", "pipe", "ignore"],
|
|
256
|
-
});
|
|
257
|
-
if (result.status !== 0) return undefined;
|
|
258
|
-
const version = result.stdout.trim();
|
|
259
|
-
return version.length > 0 ? version : undefined;
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
function defaultRunCommandForManualUpdate(command, args, options) {
|
|
263
|
-
return new Promise((resolve, reject) => {
|
|
264
|
-
const invocation = resolveSpawnInvocation(command, args);
|
|
265
|
-
const child = spawn(invocation.command, invocation.args, {
|
|
266
|
-
cwd: options.cwd,
|
|
267
|
-
env: options.env,
|
|
268
|
-
stdio: "inherit",
|
|
269
|
-
});
|
|
270
|
-
child.once("error", reject);
|
|
271
|
-
child.once("close", (code) => {
|
|
272
|
-
if (code === 0) {
|
|
273
|
-
resolve();
|
|
274
|
-
return;
|
|
275
|
-
}
|
|
276
|
-
reject(new Error(`${command} ${args.join(" ")} exited with ${code ?? "unknown status"}`));
|
|
277
|
-
});
|
|
278
|
-
});
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
function parseVersion(version) {
|
|
282
|
-
if (typeof version !== "string") return null;
|
|
283
|
-
const match = /^(\d+)\.(\d+)\.(\d+)(?:-([^+]+))?(?:\+.*)?$/.exec(version.trim());
|
|
284
|
-
if (match === null) return null;
|
|
285
|
-
const major = Number.parseInt(match[1], 10);
|
|
286
|
-
const minor = Number.parseInt(match[2], 10);
|
|
287
|
-
const patch = Number.parseInt(match[3], 10);
|
|
288
|
-
const prerelease = match[4];
|
|
289
|
-
return Number.isFinite(major) && Number.isFinite(minor) && Number.isFinite(patch)
|
|
290
|
-
? { major, minor, patch, prerelease }
|
|
291
|
-
: null;
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
function compareVersions(left, right) {
|
|
295
|
-
for (const key of ["major", "minor", "patch"]) {
|
|
296
|
-
const leftValue = left[key];
|
|
297
|
-
const rightValue = right[key];
|
|
298
|
-
if (leftValue > rightValue) return 1;
|
|
299
|
-
if (leftValue < rightValue) return -1;
|
|
300
|
-
}
|
|
301
|
-
if (left.prerelease === undefined && right.prerelease !== undefined) return 1;
|
|
302
|
-
if (left.prerelease !== undefined && right.prerelease === undefined) return -1;
|
|
303
|
-
if (left.prerelease !== undefined && right.prerelease !== undefined) {
|
|
304
|
-
return left.prerelease.localeCompare(right.prerelease);
|
|
305
|
-
}
|
|
306
|
-
return 0;
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
function readVersionManifest(path) {
|
|
310
|
-
try {
|
|
311
|
-
const parsed = JSON.parse(readFileSync(path, "utf8"));
|
|
312
|
-
if (typeof parsed.version !== "string") return undefined;
|
|
313
|
-
const version = parsed.version.trim();
|
|
314
|
-
return version.length > 0 ? version : undefined;
|
|
315
|
-
} catch (error) {
|
|
316
|
-
if (error instanceof Error) return undefined;
|
|
317
|
-
throw error;
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
function parsePositiveInteger(value, fallback) {
|
|
322
|
-
if (value === undefined || value === "") return fallback;
|
|
323
|
-
const parsed = Number.parseInt(value, 10);
|
|
324
|
-
return Number.isFinite(parsed) && parsed >= 0 ? parsed : fallback;
|
|
325
|
-
}
|
|
326
|
-
|
|
327
227
|
if (process.argv[1] !== undefined && import.meta.url === pathToFileURL(process.argv[1]).href) {
|
|
328
228
|
runAutoUpdateCheck()
|
|
329
229
|
.then(({ notices }) => {
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { execFileSync } from "node:child_process";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
4
|
+
|
|
5
|
+
const pluginScriptsDir = dirname(fileURLToPath(import.meta.url));
|
|
6
|
+
const repoRoot = join(pluginScriptsDir, "..", "..", "..", "..");
|
|
7
|
+
const sharedSkillsScripts = join(repoRoot, "packages", "shared-skills", "scripts");
|
|
8
|
+
const materializeScript = join(sharedSkillsScripts, "materialize-frontend-refs.mjs");
|
|
9
|
+
|
|
10
|
+
const upstreamPaths = [
|
|
11
|
+
"packages/shared-skills/upstreams/open-design",
|
|
12
|
+
"packages/shared-skills/upstreams/taste-skill",
|
|
13
|
+
"packages/shared-skills/upstreams/ui-ux-pro-max",
|
|
14
|
+
];
|
|
15
|
+
|
|
16
|
+
function initSubmodules({ strict }) {
|
|
17
|
+
try {
|
|
18
|
+
execFileSync("git", ["submodule", "update", "--init", "--recursive", ...upstreamPaths], {
|
|
19
|
+
cwd: repoRoot,
|
|
20
|
+
stdio: "inherit",
|
|
21
|
+
});
|
|
22
|
+
return true;
|
|
23
|
+
} catch (error) {
|
|
24
|
+
const message = `[materialize-shared-upstreams] git submodule init failed: ${error instanceof Error ? error.message : String(error)}`;
|
|
25
|
+
if (strict) throw new Error(message);
|
|
26
|
+
process.stderr.write(`${message} - continuing without submodule refresh\n`);
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export async function materializeSharedUpstreams({ strict }) {
|
|
32
|
+
initSubmodules({ strict });
|
|
33
|
+
const { materializeFrontendRefs } = await import(pathToFileURL(materializeScript).href);
|
|
34
|
+
return materializeFrontendRefs({ strict });
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
|
|
38
|
+
const strict = process.env.OMO_MATERIALIZE_STRICT === "1" || process.argv.includes("--strict");
|
|
39
|
+
const result = await materializeSharedUpstreams({ strict });
|
|
40
|
+
if (result.skipped && strict) process.exit(1);
|
|
41
|
+
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { homedir } from "node:os"
|
|
2
|
+
|
|
1
3
|
import {
|
|
2
4
|
loadOmoConfig,
|
|
3
5
|
type LoadOmoConfigOptions,
|
|
@@ -9,20 +11,36 @@ export type CodexOmoConfigOptions = Omit<LoadOmoConfigOptions, "harness">
|
|
|
9
11
|
|
|
10
12
|
export type CodexOmoConfig = OmoConfig & {
|
|
11
13
|
readonly sources: readonly OmoConfigSource[]
|
|
14
|
+
readonly trustedCodegraphInstallDir?: string
|
|
12
15
|
readonly warnings: readonly string[]
|
|
13
16
|
}
|
|
14
17
|
|
|
15
18
|
export function getCodexOmoConfig(options: CodexOmoConfigOptions = {}): CodexOmoConfig {
|
|
19
|
+
const env = options.env ?? process.env
|
|
20
|
+
const homeDir = resolveHomeDir(options)
|
|
16
21
|
const result = loadOmoConfig({
|
|
17
22
|
...(options.cwd === undefined ? {} : { cwd: options.cwd }),
|
|
18
|
-
|
|
19
|
-
|
|
23
|
+
env,
|
|
24
|
+
homeDir,
|
|
25
|
+
harness: "codex",
|
|
26
|
+
})
|
|
27
|
+
const trustedConfig = loadOmoConfig({
|
|
28
|
+
cwd: homeDir,
|
|
29
|
+
env,
|
|
30
|
+
homeDir,
|
|
20
31
|
harness: "codex",
|
|
21
32
|
})
|
|
33
|
+
const trustedCodegraphInstallDir = trustedConfig.config.codegraph?.install_dir
|
|
22
34
|
|
|
23
35
|
return {
|
|
24
36
|
...result.config,
|
|
25
37
|
sources: result.sources,
|
|
38
|
+
...(trustedCodegraphInstallDir === undefined ? {} : { trustedCodegraphInstallDir }),
|
|
26
39
|
warnings: result.warnings,
|
|
27
40
|
}
|
|
28
41
|
}
|
|
42
|
+
|
|
43
|
+
function resolveHomeDir(options: CodexOmoConfigOptions): string {
|
|
44
|
+
const env = options.env ?? process.env
|
|
45
|
+
return options.homeDir ?? env["HOME"] ?? env["USERPROFILE"] ?? homedir()
|
|
46
|
+
}
|
|
@@ -49,6 +49,22 @@ describe("getCodexOmoConfig", () => {
|
|
|
49
49
|
install_dir: "/base",
|
|
50
50
|
telemetry: false,
|
|
51
51
|
})
|
|
52
|
+
expect(result.trustedCodegraphInstallDir).toBe("/base")
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
it("#given project SOT sets install_dir #when loading config #then only the effective value changes while trusted install root stays global", () => {
|
|
56
|
+
// given
|
|
57
|
+
const homeDir = createTemporaryDirectory("omo-codex-shared-trusted-home-")
|
|
58
|
+
const cwd = createTemporaryDirectory("omo-codex-shared-trusted-project-")
|
|
59
|
+
writeOmoConfig(homeDir, JSON.stringify({ codegraph: { enabled: true, install_dir: "/global-codegraph" } }))
|
|
60
|
+
writeOmoConfig(cwd, JSON.stringify({ codegraph: { install_dir: "/project-codegraph" } }))
|
|
61
|
+
|
|
62
|
+
// when
|
|
63
|
+
const result = getCodexOmoConfig({ cwd, homeDir, env: {} })
|
|
64
|
+
|
|
65
|
+
// then
|
|
66
|
+
expect(result.codegraph?.install_dir).toBe("/project-codegraph")
|
|
67
|
+
expect(result.trustedCodegraphInstallDir).toBe("/global-codegraph")
|
|
52
68
|
})
|
|
53
69
|
|
|
54
70
|
it("#given legacy env override and SOT value #when loading config #then env wins over the SOT", () => {
|
|
@@ -7,16 +7,27 @@ oh-my-opencode Software are licensed under the original license provided by the
|
|
|
7
7
|
the applicable component"). Each upstream's license and required notices are reproduced
|
|
8
8
|
below. Modifications to the original files are noted where applicable.
|
|
9
9
|
|
|
10
|
+
These third-party references are NOT committed to this repository. Each upstream is
|
|
11
|
+
tracked as a pinned git submodule under `packages/shared-skills/upstreams/<name>`, and the
|
|
12
|
+
build materializes the referenced files verbatim, path-mapped into this skill's
|
|
13
|
+
`references/` tree, when packaging the published artifact. The `Pinned upstream commit`
|
|
14
|
+
line in each section below records the exact submodule commit that the materialization
|
|
15
|
+
reads.
|
|
16
|
+
|
|
10
17
|
---
|
|
11
18
|
|
|
12
19
|
## 1. Open Design (brand design-system DESIGN.md references)
|
|
13
20
|
|
|
14
21
|
The brand design-system reference files under `frontend/references/design/<brand>.md`
|
|
15
22
|
(Apple, Stripe, Linear, Nike, BMW, Airbnb, Bugatti, Tesla, and the other named brands)
|
|
16
|
-
are
|
|
17
|
-
Open Design project.
|
|
23
|
+
are path-mapped verbatim copies of the `design-systems/<brand>/DESIGN.md` files from the
|
|
24
|
+
Open Design project. They are not committed here; the build materializes them from the
|
|
25
|
+
pinned submodule under `packages/shared-skills/upstreams/open-design` into
|
|
26
|
+
`frontend/references/design/<brand>.md` (dots in `<brand>` map to dashes for the upstream
|
|
27
|
+
directory name, e.g. `linear.app` -> `linear-app`).
|
|
18
28
|
|
|
19
29
|
- Source: https://github.com/nexu-io/open-design
|
|
30
|
+
- Pinned upstream commit: 6afe7eae156bfa29251a51fd0636649c257f7444
|
|
20
31
|
- Copyright 2026 Open Design contributors
|
|
21
32
|
- Licensed under the Apache License, Version 2.0 (the "License"); you may not use these
|
|
22
33
|
files except in compliance with the License. You may obtain a copy of the License at:
|
|
@@ -29,10 +40,12 @@ Open Design project.
|
|
|
29
40
|
permissions and limitations under the License. A full copy of the Apache-2.0 license
|
|
30
41
|
text is provided in `LICENSE-Apache-2.0.txt` alongside this notice.
|
|
31
42
|
|
|
32
|
-
- **Changes (Apache-2.0 §4(b)):** the original `DESIGN.md` design-system files
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
43
|
+
- **Changes (Apache-2.0 §4(b)):** the original `DESIGN.md` design-system files are
|
|
44
|
+
redistributed verbatim. The only modification is path-mapping: each upstream
|
|
45
|
+
`design-systems/<brand>/DESIGN.md` is renamed to `frontend/references/design/<brand>.md`
|
|
46
|
+
(with dots in the brand name mapped to dashes for the upstream directory lookup). The
|
|
47
|
+
file contents are byte-for-byte identical to the pinned upstream commit; no text is
|
|
48
|
+
abridged, summarized, or rewritten.
|
|
36
49
|
|
|
37
50
|
- **Trademark notice:** All product names, brand names, trademarks, and registered
|
|
38
51
|
trademarks referenced in these design-system files (e.g. Apple, BMW, Airbnb, Bugatti,
|
|
@@ -50,9 +63,14 @@ The taste-skill files and image-generation skills under `frontend/references/des
|
|
|
50
63
|
(`taste-skill.md`, `gpt-tasteskill.md`, `minimalist-skill.md`, `brutalist-skill.md`,
|
|
51
64
|
`soft-skill.md`, `redesign-skill.md`, `image-to-code-skill.md`, `output-skill.md`,
|
|
52
65
|
`stitch-skill.md`, `imagegen-frontend-web.md`, `imagegen-frontend-mobile.md`,
|
|
53
|
-
`imagegen-brandkit.md`) are
|
|
66
|
+
`imagegen-brandkit.md`) are path-mapped verbatim copies of the per-skill `SKILL.md` files
|
|
67
|
+
from the taste-skill project (each `skills/<name>/SKILL.md` is renamed to
|
|
68
|
+
`references/design/<name>.md`; `imagegen-brandkit.md` maps from `skills/brandkit/SKILL.md`).
|
|
69
|
+
They are not committed here; the build materializes them from the pinned submodule under
|
|
70
|
+
`packages/shared-skills/upstreams/taste-skill`.
|
|
54
71
|
|
|
55
72
|
- Source: https://github.com/Leonxlnx/taste-skill
|
|
73
|
+
- Pinned upstream commit: 06d6028b5c623016c59ce8536f578e5a1127b499
|
|
56
74
|
|
|
57
75
|
```
|
|
58
76
|
MIT License
|
|
@@ -84,9 +102,15 @@ SOFTWARE.
|
|
|
84
102
|
|
|
85
103
|
The search engine and dataset under `frontend/references/ui-ux-db/` (`scripts/core.py`,
|
|
86
104
|
`scripts/search.py`, `scripts/design_system.py`, `README.md`, and the `data/*.csv`
|
|
87
|
-
knowledge base) are
|
|
105
|
+
knowledge base) are path-mapped verbatim copies from the UI/UX Pro Max skill. They are not
|
|
106
|
+
committed here; the build materializes them from the pinned submodule under
|
|
107
|
+
`packages/shared-skills/upstreams/ui-ux-pro-max`:
|
|
108
|
+
`scripts/*.py` from `src/ui-ux-pro-max/scripts/`, `data/*.csv` from
|
|
109
|
+
`src/ui-ux-pro-max/data/` (`data/web-interface.csv` maps from the upstream
|
|
110
|
+
`data/app-interface.csv`), and `README.md` from `.claude/skills/ui-ux-pro-max/SKILL.md`.
|
|
88
111
|
|
|
89
112
|
- Source: https://github.com/nextlevelbuilder/ui-ux-pro-max-skill
|
|
113
|
+
- Pinned upstream commit: f32d6a61cdf0bfd57404c45854583fd19ff95088
|
|
90
114
|
- "UI/UX Pro Max" is the upstream project's branding; no trademark rights are granted by
|
|
91
115
|
the MIT license, and this distribution does not claim that name as its own.
|
|
92
116
|
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Design System Inspired by Airbnb
|
|
2
2
|
|
|
3
|
+
> Category: E-Commerce & Retail
|
|
4
|
+
> Travel marketplace. Warm coral accent, photography-driven, rounded UI.
|
|
5
|
+
|
|
3
6
|
## 1. Visual Theme & Atmosphere
|
|
4
7
|
|
|
5
8
|
Airbnb's 2026 design feels like a travel magazine that happens to be an app — pristine white canvases give way to full-bleed photography, and the interface itself disappears so the listings can breathe. The signature Rausch coral-pink (`#ff385c`) is used sparingly but unmistakably: search CTA, active tab indicator, primary action button, the occasional price or wishlist heart. Everything else is a disciplined grayscale, with `#222222` carrying almost every line of text.
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Design System Inspired by Airtable
|
|
2
2
|
|
|
3
|
+
> Category: Design & Creative
|
|
4
|
+
> Spreadsheet-database hybrid. Colorful, friendly, structured data aesthetic.
|
|
5
|
+
|
|
3
6
|
## 1. Visual Theme & Atmosphere
|
|
4
7
|
|
|
5
8
|
Airtable's website is a clean, enterprise-friendly platform that communicates "sophisticated simplicity" through a white canvas with deep navy text (`#181d26`) and Airtable Blue (`#1b61c9`) as the primary interactive accent. The Haas font family (display + text variants) creates a Swiss-precision typography system with positive letter-spacing throughout.
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Design System Inspired by Apple
|
|
2
2
|
|
|
3
|
+
> Category: Media & Consumer
|
|
4
|
+
> Consumer electronics. Premium white space, SF Pro, cinematic imagery.
|
|
5
|
+
|
|
3
6
|
## 1. Visual Theme & Atmosphere
|
|
4
7
|
|
|
5
8
|
Apple's web language is a precision editorial system that alternates between gallery-like calm and retail-density information blocks. The visual tone stays restrained: broad neutral canvases, quiet chrome, and product imagery given almost all of the expressive weight. The interface is engineered to disappear so hardware, materials, and finish options become the narrative foreground.
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Design System Inspired by Binance.US
|
|
2
2
|
|
|
3
|
+
> Category: Fintech & Crypto
|
|
4
|
+
> Crypto exchange. Bold yellow accent on monochrome, trading-floor urgency.
|
|
5
|
+
|
|
3
6
|
## 1. Visual Theme & Atmosphere
|
|
4
7
|
|
|
5
8
|
Binance.US radiates the polished urgency of a digital trading floor — a space where money moves and decisions happen in seconds. The design is a two-tone composition that alternates between stark white trading surfaces and deep near-black panels (`#222126`), creating a visual rhythm that mirrors the bull-and-bear duality of crypto markets. Binance Yellow (`#F0B90B`) cuts through this monochrome foundation like a gold ingot on a steel desk — unmistakable, confident, and engineered to guide every eye toward the next action.
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Design System Inspired by BMW
|
|
2
2
|
|
|
3
|
+
> Category: Automotive
|
|
4
|
+
> Luxury automotive. Dark premium surfaces, precise German engineering aesthetic.
|
|
5
|
+
|
|
3
6
|
## 1. Visual Theme & Atmosphere
|
|
4
7
|
|
|
5
8
|
BMW's website is automotive engineering made visual — a design system that communicates precision, performance, and German industrial confidence. The page alternates between deep dark hero sections (featuring full-bleed automotive photography) and clean white content areas, creating a cinematic rhythm reminiscent of a luxury car showroom where vehicles are lit against darkness. The BMW CI2020 design language (their corporate identity refresh) defines every element.
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Design System Inspired by Bugatti
|
|
2
2
|
|
|
3
|
+
> Category: Automotive
|
|
4
|
+
> Hypercar brand. Cinema-black canvas, monochrome austerity, monumental display type.
|
|
5
|
+
|
|
3
6
|
## 1. Visual Theme & Atmosphere
|
|
4
7
|
|
|
5
8
|
Bugatti.com does not behave like a website — it behaves like a feature-length car film that a visitor happens to be standing inside. The canvas is pure `#000000`, the only color that appears at rest is white, and the entire page is carried by full-bleed hero video and photography with a single typographic moment laid over the top. There are no cards, no grids, no promotional modules, no newsletter signups, no three-column editorial layouts. It is one continuous cinema-black channel, interrupted only by the cars themselves and a few pill-shaped calls to action that quietly say things like "EXPLORE OUR OPPORTUNITIES" in ALL CAPS monospace.
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Design System Inspired by Cal.com
|
|
2
2
|
|
|
3
|
+
> Category: Productivity & SaaS
|
|
4
|
+
> Open-source scheduling. Clean neutral UI, developer-oriented simplicity.
|
|
5
|
+
|
|
3
6
|
## 1. Visual Theme & Atmosphere
|
|
4
7
|
|
|
5
8
|
Cal.com's website is a masterclass in monochromatic restraint — a grayscale world where boldness comes not from color but from the sheer confidence of black text on white space. Inspired by Uber's minimal aesthetic, the palette is deliberately stripped of hue: near-black headings (`#242424`), mid-gray secondary text (`#898989`), and pure white surfaces. Color is treated as a foreign substance — when it appears (a rare blue link, a green trust badge), it feels like a controlled accent in an otherwise black-and-white photograph.
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Design System Inspired by Claude (Anthropic)
|
|
2
2
|
|
|
3
|
+
> Category: AI & LLM
|
|
4
|
+
> Anthropic's AI assistant. Warm terracotta accent, clean editorial layout.
|
|
5
|
+
|
|
3
6
|
## 1. Visual Theme & Atmosphere
|
|
4
7
|
|
|
5
8
|
Claude's interface is a literary salon reimagined as a product page — warm, unhurried, and quietly intellectual. The entire experience is built on a parchment-toned canvas (`#f5f4ed`) that deliberately evokes the feeling of high-quality paper rather than a digital surface. Where most AI product pages lean into cold, futuristic aesthetics, Claude's design radiates human warmth, as if the AI itself has good taste in interior design.
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Design System Inspired by Clay
|
|
2
2
|
|
|
3
|
+
> Category: Design & Creative
|
|
4
|
+
> Creative agency. Organic shapes, soft gradients, art-directed layout.
|
|
5
|
+
|
|
3
6
|
## 1. Visual Theme & Atmosphere
|
|
4
7
|
|
|
5
8
|
Clay's website is a warm, playful celebration of color that treats B2B data enrichment like a craft rather than an enterprise chore. The design language is built on a foundation of warm cream backgrounds (`#faf9f7`) and oat-toned borders (`#dad4c8`, `#eee9df`) that give every surface the tactile quality of handmade paper. Against this artisanal canvas, a vivid swatch palette explodes with personality — Matcha green, Slushie cyan, Lemon gold, Ube purple, Pomegranate pink, Blueberry navy, and Dragonfruit magenta — each named like flavors at a juice bar, not colors in an enterprise UI kit.
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Design System Inspired by ClickHouse
|
|
2
2
|
|
|
3
|
+
> Category: Backend & Data
|
|
4
|
+
> Fast analytics database. Yellow-accented, technical documentation style.
|
|
5
|
+
|
|
3
6
|
## 1. Visual Theme & Atmosphere
|
|
4
7
|
|
|
5
8
|
ClickHouse's interface is a high-performance cockpit rendered in acid yellow-green on obsidian black — a design that screams "speed" before you read a single word. The entire experience lives in darkness: pure black backgrounds (`#000000`) with dark charcoal cards (`#414141` borders) creating a terminal-grade aesthetic where the only chromatic interruption is the signature neon yellow-green (`#faff69`) that slashes across CTAs, borders, and highlighted moments like a highlighter pen on a dark console.
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Design System Inspired by Cohere
|
|
2
2
|
|
|
3
|
+
> Category: AI & LLM
|
|
4
|
+
> Enterprise AI platform. Vibrant gradients, data-rich dashboard aesthetic.
|
|
5
|
+
|
|
3
6
|
## 1. Visual Theme & Atmosphere
|
|
4
7
|
|
|
5
8
|
Cohere's interface is a polished enterprise command deck — confident, clean, and designed to make AI feel like serious infrastructure rather than a consumer toy. The experience lives on a bright white canvas where content is organized into generously rounded cards (22px radius) that create an organic, cloud-like containment language. This is a site that speaks to CTOs and enterprise architects: professional without being cold, sophisticated without being intimidating.
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Design System Inspired by Coinbase
|
|
2
2
|
|
|
3
|
+
> Category: Fintech & Crypto
|
|
4
|
+
> Crypto exchange. Clean blue identity, trust-focused, institutional feel.
|
|
5
|
+
|
|
3
6
|
## 1. Visual Theme & Atmosphere
|
|
4
7
|
|
|
5
8
|
Coinbase's website is a clean, trustworthy crypto platform that communicates financial reliability through a blue-and-white binary palette. The design uses Coinbase Blue (`#0052ff`) — a deep, saturated blue — as the singular brand accent against white and near-black surfaces. The proprietary font family includes CoinbaseDisplay for hero headlines, CoinbaseSans for UI text, CoinbaseText for body reading, and CoinbaseIcons for iconography — a comprehensive four-font system.
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Design System Inspired by Composio
|
|
2
2
|
|
|
3
|
+
> Category: Backend & Data
|
|
4
|
+
> Tool integration platform. Modern dark with colorful integration icons.
|
|
5
|
+
|
|
3
6
|
## 1. Visual Theme & Atmosphere
|
|
4
7
|
|
|
5
8
|
Composio's interface is a nocturnal command center — a dense, developer-focused darkness punctuated by electric cyan and deep cobalt signals. The entire experience is built on an almost-pure-black canvas (`#0f0f0f`) where content floats within barely-visible containment borders, creating the feeling of a high-tech control panel rather than a traditional marketing page. It's a site that whispers authority to developers who live in dark terminals.
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Design System Inspired by Cursor
|
|
2
2
|
|
|
3
|
+
> Category: Developer Tools
|
|
4
|
+
> AI-first code editor. Sleek dark interface, gradient accents.
|
|
5
|
+
|
|
3
6
|
## 1. Visual Theme & Atmosphere
|
|
4
7
|
|
|
5
8
|
Cursor's website is a study in warm minimalism meets code-editor elegance. The entire experience is built on a warm off-white canvas (`#f2f1ed`) with dark warm-brown text (`#26251e`) -- not pure black, not neutral gray, but a deeply warm near-black with a yellowish undertone that evokes old paper, ink, and craft. This warmth permeates every surface: backgrounds lean toward cream (`#e6e5e0`, `#ebeae5`), borders dissolve into transparent warm overlays using `oklab` color space, and even the error state (`#cf2d56`) carries warmth rather than clinical red. The result feels more like a premium print publication than a tech website.
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Design System Inspired by ElevenLabs
|
|
2
2
|
|
|
3
|
+
> Category: AI & LLM
|
|
4
|
+
> AI voice platform. Dark cinematic UI, audio-waveform aesthetics.
|
|
5
|
+
|
|
3
6
|
## 1. Visual Theme & Atmosphere
|
|
4
7
|
|
|
5
8
|
ElevenLabs' website is a study in restrained elegance — a near-white canvas (`#ffffff`, `#f5f5f5`) where typography and subtle shadows do all the heavy lifting. The design feels like a premium audio product brochure: clean, spacious, and confident enough to let the content speak (literally, given ElevenLabs makes voice AI). There's an almost Apple-like quality to the whitespace strategy, but warmer — the occasional warm stone tint (`#f5f2ef`, `#777169`) prevents the purity from feeling clinical.
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Design System Inspired by Expo
|
|
2
2
|
|
|
3
|
+
> Category: Developer Tools
|
|
4
|
+
> React Native platform. Dark theme, tight letter-spacing, code-centric.
|
|
5
|
+
|
|
3
6
|
## 1. Visual Theme & Atmosphere
|
|
4
7
|
|
|
5
8
|
Expo's interface is a luminous, confidence-radiating developer platform built on the premise that tools for building apps should feel as polished as the apps themselves. The entire experience lives on a bright, airy canvas — a cool-tinted off-white (`#f0f0f3`) that gives the page a subtle technological coolness without the starkness of pure white. This is a site that breathes: enormous vertical spacing between sections creates a gallery-like pace where each feature gets its own "room."
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Design System Inspired by Ferrari
|
|
2
2
|
|
|
3
|
+
> Category: Automotive
|
|
4
|
+
> Luxury automotive. Chiaroscuro editorial, Ferrari Red accents, cinematic black.
|
|
5
|
+
|
|
3
6
|
## 1. Visual Theme & Atmosphere
|
|
4
7
|
|
|
5
8
|
Ferrari's website is a digital editorial — a curated magazine where the Prancing Horse brand is presented with the gravitas of an art institution and the precision of Italian coachwork. The page opens onto an expanse of absolute black, broken only by the iconic Prancing Horse emblem floating alone in its own atmosphere. Below, the content unfolds in dramatic alternations between inky-dark cinematic sections and crisp white editorial panels. This chiaroscuro rhythm — darkness yielding to light, machinery yielding to human story — feels more like paging through a Ferrari yearbook than scrolling a commercial website. Every section is a curated vignette: a concept car dissolving from shadow, two F1 drivers posed with sculptural stillness, a lineup of production models arranged in a jewel-toned parade.
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Design System Inspired by Figma
|
|
2
2
|
|
|
3
|
+
> Category: Design & Creative
|
|
4
|
+
> Collaborative design tool. Vibrant multi-color, playful yet professional.
|
|
5
|
+
|
|
3
6
|
## 1. Visual Theme & Atmosphere
|
|
4
7
|
|
|
5
8
|
Figma's interface is the design tool that designed itself — a masterclass in typographic sophistication where a custom variable font (figmaSans) modulates between razor-thin (weight 320) and bold (weight 700) with stops at unusual intermediates (330, 340, 450, 480, 540) that most type systems never explore. This granular weight control gives every text element a precisely calibrated visual weight, creating hierarchy through micro-differences rather than the blunt instrument of "regular vs bold."
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Design System Inspired by Framer
|
|
2
2
|
|
|
3
|
+
> Category: Design & Creative
|
|
4
|
+
> Website builder. Bold black and blue, motion-first, design-forward.
|
|
5
|
+
|
|
3
6
|
## 1. Visual Theme & Atmosphere
|
|
4
7
|
|
|
5
8
|
Framer's website is a cinematic, tool-obsessed dark canvas that radiates the confidence of a design tool built by designers who worship craft. The entire experience is drenched in pure black — not a warm charcoal or a cozy dark gray, but an absolute void (`#000000`) that makes every element, every screenshot, every typographic flourish feel like it's floating in deep space. This is a website that treats its own product UI as the hero art, embedding full-fidelity screenshots and interactive demos directly into the narrative flow.
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Design System Inspired by HashiCorp
|
|
2
2
|
|
|
3
|
+
> Category: Backend & Data
|
|
4
|
+
> Infrastructure automation. Enterprise-clean, black and white.
|
|
5
|
+
|
|
3
6
|
## 1. Visual Theme & Atmosphere
|
|
4
7
|
|
|
5
8
|
HashiCorp's website is enterprise infrastructure made tangible — a design system that must communicate the complexity of cloud infrastructure management while remaining approachable. The visual language splits between two modes: a clean white light-mode for informational sections and a dramatic dark-mode (`#15181e`, `#0d0e12`) for hero areas and product showcases, creating a day/night duality that mirrors the "build in light, deploy in dark" developer workflow.
|