@kensaurus/skills 0.0.0-stage → 2.0.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/.claude-plugin/marketplace.json +53 -0
- package/.claude-plugin/plugin.json +40 -0
- package/.cursor-plugin/plugin.json +38 -0
- package/.mcp.json +28 -0
- package/CHANGELOG.md +1761 -0
- package/LICENSE +21 -0
- package/NOTICE +13 -0
- package/README.md +820 -2
- package/SECURITY.md +55 -0
- package/agents/code-reviewer.md +60 -0
- package/agents/completion-judge.md +89 -0
- package/agents/db-migrator.md +125 -0
- package/agents/debugger.md +47 -0
- package/agents/deploy-checker.md +100 -0
- package/agents/perf-monitor.md +74 -0
- package/assets/favicon.png +0 -0
- package/assets/logo-light.png +0 -0
- package/assets/logo.png +0 -0
- package/assets/logo.svg +6 -0
- package/assets/og.png +0 -0
- package/bin/install.mjs +1127 -0
- package/bin/kenji.js +2 -0
- package/commands/adr.md +17 -0
- package/commands/aeo-plan.md +18 -0
- package/commands/arch-boundaries.md +17 -0
- package/commands/aso-plan.md +18 -0
- package/commands/auth-flows.md +19 -0
- package/commands/backup-plan.md +17 -0
- package/commands/burndown-full.md +25 -0
- package/commands/capacitor-plan.md +18 -0
- package/commands/codemod-safety.md +22 -0
- package/commands/commit.md +18 -0
- package/commands/complete-everything.md +40 -0
- package/commands/cost-plan.md +19 -0
- package/commands/deadcode-plan.md +26 -0
- package/commands/deadcode.md +32 -0
- package/commands/debug-issue.md +17 -0
- package/commands/deps-plan.md +18 -0
- package/commands/docs-plan.md +17 -0
- package/commands/doctrine.md +19 -0
- package/commands/error-plan.md +19 -0
- package/commands/feedback-to-closure.md +36 -0
- package/commands/fix-issue.md +76 -0
- package/commands/gate-logic.md +26 -0
- package/commands/green-repo.md +36 -0
- package/commands/grill-me.md +19 -0
- package/commands/gtm-plan.md +21 -0
- package/commands/gtm-weekly.md +17 -0
- package/commands/gtm.md +22 -0
- package/commands/handoff.md +15 -0
- package/commands/housekeep-backlog.md +18 -0
- package/commands/housekeep-files.md +22 -0
- package/commands/housekeep-gates.md +18 -0
- package/commands/instant-nav.md +11 -0
- package/commands/integrity-plan.md +19 -0
- package/commands/launch-kit.md +16 -0
- package/commands/mcp-guide.md +40 -0
- package/commands/mobile-plan.md +19 -0
- package/commands/native-rn-monorepo/README.md +78 -0
- package/commands/native-rn-monorepo/android-build.md +26 -0
- package/commands/native-rn-monorepo/android-install.md +32 -0
- package/commands/native-rn-monorepo/android-logcat.md +37 -0
- package/commands/native-rn-monorepo/ios-ci-logs.md +56 -0
- package/commands/native-rn-monorepo/ios-ci-status.md +52 -0
- package/commands/native-rn-monorepo/ios-ci-trigger.md +59 -0
- package/commands/native-rn-monorepo/rn-reset.md +50 -0
- package/commands/native-rn-monorepo/rn-ship-ios.md +67 -0
- package/commands/native-rn-monorepo/rn-verify.md +53 -0
- package/commands/perf-plan.md +18 -0
- package/commands/plan-mode.md +74 -0
- package/commands/pr.md +16 -0
- package/commands/pricing-plan.md +20 -0
- package/commands/privacy-plan.md +18 -0
- package/commands/readability.md +12 -0
- package/commands/readme.md +15 -0
- package/commands/refactor.md +15 -0
- package/commands/release-prep.md +17 -0
- package/commands/research.md +25 -0
- package/commands/responsive-audit.md +21 -0
- package/commands/review-code.md +18 -0
- package/commands/rls-plan.md +18 -0
- package/commands/secrets-plan.md +18 -0
- package/commands/security-plan.md +19 -0
- package/commands/ship-and-observe.md +36 -0
- package/commands/skill-conflicts.md +19 -0
- package/commands/slop-plan.md +18 -0
- package/commands/stub-plan.md +18 -0
- package/commands/test-mutation.md +16 -0
- package/commands/test-plan.md +17 -0
- package/commands/test.md +29 -0
- package/commands/thirdparty-web-interface-guidelines.md +185 -0
- package/commands/uiux-plan.md +18 -0
- package/commands/uiux.md +45 -0
- package/commands/update-deps.md +21 -0
- package/commands/validation-plan.md +19 -0
- package/commands-portable/fix-issue.md +72 -0
- package/commands-portable/plan-mode.md +92 -0
- package/commands-portable/research.md +91 -0
- package/docs/screenshots/README.md +5 -0
- package/docs/screenshots/audit-dark.png +0 -0
- package/docs/screenshots/build-dark.png +0 -0
- package/docs/screenshots/grill-dark.png +0 -0
- package/docs/screenshots/hero-dark.png +0 -0
- package/docs/screenshots/hero-light.png +0 -0
- package/docs/screenshots/ship-dark.png +0 -0
- package/docs/screenshots/src/showcase.html +320 -0
- package/hooks/completion-gate.mjs +258 -0
- package/hooks/cursor-hooks.json +13 -0
- package/hooks/hooks.json +15 -0
- package/install.sh +21 -0
- package/llms.txt +40 -0
- package/mcp/README.md +266 -0
- package/mcp/VERSIONS.md +41 -0
- package/mcp/mcp-full.json.template +124 -0
- package/mcp/mcp.json.template +29 -0
- package/mcp/pinned-versions.json +27 -0
- package/package.json +93 -4
- package/rules/approved-plan-execution.mdc +65 -0
- package/rules/full-stack-ship-discipline.mdc +37 -0
- package/rules/native-rn-monorepo/README.md +63 -0
- package/rules/native-rn-monorepo/_project.mdc +69 -0
- package/rules/native-rn-monorepo/native-android.mdc +72 -0
- package/rules/native-rn-monorepo/native-ios.mdc +61 -0
- package/rules/native-rn-monorepo/react-native-js.mdc +78 -0
- package/rules/native-rn-monorepo/web.mdc +60 -0
- package/rules/project-starter/components.mdc +54 -0
- package/rules/project-starter/data-fetching.mdc +77 -0
- package/rules/project-starter/git.mdc +41 -0
- package/rules/project-starter/supabase.mdc +37 -0
- package/rules/project-starter/tailwind.mdc +48 -0
- package/rules/project-starter/typescript.mdc +36 -0
- package/rules/project-starter/web-performance.mdc +42 -0
- package/rules/senior-engineer.mdc +30 -0
- package/rules/shell-first-search.mdc +19 -0
- package/rules/skill-workflows.mdc +35 -0
- package/rules/verification-before-completion.mdc +57 -0
- package/skills/audit-accessibility/SKILL.md +441 -0
- package/skills/audit-agent-speed/SKILL.md +181 -0
- package/skills/audit-agent-speed/scripts/stop-typecheck.mjs +151 -0
- package/skills/audit-analytics/SKILL.md +138 -0
- package/skills/audit-auth-flows/SKILL.md +267 -0
- package/skills/audit-backend-architecture/SKILL.md +266 -0
- package/skills/audit-backend-architecture/references/patterns.md +386 -0
- package/skills/audit-bundle-size/SKILL.md +296 -0
- package/skills/audit-cicd/SKILL.md +218 -0
- package/skills/audit-code-quality/SKILL.md +314 -0
- package/skills/audit-code-review/SKILL.md +289 -0
- package/skills/audit-codemod-safety/SKILL.md +159 -0
- package/skills/audit-db-schema/SKILL.md +465 -0
- package/skills/audit-db-schema/references/details.md +110 -0
- package/skills/audit-doctrine/SKILL.md +189 -0
- package/skills/audit-env-parity/SKILL.md +133 -0
- package/skills/audit-fe-api/SKILL.md +458 -0
- package/skills/audit-gate-logic/SKILL.md +219 -0
- package/skills/audit-i18n/SKILL.md +339 -0
- package/skills/audit-infra-cost/SKILL.md +142 -0
- package/skills/audit-langfuse-llm/SKILL.md +468 -0
- package/skills/audit-langfuse-llm/references/details.md +226 -0
- package/skills/audit-llm-security/SKILL.md +147 -0
- package/skills/audit-monetization-iap/SKILL.md +137 -0
- package/skills/audit-payment-system/SKILL.md +268 -0
- package/skills/audit-payment-system/references/checklist.md +283 -0
- package/skills/audit-performance/SKILL.md +383 -0
- package/skills/audit-performance/references/loading-priority-2026.md +81 -0
- package/skills/audit-realworld/SKILL.md +287 -0
- package/skills/audit-registry-listing/SKILL.md +122 -0
- package/skills/audit-resilience/SKILL.md +154 -0
- package/skills/audit-responsive/SKILL.md +221 -0
- package/skills/audit-responsive/references/checklist.md +166 -0
- package/skills/audit-security/SKILL.md +289 -0
- package/skills/audit-skill-conflicts/SKILL.md +178 -0
- package/skills/audit-ui-states/SKILL.md +146 -0
- package/skills/audit-uiux-design-system/SKILL.md +475 -0
- package/skills/audit-uiux-design-system/references/details.md +71 -0
- package/skills/audit-ux/SKILL.md +379 -0
- package/skills/audit-ux/references/details.md +245 -0
- package/skills/audit-ux-journeys/SKILL.md +215 -0
- package/skills/audit-ux-journeys/references/checklist.md +179 -0
- package/skills/backend-db-performance/SKILL.md +441 -0
- package/skills/backend-error-handling/SKILL.md +489 -0
- package/skills/backend-error-handling/references/details.md +58 -0
- package/skills/backend-observability/SKILL.md +88 -0
- package/skills/backend-patterns/SKILL.md +499 -0
- package/skills/backend-patterns/references/architecture-patterns.md +298 -0
- package/skills/backend-realtime/SKILL.md +403 -0
- package/skills/backend-realtime/references/patterns.md +74 -0
- package/skills/burndown-full/SKILL.md +174 -0
- package/skills/complete-everything/SKILL.md +295 -0
- package/skills/data-pipeline/SKILL.md +109 -0
- package/skills/data-visualization/SKILL.md +488 -0
- package/skills/debug-error/SKILL.md +322 -0
- package/skills/debug-fe-be-integration/SKILL.md +459 -0
- package/skills/debug-sentry-monitor/SKILL.md +497 -0
- package/skills/debug-sentry-monitor/references/details.md +165 -0
- package/skills/deploy-npm/SKILL.md +394 -0
- package/skills/deploy-npm/references/example-mushi-mushi.md +52 -0
- package/skills/deploy-verify/SKILL.md +489 -0
- package/skills/design-api/SKILL.md +379 -0
- package/skills/design-canvas/SKILL.md +155 -0
- package/skills/design-email/SKILL.md +370 -0
- package/skills/design-frontend/SKILL.md +143 -0
- package/skills/design-generative-art/SKILL.md +474 -0
- package/skills/design-mobile-first/SKILL.md +506 -0
- package/skills/design-motion/SKILL.md +333 -0
- package/skills/design-motion/references/delight-interactions.md +191 -0
- package/skills/design-prd/SKILL.md +443 -0
- package/skills/design-system/SKILL.md +457 -0
- package/skills/design-theme/SKILL.md +226 -0
- package/skills/design-theme/themes/tsumagoi-ranch.md +150 -0
- package/skills/docs-adr/SKILL.md +168 -0
- package/skills/docs-coauthor/SKILL.md +368 -0
- package/skills/docs-comparison-pages/SKILL.md +117 -0
- package/skills/docs-domain-modeling/SKILL.md +97 -0
- package/skills/docs-launch-kit/SKILL.md +139 -0
- package/skills/docs-writer/SKILL.md +469 -0
- package/skills/enhance-agent-guardrails/SKILL.md +164 -0
- package/skills/enhance-arch-boundaries/SKILL.md +154 -0
- package/skills/enhance-capacitor-ui/SKILL.md +463 -0
- package/skills/enhance-capacitor-ui/references/details.md +750 -0
- package/skills/enhance-email-deliverability/SKILL.md +143 -0
- package/skills/enhance-growth-loops/SKILL.md +122 -0
- package/skills/enhance-lifecycle-email/SKILL.md +130 -0
- package/skills/enhance-motion/SKILL.md +193 -0
- package/skills/enhance-onboarding/SKILL.md +148 -0
- package/skills/enhance-pwa/SKILL.md +304 -0
- package/skills/enhance-readability/SKILL.md +146 -0
- package/skills/enhance-readme/SKILL.md +496 -0
- package/skills/enhance-readme/package-lock.json +187 -0
- package/skills/enhance-readme/package.json +17 -0
- package/skills/enhance-readme/scripts/generate-readme-blocks.mjs +199 -0
- package/skills/enhance-readme/scripts/record-readme-tour.mjs +442 -0
- package/skills/enhance-skill-prompts/SKILL.md +167 -0
- package/skills/enhance-skill-prompts/references/exemplar-audit-auth-flows.md +311 -0
- package/skills/enhance-web-conversion/SKILL.md +155 -0
- package/skills/enhance-web-forms/SKILL.md +154 -0
- package/skills/enhance-web-instant-nav/SKILL.md +138 -0
- package/skills/enhance-web-instant-nav/references/bfcache-blockers.md +23 -0
- package/skills/enhance-web-instant-nav/references/early-hints.md +33 -0
- package/skills/enhance-web-instant-nav/references/speculation-rules.md +44 -0
- package/skills/enhance-web-landing/SKILL.md +459 -0
- package/skills/enhance-web-landing/references/details.md +773 -0
- package/skills/enhance-web-redesign/SKILL.md +228 -0
- package/skills/enhance-web-seo/SKILL.md +276 -0
- package/skills/enhance-web-ui/SKILL.md +473 -0
- package/skills/enhance-web-ui/references/details.md +674 -0
- package/skills/enhance-web-ux/HEURISTICS.md +242 -0
- package/skills/enhance-web-ux/PATTERNS.md +375 -0
- package/skills/enhance-web-ux/SKILL.md +464 -0
- package/skills/enhance-web-ux/examples.md +222 -0
- package/skills/enhance-web-ux/references/details.md +406 -0
- package/skills/enhance-web-web3d/SKILL.md +397 -0
- package/skills/enhance-web-web3d/references/css-canvas-effects.md +180 -0
- package/skills/handoff/SKILL.md +66 -0
- package/skills/housekeep-backlog/SKILL.md +149 -0
- package/skills/housekeep-dead-code/SKILL.md +387 -0
- package/skills/housekeep-dead-code/references/ratchet-ci.md +205 -0
- package/skills/housekeep-dead-code/references/supabase-hygiene.md +152 -0
- package/skills/housekeep-design/SKILL.md +207 -0
- package/skills/housekeep-files/SKILL.md +220 -0
- package/skills/housekeep-files/references/naming-and-catalog.md +86 -0
- package/skills/housekeep-files/scripts/housekeep-files.ps1 +360 -0
- package/skills/housekeep-files/scripts/housekeep-files.sh +238 -0
- package/skills/housekeep-gates/SKILL.md +174 -0
- package/skills/iterate-agent-harness/SKILL.md +137 -0
- package/skills/iterate-gtm-weekly/SKILL.md +103 -0
- package/skills/iterate-post-launch/SKILL.md +292 -0
- package/skills/meta-mcp-builder/SKILL.md +313 -0
- package/skills/meta-skill-creator/SKILL.md +304 -0
- package/skills/mobile-capacitor-platform/SKILL.md +104 -0
- package/skills/mobile-emulator-start/SKILL.md +296 -0
- package/skills/mobile-emulator-test/SKILL.md +491 -0
- package/skills/mobile-emulator-test/references/details.md +478 -0
- package/skills/mobile-rn-performance/SKILL.md +107 -0
- package/skills/mobile-rn-screen/SKILL.md +476 -0
- package/skills/mobile-rn-screen/references/details.md +785 -0
- package/skills/mushi-health/SKILL.md +206 -0
- package/skills/mushi-integration/SKILL.md +257 -0
- package/skills/plan-aeo-readiness/SKILL.md +166 -0
- package/skills/plan-antislop/SKILL.md +281 -0
- package/skills/plan-aso/SKILL.md +149 -0
- package/skills/plan-backup-dr/SKILL.md +131 -0
- package/skills/plan-capacitor-hardening/SKILL.md +217 -0
- package/skills/plan-data-integrity/SKILL.md +187 -0
- package/skills/plan-dead-code/SKILL.md +386 -0
- package/skills/plan-dead-code/references/knip-config.md +214 -0
- package/skills/plan-dead-code/references/output-templates.md +133 -0
- package/skills/plan-dead-code/references/preservation-contract.md +50 -0
- package/skills/plan-dead-code/references/residue-greps.md +84 -0
- package/skills/plan-dependency-provenance/SKILL.md +200 -0
- package/skills/plan-docs-sync/SKILL.md +143 -0
- package/skills/plan-docs-sync/references/drift-taxonomy.md +43 -0
- package/skills/plan-docs-sync/references/output-templates.md +33 -0
- package/skills/plan-docs-sync/references/preservation-contract.md +17 -0
- package/skills/plan-error-handling/SKILL.md +205 -0
- package/skills/plan-gtm/SKILL.md +276 -0
- package/skills/plan-gtm/references/benchmarks-2026.md +183 -0
- package/skills/plan-input-validation/SKILL.md +179 -0
- package/skills/plan-llm-cost-guardrails/SKILL.md +176 -0
- package/skills/plan-mobile-readiness/SKILL.md +171 -0
- package/skills/plan-perf-audit/SKILL.md +145 -0
- package/skills/plan-perf-audit/references/audit-scope.md +51 -0
- package/skills/plan-perf-audit/references/output-templates.md +33 -0
- package/skills/plan-perf-audit/references/preservation-contract.md +13 -0
- package/skills/plan-pricing/SKILL.md +173 -0
- package/skills/plan-privacy-compliance/SKILL.md +148 -0
- package/skills/plan-rls-audit/SKILL.md +231 -0
- package/skills/plan-secrets-audit/SKILL.md +181 -0
- package/skills/plan-security-audit/SKILL.md +168 -0
- package/skills/plan-security-audit/references/output-templates.md +36 -0
- package/skills/plan-security-audit/references/owasp-supabase-scope.md +55 -0
- package/skills/plan-security-audit/references/preservation-contract.md +18 -0
- package/skills/plan-stub-checker/SKILL.md +216 -0
- package/skills/plan-stub-checker/references/detection-methodology.md +75 -0
- package/skills/plan-stub-checker/references/detection-taxonomy.md +34 -0
- package/skills/plan-stub-checker/references/output-templates.md +63 -0
- package/skills/plan-stub-checker/references/preservation-contract.md +24 -0
- package/skills/plan-test-coverage/SKILL.md +170 -0
- package/skills/plan-test-coverage/references/methodology.md +54 -0
- package/skills/plan-test-coverage/references/output-templates.md +34 -0
- package/skills/plan-test-coverage/references/preservation-contract.md +15 -0
- package/skills/plan-uiux-unification/SKILL.md +230 -0
- package/skills/plan-uiux-unification/references/output-templates.md +67 -0
- package/skills/plan-uiux-unification/references/phase-workbook.md +85 -0
- package/skills/plan-uiux-unification/references/preservation-contract.md +24 -0
- package/skills/protocol-browser-anti-stall/SKILL.md +211 -0
- package/skills/protocol-browser-anti-stall/references/mcp-to-cli-map.md +113 -0
- package/skills/protocol-browser-anti-stall/references/playwright-session-coordination.md +170 -0
- package/skills/research/SKILL.md +422 -0
- package/skills/test-exploratory/SKILL.md +165 -0
- package/skills/test-exploratory/references/charter-template.md +29 -0
- package/skills/test-load/SKILL.md +126 -0
- package/skills/test-mutation/SKILL.md +160 -0
- package/skills/test-playwright/SKILL.md +354 -0
- package/skills/test-qa/SKILL.md +364 -0
- package/skills/test-qa/references/details.md +268 -0
- package/skills/test-red-team/SKILL.md +387 -0
- package/skills/test-red-team/references/owasp-attack-checklist.md +193 -0
- package/skills/test-unit/SKILL.md +259 -0
- package/skills/test-unit/references/details.md +267 -0
- package/skills/test-visual-regression/SKILL.md +132 -0
- package/skills/thirdparty-emil-design-eng/ATTRIBUTION.md +20 -0
- package/skills/thirdparty-emil-design-eng/SKILL.md +21 -0
- package/skills/thirdparty-emil-design-eng/references/emil-design-eng.md +676 -0
- package/skills/thirdparty-ui-ux-pro-max/ATTRIBUTION.md +22 -0
- package/skills/thirdparty-ui-ux-pro-max/SKILL.md +304 -0
- package/skills/thirdparty-ui-ux-pro-max/data/charts.csv +26 -0
- package/skills/thirdparty-ui-ux-pro-max/data/colors.csv +97 -0
- package/skills/thirdparty-ui-ux-pro-max/data/icons.csv +101 -0
- package/skills/thirdparty-ui-ux-pro-max/data/landing.csv +31 -0
- package/skills/thirdparty-ui-ux-pro-max/data/products.csv +97 -0
- package/skills/thirdparty-ui-ux-pro-max/data/react-performance.csv +45 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/astro.csv +54 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/skills/thirdparty-ui-ux-pro-max/data/styles.csv +68 -0
- package/skills/thirdparty-ui-ux-pro-max/data/typography.csv +58 -0
- package/skills/thirdparty-ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/skills/thirdparty-ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/skills/thirdparty-ui-ux-pro-max/data/web-interface.csv +31 -0
- package/skills/thirdparty-ui-ux-pro-max/scripts/core.py +253 -0
- package/skills/thirdparty-ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/skills/thirdparty-ui-ux-pro-max/scripts/search.py +114 -0
- package/skills/thirdparty-web-interface-guidelines/ATTRIBUTION.md +23 -0
- package/skills/thirdparty-web-interface-guidelines/SKILL.md +190 -0
- package/skills/workflow-build-feature/SKILL.md +118 -0
- package/skills/workflow-coding-discipline/SKILL.md +140 -0
- package/skills/workflow-environment-ready/SKILL.md +128 -0
- package/skills/workflow-feature-flag/SKILL.md +262 -0
- package/skills/workflow-feedback-to-closure/SKILL.md +165 -0
- package/skills/workflow-fix-and-ship/SKILL.md +136 -0
- package/skills/workflow-git-commit/SKILL.md +200 -0
- package/skills/workflow-green-repo/SKILL.md +166 -0
- package/skills/workflow-grilling/SKILL.md +73 -0
- package/skills/workflow-gtm/SKILL.md +153 -0
- package/skills/workflow-housekeep/SKILL.md +453 -0
- package/skills/workflow-housekeep/references/templates.md +109 -0
- package/skills/workflow-launch-ready/SKILL.md +145 -0
- package/skills/workflow-merge-conflicts/SKILL.md +62 -0
- package/skills/workflow-onboard/SKILL.md +99 -0
- package/skills/workflow-parallel-agents/SKILL.md +164 -0
- package/skills/workflow-pr/SKILL.md +197 -0
- package/skills/workflow-quality-gate/SKILL.md +147 -0
- package/skills/workflow-refactor/SKILL.md +274 -0
- package/skills/workflow-release-prep/SKILL.md +207 -0
- package/skills/workflow-ship-and-observe/SKILL.md +164 -0
- package/skills/workflow-spec-tdd/SKILL.md +141 -0
- package/skills/workflow-spec-tdd/references/spec-template.md +126 -0
- package/skills/workflow-spec-tdd/references/tdd-patterns.md +167 -0
- package/skills-cursor/babysit/SKILL.md +17 -0
- package/skills-cursor/canvas/SKILL.md +142 -0
- package/skills-cursor/canvas/sdk/canvas-tokens.d.ts +235 -0
- package/skills-cursor/canvas/sdk/chart-primitives.d.ts +200 -0
- package/skills-cursor/canvas/sdk/dag-layout.d.ts +102 -0
- package/skills-cursor/canvas/sdk/diff-view.d.ts +130 -0
- package/skills-cursor/canvas/sdk/form-primitives.d.ts +194 -0
- package/skills-cursor/canvas/sdk/hooks.d.ts +117 -0
- package/skills-cursor/canvas/sdk/index.d.ts +47 -0
- package/skills-cursor/canvas/sdk/theme.d.ts +61 -0
- package/skills-cursor/canvas/sdk/todo-list.d.ts +49 -0
- package/skills-cursor/canvas/sdk/ui-primitives.d.ts +549 -0
- package/skills-cursor/canvas/sdk/ui-primitives.test.d.ts +2 -0
- package/skills-cursor/create-hook/SKILL.md +238 -0
- package/skills-cursor/create-rule/SKILL.md +185 -0
- package/skills-cursor/create-skill/SKILL.md +269 -0
- package/skills-cursor/create-skill/references/authoring-guide.md +182 -0
- package/skills-cursor/create-subagent/SKILL.md +228 -0
- package/skills-cursor/migrate-to-skills/SKILL.md +121 -0
- package/skills-cursor/shell/SKILL.md +22 -0
- package/skills-cursor/split-to-prs/SKILL.md +47 -0
- package/skills-cursor/statusline/SKILL.md +193 -0
- package/skills-cursor/update-cli-config/SKILL.md +85 -0
- package/skills-cursor/update-cursor-settings/SKILL.md +137 -0
- package/skills.sh.json +296 -0
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Design tokens for `cursor/canvas` (standalone; no UI framework dependency).
|
|
3
|
+
*
|
|
4
|
+
* Color values are aligned with the Cursor app dark theme (`packages/ui` `cursor-dark` sources).
|
|
5
|
+
*/
|
|
6
|
+
export declare const canvasPaletteDark: {
|
|
7
|
+
readonly foreground: "#E4E4E4EB";
|
|
8
|
+
readonly foregroundSecondary: "#E4E4E48D";
|
|
9
|
+
readonly foregroundTertiary: "#E4E4E45E";
|
|
10
|
+
readonly foregroundQuaternary: "#E4E4E442";
|
|
11
|
+
readonly editor: "#181818";
|
|
12
|
+
readonly chrome: "#141414";
|
|
13
|
+
readonly sidebar: "#141414";
|
|
14
|
+
readonly elevated: "#181818";
|
|
15
|
+
readonly fillPrimary: "#E4E4E430";
|
|
16
|
+
readonly fillSecondary: "#E4E4E41E";
|
|
17
|
+
readonly fillTertiary: "#E4E4E411";
|
|
18
|
+
readonly fillQuaternary: "#E4E4E40A";
|
|
19
|
+
readonly strokePrimary: "#E4E4E433";
|
|
20
|
+
readonly strokeSecondary: "#E4E4E41F";
|
|
21
|
+
readonly strokeTertiary: "#E4E4E414";
|
|
22
|
+
readonly accent: "#599CE7";
|
|
23
|
+
readonly buttonBackground: "#599CE7";
|
|
24
|
+
readonly buttonForeground: "#191c22";
|
|
25
|
+
readonly buttonHoverBackground: "#6AABE9";
|
|
26
|
+
readonly link: "#87c3ff";
|
|
27
|
+
readonly diffInsertedLine: "#3FA26633";
|
|
28
|
+
readonly diffRemovedLine: "#B8004933";
|
|
29
|
+
readonly diffStripAdded: "#3FA2668F";
|
|
30
|
+
readonly diffStripRemoved: "#FC6B838F";
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Light-mode palette derived from `packages/ui/src/tokens/themes/cursor-core/light.ts`.
|
|
34
|
+
* Base color: #141414. Same percentages as dark (regular light has no overrides
|
|
35
|
+
* in CURSOR_SEMANTIC_OVERRIDES — only high-contrast does).
|
|
36
|
+
*/
|
|
37
|
+
export declare const canvasPaletteLight: {
|
|
38
|
+
readonly foreground: "#141414F0";
|
|
39
|
+
readonly foregroundSecondary: "#141414BD";
|
|
40
|
+
readonly foregroundTertiary: "#1414148A";
|
|
41
|
+
readonly foregroundQuaternary: "#1414145C";
|
|
42
|
+
readonly editor: "#FCFCFC";
|
|
43
|
+
readonly chrome: "#F8F8F8";
|
|
44
|
+
readonly sidebar: "#F3F3F3";
|
|
45
|
+
readonly elevated: "#FCFCFC";
|
|
46
|
+
readonly fillPrimary: "#14141433";
|
|
47
|
+
readonly fillSecondary: "#14141424";
|
|
48
|
+
readonly fillTertiary: "#14141414";
|
|
49
|
+
readonly fillQuaternary: "#1414140F";
|
|
50
|
+
readonly strokePrimary: "#14141433";
|
|
51
|
+
readonly strokeSecondary: "#1414141F";
|
|
52
|
+
readonly strokeTertiary: "#14141414";
|
|
53
|
+
readonly accent: "#3685BF";
|
|
54
|
+
readonly buttonBackground: "#3685BF";
|
|
55
|
+
readonly buttonForeground: "#FCFCFC";
|
|
56
|
+
readonly buttonHoverBackground: "#2E76AB";
|
|
57
|
+
readonly link: "#3685BF";
|
|
58
|
+
readonly diffInsertedLine: "#1F8A651F";
|
|
59
|
+
readonly diffRemovedLine: "#CF2D5614";
|
|
60
|
+
readonly diffStripAdded: "#1F8A65CC";
|
|
61
|
+
readonly diffStripRemoved: "#CF2D56CC";
|
|
62
|
+
};
|
|
63
|
+
export interface CanvasPalette {
|
|
64
|
+
readonly foreground: string;
|
|
65
|
+
readonly foregroundSecondary: string;
|
|
66
|
+
readonly foregroundTertiary: string;
|
|
67
|
+
readonly foregroundQuaternary: string;
|
|
68
|
+
readonly editor: string;
|
|
69
|
+
readonly chrome: string;
|
|
70
|
+
readonly sidebar: string;
|
|
71
|
+
readonly elevated: string;
|
|
72
|
+
readonly fillPrimary: string;
|
|
73
|
+
readonly fillSecondary: string;
|
|
74
|
+
readonly fillTertiary: string;
|
|
75
|
+
readonly fillQuaternary: string;
|
|
76
|
+
readonly strokePrimary: string;
|
|
77
|
+
readonly strokeSecondary: string;
|
|
78
|
+
readonly strokeTertiary: string;
|
|
79
|
+
readonly accent: string;
|
|
80
|
+
readonly buttonBackground: string;
|
|
81
|
+
readonly buttonForeground: string;
|
|
82
|
+
readonly buttonHoverBackground: string;
|
|
83
|
+
readonly link: string;
|
|
84
|
+
readonly diffInsertedLine: string;
|
|
85
|
+
readonly diffRemovedLine: string;
|
|
86
|
+
readonly diffStripAdded: string;
|
|
87
|
+
readonly diffStripRemoved: string;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Chart color palette — distilled from portal-website analytics charts.
|
|
91
|
+
* 88% opacity (E0) softens vibrancy without dulling; palette maximizes
|
|
92
|
+
* hue + luminosity spread for distinguishable multi-series charts.
|
|
93
|
+
*/
|
|
94
|
+
export declare const chartPalette: {
|
|
95
|
+
readonly green: "#1F8A65E8";
|
|
96
|
+
readonly darkGreen: "#0D855AE0";
|
|
97
|
+
readonly lightGreen: "#52B896E0";
|
|
98
|
+
readonly mintGreen: "#7DCAB0E0";
|
|
99
|
+
readonly blue: "#2E79B5E0";
|
|
100
|
+
readonly lightBlue: "#70B0D8E0";
|
|
101
|
+
readonly indigo: "#5A6CC0F0";
|
|
102
|
+
readonly lightIndigo: "#9AAADCE0";
|
|
103
|
+
readonly purple: "#7B64B8F0";
|
|
104
|
+
readonly lightPurple: "#AA98D8E0";
|
|
105
|
+
readonly warmPink: "#C85898E0";
|
|
106
|
+
readonly lightPink: "#E8A0C4E0";
|
|
107
|
+
readonly brightOrange: "#F0A040E0";
|
|
108
|
+
readonly deepOrange: "#C06028E0";
|
|
109
|
+
readonly goldenYellow: "#E8C030E0";
|
|
110
|
+
readonly darkAmber: "#C04848E0";
|
|
111
|
+
readonly warmPeach: "#F0A088E0";
|
|
112
|
+
readonly vibrantTeal: "#2A9A8AE0";
|
|
113
|
+
readonly muted: "#8888A8E0";
|
|
114
|
+
readonly neutralLine: "#888899D0";
|
|
115
|
+
};
|
|
116
|
+
/**
|
|
117
|
+
* Ordered array for automatic series coloring — alternates dark/light across
|
|
118
|
+
* distinct hue families for maximum perceptual separation.
|
|
119
|
+
*/
|
|
120
|
+
export declare const chartColorSequence: readonly ["#1F8A65E8", "#70B0D8E0", "#5A6CC0F0", "#F0A040E0", "#C06028E0", "#E8C030E0", "#C85898E0", "#F0A088E0", "#7B64B8F0", "#7DCAB0E0", "#8888A8E0", "#2A9A8AE0"];
|
|
121
|
+
declare function buildTokens(palette: CanvasPalette): {
|
|
122
|
+
bg: {
|
|
123
|
+
editor: string;
|
|
124
|
+
chrome: string;
|
|
125
|
+
elevated: string;
|
|
126
|
+
};
|
|
127
|
+
text: {
|
|
128
|
+
primary: string;
|
|
129
|
+
secondary: string;
|
|
130
|
+
tertiary: string;
|
|
131
|
+
quaternary: string;
|
|
132
|
+
link: string;
|
|
133
|
+
onAccent: string;
|
|
134
|
+
};
|
|
135
|
+
stroke: {
|
|
136
|
+
primary: string;
|
|
137
|
+
secondary: string;
|
|
138
|
+
tertiary: string;
|
|
139
|
+
};
|
|
140
|
+
fill: {
|
|
141
|
+
primary: string;
|
|
142
|
+
secondary: string;
|
|
143
|
+
tertiary: string;
|
|
144
|
+
quaternary: string;
|
|
145
|
+
};
|
|
146
|
+
accent: {
|
|
147
|
+
primary: string;
|
|
148
|
+
control: string;
|
|
149
|
+
controlHover: string;
|
|
150
|
+
};
|
|
151
|
+
diff: {
|
|
152
|
+
insertedLine: string;
|
|
153
|
+
removedLine: string;
|
|
154
|
+
stripAdded: string;
|
|
155
|
+
stripRemoved: string;
|
|
156
|
+
};
|
|
157
|
+
};
|
|
158
|
+
/** Semantic colors for components (spacing and radius live in `theme.ts`). */
|
|
159
|
+
export declare const canvasTokens: {
|
|
160
|
+
bg: {
|
|
161
|
+
editor: string;
|
|
162
|
+
chrome: string;
|
|
163
|
+
elevated: string;
|
|
164
|
+
};
|
|
165
|
+
text: {
|
|
166
|
+
primary: string;
|
|
167
|
+
secondary: string;
|
|
168
|
+
tertiary: string;
|
|
169
|
+
quaternary: string;
|
|
170
|
+
link: string;
|
|
171
|
+
onAccent: string;
|
|
172
|
+
};
|
|
173
|
+
stroke: {
|
|
174
|
+
primary: string;
|
|
175
|
+
secondary: string;
|
|
176
|
+
tertiary: string;
|
|
177
|
+
};
|
|
178
|
+
fill: {
|
|
179
|
+
primary: string;
|
|
180
|
+
secondary: string;
|
|
181
|
+
tertiary: string;
|
|
182
|
+
quaternary: string;
|
|
183
|
+
};
|
|
184
|
+
accent: {
|
|
185
|
+
primary: string;
|
|
186
|
+
control: string;
|
|
187
|
+
controlHover: string;
|
|
188
|
+
};
|
|
189
|
+
diff: {
|
|
190
|
+
insertedLine: string;
|
|
191
|
+
removedLine: string;
|
|
192
|
+
stripAdded: string;
|
|
193
|
+
stripRemoved: string;
|
|
194
|
+
};
|
|
195
|
+
};
|
|
196
|
+
export declare const canvasTokensLight: {
|
|
197
|
+
bg: {
|
|
198
|
+
editor: string;
|
|
199
|
+
chrome: string;
|
|
200
|
+
elevated: string;
|
|
201
|
+
};
|
|
202
|
+
text: {
|
|
203
|
+
primary: string;
|
|
204
|
+
secondary: string;
|
|
205
|
+
tertiary: string;
|
|
206
|
+
quaternary: string;
|
|
207
|
+
link: string;
|
|
208
|
+
onAccent: string;
|
|
209
|
+
};
|
|
210
|
+
stroke: {
|
|
211
|
+
primary: string;
|
|
212
|
+
secondary: string;
|
|
213
|
+
tertiary: string;
|
|
214
|
+
};
|
|
215
|
+
fill: {
|
|
216
|
+
primary: string;
|
|
217
|
+
secondary: string;
|
|
218
|
+
tertiary: string;
|
|
219
|
+
quaternary: string;
|
|
220
|
+
};
|
|
221
|
+
accent: {
|
|
222
|
+
primary: string;
|
|
223
|
+
control: string;
|
|
224
|
+
controlHover: string;
|
|
225
|
+
};
|
|
226
|
+
diff: {
|
|
227
|
+
insertedLine: string;
|
|
228
|
+
removedLine: string;
|
|
229
|
+
stripAdded: string;
|
|
230
|
+
stripRemoved: string;
|
|
231
|
+
};
|
|
232
|
+
};
|
|
233
|
+
export type CanvasTokens = ReturnType<typeof buildTokens>;
|
|
234
|
+
export {};
|
|
235
|
+
//# sourceMappingURL=canvas-tokens.d.ts.map
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chart primitives for `cursor/canvas` — multi-series, stacked, and pie charts
|
|
3
|
+
* rendered as pure inline SVG with zero external dependencies.
|
|
4
|
+
*
|
|
5
|
+
* Distilled from the portal-website Highcharts analytics charting layer.
|
|
6
|
+
*/
|
|
7
|
+
import type { CSSProperties, JSX } from "react";
|
|
8
|
+
/**
|
|
9
|
+
* Semantic tone for a chart series or slice. Mirrors the tone vocabulary
|
|
10
|
+
* used by `Stat`, `Pill`, `Table`, and other SDK primitives so colors
|
|
11
|
+
* match across a canvas — e.g. a `Stat tone="success"` and a
|
|
12
|
+
* `ChartSeries tone="success"` render in the same green.
|
|
13
|
+
*
|
|
14
|
+
* Omit `tone` to let the chart auto-assign a distinct color from the
|
|
15
|
+
* chart palette; supply `tone` only when the value carries semantic
|
|
16
|
+
* meaning that should match other tonal elements on the page.
|
|
17
|
+
*/
|
|
18
|
+
export type ChartTone = "success" | "danger" | "warning" | "info" | "neutral";
|
|
19
|
+
/** A single labeled value, used by `PieChart`. */
|
|
20
|
+
export type ChartDataPoint = {
|
|
21
|
+
label: string;
|
|
22
|
+
/** Non-negative numeric value. */
|
|
23
|
+
value: number;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* A named data series for `BarChart` and `LineChart`.
|
|
27
|
+
* The `data` array aligns by index with the parent component's `categories`.
|
|
28
|
+
* If `tone` is omitted, a color is auto-assigned from the chart palette.
|
|
29
|
+
*/
|
|
30
|
+
export type ChartSeries = {
|
|
31
|
+
name: string;
|
|
32
|
+
data: number[];
|
|
33
|
+
tone?: ChartTone;
|
|
34
|
+
};
|
|
35
|
+
export type BarChartProps = {
|
|
36
|
+
/** Category labels along the independent axis. */
|
|
37
|
+
categories: string[];
|
|
38
|
+
/** One or more data series. Values align by index with `categories`. */
|
|
39
|
+
series: ChartSeries[];
|
|
40
|
+
height?: number;
|
|
41
|
+
/** Stack series on top of each other instead of grouping side-by-side. */
|
|
42
|
+
stacked?: boolean;
|
|
43
|
+
/** Render horizontal bars instead of vertical columns. */
|
|
44
|
+
horizontal?: boolean;
|
|
45
|
+
/** Show as 100% stacked (implies `stacked`). */
|
|
46
|
+
normalized?: boolean;
|
|
47
|
+
/** Suffix for y-axis tick labels (e.g. "%"). */
|
|
48
|
+
valueSuffix?: string;
|
|
49
|
+
style?: CSSProperties;
|
|
50
|
+
};
|
|
51
|
+
export type LineChartProps = {
|
|
52
|
+
categories: string[];
|
|
53
|
+
series: ChartSeries[];
|
|
54
|
+
height?: number;
|
|
55
|
+
/** Fill the area under each line with a soft tint. */
|
|
56
|
+
fill?: boolean;
|
|
57
|
+
valueSuffix?: string;
|
|
58
|
+
style?: CSSProperties;
|
|
59
|
+
};
|
|
60
|
+
export type PieChartProps = {
|
|
61
|
+
data: Array<ChartDataPoint & {
|
|
62
|
+
tone?: ChartTone;
|
|
63
|
+
}>;
|
|
64
|
+
size?: number;
|
|
65
|
+
donut?: boolean;
|
|
66
|
+
style?: CSSProperties;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Multi-series bar/column chart with optional stacking and normalization.
|
|
70
|
+
* Distilled from the portal-website Highcharts analytics charts.
|
|
71
|
+
*
|
|
72
|
+
* Pass `categories` for x-axis labels and one or more `series` whose `data`
|
|
73
|
+
* arrays align by index. With a single series you get simple bars; with
|
|
74
|
+
* multiple series the default is grouped (side-by-side) — set `stacked` for
|
|
75
|
+
* stacked columns or `normalized` for 100%-stacked share-mode.
|
|
76
|
+
*
|
|
77
|
+
* Colors are auto-assigned from the chart palette. With a **single series**,
|
|
78
|
+
* each bar gets a different color by category (so a chart of 5 categories
|
|
79
|
+
* shows 5 colors out of the box). With **multiple series**, each series gets
|
|
80
|
+
* its own color. A legend appears when there are 2+ series.
|
|
81
|
+
*
|
|
82
|
+
* For semantic coloring, pass `tone` on a series — it maps to the same
|
|
83
|
+
* palette entries used by `Stat`, `Pill`, and `Table` so your chart matches
|
|
84
|
+
* tonal elements elsewhere on the page.
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* ```tsx
|
|
88
|
+
* // Simple single-series
|
|
89
|
+
* <BarChart
|
|
90
|
+
* categories={["Mon", "Tue", "Wed"]}
|
|
91
|
+
* series={[{ name: "Requests", data: [120, 90, 150] }]}
|
|
92
|
+
* />
|
|
93
|
+
*
|
|
94
|
+
* // Stacked multi-series (like portal AI commit chart)
|
|
95
|
+
* <BarChart
|
|
96
|
+
* categories={["Mon", "Tue", "Wed"]}
|
|
97
|
+
* series={[
|
|
98
|
+
* { name: "IDE", data: [120, 90, 150] },
|
|
99
|
+
* { name: "CLI", data: [30, 40, 25] },
|
|
100
|
+
* { name: "Cloud", data: [50, 60, 70] },
|
|
101
|
+
* ]}
|
|
102
|
+
* stacked
|
|
103
|
+
* />
|
|
104
|
+
*
|
|
105
|
+
* // Semantic tones — "accepted" renders in the same green as
|
|
106
|
+
* // <Stat tone="success"> elsewhere on the page.
|
|
107
|
+
* <BarChart
|
|
108
|
+
* categories={["Mon", "Tue", "Wed"]}
|
|
109
|
+
* series={[
|
|
110
|
+
* { name: "Accepted", data: [70, 80, 60], tone: "success" },
|
|
111
|
+
* { name: "Rejected", data: [30, 20, 40], tone: "danger" },
|
|
112
|
+
* ]}
|
|
113
|
+
* stacked
|
|
114
|
+
* />
|
|
115
|
+
* ```
|
|
116
|
+
*/
|
|
117
|
+
export declare function BarChart({ categories, series, height, stacked, horizontal, normalized, valueSuffix, style }: BarChartProps): JSX.Element;
|
|
118
|
+
/**
|
|
119
|
+
* Multi-series line chart with optional area fill. Distilled from the
|
|
120
|
+
* portal-website Highcharts analytics charts.
|
|
121
|
+
*
|
|
122
|
+
* Each series draws a polyline with dot markers at each data point.
|
|
123
|
+
* Set `fill` to shade the area under every line. Hover over any category
|
|
124
|
+
* column to see a tooltip with all series values at that point.
|
|
125
|
+
*
|
|
126
|
+
* This is **not** a time-series component — it does not parse dates.
|
|
127
|
+
* Pass pre-formatted date strings as `categories` if plotting over time.
|
|
128
|
+
*
|
|
129
|
+
* Colors are auto-assigned from the chart palette. For semantic coloring,
|
|
130
|
+
* pass `tone` on a series — it maps to the same palette entries used by
|
|
131
|
+
* `Stat`, `Pill`, and `Table`.
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* ```tsx
|
|
135
|
+
* // Single line
|
|
136
|
+
* <LineChart
|
|
137
|
+
* categories={["Jan", "Feb", "Mar", "Apr"]}
|
|
138
|
+
* series={[{ name: "Revenue", data: [100, 140, 120, 180] }]}
|
|
139
|
+
* />
|
|
140
|
+
*
|
|
141
|
+
* // Multi-series with area fill
|
|
142
|
+
* <LineChart
|
|
143
|
+
* categories={["Jan", "Feb", "Mar", "Apr"]}
|
|
144
|
+
* series={[
|
|
145
|
+
* { name: "Accepted", data: [50, 70, 60, 90] },
|
|
146
|
+
* { name: "Suggested", data: [120, 140, 130, 160] },
|
|
147
|
+
* ]}
|
|
148
|
+
* fill
|
|
149
|
+
* />
|
|
150
|
+
*
|
|
151
|
+
* // Semantic tones — "errors" renders in the same red as a
|
|
152
|
+
* // <Pill tone="danger"> elsewhere on the page.
|
|
153
|
+
* <LineChart
|
|
154
|
+
* categories={["00:00", "06:00", "12:00", "18:00"]}
|
|
155
|
+
* series={[
|
|
156
|
+
* { name: "p95 latency", data: [80, 95, 110, 90], tone: "info" },
|
|
157
|
+
* { name: "errors", data: [2, 4, 9, 3], tone: "danger" },
|
|
158
|
+
* ]}
|
|
159
|
+
* />
|
|
160
|
+
* ```
|
|
161
|
+
*/
|
|
162
|
+
export declare function LineChart({ categories, series, height, fill, valueSuffix, style }: LineChartProps): JSX.Element;
|
|
163
|
+
/**
|
|
164
|
+
* Pie (or donut) chart with hover highlighting. Distilled from the
|
|
165
|
+
* portal-website Highcharts analytics charts.
|
|
166
|
+
*
|
|
167
|
+
* Unlike `BarChart` and `LineChart`, `PieChart` takes a flat `data` array of
|
|
168
|
+
* `{ label, value }` points — each slice is its own category. Colors are
|
|
169
|
+
* auto-assigned from the chart palette; pass `tone` on a point to give a
|
|
170
|
+
* slice a semantic color that matches other tonal elements on the page.
|
|
171
|
+
*
|
|
172
|
+
* Hovering a slice expands it outward and dims the others; hovering a legend
|
|
173
|
+
* item does the same. A tooltip with value and percentage appears below the
|
|
174
|
+
* chart. Set `donut` for a hollow center.
|
|
175
|
+
*
|
|
176
|
+
* **Do not** use for bar-style comparisons — use `BarChart` instead.
|
|
177
|
+
*
|
|
178
|
+
* @example
|
|
179
|
+
* ```tsx
|
|
180
|
+
* // Basic pie
|
|
181
|
+
* <PieChart
|
|
182
|
+
* data={[
|
|
183
|
+
* { label: "IDE", value: 120 },
|
|
184
|
+
* { label: "CLI", value: 30 },
|
|
185
|
+
* { label: "Cloud", value: 50 },
|
|
186
|
+
* ]}
|
|
187
|
+
* />
|
|
188
|
+
*
|
|
189
|
+
* // Donut with semantic tones
|
|
190
|
+
* <PieChart
|
|
191
|
+
* data={[
|
|
192
|
+
* { label: "Passing", value: 70, tone: "success" },
|
|
193
|
+
* { label: "Failing", value: 30, tone: "danger" },
|
|
194
|
+
* ]}
|
|
195
|
+
* donut
|
|
196
|
+
* />
|
|
197
|
+
* ```
|
|
198
|
+
*/
|
|
199
|
+
export declare function PieChart({ data, size, donut, style }: PieChartProps): JSX.Element;
|
|
200
|
+
//# sourceMappingURL=chart-primitives.d.ts.map
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure layout math for directed acyclic graphs. Returns positioned node
|
|
3
|
+
* coordinates, edge anchor points, rank bounding boxes, and back-edge flags.
|
|
4
|
+
* Rendering is the caller's responsibility.
|
|
5
|
+
*
|
|
6
|
+
* Handles cycles gracefully: back-edges are detected via DFS, excluded from
|
|
7
|
+
* ranking, and flagged in the output so the caller can render them differently
|
|
8
|
+
* (e.g. dashed arcs).
|
|
9
|
+
*/
|
|
10
|
+
export type DAGLayoutOptions = {
|
|
11
|
+
/** Nodes to lay out. Only `id` is required. */
|
|
12
|
+
nodes: Array<{
|
|
13
|
+
id: string;
|
|
14
|
+
}>;
|
|
15
|
+
/** Directed edges. */
|
|
16
|
+
edges: Array<{
|
|
17
|
+
from: string;
|
|
18
|
+
to: string;
|
|
19
|
+
}>;
|
|
20
|
+
/** Flow direction. Default `"vertical"` (top-to-bottom). */
|
|
21
|
+
direction?: "vertical" | "horizontal";
|
|
22
|
+
/** Node box width in px. Default 160. */
|
|
23
|
+
nodeWidth?: number;
|
|
24
|
+
/** Node box height in px. Default 40. */
|
|
25
|
+
nodeHeight?: number;
|
|
26
|
+
/** Gap between ranks (layers) in px. Default 64. */
|
|
27
|
+
rankGap?: number;
|
|
28
|
+
/** Gap between sibling nodes in the same rank in px. Default 48. */
|
|
29
|
+
nodeGap?: number;
|
|
30
|
+
/** Padding around the bounding box in px. Default 24. */
|
|
31
|
+
padding?: number;
|
|
32
|
+
};
|
|
33
|
+
export type DAGLayoutNode = {
|
|
34
|
+
id: string;
|
|
35
|
+
/** Left edge of the node box. */
|
|
36
|
+
x: number;
|
|
37
|
+
/** Top edge of the node box. */
|
|
38
|
+
y: number;
|
|
39
|
+
/** Layer index (0 = root). */
|
|
40
|
+
rank: number;
|
|
41
|
+
/** Position within the rank (0-indexed). */
|
|
42
|
+
order: number;
|
|
43
|
+
};
|
|
44
|
+
export type DAGLayoutEdge = {
|
|
45
|
+
from: string;
|
|
46
|
+
to: string;
|
|
47
|
+
/** Suggested source anchor point (center of the outgoing side). */
|
|
48
|
+
sourceX: number;
|
|
49
|
+
sourceY: number;
|
|
50
|
+
/** Suggested target anchor point (center of the incoming side). */
|
|
51
|
+
targetX: number;
|
|
52
|
+
targetY: number;
|
|
53
|
+
/** True when this edge was identified as a back-edge (part of a cycle). */
|
|
54
|
+
isBackEdge: boolean;
|
|
55
|
+
};
|
|
56
|
+
export type DAGLayoutRank = {
|
|
57
|
+
/** Rank index (0 = root). */
|
|
58
|
+
rank: number;
|
|
59
|
+
/** Left edge of the rank bounding box. */
|
|
60
|
+
x: number;
|
|
61
|
+
/** Top edge of the rank bounding box. */
|
|
62
|
+
y: number;
|
|
63
|
+
/** Width of the rank bounding box. */
|
|
64
|
+
width: number;
|
|
65
|
+
/** Height of the rank bounding box. */
|
|
66
|
+
height: number;
|
|
67
|
+
/** Node ids in this rank, in order. */
|
|
68
|
+
nodeIds: string[];
|
|
69
|
+
};
|
|
70
|
+
export type DAGLayoutResult = {
|
|
71
|
+
nodes: DAGLayoutNode[];
|
|
72
|
+
edges: DAGLayoutEdge[];
|
|
73
|
+
/** Bounding box per rank — useful for drawing layer bands. */
|
|
74
|
+
ranks: DAGLayoutRank[];
|
|
75
|
+
/** The direction used for this layout. */
|
|
76
|
+
direction: "vertical" | "horizontal";
|
|
77
|
+
/** Total width of the bounding box. */
|
|
78
|
+
width: number;
|
|
79
|
+
/** Total height of the bounding box. */
|
|
80
|
+
height: number;
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Compute a hierarchical layout for a directed graph.
|
|
84
|
+
*
|
|
85
|
+
* Returns node positions, edge anchor points, rank bounding boxes, and
|
|
86
|
+
* back-edge flags. The caller handles all rendering.
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```ts
|
|
90
|
+
* const layout = computeDAGLayout({
|
|
91
|
+
* nodes: [{ id: "a" }, { id: "b" }, { id: "c" }],
|
|
92
|
+
* edges: [{ from: "a", to: "b" }, { from: "b", to: "c" }],
|
|
93
|
+
* });
|
|
94
|
+
*
|
|
95
|
+
* // layout.nodes[i].x / .y → position your own SVG/HTML elements
|
|
96
|
+
* // layout.edges[i].sourceX/Y, targetX/Y → draw lines between them
|
|
97
|
+
* // layout.edges[i].isBackEdge → style cycle edges differently
|
|
98
|
+
* // layout.ranks[i] → draw layer bands behind each rank
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
export declare function computeDAGLayout(options: DAGLayoutOptions): DAGLayoutResult;
|
|
102
|
+
//# sourceMappingURL=dag-layout.d.ts.map
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Low-level diff primitives for the canvas SDK.
|
|
3
|
+
*
|
|
4
|
+
* The canvas diff surface is intentionally minimal — two components that
|
|
5
|
+
* compose with the generic `Card` / `CardHeader` / `CardBody` / `Pill` /
|
|
6
|
+
* `Text` primitives to build any diff layout an agent can imagine:
|
|
7
|
+
*
|
|
8
|
+
* - `DiffView` — a monospaced, syntax-highlighted unified diff renderer.
|
|
9
|
+
* Drops into any container (a `Card`, a table cell, a bare layout,
|
|
10
|
+
* nothing at all). No card chrome, no header, no path display. Pass
|
|
11
|
+
* `path` to auto-detect the language for highlighting, or `language`
|
|
12
|
+
* to override.
|
|
13
|
+
*
|
|
14
|
+
* - `DiffStats` — the canonical `+N` green / `-N` red glyph pair. Use
|
|
15
|
+
* it anywhere a small "added/deleted" summary makes sense — in a
|
|
16
|
+
* `CardHeader`'s `trailing` slot, next to a filename in a file tree,
|
|
17
|
+
* inside a status row, etc.
|
|
18
|
+
*
|
|
19
|
+
* For file-level metadata the preferred composition is to use the
|
|
20
|
+
* generic `Card` family:
|
|
21
|
+
*
|
|
22
|
+
* ```tsx
|
|
23
|
+
* <Card collapsible>
|
|
24
|
+
* <CardHeader trailing={<DiffStats additions={5} deletions={2} />}>
|
|
25
|
+
* src/utils.ts
|
|
26
|
+
* </CardHeader>
|
|
27
|
+
* <CardBody style={{ padding: 0 }}>
|
|
28
|
+
* <DiffView path="src/utils.ts" lines={lines} />
|
|
29
|
+
* </CardBody>
|
|
30
|
+
* </Card>
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
import type { CSSProperties, JSX } from "react";
|
|
34
|
+
export type DiffStatsProps = {
|
|
35
|
+
additions?: number;
|
|
36
|
+
deletions?: number;
|
|
37
|
+
style?: CSSProperties;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Inline `+N` / `-N` glyph pair. Green additions, red deletions, with
|
|
41
|
+
* tabular numerals so columns of stats line up. Renders nothing when
|
|
42
|
+
* both counts are zero.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```tsx
|
|
46
|
+
* <CardHeader trailing={<DiffStats additions={12} deletions={3} />}>
|
|
47
|
+
* src/utils.ts
|
|
48
|
+
* </CardHeader>
|
|
49
|
+
*
|
|
50
|
+
* <Row gap={8}>
|
|
51
|
+
* <Text>Refactor pass</Text>
|
|
52
|
+
* <DiffStats additions={42} deletions={17} />
|
|
53
|
+
* </Row>
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export declare function DiffStats({ additions, deletions, style }: DiffStatsProps): JSX.Element | null;
|
|
57
|
+
export type DiffLineType = "added" | "removed" | "unchanged";
|
|
58
|
+
export type DiffLineData = {
|
|
59
|
+
type: DiffLineType;
|
|
60
|
+
content: string;
|
|
61
|
+
lineNumber?: number;
|
|
62
|
+
};
|
|
63
|
+
export type DiffViewProps = {
|
|
64
|
+
lines: DiffLineData[];
|
|
65
|
+
/**
|
|
66
|
+
* File path used to infer the syntax-highlighting language from the
|
|
67
|
+
* extension (e.g. `"src/utils.ts"` → `typescript`). The most ergonomic
|
|
68
|
+
* way to enable highlighting — pass the same path you show in the
|
|
69
|
+
* enclosing card header. Unknown extensions silently render as plain
|
|
70
|
+
* text.
|
|
71
|
+
*
|
|
72
|
+
* If both `path` and `language` are provided, `language` wins.
|
|
73
|
+
*/
|
|
74
|
+
path?: string;
|
|
75
|
+
/**
|
|
76
|
+
* Explicit language override for syntax highlighting (e.g.
|
|
77
|
+
* `"typescript"`, `"python"`, `"tsx"`). Use this when no file path is
|
|
78
|
+
* available, when the path's extension is misleading, or when the
|
|
79
|
+
* content is a snippet rather than a real file. Accepts common
|
|
80
|
+
* aliases (`ts`, `py`, `rs`, `md`, etc.). Unknown languages silently
|
|
81
|
+
* fall back to plain text.
|
|
82
|
+
*
|
|
83
|
+
* Highlighting is applied per line, so multi-line constructs (block
|
|
84
|
+
* comments, template literals) may not colorize perfectly across line
|
|
85
|
+
* boundaries. For typical diff-sized inputs this is fine.
|
|
86
|
+
*/
|
|
87
|
+
language?: string;
|
|
88
|
+
/** Show line numbers in the gutter. Default `true`. */
|
|
89
|
+
showLineNumbers?: boolean;
|
|
90
|
+
/** Color line numbers green/red for added/removed lines. Default `true`. */
|
|
91
|
+
coloredLineNumbers?: boolean;
|
|
92
|
+
/** Show a 3px accent strip on the left edge for changed lines. Default `true`. */
|
|
93
|
+
showAccentStrip?: boolean;
|
|
94
|
+
style?: CSSProperties;
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Unified diff body renderer with monospaced type, colored line
|
|
98
|
+
* backgrounds, line-number gutter, accent strip, and optional Shiki
|
|
99
|
+
* syntax highlighting.
|
|
100
|
+
*
|
|
101
|
+
* `DiffView` does not provide any surrounding chrome — place it inside
|
|
102
|
+
* a `Card` + `CardBody` (with `padding: 0`) when you want the standard
|
|
103
|
+
* bordered "file diff" look, or drop it anywhere else if you want the
|
|
104
|
+
* bare renderer.
|
|
105
|
+
*
|
|
106
|
+
* Pass `path` to enable syntax highlighting from the file extension.
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* ```tsx
|
|
110
|
+
* <Card>
|
|
111
|
+
* <CardHeader trailing={<DiffStats additions={2} deletions={1} />}>
|
|
112
|
+
* src/utils.ts
|
|
113
|
+
* </CardHeader>
|
|
114
|
+
* <CardBody style={{ padding: 0 }}>
|
|
115
|
+
* <DiffView
|
|
116
|
+
* path="src/utils.ts"
|
|
117
|
+
* lines={[
|
|
118
|
+
* { type: "unchanged", content: "export function add(a: number, b: number): number {", lineNumber: 1 },
|
|
119
|
+
* { type: "removed", content: " return a + b;", lineNumber: 2 },
|
|
120
|
+
* { type: "added", content: " const result = a + b;", lineNumber: 2 },
|
|
121
|
+
* { type: "added", content: " return result;", lineNumber: 3 },
|
|
122
|
+
* { type: "unchanged", content: "}", lineNumber: 4 },
|
|
123
|
+
* ]}
|
|
124
|
+
* />
|
|
125
|
+
* </CardBody>
|
|
126
|
+
* </Card>
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
export declare function DiffView({ lines, path, language, showLineNumbers, coloredLineNumbers, showAccentStrip, style }: DiffViewProps): JSX.Element;
|
|
130
|
+
//# sourceMappingURL=diff-view.d.ts.map
|