@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,194 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Form primitives for `cursor/canvas`. Provides themed, controlled form controls
|
|
3
|
+
* for interactive canvas apps with persistent state. All `onChange` callbacks
|
|
4
|
+
* receive the **value directly** (not a DOM event), so they pair naturally
|
|
5
|
+
* with `useCanvasState`:
|
|
6
|
+
*
|
|
7
|
+
* ```tsx
|
|
8
|
+
* const [name, setName] = useCanvasState("name", "");
|
|
9
|
+
* <TextInput value={name} onChange={setName} placeholder="Enter name…" />
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
import { type CSSProperties, type JSX, type ReactNode } from "react";
|
|
13
|
+
export type TextInputProps = {
|
|
14
|
+
value?: string;
|
|
15
|
+
/** Called with the new string value on every keystroke. */
|
|
16
|
+
onChange?: (value: string) => void;
|
|
17
|
+
placeholder?: string;
|
|
18
|
+
disabled?: boolean;
|
|
19
|
+
type?: "text" | "email" | "password" | "number" | "url" | "search";
|
|
20
|
+
style?: CSSProperties;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Single-line text input (28px height). Use for names, titles, search
|
|
24
|
+
* queries, and short text fields.
|
|
25
|
+
*
|
|
26
|
+
* `onChange` receives the **string value**, not a DOM event — this pairs
|
|
27
|
+
* directly with `useCanvasState` setters.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```tsx
|
|
31
|
+
* const [name, setName] = useCanvasState("name", "");
|
|
32
|
+
*
|
|
33
|
+
* <TextInput value={name} onChange={setName} placeholder="Task title…" />
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare function TextInput({ value, onChange, placeholder, disabled, type, style }: TextInputProps): JSX.Element;
|
|
37
|
+
export type TextAreaProps = {
|
|
38
|
+
value?: string;
|
|
39
|
+
/** Called with the new string value on every keystroke. */
|
|
40
|
+
onChange?: (value: string) => void;
|
|
41
|
+
placeholder?: string;
|
|
42
|
+
disabled?: boolean;
|
|
43
|
+
/** Minimum visible rows. Defaults to 3. */
|
|
44
|
+
rows?: number;
|
|
45
|
+
style?: CSSProperties;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Multi-line text input that auto-resizes to fit its content.
|
|
49
|
+
* Use for notes, descriptions, comments, and multi-line text fields.
|
|
50
|
+
*
|
|
51
|
+
* The textarea grows as the user types. Set `rows` for the minimum visible
|
|
52
|
+
* height (defaults to 3). Override with `style={{ height: "100px" }}` for a
|
|
53
|
+
* fixed size.
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```tsx
|
|
57
|
+
* const [notes, setNotes] = useCanvasState("notes", "");
|
|
58
|
+
*
|
|
59
|
+
* <TextArea value={notes} onChange={setNotes} placeholder="Add notes…" rows={4} />
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export declare function TextArea({ value, onChange, placeholder, disabled, rows, style }: TextAreaProps): JSX.Element;
|
|
63
|
+
export type CheckboxProps = {
|
|
64
|
+
checked?: boolean;
|
|
65
|
+
/** Called with the new boolean value when toggled. */
|
|
66
|
+
onChange?: (checked: boolean) => void;
|
|
67
|
+
disabled?: boolean;
|
|
68
|
+
/** Optional label rendered beside the checkbox. Clicking the label toggles the checkbox. */
|
|
69
|
+
label?: ReactNode;
|
|
70
|
+
style?: CSSProperties;
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Checkbox with optional label (accent blue when checked).
|
|
74
|
+
*
|
|
75
|
+
* Pass `label` to render a clickable text label beside the checkbox. Without a
|
|
76
|
+
* label, provide `title` or wrap in your own `<label>` for accessibility.
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```tsx
|
|
80
|
+
* const [agreed, setAgreed] = useCanvasState("agreed", false);
|
|
81
|
+
*
|
|
82
|
+
* <Checkbox checked={agreed} onChange={setAgreed} label="I agree to the terms" />
|
|
83
|
+
* ```
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```tsx
|
|
87
|
+
* // Checkbox in a list — no label, parent handles layout
|
|
88
|
+
* <Checkbox checked={item.done} onChange={(v) => toggleItem(item.id, v)} />
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
export declare function Checkbox({ checked, onChange, disabled, label, style }: CheckboxProps): JSX.Element;
|
|
92
|
+
export type ToggleProps = {
|
|
93
|
+
checked?: boolean;
|
|
94
|
+
/** Called with the new boolean value when toggled. */
|
|
95
|
+
onChange?: (checked: boolean) => void;
|
|
96
|
+
disabled?: boolean;
|
|
97
|
+
/** `sm` = 16px track, `md` = 20px track (default `sm`). */
|
|
98
|
+
size?: "sm" | "md";
|
|
99
|
+
style?: CSSProperties;
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Boolean toggle switch. Uses the accent color for the "on" state and a
|
|
103
|
+
* neutral fill for "off".
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```tsx
|
|
107
|
+
* const [enabled, setEnabled] = useCanvasState("enabled", false);
|
|
108
|
+
*
|
|
109
|
+
* <Row gap={8} align="center">
|
|
110
|
+
* <Text>Notifications</Text>
|
|
111
|
+
* <Spacer />
|
|
112
|
+
* <Toggle checked={enabled} onChange={setEnabled} />
|
|
113
|
+
* </Row>
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
export declare function Toggle({ checked, onChange, disabled, size, style }: ToggleProps): JSX.Element;
|
|
117
|
+
export type SelectOption = {
|
|
118
|
+
value: string;
|
|
119
|
+
label: string;
|
|
120
|
+
disabled?: boolean;
|
|
121
|
+
};
|
|
122
|
+
export type SelectProps = {
|
|
123
|
+
value?: string;
|
|
124
|
+
/** Called with the new selected value. */
|
|
125
|
+
onChange?: (value: string) => void;
|
|
126
|
+
/** List of options. Each must have a unique `value`. */
|
|
127
|
+
options: SelectOption[];
|
|
128
|
+
/** Placeholder shown when no value is selected. */
|
|
129
|
+
placeholder?: string;
|
|
130
|
+
disabled?: boolean;
|
|
131
|
+
style?: CSSProperties;
|
|
132
|
+
};
|
|
133
|
+
/**
|
|
134
|
+
* Dropdown select (native `<select>` with themed styling).
|
|
135
|
+
*
|
|
136
|
+
* Uses a native `<select>` under the hood for reliable keyboard, screen-reader,
|
|
137
|
+
* and mobile support. The dropdown list uses OS-native styling.
|
|
138
|
+
*
|
|
139
|
+
* @example
|
|
140
|
+
* ```tsx
|
|
141
|
+
* const [priority, setPriority] = useCanvasState("priority", "medium");
|
|
142
|
+
*
|
|
143
|
+
* <Select
|
|
144
|
+
* value={priority}
|
|
145
|
+
* onChange={setPriority}
|
|
146
|
+
* options={[
|
|
147
|
+
* { value: "low", label: "Low" },
|
|
148
|
+
* { value: "medium", label: "Medium" },
|
|
149
|
+
* { value: "high", label: "High" },
|
|
150
|
+
* ]}
|
|
151
|
+
* />
|
|
152
|
+
* ```
|
|
153
|
+
*/
|
|
154
|
+
export declare function Select({ value, onChange, options, placeholder, disabled, style }: SelectProps): JSX.Element;
|
|
155
|
+
export type IconButtonProps = {
|
|
156
|
+
/** Icon content: an SVG element, emoji, or unicode character. */
|
|
157
|
+
children: ReactNode;
|
|
158
|
+
onClick?: () => void;
|
|
159
|
+
disabled?: boolean;
|
|
160
|
+
/** Tooltip text. Always provide for accessibility since there is no text label. */
|
|
161
|
+
title?: string;
|
|
162
|
+
/**
|
|
163
|
+
* `"default"` is transparent until hovered; `"circle"` has a permanent
|
|
164
|
+
* background fill.
|
|
165
|
+
*/
|
|
166
|
+
variant?: "default" | "circle";
|
|
167
|
+
/** `sm` = 16px, `md` = 20px (default `md`). */
|
|
168
|
+
size?: "sm" | "md";
|
|
169
|
+
style?: CSSProperties;
|
|
170
|
+
};
|
|
171
|
+
/**
|
|
172
|
+
* Compact icon-only button for inline actions on list items (delete, edit,
|
|
173
|
+
* expand, etc.). Accepts **any** `children` as the icon — use an inline SVG,
|
|
174
|
+
* an emoji, or a unicode character.
|
|
175
|
+
*
|
|
176
|
+
* Always provide `title` for accessibility (screen-reader label + tooltip).
|
|
177
|
+
*
|
|
178
|
+
* Canvas has no icon font, so pass icon content directly.
|
|
179
|
+
*
|
|
180
|
+
* @example
|
|
181
|
+
* ```tsx
|
|
182
|
+
* // Delete button on a card
|
|
183
|
+
* <IconButton title="Delete" onClick={() => remove(id)}>✕</IconButton>
|
|
184
|
+
*
|
|
185
|
+
* // Edit button with an SVG icon
|
|
186
|
+
* <IconButton title="Edit" variant="circle" size="sm" onClick={edit}>
|
|
187
|
+
* <svg width={12} height={12} viewBox="0 0 12 12" fill="none">
|
|
188
|
+
* <path d="M8.5 1.5l2 2L4 10H2V8z" stroke="currentColor" strokeWidth={1.2} />
|
|
189
|
+
* </svg>
|
|
190
|
+
* </IconButton>
|
|
191
|
+
* ```
|
|
192
|
+
*/
|
|
193
|
+
export declare function IconButton({ children, onClick, disabled, title, variant, size, style }: IconButtonProps): JSX.Element;
|
|
194
|
+
//# sourceMappingURL=form-primitives.d.ts.map
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import type { CanvasPalette, CanvasTokens } from "./canvas-tokens.js";
|
|
2
|
+
import { type CanvasAction } from "./internal/canvas-action-dispatch.js";
|
|
3
|
+
/**
|
|
4
|
+
* Host theme for the current canvas. Semantic color groups (`text`, `bg`,
|
|
5
|
+
* `fill`, `stroke`, `accent`, `diff`) live at the top level for ergonomic
|
|
6
|
+
* inline-style access; `tokens` is also present as a self-reference for
|
|
7
|
+
* callers that prefer a namespaced form.
|
|
8
|
+
*/
|
|
9
|
+
export interface CanvasHostTheme extends CanvasTokens {
|
|
10
|
+
readonly kind: string;
|
|
11
|
+
readonly tokens: CanvasTokens;
|
|
12
|
+
readonly palette: CanvasPalette;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Returns the current host theme. Falls back to dark mode when no host
|
|
16
|
+
* state is available.
|
|
17
|
+
*
|
|
18
|
+
* Semantic color groups are available directly on the returned object —
|
|
19
|
+
* `accent`, `text`, `bg`, `fill`, `stroke`, `diff` — as well as `kind`
|
|
20
|
+
* (`"dark"` | `"light"` | …) and `palette` (the flat color palette).
|
|
21
|
+
*
|
|
22
|
+
* Call `useHostTheme()` inside each component that needs theme access —
|
|
23
|
+
* the returned object is scoped to that component, not shared across
|
|
24
|
+
* function boundaries.
|
|
25
|
+
*
|
|
26
|
+
* Stable paths for `style={{ ... }}` usage:
|
|
27
|
+
* - `text.primary / secondary / tertiary / quaternary` — text hierarchy
|
|
28
|
+
* - `bg.editor / chrome / elevated` — surface backgrounds
|
|
29
|
+
* - `fill.primary / secondary / tertiary / quaternary` — tinted fills
|
|
30
|
+
* - `stroke.primary / secondary / tertiary` — borders and dividers
|
|
31
|
+
* - `accent.primary / control` — accent blue and button background
|
|
32
|
+
* - `text.link` — link color
|
|
33
|
+
* - `text.onAccent` — text on accent-colored surfaces
|
|
34
|
+
*
|
|
35
|
+
* Prefer built-in components (`Card`, `Button`, `Text`, etc.) over raw
|
|
36
|
+
* token usage. Reach for tokens only when no component covers the case,
|
|
37
|
+
* and stick to flat solid colors — no gradients, no box-shadows.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```tsx
|
|
41
|
+
* function Overview() {
|
|
42
|
+
* const theme = useHostTheme();
|
|
43
|
+
* return (
|
|
44
|
+
* <div style={{ background: theme.fill.tertiary, color: theme.text.secondary, padding: 8 }}>
|
|
45
|
+
* <span style={{ color: theme.accent.primary }}>Accent text</span>
|
|
46
|
+
* </div>
|
|
47
|
+
* );
|
|
48
|
+
* }
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare function useHostTheme(): CanvasHostTheme;
|
|
52
|
+
/**
|
|
53
|
+
* Setter for `useCanvasState`. Accepts either a new value or an updater
|
|
54
|
+
* function that receives the previous value.
|
|
55
|
+
*/
|
|
56
|
+
export type SetCanvasState<T> = (action: T | ((prev: T) => T)) => void;
|
|
57
|
+
/**
|
|
58
|
+
* Persistent state hook for canvas applications. Works like `React.useState`
|
|
59
|
+
* but the value survives rebuilds, reloads, and IDE restarts — it is stored
|
|
60
|
+
* in a `.canvas.data.json` sidecar file next to the canvas source.
|
|
61
|
+
*
|
|
62
|
+
* Each key is a unique string chosen by the canvas author. Keys are stable
|
|
63
|
+
* regardless of hook call order or component tree structure.
|
|
64
|
+
*
|
|
65
|
+
* @param key - Unique string identifier for this piece of state.
|
|
66
|
+
* @param defaultValue - Value returned when no persisted value exists for `key`.
|
|
67
|
+
* @returns A `[value, setValue]` tuple, same shape as `React.useState`.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```tsx
|
|
71
|
+
* function Counter() {
|
|
72
|
+
* const [count, setCount] = useCanvasState("count", 0);
|
|
73
|
+
* return <Button onClick={() => setCount(c => c + 1)}>{count}</Button>;
|
|
74
|
+
* }
|
|
75
|
+
* ```
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```tsx
|
|
79
|
+
* interface Column { id: string; title: string; cardIds: string[] }
|
|
80
|
+
* function KanbanBoard() {
|
|
81
|
+
* const [columns, setColumns] = useCanvasState<Column[]>("columns", [
|
|
82
|
+
* { id: "todo", title: "To Do", cardIds: [] },
|
|
83
|
+
* { id: "doing", title: "In Progress", cardIds: [] },
|
|
84
|
+
* { id: "done", title: "Done", cardIds: [] },
|
|
85
|
+
* ]);
|
|
86
|
+
* // ...
|
|
87
|
+
* }
|
|
88
|
+
* ```
|
|
89
|
+
*/
|
|
90
|
+
export declare function useCanvasState<T>(key: string, defaultValue: T): [T, SetCanvasState<T>];
|
|
91
|
+
export type { CanvasAction };
|
|
92
|
+
/**
|
|
93
|
+
* Returns a stable `dispatch` function for triggering IDE actions from
|
|
94
|
+
* canvas buttons. Actions are fire-and-forget — the canvas does not
|
|
95
|
+
* receive a response.
|
|
96
|
+
*
|
|
97
|
+
* ## Available actions
|
|
98
|
+
*
|
|
99
|
+
* **`openAgent`** — Navigate the IDE to an agent conversation.
|
|
100
|
+
* `agentId` is the conversation UUID (the filename stem from the
|
|
101
|
+
* `agent-transcripts/` directory). Works for both local and
|
|
102
|
+
* cloud/background agents in Glass and classic IDE modes.
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```tsx
|
|
106
|
+
* function AgentLink({ agentId, title }: { agentId: string; title: string }) {
|
|
107
|
+
* const dispatch = useCanvasAction();
|
|
108
|
+
* return (
|
|
109
|
+
* <Button onClick={() => dispatch({ type: "openAgent", agentId })}>
|
|
110
|
+
* {title}
|
|
111
|
+
* </Button>
|
|
112
|
+
* );
|
|
113
|
+
* }
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
export declare function useCanvasAction(): (action: CanvasAction) => void;
|
|
117
|
+
//# sourceMappingURL=hooks.d.ts.map
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public API for authoring `.canvas.tsx` files via `cursor/canvas`.
|
|
3
|
+
*
|
|
4
|
+
* Be creative with layout — use Grid, Row, cards, charts, tables, and raw SVG
|
|
5
|
+
* in whatever combination serves the content. Read the canvas skill for full
|
|
6
|
+
* design guidance. Key constraints:
|
|
7
|
+
*
|
|
8
|
+
* - Colors from `useHostTheme()` tokens. No hardcoded hex.
|
|
9
|
+
* - No gradients, no box-shadows, no emojis as decoration.
|
|
10
|
+
* - Don't wrap every section in Card — mix open sections with cards.
|
|
11
|
+
* - Run the pre-delivery self-check before returning code.
|
|
12
|
+
*/
|
|
13
|
+
/** Charts. */
|
|
14
|
+
export type { BarChartProps, ChartDataPoint, ChartSeries, ChartTone, LineChartProps, PieChartProps, } from "./chart-primitives.js";
|
|
15
|
+
export { BarChart, LineChart, PieChart } from "./chart-primitives.js";
|
|
16
|
+
/** DAG layout. */
|
|
17
|
+
export type { DAGLayoutEdge, DAGLayoutNode, DAGLayoutOptions, DAGLayoutRank, DAGLayoutResult, } from "./dag-layout.js";
|
|
18
|
+
export { computeDAGLayout } from "./dag-layout.js";
|
|
19
|
+
/**
|
|
20
|
+
* Diff rendering. Compose with the generic `Card` family for file-level
|
|
21
|
+
* chrome: use `DiffView` inside a `CardBody` (with `padding: 0`) and put
|
|
22
|
+
* `DiffStats` in the enclosing `CardHeader`'s `trailing` slot.
|
|
23
|
+
*/
|
|
24
|
+
export type { DiffLineData, DiffLineType, DiffStatsProps, DiffViewProps, } from "./diff-view.js";
|
|
25
|
+
export { DiffStats, DiffView } from "./diff-view.js";
|
|
26
|
+
/** Form controls. */
|
|
27
|
+
export type { CheckboxProps, IconButtonProps, SelectOption, SelectProps, TextAreaProps, TextInputProps, ToggleProps, } from "./form-primitives.js";
|
|
28
|
+
export { Checkbox, IconButton, Select, TextArea, TextInput, Toggle, } from "./form-primitives.js";
|
|
29
|
+
/** Host state hooks. */
|
|
30
|
+
export type { CanvasAction, CanvasHostTheme, SetCanvasState } from "./hooks.js";
|
|
31
|
+
export { useCanvasAction, useCanvasState, useHostTheme } from "./hooks.js";
|
|
32
|
+
/** Semantic design tokens for custom styling. */
|
|
33
|
+
export type { CanvasPalette, CanvasTokens } from "./theme.js";
|
|
34
|
+
export { canvasPaletteDark, canvasPaletteLight, canvasTokens, canvasTokensLight, } from "./theme.js";
|
|
35
|
+
export type { TodoItem, TodoListCardProps, TodoListProps, TodoStatus, } from "./todo-list.js";
|
|
36
|
+
export { TodoList, TodoListCard } from "./todo-list.js";
|
|
37
|
+
/** Component props types. */
|
|
38
|
+
export type { ButtonProps, CalloutProps, CalloutTone, CardBodyProps, CardHeaderProps, CardProps, CardSize, CardVariant, CodeProps, DividerProps, GridProps, H1Props, H2Props, H3Props, LinkProps, PillProps, PillSize, PillTone, RowProps, StackProps, StatProps, StatTone, TableColumnAlign, TableProps, TableRowTone, TextProps, TextWeight, } from "./ui-primitives.js";
|
|
39
|
+
/** Layout. */
|
|
40
|
+
/** Typography. */
|
|
41
|
+
/** Surfaces. */
|
|
42
|
+
/** Actions. */
|
|
43
|
+
/** Feedback. */
|
|
44
|
+
export { Button, Callout, Card, CardBody, CardHeader, Code, Divider, Grid, H1, H2, H3, Link,
|
|
45
|
+
/** Shallow-merge two style objects. Useful for combining tokens with overrides. */
|
|
46
|
+
mergeStyle, Pill, Row, Spacer, Stack, Stat, Table, Text, } from "./ui-primitives.js";
|
|
47
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export type { CanvasPalette, CanvasTokens } from "./canvas-tokens.js";
|
|
2
|
+
export { canvasPaletteDark, canvasPaletteLight, canvasTokens, canvasTokensLight, } from "./canvas-tokens.js";
|
|
3
|
+
/** Typography presets used by the built-in `cursor/canvas` components. */
|
|
4
|
+
export declare const canvasTypography: {
|
|
5
|
+
readonly h1: {
|
|
6
|
+
readonly fontSize: "24px";
|
|
7
|
+
readonly lineHeight: "30px";
|
|
8
|
+
readonly fontWeight: 590;
|
|
9
|
+
};
|
|
10
|
+
readonly h2: {
|
|
11
|
+
readonly fontSize: "18px";
|
|
12
|
+
readonly lineHeight: "24px";
|
|
13
|
+
readonly fontWeight: 590;
|
|
14
|
+
};
|
|
15
|
+
readonly h3: {
|
|
16
|
+
readonly fontSize: "16px";
|
|
17
|
+
readonly lineHeight: "22px";
|
|
18
|
+
readonly fontWeight: 590;
|
|
19
|
+
};
|
|
20
|
+
readonly body: {
|
|
21
|
+
readonly fontSize: "14px";
|
|
22
|
+
readonly lineHeight: "20px";
|
|
23
|
+
readonly fontWeight: 400;
|
|
24
|
+
};
|
|
25
|
+
readonly small: {
|
|
26
|
+
readonly fontSize: "12px";
|
|
27
|
+
readonly lineHeight: "16px";
|
|
28
|
+
readonly fontWeight: 400;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
/** Spacing scale (px). */
|
|
32
|
+
export declare const canvasSpacing: {
|
|
33
|
+
readonly "0.5": 2;
|
|
34
|
+
readonly "1": 4;
|
|
35
|
+
readonly "1.5": 6;
|
|
36
|
+
readonly "2": 8;
|
|
37
|
+
readonly "2.5": 10;
|
|
38
|
+
readonly "3": 12;
|
|
39
|
+
readonly "3.5": 14;
|
|
40
|
+
readonly "4": 16;
|
|
41
|
+
readonly "4.5": 18;
|
|
42
|
+
readonly "5": 20;
|
|
43
|
+
readonly "6": 24;
|
|
44
|
+
readonly "7": 28;
|
|
45
|
+
readonly "8": 32;
|
|
46
|
+
readonly "9": 36;
|
|
47
|
+
readonly "10": 40;
|
|
48
|
+
};
|
|
49
|
+
export type CanvasSpacing = typeof canvasSpacing;
|
|
50
|
+
/** Border radius (px). */
|
|
51
|
+
export declare const canvasRadius: {
|
|
52
|
+
readonly none: 0;
|
|
53
|
+
readonly xs: 2;
|
|
54
|
+
readonly sm: 4;
|
|
55
|
+
readonly md: 6;
|
|
56
|
+
readonly lg: 8;
|
|
57
|
+
readonly xl: 12;
|
|
58
|
+
readonly full: 9999;
|
|
59
|
+
};
|
|
60
|
+
export type CanvasRadius = typeof canvasRadius;
|
|
61
|
+
//# sourceMappingURL=theme.d.ts.map
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { CSSProperties, JSX } from "react";
|
|
2
|
+
export type TodoStatus = "pending" | "in_progress" | "completed" | "cancelled";
|
|
3
|
+
export interface TodoItem {
|
|
4
|
+
readonly id: string;
|
|
5
|
+
readonly content: string;
|
|
6
|
+
readonly status: TodoStatus;
|
|
7
|
+
}
|
|
8
|
+
export type TodoListProps = {
|
|
9
|
+
todos: readonly TodoItem[];
|
|
10
|
+
dimmedTodoIds?: ReadonlySet<string>;
|
|
11
|
+
/** Called when a todo row is clicked (entire row is a button). */
|
|
12
|
+
onTodoClick?: (todo: TodoItem) => void;
|
|
13
|
+
style?: CSSProperties;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Task list with status icons and wrapping text. Each row is a **clickable**
|
|
17
|
+
* button; use `onTodoClick` to handle selection or navigation.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```tsx
|
|
21
|
+
* <TodoList
|
|
22
|
+
* todos={items}
|
|
23
|
+
* onTodoClick={(todo) => setActiveId(todo.id)}
|
|
24
|
+
* />
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export declare function TodoList({ todos, dimmedTodoIds, onTodoClick, style }: TodoListProps): JSX.Element | null;
|
|
28
|
+
export type TodoListCardProps = {
|
|
29
|
+
todos: readonly TodoItem[];
|
|
30
|
+
dimmedTodoIds?: ReadonlySet<string>;
|
|
31
|
+
defaultExpanded?: boolean;
|
|
32
|
+
onTodoClick?: (todo: TodoItem) => void;
|
|
33
|
+
style?: CSSProperties;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Bordered, collapsible todo list with summary header (N of M Done). Compose
|
|
37
|
+
* with `onTodoClick` for row actions.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```tsx
|
|
41
|
+
* <TodoListCard
|
|
42
|
+
* todos={items}
|
|
43
|
+
* defaultExpanded
|
|
44
|
+
* onTodoClick={(todo) => console.log(todo.id)}
|
|
45
|
+
* />
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export declare function TodoListCard({ todos, dimmedTodoIds, defaultExpanded, onTodoClick, style }: TodoListCardProps): JSX.Element | null;
|
|
49
|
+
//# sourceMappingURL=todo-list.d.ts.map
|