claudeinone-cli 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +16 -1
- package/kit/.claude/.ck.json +9 -0
- package/kit/.claude/.ckignore +12 -0
- package/kit/.claude/agents/accessibility-auditor.md +46 -0
- package/kit/.claude/agents/api-designer.md +43 -0
- package/kit/.claude/agents/backend-developer.md +54 -0
- package/kit/.claude/agents/brainstormer.md +33 -0
- package/kit/.claude/agents/campaign-manager.md +36 -0
- package/kit/.claude/agents/code-reviewer.md +39 -0
- package/kit/.claude/agents/content-creator.md +38 -0
- package/kit/.claude/agents/copywriter.md +42 -0
- package/kit/.claude/agents/database-admin.md +37 -0
- package/kit/.claude/agents/debugger.md +46 -0
- package/kit/.claude/agents/devops-engineer.md +41 -0
- package/kit/.claude/agents/docs-manager.md +33 -0
- package/kit/.claude/agents/email-wizard.md +40 -0
- package/kit/.claude/agents/frontend-developer.md +52 -0
- package/kit/.claude/agents/fullstack-developer.md +55 -0
- package/kit/.claude/agents/git-manager.md +40 -0
- package/kit/.claude/agents/i18n-specialist.md +46 -0
- package/kit/.claude/agents/integration-specialist.md +48 -0
- package/kit/.claude/agents/journal-writer.md +39 -0
- package/kit/.claude/agents/mcp-manager.md +57 -0
- package/kit/.claude/agents/mobile-developer.md +38 -0
- package/kit/.claude/agents/performance-optimizer.md +38 -0
- package/kit/.claude/agents/planner.md +56 -0
- package/kit/.claude/agents/project-manager.md +34 -0
- package/kit/.claude/agents/refactorer.md +43 -0
- package/kit/.claude/agents/researcher.md +45 -0
- package/kit/.claude/agents/risk-analyst.md +33 -0
- package/kit/.claude/agents/scalability-consultant.md +39 -0
- package/kit/.claude/agents/scout.md +25 -0
- package/kit/.claude/agents/security-auditor.md +42 -0
- package/kit/.claude/agents/seo-specialist.md +44 -0
- package/kit/.claude/agents/skill-creator.md +64 -0
- package/kit/.claude/agents/social-media-manager.md +35 -0
- package/kit/.claude/agents/systems-designer.md +35 -0
- package/kit/.claude/agents/technology-strategist.md +43 -0
- package/kit/.claude/agents/tester.md +40 -0
- package/kit/.claude/agents/ui-ux-designer.md +40 -0
- package/kit/.claude/commands/co/ask.md +29 -0
- package/kit/.claude/commands/co/bootstrap-auto-fast.md +28 -0
- package/kit/.claude/commands/co/bootstrap-auto-parallel.md +29 -0
- package/kit/.claude/commands/co/bootstrap-auto.md +30 -0
- package/kit/.claude/commands/co/bootstrap.md +31 -0
- package/kit/.claude/commands/co/brainstorm.md +27 -0
- package/kit/.claude/commands/co/campaign.md +28 -0
- package/kit/.claude/commands/co/changelog.md +25 -0
- package/kit/.claude/commands/co/checkpoint.md +25 -0
- package/kit/.claude/commands/co/ci.md +26 -0
- package/kit/.claude/commands/co/ck-help.md +24 -0
- package/kit/.claude/commands/co/coding-level.md +24 -0
- package/kit/.claude/commands/co/content-cro.md +26 -0
- package/kit/.claude/commands/co/content-enhance.md +26 -0
- package/kit/.claude/commands/co/content-fast.md +24 -0
- package/kit/.claude/commands/co/content-good.md +26 -0
- package/kit/.claude/commands/co/cook.md +33 -0
- package/kit/.claude/commands/co/debug.md +26 -0
- package/kit/.claude/commands/co/deploy.md +25 -0
- package/kit/.claude/commands/co/design-3d.md +27 -0
- package/kit/.claude/commands/co/design-describe.md +25 -0
- package/kit/.claude/commands/co/design-fast.md +25 -0
- package/kit/.claude/commands/co/design-good.md +28 -0
- package/kit/.claude/commands/co/design-screenshot.md +26 -0
- package/kit/.claude/commands/co/design-video.md +26 -0
- package/kit/.claude/commands/co/docker.md +24 -0
- package/kit/.claude/commands/co/docs-api.md +25 -0
- package/kit/.claude/commands/co/docs-init.md +26 -0
- package/kit/.claude/commands/co/docs-readme.md +24 -0
- package/kit/.claude/commands/co/docs-summarize.md +25 -0
- package/kit/.claude/commands/co/docs-update.md +25 -0
- package/kit/.claude/commands/co/env-check.md +25 -0
- package/kit/.claude/commands/co/fix-ci.md +29 -0
- package/kit/.claude/commands/co/fix-fast.md +28 -0
- package/kit/.claude/commands/co/fix-hard.md +33 -0
- package/kit/.claude/commands/co/fix-logs.md +28 -0
- package/kit/.claude/commands/co/fix-types.md +28 -0
- package/kit/.claude/commands/co/fix-ui.md +28 -0
- package/kit/.claude/commands/co/fix.md +27 -0
- package/kit/.claude/commands/co/git-cm.md +26 -0
- package/kit/.claude/commands/co/git-cp.md +26 -0
- package/kit/.claude/commands/co/git-pr.md +26 -0
- package/kit/.claude/commands/co/index.md +24 -0
- package/kit/.claude/commands/co/integrate-polar.md +29 -0
- package/kit/.claude/commands/co/integrate-sepay.md +29 -0
- package/kit/.claude/commands/co/journal.md +27 -0
- package/kit/.claude/commands/co/k8s.md +24 -0
- package/kit/.claude/commands/co/kanban.md +25 -0
- package/kit/.claude/commands/co/lint-fix.md +24 -0
- package/kit/.claude/commands/co/load.md +25 -0
- package/kit/.claude/commands/co/migrate.md +28 -0
- package/kit/.claude/commands/co/mock.md +26 -0
- package/kit/.claude/commands/co/mode.md +24 -0
- package/kit/.claude/commands/co/monitor.md +25 -0
- package/kit/.claude/commands/co/new-feature.md +27 -0
- package/kit/.claude/commands/co/optimize.md +26 -0
- package/kit/.claude/commands/co/plan-archive.md +24 -0
- package/kit/.claude/commands/co/plan-ci.md +28 -0
- package/kit/.claude/commands/co/plan-cro.md +27 -0
- package/kit/.claude/commands/co/plan-fast.md +24 -0
- package/kit/.claude/commands/co/plan-hard.md +27 -0
- package/kit/.claude/commands/co/plan-parallel.md +25 -0
- package/kit/.claude/commands/co/plan-two.md +29 -0
- package/kit/.claude/commands/co/plan-validate.md +27 -0
- package/kit/.claude/commands/co/plan.md +27 -0
- package/kit/.claude/commands/co/pr.md +25 -0
- package/kit/.claude/commands/co/preview.md +26 -0
- package/kit/.claude/commands/co/refactor.md +25 -0
- package/kit/.claude/commands/co/release.md +25 -0
- package/kit/.claude/commands/co/review-a11y.md +24 -0
- package/kit/.claude/commands/co/review-codebase-parallel.md +27 -0
- package/kit/.claude/commands/co/review-codebase.md +27 -0
- package/kit/.claude/commands/co/review-perf.md +24 -0
- package/kit/.claude/commands/co/review-security.md +25 -0
- package/kit/.claude/commands/co/scaffold.md +25 -0
- package/kit/.claude/commands/co/scout.md +26 -0
- package/kit/.claude/commands/co/secure.md +26 -0
- package/kit/.claude/commands/co/seed.md +25 -0
- package/kit/.claude/commands/co/seo-audit.md +24 -0
- package/kit/.claude/commands/co/seo-keywords.md +25 -0
- package/kit/.claude/commands/co/skill-create.md +29 -0
- package/kit/.claude/commands/co/skill-fix-logs.md +28 -0
- package/kit/.claude/commands/co/slide-create.md +24 -0
- package/kit/.claude/commands/co/spawn.md +24 -0
- package/kit/.claude/commands/co/terraform.md +24 -0
- package/kit/.claude/commands/co/test-gen.md +24 -0
- package/kit/.claude/commands/co/test-ui.md +27 -0
- package/kit/.claude/commands/co/test.md +26 -0
- package/kit/.claude/commands/co/use-mcp.md +25 -0
- package/kit/.claude/commands/co/video-script.md +25 -0
- package/kit/.claude/commands/co/watzup.md +25 -0
- package/kit/.claude/commands/co/worktree.md +25 -0
- package/kit/.claude/commands/co/write-blog.md +25 -0
- package/kit/.claude/commands/co/write-copy.md +24 -0
- package/kit/.claude/commands/co/write-email.md +25 -0
- package/kit/.claude/commands/content/content-cro.md +26 -0
- package/kit/.claude/commands/content/content-enhance.md +26 -0
- package/kit/.claude/commands/content/content-fast.md +24 -0
- package/kit/.claude/commands/content/content-good.md +26 -0
- package/kit/.claude/commands/content/enhance.md +26 -0
- package/kit/.claude/commands/content/good.md +26 -0
- package/kit/.claude/commands/core/ask.md +29 -0
- package/kit/.claude/commands/core/bootstrap-auto-fast.md +28 -0
- package/kit/.claude/commands/core/bootstrap-auto-parallel.md +29 -0
- package/kit/.claude/commands/core/bootstrap-auto.md +30 -0
- package/kit/.claude/commands/core/bootstrap.md +31 -0
- package/kit/.claude/commands/core/ck-help.md +24 -0
- package/kit/.claude/commands/core/coding-level.md +24 -0
- package/kit/.claude/commands/core/cook.md +33 -0
- package/kit/.claude/commands/core/debug.md +26 -0
- package/kit/.claude/commands/core/journal.md +27 -0
- package/kit/.claude/commands/core/kanban.md +25 -0
- package/kit/.claude/commands/core/preview.md +26 -0
- package/kit/.claude/commands/core/scout.md +26 -0
- package/kit/.claude/commands/core/test-ui.md +27 -0
- package/kit/.claude/commands/core/test.md +26 -0
- package/kit/.claude/commands/core/use-mcp.md +25 -0
- package/kit/.claude/commands/core/watzup.md +25 -0
- package/kit/.claude/commands/core/worktree.md +25 -0
- package/kit/.claude/commands/design/3d.md +27 -0
- package/kit/.claude/commands/design/design-3d.md +27 -0
- package/kit/.claude/commands/design/design-describe.md +25 -0
- package/kit/.claude/commands/design/design-fast.md +25 -0
- package/kit/.claude/commands/design/design-good.md +28 -0
- package/kit/.claude/commands/design/design-screenshot.md +26 -0
- package/kit/.claude/commands/design/design-video.md +26 -0
- package/kit/.claude/commands/design/good.md +28 -0
- package/kit/.claude/commands/design/video.md +26 -0
- package/kit/.claude/commands/docs/docs-init.md +26 -0
- package/kit/.claude/commands/docs/docs-summarize.md +25 -0
- package/kit/.claude/commands/docs/docs-update.md +25 -0
- package/kit/.claude/commands/docs/init.md +26 -0
- package/kit/.claude/commands/docs/summarize.md +25 -0
- package/kit/.claude/commands/fix/ci.md +29 -0
- package/kit/.claude/commands/fix/fast.md +28 -0
- package/kit/.claude/commands/fix/fix-ci.md +29 -0
- package/kit/.claude/commands/fix/fix-fast.md +28 -0
- package/kit/.claude/commands/fix/fix-hard.md +33 -0
- package/kit/.claude/commands/fix/fix-logs.md +28 -0
- package/kit/.claude/commands/fix/fix-types.md +28 -0
- package/kit/.claude/commands/fix/fix-ui.md +28 -0
- package/kit/.claude/commands/fix/hard.md +33 -0
- package/kit/.claude/commands/fix/logs.md +28 -0
- package/kit/.claude/commands/fix/types.md +28 -0
- package/kit/.claude/commands/fix/ui.md +28 -0
- package/kit/.claude/commands/git/cp.md +26 -0
- package/kit/.claude/commands/git/git-cm.md +26 -0
- package/kit/.claude/commands/git/git-cp.md +26 -0
- package/kit/.claude/commands/git/git-pr.md +26 -0
- package/kit/.claude/commands/integrate/integrate-polar.md +29 -0
- package/kit/.claude/commands/integrate/integrate-sepay.md +29 -0
- package/kit/.claude/commands/integrate/sepay.md +29 -0
- package/kit/.claude/commands/plan/ci.md +28 -0
- package/kit/.claude/commands/plan/cro.md +27 -0
- package/kit/.claude/commands/plan/hard.md +27 -0
- package/kit/.claude/commands/plan/plan-archive.md +24 -0
- package/kit/.claude/commands/plan/plan-ci.md +28 -0
- package/kit/.claude/commands/plan/plan-cro.md +27 -0
- package/kit/.claude/commands/plan/plan-fast.md +24 -0
- package/kit/.claude/commands/plan/plan-hard.md +27 -0
- package/kit/.claude/commands/plan/plan-parallel.md +25 -0
- package/kit/.claude/commands/plan/plan-two.md +29 -0
- package/kit/.claude/commands/plan/plan-validate.md +27 -0
- package/kit/.claude/commands/plan/plan.md +27 -0
- package/kit/.claude/commands/plan/validate.md +27 -0
- package/kit/.claude/commands/skill/fix-logs.md +28 -0
- package/kit/.claude/commands/skill/skill-create.md +29 -0
- package/kit/.claude/commands/skill/skill-fix-logs.md +28 -0
- package/kit/.claude/settings.json +16 -0
- package/kit/.claude/skills/ai-anthropic.md +100 -0
- package/kit/.claude/skills/ai-context-engineering.md +113 -0
- package/kit/.claude/skills/ai-gemini.md +152 -0
- package/kit/.claude/skills/ai-langchain.md +93 -0
- package/kit/.claude/skills/ai-llamaindex.md +179 -0
- package/kit/.claude/skills/ai-mcp-builder.md +101 -0
- package/kit/.claude/skills/ai-openai.md +250 -0
- package/kit/.claude/skills/ai-prompt-engineering.md +173 -0
- package/kit/.claude/skills/ai-rag.md +91 -0
- package/kit/.claude/skills/ai-vectordb.md +215 -0
- package/kit/.claude/skills/analytics-segment.md +161 -0
- package/kit/.claude/skills/api-caching.md +103 -0
- package/kit/.claude/skills/api-documentation.md +50 -0
- package/kit/.claude/skills/api-graphql.md +234 -0
- package/kit/.claude/skills/api-openapi.md +116 -0
- package/kit/.claude/skills/api-pagination-filtering.md +239 -0
- package/kit/.claude/skills/api-rate-limiting.md +179 -0
- package/kit/.claude/skills/api-rest-advanced.md +50 -0
- package/kit/.claude/skills/api-rest.md +217 -0
- package/kit/.claude/skills/api-trpc.md +173 -0
- package/kit/.claude/skills/api-versioning.md +70 -0
- package/kit/.claude/skills/api-webhooks.md +226 -0
- package/kit/.claude/skills/arch-clean-code.md +226 -0
- package/kit/.claude/skills/arch-clean.md +91 -0
- package/kit/.claude/skills/arch-cqrs.md +229 -0
- package/kit/.claude/skills/arch-ddd.md +85 -0
- package/kit/.claude/skills/arch-event-driven.md +189 -0
- package/kit/.claude/skills/arch-microservices.md +80 -0
- package/kit/.claude/skills/arch-monorepo.md +87 -0
- package/kit/.claude/skills/arch-multi-tenant.md +81 -0
- package/kit/.claude/skills/arch-serverless.md +86 -0
- package/kit/.claude/skills/auth-clerk.md +97 -0
- package/kit/.claude/skills/auth-jwt.md +143 -0
- package/kit/.claude/skills/auth-lucia.md +93 -0
- package/kit/.claude/skills/auth-nextauth.md +446 -0
- package/kit/.claude/skills/auth-oauth.md +208 -0
- package/kit/.claude/skills/auth-oauth2.md +110 -0
- package/kit/.claude/skills/auth-passkeys.md +109 -0
- package/kit/.claude/skills/auth-session.md +88 -0
- package/kit/.claude/skills/backend-dotnet.md +414 -0
- package/kit/.claude/skills/backend-express.md +129 -0
- package/kit/.claude/skills/backend-fastify.md +104 -0
- package/kit/.claude/skills/backend-go.md +205 -0
- package/kit/.claude/skills/backend-graphql.md +149 -0
- package/kit/.claude/skills/backend-grpc.md +382 -0
- package/kit/.claude/skills/backend-hono.md +95 -0
- package/kit/.claude/skills/backend-java-spring.md +198 -0
- package/kit/.claude/skills/backend-nodejs-express.md +165 -0
- package/kit/.claude/skills/backend-nodejs.md +143 -0
- package/kit/.claude/skills/backend-php-laravel.md +156 -0
- package/kit/.claude/skills/backend-python-django.md +200 -0
- package/kit/.claude/skills/backend-python-fastapi.md +169 -0
- package/kit/.claude/skills/backend-ruby-rails.md +190 -0
- package/kit/.claude/skills/backend-rust.md +182 -0
- package/kit/.claude/skills/backend-websockets.md +392 -0
- package/kit/.claude/skills/cache-redis.md +195 -0
- package/kit/.claude/skills/caching-strategies.md +100 -0
- package/kit/.claude/skills/cloud-aws.md +165 -0
- package/kit/.claude/skills/cloud-azure.md +187 -0
- package/kit/.claude/skills/cloud-cloudflare.md +74 -0
- package/kit/.claude/skills/cloud-fly.md +94 -0
- package/kit/.claude/skills/cloud-gcp.md +160 -0
- package/kit/.claude/skills/cloud-railway.md +92 -0
- package/kit/.claude/skills/cloud-render.md +70 -0
- package/kit/.claude/skills/cloud-serverless.md +68 -0
- package/kit/.claude/skills/cloud-vercel.md +76 -0
- package/kit/.claude/skills/component-patterns.md +50 -0
- package/kit/.claude/skills/content-management.md +197 -0
- package/kit/.claude/skills/cors-security.md +50 -0
- package/kit/.claude/skills/data-csv-excel.md +210 -0
- package/kit/.claude/skills/database-optimization.md +196 -0
- package/kit/.claude/skills/databases-transactions.md +68 -0
- package/kit/.claude/skills/db-cassandra.md +89 -0
- package/kit/.claude/skills/db-drizzle.md +363 -0
- package/kit/.claude/skills/db-dynamodb.md +83 -0
- package/kit/.claude/skills/db-elasticsearch.md +105 -0
- package/kit/.claude/skills/db-firebase-firestore.md +191 -0
- package/kit/.claude/skills/db-mongodb.md +198 -0
- package/kit/.claude/skills/db-mysql.md +50 -0
- package/kit/.claude/skills/db-neon.md +72 -0
- package/kit/.claude/skills/db-planetscale.md +76 -0
- package/kit/.claude/skills/db-postgresql.md +50 -0
- package/kit/.claude/skills/db-prisma.md +414 -0
- package/kit/.claude/skills/db-redis.md +50 -0
- package/kit/.claude/skills/db-sqlite.md +149 -0
- package/kit/.claude/skills/db-supabase.md +445 -0
- package/kit/.claude/skills/devops-ci-cd.md +271 -0
- package/kit/.claude/skills/devops-database-backup.md +77 -0
- package/kit/.claude/skills/devops-docker.md +93 -0
- package/kit/.claude/skills/devops-github-actions.md +82 -0
- package/kit/.claude/skills/devops-health-checks.md +50 -0
- package/kit/.claude/skills/devops-kubernetes.md +109 -0
- package/kit/.claude/skills/devops-logging.md +163 -0
- package/kit/.claude/skills/devops-monitoring.md +203 -0
- package/kit/.claude/skills/devops-pulumi.md +94 -0
- package/kit/.claude/skills/devops-secrets.md +166 -0
- package/kit/.claude/skills/devops-terraform.md +226 -0
- package/kit/.claude/skills/error-boundaries.md +84 -0
- package/kit/.claude/skills/file-storage.md +50 -0
- package/kit/.claude/skills/frontend-angular.md +104 -0
- package/kit/.claude/skills/frontend-astro.md +94 -0
- package/kit/.claude/skills/frontend-bundle-analysis.md +147 -0
- package/kit/.claude/skills/frontend-forms.md +134 -0
- package/kit/.claude/skills/frontend-htmx.md +86 -0
- package/kit/.claude/skills/frontend-nextjs.md +188 -0
- package/kit/.claude/skills/frontend-pwa.md +105 -0
- package/kit/.claude/skills/frontend-react-hooks.md +238 -0
- package/kit/.claude/skills/frontend-react.md +129 -0
- package/kit/.claude/skills/frontend-remix-advanced.md +106 -0
- package/kit/.claude/skills/frontend-remix.md +101 -0
- package/kit/.claude/skills/frontend-solid.md +99 -0
- package/kit/.claude/skills/frontend-state-management.md +134 -0
- package/kit/.claude/skills/frontend-state.md +106 -0
- package/kit/.claude/skills/frontend-svelte.md +121 -0
- package/kit/.claude/skills/frontend-testing.md +100 -0
- package/kit/.claude/skills/frontend-vite.md +94 -0
- package/kit/.claude/skills/frontend-vue.md +133 -0
- package/kit/.claude/skills/frontend-webpack.md +93 -0
- package/kit/.claude/skills/functional-programming.md +50 -0
- package/kit/.claude/skills/hooks-custom.md +50 -0
- package/kit/.claude/skills/http-server.md +50 -0
- package/kit/.claude/skills/i18n-general.md +89 -0
- package/kit/.claude/skills/i18n-localization.md +191 -0
- package/kit/.claude/skills/i18n-nextjs.md +127 -0
- package/kit/.claude/skills/infrastructure-docker-compose.md +77 -0
- package/kit/.claude/skills/infrastructure-serverless.md +177 -0
- package/kit/.claude/skills/jwt-tokens.md +50 -0
- package/kit/.claude/skills/logging-winston.md +106 -0
- package/kit/.claude/skills/messaging-kafka.md +102 -0
- package/kit/.claude/skills/messaging-rabbitmq.md +50 -0
- package/kit/.claude/skills/mobile-capacitor.md +109 -0
- package/kit/.claude/skills/mobile-expo.md +101 -0
- package/kit/.claude/skills/mobile-flutter.md +259 -0
- package/kit/.claude/skills/mobile-react-native.md +238 -0
- package/kit/.claude/skills/monitoring-apm.md +50 -0
- package/kit/.claude/skills/monitoring-error-tracking.md +217 -0
- package/kit/.claude/skills/nodejs-streams.md +168 -0
- package/kit/.claude/skills/oauth-integration.md +50 -0
- package/kit/.claude/skills/patterns-dependency-injection.md +218 -0
- package/kit/.claude/skills/patterns-factory-singleton.md +209 -0
- package/kit/.claude/skills/patterns-observer-pubsub.md +210 -0
- package/kit/.claude/skills/payment-lemonsqueezy.md +101 -0
- package/kit/.claude/skills/payment-square.md +178 -0
- package/kit/.claude/skills/payment-stripe.md +206 -0
- package/kit/.claude/skills/perf-bundle.md +100 -0
- package/kit/.claude/skills/perf-web-vitals.md +102 -0
- package/kit/.claude/skills/performance-database-connection-pooling.md +67 -0
- package/kit/.claude/skills/performance-metrics.md +73 -0
- package/kit/.claude/skills/performance-optimization.md +208 -0
- package/kit/.claude/skills/performance-web-vitals.md +169 -0
- package/kit/.claude/skills/rate-limiting.md +77 -0
- package/kit/.claude/skills/reactive-programming.md +50 -0
- package/kit/.claude/skills/realtime-database.md +50 -0
- package/kit/.claude/skills/realtime-subscriptions.md +218 -0
- package/kit/.claude/skills/saas-ab-testing.md +90 -0
- package/kit/.claude/skills/saas-analytics.md +113 -0
- package/kit/.claude/skills/saas-billing.md +106 -0
- package/kit/.claude/skills/saas-email.md +88 -0
- package/kit/.claude/skills/saas-feature-flags.md +83 -0
- package/kit/.claude/skills/saas-onboarding.md +96 -0
- package/kit/.claude/skills/saas-user-onboarding.md +207 -0
- package/kit/.claude/skills/security-encryption.md +216 -0
- package/kit/.claude/skills/security-owasp.md +212 -0
- package/kit/.claude/skills/security-secrets-rotation.md +64 -0
- package/kit/.claude/skills/seo-content.md +94 -0
- package/kit/.claude/skills/seo-technical.md +101 -0
- package/kit/.claude/skills/serverless-framework.md +151 -0
- package/kit/.claude/skills/sharding-scaling.md +50 -0
- package/kit/.claude/skills/styling-css-modules.md +219 -0
- package/kit/.claude/skills/styling-styled-components.md +206 -0
- package/kit/.claude/skills/styling-tailwind.md +206 -0
- package/kit/.claude/skills/test-e2e.md +86 -0
- package/kit/.claude/skills/test-integration.md +216 -0
- package/kit/.claude/skills/test-performance.md +162 -0
- package/kit/.claude/skills/test-tdd.md +170 -0
- package/kit/.claude/skills/test-unit.md +301 -0
- package/kit/.claude/skills/testing-accessibility.md +117 -0
- package/kit/.claude/skills/testing-contract.md +75 -0
- package/kit/.claude/skills/testing-e2e-advanced.md +50 -0
- package/kit/.claude/skills/testing-load-stress.md +79 -0
- package/kit/.claude/skills/testing-mutation.md +92 -0
- package/kit/.claude/skills/testing-snapshot.md +50 -0
- package/kit/.claude/skills/testing-vitest.md +172 -0
- package/kit/.claude/skills/tooling-biome.md +91 -0
- package/kit/.claude/skills/tooling-build-tools.md +166 -0
- package/kit/.claude/skills/tooling-bun.md +94 -0
- package/kit/.claude/skills/tooling-eslint.md +103 -0
- package/kit/.claude/skills/tooling-git.md +79 -0
- package/kit/.claude/skills/tooling-monorepo.md +162 -0
- package/kit/.claude/skills/tooling-testing-frameworks.md +207 -0
- package/kit/.claude/skills/tooling-typescript.md +156 -0
- package/kit/.claude/skills/ui-a11y.md +106 -0
- package/kit/.claude/skills/ui-framer.md +106 -0
- package/kit/.claude/skills/ui-gsap.md +102 -0
- package/kit/.claude/skills/ui-radix.md +82 -0
- package/kit/.claude/skills/ui-shadcn.md +463 -0
- package/kit/.claude/skills/ui-tailwind.md +98 -0
- package/kit/.claude/skills/ui-threejs.md +110 -0
- package/kit/.claude/skills/ui-tokens.md +97 -0
- package/kit/.claude/skills/utilities-date-time.md +170 -0
- package/kit/.claude/skills/validation-schemas.md +110 -0
- package/kit/.claude/skills/version-control-git.md +144 -0
- package/kit/.claude/skills/web-accessibility-wcag.md +102 -0
- package/kit/.claude/skills/web-astro.md +197 -0
- package/kit/.claude/skills/web-html-css.md +224 -0
- package/kit/.claude/skills/web-htmx.md +99 -0
- package/kit/.claude/skills/web-nextjs-advanced.md +202 -0
- package/kit/.claude/skills/web-remix.md +194 -0
- package/kit/.claude/skills/web-seo.md +99 -0
- package/kit/.claude/skills/web-svelte.md +234 -0
- package/kit/.claude/skills/websocket-server.md +50 -0
- package/kit/.claude/skills/writing-marketing.md +89 -0
- package/kit/.claude/skills/writing-technical.md +119 -0
- package/kit/CLAUDE.md +206 -0
- package/kit/README.md +150 -0
- package/kit/SKILLS_INDEX.md +188 -0
- package/kit/docs/README.md +3 -0
- package/kit/journals/README.md +3 -0
- package/kit/plans/README.md +3 -0
- package/package.json +3 -1
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Production-Ready Skill Implementation
|
|
2
|
+
|
|
3
|
+
## Setup & Installation
|
|
4
|
+
|
|
5
|
+
Detailed installation and configuration steps for the technology.
|
|
6
|
+
|
|
7
|
+
## Core Concepts
|
|
8
|
+
|
|
9
|
+
Fundamental patterns and approaches.
|
|
10
|
+
|
|
11
|
+
## Implementation Examples
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
// Real production code examples
|
|
15
|
+
// with error handling and best practices
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Advanced Patterns
|
|
19
|
+
|
|
20
|
+
Complex scenarios and optimization techniques.
|
|
21
|
+
|
|
22
|
+
## Performance Optimization
|
|
23
|
+
|
|
24
|
+
Tips for maximizing efficiency and speed.
|
|
25
|
+
|
|
26
|
+
## Security Considerations
|
|
27
|
+
|
|
28
|
+
Security best practices specific to this technology.
|
|
29
|
+
|
|
30
|
+
## Testing
|
|
31
|
+
|
|
32
|
+
How to properly test this feature.
|
|
33
|
+
|
|
34
|
+
## Monitoring & Debugging
|
|
35
|
+
|
|
36
|
+
Tools and techniques for production support.
|
|
37
|
+
|
|
38
|
+
## Best Practices
|
|
39
|
+
|
|
40
|
+
✅ Key recommendations
|
|
41
|
+
✅ Common pitfalls to avoid
|
|
42
|
+
✅ Performance considerations
|
|
43
|
+
✅ Security measures
|
|
44
|
+
✅ Production readiness
|
|
45
|
+
|
|
46
|
+
## Resources
|
|
47
|
+
|
|
48
|
+
- Official documentation
|
|
49
|
+
- Community guides
|
|
50
|
+
- Performance benchmarks
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
# Vitest
|
|
2
|
+
|
|
3
|
+
Lightning-fast unit test framework.
|
|
4
|
+
|
|
5
|
+
## Setup
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -D vitest @vitest/ui
|
|
9
|
+
npm install -D @testing-library/react @testing-library/dom
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Configuration
|
|
13
|
+
|
|
14
|
+
```typescript
|
|
15
|
+
// vitest.config.ts
|
|
16
|
+
import { defineConfig } from 'vitest/config';
|
|
17
|
+
import react from '@vitejs/plugin-react';
|
|
18
|
+
import path from 'path';
|
|
19
|
+
|
|
20
|
+
export default defineConfig({
|
|
21
|
+
plugins: [react()],
|
|
22
|
+
test: {
|
|
23
|
+
globals: true,
|
|
24
|
+
environment: 'jsdom',
|
|
25
|
+
setupFiles: ['./src/test/setup.ts'],
|
|
26
|
+
coverage: {
|
|
27
|
+
provider: 'v8',
|
|
28
|
+
reporter: ['text', 'json', 'html'],
|
|
29
|
+
exclude: ['node_modules/', 'src/test/']
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
resolve: {
|
|
33
|
+
alias: {
|
|
34
|
+
'@': path.resolve(__dirname, './src')
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Basic Tests
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
44
|
+
|
|
45
|
+
describe('Math Utils', () => {
|
|
46
|
+
it('should add numbers correctly', () => {
|
|
47
|
+
expect(2 + 2).toBe(4);
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
it('should handle negative numbers', () => {
|
|
51
|
+
expect(-5 + 3).toBe(-2);
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
it('should match objects', () => {
|
|
55
|
+
const user = { name: 'John', age: 30 };
|
|
56
|
+
expect(user).toEqual({ name: 'John', age: 30 });
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
it('should test arrays', () => {
|
|
60
|
+
const numbers = [1, 2, 3];
|
|
61
|
+
expect(numbers).toContain(2);
|
|
62
|
+
expect(numbers.length).toBe(3);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Async Testing
|
|
68
|
+
|
|
69
|
+
```typescript
|
|
70
|
+
describe('Async Operations', () => {
|
|
71
|
+
it('should fetch data', async () => {
|
|
72
|
+
const data = await fetchUser(1);
|
|
73
|
+
expect(data.id).toBe(1);
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
it('should handle promise', () => {
|
|
77
|
+
return expect(Promise.resolve(42)).resolves.toBe(42);
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
it('should handle rejection', () => {
|
|
81
|
+
return expect(Promise.reject('error')).rejects.toBe('error');
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Mocking
|
|
87
|
+
|
|
88
|
+
```typescript
|
|
89
|
+
import { describe, it, expect, vi } from 'vitest';
|
|
90
|
+
|
|
91
|
+
describe('Database Operations', () => {
|
|
92
|
+
it('should call database', async () => {
|
|
93
|
+
const mockDB = vi.fn(() => ({ id: 1, name: 'John' }));
|
|
94
|
+
|
|
95
|
+
const result = mockDB();
|
|
96
|
+
|
|
97
|
+
expect(mockDB).toHaveBeenCalled();
|
|
98
|
+
expect(result).toEqual({ id: 1, name: 'John' });
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
it('should mock modules', () => {
|
|
102
|
+
vi.mock('./api', () => ({
|
|
103
|
+
getUser: vi.fn(() => ({ id: 1 }))
|
|
104
|
+
}));
|
|
105
|
+
|
|
106
|
+
const { getUser } = require('./api');
|
|
107
|
+
expect(getUser()).toEqual({ id: 1 });
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
it('should spy on methods', () => {
|
|
111
|
+
const obj = {
|
|
112
|
+
method: () => 'original'
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
const spy = vi.spyOn(obj, 'method');
|
|
116
|
+
obj.method();
|
|
117
|
+
|
|
118
|
+
expect(spy).toHaveBeenCalled();
|
|
119
|
+
expect(spy).toHaveReturnedWith('original');
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## React Component Testing
|
|
125
|
+
|
|
126
|
+
```typescript
|
|
127
|
+
import { render, screen, fireEvent } from '@testing-library/react';
|
|
128
|
+
import { Button } from './Button';
|
|
129
|
+
|
|
130
|
+
describe('Button Component', () => {
|
|
131
|
+
it('renders button with text', () => {
|
|
132
|
+
render(<Button>Click me</Button>);
|
|
133
|
+
expect(screen.getByText('Click me')).toBeInTheDocument();
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
it('handles click events', () => {
|
|
137
|
+
const handleClick = vi.fn();
|
|
138
|
+
render(<Button onClick={handleClick}>Click</Button>);
|
|
139
|
+
|
|
140
|
+
fireEvent.click(screen.getByText('Click'));
|
|
141
|
+
expect(handleClick).toHaveBeenCalledTimes(1);
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
it('disables button when loading', () => {
|
|
145
|
+
render(<Button disabled>Loading...</Button>);
|
|
146
|
+
expect(screen.getByRole('button')).toBeDisabled();
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## Coverage
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
# Run with coverage
|
|
155
|
+
vitest --coverage
|
|
156
|
+
|
|
157
|
+
# Open coverage report
|
|
158
|
+
open coverage/index.html
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## Best Practices
|
|
162
|
+
|
|
163
|
+
✅ **Test behavior** - Not implementation
|
|
164
|
+
✅ **Clear names** - Describe what is tested
|
|
165
|
+
✅ **DRY setup** - Use beforeEach for common setup
|
|
166
|
+
✅ **Isolated tests** - No dependencies between tests
|
|
167
|
+
✅ **Good coverage** - Aim for 80%+ coverage
|
|
168
|
+
|
|
169
|
+
## Resources
|
|
170
|
+
|
|
171
|
+
- [Vitest Documentation](https://vitest.dev/)
|
|
172
|
+
- [Testing Library](https://testing-library.com/)
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Biome (Linter + Formatter)
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
Biome is a fast, all-in-one linter and formatter for JavaScript/TypeScript — replaces ESLint + Prettier in one tool.
|
|
5
|
+
|
|
6
|
+
## Setup
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
npm install -D @biomejs/biome
|
|
10
|
+
npx @biomejs/biome init
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## biome.json Configuration
|
|
14
|
+
|
|
15
|
+
```json
|
|
16
|
+
{
|
|
17
|
+
"$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
|
|
18
|
+
"organizeImports": { "enabled": true },
|
|
19
|
+
"linter": {
|
|
20
|
+
"enabled": true,
|
|
21
|
+
"rules": {
|
|
22
|
+
"recommended": true,
|
|
23
|
+
"a11y": { "recommended": true },
|
|
24
|
+
"security": { "recommended": true },
|
|
25
|
+
"performance": { "noDelete": "warn" },
|
|
26
|
+
"correctness": { "noUnusedVariables": "error" }
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"formatter": {
|
|
30
|
+
"enabled": true,
|
|
31
|
+
"indentStyle": "space",
|
|
32
|
+
"indentWidth": 2,
|
|
33
|
+
"lineWidth": 100
|
|
34
|
+
},
|
|
35
|
+
"javascript": {
|
|
36
|
+
"formatter": {
|
|
37
|
+
"quoteStyle": "single",
|
|
38
|
+
"trailingCommas": "es5",
|
|
39
|
+
"semicolons": "always"
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"files": {
|
|
43
|
+
"ignore": ["node_modules", "dist", ".next", "coverage"]
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Scripts
|
|
49
|
+
|
|
50
|
+
```json
|
|
51
|
+
// package.json
|
|
52
|
+
{
|
|
53
|
+
"scripts": {
|
|
54
|
+
"lint": "biome lint .",
|
|
55
|
+
"lint:fix": "biome lint --apply .",
|
|
56
|
+
"format": "biome format --write .",
|
|
57
|
+
"check": "biome check .",
|
|
58
|
+
"check:fix": "biome check --apply ."
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## VS Code Integration
|
|
64
|
+
|
|
65
|
+
```json
|
|
66
|
+
// .vscode/settings.json
|
|
67
|
+
{
|
|
68
|
+
"editor.defaultFormatter": "biomejs.biome",
|
|
69
|
+
"editor.formatOnSave": true,
|
|
70
|
+
"[javascript]": { "editor.defaultFormatter": "biomejs.biome" },
|
|
71
|
+
"[typescript]": { "editor.defaultFormatter": "biomejs.biome" },
|
|
72
|
+
"[typescriptreact]": { "editor.defaultFormatter": "biomejs.biome" }
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## CI/CD Integration
|
|
77
|
+
|
|
78
|
+
```yaml
|
|
79
|
+
# .github/workflows/ci.yml
|
|
80
|
+
- name: Lint and Format check
|
|
81
|
+
run: npx @biomejs/biome ci .
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Best Practices
|
|
85
|
+
- Use `biome check --apply` in pre-commit hooks for auto-fix
|
|
86
|
+
- Biome is 20-100x faster than ESLint + Prettier
|
|
87
|
+
- Migrate gradually with `biome migrate eslint --include-inspired`
|
|
88
|
+
- Set `"linter.rules.recommended": true` as base
|
|
89
|
+
|
|
90
|
+
## Resources
|
|
91
|
+
- [Biome docs](https://biomejs.dev/guides/getting-started/)
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# Build Tools
|
|
2
|
+
|
|
3
|
+
Compilation, bundling, and asset optimization.
|
|
4
|
+
|
|
5
|
+
## Vite
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
// vite.config.ts
|
|
9
|
+
import { defineConfig } from 'vite';
|
|
10
|
+
import react from '@vitejs/plugin-react';
|
|
11
|
+
import path from 'path';
|
|
12
|
+
|
|
13
|
+
export default defineConfig({
|
|
14
|
+
plugins: [react()],
|
|
15
|
+
resolve: {
|
|
16
|
+
alias: {
|
|
17
|
+
'@': path.resolve(__dirname, './src')
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
build: {
|
|
21
|
+
target: 'esnext',
|
|
22
|
+
minify: 'terser',
|
|
23
|
+
sourcemap: false,
|
|
24
|
+
rollupOptions: {
|
|
25
|
+
output: {
|
|
26
|
+
manualChunks: {
|
|
27
|
+
'vendor': ['react', 'react-dom']
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
server: {
|
|
33
|
+
port: 3000,
|
|
34
|
+
proxy: {
|
|
35
|
+
'/api': 'http://localhost:5000'
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Webpack Configuration
|
|
42
|
+
|
|
43
|
+
```javascript
|
|
44
|
+
// webpack.config.js
|
|
45
|
+
const path = require('path');
|
|
46
|
+
const HtmlWebpackPlugin = require('html-webpack-plugin');
|
|
47
|
+
|
|
48
|
+
module.exports = {
|
|
49
|
+
mode: 'production',
|
|
50
|
+
entry: './src/index.ts',
|
|
51
|
+
output: {
|
|
52
|
+
path: path.resolve(__dirname, 'dist'),
|
|
53
|
+
filename: '[name].[contenthash].js'
|
|
54
|
+
},
|
|
55
|
+
module: {
|
|
56
|
+
rules: [
|
|
57
|
+
{
|
|
58
|
+
test: /\.tsx?$/,
|
|
59
|
+
use: 'ts-loader',
|
|
60
|
+
exclude: /node_modules/
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
test: /\.css$/,
|
|
64
|
+
use: ['style-loader', 'css-loader']
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
},
|
|
68
|
+
plugins: [
|
|
69
|
+
new HtmlWebpackPlugin({
|
|
70
|
+
template: './src/index.html'
|
|
71
|
+
})
|
|
72
|
+
],
|
|
73
|
+
optimization: {
|
|
74
|
+
splitChunks: {
|
|
75
|
+
chunks: 'all'
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## ESBuild
|
|
82
|
+
|
|
83
|
+
```typescript
|
|
84
|
+
import esbuild from 'esbuild';
|
|
85
|
+
|
|
86
|
+
await esbuild.build({
|
|
87
|
+
entryPoints: ['src/index.ts'],
|
|
88
|
+
bundle: true,
|
|
89
|
+
outfile: 'dist/bundle.js',
|
|
90
|
+
minify: true,
|
|
91
|
+
sourcemap: true,
|
|
92
|
+
target: 'esnext',
|
|
93
|
+
loader: {
|
|
94
|
+
'.png': 'dataurl'
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Bun Runtime
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
# Install
|
|
103
|
+
curl -fsSL https://bun.sh/install | bash
|
|
104
|
+
|
|
105
|
+
# Run TypeScript directly
|
|
106
|
+
bun run src/index.ts
|
|
107
|
+
|
|
108
|
+
# Bundle
|
|
109
|
+
bun build ./src/index.ts --outdir ./dist
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Rollup
|
|
113
|
+
|
|
114
|
+
```javascript
|
|
115
|
+
// rollup.config.js
|
|
116
|
+
import resolve from '@rollup/plugin-node-resolve';
|
|
117
|
+
import commonjs from '@rollup/plugin-commonjs';
|
|
118
|
+
import typescript from '@rollup/plugin-typescript';
|
|
119
|
+
|
|
120
|
+
export default {
|
|
121
|
+
input: 'src/index.ts',
|
|
122
|
+
output: {
|
|
123
|
+
file: 'dist/bundle.js',
|
|
124
|
+
format: 'cjs'
|
|
125
|
+
},
|
|
126
|
+
plugins: [
|
|
127
|
+
typescript(),
|
|
128
|
+
resolve(),
|
|
129
|
+
commonjs()
|
|
130
|
+
],
|
|
131
|
+
external: ['react']
|
|
132
|
+
};
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## SWC (Rust Compiler)
|
|
136
|
+
|
|
137
|
+
```json
|
|
138
|
+
{
|
|
139
|
+
".swcrc": {
|
|
140
|
+
"jsc": {
|
|
141
|
+
"parser": {
|
|
142
|
+
"syntax": "typescript"
|
|
143
|
+
},
|
|
144
|
+
"target": "es2020",
|
|
145
|
+
"minify": {
|
|
146
|
+
"compress": true
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Best Practices
|
|
154
|
+
|
|
155
|
+
✅ **Code splitting** - Chunk dependencies
|
|
156
|
+
✅ **Lazy loading** - Load routes/features on demand
|
|
157
|
+
✅ **Tree shaking** - Remove unused code
|
|
158
|
+
✅ **Caching** - Use content hashes
|
|
159
|
+
✅ **Source maps** - Debug production code
|
|
160
|
+
|
|
161
|
+
## Resources
|
|
162
|
+
|
|
163
|
+
- [Vite Documentation](https://vitejs.dev/)
|
|
164
|
+
- [Webpack Guide](https://webpack.js.org/guides/)
|
|
165
|
+
- [ESBuild](https://esbuild.github.io/)
|
|
166
|
+
- [Bun Runtime](https://bun.sh/)
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Bun Runtime
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
Bun is a fast JavaScript runtime, package manager, bundler, and test runner in one tool.
|
|
5
|
+
|
|
6
|
+
## Installation
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
curl -fsSL https://bun.sh/install | bash
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Package Management
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
bun install # Install all deps (fast!)
|
|
16
|
+
bun add react react-dom # Add packages
|
|
17
|
+
bun add -D typescript # Add dev deps
|
|
18
|
+
bun remove lodash # Remove
|
|
19
|
+
bun update # Update all
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Run Scripts
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
bun run dev # Run script from package.json
|
|
26
|
+
bun run src/index.ts # Run TypeScript file directly
|
|
27
|
+
bun --hot src/server.ts # Hot reload (like nodemon)
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## HTTP Server
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
// server.ts
|
|
34
|
+
Bun.serve({
|
|
35
|
+
port: 3000,
|
|
36
|
+
async fetch(req: Request) {
|
|
37
|
+
const url = new URL(req.url);
|
|
38
|
+
|
|
39
|
+
if (url.pathname === '/api/users') {
|
|
40
|
+
const users = await db.user.findMany();
|
|
41
|
+
return Response.json(users);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (url.pathname === '/health') {
|
|
45
|
+
return Response.json({ status: 'ok' });
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return new Response('Not Found', { status: 404 });
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## SQLite with Bun
|
|
54
|
+
|
|
55
|
+
```typescript
|
|
56
|
+
import { Database } from 'bun:sqlite';
|
|
57
|
+
|
|
58
|
+
const db = new Database('myapp.db');
|
|
59
|
+
db.run(`CREATE TABLE IF NOT EXISTS users (id TEXT PRIMARY KEY, name TEXT, email TEXT)`);
|
|
60
|
+
|
|
61
|
+
const insert = db.prepare('INSERT INTO users VALUES ($id, $name, $email)');
|
|
62
|
+
insert.run({ $id: crypto.randomUUID(), $name: 'Alice', $email: 'alice@example.com' });
|
|
63
|
+
|
|
64
|
+
const users = db.prepare('SELECT * FROM users').all();
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Testing
|
|
68
|
+
|
|
69
|
+
```typescript
|
|
70
|
+
// users.test.ts
|
|
71
|
+
import { describe, expect, it } from 'bun:test';
|
|
72
|
+
|
|
73
|
+
describe('User service', () => {
|
|
74
|
+
it('creates a user', async () => {
|
|
75
|
+
const user = await createUser({ email: 'test@example.com', name: 'Test' });
|
|
76
|
+
expect(user.id).toBeDefined();
|
|
77
|
+
expect(user.email).toBe('test@example.com');
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
bun test # Run all tests
|
|
84
|
+
bun test --watch # Watch mode
|
|
85
|
+
bun test --coverage # With coverage
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Best Practices
|
|
89
|
+
- Use `bun:sqlite` for local dev databases — no setup needed
|
|
90
|
+
- Use `--hot` flag instead of `nodemon` for server development
|
|
91
|
+
- `bun build` for bundling: `bun build ./src/index.ts --outdir ./dist --target node`
|
|
92
|
+
|
|
93
|
+
## Resources
|
|
94
|
+
- [Bun docs](https://bun.sh/docs)
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# ESLint
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
ESLint statically analyzes JavaScript/TypeScript code to find bugs and enforce code style.
|
|
5
|
+
|
|
6
|
+
## Setup (ESLint v9 flat config)
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
npm install -D eslint @eslint/js typescript-eslint eslint-plugin-react-hooks
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## eslint.config.js (Flat Config)
|
|
13
|
+
|
|
14
|
+
```typescript
|
|
15
|
+
// eslint.config.js
|
|
16
|
+
import js from '@eslint/js';
|
|
17
|
+
import tsPlugin from 'typescript-eslint';
|
|
18
|
+
import reactHooks from 'eslint-plugin-react-hooks';
|
|
19
|
+
|
|
20
|
+
export default tsPlugin.config(
|
|
21
|
+
js.configs.recommended,
|
|
22
|
+
...tsPlugin.configs.recommended,
|
|
23
|
+
{
|
|
24
|
+
plugins: { 'react-hooks': reactHooks },
|
|
25
|
+
rules: {
|
|
26
|
+
...reactHooks.configs.recommended.rules,
|
|
27
|
+
'@typescript-eslint/no-explicit-any': 'error',
|
|
28
|
+
'@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
|
|
29
|
+
'no-console': ['warn', { allow: ['warn', 'error'] }],
|
|
30
|
+
'prefer-const': 'error',
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
ignores: ['dist/**', '.next/**', 'coverage/**', '*.config.js'],
|
|
35
|
+
}
|
|
36
|
+
);
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Scripts
|
|
40
|
+
|
|
41
|
+
```json
|
|
42
|
+
{
|
|
43
|
+
"scripts": {
|
|
44
|
+
"lint": "eslint .",
|
|
45
|
+
"lint:fix": "eslint . --fix"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Next.js ESLint Config
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
npm install -D eslint-config-next
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
```javascript
|
|
57
|
+
// eslint.config.js (Next.js)
|
|
58
|
+
import { FlatCompat } from '@eslint/eslintrc';
|
|
59
|
+
const compat = new FlatCompat();
|
|
60
|
+
|
|
61
|
+
export default [
|
|
62
|
+
...compat.extends('next/core-web-vitals', 'next/typescript'),
|
|
63
|
+
{ rules: { '@typescript-eslint/no-explicit-any': 'error' } }
|
|
64
|
+
];
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Pre-commit Hook with lint-staged
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
npm install -D husky lint-staged
|
|
71
|
+
npx husky init
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
```json
|
|
75
|
+
// package.json
|
|
76
|
+
{
|
|
77
|
+
"lint-staged": {
|
|
78
|
+
"*.{ts,tsx,js,jsx}": ["eslint --fix", "prettier --write"]
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
echo "npx lint-staged" > .husky/pre-commit
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Custom Rule Example
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
// Only allow logger, not console.log
|
|
91
|
+
module.exports = {
|
|
92
|
+
rules: {
|
|
93
|
+
'no-restricted-syntax': ['error', {
|
|
94
|
+
selector: "CallExpression[callee.object.name='console'][callee.property.name='log']",
|
|
95
|
+
message: 'Use logger.info() instead of console.log()'
|
|
96
|
+
}]
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Resources
|
|
102
|
+
- [ESLint docs](https://eslint.org/docs/latest/)
|
|
103
|
+
- [typescript-eslint](https://typescript-eslint.io)
|