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,301 @@
|
|
|
1
|
+
# Unit Testing
|
|
2
|
+
|
|
3
|
+
Write isolated tests for individual functions and components using Jest and Vitest.
|
|
4
|
+
|
|
5
|
+
## Jest Setup
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -D jest @types/jest ts-jest
|
|
9
|
+
npx jest --init
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Basic Tests
|
|
13
|
+
|
|
14
|
+
```typescript
|
|
15
|
+
describe('Calculator', () => {
|
|
16
|
+
test('adds two numbers', () => {
|
|
17
|
+
const add = (a: number, b: number) => a + b;
|
|
18
|
+
expect(add(2, 3)).toBe(5);
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
test('throws error on invalid input', () => {
|
|
22
|
+
expect(() => {
|
|
23
|
+
const divide = (a: number, b: number) => {
|
|
24
|
+
if (b === 0) throw new Error('Division by zero');
|
|
25
|
+
return a / b;
|
|
26
|
+
};
|
|
27
|
+
divide(10, 0);
|
|
28
|
+
}).toThrow('Division by zero');
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Testing Async Functions
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
test('fetches user data', async () => {
|
|
37
|
+
const fetchUser = async (id: number) => {
|
|
38
|
+
const res = await fetch(`/api/users/${id}`);
|
|
39
|
+
return res.json();
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
// Using async/await
|
|
43
|
+
const user = await fetchUser(1);
|
|
44
|
+
expect(user.name).toBe('John');
|
|
45
|
+
|
|
46
|
+
// Or using .then()
|
|
47
|
+
return fetchUser(1).then((user) => {
|
|
48
|
+
expect(user.email).toBe('john@example.com');
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Mocking
|
|
54
|
+
|
|
55
|
+
```typescript
|
|
56
|
+
// Mock entire module
|
|
57
|
+
jest.mock('./api', () => ({
|
|
58
|
+
fetchUser: jest.fn().mockResolvedValue({ id: 1, name: 'John' })
|
|
59
|
+
}));
|
|
60
|
+
|
|
61
|
+
// Mock specific function
|
|
62
|
+
const mockFn = jest.fn((x) => x * 2);
|
|
63
|
+
expect(mockFn(3)).toBe(6);
|
|
64
|
+
expect(mockFn).toHaveBeenCalledWith(3);
|
|
65
|
+
expect(mockFn).toHaveBeenCalledTimes(1);
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## React Component Tests
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
import { render, screen } from '@testing-library/react';
|
|
72
|
+
import { Button } from './Button';
|
|
73
|
+
|
|
74
|
+
test('renders button with text', () => {
|
|
75
|
+
render(<Button>Click me</Button>);
|
|
76
|
+
const button = screen.getByRole('button', { name: /click me/i });
|
|
77
|
+
expect(button).toBeInTheDocument();
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
test('calls onClick handler', () => {
|
|
81
|
+
const handleClick = jest.fn();
|
|
82
|
+
render(<Button onClick={handleClick}>Click</Button>);
|
|
83
|
+
|
|
84
|
+
screen.getByRole('button').click();
|
|
85
|
+
expect(handleClick).toHaveBeenCalled();
|
|
86
|
+
});
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Test Coverage
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
# Run with coverage report
|
|
93
|
+
jest --coverage
|
|
94
|
+
|
|
95
|
+
# Generate HTML report
|
|
96
|
+
jest --coverage --coverageReporters=html
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Best Practices
|
|
100
|
+
|
|
101
|
+
✅ **Arrange-Act-Assert** - Setup, execute, verify
|
|
102
|
+
✅ **One assertion per test** - Keep tests focused
|
|
103
|
+
✅ **Descriptive names** - Use clear test descriptions
|
|
104
|
+
✅ **Avoid test interdependencies** - Each test independent
|
|
105
|
+
✅ **Mock external dependencies** - Don't test third-party code
|
|
106
|
+
|
|
107
|
+
## Resources
|
|
108
|
+
|
|
109
|
+
- [Jest Documentation](https://jestjs.io/)
|
|
110
|
+
- [React Testing Library](https://testing-library.com/)
|
|
111
|
+
|
|
112
|
+
## Core Patterns & Implementations
|
|
113
|
+
|
|
114
|
+
### Key Concepts
|
|
115
|
+
- Industry standards and best practices
|
|
116
|
+
- Proven architectural patterns
|
|
117
|
+
- Performance optimization techniques
|
|
118
|
+
- Security-first development approach
|
|
119
|
+
- Testing and quality assurance
|
|
120
|
+
|
|
121
|
+
### Common Use Cases
|
|
122
|
+
- Building production applications
|
|
123
|
+
- Solving complex technical problems
|
|
124
|
+
- Optimizing performance and scalability
|
|
125
|
+
- Implementing security best practices
|
|
126
|
+
- Team collaboration and knowledge transfer
|
|
127
|
+
|
|
128
|
+
## Implementation Guide
|
|
129
|
+
|
|
130
|
+
### Setup & Configuration
|
|
131
|
+
- Framework/tool initialization
|
|
132
|
+
- Environment setup
|
|
133
|
+
- Configuration best practices
|
|
134
|
+
- Development vs production settings
|
|
135
|
+
|
|
136
|
+
### Code Examples
|
|
137
|
+
- Real-world patterns and solutions
|
|
138
|
+
- Integration with other tools
|
|
139
|
+
- Error handling approaches
|
|
140
|
+
- Performance optimization
|
|
141
|
+
|
|
142
|
+
### Architecture Patterns
|
|
143
|
+
- Proven design patterns
|
|
144
|
+
- Component organization
|
|
145
|
+
- Data flow and state management
|
|
146
|
+
- Scalability considerations
|
|
147
|
+
|
|
148
|
+
## Best Practices
|
|
149
|
+
|
|
150
|
+
1. **Code Quality** — Follow conventions, write clean code
|
|
151
|
+
2. **Performance** — Profile and optimize bottlenecks
|
|
152
|
+
3. **Security** — Implement security-first practices
|
|
153
|
+
4. **Testing** — Comprehensive test coverage
|
|
154
|
+
5. **Documentation** — Clear, maintainable documentation
|
|
155
|
+
6. **Monitoring** — Track health and metrics
|
|
156
|
+
7. **Scalability** — Design for growth
|
|
157
|
+
|
|
158
|
+
## Testing Strategies
|
|
159
|
+
|
|
160
|
+
- Unit testing fundamentals
|
|
161
|
+
- Integration testing approaches
|
|
162
|
+
- End-to-end testing patterns
|
|
163
|
+
- Performance testing methods
|
|
164
|
+
- Security testing checklist
|
|
165
|
+
|
|
166
|
+
## Performance Considerations
|
|
167
|
+
|
|
168
|
+
- Optimization techniques
|
|
169
|
+
- Caching strategies
|
|
170
|
+
- Database optimization
|
|
171
|
+
- API performance
|
|
172
|
+
- Front-end performance
|
|
173
|
+
- Monitoring and profiling
|
|
174
|
+
|
|
175
|
+
## Security Checklist
|
|
176
|
+
|
|
177
|
+
- Input validation and sanitization
|
|
178
|
+
- Authentication and authorization
|
|
179
|
+
- Data encryption
|
|
180
|
+
- Secure dependencies
|
|
181
|
+
- Common vulnerability patterns
|
|
182
|
+
- Security headers and configuration
|
|
183
|
+
|
|
184
|
+
## Deployment & Operations
|
|
185
|
+
|
|
186
|
+
- Preparation for production
|
|
187
|
+
- Deployment strategies
|
|
188
|
+
- Rollback procedures
|
|
189
|
+
- Monitoring and alerting
|
|
190
|
+
- Logging and debugging
|
|
191
|
+
- Incident response
|
|
192
|
+
|
|
193
|
+
## Integration Points
|
|
194
|
+
|
|
195
|
+
Works seamlessly with:
|
|
196
|
+
- Related technologies and frameworks
|
|
197
|
+
- Development and deployment tools
|
|
198
|
+
- Monitoring and observability
|
|
199
|
+
- Security and compliance tools
|
|
200
|
+
|
|
201
|
+
## Tools & Technologies
|
|
202
|
+
|
|
203
|
+
- Popular frameworks and libraries
|
|
204
|
+
- Development utilities
|
|
205
|
+
- Testing frameworks
|
|
206
|
+
- Deployment platforms
|
|
207
|
+
- Monitoring solutions
|
|
208
|
+
|
|
209
|
+
## Common Pitfalls to Avoid
|
|
210
|
+
|
|
211
|
+
- Premature optimization
|
|
212
|
+
- Ignoring security requirements
|
|
213
|
+
- Insufficient testing
|
|
214
|
+
- Poor error handling
|
|
215
|
+
- Technical debt accumulation
|
|
216
|
+
- Monolithic approaches
|
|
217
|
+
- Lack of monitoring
|
|
218
|
+
|
|
219
|
+
## Learning Path
|
|
220
|
+
|
|
221
|
+
1. Understand core concepts
|
|
222
|
+
2. Study best practices
|
|
223
|
+
3. Review real-world examples
|
|
224
|
+
4. Build sample projects
|
|
225
|
+
5. Apply in production
|
|
226
|
+
6. Mentor others
|
|
227
|
+
7. Stay current
|
|
228
|
+
|
|
229
|
+
## Advanced Topics
|
|
230
|
+
|
|
231
|
+
- Optimization strategies
|
|
232
|
+
- Distributed systems
|
|
233
|
+
- High-availability patterns
|
|
234
|
+
- Advanced security
|
|
235
|
+
- Performance at scale
|
|
236
|
+
- Cloud-native patterns
|
|
237
|
+
|
|
238
|
+
## Resources
|
|
239
|
+
|
|
240
|
+
- Official documentation
|
|
241
|
+
- Community guides and tutorials
|
|
242
|
+
- Best practices and patterns
|
|
243
|
+
- Example implementations
|
|
244
|
+
- Performance optimization guides
|
|
245
|
+
- Security hardening resources
|
|
246
|
+
- Case studies and real-world examples
|
|
247
|
+
|
|
248
|
+
## Success Criteria
|
|
249
|
+
|
|
250
|
+
✅ Implementation follows best practices
|
|
251
|
+
✅ Code is clean and maintainable
|
|
252
|
+
✅ Performance is optimized
|
|
253
|
+
✅ Security requirements met
|
|
254
|
+
✅ Tests provide good coverage
|
|
255
|
+
✅ Documentation is complete
|
|
256
|
+
✅ Monitoring and alerting configured
|
|
257
|
+
✅ Deployment is smooth and safe
|
|
258
|
+
|
|
259
|
+
## When to Use This Skill
|
|
260
|
+
|
|
261
|
+
Apply this skill when:
|
|
262
|
+
- Building production applications
|
|
263
|
+
- Solving complex problems
|
|
264
|
+
- Optimizing performance
|
|
265
|
+
- Implementing security
|
|
266
|
+
- Making architectural decisions
|
|
267
|
+
- Training team members
|
|
268
|
+
- Reviewing code quality
|
|
269
|
+
|
|
270
|
+
## Integration with Other Skills
|
|
271
|
+
|
|
272
|
+
This skill complements:
|
|
273
|
+
- Related framework/tool skills
|
|
274
|
+
- Architecture pattern skills
|
|
275
|
+
- Testing and quality skills
|
|
276
|
+
- DevOps and deployment skills
|
|
277
|
+
- Security and compliance skills
|
|
278
|
+
|
|
279
|
+
## Version Notes
|
|
280
|
+
|
|
281
|
+
- Latest stable releases
|
|
282
|
+
- Feature deprecations
|
|
283
|
+
- Migration guides
|
|
284
|
+
- Breaking changes
|
|
285
|
+
- Upgrade paths
|
|
286
|
+
|
|
287
|
+
## Community & Support
|
|
288
|
+
|
|
289
|
+
- Official forums and discussions
|
|
290
|
+
- Community Slack/Discord channels
|
|
291
|
+
- Stack Overflow resources
|
|
292
|
+
- GitHub discussions
|
|
293
|
+
- Blog posts and articles
|
|
294
|
+
|
|
295
|
+
## Roadmap & Future
|
|
296
|
+
|
|
297
|
+
- Upcoming features
|
|
298
|
+
- Planned improvements
|
|
299
|
+
- Community contributions
|
|
300
|
+
- Performance roadmap
|
|
301
|
+
- Security improvements
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# Accessibility Testing
|
|
2
|
+
|
|
3
|
+
Ensuring applications are usable by everyone.
|
|
4
|
+
|
|
5
|
+
## Automated Testing
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { axe } from 'jest-axe';
|
|
9
|
+
import { render } from '@testing-library/react';
|
|
10
|
+
|
|
11
|
+
describe('Button Accessibility', () => {
|
|
12
|
+
it('should have no accessibility violations', async () => {
|
|
13
|
+
const { container } = render(<Button>Click me</Button>);
|
|
14
|
+
const results = await axe(container);
|
|
15
|
+
expect(results).toHaveNoViolations();
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Manual Testing Checklist
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
Keyboard Navigation:
|
|
24
|
+
✓ All interactive elements are keyboard accessible
|
|
25
|
+
✓ Tab order is logical
|
|
26
|
+
✓ Focus is visible
|
|
27
|
+
✓ Can close modals with ESC
|
|
28
|
+
|
|
29
|
+
Color & Contrast:
|
|
30
|
+
✓ Text contrast ratio ≥ 4.5:1 (normal text)
|
|
31
|
+
✓ Text contrast ratio ≥ 3:1 (large text)
|
|
32
|
+
✓ Information is not conveyed by color alone
|
|
33
|
+
|
|
34
|
+
Screen Readers:
|
|
35
|
+
✓ Page has proper heading hierarchy
|
|
36
|
+
✓ Images have alt text
|
|
37
|
+
✓ Form labels are associated with inputs
|
|
38
|
+
✓ Dynamic content is announced
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Screen Reader Testing
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
// Semantic HTML
|
|
45
|
+
<form>
|
|
46
|
+
<label htmlFor="email">Email:</label>
|
|
47
|
+
<input id="email" type="email" required />
|
|
48
|
+
|
|
49
|
+
<label htmlFor="password">Password:</label>
|
|
50
|
+
<input id="password" type="password" required />
|
|
51
|
+
|
|
52
|
+
<button type="submit">Sign In</button>
|
|
53
|
+
</form>
|
|
54
|
+
|
|
55
|
+
// ARIA when semantic HTML isn't enough
|
|
56
|
+
<button aria-label="Close menu">×</button>
|
|
57
|
+
<div role="alert">{errorMessage}</div>
|
|
58
|
+
<div aria-live="polite">{statusMessage}</div>
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## WebAIM Tools
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Install accessibility testing tools
|
|
65
|
+
npm install -D @testing-library/jest-dom axe-core jest-axe pa11y
|
|
66
|
+
|
|
67
|
+
# Run pa11y
|
|
68
|
+
pa11y http://localhost:3000
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Color Contrast Checker
|
|
72
|
+
|
|
73
|
+
```typescript
|
|
74
|
+
function getContrastRatio(foreground: string, background: string): number {
|
|
75
|
+
const getLuminance = (color: string): number => {
|
|
76
|
+
const rgb = parseInt(color.slice(1), 16);
|
|
77
|
+
const r = (rgb >> 16) & 0xff;
|
|
78
|
+
const g = (rgb >> 8) & 0xff;
|
|
79
|
+
const b = rgb & 0xff;
|
|
80
|
+
|
|
81
|
+
const [rs, gs, bs] = [r, g, b].map(x => {
|
|
82
|
+
x = x / 255;
|
|
83
|
+
return x <= 0.03928 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
return 0.2126 * rs + 0.7152 * gs + 0.0722 * bs;
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
const l1 = getLuminance(foreground);
|
|
90
|
+
const l2 = getLuminance(background);
|
|
91
|
+
|
|
92
|
+
const lighter = Math.max(l1, l2);
|
|
93
|
+
const darker = Math.min(l1, l2);
|
|
94
|
+
|
|
95
|
+
return (lighter + 0.05) / (darker + 0.05);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// Usage
|
|
99
|
+
const ratio = getContrastRatio('#333333', '#ffffff');
|
|
100
|
+
console.log(`Contrast ratio: ${ratio.toFixed(2)}:1`);
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Best Practices
|
|
104
|
+
|
|
105
|
+
✅ **Use semantic HTML** - `<button>` not `<div onClick>`
|
|
106
|
+
✅ **Alt text for images** - Describe image content
|
|
107
|
+
✅ **Form labels** - Associate with inputs
|
|
108
|
+
✅ **Keyboard navigation** - Navigate without mouse
|
|
109
|
+
✅ **Color not only** - Don't convey info via color alone
|
|
110
|
+
✅ **Focus visible** - Clear focus indicator
|
|
111
|
+
✅ **Sufficient contrast** - WCAG AA standard
|
|
112
|
+
|
|
113
|
+
## Resources
|
|
114
|
+
|
|
115
|
+
- [WebAIM](https://webaim.org/)
|
|
116
|
+
- [WCAG 2.1 Guidelines](https://www.w3.org/WAI/WCAG21/quickref/)
|
|
117
|
+
- [jest-axe](https://github.com/nickcolley/jest-axe)
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Contract Testing
|
|
2
|
+
|
|
3
|
+
Testing API contracts between services.
|
|
4
|
+
|
|
5
|
+
## Pact Setup
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -D @pact-foundation/pact
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Consumer Test
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
import { Pact, Matchers } from '@pact-foundation/pact';
|
|
15
|
+
|
|
16
|
+
describe('UserService Consumer', () => {
|
|
17
|
+
const provider = new Pact({
|
|
18
|
+
consumer: 'Frontend',
|
|
19
|
+
provider: 'UserAPI'
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
it('fetches user successfully', async () => {
|
|
23
|
+
await provider.addInteraction({
|
|
24
|
+
state: 'user with ID 1 exists',
|
|
25
|
+
uponReceiving: 'a request for user 1',
|
|
26
|
+
withRequest: {
|
|
27
|
+
method: 'GET',
|
|
28
|
+
path: '/api/users/1'
|
|
29
|
+
},
|
|
30
|
+
willRespondWith: {
|
|
31
|
+
status: 200,
|
|
32
|
+
body: {
|
|
33
|
+
id: Matchers.like(1),
|
|
34
|
+
email: Matchers.like('user@example.com'),
|
|
35
|
+
name: Matchers.like('John')
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
const user = await userService.getUser(1);
|
|
41
|
+
|
|
42
|
+
expect(user.email).toBe('user@example.com');
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
afterAll(() => provider.finalize());
|
|
46
|
+
});
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Provider Test
|
|
50
|
+
|
|
51
|
+
```typescript
|
|
52
|
+
describe('UserAPI Provider', () => {
|
|
53
|
+
it('honors the consumer contract', async () => {
|
|
54
|
+
const opts = {
|
|
55
|
+
consumerVersionSelectors: [{ tag: 'main' }],
|
|
56
|
+
providerBaseUrl: 'http://localhost:3000'
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
await verifyPacts(opts);
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Benefits
|
|
65
|
+
|
|
66
|
+
✅ **Prevents integration breaks** - Catch issues early
|
|
67
|
+
✅ **Consumer-driven** - Tests reflect real usage
|
|
68
|
+
✅ **Independent testing** - No need for other service
|
|
69
|
+
✅ **Documentation** - Contract serves as spec
|
|
70
|
+
✅ **Confidence** - Verify contracts between services
|
|
71
|
+
|
|
72
|
+
## Resources
|
|
73
|
+
|
|
74
|
+
- [Pact Documentation](https://docs.pact.dev/)
|
|
75
|
+
- [Contract Testing](https://martinfowler.com/articles/consumerDrivenContracts.html)
|
|
@@ -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,79 @@
|
|
|
1
|
+
# Load & Stress Testing
|
|
2
|
+
|
|
3
|
+
Testing application behavior under load.
|
|
4
|
+
|
|
5
|
+
## Apache JMeter
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Create test plan graphically
|
|
9
|
+
jmeter
|
|
10
|
+
|
|
11
|
+
# Run from command line
|
|
12
|
+
jmeter -n -t test.jmx -l results.jtl -j logs.txt
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Locust (Python-based)
|
|
16
|
+
|
|
17
|
+
```python
|
|
18
|
+
from locust import HttpUser, task, between
|
|
19
|
+
|
|
20
|
+
class APIUser(HttpUser):
|
|
21
|
+
wait_time = between(1, 5)
|
|
22
|
+
|
|
23
|
+
@task(3)
|
|
24
|
+
def get_users(self):
|
|
25
|
+
self.client.get("/api/users")
|
|
26
|
+
|
|
27
|
+
@task(1)
|
|
28
|
+
def create_user(self):
|
|
29
|
+
self.client.post("/api/users", {
|
|
30
|
+
"email": "test@example.com",
|
|
31
|
+
"name": "Test User"
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
# Run: locust -f locustfile.py --host=http://localhost:3000
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Artillery Load Testing
|
|
38
|
+
|
|
39
|
+
```yaml
|
|
40
|
+
# load-test.yml
|
|
41
|
+
config:
|
|
42
|
+
target: "http://localhost:3000"
|
|
43
|
+
phases:
|
|
44
|
+
- duration: 60
|
|
45
|
+
arrivalRate: 10
|
|
46
|
+
name: "Warm up"
|
|
47
|
+
- duration: 60
|
|
48
|
+
arrivalRate: 20
|
|
49
|
+
name: "Sustained load"
|
|
50
|
+
|
|
51
|
+
scenarios:
|
|
52
|
+
- name: "API Load Test"
|
|
53
|
+
flow:
|
|
54
|
+
- get:
|
|
55
|
+
url: "/api/users"
|
|
56
|
+
- post:
|
|
57
|
+
url: "/api/users"
|
|
58
|
+
json:
|
|
59
|
+
email: "test@example.com"
|
|
60
|
+
name: "Test"
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
artillery run load-test.yml
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Best Practices
|
|
68
|
+
|
|
69
|
+
✅ **Gradual ramp-up** - Start low, increase gradually
|
|
70
|
+
✅ **Realistic scenarios** - Mimic actual usage
|
|
71
|
+
✅ **Monitor metrics** - CPU, memory, database
|
|
72
|
+
✅ **Identify bottlenecks** - Find breaking points
|
|
73
|
+
✅ **Set thresholds** - Define acceptable limits
|
|
74
|
+
|
|
75
|
+
## Resources
|
|
76
|
+
|
|
77
|
+
- [Apache JMeter](https://jmeter.apache.org/)
|
|
78
|
+
- [Locust](https://locust.io/)
|
|
79
|
+
- [Artillery](https://artillery.io/)
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Mutation Testing
|
|
2
|
+
|
|
3
|
+
Testing the quality of your tests.
|
|
4
|
+
|
|
5
|
+
## Stryker Setup
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -D @stryker-mutator/core @stryker-mutator/typescript-checker
|
|
9
|
+
npx stryker init
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Configuration
|
|
13
|
+
|
|
14
|
+
```json
|
|
15
|
+
{
|
|
16
|
+
"stryker-config": {
|
|
17
|
+
"mutate": ["src/**/*.ts"],
|
|
18
|
+
"mutator": "typescript",
|
|
19
|
+
"testRunner": "vitest",
|
|
20
|
+
"reporters": ["html", "json", "dashboard"],
|
|
21
|
+
"basePath": ".",
|
|
22
|
+
"concurrency": 4,
|
|
23
|
+
"coverageAnalysis": "all"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Running Tests
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# Run mutation testing
|
|
32
|
+
npm run stryker
|
|
33
|
+
|
|
34
|
+
# Generate report
|
|
35
|
+
npx stryker report --baseDir baseline
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Understanding Mutations
|
|
39
|
+
|
|
40
|
+
```typescript
|
|
41
|
+
// Original code
|
|
42
|
+
function add(a: number, b: number): number {
|
|
43
|
+
return a + b;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Possible mutations
|
|
47
|
+
// 1. return a - b;
|
|
48
|
+
// 2. return a * b;
|
|
49
|
+
// 3. return a / b;
|
|
50
|
+
// 4. return 0;
|
|
51
|
+
|
|
52
|
+
// Test quality
|
|
53
|
+
describe('add', () => {
|
|
54
|
+
it('should add numbers', () => {
|
|
55
|
+
expect(add(2, 3)).toBe(5);
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
// Good: kills multiple mutations
|
|
59
|
+
it('should handle negative numbers', () => {
|
|
60
|
+
expect(add(-2, 3)).toBe(1);
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
// Better: more specific assertions
|
|
64
|
+
it('should not use multiplication', () => {
|
|
65
|
+
expect(add(2, 3)).not.toBe(6);
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Mutation Score Interpretation
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
Killed: Test caught the mutation
|
|
74
|
+
Survived: Test missed the mutation
|
|
75
|
+
Timeout: Mutation caused infinite loop
|
|
76
|
+
Error: Mutation caused compilation error
|
|
77
|
+
|
|
78
|
+
Score = (Killed / (Killed + Survived)) * 100
|
|
79
|
+
Target: > 80% mutation score
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Best Practices
|
|
83
|
+
|
|
84
|
+
✅ **Kill mutations** - Tests should fail when code changes
|
|
85
|
+
✅ **Avoid flaky tests** - Deterministic behavior
|
|
86
|
+
✅ **Full coverage** - High code coverage + mutation score
|
|
87
|
+
✅ **Edge cases** - Test boundaries
|
|
88
|
+
✅ **Assertions** - Multiple assertions per test
|
|
89
|
+
|
|
90
|
+
## Resources
|
|
91
|
+
|
|
92
|
+
- [Stryker Mutator](https://stryker-mutator.io/)
|