claudeinone-cli 1.0.2 → 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/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,97 @@
|
|
|
1
|
+
# Design Tokens
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
Design tokens are named variables for design decisions (colors, spacing, typography) that maintain consistency across platforms.
|
|
5
|
+
|
|
6
|
+
## CSS Custom Properties (Variables)
|
|
7
|
+
|
|
8
|
+
```css
|
|
9
|
+
/* globals.css */
|
|
10
|
+
:root {
|
|
11
|
+
/* Colors */
|
|
12
|
+
--color-primary-50: #eff6ff;
|
|
13
|
+
--color-primary-500: #3b82f6;
|
|
14
|
+
--color-primary-600: #2563eb;
|
|
15
|
+
--color-primary-900: #1e3a8a;
|
|
16
|
+
|
|
17
|
+
/* Semantic colors */
|
|
18
|
+
--color-background: #ffffff;
|
|
19
|
+
--color-foreground: #0f172a;
|
|
20
|
+
--color-muted: #f1f5f9;
|
|
21
|
+
--color-muted-foreground: #64748b;
|
|
22
|
+
--color-border: #e2e8f0;
|
|
23
|
+
|
|
24
|
+
/* Spacing */
|
|
25
|
+
--spacing-xs: 0.25rem;
|
|
26
|
+
--spacing-sm: 0.5rem;
|
|
27
|
+
--spacing-md: 1rem;
|
|
28
|
+
--spacing-lg: 1.5rem;
|
|
29
|
+
--spacing-xl: 2rem;
|
|
30
|
+
|
|
31
|
+
/* Typography */
|
|
32
|
+
--font-sans: 'Inter', system-ui, sans-serif;
|
|
33
|
+
--font-mono: 'Fira Code', 'Courier New', monospace;
|
|
34
|
+
--font-size-sm: 0.875rem;
|
|
35
|
+
--font-size-base: 1rem;
|
|
36
|
+
--font-size-lg: 1.125rem;
|
|
37
|
+
|
|
38
|
+
/* Radius */
|
|
39
|
+
--radius-sm: 0.25rem;
|
|
40
|
+
--radius-md: 0.5rem;
|
|
41
|
+
--radius-lg: 0.75rem;
|
|
42
|
+
--radius-full: 9999px;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
[data-theme="dark"] {
|
|
46
|
+
--color-background: #0f172a;
|
|
47
|
+
--color-foreground: #f8fafc;
|
|
48
|
+
--color-muted: #1e293b;
|
|
49
|
+
--color-border: #334155;
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Tailwind CSS v4 Tokens
|
|
54
|
+
|
|
55
|
+
```css
|
|
56
|
+
/* app/globals.css */
|
|
57
|
+
@import "tailwindcss";
|
|
58
|
+
|
|
59
|
+
@theme {
|
|
60
|
+
--color-primary: #3b82f6;
|
|
61
|
+
--color-primary-hover: #2563eb;
|
|
62
|
+
--font-family-sans: 'Inter', sans-serif;
|
|
63
|
+
--spacing-page: 1.5rem;
|
|
64
|
+
--radius-card: 0.75rem;
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## TypeScript Token Object
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
// lib/tokens.ts
|
|
72
|
+
export const tokens = {
|
|
73
|
+
colors: {
|
|
74
|
+
primary: { 50: '#eff6ff', 500: '#3b82f6', 900: '#1e3a8a' },
|
|
75
|
+
gray: { 50: '#f9fafb', 500: '#6b7280', 900: '#111827' },
|
|
76
|
+
success: '#22c55e',
|
|
77
|
+
warning: '#f59e0b',
|
|
78
|
+
error: '#ef4444',
|
|
79
|
+
},
|
|
80
|
+
spacing: { xs: '4px', sm: '8px', md: '16px', lg: '24px', xl: '32px' },
|
|
81
|
+
fontSize: { sm: '14px', base: '16px', lg: '18px', xl: '20px', '2xl': '24px' },
|
|
82
|
+
borderRadius: { sm: '4px', md: '8px', lg: '12px', full: '9999px' },
|
|
83
|
+
} as const;
|
|
84
|
+
|
|
85
|
+
type Colors = typeof tokens.colors;
|
|
86
|
+
export type ColorKey = keyof Colors;
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Best Practices
|
|
90
|
+
- Use semantic tokens (`--color-background`) not literal tokens (`--color-white`) in components
|
|
91
|
+
- Dark mode: swap semantic tokens, not all literal tokens
|
|
92
|
+
- Define tokens once in CSS variables, reference everywhere
|
|
93
|
+
- Use Tailwind v4 `@theme` to expose tokens as utility classes
|
|
94
|
+
|
|
95
|
+
## Resources
|
|
96
|
+
- [Tailwind v4 theming](https://tailwindcss.com/docs/theme)
|
|
97
|
+
- [Design Tokens W3C spec](https://www.w3.org/community/design-tokens/)
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# Date & Time Handling
|
|
2
|
+
|
|
3
|
+
Working with dates, timezones, and scheduling.
|
|
4
|
+
|
|
5
|
+
## date-fns Library
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import {
|
|
9
|
+
format,
|
|
10
|
+
parse,
|
|
11
|
+
addDays,
|
|
12
|
+
isBefore,
|
|
13
|
+
differenceInDays,
|
|
14
|
+
startOfDay,
|
|
15
|
+
endOfDay
|
|
16
|
+
} from 'date-fns';
|
|
17
|
+
|
|
18
|
+
// Format dates
|
|
19
|
+
const formatted = format(new Date(), 'yyyy-MM-dd HH:mm:ss');
|
|
20
|
+
|
|
21
|
+
// Parse dates
|
|
22
|
+
const parsed = parse('2024-01-15', 'yyyy-MM-dd', new Date());
|
|
23
|
+
|
|
24
|
+
// Manipulate dates
|
|
25
|
+
const tomorrow = addDays(new Date(), 1);
|
|
26
|
+
const nextWeek = addDays(new Date(), 7);
|
|
27
|
+
|
|
28
|
+
// Compare dates
|
|
29
|
+
const isExpired = isBefore(expiryDate, new Date());
|
|
30
|
+
|
|
31
|
+
// Calculate differences
|
|
32
|
+
const daysDiff = differenceInDays(new Date(), pastDate);
|
|
33
|
+
|
|
34
|
+
// Get start/end of day
|
|
35
|
+
const dayStart = startOfDay(new Date());
|
|
36
|
+
const dayEnd = endOfDay(new Date());
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Day.js (Lightweight)
|
|
40
|
+
|
|
41
|
+
```typescript
|
|
42
|
+
import dayjs from 'dayjs';
|
|
43
|
+
import utc from 'dayjs/plugin/utc';
|
|
44
|
+
import timezone from 'dayjs/plugin/timezone';
|
|
45
|
+
|
|
46
|
+
dayjs.extend(utc);
|
|
47
|
+
dayjs.extend(timezone);
|
|
48
|
+
|
|
49
|
+
// Basic operations
|
|
50
|
+
const now = dayjs();
|
|
51
|
+
const formatted = now.format('YYYY-MM-DD HH:mm:ss');
|
|
52
|
+
const tomorrow = now.add(1, 'day');
|
|
53
|
+
|
|
54
|
+
// Timezone handling
|
|
55
|
+
const nyTime = dayjs().tz('America/New_York');
|
|
56
|
+
const londonTime = dayjs().tz('Europe/London');
|
|
57
|
+
|
|
58
|
+
console.log(nyTime.format('HH:mm')); // New York time
|
|
59
|
+
console.log(londonTime.format('HH:mm')); // London time
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Cron Jobs
|
|
63
|
+
|
|
64
|
+
```typescript
|
|
65
|
+
import cron from 'node-cron';
|
|
66
|
+
import schedule from 'node-schedule';
|
|
67
|
+
|
|
68
|
+
// node-cron syntax
|
|
69
|
+
// Run every day at 2 AM
|
|
70
|
+
cron.schedule('0 2 * * *', async () => {
|
|
71
|
+
console.log('Running daily task');
|
|
72
|
+
await cleanupExpiredTokens();
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
// Run every Monday at 9 AM
|
|
76
|
+
cron.schedule('0 9 * * 1', async () => {
|
|
77
|
+
console.log('Weekly report');
|
|
78
|
+
await generateWeeklyReport();
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
// node-schedule syntax
|
|
82
|
+
const job = schedule.scheduleJob('0 9 * * 1', async () => {
|
|
83
|
+
console.log('Scheduled task running');
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
// Cancel job
|
|
87
|
+
job.cancel();
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Timezone Handling
|
|
91
|
+
|
|
92
|
+
```typescript
|
|
93
|
+
function convertToTimezone(date: Date, timezone: string): string {
|
|
94
|
+
return dayjs(date).tz(timezone).format('YYYY-MM-DD HH:mm:ss');
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// Examples
|
|
98
|
+
console.log(convertToTimezone(new Date(), 'America/New_York'));
|
|
99
|
+
console.log(convertToTimezone(new Date(), 'Europe/London'));
|
|
100
|
+
console.log(convertToTimezone(new Date(), 'Asia/Tokyo'));
|
|
101
|
+
|
|
102
|
+
// Store times in UTC, display in user's timezone
|
|
103
|
+
async function getUserEvents(userId: string) {
|
|
104
|
+
const user = await db.users.findById(userId);
|
|
105
|
+
const events = await db.events.findByUserId(userId);
|
|
106
|
+
|
|
107
|
+
return events.map(event => ({
|
|
108
|
+
...event,
|
|
109
|
+
displayTime: dayjs(event.startTime).tz(user.timezone)
|
|
110
|
+
}));
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Recurring Schedules
|
|
115
|
+
|
|
116
|
+
```typescript
|
|
117
|
+
import RRule from 'rrule';
|
|
118
|
+
|
|
119
|
+
// Repeat every weekday at 9 AM
|
|
120
|
+
const rule = new RRule({
|
|
121
|
+
freq: RRule.DAILY,
|
|
122
|
+
byweekday: [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR],
|
|
123
|
+
dtstart: new Date(2024, 0, 1, 9, 0)
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
// Get next 10 occurrences
|
|
127
|
+
const occurrences = rule.all().slice(0, 10);
|
|
128
|
+
|
|
129
|
+
// Monthly subscription billing
|
|
130
|
+
const billingRule = new RRule({
|
|
131
|
+
freq: RRule.MONTHLY,
|
|
132
|
+
bymonthday: 1, // First day of month
|
|
133
|
+
dtstart: new Date()
|
|
134
|
+
});
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Date Range Queries
|
|
138
|
+
|
|
139
|
+
```typescript
|
|
140
|
+
// Find events in date range
|
|
141
|
+
async function getEventsInRange(startDate: Date, endDate: Date) {
|
|
142
|
+
return await db.events.find({
|
|
143
|
+
startTime: { $gte: startDate, $lte: endDate }
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// Find upcoming events
|
|
148
|
+
async function getUpcomingEvents(days: number = 7) {
|
|
149
|
+
const today = dayjs().startOf('day').toDate();
|
|
150
|
+
const futureDate = dayjs().add(days, 'day').endOf('day').toDate();
|
|
151
|
+
|
|
152
|
+
return await db.events.find({
|
|
153
|
+
startTime: { $gte: today, $lte: futureDate }
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## Best Practices
|
|
159
|
+
|
|
160
|
+
✅ **Store in UTC** - Always store dates in UTC
|
|
161
|
+
✅ **Display in user timezone** - Convert for display
|
|
162
|
+
✅ **Use ISO strings** - For API communication
|
|
163
|
+
✅ **Avoid time libraries** - Use date-fns or Day.js
|
|
164
|
+
✅ **Test with timezones** - Include timezone in tests
|
|
165
|
+
|
|
166
|
+
## Resources
|
|
167
|
+
|
|
168
|
+
- [date-fns Documentation](https://date-fns.org/)
|
|
169
|
+
- [Day.js Documentation](https://day.js.org/)
|
|
170
|
+
- [RRule Documentation](https://github.com/jakubroztocil/rrule)
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# Schema Validation
|
|
2
|
+
|
|
3
|
+
Validating data structure and types.
|
|
4
|
+
|
|
5
|
+
## Zod
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
|
|
10
|
+
const UserSchema = z.object({
|
|
11
|
+
id: z.string().uuid(),
|
|
12
|
+
email: z.string().email(),
|
|
13
|
+
age: z.number().min(18).max(120),
|
|
14
|
+
status: z.enum(['active', 'inactive', 'pending']),
|
|
15
|
+
createdAt: z.date(),
|
|
16
|
+
tags: z.array(z.string()).optional(),
|
|
17
|
+
profile: z.object({
|
|
18
|
+
bio: z.string().optional(),
|
|
19
|
+
avatar: z.string().url()
|
|
20
|
+
})
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
type User = z.infer<typeof UserSchema>;
|
|
24
|
+
|
|
25
|
+
// Validate
|
|
26
|
+
const user = await UserSchema.parseAsync(userData);
|
|
27
|
+
|
|
28
|
+
// Validate with error handling
|
|
29
|
+
const result = UserSchema.safeParse(userData);
|
|
30
|
+
if (!result.success) {
|
|
31
|
+
console.error(result.error.flatten());
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Custom validation
|
|
35
|
+
const PasswordSchema = z.string()
|
|
36
|
+
.min(8, 'Too short')
|
|
37
|
+
.regex(/[A-Z]/, 'Need uppercase')
|
|
38
|
+
.regex(/[0-9]/, 'Need number');
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Yup
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
import * as Yup from 'yup';
|
|
45
|
+
|
|
46
|
+
const schema = Yup.object({
|
|
47
|
+
email: Yup.string().email().required(),
|
|
48
|
+
password: Yup.string().min(8).required(),
|
|
49
|
+
age: Yup.number().min(18).required()
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
schema.validate({
|
|
53
|
+
email: 'test@example.com',
|
|
54
|
+
password: 'secure123',
|
|
55
|
+
age: 25
|
|
56
|
+
}).then(valid => {
|
|
57
|
+
console.log(valid);
|
|
58
|
+
}).catch(err => {
|
|
59
|
+
console.error(err.message);
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
// Async validation
|
|
63
|
+
const schema = Yup.object({
|
|
64
|
+
email: Yup.string().email().required().test(
|
|
65
|
+
'unique-email',
|
|
66
|
+
'Email already exists',
|
|
67
|
+
async (email) => {
|
|
68
|
+
const exists = await checkEmailExists(email);
|
|
69
|
+
return !exists;
|
|
70
|
+
}
|
|
71
|
+
)
|
|
72
|
+
});
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Runtime Type Checking
|
|
76
|
+
|
|
77
|
+
```typescript
|
|
78
|
+
// Using a simple validator
|
|
79
|
+
const validate = (data: unknown, schema: any): boolean => {
|
|
80
|
+
return schema.safeParse(data).success;
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
// API route validation
|
|
84
|
+
app.post('/api/users', (req, res) => {
|
|
85
|
+
const result = UserSchema.safeParse(req.body);
|
|
86
|
+
|
|
87
|
+
if (!result.success) {
|
|
88
|
+
return res.status(400).json({
|
|
89
|
+
errors: result.error.flatten()
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// result.data is now typed as User
|
|
94
|
+
const user = await db.users.create(result.data);
|
|
95
|
+
res.status(201).json(user);
|
|
96
|
+
});
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Best Practices
|
|
100
|
+
|
|
101
|
+
✅ **Type inference** - Use z.infer for TypeScript types
|
|
102
|
+
✅ **Custom messages** - Clear error messages
|
|
103
|
+
✅ **Async validation** - For unique fields
|
|
104
|
+
✅ **Reusable schemas** - DRY validation
|
|
105
|
+
✅ **Server & client** - Validate both sides
|
|
106
|
+
|
|
107
|
+
## Resources
|
|
108
|
+
|
|
109
|
+
- [Zod Documentation](https://zod.dev/)
|
|
110
|
+
- [Yup Documentation](https://github.com/jquense/yup)
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# Git Version Control
|
|
2
|
+
|
|
3
|
+
Source code management and collaboration.
|
|
4
|
+
|
|
5
|
+
## Git Basics
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Initialize repository
|
|
9
|
+
git init
|
|
10
|
+
|
|
11
|
+
# Clone repository
|
|
12
|
+
git clone https://github.com/user/repo.git
|
|
13
|
+
|
|
14
|
+
# Check status
|
|
15
|
+
git status
|
|
16
|
+
|
|
17
|
+
# Stage changes
|
|
18
|
+
git add .
|
|
19
|
+
git add src/file.ts
|
|
20
|
+
|
|
21
|
+
# Commit
|
|
22
|
+
git commit -m "feat: add new feature"
|
|
23
|
+
|
|
24
|
+
# Push to remote
|
|
25
|
+
git push origin main
|
|
26
|
+
|
|
27
|
+
# Pull latest changes
|
|
28
|
+
git pull origin main
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Branching Strategy
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# Create branch
|
|
35
|
+
git checkout -b feature/new-feature
|
|
36
|
+
|
|
37
|
+
# Switch branch
|
|
38
|
+
git checkout main
|
|
39
|
+
|
|
40
|
+
# List branches
|
|
41
|
+
git branch -a
|
|
42
|
+
|
|
43
|
+
# Delete branch
|
|
44
|
+
git branch -d feature/new-feature
|
|
45
|
+
git branch -D feature/force-delete
|
|
46
|
+
|
|
47
|
+
# Merge branch
|
|
48
|
+
git merge feature/new-feature
|
|
49
|
+
|
|
50
|
+
# Rebase (linear history)
|
|
51
|
+
git rebase main
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Advanced Git
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# View commit history
|
|
58
|
+
git log --oneline --graph --all
|
|
59
|
+
|
|
60
|
+
# Check specific commit
|
|
61
|
+
git show abc123
|
|
62
|
+
|
|
63
|
+
# Revert commit
|
|
64
|
+
git revert abc123
|
|
65
|
+
|
|
66
|
+
# Cherry-pick commit
|
|
67
|
+
git cherry-pick abc123
|
|
68
|
+
|
|
69
|
+
# Stash changes
|
|
70
|
+
git stash
|
|
71
|
+
git stash list
|
|
72
|
+
git stash pop
|
|
73
|
+
|
|
74
|
+
# Interactive rebase
|
|
75
|
+
git rebase -i HEAD~5
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Git Workflows
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# GitHub Flow (simple)
|
|
82
|
+
git checkout -b feature-branch
|
|
83
|
+
# Make changes
|
|
84
|
+
git commit -m "Add feature"
|
|
85
|
+
git push origin feature-branch
|
|
86
|
+
# Create Pull Request
|
|
87
|
+
|
|
88
|
+
# Git Flow (complex projects)
|
|
89
|
+
git checkout -b develop
|
|
90
|
+
git checkout -b release/1.0.0
|
|
91
|
+
git checkout -b hotfix/critical-bug
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Undoing Changes
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
# Undo unstaged changes
|
|
98
|
+
git checkout -- src/file.ts
|
|
99
|
+
|
|
100
|
+
# Undo staged changes
|
|
101
|
+
git reset HEAD src/file.ts
|
|
102
|
+
|
|
103
|
+
# Undo commit (keep changes)
|
|
104
|
+
git reset --soft HEAD~1
|
|
105
|
+
|
|
106
|
+
# Undo commit (discard changes)
|
|
107
|
+
git reset --hard HEAD~1
|
|
108
|
+
|
|
109
|
+
# Amend last commit
|
|
110
|
+
git commit --amend --no-edit
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Remote Management
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
# List remotes
|
|
117
|
+
git remote -v
|
|
118
|
+
|
|
119
|
+
# Add remote
|
|
120
|
+
git remote add origin https://github.com/user/repo.git
|
|
121
|
+
|
|
122
|
+
# Change remote URL
|
|
123
|
+
git remote set-url origin https://github.com/user/new-repo.git
|
|
124
|
+
|
|
125
|
+
# Remove remote
|
|
126
|
+
git remote remove origin
|
|
127
|
+
|
|
128
|
+
# Fetch all remotes
|
|
129
|
+
git fetch --all
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Best Practices
|
|
133
|
+
|
|
134
|
+
✅ **Meaningful commits** - Clear commit messages
|
|
135
|
+
✅ **Small commits** - One feature per commit
|
|
136
|
+
✅ **Branch per feature** - Isolate work
|
|
137
|
+
✅ **Code review** - Pull request process
|
|
138
|
+
✅ **Protected main** - Require approvals
|
|
139
|
+
|
|
140
|
+
## Resources
|
|
141
|
+
|
|
142
|
+
- [Git Documentation](https://git-scm.com/doc)
|
|
143
|
+
- [GitHub Guides](https://guides.github.com/)
|
|
144
|
+
- [Atlassian Git Tutorials](https://www.atlassian.com/git)
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# WCAG & Accessibility Standards
|
|
2
|
+
|
|
3
|
+
Web Content Accessibility Guidelines compliance.
|
|
4
|
+
|
|
5
|
+
## WCAG Levels
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
WCAG 2.1 has three levels:
|
|
9
|
+
- Level A: Basic accessibility
|
|
10
|
+
- Level AA: Enhanced accessibility (recommended)
|
|
11
|
+
- Level AAA: Advanced accessibility
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Perceivable
|
|
15
|
+
|
|
16
|
+
```html
|
|
17
|
+
<!-- Images need alt text -->
|
|
18
|
+
<img src="dog.jpg" alt="Brown dog playing in park">
|
|
19
|
+
|
|
20
|
+
<!-- Color not only indicator -->
|
|
21
|
+
<label>
|
|
22
|
+
<input type="checkbox"> Required field
|
|
23
|
+
</label>
|
|
24
|
+
<!-- Don't rely only on color -->
|
|
25
|
+
|
|
26
|
+
<!-- Captions for video -->
|
|
27
|
+
<video>
|
|
28
|
+
<track kind="captions" src="captions.vtt">
|
|
29
|
+
</video>
|
|
30
|
+
|
|
31
|
+
<!-- Sufficient contrast -->
|
|
32
|
+
<style>
|
|
33
|
+
body { color: #333; background: #fff; } /* 21:1 ratio */
|
|
34
|
+
</style>
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Operable
|
|
38
|
+
|
|
39
|
+
```html
|
|
40
|
+
<!-- Keyboard navigation -->
|
|
41
|
+
<button>Accessible button</button>
|
|
42
|
+
<a href="/page">Link</a>
|
|
43
|
+
|
|
44
|
+
<!-- Skip navigation -->
|
|
45
|
+
<a href="#main" class="skip-link">Skip to main</a>
|
|
46
|
+
|
|
47
|
+
<!-- Focus visible -->
|
|
48
|
+
<style>
|
|
49
|
+
button:focus-visible {
|
|
50
|
+
outline: 2px solid blue;
|
|
51
|
+
}
|
|
52
|
+
</style>
|
|
53
|
+
|
|
54
|
+
<!-- Sufficient time -->
|
|
55
|
+
<!-- No auto-refreshing content -->
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Understandable
|
|
59
|
+
|
|
60
|
+
```html
|
|
61
|
+
<!-- Clear language -->
|
|
62
|
+
<label for="email">Email address</label>
|
|
63
|
+
<input id="email" type="email" required>
|
|
64
|
+
|
|
65
|
+
<!-- Consistent navigation -->
|
|
66
|
+
<!-- Menu in same location -->
|
|
67
|
+
|
|
68
|
+
<!-- Error prevention -->
|
|
69
|
+
<input type="email" required>
|
|
70
|
+
<span class="error" role="alert">Invalid email</span>
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Robust
|
|
74
|
+
|
|
75
|
+
```html
|
|
76
|
+
<!-- Valid HTML -->
|
|
77
|
+
<div role="navigation">Menu</div>
|
|
78
|
+
|
|
79
|
+
<!-- ARIA labels -->
|
|
80
|
+
<button aria-label="Close menu">×</button>
|
|
81
|
+
|
|
82
|
+
<!-- Semantic HTML -->
|
|
83
|
+
<nav>Navigation</nav>
|
|
84
|
+
<main>Main content</main>
|
|
85
|
+
<footer>Footer</footer>
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Testing Checklist
|
|
89
|
+
|
|
90
|
+
- [ ] Keyboard navigation works
|
|
91
|
+
- [ ] Color contrast ≥ 4.5:1
|
|
92
|
+
- [ ] All images have alt text
|
|
93
|
+
- [ ] Form labels associated
|
|
94
|
+
- [ ] Focus indicator visible
|
|
95
|
+
- [ ] No auto-playing content
|
|
96
|
+
- [ ] Heading hierarchy correct
|
|
97
|
+
- [ ] Links descriptive
|
|
98
|
+
|
|
99
|
+
## Resources
|
|
100
|
+
|
|
101
|
+
- [WCAG 2.1 Guidelines](https://www.w3.org/WAI/WCAG21/quickref/)
|
|
102
|
+
- [ARIA Best Practices](https://www.w3.org/WAI/ARIA/apg/)
|