app-deploy
CommunityDeploy Learn and Deliver apps to CommCare HQ.
System Documentation
What problem does it solve?
Upload Learn and Deliver app JSONs to the CRISPR-Connect domain on CommCare HQ, build, and publish the apps.
Core Features & Use Cases
- Read app files from ACE/<opp-name>/apps/ via Google Drive MCP.
- Upload to CCHQ:
- Target domain: CRISPR-Connect domain (pre-configured with feature flags and API keys)
- Upload Learn app JSON
- Upload Deliver app JSON
- Build apps on CCHQ — trigger the build process for both apps.
- Publish apps — make them available for mobile deployment.
- Write deployment summary to ACE/<opp-name>/deployment-summary.md:
- App IDs on CCHQ
- Build status
- Published URLs
- Domain and project details
- Write the gate brief to ACE/<opp-name>/gate-briefs/app-deploy.md using the shape defined in agents/ace-orchestrator.md § Gate Brief Contract. See ## Gate Brief below for the exact fields this skill populates.
Gate Brief
The gate brief at ACE/<opp-name>/gate-briefs/app-deploy.md gives the admin a fast read on whether both apps are actually live before Phase 3 starts building Connect opps on top of them.
- Artifact Under Review: path ACE/<opp-name>/deployment-summary.md; summary is Learn + Deliver apps deployed to <domain>
- What to Check (emit these 4 items verbatim):
- Both learn_app_id and deliver_app_id are populated and resolve to built releases on CCHQ (not just drafts)
- The Connectify feature flags (Learn Module, Assessment Score, Deliver Unit, Entity ID) are present on the forms the admin named in the PDD's Learn/Deliver specs
- The published URLs return a CCZ and not a 404 / redirect
- The domain matches the one the PDD's LLO targets can access
- Auto-Surfaced Concerns: one line per item:
- [BLOCKER] if either app's build status is anything other than success (e.g., errored, pending, missing)
- [WARN] if the deploy ran via the Current Workaround (human-assisted upload) rather than the built API — this is expected today but should surface so the admin knows to sanity-check manually
- [INFO] if any non-blocking cosmetic fields are empty (e.g., the short description)
- Recommended Disposition: Approve if both apps built successfully and URLs resolve; Reject if either app failed to build; Approve with caveats if deploy ran through the workaround path
MCP Tools Used
- Google Drive: drive_read_file, drive_create_file
- CommCare: TBD — app upload API or CommCare CLI wrapper
Current Workaround (CommCare app upload not yet automated)
- Read the app JSON/CCZ files from GDrive
- Provide the user with:
- The CRISPR-Connect domain URL
- Instructions to upload each app via the HQ UI
- What settings to verify after upload
- Ask the user to confirm both apps are uploaded and built
- Write the deployment summary with the app IDs the user provides
Mode Behavior
- Auto: Deploy (or guide manual deploy), notify admin group, proceed
- Review: Present deployment summary, wait for verification before proceeding
Dry-Run Behavior
When --dry-run is active:
- Write the intended API calls (app upload, build, publish) and app package references to
comms-log/dry-run-app-deploy.md - Do not upload, build, or publish apps on CCHQ
- State tracks as
dry-run-success
Change Log
| Date | Change | Author |
|------|--------|--------|
| 2026-04-03 | Initial version | ACE team |
| 2026-04-17 | Emit gate brief at ACE/<opp-name>/gate-briefs/app-deploy.md covering build status, Connectify flags, and workaround-path warnings for the Phase 2→3 gate | ACE team (PM scout, internal-admin lens) |
Dependency Matrix
Required Modules
None requiredComponents
Standard package💻 Claude Code Installation
Recommended: Let Claude install automatically. Simply copy and paste the text below to Claude Code.
Please help me install this Skill: Name: app-deploy Download link: https://github.com/jjackson/ace/archive/main.zip#app-deploy Please download this .zip file, extract it, and install it in the .claude/skills/ directory.
Agent Skills Search Helper
Install a tiny helper to your Agent, search and equip skill from 471,000+ vetted skills library on demand.