cfsa-antigravity 1.0.0
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/bin/cli.mjs +324 -0
- package/package.json +34 -0
- package/template/.agent/instructions/commands.md +48 -0
- package/template/.agent/instructions/patterns.md +61 -0
- package/template/.agent/instructions/structure.md +29 -0
- package/template/.agent/instructions/tech-stack.md +43 -0
- package/template/.agent/instructions/workflow.md +41 -0
- package/template/.agent/kit-sync.md +15 -0
- package/template/.agent/rules/boundary-not-placeholder.md +146 -0
- package/template/.agent/rules/completion-checklist.md +48 -0
- package/template/.agent/rules/decision-classification.md +103 -0
- package/template/.agent/rules/extensibility.md +47 -0
- package/template/.agent/rules/question-vs-command.md +81 -0
- package/template/.agent/rules/security-first.md +43 -0
- package/template/.agent/rules/specificity-standards.md +54 -0
- package/template/.agent/rules/tdd-contract-first.md +57 -0
- package/template/.agent/rules/vertical-slices.md +42 -0
- package/template/.agent/skill-library/MANIFEST.md +480 -0
- package/template/.agent/skill-library/README.md +38 -0
- package/template/.agent/skill-library/meta/brand-guidelines/SKILL.md +73 -0
- package/template/.agent/skill-library/meta/claude-code/README.md +9 -0
- package/template/.agent/skill-library/meta/claude-code/agent-development/SKILL.md +415 -0
- package/template/.agent/skill-library/meta/claude-code/hook-development/SKILL.md +712 -0
- package/template/.agent/skill-library/meta/claude-code/plugin-structure/SKILL.md +476 -0
- package/template/.agent/skill-library/meta/git-advanced/SKILL.md +972 -0
- package/template/.agent/skill-library/meta/mcp-builder/SKILL.md +236 -0
- package/template/.agent/skill-library/meta/product-marketing-context/SKILL.md +241 -0
- package/template/.agent/skill-library/meta/regex-patterns/SKILL.md +751 -0
- package/template/.agent/skill-library/meta/tmux-processes/SKILL.md +210 -0
- package/template/.agent/skill-library/meta/using-tmux-for-interactive-commands/SKILL.md +178 -0
- package/template/.agent/skill-library/stack/3d/threejs-pro/SKILL.md +300 -0
- package/template/.agent/skill-library/stack/ai/ai-sdk/SKILL.md +77 -0
- package/template/.agent/skill-library/stack/ai/langchain/SKILL.md +530 -0
- package/template/.agent/skill-library/stack/ai/ollama/SKILL.md +321 -0
- package/template/.agent/skill-library/stack/ai/openai-sdk/SKILL.md +549 -0
- package/template/.agent/skill-library/stack/analytics/google-analytics/SKILL.md +153 -0
- package/template/.agent/skill-library/stack/api/graphql/SKILL.md +1061 -0
- package/template/.agent/skill-library/stack/api/trpc/SKILL.md +576 -0
- package/template/.agent/skill-library/stack/auth/authjs/SKILL.md +569 -0
- package/template/.agent/skill-library/stack/auth/clerk/SKILL.md +590 -0
- package/template/.agent/skill-library/stack/auth/firebase-auth/SKILL.md +734 -0
- package/template/.agent/skill-library/stack/cms/payload-cms/SKILL.md +573 -0
- package/template/.agent/skill-library/stack/cms/shopify/SKILL.md +1193 -0
- package/template/.agent/skill-library/stack/cms/wordpress/SKILL.md +1104 -0
- package/template/.agent/skill-library/stack/css/sass-scss/SKILL.md +1121 -0
- package/template/.agent/skill-library/stack/css/tailwind-css-patterns/SKILL.md +863 -0
- package/template/.agent/skill-library/stack/css/tailwind-design-system/SKILL.md +490 -0
- package/template/.agent/skill-library/stack/css/vanilla-css/SKILL.md +1078 -0
- package/template/.agent/skill-library/stack/databases/clickhouse/SKILL.md +311 -0
- package/template/.agent/skill-library/stack/databases/influxdb/SKILL.md +280 -0
- package/template/.agent/skill-library/stack/databases/lancedb/SKILL.md +415 -0
- package/template/.agent/skill-library/stack/databases/mongodb/SKILL.md +1169 -0
- package/template/.agent/skill-library/stack/databases/neo4j/SKILL.md +839 -0
- package/template/.agent/skill-library/stack/databases/pgvector/SKILL.md +241 -0
- package/template/.agent/skill-library/stack/databases/pinecone/SKILL.md +212 -0
- package/template/.agent/skill-library/stack/databases/postgresql/SKILL.md +658 -0
- package/template/.agent/skill-library/stack/databases/qdrant/SKILL.md +312 -0
- package/template/.agent/skill-library/stack/databases/redis/SKILL.md +1079 -0
- package/template/.agent/skill-library/stack/databases/spacetimedb/SKILL.md +532 -0
- package/template/.agent/skill-library/stack/databases/sqlite/SKILL.md +1132 -0
- package/template/.agent/skill-library/stack/databases/supabase/SKILL.md +640 -0
- package/template/.agent/skill-library/stack/databases/surrealdb-expert/SKILL.md +945 -0
- package/template/.agent/skill-library/stack/databases/timescaledb/SKILL.md +745 -0
- package/template/.agent/skill-library/stack/databases/weaviate/SKILL.md +218 -0
- package/template/.agent/skill-library/stack/devops/github-actions/SKILL.md +554 -0
- package/template/.agent/skill-library/stack/devops/kubernetes/SKILL.md +950 -0
- package/template/.agent/skill-library/stack/devops/nginx/SKILL.md +841 -0
- package/template/.agent/skill-library/stack/devops/terraform/SKILL.md +860 -0
- package/template/.agent/skill-library/stack/email/resend/SKILL.md +391 -0
- package/template/.agent/skill-library/stack/engines/godot/SKILL.md +488 -0
- package/template/.agent/skill-library/stack/extensions/chrome-extension/SKILL.md +375 -0
- package/template/.agent/skill-library/stack/extensions/vscode-extension/SKILL.md +453 -0
- package/template/.agent/skill-library/stack/frameworks/astro-framework/SKILL.md +162 -0
- package/template/.agent/skill-library/stack/frameworks/electron/SKILL.md +1286 -0
- package/template/.agent/skill-library/stack/frameworks/fastapi/SKILL.md +650 -0
- package/template/.agent/skill-library/stack/frameworks/hono/SKILL.md +90 -0
- package/template/.agent/skill-library/stack/frameworks/nestjs/SKILL.md +878 -0
- package/template/.agent/skill-library/stack/frameworks/nextjs/SKILL.md +635 -0
- package/template/.agent/skill-library/stack/frameworks/nuxt/SKILL.md +564 -0
- package/template/.agent/skill-library/stack/frameworks/sveltekit/SKILL.md +614 -0
- package/template/.agent/skill-library/stack/frameworks/tauri/SKILL.md +920 -0
- package/template/.agent/skill-library/stack/gamedev/godot/SKILL.md +1032 -0
- package/template/.agent/skill-library/stack/gamedev/unity/SKILL.md +1175 -0
- package/template/.agent/skill-library/stack/hosting/aws/SKILL.md +467 -0
- package/template/.agent/skill-library/stack/hosting/cloudflare/SKILL.md +201 -0
- package/template/.agent/skill-library/stack/hosting/docker-expert/SKILL.md +409 -0
- package/template/.agent/skill-library/stack/hosting/vercel/SKILL.md +484 -0
- package/template/.agent/skill-library/stack/languages/bash-scripting/SKILL.md +773 -0
- package/template/.agent/skill-library/stack/languages/c-cpp/SKILL.md +712 -0
- package/template/.agent/skill-library/stack/languages/gdscript/SKILL.md +789 -0
- package/template/.agent/skill-library/stack/languages/go/SKILL.md +664 -0
- package/template/.agent/skill-library/stack/languages/java/SKILL.md +778 -0
- package/template/.agent/skill-library/stack/languages/kotlin/SKILL.md +665 -0
- package/template/.agent/skill-library/stack/languages/python/SKILL.md +678 -0
- package/template/.agent/skill-library/stack/languages/rust/SKILL.md +673 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/SKILL.md +141 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/advanced-generics.md +90 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/branded-types.md +57 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/builder-pattern.md +71 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/common-pitfalls.md +135 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/conditional-types.md +27 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/decorators.md +98 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/discriminated-unions.md +62 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/mapped-types.md +53 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/performance-best-practices.md +104 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/template-literal-types.md +49 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/testing-types.md +112 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/type-guards.md +70 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/type-inference.md +101 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/utility-types.md +98 -0
- package/template/.agent/skill-library/stack/languages/vanilla-javascript/SKILL.md +803 -0
- package/template/.agent/skill-library/stack/messaging/kafka/SKILL.md +235 -0
- package/template/.agent/skill-library/stack/mobile/expo-react-native/SKILL.md +665 -0
- package/template/.agent/skill-library/stack/mobile/flutter/SKILL.md +316 -0
- package/template/.agent/skill-library/stack/mobile/react-native/SKILL.md +337 -0
- package/template/.agent/skill-library/stack/monitoring/posthog/SKILL.md +396 -0
- package/template/.agent/skill-library/stack/monitoring/sentry/SKILL.md +509 -0
- package/template/.agent/skill-library/stack/observability/datadog/SKILL.md +179 -0
- package/template/.agent/skill-library/stack/observability/distributed-tracing/SKILL.md +140 -0
- package/template/.agent/skill-library/stack/observability/logging-best-practices/SKILL.md +168 -0
- package/template/.agent/skill-library/stack/observability/opentelemetry/SKILL.md +164 -0
- package/template/.agent/skill-library/stack/observability/prometheus-grafana/SKILL.md +246 -0
- package/template/.agent/skill-library/stack/observability/python-observability/SKILL.md +158 -0
- package/template/.agent/skill-library/stack/orm/drizzle-orm/SKILL.md +613 -0
- package/template/.agent/skill-library/stack/orm/prisma/SKILL.md +744 -0
- package/template/.agent/skill-library/stack/payments/lemonsqueezy/SKILL.md +393 -0
- package/template/.agent/skill-library/stack/payments/stripe-integration/SKILL.md +457 -0
- package/template/.agent/skill-library/stack/queue/bullmq/SKILL.md +385 -0
- package/template/.agent/skill-library/stack/queue/inngest/SKILL.md +438 -0
- package/template/.agent/skill-library/stack/realtime/socketio/SKILL.md +595 -0
- package/template/.agent/skill-library/stack/search/elasticsearch/SKILL.md +248 -0
- package/template/.agent/skill-library/stack/search/meilisearch/SKILL.md +385 -0
- package/template/.agent/skill-library/stack/security/crypto-patterns/SKILL.md +437 -0
- package/template/.agent/skill-library/stack/security/csp-cors-headers/SKILL.md +588 -0
- package/template/.agent/skill-library/stack/security/dependency-auditing/SKILL.md +560 -0
- package/template/.agent/skill-library/stack/security/input-sanitization/SKILL.md +430 -0
- package/template/.agent/skill-library/stack/security/owasp-web-security/SKILL.md +421 -0
- package/template/.agent/skill-library/stack/state/tanstack-query/SKILL.md +637 -0
- package/template/.agent/skill-library/stack/state/zustand/SKILL.md +483 -0
- package/template/.agent/skill-library/stack/storage/aws-s3/SKILL.md +415 -0
- package/template/.agent/skill-library/stack/testing/playwright/SKILL.md +641 -0
- package/template/.agent/skill-library/stack/testing/storybook/SKILL.md +923 -0
- package/template/.agent/skill-library/stack/testing/testing-library/SKILL.md +872 -0
- package/template/.agent/skill-library/stack/testing/vitest/SKILL.md +714 -0
- package/template/.agent/skill-library/stack/ui/react-best-practices/SKILL.md +877 -0
- package/template/.agent/skill-library/stack/ui/react-composition-patterns/SKILL.md +1107 -0
- package/template/.agent/skill-library/stack/ui/react-flow/SKILL.md +425 -0
- package/template/.agent/skill-library/stack/ui/shadcn-ui/SKILL.md +703 -0
- package/template/.agent/skill-library/surface/api/api-caching/SKILL.md +458 -0
- package/template/.agent/skill-library/surface/api/api-documentation-openapi/SKILL.md +697 -0
- package/template/.agent/skill-library/surface/api/api-error-handling/SKILL.md +478 -0
- package/template/.agent/skill-library/surface/api/api-security-checklist/SKILL.md +147 -0
- package/template/.agent/skill-library/surface/api/api-versioning/SKILL.md +420 -0
- package/template/.agent/skill-library/surface/api/email-best-practices/SKILL.md +59 -0
- package/template/.agent/skill-library/surface/api/rate-limiting-abuse-protection/SKILL.md +147 -0
- package/template/.agent/skill-library/surface/api/rest-api-design/SKILL.md +478 -0
- package/template/.agent/skill-library/surface/api/webhook-design/SKILL.md +752 -0
- package/template/.agent/skill-library/surface/cli/cli-configuration-management/SKILL.md +445 -0
- package/template/.agent/skill-library/surface/cli/cli-error-diagnostics/SKILL.md +515 -0
- package/template/.agent/skill-library/surface/cli/cli-shell-integration/SKILL.md +479 -0
- package/template/.agent/skill-library/surface/cli/cli-ux-design/SKILL.md +477 -0
- package/template/.agent/skill-library/surface/desktop/desktop-app-distribution/SKILL.md +416 -0
- package/template/.agent/skill-library/surface/desktop/desktop-security-sandboxing/SKILL.md +407 -0
- package/template/.agent/skill-library/surface/desktop/desktop-ux-conventions/SKILL.md +361 -0
- package/template/.agent/skill-library/surface/desktop/native-os-integration/SKILL.md +563 -0
- package/template/.agent/skill-library/surface/extension/browser-extension-patterns/SKILL.md +482 -0
- package/template/.agent/skill-library/surface/extension/plugin-architecture-design/SKILL.md +632 -0
- package/template/.agent/skill-library/surface/extension/vscode-extension-development/SKILL.md +728 -0
- package/template/.agent/skill-library/surface/mobile/app-store-submission/SKILL.md +304 -0
- package/template/.agent/skill-library/surface/mobile/mobile-offline-sync/SKILL.md +443 -0
- package/template/.agent/skill-library/surface/mobile/mobile-responsive-patterns/SKILL.md +432 -0
- package/template/.agent/skill-library/surface/mobile/push-notifications/SKILL.md +495 -0
- package/template/.agent/skill-library/surface/web/accessibility-compliance/SKILL.md +827 -0
- package/template/.agent/skill-library/surface/web/ai-seo/SKILL.md +398 -0
- package/template/.agent/skill-library/surface/web/ai-seo/references/content-patterns.md +285 -0
- package/template/.agent/skill-library/surface/web/ai-seo/references/platform-ranking-factors.md +152 -0
- package/template/.agent/skill-library/surface/web/analytics-tracking/SKILL.md +309 -0
- package/template/.agent/skill-library/surface/web/analytics-tracking/references/event-library.md +260 -0
- package/template/.agent/skill-library/surface/web/analytics-tracking/references/ga4-implementation.md +300 -0
- package/template/.agent/skill-library/surface/web/analytics-tracking/references/gtm-implementation.md +390 -0
- package/template/.agent/skill-library/surface/web/authentication-ui-flows/SKILL.md +530 -0
- package/template/.agent/skill-library/surface/web/dark-mode-theming/SKILL.md +516 -0
- package/template/.agent/skill-library/surface/web/design-reference-data/SKILL.md +105 -0
- package/template/.agent/skill-library/surface/web/design-reference-data/data/charts.csv +26 -0
- package/template/.agent/skill-library/surface/web/design-reference-data/data/colors.csv +97 -0
- package/template/.agent/skill-library/surface/web/design-reference-data/data/landing.csv +31 -0
- package/template/.agent/skill-library/surface/web/design-reference-data/data/styles.csv +59 -0
- package/template/.agent/skill-library/surface/web/design-reference-data/data/typography.csv +58 -0
- package/template/.agent/skill-library/surface/web/design-reference-data/data/ux-guidelines.csv +100 -0
- package/template/.agent/skill-library/surface/web/design-reference-data/scripts/core.py +258 -0
- package/template/.agent/skill-library/surface/web/design-reference-data/scripts/design_system.py +1067 -0
- package/template/.agent/skill-library/surface/web/design-reference-data/scripts/search.py +106 -0
- package/template/.agent/skill-library/surface/web/form-handling-validation/SKILL.md +675 -0
- package/template/.agent/skill-library/surface/web/frontend-design/SKILL.md +1393 -0
- package/template/.agent/skill-library/surface/web/frontend-design/templates/cppn-hero.tsx +299 -0
- package/template/.agent/skill-library/surface/web/frontend-design/templates/wave-hero.tsx +875 -0
- package/template/.agent/skill-library/surface/web/frontend-verification/SKILL.md +111 -0
- package/template/.agent/skill-library/surface/web/frontend-verification/scripts/ux_audit.py +739 -0
- package/template/.agent/skill-library/surface/web/i18n-localization/SKILL.md +154 -0
- package/template/.agent/skill-library/surface/web/offline-first-pwa/SKILL.md +657 -0
- package/template/.agent/skill-library/surface/web/page-cro/SKILL.md +182 -0
- package/template/.agent/skill-library/surface/web/page-cro/references/experiments.md +248 -0
- package/template/.agent/skill-library/surface/web/programmatic-seo/SKILL.md +238 -0
- package/template/.agent/skill-library/surface/web/programmatic-seo/references/playbooks.md +308 -0
- package/template/.agent/skill-library/surface/web/schema-markup/SKILL.md +179 -0
- package/template/.agent/skill-library/surface/web/schema-markup/references/schema-examples.md +398 -0
- package/template/.agent/skill-library/surface/web/seo-audit/SKILL.md +394 -0
- package/template/.agent/skill-library/surface/web/seo-audit/references/ai-writing-detection.md +200 -0
- package/template/.agent/skill-library/surface/web/web-performance-optimization/SKILL.md +646 -0
- package/template/.agent/skill-library/surface/web/web-scraping/SKILL.md +58 -0
- package/template/.agent/skills/accessibility/SKILL.md +522 -0
- package/template/.agent/skills/accessibility/references/WCAG.md +162 -0
- package/template/.agent/skills/adversarial-review/SKILL.md +90 -0
- package/template/.agent/skills/antigravity-workflows/SKILL.md +81 -0
- package/template/.agent/skills/antigravity-workflows/resources/implementation-playbook.md +36 -0
- package/template/.agent/skills/api-design-principles/SKILL.md +37 -0
- package/template/.agent/skills/api-design-principles/assets/api-design-checklist.md +155 -0
- package/template/.agent/skills/api-design-principles/assets/rest-api-template.py +182 -0
- package/template/.agent/skills/api-design-principles/references/graphql-schema-design.md +583 -0
- package/template/.agent/skills/api-design-principles/references/rest-best-practices.md +408 -0
- package/template/.agent/skills/api-design-principles/resources/implementation-playbook.md +513 -0
- package/template/.agent/skills/api-versioning/SKILL.md +420 -0
- package/template/.agent/skills/architecture-mapping/SKILL.md +219 -0
- package/template/.agent/skills/bootstrap-agents/SKILL.md +259 -0
- package/template/.agent/skills/brainstorming/SKILL.md +236 -0
- package/template/.agent/skills/brand-guidelines/SKILL.md +44 -0
- package/template/.agent/skills/clean-code/SKILL.md +94 -0
- package/template/.agent/skills/code-review-pro/SKILL.md +152 -0
- package/template/.agent/skills/concise-planning/SKILL.md +68 -0
- package/template/.agent/skills/cross-layer-consistency/SKILL.md +117 -0
- package/template/.agent/skills/database-schema-design/SKILL.md +429 -0
- package/template/.agent/skills/deployment-procedures/SKILL.md +241 -0
- package/template/.agent/skills/design-anti-cliche/SKILL.md +159 -0
- package/template/.agent/skills/design-direction/SKILL.md +45 -0
- package/template/.agent/skills/error-handling-patterns/SKILL.md +721 -0
- package/template/.agent/skills/find-skills/SKILL.md +145 -0
- package/template/.agent/skills/git-advanced/SKILL.md +972 -0
- package/template/.agent/skills/git-workflow/SKILL.md +420 -0
- package/template/.agent/skills/idea-extraction/SKILL.md +271 -0
- package/template/.agent/skills/logging-best-practices/SKILL.md +851 -0
- package/template/.agent/skills/migration-management/SKILL.md +384 -0
- package/template/.agent/skills/minimalist-surgical-development/SKILL.md +69 -0
- package/template/.agent/skills/parallel-agents/SKILL.md +165 -0
- package/template/.agent/skills/parallel-debugging/SKILL.md +135 -0
- package/template/.agent/skills/parallel-feature-development/SKILL.md +166 -0
- package/template/.agent/skills/performance-budgeting/SKILL.md +144 -0
- package/template/.agent/skills/pipeline-rubrics/SKILL.md +51 -0
- package/template/.agent/skills/pipeline-rubrics/references/architecture-rubric.md +19 -0
- package/template/.agent/skills/pipeline-rubrics/references/be-rubric.md +21 -0
- package/template/.agent/skills/pipeline-rubrics/references/fe-rubric.md +20 -0
- package/template/.agent/skills/pipeline-rubrics/references/ia-rubric.md +19 -0
- package/template/.agent/skills/pipeline-rubrics/references/scoring.md +28 -0
- package/template/.agent/skills/pipeline-rubrics/references/vision-rubric.md +11 -0
- package/template/.agent/skills/prd-templates/SKILL.md +88 -0
- package/template/.agent/skills/prd-templates/references/architecture-design-template.md +88 -0
- package/template/.agent/skills/prd-templates/references/be-spec-template.md +101 -0
- package/template/.agent/skills/prd-templates/references/data-placement-template.md +74 -0
- package/template/.agent/skills/prd-templates/references/decomposition-templates.md +211 -0
- package/template/.agent/skills/prd-templates/references/design-system-decisions.md +198 -0
- package/template/.agent/skills/prd-templates/references/engineering-standards-template.md +124 -0
- package/template/.agent/skills/prd-templates/references/fe-classification-procedures.md +47 -0
- package/template/.agent/skills/prd-templates/references/fe-spec-template.md +84 -0
- package/template/.agent/skills/prd-templates/references/infrastructure-report-template.md +71 -0
- package/template/.agent/skills/prd-templates/references/operational-templates.md +116 -0
- package/template/.agent/skills/prd-templates/references/placeholder-guard-template.md +21 -0
- package/template/.agent/skills/prd-templates/references/surface-model.md +61 -0
- package/template/.agent/skills/prd-templates/references/vision-template.md +66 -0
- package/template/.agent/skills/prompt-engineer/README.md +659 -0
- package/template/.agent/skills/prompt-engineer/SKILL.md +249 -0
- package/template/.agent/skills/regex-patterns/SKILL.md +751 -0
- package/template/.agent/skills/resolve-ambiguity/SKILL.md +278 -0
- package/template/.agent/skills/rest-api-design/SKILL.md +478 -0
- package/template/.agent/skills/security-scanning-security-hardening/SKILL.md +231 -0
- package/template/.agent/skills/session-continuity/SKILL.md +730 -0
- package/template/.agent/skills/session-continuity/protocols/01-session-resumption.md +38 -0
- package/template/.agent/skills/session-continuity/protocols/02-progress-generation.md +85 -0
- package/template/.agent/skills/session-continuity/protocols/03-progress-update.md +70 -0
- package/template/.agent/skills/session-continuity/protocols/04-pattern-extraction.md +60 -0
- package/template/.agent/skills/session-continuity/protocols/05-session-close.md +37 -0
- package/template/.agent/skills/session-continuity/protocols/06-decision-analysis.md +84 -0
- package/template/.agent/skills/session-continuity/protocols/07-spec-pipeline-generation.md +48 -0
- package/template/.agent/skills/session-continuity/protocols/08-spec-pipeline-update.md +43 -0
- package/template/.agent/skills/session-continuity/protocols/09-parallel-claim.md +122 -0
- package/template/.agent/skills/session-continuity/protocols/10-placeholder-verification-gate.md +104 -0
- package/template/.agent/skills/session-continuity/protocols/ambiguity-gates.md +48 -0
- package/template/.agent/skills/skill-creator/LICENSE.txt +202 -0
- package/template/.agent/skills/skill-creator/README.md +270 -0
- package/template/.agent/skills/skill-creator/SKILL.md +590 -0
- package/template/.agent/skills/skill-creator/references/output-patterns.md +82 -0
- package/template/.agent/skills/skill-creator/references/workflows.md +28 -0
- package/template/.agent/skills/skill-creator/scripts/init_skill.py +303 -0
- package/template/.agent/skills/skill-creator/scripts/package_skill.py +110 -0
- package/template/.agent/skills/skill-creator/scripts/quick_validate.py +95 -0
- package/template/.agent/skills/spec-writing/SKILL.md +110 -0
- package/template/.agent/skills/systematic-debugging/CREATION-LOG.md +119 -0
- package/template/.agent/skills/systematic-debugging/SKILL.md +297 -0
- package/template/.agent/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/template/.agent/skills/systematic-debugging/condition-based-waiting.md +115 -0
- package/template/.agent/skills/systematic-debugging/defense-in-depth.md +122 -0
- package/template/.agent/skills/systematic-debugging/find-polluter.sh +63 -0
- package/template/.agent/skills/systematic-debugging/root-cause-tracing.md +169 -0
- package/template/.agent/skills/systematic-debugging/test-academic.md +14 -0
- package/template/.agent/skills/systematic-debugging/test-pressure-1.md +58 -0
- package/template/.agent/skills/systematic-debugging/test-pressure-2.md +68 -0
- package/template/.agent/skills/systematic-debugging/test-pressure-3.md +69 -0
- package/template/.agent/skills/tdd-workflow/SKILL.md +409 -0
- package/template/.agent/skills/tech-stack-catalog/SKILL.md +49 -0
- package/template/.agent/skills/tech-stack-catalog/references/constraint-questions.md +21 -0
- package/template/.agent/skills/tech-stack-catalog/references/dev-tooling-decisions.md +37 -0
- package/template/.agent/skills/tech-stack-catalog/references/surface-decision-tables.md +69 -0
- package/template/.agent/skills/technical-writer/SKILL.md +242 -0
- package/template/.agent/skills/testing-strategist/SKILL.md +932 -0
- package/template/.agent/skills/verification-before-completion/SKILL.md +145 -0
- package/template/.agent/skills/workflow-automation/SKILL.md +73 -0
- package/template/.agent/workflows/audit-ambiguity-execute.md +165 -0
- package/template/.agent/workflows/audit-ambiguity-rubrics.md +83 -0
- package/template/.agent/workflows/audit-ambiguity.md +64 -0
- package/template/.agent/workflows/bootstrap-agents-fill.md +201 -0
- package/template/.agent/workflows/bootstrap-agents-provision.md +197 -0
- package/template/.agent/workflows/bootstrap-agents.md +66 -0
- package/template/.agent/workflows/create-prd-architecture.md +119 -0
- package/template/.agent/workflows/create-prd-compile.md +138 -0
- package/template/.agent/workflows/create-prd-design-system.md +135 -0
- package/template/.agent/workflows/create-prd-security.md +113 -0
- package/template/.agent/workflows/create-prd-stack.md +91 -0
- package/template/.agent/workflows/create-prd.md +168 -0
- package/template/.agent/workflows/decompose-architecture-structure.md +82 -0
- package/template/.agent/workflows/decompose-architecture-validate.md +119 -0
- package/template/.agent/workflows/decompose-architecture.md +111 -0
- package/template/.agent/workflows/evolve-contract.md +98 -0
- package/template/.agent/workflows/evolve-feature-cascade.md +140 -0
- package/template/.agent/workflows/evolve-feature-classify.md +116 -0
- package/template/.agent/workflows/evolve-feature.md +56 -0
- package/template/.agent/workflows/ideate-discover.md +144 -0
- package/template/.agent/workflows/ideate-extract.md +129 -0
- package/template/.agent/workflows/ideate-validate.md +117 -0
- package/template/.agent/workflows/ideate.md +113 -0
- package/template/.agent/workflows/implement-slice-setup.md +113 -0
- package/template/.agent/workflows/implement-slice-tdd.md +198 -0
- package/template/.agent/workflows/implement-slice.md +50 -0
- package/template/.agent/workflows/plan-phase.md +202 -0
- package/template/.agent/workflows/propagate-decision-apply.md +135 -0
- package/template/.agent/workflows/propagate-decision-scan.md +147 -0
- package/template/.agent/workflows/propagate-decision.md +56 -0
- package/template/.agent/workflows/remediate-pipeline-assess.md +138 -0
- package/template/.agent/workflows/remediate-pipeline-execute.md +135 -0
- package/template/.agent/workflows/remediate-pipeline.md +55 -0
- package/template/.agent/workflows/resolve-ambiguity.md +82 -0
- package/template/.agent/workflows/sync-kit.md +209 -0
- package/template/.agent/workflows/update-architecture-map.md +74 -0
- package/template/.agent/workflows/validate-phase.md +219 -0
- package/template/.agent/workflows/verify-infrastructure.md +207 -0
- package/template/.agent/workflows/write-architecture-spec-deepen.md +139 -0
- package/template/.agent/workflows/write-architecture-spec-design.md +202 -0
- package/template/.agent/workflows/write-architecture-spec.md +63 -0
- package/template/.agent/workflows/write-be-spec-classify.md +165 -0
- package/template/.agent/workflows/write-be-spec-write.md +98 -0
- package/template/.agent/workflows/write-be-spec.md +76 -0
- package/template/.agent/workflows/write-fe-spec-classify.md +170 -0
- package/template/.agent/workflows/write-fe-spec-write.md +94 -0
- package/template/.agent/workflows/write-fe-spec.md +71 -0
- package/template/AGENTS.md +176 -0
- package/template/GEMINI.md +177 -0
- package/template/docs/README.md +187 -0
- package/template/docs/audits/.gitkeep +0 -0
- package/template/docs/audits/README.md +10 -0
- package/template/docs/plans/.gitkeep +0 -0
- package/template/docs/plans/README.md +21 -0
- package/template/docs/plans/be/.gitkeep +0 -0
- package/template/docs/plans/be/README.md +11 -0
- package/template/docs/plans/fe/.gitkeep +0 -0
- package/template/docs/plans/fe/README.md +11 -0
- package/template/docs/plans/ia/.gitkeep +0 -0
- package/template/docs/plans/ia/README.md +17 -0
- package/template/docs/plans/ia/deep-dives/.gitkeep +0 -0
- package/template/docs/plans/ia/deep-dives/README.md +5 -0
- package/template/docs/plans/phases/.gitkeep +0 -0
- package/template/docs/plans/phases/README.md +11 -0
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: app-store-submission
|
|
3
|
+
description: App store submission checklist covering Apple App Store and Google Play requirements, review guidelines, privacy labels, age ratings, staged rollouts, and common rejection reasons. Use when preparing a mobile app for store submission or updating an existing listing.
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# App Store Submission
|
|
8
|
+
|
|
9
|
+
Prepare mobile applications for successful submission to the Apple App Store and Google Play Store.
|
|
10
|
+
|
|
11
|
+
## Screenshot Requirements
|
|
12
|
+
|
|
13
|
+
### Apple App Store
|
|
14
|
+
|
|
15
|
+
| Device | Size (pixels) | Required |
|
|
16
|
+
|--------|--------------|----------|
|
|
17
|
+
| iPhone 6.9" (16 Pro Max) | 1320 x 2868 | Yes (covers 6.5" too) |
|
|
18
|
+
| iPhone 6.7" (15 Plus/Pro Max) | 1290 x 2796 | Yes |
|
|
19
|
+
| iPhone 6.5" (11 Pro Max) | 1284 x 2778 | Yes |
|
|
20
|
+
| iPhone 5.5" (8 Plus) | 1242 x 2208 | Only if supporting older devices |
|
|
21
|
+
| iPad Pro 12.9" (6th gen) | 2048 x 2732 | Yes (if universal app) |
|
|
22
|
+
| iPad Pro 13" (M4) | 2064 x 2752 | Yes (if universal app) |
|
|
23
|
+
|
|
24
|
+
- **Count**: 1-10 screenshots per localization
|
|
25
|
+
- **Format**: PNG or JPEG, no alpha channel
|
|
26
|
+
- **Content rules**: Screenshots must reflect actual app experience. No misleading imagery. App Store Review Guideline 2.3.
|
|
27
|
+
- **Video previews**: 15-30 seconds, app-captured footage, no device frames in video itself.
|
|
28
|
+
|
|
29
|
+
### Google Play Store
|
|
30
|
+
|
|
31
|
+
| Asset | Size | Required |
|
|
32
|
+
|-------|------|----------|
|
|
33
|
+
| Phone screenshots | 16:9 or 9:16, min 320px, max 3840px | 2-8 required |
|
|
34
|
+
| 7" tablet screenshots | Same ratios | Required if targeting tablets |
|
|
35
|
+
| 10" tablet screenshots | Same ratios | Required if targeting tablets |
|
|
36
|
+
| Feature graphic | 1024 x 500 | Required |
|
|
37
|
+
| Icon | 512 x 512, 32-bit PNG | Required |
|
|
38
|
+
|
|
39
|
+
**Tip**: Use a single set of master screenshots at the highest resolution and crop/resize per target. Tools like `fastlane snapshot` (iOS) and `fastlane screengrab` (Android) automate capture.
|
|
40
|
+
|
|
41
|
+
## App Store Review Guidelines Compliance (Apple)
|
|
42
|
+
|
|
43
|
+
### Most Common Rejection Categories
|
|
44
|
+
|
|
45
|
+
| Guideline | Section | What It Means |
|
|
46
|
+
|-----------|---------|--------------|
|
|
47
|
+
| **Performance: App Completeness** | 2.1 | No placeholder content, broken links, or lorem ipsum |
|
|
48
|
+
| **Performance: Bugs** | 2.1 | App must not crash. Test on oldest supported OS version |
|
|
49
|
+
| **Design: Minimum Functionality** | 4.2 | App must offer sufficient functionality beyond a website |
|
|
50
|
+
| **Design: Spam** | 4.3 | No duplicate apps, template apps without substantial changes |
|
|
51
|
+
| **Legal: Privacy** | 5.1 | Privacy policy URL required. Data collection must match privacy labels |
|
|
52
|
+
| **Business: Payments** | 3.1.1 | Digital goods MUST use In-App Purchase. Physical goods MAY use external payment |
|
|
53
|
+
| **Safety: User-Generated Content** | 1.2 | Must have reporting, blocking, content filtering, and moderation |
|
|
54
|
+
| **Safety: Kids Category** | 1.3 | No third-party analytics, no ads (or certified COPPA-compliant ads) |
|
|
55
|
+
|
|
56
|
+
### Pre-Submission Checklist for Apple
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
- [ ] App launches without crash on all supported devices and OS versions
|
|
60
|
+
- [ ] No placeholder/test content in any screen
|
|
61
|
+
- [ ] Privacy policy URL in App Store Connect and in-app settings
|
|
62
|
+
- [ ] All claimed features actually work (reviewers test everything)
|
|
63
|
+
- [ ] Login credentials provided in review notes (demo account)
|
|
64
|
+
- [ ] Sign in with Apple offered if any third-party login exists
|
|
65
|
+
- [ ] IPv6-only network compatibility (Apple tests on IPv6)
|
|
66
|
+
- [ ] No references to other platforms ("also on Android")
|
|
67
|
+
- [ ] IDFA usage declared if using AdSupport framework
|
|
68
|
+
- [ ] Push notification entitlement only if actually using push
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Privacy Nutrition Labels (iOS) / Data Safety (Android)
|
|
72
|
+
|
|
73
|
+
### Apple Privacy Labels
|
|
74
|
+
|
|
75
|
+
You must declare what data you collect, how it is used, and whether it is linked to the user's identity.
|
|
76
|
+
|
|
77
|
+
| Category | Examples |
|
|
78
|
+
|----------|---------|
|
|
79
|
+
| **Data Used to Track You** | Advertising ID, email used for cross-app tracking |
|
|
80
|
+
| **Data Linked to You** | Name, email, phone (tied to identity) |
|
|
81
|
+
| **Data Not Linked to You** | Crash logs, anonymized analytics |
|
|
82
|
+
| **Data Not Collected** | Must be genuinely not collected, including by SDKs |
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
Categories to audit:
|
|
86
|
+
- Contact Info (name, email, phone, address)
|
|
87
|
+
- Health & Fitness
|
|
88
|
+
- Financial Info
|
|
89
|
+
- Location (coarse vs precise)
|
|
90
|
+
- Sensitive Info
|
|
91
|
+
- Contacts (address book)
|
|
92
|
+
- User Content (photos, files, messages)
|
|
93
|
+
- Browsing/Search History
|
|
94
|
+
- Identifiers (user ID, device ID)
|
|
95
|
+
- Usage Data (interaction data, ads data)
|
|
96
|
+
- Diagnostics (crash data, performance data)
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**Rule**: Every SDK you include (analytics, crash reporting, ads) adds to your privacy labels. Audit `Podfile.lock` and `package.json` for data collection by dependencies.
|
|
100
|
+
|
|
101
|
+
### Google Data Safety
|
|
102
|
+
|
|
103
|
+
Google requires a Data Safety section in Play Console covering:
|
|
104
|
+
|
|
105
|
+
| Question | What to Declare |
|
|
106
|
+
|----------|----------------|
|
|
107
|
+
| Does your app collect data? | Yes/No per data type |
|
|
108
|
+
| Is data shared with third parties? | Yes/No per data type |
|
|
109
|
+
| Is data encrypted in transit? | Must be Yes (HTTPS) |
|
|
110
|
+
| Can users request data deletion? | Must provide mechanism |
|
|
111
|
+
| Committed to Play Families policy? | Required for kids apps |
|
|
112
|
+
|
|
113
|
+
## Age Rating Questionnaires
|
|
114
|
+
|
|
115
|
+
### Apple (App Store)
|
|
116
|
+
|
|
117
|
+
Complete the age rating questionnaire in App Store Connect. Ratings are based on content:
|
|
118
|
+
|
|
119
|
+
| Content | None | Infrequent/Mild | Frequent/Intense |
|
|
120
|
+
|---------|------|-----------------|------------------|
|
|
121
|
+
| Violence (cartoon/realistic) | 4+ | 9+ / 12+ | 17+ |
|
|
122
|
+
| Profanity | 4+ | 12+ | 17+ |
|
|
123
|
+
| Sexual content | 4+ | 12+ | 17+ |
|
|
124
|
+
| Gambling (simulated/real) | 4+ | 12+ | 17+ |
|
|
125
|
+
| Drugs/alcohol/tobacco | 4+ | 12+ | 17+ |
|
|
126
|
+
| Horror/fear | 4+ | 9+ | 17+ |
|
|
127
|
+
| User-generated content | 17+ unless moderated | - | - |
|
|
128
|
+
|
|
129
|
+
### Google (Play Store)
|
|
130
|
+
|
|
131
|
+
Uses the IARC rating system. Complete the questionnaire in Play Console.
|
|
132
|
+
|
|
133
|
+
| IARC Rating | Age | Comparable To |
|
|
134
|
+
|-------------|-----|---------------|
|
|
135
|
+
| IARC 3+ | 3+ | ESRB Everyone |
|
|
136
|
+
| IARC 7+ | 7+ | ESRB Everyone 10+ |
|
|
137
|
+
| IARC 12+ | 12+ | ESRB Teen |
|
|
138
|
+
| IARC 16+ | 16+ | ESRB Mature |
|
|
139
|
+
| IARC 18+ | 18+ | ESRB Adults Only |
|
|
140
|
+
|
|
141
|
+
**Rule**: AI-generated content apps must account for the full range of possible outputs when rating. If AI can produce mature content, the app is rated accordingly even with filters.
|
|
142
|
+
|
|
143
|
+
## In-App Purchase Review Rules
|
|
144
|
+
|
|
145
|
+
| Rule | Apple | Google |
|
|
146
|
+
|------|-------|--------|
|
|
147
|
+
| Digital goods | Must use IAP | Must use Play Billing |
|
|
148
|
+
| Physical goods / services | External payment OK | External payment OK |
|
|
149
|
+
| Subscriptions | StoreKit 2 / original API | Play Billing Library |
|
|
150
|
+
| Restore purchases | Required | Required |
|
|
151
|
+
| Free trial | Must clearly state duration and price after | Must clearly state |
|
|
152
|
+
| Consumables | Must be delivered immediately | Must be acknowledged within 3 days |
|
|
153
|
+
| Price display | Must show localized price from StoreKit | Must show localized price from BillingClient |
|
|
154
|
+
|
|
155
|
+
```typescript
|
|
156
|
+
// React Native IAP - Purchase validation (server-side)
|
|
157
|
+
import { validateReceiptIos, validateReceiptAndroid } from 'react-native-iap';
|
|
158
|
+
|
|
159
|
+
// NEVER validate receipts on-device only -- send to your server
|
|
160
|
+
async function validatePurchase(
|
|
161
|
+
platform: 'ios' | 'android',
|
|
162
|
+
receipt: string
|
|
163
|
+
): Promise<PurchaseValidation> {
|
|
164
|
+
const response = await fetch('/api/purchases/validate', {
|
|
165
|
+
method: 'POST',
|
|
166
|
+
headers: { 'Content-Type': 'application/json' },
|
|
167
|
+
body: JSON.stringify({ platform, receipt }),
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
return response.json();
|
|
171
|
+
}
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
**Anti-pattern**: Validating receipts client-side only. Receipts must be verified server-side to prevent fraud.
|
|
175
|
+
|
|
176
|
+
## TestFlight / Internal Testing Tracks
|
|
177
|
+
|
|
178
|
+
### Apple TestFlight
|
|
179
|
+
|
|
180
|
+
| Track | Limit | Review Required | Duration |
|
|
181
|
+
|-------|-------|-----------------|----------|
|
|
182
|
+
| Internal (team) | 100 testers | No | 90 days per build |
|
|
183
|
+
| External (public link) | 10,000 testers | Yes (first build) | 90 days per build |
|
|
184
|
+
|
|
185
|
+
### Google Play Internal Testing
|
|
186
|
+
|
|
187
|
+
| Track | Limit | Review Required | Duration |
|
|
188
|
+
|-------|-------|-----------------|----------|
|
|
189
|
+
| Internal testing | 100 testers | No | No limit |
|
|
190
|
+
| Closed testing | Unlimited (by email list) | Yes (faster review) | No limit |
|
|
191
|
+
| Open testing | Unlimited (public opt-in) | Yes | No limit |
|
|
192
|
+
|
|
193
|
+
**Rule**: Always test on the Internal track before promoting to closed/open/production. Internal track has no review delay.
|
|
194
|
+
|
|
195
|
+
## Staged Rollouts
|
|
196
|
+
|
|
197
|
+
| Platform | Feature | How It Works |
|
|
198
|
+
|----------|---------|-------------|
|
|
199
|
+
| Apple | Phased release | 1%, 2%, 5%, 10%, 20%, 50%, 100% over 7 days (automatic unless paused) |
|
|
200
|
+
| Google | Staged rollout | Custom percentage (e.g., 5%, 25%, 50%, 100%), manual promotion |
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
# Fastlane - Staged rollout to Google Play
|
|
204
|
+
fastlane supply --track production --rollout 0.1 # 10% rollout
|
|
205
|
+
|
|
206
|
+
# Promote after monitoring crash-free rate
|
|
207
|
+
fastlane supply --track production --rollout 1.0 # 100%
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
**Rule**: Monitor crash-free rate during staged rollout. Halt rollout if crash-free rate drops below 99.5%.
|
|
211
|
+
|
|
212
|
+
## Crash-Free Rate Thresholds
|
|
213
|
+
|
|
214
|
+
| Metric | Target | Action if Below |
|
|
215
|
+
|--------|--------|----------------|
|
|
216
|
+
| Crash-free users | > 99.5% | Halt rollout, investigate top crash |
|
|
217
|
+
| Crash-free sessions | > 99.9% | Monitor closely |
|
|
218
|
+
| ANR rate (Android) | < 0.47% | Google will flag your app |
|
|
219
|
+
| Disk writes (iOS) | < 73.1 MB/day (90th percentile) | Apple may reject updates |
|
|
220
|
+
| Launch time | < 2s (cold start) | Optimize startup |
|
|
221
|
+
|
|
222
|
+
## Common Rejection Reasons and Fixes
|
|
223
|
+
|
|
224
|
+
| Rejection | Fix |
|
|
225
|
+
|-----------|-----|
|
|
226
|
+
| "Your app crashed during review" | Test on physical device matching reviewer's device. Provide demo account in review notes. |
|
|
227
|
+
| "Your app uses a login but does not offer Sign in with Apple" | Add Sign in with Apple as an option alongside other social logins. |
|
|
228
|
+
| "We noticed your app includes placeholder content" | Remove all lorem ipsum, test data, and TODO comments from UI. |
|
|
229
|
+
| "Your app's privacy policy is not accessible" | Ensure privacy policy URL works and is linked in both App Store Connect and in-app settings. |
|
|
230
|
+
| "Your app's In-App Purchase products are not available" | Ensure IAP products are in "Ready to Submit" state in App Store Connect and agreements are signed. |
|
|
231
|
+
| "Guideline 4.2 - Minimum Functionality" | App must provide value beyond what a mobile website could offer. Add native features. |
|
|
232
|
+
| "Guideline 2.1 - Performance: App Completeness" | All features claimed in metadata must work. Remove or hide incomplete features. |
|
|
233
|
+
| "Guideline 5.1.1 - Data Collection and Storage" | Privacy labels must accurately reflect all data collected, including by third-party SDKs. |
|
|
234
|
+
|
|
235
|
+
## App Store Optimization (ASO) Basics
|
|
236
|
+
|
|
237
|
+
| Element | Apple | Google | Best Practice |
|
|
238
|
+
|---------|-------|--------|---------------|
|
|
239
|
+
| App name | 30 chars | 30 chars | Brand + primary keyword |
|
|
240
|
+
| Subtitle | 30 chars | N/A | Secondary keyword phrase |
|
|
241
|
+
| Short description | N/A | 80 chars | Call-to-action with keywords |
|
|
242
|
+
| Keywords field | 100 chars (comma-separated) | N/A | No spaces after commas, no duplicates of title words |
|
|
243
|
+
| Description | 4000 chars | 4000 chars | Keywords in first 3 lines. Google indexes full text; Apple does not |
|
|
244
|
+
| Category | Primary + secondary | Primary + secondary | Match user search intent |
|
|
245
|
+
| Ratings & reviews | Critical for ranking | Critical for ranking | Prompt for review after positive moments (SKStoreReviewController / in-app review API) |
|
|
246
|
+
|
|
247
|
+
```typescript
|
|
248
|
+
// In-app review prompt (do NOT override or customize the system dialog)
|
|
249
|
+
import InAppReview from 'react-native-in-app-review';
|
|
250
|
+
|
|
251
|
+
async function requestReviewIfAppropriate() {
|
|
252
|
+
// Only prompt after the user has experienced value
|
|
253
|
+
const isAvailable = InAppReview.isAvailable();
|
|
254
|
+
if (isAvailable) {
|
|
255
|
+
await InAppReview.RequestInAppReview();
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
**Rule**: Apple limits review prompts to 3 per 365 days. Do not call `requestReview()` after negative experiences (errors, cancellations).
|
|
261
|
+
|
|
262
|
+
## CI/CD Automation
|
|
263
|
+
|
|
264
|
+
```bash
|
|
265
|
+
# Fastlane - Full submission pipeline
|
|
266
|
+
# iOS
|
|
267
|
+
fastlane ios beta # Build + upload to TestFlight
|
|
268
|
+
fastlane ios release # Build + submit for review
|
|
269
|
+
|
|
270
|
+
# Android
|
|
271
|
+
fastlane android beta # Build + upload to internal track
|
|
272
|
+
fastlane android release # Build + upload to production (staged rollout)
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
```ruby
|
|
276
|
+
# Fastlane - Example iOS lane
|
|
277
|
+
lane :release do
|
|
278
|
+
increment_build_number
|
|
279
|
+
build_app(scheme: "MyApp", export_method: "app-store")
|
|
280
|
+
upload_to_app_store(
|
|
281
|
+
skip_metadata: false,
|
|
282
|
+
skip_screenshots: false,
|
|
283
|
+
submit_for_review: true,
|
|
284
|
+
automatic_release: false, # Manual release after approval
|
|
285
|
+
phased_release: true # 7-day staged rollout
|
|
286
|
+
)
|
|
287
|
+
end
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
## Output Checklist
|
|
291
|
+
|
|
292
|
+
- [ ] Screenshots captured for all required device sizes
|
|
293
|
+
- [ ] App tested on oldest supported OS version and physical device
|
|
294
|
+
- [ ] Privacy labels / data safety declaration completed and accurate
|
|
295
|
+
- [ ] Age rating questionnaire completed
|
|
296
|
+
- [ ] Demo account credentials provided in review notes
|
|
297
|
+
- [ ] Sign in with Apple implemented (if any social login exists)
|
|
298
|
+
- [ ] In-app purchases tested and in "Ready to Submit" state
|
|
299
|
+
- [ ] No placeholder content, broken links, or test data in app
|
|
300
|
+
- [ ] Privacy policy URL accessible in-app and in store listing
|
|
301
|
+
- [ ] Internal testing track validated before production submission
|
|
302
|
+
- [ ] Staged rollout configured (not 100% on day one)
|
|
303
|
+
- [ ] Crash monitoring active before and during rollout
|
|
304
|
+
- [ ] CI/CD pipeline automates build, upload, and submission
|