Master skill for QA verification, building, and deploying both the JetFarm Web App (Cloudflare Pages) and Android APK Installer (Supabase Storage CDN) with automated version bumping and branding synchronization on every deploy.
62
78%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./.agents/skills/deploy-jetfarm/SKILL.mdMaster guide for zero-regression verification, automated version bumping, branding synchronization, and simultaneous deployment of both the Web App (Cloudflare Pages https://jetfarm.pages.dev) and the Android APK Installer (Supabase CDN https://jetfarm.pages.dev/download) on every deploy.
Before starting the build or running quality gates:
Production Environment Secrets:
Confirm that .env.production is present in the project root and contains valid production keys:
EXPO_PUBLIC_SUPABASE_URL (https://jetfarm-placeholder-db.supabase.co)EXPO_PUBLIC_SUPABASE_ANON_KEYSUPABASE_SERVICE_ROLE_KEY or SUPABASE_SECRET_KEY (required for uploading release APKs to the downloads storage bucket)CLOUDFLARE_ACCOUNT_ID / CLOUDFLARE_API_TOKEN (or active npx wrangler login)Git Security Guard:
Ensure .env.production is strictly excluded from version control:
git check-ignore -v .env.productionRepository Cleanliness: Ensure no untracked artifacts or temporary files are cluttering the project root (follow Clean Root Policy).
All steps below must pass cleanly (100% green). If any check fails, fix the underlying issue before proceeding.
Verify TypeScript types compile without errors:
npx tsc --noEmitVerify lint rules and code conventions:
npm run lintInspect dependency versions and Expo config compatibility:
npx expo-doctorRun the complete unit test matrix:
# Fast run (skips coverage overhead)
npx jest --no-coveragebg-blue-900, text-emerald-500). Arbitrary hex colors (bg-[#...]) break NativeWind v4 on web/native.<TextInput> components have explicit placeholderTextColor="#9CA3AF" and dark text classes (text-gray-900) to prevent white-on-white text bugs.formatPHP() or ₱ format across all screens.AppLogo, SidebarContent, login.tsx, and download CTAs display the live application version (v{getAppVersion()}).Check for pending database schema migrations before building or deploying:
# 1. Dry run / status check of pending Supabase migrations on production database
npm run db:migrate
# 2. Verify schema columns, constraints, and tables match live database
npm run db:migrate:verify
# 3. If there are pending migrations, apply them carefully:
npm run db:migrate:applyVerify sync schema registration and production table mapping:
# 1. Schema contract regression test
npx jest src/database/schemaContracts.regression.test.ts
# 2. Live production sync integrity check (read-only verification)
node scripts/verify-sync-integrity.mjs --productionchart_of_accounts, journal_entries, and journal_entry_lines are mapped in src/services/syncTableContract.json.trg_enforce_balanced_journal is active on Supabase to reject unbalanced journals.Run automated browser tests simulating real operations:
npm run test:e2eOn every deploy, the pipeline compiles and deploys both the Web App and the Android APK Installer, and synchronizes the version number across all files and branding components.
npm run deploy:cloudflareAutomated Version Increment & Synchronization (scripts/sync-version.mjs --bump):
0.1.0 → 0.1.1).versionCode (e.g. 1 → 2).package.json, app.json, and src/constants/AppVersion.ts atomically.scripts/generate-app-updates.mjs.Android APK Compilation (scripts/build-android-production.mjs):
expo prebuild --platform android --no-install.gradlew app:assembleRelease.android/app/build/outputs/apk/release/.Supabase Storage CDN APK Upload:
downloads as jetfarm.apk.${EXPO_PUBLIC_SUPABASE_URL}/storage/v1/object/public/downloads/jetfarm.apk.Web Application Export (scripts/export-web-production.mjs):
dist/.AppLogo, SidebarContent, login.tsx) display the new version number.SPA Client-Side Routing & Download Page Generation:
dist/_redirects mapping:
/download → Supabase CDN APK URL (302)/download/latest → Supabase CDN APK URL (302)/download/apk → Supabase CDN APK URL (302)/download/v* → Supabase CDN APK URL (302)/jetfarm.apk → Supabase CDN APK URL (302)/* /index.html 200dist/download/index.html displaying JetFarm Mobile App, version badge, release details, and direct APK download button.In-App Updater Manifest Generation:
dist/version.json with latestVersion, versionCode, releaseTag, apkUrl, and releaseNotes.version.json to Supabase Storage downloads bucket.Security & CSP Headers (dist/_headers):
Asset Name Sanitization:
dist/assets/node_modules/ to dist/assets/vendor_modules/ to bypass Cloudflare Pages' ignore filter for vector icons and fonts.Cloudflare Pages Edge Deployment:
npx wrangler pages deploy dist --project-name jetfarm --branch main --commit-dirty=true.The version number is automatically updated on every deploy and displayed across key branding locations:
src/components/AppLogo.tsx:
JetFarm alongside a prominent emerald badge v{getAppVersion()} (e.g. v0.1.1).src/components/SidebarContent.tsx:
AppLogo with live version badge.JetFarm v{getAppVersion()} • Build {APP_BUILD_NUMBER} with a direct "Download Latest APK" link.app/login.tsx:
JetFarm AGRIBUSINESS OS • v{getAppVersion()}.Download Android APK (v{getAppVersion()}) linking to APP_DOWNLOAD_URL.JetFarm v{getAppVersion()} - SECURE ACCESS.app/(admin)/settings/updates.tsx:
Immediately after running npm run deploy:cloudflare:
Verify Live Web Endpoint:
https://jetfarm.pages.devv0.1.1).Verify APK Installer Download Endpoint:
https://jetfarm.pages.dev/downloadjetfarm.apk.Verify Version Manifest:
https://jetfarm.pages.dev/version.jsonlatestVersion and versionCode match the deployed build.Verify Admin Authentication:
cybergada@gmail.com.₱ currency.Verify WatermelonDB Sync Engine:
Once verification passes, post deployment summary:
### 🚀 JetFarm Production Deployment (Web & Android APK)
- **Web App**: https://jetfarm.pages.dev (Version: v[VERSION], Build: [BUILD_NUMBER])
- **APK Installer Download**: https://jetfarm.pages.dev/download
- **Version Manifest**: https://jetfarm.pages.dev/version.json
- **Branding**: Version badge v[VERSION] active across Web App and Mobile APK
- **Commit**: [GIT_HASH]
- **Status**: Deploy na Mimi at [Current Date]zazakia/JetFarm
bdf360f
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.