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,94 @@
|
|
|
1
|
+
# Fly.io
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
Fly.io runs Docker containers globally across 30+ regions with anycast networking and built-in scaling.
|
|
5
|
+
|
|
6
|
+
## Installation
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
curl -L https://fly.io/install.sh | sh
|
|
10
|
+
fly auth login
|
|
11
|
+
fly launch # creates fly.toml and Dockerfile
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## fly.toml
|
|
15
|
+
|
|
16
|
+
```toml
|
|
17
|
+
app = "my-app"
|
|
18
|
+
primary_region = "sjc"
|
|
19
|
+
|
|
20
|
+
[build]
|
|
21
|
+
dockerfile = "Dockerfile"
|
|
22
|
+
|
|
23
|
+
[env]
|
|
24
|
+
NODE_ENV = "production"
|
|
25
|
+
PORT = "3000"
|
|
26
|
+
|
|
27
|
+
[http_service]
|
|
28
|
+
internal_port = 3000
|
|
29
|
+
force_https = true
|
|
30
|
+
auto_stop_machines = true
|
|
31
|
+
auto_start_machines = true
|
|
32
|
+
min_machines_running = 0
|
|
33
|
+
|
|
34
|
+
[[vm]]
|
|
35
|
+
cpu_kind = "shared"
|
|
36
|
+
cpus = 1
|
|
37
|
+
memory_mb = 512
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Next.js Dockerfile
|
|
41
|
+
|
|
42
|
+
```dockerfile
|
|
43
|
+
FROM node:20-alpine AS base
|
|
44
|
+
WORKDIR /app
|
|
45
|
+
|
|
46
|
+
FROM base AS deps
|
|
47
|
+
COPY package*.json ./
|
|
48
|
+
RUN npm ci
|
|
49
|
+
|
|
50
|
+
FROM base AS builder
|
|
51
|
+
COPY --from=deps /app/node_modules ./node_modules
|
|
52
|
+
COPY . .
|
|
53
|
+
RUN npm run build
|
|
54
|
+
|
|
55
|
+
FROM base AS runner
|
|
56
|
+
ENV NODE_ENV=production
|
|
57
|
+
COPY --from=builder /app/.next/standalone ./
|
|
58
|
+
COPY --from=builder /app/.next/static ./.next/static
|
|
59
|
+
COPY --from=builder /app/public ./public
|
|
60
|
+
EXPOSE 3000
|
|
61
|
+
CMD ["node", "server.js"]
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Secrets & Deploy
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
fly secrets set DATABASE_URL="postgresql://..."
|
|
68
|
+
fly secrets set NEXTAUTH_SECRET="..."
|
|
69
|
+
|
|
70
|
+
fly deploy
|
|
71
|
+
|
|
72
|
+
# Logs
|
|
73
|
+
fly logs --app my-app
|
|
74
|
+
|
|
75
|
+
# Scale
|
|
76
|
+
fly scale count 2 --region sjc
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Managed Postgres
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
fly postgres create --name my-db --region sjc
|
|
83
|
+
fly postgres attach my-db --app my-app # sets DATABASE_URL automatically
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Best Practices
|
|
87
|
+
- Use `auto_stop_machines = true` for dev apps (scale to zero)
|
|
88
|
+
- Set `min_machines_running = 1` for production (avoid cold starts)
|
|
89
|
+
- Store secrets with `fly secrets set`, never in fly.toml
|
|
90
|
+
- Use Fly volumes for SQLite or file uploads
|
|
91
|
+
|
|
92
|
+
## Resources
|
|
93
|
+
- [Fly.io docs](https://fly.io/docs)
|
|
94
|
+
- [Deploy Next.js on Fly](https://fly.io/docs/js/frameworks/nextjs/)
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# Google Cloud Platform (GCP)
|
|
2
|
+
|
|
3
|
+
Managed cloud services with Compute Engine, Cloud Functions, Firestore, and BigQuery.
|
|
4
|
+
|
|
5
|
+
## Cloud Functions
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import functions from '@google-cloud/functions-framework';
|
|
9
|
+
|
|
10
|
+
functions.http('helloWorld', (req, res) => {
|
|
11
|
+
res.send('Hello from Cloud Functions!');
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
// With async operations
|
|
15
|
+
functions.http('asyncExample', async (req, res) => {
|
|
16
|
+
const result = await someAsyncOperation();
|
|
17
|
+
res.json(result);
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
// Event-driven (Pub/Sub)
|
|
21
|
+
functions.cloud.pubsub('processPubSub', (message) => {
|
|
22
|
+
const data = Buffer.from(message.data, 'base64').toString();
|
|
23
|
+
console.log(`Processing: ${data}`);
|
|
24
|
+
});
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Firestore
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
import { Firestore } from '@google-cloud/firestore';
|
|
31
|
+
|
|
32
|
+
const db = new Firestore();
|
|
33
|
+
|
|
34
|
+
// Write
|
|
35
|
+
await db.collection('users').doc('user-123').set({
|
|
36
|
+
email: 'user@example.com',
|
|
37
|
+
createdAt: new Date()
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
// Read
|
|
41
|
+
const doc = await db.collection('users').doc('user-123').get();
|
|
42
|
+
const user = doc.data();
|
|
43
|
+
|
|
44
|
+
// Query
|
|
45
|
+
const snapshot = await db.collection('users')
|
|
46
|
+
.where('email', '==', 'user@example.com')
|
|
47
|
+
.limit(10)
|
|
48
|
+
.get();
|
|
49
|
+
|
|
50
|
+
snapshot.forEach(doc => console.log(doc.data()));
|
|
51
|
+
|
|
52
|
+
// Batch write
|
|
53
|
+
const batch = db.batch();
|
|
54
|
+
batch.set(db.collection('users').doc('user-1'), { name: 'Alice' });
|
|
55
|
+
batch.set(db.collection('users').doc('user-2'), { name: 'Bob' });
|
|
56
|
+
await batch.commit();
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Cloud Storage
|
|
60
|
+
|
|
61
|
+
```typescript
|
|
62
|
+
import { Storage } from '@google-cloud/storage';
|
|
63
|
+
|
|
64
|
+
const storage = new Storage();
|
|
65
|
+
const bucket = storage.bucket('my-bucket');
|
|
66
|
+
|
|
67
|
+
// Upload file
|
|
68
|
+
await bucket.file('path/to/file.txt').save('content', {
|
|
69
|
+
contentType: 'text/plain'
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
// Download file
|
|
73
|
+
const [contents] = await bucket.file('path/to/file.txt').download();
|
|
74
|
+
|
|
75
|
+
// List files
|
|
76
|
+
const [files] = await bucket.getFiles({ prefix: 'uploads/' });
|
|
77
|
+
files.forEach(file => console.log(file.name));
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## BigQuery
|
|
81
|
+
|
|
82
|
+
```typescript
|
|
83
|
+
import { BigQuery } from '@google-cloud/bigquery';
|
|
84
|
+
|
|
85
|
+
const bq = new BigQuery();
|
|
86
|
+
|
|
87
|
+
// Query
|
|
88
|
+
const [rows] = await bq.query({
|
|
89
|
+
query: 'SELECT * FROM `dataset.table` WHERE age > @age LIMIT 10',
|
|
90
|
+
location: 'US',
|
|
91
|
+
params: { age: 18 }
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
// Insert rows
|
|
95
|
+
await bq.dataset('my_dataset')
|
|
96
|
+
.table('users')
|
|
97
|
+
.insert([
|
|
98
|
+
{ id: '1', name: 'Alice', age: 30 },
|
|
99
|
+
{ id: '2', name: 'Bob', age: 25 }
|
|
100
|
+
]);
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Pub/Sub Messaging
|
|
104
|
+
|
|
105
|
+
```typescript
|
|
106
|
+
import { PubSub } from '@google-cloud/pubsub';
|
|
107
|
+
|
|
108
|
+
const pubsub = new PubSub();
|
|
109
|
+
|
|
110
|
+
// Publisher
|
|
111
|
+
const topic = pubsub.topic('my-topic');
|
|
112
|
+
const messageId = await topic.publish(
|
|
113
|
+
Buffer.from(JSON.stringify({ userId: '123', action: 'login' }))
|
|
114
|
+
);
|
|
115
|
+
|
|
116
|
+
// Subscriber
|
|
117
|
+
const subscription = pubsub.subscription('my-subscription');
|
|
118
|
+
|
|
119
|
+
subscription.on('message', (message) => {
|
|
120
|
+
const data = JSON.parse(message.data.toString());
|
|
121
|
+
console.log('Received:', data);
|
|
122
|
+
message.ack();
|
|
123
|
+
});
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Cloud Run (Containers)
|
|
127
|
+
|
|
128
|
+
```yaml
|
|
129
|
+
# Dockerfile
|
|
130
|
+
FROM node:20-alpine
|
|
131
|
+
WORKDIR /app
|
|
132
|
+
COPY package*.json ./
|
|
133
|
+
RUN npm ci --only=production
|
|
134
|
+
COPY . .
|
|
135
|
+
EXPOSE 3000
|
|
136
|
+
CMD ["node", "index.js"]
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
# Deploy to Cloud Run
|
|
141
|
+
gcloud run deploy my-service \
|
|
142
|
+
--source . \
|
|
143
|
+
--platform managed \
|
|
144
|
+
--region us-central1 \
|
|
145
|
+
--allow-unauthenticated
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Best Practices
|
|
149
|
+
|
|
150
|
+
✅ **Use Firebase for real-time** - Easier than raw Firestore
|
|
151
|
+
✅ **Indexing** - Create composite indexes for complex queries
|
|
152
|
+
✅ **Transactions** - ACID guarantees for critical operations
|
|
153
|
+
✅ **Access control** - Use IAM roles and Firestore Security Rules
|
|
154
|
+
✅ **Caching** - Use Memorystore (Redis) for hot data
|
|
155
|
+
|
|
156
|
+
## Resources
|
|
157
|
+
|
|
158
|
+
- [GCP Documentation](https://cloud.google.com/docs)
|
|
159
|
+
- [Firestore Guide](https://cloud.google.com/firestore/docs)
|
|
160
|
+
- [Cloud Functions](https://cloud.google.com/functions/docs)
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Railway
|
|
2
|
+
|
|
3
|
+
Simple cloud platform for deploying full-stack applications.
|
|
4
|
+
|
|
5
|
+
## Setup & Deployment
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g @railway/cli
|
|
9
|
+
railway login
|
|
10
|
+
railway init
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## railway.json Configuration
|
|
14
|
+
|
|
15
|
+
```json
|
|
16
|
+
{
|
|
17
|
+
"name": "my-app",
|
|
18
|
+
"services": {
|
|
19
|
+
"api": {
|
|
20
|
+
"buildCommand": "npm run build",
|
|
21
|
+
"startCommand": "npm start",
|
|
22
|
+
"environment": {
|
|
23
|
+
"NODE_ENV": "production",
|
|
24
|
+
"DATABASE_URL": "${{ database.DATABASE_URL }}"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"database": {
|
|
28
|
+
"image": "postgres:15",
|
|
29
|
+
"environment": {
|
|
30
|
+
"POSTGRES_PASSWORD": "${{ POSTGRES_PASSWORD }}"
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Deployment
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# Deploy application
|
|
41
|
+
railway up
|
|
42
|
+
|
|
43
|
+
# View logs
|
|
44
|
+
railway logs
|
|
45
|
+
|
|
46
|
+
# Check status
|
|
47
|
+
railway status
|
|
48
|
+
|
|
49
|
+
# Set environment variables
|
|
50
|
+
railway variables set DATABASE_URL=postgresql://...
|
|
51
|
+
railway variables get DATABASE_URL
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Database Integration
|
|
55
|
+
|
|
56
|
+
```typescript
|
|
57
|
+
import { Pool } from 'pg';
|
|
58
|
+
|
|
59
|
+
const pool = new Pool({
|
|
60
|
+
connectionString: process.env.DATABASE_URL
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
async function getUsers() {
|
|
64
|
+
const result = await pool.query('SELECT * FROM users');
|
|
65
|
+
return result.rows;
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Environment Management
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
# Development
|
|
73
|
+
railway env dev
|
|
74
|
+
railway up --environment dev
|
|
75
|
+
|
|
76
|
+
# Production
|
|
77
|
+
railway env prod
|
|
78
|
+
railway up --environment prod
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Best Practices
|
|
82
|
+
|
|
83
|
+
✅ **Simple deployments** - Just git push
|
|
84
|
+
✅ **Built-in databases** - PostgreSQL, MongoDB, Redis
|
|
85
|
+
✅ **Environment separation** - Dev/prod isolation
|
|
86
|
+
✅ **Database backups** - Automatic backups included
|
|
87
|
+
✅ **Custom domains** - Easy domain setup
|
|
88
|
+
|
|
89
|
+
## Resources
|
|
90
|
+
|
|
91
|
+
- [Railway Documentation](https://docs.railway.app/)
|
|
92
|
+
- [Pricing & Limits](https://railway.app/pricing)
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Render
|
|
2
|
+
|
|
3
|
+
Simple cloud platform with generous free tier.
|
|
4
|
+
|
|
5
|
+
## Deployment
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Connect to GitHub
|
|
9
|
+
# Create render.yaml in root
|
|
10
|
+
|
|
11
|
+
# Or use Render dashboard to connect repo
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## render.yaml
|
|
15
|
+
|
|
16
|
+
```yaml
|
|
17
|
+
services:
|
|
18
|
+
- type: web
|
|
19
|
+
name: api
|
|
20
|
+
env: node
|
|
21
|
+
buildCommand: npm run build
|
|
22
|
+
startCommand: npm start
|
|
23
|
+
envVars:
|
|
24
|
+
- key: NODE_ENV
|
|
25
|
+
value: production
|
|
26
|
+
- key: DATABASE_URL
|
|
27
|
+
scope: service
|
|
28
|
+
value: ${{ database.DATABASE_URL }}
|
|
29
|
+
|
|
30
|
+
- type: pserv
|
|
31
|
+
name: database
|
|
32
|
+
env: postgres
|
|
33
|
+
plan: free
|
|
34
|
+
ipAllowList: []
|
|
35
|
+
envVars:
|
|
36
|
+
- key: POSTGRES_USER
|
|
37
|
+
value: user
|
|
38
|
+
- key: POSTGRES_PASSWORD
|
|
39
|
+
generateValue: true
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Deployment Workflow
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# Push to GitHub
|
|
46
|
+
git push origin main
|
|
47
|
+
|
|
48
|
+
# Render automatically deploys
|
|
49
|
+
# No additional commands needed
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Environment Variables
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# Set via Render dashboard
|
|
56
|
+
# Or use render.yaml with generateValue: true
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Best Practices
|
|
60
|
+
|
|
61
|
+
✅ **Free tier** - Adequate for small projects
|
|
62
|
+
✅ **Auto-deploy** - Git integration
|
|
63
|
+
✅ **Database included** - PostgreSQL built-in
|
|
64
|
+
✅ **Easy scaling** - Upgrade instance type
|
|
65
|
+
✅ **Cron jobs** - Background tasks
|
|
66
|
+
|
|
67
|
+
## Resources
|
|
68
|
+
|
|
69
|
+
- [Render Docs](https://render.com/docs)
|
|
70
|
+
- [Pricing](https://render.com/pricing)
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Serverless Architecture
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
Serverless runs functions on demand with automatic scaling and pay-per-execution pricing.
|
|
5
|
+
|
|
6
|
+
## AWS Lambda (TypeScript)
|
|
7
|
+
|
|
8
|
+
```typescript
|
|
9
|
+
import { APIGatewayProxyEvent, APIGatewayProxyResult } from 'aws-lambda';
|
|
10
|
+
import { DynamoDBDocumentClient, GetCommand } from '@aws-sdk/lib-dynamodb';
|
|
11
|
+
import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
|
|
12
|
+
|
|
13
|
+
// Initialize outside handler — reused across warm invocations
|
|
14
|
+
const db = DynamoDBDocumentClient.from(new DynamoDBClient({}));
|
|
15
|
+
|
|
16
|
+
export const handler = async (event: APIGatewayProxyEvent): Promise<APIGatewayProxyResult> => {
|
|
17
|
+
const id = event.pathParameters?.id;
|
|
18
|
+
if (!id) return { statusCode: 400, body: JSON.stringify({ error: 'Missing id' }) };
|
|
19
|
+
|
|
20
|
+
const result = await db.send(new GetCommand({
|
|
21
|
+
TableName: process.env.TABLE_NAME!,
|
|
22
|
+
Key: { PK: `USER#${id}`, SK: `PROFILE#${id}` }
|
|
23
|
+
}));
|
|
24
|
+
|
|
25
|
+
if (!result.Item) return { statusCode: 404, body: JSON.stringify({ error: 'Not found' }) };
|
|
26
|
+
return { statusCode: 200, headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(result.Item) };
|
|
27
|
+
};
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Cloudflare Workers
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
export interface Env { DB: D1Database; KV: KVNamespace; }
|
|
34
|
+
|
|
35
|
+
export default {
|
|
36
|
+
async fetch(req: Request, env: Env): Promise<Response> {
|
|
37
|
+
const url = new URL(req.url);
|
|
38
|
+
if (url.pathname === '/api/users') {
|
|
39
|
+
const { results } = await env.DB.prepare('SELECT * FROM users LIMIT 20').all();
|
|
40
|
+
return Response.json(results);
|
|
41
|
+
}
|
|
42
|
+
return new Response('Not Found', { status: 404 });
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Vercel Edge Function
|
|
48
|
+
|
|
49
|
+
```typescript
|
|
50
|
+
// app/api/edge/route.ts
|
|
51
|
+
export const runtime = 'edge';
|
|
52
|
+
|
|
53
|
+
export async function GET(req: Request) {
|
|
54
|
+
const country = req.headers.get('x-vercel-ip-country') ?? 'US';
|
|
55
|
+
return Response.json({ country, timestamp: Date.now() });
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Best Practices
|
|
60
|
+
- Initialize DB clients outside handlers (reuse on warm invocations)
|
|
61
|
+
- Use DynamoDB/Redis — SQL connection pools don't work well with serverless
|
|
62
|
+
- Bundle with esbuild for small Lambda packages
|
|
63
|
+
- Set appropriate memory — more memory = more CPU on AWS Lambda
|
|
64
|
+
- Use SQS for async work — don't block the function on slow tasks
|
|
65
|
+
|
|
66
|
+
## Resources
|
|
67
|
+
- [AWS Lambda docs](https://docs.aws.amazon.com/lambda/)
|
|
68
|
+
- [Cloudflare Workers](https://developers.cloudflare.com/workers/)
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Vercel
|
|
2
|
+
|
|
3
|
+
Serverless platform optimized for Next.js and edge functions.
|
|
4
|
+
|
|
5
|
+
## Deployment
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Install Vercel CLI
|
|
9
|
+
npm i -g vercel
|
|
10
|
+
|
|
11
|
+
# Deploy
|
|
12
|
+
vercel
|
|
13
|
+
|
|
14
|
+
# Production deployment
|
|
15
|
+
vercel --prod
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Vercel Config
|
|
19
|
+
|
|
20
|
+
```json
|
|
21
|
+
{
|
|
22
|
+
"buildCommand": "npm run build",
|
|
23
|
+
"outputDirectory": ".next",
|
|
24
|
+
"framework": "nextjs",
|
|
25
|
+
"env": [
|
|
26
|
+
"DATABASE_URL",
|
|
27
|
+
"API_SECRET"
|
|
28
|
+
],
|
|
29
|
+
"regions": ["sfo1"]
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Environment Variables
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# Set in Vercel dashboard or via CLI
|
|
37
|
+
vercel env add DATABASE_URL
|
|
38
|
+
|
|
39
|
+
# Pull to local .env.local
|
|
40
|
+
vercel env pull
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Edge Functions
|
|
44
|
+
|
|
45
|
+
```typescript
|
|
46
|
+
// api/middleware.ts
|
|
47
|
+
import { NextResponse } from 'next/server';
|
|
48
|
+
import type { NextRequest } from 'next/server';
|
|
49
|
+
|
|
50
|
+
export function middleware(request: NextRequest) {
|
|
51
|
+
const token = request.headers.get('authorization');
|
|
52
|
+
|
|
53
|
+
if (!token) {
|
|
54
|
+
return NextResponse.json({ error: 'Unauthorized' }, { status: 401 });
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return NextResponse.next();
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export const config = {
|
|
61
|
+
matcher: ['/api/:path*']
|
|
62
|
+
};
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Best Practices
|
|
66
|
+
|
|
67
|
+
✅ **Use environment variables** - Keep secrets secure
|
|
68
|
+
✅ **Enable serverless function caching** - Improve performance
|
|
69
|
+
✅ **Monitor analytics** - Track usage and performance
|
|
70
|
+
✅ **Set up preview deployments** - Test before production
|
|
71
|
+
✅ **Use ISR** - Incremental Static Regeneration
|
|
72
|
+
|
|
73
|
+
## Resources
|
|
74
|
+
|
|
75
|
+
- [Vercel Docs](https://vercel.com/docs)
|
|
76
|
+
- [Next.js Deployment](https://nextjs.org/docs/deployment)
|
|
@@ -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
|