| name | adobe-codeup-local-sync |
| description | Use when syncing YiChongmimi Adobe add-on work from a local per-project GitHub repo into the local Codeup adobe monorepo without committing or pushing. Covers source/target mapping, pre-sync verification, non-deleting rsync rules, target re-verification, artifact cleanup, and handoff evidence before later Codeup push discussion. |
Adobe Codeup Local Sync
Use this skill when the user wants to align a verified local GitHub Adobe add-on repo into the local Codeup company repo, while explicitly deferring commit and push standards.
This skill owns the pre-push local sync standard only. It does not decide remote push, merge, branch protection, or Codeup permission policy.
Source Model
Treat the local GitHub repo as the temporary personal source and the local Codeup monorepo subdirectory as the company target.
Typical paths on this machine:
GitHub source: /Users/Dario/Documents/Codex/adobe-projects/<project>
Codeup target: /Users/Dario/Documents/Codex/adobe-projects/adobe/<project>
Codeup repo: /Users/Dario/Documents/Codex/adobe-projects/adobe
Before syncing, confirm both paths with real commands:
pwd
git rev-parse --show-toplevel
git remote -v
git status --short
Never assume the current directory is the real repo.
Sync Gate
Do not sync from GitHub source into Codeup target until the GitHub source passes the project-appropriate checks.
For Adobe add-ons, the default minimum gate is:
npm test -- --runTestsByPath <focused-tests> --runInBand
npm run lint:types
npx eslint <changed-or-new-files>
npm run build
npm run package
If a project has no focused tests yet, add focused tests for the business rules touched before syncing when the risk is meaningful. For subscription/credits changes, pair this skill with subscription-credits-guardrails and cover:
- subscribed detection including cancelled-but-not-expired periods
- free user allowed/blocked states
- monthly remaining quota
- monthly-first deduction
- monthly-exhausted fallback to free/purchased credits
canUseLimit() and use() agreement
- unlimited quota behavior when present
Full npm run lint may be recorded as historical non-blocking only when:
- changed-file ESLint passes,
- TypeScript passes,
- build/package pass,
- the full lint failures are clearly pre-existing and unrelated.
Sync Command
Use non-deleting sync by default. Do not remove Codeup-only files unless the user separately approves a delete/reconcile pass.
Default pattern:
rsync -a \
--exclude .git/ \
--exclude node_modules/ \
--exclude dist/ \
--exclude dist.zip \
--exclude .env \
--exclude .env.local \
--exclude '*.zip' \
--exclude '*.pem' \
--exclude '*.key' \
--exclude '*.csr' \
--exclude '*.srl' \
--exclude release/ \
--exclude output/ \
<github-source>/ \
<codeup-target>/
Do not use --delete in the normal local sync stage.
Target Re-Verification
After syncing, run the same meaningful checks in the Codeup target. If the Codeup target has no own node_modules, it is acceptable to temporarily symlink to the already-verified GitHub source dependencies:
ln -s <github-source>/node_modules node_modules
Then rerun:
npm test -- --runTestsByPath <focused-tests> --runInBand
npm run lint:types
npx eslint <changed-or-new-files>
npm run build
npm run package
Verify the package artifact, not only command success:
du -h dist.zip
unzip -p dist.zip manifest.json
For local Adobe runtime smoke tests, use npm start and Adobe Express Test your local add-on. Do not treat direct dist/index.html browser loading as valid runtime proof because the Adobe SDK host can gate rendering.
Cleanup
After verification, remove only artifacts created by this verification run:
rm -rf <codeup-target>/dist <codeup-target>/dist.zip <codeup-target>/node_modules
rm -rf <github-source>/dist <github-source>/dist.zip
Do not remove source files or Codeup-only files. Confirm cleanup:
test -e <codeup-target>/node_modules || echo codeup-node_modules-clean
test -e <codeup-target>/dist || echo codeup-dist-clean
test -e <github-source>/dist || echo github-dist-clean
Evidence To Report
Final local-sync handoff should include:
- GitHub source path and Codeup target path
- whether GitHub source was verified before sync
- exact checks run in GitHub source and Codeup target
- package size and manifest version when packaged
- excluded artifacts and cleanup status
git status --short summary for both repos
- explicit statement: no commit and no push unless the user asked for them
For complex sync work, update or create a concise diagram-first handoff.html in the Codeup repo root.
Push Boundary
Stop after local sync and verification unless the user explicitly asks for commit or push.
When the user later wants GitHub push/PR, switch to adobe-addons-push.
When the user later wants Codeup commit, branch push, merge request, self-merge, or reviewer flow, switch to adobe-codeup-push.
Do not silently stage, commit, or push during this skill.