cokit-cli 1.0.1 → 1.0.2
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/AGENTS.md +103 -0
- package/README.FLOW.md +237 -0
- package/README.md +153 -94
- package/agents/brainstormer.agent.md +71 -0
- package/agents/code-reviewer.agent.md +128 -0
- package/agents/database-admin.agent.md +91 -0
- package/agents/debugger.agent.md +128 -0
- package/agents/docs-manager.agent.md +121 -0
- package/agents/fullstack-developer.agent.md +96 -0
- package/agents/git-manager.agent.md +392 -0
- package/agents/mcp-manager.agent.md +93 -0
- package/agents/planner.agent.md +94 -0
- package/agents/project-manager.agent.md +124 -0
- package/agents/researcher.agent.md +32 -0
- package/agents/scout-external.agent.md +141 -0
- package/agents/scout.agent.md +107 -0
- package/agents/tester.agent.md +106 -0
- package/agents/ui-ux-designer.agent.md +225 -0
- package/collections/ck-core.collection.yml +30 -0
- package/collections/ck-development-rules.collection.yml +18 -0
- package/collections/ck-documentation.collection.yml +18 -0
- package/collections/ck-git-workflow.collection.yml +18 -0
- package/collections/ck-orchestration.collection.yml +22 -0
- package/collections/ck-ui-design.collection.yml +18 -0
- package/docs/README.md +85 -0
- package/docs/copilot-processing-flow.md +128 -0
- package/instructions/ck-backend.instructions.md +48 -0
- package/instructions/ck-development.instructions.md +40 -0
- package/instructions/ck-frontend-design-pro.instructions.md +58 -0
- package/instructions/ck-frontend.instructions.md +44 -0
- package/instructions/ck-google-adk-python.instructions.md +242 -0
- package/instructions/ck-research.instructions.md +167 -0
- package/instructions/ck-testing.instructions.md +36 -0
- package/package.json +9 -2
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-01-restructure-folders.md +183 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-02-convert-agents.md +206 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-03-convert-commands-to-prompts.md +284 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-04-convert-skills-to-instructions.md +349 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-05-create-collections.md +320 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-06-update-cli-build-scripts.md +450 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-07-update-documentation.md +407 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/plan.md +136 -0
- package/prompts/ck-ask.prompt.md +57 -0
- package/prompts/ck-bootstrap-auto-fast.prompt.md +108 -0
- package/prompts/ck-bootstrap-auto-parallel.prompt.md +66 -0
- package/prompts/ck-bootstrap-auto.prompt.md +114 -0
- package/prompts/ck-bootstrap.prompt.md +136 -0
- package/prompts/ck-brainstorm.prompt.md +68 -0
- package/prompts/ck-ck-help.prompt.md +114 -0
- package/prompts/ck-code-auto.prompt.md +171 -0
- package/prompts/ck-code-no-test.prompt.md +159 -0
- package/prompts/ck-code-parallel.prompt.md +56 -0
- package/prompts/ck-code.prompt.md +177 -0
- package/prompts/ck-coding-level.prompt.md +54 -0
- package/prompts/ck-cook-auto-fast.prompt.md +26 -0
- package/prompts/ck-cook-auto-parallel.prompt.md +49 -0
- package/prompts/ck-cook-auto.prompt.md +15 -0
- package/prompts/ck-cook.prompt.md +96 -0
- package/prompts/ck-debug.prompt.md +14 -0
- package/prompts/ck-design-3d.prompt.md +84 -0
- package/prompts/ck-design-describe.prompt.md +24 -0
- package/prompts/ck-design-fast.prompt.md +32 -0
- package/prompts/ck-design-good.prompt.md +36 -0
- package/prompts/ck-design-screenshot.prompt.md +35 -0
- package/prompts/ck-design-video.prompt.md +35 -0
- package/prompts/ck-docs-init.prompt.md +27 -0
- package/prompts/ck-docs-summarize.prompt.md +23 -0
- package/prompts/ck-docs-update.prompt.md +36 -0
- package/prompts/ck-fix-ci.prompt.md +18 -0
- package/prompts/ck-fix-fast.prompt.md +18 -0
- package/prompts/ck-fix-hard.prompt.md +36 -0
- package/prompts/ck-fix-logs.prompt.md +27 -0
- package/prompts/ck-fix-parallel.prompt.md +54 -0
- package/prompts/ck-fix-test.prompt.md +19 -0
- package/prompts/ck-fix-types.prompt.md +11 -0
- package/prompts/ck-fix-ui.prompt.md +49 -0
- package/prompts/ck-fix.prompt.md +44 -0
- package/prompts/ck-git-cm.prompt.md +8 -0
- package/prompts/ck-git-cp.prompt.md +7 -0
- package/prompts/ck-git-merge.prompt.md +41 -0
- package/prompts/ck-git-pr.prompt.md +49 -0
- package/prompts/ck-kanban.prompt.md +77 -0
- package/prompts/ck-plan-archive.prompt.md +58 -0
- package/prompts/ck-plan-ci.prompt.md +34 -0
- package/prompts/ck-plan-cro.prompt.md +66 -0
- package/prompts/ck-plan-fast.prompt.md +67 -0
- package/prompts/ck-plan-hard.prompt.md +89 -0
- package/prompts/ck-plan-parallel.prompt.md +126 -0
- package/prompts/ck-plan-two.prompt.md +43 -0
- package/prompts/ck-plan-validate.prompt.md +118 -0
- package/prompts/ck-plan.prompt.md +29 -1
- package/prompts/ck-preview.prompt.md +65 -0
- package/prompts/ck-review-codebase.prompt.md +44 -0
- package/prompts/ck-scout-ext.prompt.md +35 -0
- package/prompts/ck-scout.prompt.md +25 -0
- package/prompts/ck-skill-add.prompt.md +36 -0
- package/prompts/ck-skill-create.prompt.md +29 -0
- package/prompts/ck-skill-fix-logs.prompt.md +22 -0
- package/prompts/ck-skill-optimize-auto.prompt.md +25 -0
- package/prompts/ck-skill-optimize.prompt.md +34 -0
- package/prompts/ck-skill-plan.prompt.md +46 -0
- package/prompts/ck-test-ui.prompt.md +92 -0
- package/prompts/ck-test.prompt.md +10 -0
- package/prompts/ck-use-mcp.prompt.md +27 -0
- package/prompts/ck-watzup.prompt.md +11 -0
- package/prompts/ck-worktree.prompt.md +127 -0
- package/rules/README.agents.md +55 -0
- package/rules/README.collections.md +78 -0
- package/rules/README.copilot-instructions.md +66 -0
- package/rules/README.instructions.md +73 -0
- package/rules/README.md +39 -0
- package/rules/README.prompts.md +76 -0
- package/rules/README.skills.md +71 -0
- package/skills/ck-ai-artist/SKILL.md +73 -0
- package/skills/ck-ai-artist/references/advanced-techniques.md +184 -0
- package/skills/ck-ai-artist/references/domain-code.md +66 -0
- package/skills/ck-ai-artist/references/domain-data.md +72 -0
- package/skills/ck-ai-artist/references/domain-marketing.md +66 -0
- package/skills/ck-ai-artist/references/domain-patterns.md +33 -0
- package/skills/ck-ai-artist/references/domain-writing.md +68 -0
- package/skills/ck-ai-artist/references/image-prompting.md +141 -0
- package/skills/ck-ai-artist/references/llm-prompting.md +165 -0
- package/skills/ck-ai-artist/references/nano-banana.md +59 -0
- package/skills/ck-ai-artist/references/reasoning-techniques.md +201 -0
- package/skills/ck-backend-development/SKILL.md +93 -0
- package/skills/ck-backend-development/references/backend-api-design.md +495 -0
- package/skills/ck-backend-development/references/backend-architecture.md +454 -0
- package/skills/ck-backend-development/references/backend-authentication.md +338 -0
- package/skills/ck-backend-development/references/backend-code-quality.md +659 -0
- package/skills/ck-backend-development/references/backend-debugging.md +904 -0
- package/skills/ck-backend-development/references/backend-devops.md +494 -0
- package/skills/ck-backend-development/references/backend-mindset.md +387 -0
- package/skills/ck-backend-development/references/backend-performance.md +397 -0
- package/skills/ck-backend-development/references/backend-security.md +290 -0
- package/skills/ck-backend-development/references/backend-technologies.md +256 -0
- package/skills/ck-backend-development/references/backend-testing.md +429 -0
- package/skills/ck-better-auth/SKILL.md +202 -0
- package/skills/ck-better-auth/references/advanced-features.md +553 -0
- package/skills/ck-better-auth/references/database-integration.md +577 -0
- package/skills/ck-better-auth/references/email-password-auth.md +416 -0
- package/skills/ck-better-auth/references/oauth-providers.md +430 -0
- package/skills/ck-better-auth/scripts/.coverage +0 -0
- package/skills/ck-better-auth/scripts/better_auth_init.py +521 -0
- package/skills/ck-better-auth/scripts/requirements.txt +15 -0
- package/skills/ck-better-auth/scripts/tests/.coverage +0 -0
- package/skills/ck-better-auth/scripts/tests/test_better_auth_init.py +421 -0
- package/skills/ck-chrome-devtools/SKILL.md +470 -0
- package/skills/ck-chrome-devtools/references/cdp-domains.md +694 -0
- package/skills/ck-chrome-devtools/references/performance-guide.md +940 -0
- package/skills/ck-chrome-devtools/references/puppeteer-reference.md +953 -0
- package/skills/ck-chrome-devtools/scripts/README.md +272 -0
- package/skills/ck-chrome-devtools/scripts/__tests__/selector.test.js +210 -0
- package/skills/ck-chrome-devtools/scripts/aria-snapshot.js +362 -0
- package/skills/ck-chrome-devtools/scripts/click.js +83 -0
- package/skills/ck-chrome-devtools/scripts/console.js +79 -0
- package/skills/ck-chrome-devtools/scripts/evaluate.js +53 -0
- package/skills/ck-chrome-devtools/scripts/fill.js +76 -0
- package/skills/ck-chrome-devtools/scripts/inject-auth.js +229 -0
- package/skills/ck-chrome-devtools/scripts/install-deps.sh +181 -0
- package/skills/ck-chrome-devtools/scripts/install.sh +83 -0
- package/skills/ck-chrome-devtools/scripts/lib/browser.js +318 -0
- package/skills/ck-chrome-devtools/scripts/lib/selector.js +178 -0
- package/skills/ck-chrome-devtools/scripts/navigate.js +54 -0
- package/skills/ck-chrome-devtools/scripts/network.js +106 -0
- package/skills/ck-chrome-devtools/scripts/package-lock.json +1589 -0
- package/skills/ck-chrome-devtools/scripts/package.json +16 -0
- package/skills/ck-chrome-devtools/scripts/performance.js +149 -0
- package/skills/ck-chrome-devtools/scripts/screenshot.js +198 -0
- package/skills/ck-chrome-devtools/scripts/select-ref.js +131 -0
- package/skills/ck-chrome-devtools/scripts/snapshot.js +135 -0
- package/skills/ck-code-review/SKILL.md +110 -53
- package/skills/ck-code-review/references/code-review-reception.md +182 -49
- package/skills/ck-code-review/references/requesting-code-review.md +105 -0
- package/skills/ck-code-review/references/verification-before-completion.md +111 -58
- package/skills/ck-databases/SKILL.md +231 -0
- package/skills/ck-databases/references/mongodb-aggregation.md +447 -0
- package/skills/ck-databases/references/mongodb-atlas.md +465 -0
- package/skills/ck-databases/references/mongodb-crud.md +408 -0
- package/skills/ck-databases/references/mongodb-indexing.md +442 -0
- package/skills/ck-databases/references/postgresql-administration.md +594 -0
- package/skills/ck-databases/references/postgresql-performance.md +527 -0
- package/skills/ck-databases/references/postgresql-psql-cli.md +467 -0
- package/skills/ck-databases/references/postgresql-queries.md +475 -0
- package/skills/ck-databases/scripts/.coverage +0 -0
- package/skills/ck-databases/scripts/db_backup.py +502 -0
- package/skills/ck-databases/scripts/db_migrate.py +425 -0
- package/skills/ck-databases/scripts/db_performance_check.py +456 -0
- package/skills/ck-databases/scripts/requirements.txt +20 -0
- package/skills/ck-databases/scripts/tests/coverage-db.json +1 -0
- package/skills/ck-databases/scripts/tests/requirements.txt +4 -0
- package/skills/ck-databases/scripts/tests/test_db_backup.py +340 -0
- package/skills/ck-databases/scripts/tests/test_db_migrate.py +277 -0
- package/skills/ck-databases/scripts/tests/test_db_performance_check.py +370 -0
- package/skills/ck-debugging/SKILL.md +55 -43
- package/skills/ck-debugging/references/defense-in-depth.md +124 -0
- package/skills/ck-debugging/references/root-cause-tracing.md +100 -43
- package/skills/ck-debugging/references/systematic-debugging.md +80 -52
- package/skills/ck-debugging/references/verification.md +101 -52
- package/skills/ck-debugging/scripts/find-polluter.sh +63 -0
- package/skills/ck-debugging/scripts/find-polluter.test.md +102 -0
- package/skills/ck-devops/.env.example +76 -0
- package/skills/ck-devops/SKILL.md +283 -0
- package/skills/ck-devops/references/browser-rendering.md +305 -0
- package/skills/ck-devops/references/cloudflare-d1-kv.md +123 -0
- package/skills/ck-devops/references/cloudflare-platform.md +271 -0
- package/skills/ck-devops/references/cloudflare-r2-storage.md +280 -0
- package/skills/ck-devops/references/cloudflare-workers-advanced.md +312 -0
- package/skills/ck-devops/references/cloudflare-workers-apis.md +309 -0
- package/skills/ck-devops/references/cloudflare-workers-basics.md +418 -0
- package/skills/ck-devops/references/docker-basics.md +297 -0
- package/skills/ck-devops/references/docker-compose.md +292 -0
- package/skills/ck-devops/references/gcloud-platform.md +297 -0
- package/skills/ck-devops/references/gcloud-services.md +304 -0
- package/skills/ck-devops/scripts/cloudflare_deploy.py +269 -0
- package/skills/ck-devops/scripts/docker_optimize.py +331 -0
- package/skills/ck-devops/scripts/requirements.txt +20 -0
- package/skills/ck-devops/scripts/tests/requirements.txt +3 -0
- package/skills/ck-devops/scripts/tests/test_cloudflare_deploy.py +285 -0
- package/skills/ck-devops/scripts/tests/test_docker_optimize.py +436 -0
- package/skills/ck-docs-seeker/.env.example +15 -0
- package/skills/ck-docs-seeker/SKILL.md +70 -65
- package/skills/ck-docs-seeker/package.json +25 -0
- package/skills/ck-docs-seeker/references/advanced.md +79 -0
- package/skills/ck-docs-seeker/references/context7-patterns.md +68 -0
- package/skills/ck-docs-seeker/references/errors.md +68 -0
- package/skills/ck-docs-seeker/scripts/analyze-llms-txt.js +211 -0
- package/skills/ck-docs-seeker/scripts/detect-topic.js +172 -0
- package/skills/ck-docs-seeker/scripts/fetch-docs.js +213 -0
- package/skills/ck-docs-seeker/scripts/tests/run-tests.js +72 -0
- package/skills/ck-docs-seeker/scripts/tests/test-analyze-llms.js +119 -0
- package/skills/ck-docs-seeker/scripts/tests/test-detect-topic.js +112 -0
- package/skills/ck-docs-seeker/scripts/tests/test-fetch-docs.js +84 -0
- package/skills/ck-docs-seeker/scripts/utils/env-loader.js +94 -0
- package/skills/ck-docs-seeker/workflows/library-search.md +87 -0
- package/skills/ck-docs-seeker/workflows/repo-analysis.md +91 -0
- package/skills/ck-docs-seeker/workflows/topic-search.md +77 -0
- package/skills/ck-frontend-design/SKILL.md +79 -0
- package/skills/ck-frontend-design/references/analysis-best-practices.md +80 -0
- package/skills/ck-frontend-design/references/analysis-prompts.md +141 -0
- package/skills/ck-frontend-design/references/analysis-techniques.md +118 -0
- package/skills/ck-frontend-design/references/animejs.md +396 -0
- package/skills/ck-frontend-design/references/design-extraction-overview.md +71 -0
- package/skills/ck-frontend-design/references/extraction-best-practices.md +141 -0
- package/skills/ck-frontend-design/references/extraction-output-templates.md +162 -0
- package/skills/ck-frontend-design/references/extraction-prompts.md +127 -0
- package/skills/ck-frontend-design/references/technical-accessibility.md +119 -0
- package/skills/ck-frontend-design/references/technical-best-practices.md +97 -0
- package/skills/ck-frontend-design/references/technical-optimization.md +44 -0
- package/skills/ck-frontend-design/references/technical-overview.md +90 -0
- package/skills/ck-frontend-design/references/technical-workflows.md +150 -0
- package/skills/ck-frontend-design/references/visual-analysis-overview.md +95 -0
- package/skills/ck-frontend-development/SKILL.md +399 -0
- package/skills/ck-frontend-development/resources/common-patterns.md +331 -0
- package/skills/ck-frontend-development/resources/complete-examples.md +872 -0
- package/skills/ck-frontend-development/resources/component-patterns.md +502 -0
- package/skills/ck-frontend-development/resources/data-fetching.md +767 -0
- package/skills/ck-frontend-development/resources/file-organization.md +502 -0
- package/skills/ck-frontend-development/resources/loading-and-error-states.md +501 -0
- package/skills/ck-frontend-development/resources/performance.md +406 -0
- package/skills/ck-frontend-development/resources/routing-guide.md +364 -0
- package/skills/ck-frontend-development/resources/styling-guide.md +428 -0
- package/skills/ck-frontend-development/resources/typescript-standards.md +418 -0
- package/skills/ck-markdown-novel-viewer/SKILL.md +190 -0
- package/skills/ck-markdown-novel-viewer/assets/directory-browser.css +215 -0
- package/skills/ck-markdown-novel-viewer/assets/favicon.png +0 -0
- package/skills/ck-markdown-novel-viewer/assets/novel-theme.css +818 -0
- package/skills/ck-markdown-novel-viewer/assets/reader.js +262 -0
- package/skills/ck-markdown-novel-viewer/assets/template.html +80 -0
- package/skills/ck-markdown-novel-viewer/package.json +15 -0
- package/skills/ck-markdown-novel-viewer/scripts/lib/http-server.cjs +434 -0
- package/skills/ck-markdown-novel-viewer/scripts/lib/markdown-renderer.cjs +272 -0
- package/skills/ck-markdown-novel-viewer/scripts/lib/plan-navigator.cjs +509 -0
- package/skills/ck-markdown-novel-viewer/scripts/lib/port-finder.cjs +48 -0
- package/skills/ck-markdown-novel-viewer/scripts/lib/process-mgr.cjs +150 -0
- package/skills/ck-markdown-novel-viewer/scripts/server.cjs +411 -0
- package/skills/ck-markdown-novel-viewer/scripts/tests/server.test.cjs +283 -0
- package/skills/ck-markdown-novel-viewer/tests/dashboard-assets.test.cjs +340 -0
- package/skills/ck-markdown-novel-viewer/tests/dashboard-renderer.test.cjs +404 -0
- package/skills/ck-markdown-novel-viewer/tests/http-server.test.cjs +271 -0
- package/skills/ck-markdown-novel-viewer/tests/run-tests.cjs +51 -0
- package/skills/ck-markdown-novel-viewer/tests/test-framework.cjs +154 -0
- package/skills/ck-markdown-novel-viewer/tests/verify-xss.cjs +90 -0
- package/skills/ck-mcp-builder/LICENSE.txt +202 -0
- package/skills/ck-mcp-builder/SKILL.md +327 -0
- package/skills/ck-mcp-builder/reference/evaluation.md +602 -0
- package/skills/ck-mcp-builder/reference/mcp_best_practices.md +915 -0
- package/skills/ck-mcp-builder/reference/node_mcp_server.md +916 -0
- package/skills/ck-mcp-builder/reference/python_mcp_server.md +752 -0
- package/skills/ck-mcp-builder/scripts/connections.py +151 -0
- package/skills/ck-mcp-builder/scripts/evaluation.py +373 -0
- package/skills/ck-mcp-builder/scripts/example_evaluation.xml +22 -0
- package/skills/ck-mcp-builder/scripts/requirements.txt +2 -0
- package/skills/ck-mcp-management/README.md +219 -0
- package/skills/ck-mcp-management/SKILL.md +209 -0
- package/skills/ck-mcp-management/assets/tools.json +3146 -0
- package/skills/ck-mcp-management/references/configuration.md +114 -0
- package/skills/ck-mcp-management/references/gemini-cli-integration.md +215 -0
- package/skills/ck-mcp-management/references/mcp-protocol.md +116 -0
- package/skills/ck-mcp-management/scripts/.env.example +10 -0
- package/skills/ck-mcp-management/scripts/cli.ts +195 -0
- package/skills/ck-mcp-management/scripts/dist/analyze-tools.js +70 -0
- package/skills/ck-mcp-management/scripts/dist/cli.js +160 -0
- package/skills/ck-mcp-management/scripts/dist/mcp-client.js +183 -0
- package/skills/ck-mcp-management/scripts/mcp-client.ts +230 -0
- package/skills/ck-mcp-management/scripts/package.json +20 -0
- package/skills/ck-mcp-management/scripts/tsconfig.json +15 -0
- package/skills/ck-media-processing/SKILL.md +90 -0
- package/skills/ck-media-processing/references/common-workflows.md +132 -0
- package/skills/ck-media-processing/references/ffmpeg-encoding.md +358 -0
- package/skills/ck-media-processing/references/ffmpeg-filters.md +503 -0
- package/skills/ck-media-processing/references/ffmpeg-streaming.md +403 -0
- package/skills/ck-media-processing/references/format-compatibility.md +375 -0
- package/skills/ck-media-processing/references/imagemagick-batch.md +612 -0
- package/skills/ck-media-processing/references/imagemagick-editing.md +623 -0
- package/skills/ck-media-processing/references/rmbg-background-removal.md +66 -0
- package/skills/ck-media-processing/references/troubleshooting.md +109 -0
- package/skills/ck-media-processing/scripts/README.md +111 -0
- package/skills/ck-media-processing/scripts/batch-remove-background.sh +124 -0
- package/skills/ck-media-processing/scripts/batch_resize.py +342 -0
- package/skills/ck-media-processing/scripts/media_convert.py +311 -0
- package/skills/ck-media-processing/scripts/remove-background.sh +96 -0
- package/skills/ck-media-processing/scripts/remove-bg-node.js +158 -0
- package/skills/ck-media-processing/scripts/requirements.txt +24 -0
- package/skills/ck-media-processing/scripts/tests/.coverage +0 -0
- package/skills/ck-media-processing/scripts/tests/requirements.txt +2 -0
- package/skills/ck-media-processing/scripts/tests/test_batch_resize.py +372 -0
- package/skills/ck-media-processing/scripts/tests/test_media_convert.py +259 -0
- package/skills/ck-media-processing/scripts/tests/test_video_optimize.py +397 -0
- package/skills/ck-media-processing/scripts/video_optimize.py +414 -0
- package/skills/ck-mobile-development/SKILL.md +210 -0
- package/skills/ck-mobile-development/references/mobile-android.md +604 -0
- package/skills/ck-mobile-development/references/mobile-best-practices.md +545 -0
- package/skills/ck-mobile-development/references/mobile-debugging.md +1089 -0
- package/skills/ck-mobile-development/references/mobile-frameworks.md +465 -0
- package/skills/ck-mobile-development/references/mobile-ios.md +496 -0
- package/skills/ck-mobile-development/references/mobile-mindset.md +544 -0
- package/skills/ck-payment-integration/README.md +185 -0
- package/skills/ck-payment-integration/SKILL.md +116 -0
- package/skills/ck-payment-integration/references/polar/benefits.md +396 -0
- package/skills/ck-payment-integration/references/polar/best-practices.md +482 -0
- package/skills/ck-payment-integration/references/polar/checkouts.md +266 -0
- package/skills/ck-payment-integration/references/polar/overview.md +184 -0
- package/skills/ck-payment-integration/references/polar/products.md +244 -0
- package/skills/ck-payment-integration/references/polar/sdk.md +436 -0
- package/skills/ck-payment-integration/references/polar/subscriptions.md +340 -0
- package/skills/ck-payment-integration/references/polar/webhooks.md +405 -0
- package/skills/ck-payment-integration/references/sepay/api.md +140 -0
- package/skills/ck-payment-integration/references/sepay/best-practices.md +337 -0
- package/skills/ck-payment-integration/references/sepay/overview.md +138 -0
- package/skills/ck-payment-integration/references/sepay/qr-codes.md +228 -0
- package/skills/ck-payment-integration/references/sepay/sdk.md +213 -0
- package/skills/ck-payment-integration/references/sepay/webhooks.md +208 -0
- package/skills/ck-payment-integration/scripts/.env.example +20 -0
- package/skills/ck-payment-integration/scripts/checkout-helper.js +244 -0
- package/skills/ck-payment-integration/scripts/package.json +17 -0
- package/skills/ck-payment-integration/scripts/polar-webhook-verify.js +202 -0
- package/skills/ck-payment-integration/scripts/sepay-webhook-verify.js +193 -0
- package/skills/ck-payment-integration/scripts/test-scripts.js +237 -0
- package/skills/ck-planning/SKILL.md +79 -49
- package/skills/ck-planning/references/codebase-understanding.md +62 -0
- package/skills/ck-planning/references/output-standards.md +127 -0
- package/skills/ck-planning/references/plan-organization.md +122 -60
- package/skills/ck-planning/references/research-phase.md +49 -56
- package/skills/ck-planning/references/solution-design.md +61 -63
- package/skills/ck-problem-solving/SKILL.md +95 -0
- package/skills/ck-problem-solving/references/attribution.md +69 -0
- package/skills/ck-problem-solving/references/collision-zone-thinking.md +79 -0
- package/skills/ck-problem-solving/references/inversion-exercise.md +91 -0
- package/skills/ck-problem-solving/references/meta-pattern-recognition.md +87 -0
- package/skills/ck-problem-solving/references/scale-game.md +95 -0
- package/skills/ck-problem-solving/references/simplification-cascades.md +80 -0
- package/skills/ck-problem-solving/references/when-stuck.md +72 -0
- package/skills/ck-repomix/SKILL.md +247 -0
- package/skills/ck-repomix/references/configuration.md +211 -0
- package/skills/ck-repomix/references/usage-patterns.md +232 -0
- package/skills/ck-repomix/scripts/.coverage +0 -0
- package/skills/ck-repomix/scripts/README.md +179 -0
- package/skills/ck-repomix/scripts/repomix_batch.py +455 -0
- package/skills/ck-repomix/scripts/repos.example.json +15 -0
- package/skills/ck-repomix/scripts/requirements.txt +15 -0
- package/skills/ck-repomix/scripts/tests/test_repomix_batch.py +531 -0
- package/skills/ck-sequential-thinking/.env.example +8 -0
- package/skills/ck-sequential-thinking/README.md +183 -0
- package/skills/ck-sequential-thinking/SKILL.md +14 -2
- package/skills/ck-sequential-thinking/package.json +31 -0
- package/skills/ck-sequential-thinking/references/advanced-strategies.md +79 -0
- package/skills/ck-sequential-thinking/references/advanced-techniques.md +2 -14
- package/skills/ck-sequential-thinking/references/core-patterns.md +8 -0
- package/skills/ck-sequential-thinking/references/examples-api.md +88 -0
- package/skills/ck-sequential-thinking/references/examples-architecture.md +94 -0
- package/skills/ck-sequential-thinking/references/examples-debug.md +90 -0
- package/skills/ck-sequential-thinking/scripts/format-thought.js +159 -0
- package/skills/ck-sequential-thinking/scripts/process-thought.js +236 -0
- package/skills/ck-sequential-thinking/tests/format-thought.test.js +133 -0
- package/skills/ck-sequential-thinking/tests/process-thought.test.js +215 -0
- package/skills/ck-shopify/README.md +66 -0
- package/skills/ck-shopify/SKILL.md +319 -0
- package/skills/ck-shopify/references/app-development.md +470 -0
- package/skills/ck-shopify/references/extensions.md +493 -0
- package/skills/ck-shopify/references/themes.md +498 -0
- package/skills/ck-shopify/scripts/.coverage +0 -0
- package/skills/ck-shopify/scripts/requirements.txt +19 -0
- package/skills/ck-shopify/scripts/shopify_init.py +423 -0
- package/skills/ck-shopify/scripts/tests/.coverage +0 -0
- package/skills/ck-shopify/scripts/tests/test_shopify_init.py +385 -0
- package/skills/ck-skill-creator/LICENSE.txt +202 -0
- package/skills/ck-skill-creator/SKILL.md +265 -0
- package/skills/ck-skill-creator/scripts/init_skill.py +303 -0
- package/skills/ck-skill-creator/scripts/package_skill.py +110 -0
- package/skills/ck-skill-creator/scripts/quick_validate.py +65 -0
- package/skills/ck-threejs/SKILL.md +87 -0
- package/skills/ck-threejs/references/01-getting-started.md +177 -0
- package/skills/ck-threejs/references/02-loaders.md +169 -0
- package/skills/ck-threejs/references/03-textures.md +170 -0
- package/skills/ck-threejs/references/04-cameras.md +195 -0
- package/skills/ck-threejs/references/05-lights.md +183 -0
- package/skills/ck-threejs/references/06-animations.md +214 -0
- package/skills/ck-threejs/references/07-math.md +260 -0
- package/skills/ck-threejs/references/08-interaction.md +267 -0
- package/skills/ck-threejs/references/09-postprocessing.md +240 -0
- package/skills/ck-threejs/references/10-controls.md +259 -0
- package/skills/ck-threejs/references/11-materials-advanced.md +270 -0
- package/skills/ck-threejs/references/12-performance.md +269 -0
- package/skills/ck-threejs/references/13-node-materials.md +298 -0
- package/skills/ck-threejs/references/14-physics-vr.md +304 -0
- package/skills/ck-threejs/references/15-specialized-loaders.md +333 -0
- package/skills/ck-threejs/references/16-webgpu.md +302 -0
- package/skills/ck-ui-styling/LICENSE.txt +202 -0
- package/skills/ck-ui-styling/SKILL.md +319 -0
- package/skills/ck-ui-styling/canvas-fonts/ArsenalSC-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/BigShoulders-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Boldonse-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/CrimsonPro-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/DMMono-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/EricaOne-OFL.txt +94 -0
- package/skills/ck-ui-styling/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/GeistMono-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Gloock-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Italiana-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Jura-Light.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Jura-Medium.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Jura-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Lora-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Lora-Italic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Lora-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Lora-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/NationalPark-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Outfit-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/PixelifySans-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/PoiretOne-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/RedHatMono-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Silkscreen-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/SmoochSans-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Tektur-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/WorkSans-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/skills/ck-ui-styling/references/canvas-design-system.md +320 -0
- package/skills/ck-ui-styling/references/shadcn-accessibility.md +471 -0
- package/skills/ck-ui-styling/references/shadcn-components.md +424 -0
- package/skills/ck-ui-styling/references/shadcn-theming.md +373 -0
- package/skills/ck-ui-styling/references/tailwind-customization.md +483 -0
- package/skills/ck-ui-styling/references/tailwind-responsive.md +382 -0
- package/skills/ck-ui-styling/references/tailwind-utilities.md +455 -0
- package/skills/ck-ui-styling/scripts/.coverage +0 -0
- package/skills/ck-ui-styling/scripts/requirements.txt +17 -0
- package/skills/ck-ui-styling/scripts/shadcn_add.py +292 -0
- package/skills/ck-ui-styling/scripts/tailwind_config_gen.py +456 -0
- package/skills/ck-ui-styling/scripts/tests/coverage-ui.json +1 -0
- package/skills/ck-ui-styling/scripts/tests/requirements.txt +3 -0
- package/skills/ck-ui-styling/scripts/tests/test_shadcn_add.py +266 -0
- package/skills/ck-ui-styling/scripts/tests/test_tailwind_config_gen.py +336 -0
- package/skills/ck-ui-ux-pro-max/SKILL.md +227 -0
- package/skills/ck-ui-ux-pro-max/data/charts.csv +26 -0
- package/skills/ck-ui-ux-pro-max/data/colors.csv +97 -0
- package/skills/ck-ui-ux-pro-max/data/landing.csv +31 -0
- package/skills/ck-ui-ux-pro-max/data/products.csv +97 -0
- package/skills/ck-ui-ux-pro-max/data/prompts.csv +24 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/html-tailwind.csv +51 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/skills/ck-ui-ux-pro-max/data/styles.csv +59 -0
- package/skills/ck-ui-ux-pro-max/data/typography.csv +58 -0
- package/skills/ck-ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/skills/ck-ui-ux-pro-max/scripts/core.py +236 -0
- package/skills/ck-ui-ux-pro-max/scripts/search.py +76 -0
- package/skills/ck-web-frameworks/SKILL.md +322 -0
- package/skills/ck-web-frameworks/references/nextjs-app-router.md +465 -0
- package/skills/ck-web-frameworks/references/nextjs-data-fetching.md +459 -0
- package/skills/ck-web-frameworks/references/nextjs-optimization.md +511 -0
- package/skills/ck-web-frameworks/references/nextjs-server-components.md +495 -0
- package/skills/ck-web-frameworks/references/remix-icon-integration.md +603 -0
- package/skills/ck-web-frameworks/references/turborepo-caching.md +551 -0
- package/skills/ck-web-frameworks/references/turborepo-pipelines.md +517 -0
- package/skills/ck-web-frameworks/references/turborepo-setup.md +542 -0
- package/skills/ck-web-frameworks/scripts/.coverage +0 -0
- package/skills/ck-web-frameworks/scripts/__init__.py +0 -0
- package/skills/ck-web-frameworks/scripts/nextjs_init.py +547 -0
- package/skills/ck-web-frameworks/scripts/requirements.txt +16 -0
- package/skills/ck-web-frameworks/scripts/tests/coverage-web.json +1 -0
- package/skills/ck-web-frameworks/scripts/tests/requirements.txt +3 -0
- package/skills/ck-web-frameworks/scripts/tests/test_nextjs_init.py +319 -0
- package/skills/ck-web-frameworks/scripts/tests/test_turborepo_migrate.py +374 -0
- package/skills/ck-web-frameworks/scripts/turborepo_migrate.py +394 -0
- package/src/commands/init.js +61 -30
- package/src/utils/paths.js +35 -4
|
@@ -0,0 +1,545 @@
|
|
|
1
|
+
# Mobile Development Best Practices
|
|
2
|
+
|
|
3
|
+
Cross-platform best practices for modern mobile development (2024-2025).
|
|
4
|
+
|
|
5
|
+
## Mobile-First Design Principles
|
|
6
|
+
|
|
7
|
+
### Core Principles
|
|
8
|
+
1. **Content First**: Remove chrome, focus on content
|
|
9
|
+
2. **Progressive Disclosure**: Hide complexity behind layers
|
|
10
|
+
3. **Thumb-Friendly**: Primary actions within reach
|
|
11
|
+
4. **Performance Budget**: <2s launch, <1s screen load
|
|
12
|
+
5. **Offline-First**: Design for unreliable networks
|
|
13
|
+
|
|
14
|
+
### Touch Targets
|
|
15
|
+
- **iOS**: 44x44px minimum (HIG guideline)
|
|
16
|
+
- **Android**: 48x48px minimum (Material Design)
|
|
17
|
+
- **Optimal**: 44-57px for important actions
|
|
18
|
+
- **Spacing**: 8px minimum between targets
|
|
19
|
+
|
|
20
|
+
### Typography
|
|
21
|
+
- **iOS**: San Francisco (system font)
|
|
22
|
+
- **Android**: Roboto (Material)
|
|
23
|
+
- **Minimum**: 16px body text (accessibility)
|
|
24
|
+
- **Line height**: 1.5x for readability
|
|
25
|
+
|
|
26
|
+
## Performance Optimization
|
|
27
|
+
|
|
28
|
+
### Launch Time Optimization
|
|
29
|
+
**Targets:**
|
|
30
|
+
- Cold start: <2s
|
|
31
|
+
- Warm start: <1s
|
|
32
|
+
- Hot start: <0.5s
|
|
33
|
+
|
|
34
|
+
**Techniques:**
|
|
35
|
+
- Defer non-critical initialization
|
|
36
|
+
- Lazy load dependencies
|
|
37
|
+
- Preload critical data only
|
|
38
|
+
- Show UI before data ready
|
|
39
|
+
|
|
40
|
+
### Memory Management
|
|
41
|
+
**Targets:**
|
|
42
|
+
- Typical screen: <100MB
|
|
43
|
+
- Peak usage: <200MB
|
|
44
|
+
|
|
45
|
+
**Techniques:**
|
|
46
|
+
- Image pagination/virtualization
|
|
47
|
+
- Release resources in background
|
|
48
|
+
- Profile with Instruments/Profiler
|
|
49
|
+
- Avoid retain cycles/memory leaks
|
|
50
|
+
|
|
51
|
+
**React Native Example:**
|
|
52
|
+
```javascript
|
|
53
|
+
// Use FlatList instead of ScrollView for long lists
|
|
54
|
+
<FlatList
|
|
55
|
+
data={items}
|
|
56
|
+
renderItem={({ item }) => <ItemCard item={item} />}
|
|
57
|
+
keyExtractor={(item) => item.id}
|
|
58
|
+
initialNumToRender={10}
|
|
59
|
+
maxToRenderPerBatch={10}
|
|
60
|
+
windowSize={5}
|
|
61
|
+
/>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Network Optimization
|
|
65
|
+
**Techniques:**
|
|
66
|
+
- Batch API requests
|
|
67
|
+
- Cache aggressively
|
|
68
|
+
- Compress images (WebP, AVIF)
|
|
69
|
+
- Use CDN for static assets
|
|
70
|
+
- Implement request deduplication
|
|
71
|
+
|
|
72
|
+
**Example Strategy:**
|
|
73
|
+
```
|
|
74
|
+
User opens screen
|
|
75
|
+
├─ Show cached data immediately (stale-while-revalidate)
|
|
76
|
+
├─ Fetch fresh data in background
|
|
77
|
+
└─ Update UI when fresh data arrives
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Battery Optimization
|
|
81
|
+
**Techniques:**
|
|
82
|
+
- Batch network requests
|
|
83
|
+
- Reduce GPS accuracy when possible
|
|
84
|
+
- Use push instead of polling
|
|
85
|
+
- Respect Doze Mode (Android)
|
|
86
|
+
- Background App Refresh (iOS)
|
|
87
|
+
|
|
88
|
+
**Targets:**
|
|
89
|
+
- Active use: <5% per hour
|
|
90
|
+
- Background: <1% per hour
|
|
91
|
+
|
|
92
|
+
## Offline-First Architecture
|
|
93
|
+
|
|
94
|
+
### Local Storage Options
|
|
95
|
+
**React Native:**
|
|
96
|
+
- AsyncStorage (small data, <6MB)
|
|
97
|
+
- Realm (complex objects, relationships)
|
|
98
|
+
- SQLite (relational data)
|
|
99
|
+
- MMKV (fastest key-value)
|
|
100
|
+
|
|
101
|
+
**Flutter:**
|
|
102
|
+
- SharedPreferences (small data)
|
|
103
|
+
- Hive (NoSQL, fast)
|
|
104
|
+
- Drift (SQLite wrapper)
|
|
105
|
+
- ObjectBox (object database)
|
|
106
|
+
|
|
107
|
+
**iOS:**
|
|
108
|
+
- UserDefaults (small data)
|
|
109
|
+
- Core Data (complex objects)
|
|
110
|
+
- SwiftData (modern replacement)
|
|
111
|
+
- Realm
|
|
112
|
+
|
|
113
|
+
**Android:**
|
|
114
|
+
- SharedPreferences (small data)
|
|
115
|
+
- Room (SQLite ORM)
|
|
116
|
+
- Realm
|
|
117
|
+
- DataStore (Preferences + Proto)
|
|
118
|
+
|
|
119
|
+
### Data Synchronization Strategies
|
|
120
|
+
|
|
121
|
+
**1. Write-Through Cache**
|
|
122
|
+
```
|
|
123
|
+
User makes change
|
|
124
|
+
├─ Update local database immediately
|
|
125
|
+
├─ Update UI optimistically
|
|
126
|
+
├─ Queue sync operation
|
|
127
|
+
└─ Sync to server in background
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**2. Hybrid Sync (Push + Pull)**
|
|
131
|
+
```
|
|
132
|
+
Push Sync (Real-time)
|
|
133
|
+
├─ WebSocket connection for critical updates
|
|
134
|
+
└─ Immediate notification of changes
|
|
135
|
+
|
|
136
|
+
Pull Sync (Periodic)
|
|
137
|
+
├─ Periodic polling for non-critical data
|
|
138
|
+
├─ Pull on app foreground
|
|
139
|
+
└─ Incremental sync (only changes since last sync)
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**3. Conflict Resolution**
|
|
143
|
+
- **Last-write-wins**: Use timestamps
|
|
144
|
+
- **Operational transformation**: Merge changes
|
|
145
|
+
- **CRDT**: Conflict-free replicated data
|
|
146
|
+
- **Manual resolution**: User chooses
|
|
147
|
+
|
|
148
|
+
### Example: Offline-First Comments
|
|
149
|
+
|
|
150
|
+
```typescript
|
|
151
|
+
// React Native + TypeScript
|
|
152
|
+
class CommentService {
|
|
153
|
+
async postComment(text: string, postId: string) {
|
|
154
|
+
const tempId = generateTempId();
|
|
155
|
+
const comment = {
|
|
156
|
+
id: tempId,
|
|
157
|
+
text,
|
|
158
|
+
postId,
|
|
159
|
+
synced: false,
|
|
160
|
+
timestamp: Date.now()
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
// 1. Save locally immediately
|
|
164
|
+
await db.comments.insert(comment);
|
|
165
|
+
|
|
166
|
+
// 2. Update UI (optimistic)
|
|
167
|
+
eventBus.emit('comment:added', comment);
|
|
168
|
+
|
|
169
|
+
// 3. Sync to server in background
|
|
170
|
+
try {
|
|
171
|
+
const serverComment = await api.postComment(text, postId);
|
|
172
|
+
// Replace temp ID with server ID
|
|
173
|
+
await db.comments.update(tempId, {
|
|
174
|
+
id: serverComment.id,
|
|
175
|
+
synced: true
|
|
176
|
+
});
|
|
177
|
+
} catch (error) {
|
|
178
|
+
// Mark as pending sync, retry later
|
|
179
|
+
await db.comments.update(tempId, {
|
|
180
|
+
syncError: error.message
|
|
181
|
+
});
|
|
182
|
+
syncQueue.add({ type: 'comment', id: tempId });
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
## Mobile Analytics & Monitoring
|
|
189
|
+
|
|
190
|
+
### Analytics Platforms (2024-2025)
|
|
191
|
+
|
|
192
|
+
**Firebase Analytics (Recommended)**
|
|
193
|
+
- Free tier generous
|
|
194
|
+
- Mobile-specific events
|
|
195
|
+
- Integrated with Crashlytics
|
|
196
|
+
- AI-powered insights
|
|
197
|
+
- Supports all platforms
|
|
198
|
+
|
|
199
|
+
**Sentry**
|
|
200
|
+
- Error tracking + performance
|
|
201
|
+
- Cross-platform support
|
|
202
|
+
- Source map upload
|
|
203
|
+
- Release tracking
|
|
204
|
+
- Custom breadcrumbs
|
|
205
|
+
|
|
206
|
+
**Amplitude**
|
|
207
|
+
- Product analytics
|
|
208
|
+
- User behavior tracking
|
|
209
|
+
- Cohort analysis
|
|
210
|
+
- A/B testing integration
|
|
211
|
+
|
|
212
|
+
### Essential Events to Track
|
|
213
|
+
|
|
214
|
+
**User Journey:**
|
|
215
|
+
- App opened
|
|
216
|
+
- Screen viewed
|
|
217
|
+
- Feature used
|
|
218
|
+
- Conversion events
|
|
219
|
+
- User retention
|
|
220
|
+
|
|
221
|
+
**Performance:**
|
|
222
|
+
- App launch time
|
|
223
|
+
- Screen load time
|
|
224
|
+
- API latency
|
|
225
|
+
- Crash-free rate
|
|
226
|
+
- ANR rate (Android)
|
|
227
|
+
|
|
228
|
+
**Business:**
|
|
229
|
+
- Purchases
|
|
230
|
+
- Subscriptions
|
|
231
|
+
- Ad impressions
|
|
232
|
+
- Feature adoption
|
|
233
|
+
- Referrals
|
|
234
|
+
|
|
235
|
+
### Crashlytics Integration
|
|
236
|
+
|
|
237
|
+
**React Native:**
|
|
238
|
+
```javascript
|
|
239
|
+
import crashlytics from '@react-native-firebase/crashlytics';
|
|
240
|
+
|
|
241
|
+
// Log events
|
|
242
|
+
crashlytics().log('User tapped purchase button');
|
|
243
|
+
|
|
244
|
+
// Set user attributes
|
|
245
|
+
crashlytics().setUserId(user.id);
|
|
246
|
+
|
|
247
|
+
// Log non-fatal errors
|
|
248
|
+
try {
|
|
249
|
+
await riskyOperation();
|
|
250
|
+
} catch (error) {
|
|
251
|
+
crashlytics().recordError(error);
|
|
252
|
+
}
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**Flutter:**
|
|
256
|
+
```dart
|
|
257
|
+
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
|
|
258
|
+
|
|
259
|
+
// Log events
|
|
260
|
+
FirebaseCrashlytics.instance.log('User tapped purchase');
|
|
261
|
+
|
|
262
|
+
// Set user ID
|
|
263
|
+
FirebaseCrashlytics.instance.setUserIdentifier(userId);
|
|
264
|
+
|
|
265
|
+
// Record errors
|
|
266
|
+
await FirebaseCrashlytics.instance.recordError(
|
|
267
|
+
error,
|
|
268
|
+
stackTrace,
|
|
269
|
+
reason: 'API call failed',
|
|
270
|
+
);
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
## Push Notifications Best Practices
|
|
274
|
+
|
|
275
|
+
### Platforms
|
|
276
|
+
- **iOS**: APNs (Apple Push Notification service)
|
|
277
|
+
- **Android**: FCM (Firebase Cloud Messaging)
|
|
278
|
+
- **Cross-platform**: OneSignal, Firebase, AWS SNS
|
|
279
|
+
|
|
280
|
+
### Best Practices
|
|
281
|
+
|
|
282
|
+
**1. Permission Request Strategy**
|
|
283
|
+
```
|
|
284
|
+
❌ Bad: Request permission on app launch
|
|
285
|
+
✅ Good: Request after user sees value
|
|
286
|
+
|
|
287
|
+
Flow:
|
|
288
|
+
1. User interacts with feature
|
|
289
|
+
2. Show custom modal explaining benefits
|
|
290
|
+
3. Request system permission
|
|
291
|
+
4. Handle denial gracefully
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
**2. Personalization**
|
|
295
|
+
- Segment users by behavior
|
|
296
|
+
- Send at optimal times (time zones)
|
|
297
|
+
- Personalize content
|
|
298
|
+
- A/B test messaging
|
|
299
|
+
|
|
300
|
+
**3. Frequency**
|
|
301
|
+
- Avoid notification spam
|
|
302
|
+
- Respect user preferences
|
|
303
|
+
- Implement quiet hours
|
|
304
|
+
- Group related notifications
|
|
305
|
+
|
|
306
|
+
**4. Deep Linking**
|
|
307
|
+
```javascript
|
|
308
|
+
// React Native
|
|
309
|
+
import messaging from '@react-native-firebase/messaging';
|
|
310
|
+
|
|
311
|
+
messaging().onNotificationOpenedApp(remoteMessage => {
|
|
312
|
+
const { screen, params } = remoteMessage.data;
|
|
313
|
+
navigation.navigate(screen, params);
|
|
314
|
+
});
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
**Impact:**
|
|
318
|
+
- 25% revenue increase with proper personalization
|
|
319
|
+
- 88% opt-in rate with pre-permission modal (vs 40% without)
|
|
320
|
+
|
|
321
|
+
## Authentication & Authorization
|
|
322
|
+
|
|
323
|
+
### Modern Auth Stack (2024-2025)
|
|
324
|
+
|
|
325
|
+
**Standard Pattern:**
|
|
326
|
+
```
|
|
327
|
+
OAuth 2.0 (Authorization)
|
|
328
|
+
├─ JWT (Stateless auth tokens)
|
|
329
|
+
├─ Refresh tokens (Long-term access)
|
|
330
|
+
└─ Biometric (Convenient re-auth)
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
### Implementation
|
|
334
|
+
|
|
335
|
+
**Biometric Authentication (iOS)**
|
|
336
|
+
```swift
|
|
337
|
+
import LocalAuthentication
|
|
338
|
+
|
|
339
|
+
let context = LAContext()
|
|
340
|
+
var error: NSError?
|
|
341
|
+
|
|
342
|
+
if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) {
|
|
343
|
+
context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics,
|
|
344
|
+
localizedReason: "Unlock your account") { success, error in
|
|
345
|
+
if success {
|
|
346
|
+
// Authenticated
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
**Biometric Authentication (Android)**
|
|
353
|
+
```kotlin
|
|
354
|
+
import androidx.biometric.BiometricPrompt
|
|
355
|
+
|
|
356
|
+
val promptInfo = BiometricPrompt.PromptInfo.Builder()
|
|
357
|
+
.setTitle("Biometric login")
|
|
358
|
+
.setSubtitle("Log in using your biometric credential")
|
|
359
|
+
.setNegativeButtonText("Use account password")
|
|
360
|
+
.build()
|
|
361
|
+
|
|
362
|
+
val biometricPrompt = BiometricPrompt(this, executor,
|
|
363
|
+
object : BiometricPrompt.AuthenticationCallback() {
|
|
364
|
+
override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) {
|
|
365
|
+
// Authenticated
|
|
366
|
+
}
|
|
367
|
+
})
|
|
368
|
+
|
|
369
|
+
biometricPrompt.authenticate(promptInfo)
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
### Secure Token Storage
|
|
373
|
+
|
|
374
|
+
**iOS: Keychain**
|
|
375
|
+
```swift
|
|
376
|
+
import Security
|
|
377
|
+
|
|
378
|
+
func saveToken(_ token: String, for key: String) {
|
|
379
|
+
let data = token.data(using: .utf8)!
|
|
380
|
+
let query: [String: Any] = [
|
|
381
|
+
kSecClass as String: kSecClassGenericPassword,
|
|
382
|
+
kSecAttrAccount as String: key,
|
|
383
|
+
kSecValueData as String: data,
|
|
384
|
+
kSecAttrAccessible as String: kSecAttrAccessibleWhenUnlockedThisDeviceOnly
|
|
385
|
+
]
|
|
386
|
+
SecItemAdd(query as CFDictionary, nil)
|
|
387
|
+
}
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
**Android: EncryptedSharedPreferences**
|
|
391
|
+
```kotlin
|
|
392
|
+
import androidx.security.crypto.EncryptedSharedPreferences
|
|
393
|
+
import androidx.security.crypto.MasterKey
|
|
394
|
+
|
|
395
|
+
val masterKey = MasterKey.Builder(context)
|
|
396
|
+
.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
|
|
397
|
+
.build()
|
|
398
|
+
|
|
399
|
+
val sharedPreferences = EncryptedSharedPreferences.create(
|
|
400
|
+
context,
|
|
401
|
+
"secure_prefs",
|
|
402
|
+
masterKey,
|
|
403
|
+
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
|
|
404
|
+
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
|
|
405
|
+
)
|
|
406
|
+
|
|
407
|
+
sharedPreferences.edit().putString("auth_token", token).apply()
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
**React Native: react-native-keychain**
|
|
411
|
+
```javascript
|
|
412
|
+
import * as Keychain from 'react-native-keychain';
|
|
413
|
+
|
|
414
|
+
// Save credentials
|
|
415
|
+
await Keychain.setGenericPassword('username', token, {
|
|
416
|
+
accessControl: Keychain.ACCESS_CONTROL.BIOMETRY_CURRENT_SET,
|
|
417
|
+
accessible: Keychain.ACCESSIBLE.WHEN_UNLOCKED_THIS_DEVICE_ONLY,
|
|
418
|
+
});
|
|
419
|
+
|
|
420
|
+
// Retrieve credentials
|
|
421
|
+
const credentials = await Keychain.getGenericPassword();
|
|
422
|
+
const token = credentials.password;
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
## App Store Deployment
|
|
426
|
+
|
|
427
|
+
### App Store (iOS)
|
|
428
|
+
|
|
429
|
+
**Requirements (2024-2025):**
|
|
430
|
+
- Xcode 15+ with iOS 17 SDK (minimum)
|
|
431
|
+
- Xcode 16+ with iOS 18 SDK (recommended for 2025)
|
|
432
|
+
- Privacy manifest required
|
|
433
|
+
- Account deletion in-app mandatory
|
|
434
|
+
|
|
435
|
+
**Release Process:**
|
|
436
|
+
1. Archive in Xcode
|
|
437
|
+
2. Upload to App Store Connect
|
|
438
|
+
3. Submit for review
|
|
439
|
+
4. Phased release (7-day rollout)
|
|
440
|
+
|
|
441
|
+
**Review Time:**
|
|
442
|
+
- Average: 1-2 days
|
|
443
|
+
- Expedited: 1-2 hours (emergencies only)
|
|
444
|
+
|
|
445
|
+
**Rejection Reasons:**
|
|
446
|
+
- Crashes (50%)
|
|
447
|
+
- Privacy violations (25%)
|
|
448
|
+
- Incomplete information (15%)
|
|
449
|
+
- Guideline violations (10%)
|
|
450
|
+
|
|
451
|
+
### Google Play (Android)
|
|
452
|
+
|
|
453
|
+
**Requirements (2024-2025):**
|
|
454
|
+
- Target Android 14 (API 34) now
|
|
455
|
+
- Target Android 15 (API 35) by Aug 31, 2025
|
|
456
|
+
- Privacy policy required
|
|
457
|
+
- Data safety form required
|
|
458
|
+
|
|
459
|
+
**Release Process:**
|
|
460
|
+
1. Build signed AAB (Android App Bundle)
|
|
461
|
+
2. Upload to Play Console
|
|
462
|
+
3. Submit to production track
|
|
463
|
+
4. Staged rollout (10% → 50% → 100%)
|
|
464
|
+
|
|
465
|
+
**Review Time:**
|
|
466
|
+
- Average: 1-3 days
|
|
467
|
+
- Updates: 1-2 days
|
|
468
|
+
|
|
469
|
+
### Staged Rollout Strategy
|
|
470
|
+
|
|
471
|
+
**Week 1:**
|
|
472
|
+
- 10% of users
|
|
473
|
+
- Monitor crash-free rate
|
|
474
|
+
- Watch for critical bugs
|
|
475
|
+
|
|
476
|
+
**Week 2:**
|
|
477
|
+
- 50% of users
|
|
478
|
+
- Validate performance metrics
|
|
479
|
+
- Check user feedback
|
|
480
|
+
|
|
481
|
+
**Week 3:**
|
|
482
|
+
- 100% of users
|
|
483
|
+
- Full release if metrics healthy
|
|
484
|
+
|
|
485
|
+
**Rollback Triggers:**
|
|
486
|
+
- Crash-free rate drops >5%
|
|
487
|
+
- Critical bug discovered
|
|
488
|
+
- Major user complaints
|
|
489
|
+
|
|
490
|
+
## Cross-Platform Comparison
|
|
491
|
+
|
|
492
|
+
### Flutter vs React Native (2024-2025)
|
|
493
|
+
|
|
494
|
+
| Metric | React Native | Flutter |
|
|
495
|
+
|--------|--------------|---------|
|
|
496
|
+
| **Adoption** | 35% | 46% |
|
|
497
|
+
| **Performance** | 80-90% | 85-95% |
|
|
498
|
+
| **App Size** | 40-50MB | 15-20MB |
|
|
499
|
+
| **Dev Speed** | Fast | Very Fast |
|
|
500
|
+
| **Commercial** | 12.57% | 5.24% |
|
|
501
|
+
| **Developers** | 20:1 ratio | 1 ratio |
|
|
502
|
+
| **Best For** | JS teams | Performance |
|
|
503
|
+
|
|
504
|
+
### Architecture Comparison
|
|
505
|
+
|
|
506
|
+
**MVVM (Small Apps):**
|
|
507
|
+
```
|
|
508
|
+
View
|
|
509
|
+
↓
|
|
510
|
+
ViewModel (business logic)
|
|
511
|
+
↓
|
|
512
|
+
Model (data)
|
|
513
|
+
```
|
|
514
|
+
|
|
515
|
+
**Clean Architecture (Large Apps):**
|
|
516
|
+
```
|
|
517
|
+
Presentation (UI)
|
|
518
|
+
↓
|
|
519
|
+
Domain (business logic, use cases)
|
|
520
|
+
↓
|
|
521
|
+
Data (repositories, APIs, DB)
|
|
522
|
+
```
|
|
523
|
+
|
|
524
|
+
## Resources
|
|
525
|
+
|
|
526
|
+
**Performance:**
|
|
527
|
+
- iOS: https://developer.apple.com/documentation/xcode/improving-your-app-s-performance
|
|
528
|
+
- Android: https://developer.android.com/topic/performance
|
|
529
|
+
- React Native: https://reactnative.dev/docs/performance
|
|
530
|
+
|
|
531
|
+
**Analytics:**
|
|
532
|
+
- Firebase: https://firebase.google.com/docs/analytics
|
|
533
|
+
- Sentry: https://docs.sentry.io/platforms/react-native/
|
|
534
|
+
- Amplitude: https://amplitude.com/docs
|
|
535
|
+
|
|
536
|
+
**Security:**
|
|
537
|
+
- OWASP Mobile: https://owasp.org/www-project-mobile-top-10/
|
|
538
|
+
- iOS Security: https://support.apple.com/guide/security/
|
|
539
|
+
- Android Security: https://source.android.com/docs/security
|
|
540
|
+
|
|
541
|
+
**Testing:**
|
|
542
|
+
- Detox: https://wix.github.io/Detox/
|
|
543
|
+
- Appium: https://appium.io/docs/en/latest/
|
|
544
|
+
- XCTest: https://developer.apple.com/documentation/xctest
|
|
545
|
+
- Espresso: https://developer.android.com/training/testing/espresso
|