When an agency engagement wraps and the client's taking work in-house or handing off to the next shop, this packages everything they need to regenerate your outputs without calling you back. It pulls assets, strips internal tags and competitor references, pins every model to an exact version ID so regeneration doesn't drift six months later, and bundles prompts with rights documentation into a white-label zip. The cold test step is smart: extract on a clean machine and try regenerating one asset before delivery. Built by Picsart for agencies doing AI creative work where reproducibility matters more than lock-in. If you've ever shipped a "final" folder only to field panicked Slack messages when the client couldn't recreate the outputs, this is that problem solved.
npx -y skills add PicsArt/gen-ai-skills --skill agency-client-handoff --agent claude-codeInstalls into .claude/skills of the current project.
Package a completed engagement for transfer to the client's in-house team, DAM, or next agency — with the asset set, prompt library, model pins, rights documentation, and everything else the receiving team needs to regenerate consistent work without you in the loop.
Engagement done → reproducible handoff bundle. Knowledge transfer over lock-in: the receiving team should be able to keep the brand on-model without calling the agency back.
Do not use for work-in-progress reviews (use Drive links), approvals (use proof PDFs), or internal archival (use your agency's backup). Handoff is the formal, client-owned, reproducible bundle.
Ask the user (one message):
If the client needs regeneration capability, they'll need the gen-ai CLI themselves — add an install guide to the bundle.
1. INVENTORY → pull every asset + results.json from clients/<slug>/ across the engagement
2. FILTER → exclude drafts, rejected variants, internal-only WIP
3. STRIP → white-label: remove agency tags, internal prompt notes, competitor refs
4. PIN MODELS → lock every prompt's model to an exact ID + version (not "latest")
5. DOCUMENT → generate README, RIGHTS.md, CHANGELOG, prompt library
6. PACKAGE → zip with consistent folder structure + naming
7. VERIFY → extract and cold-test: can a fresh machine regenerate one asset?
8. DELIVER → upload to client destination, share link, brief the receiving team
Rules:
recraftv4 → recraftv4@2026-03-15 (or the exact ID returned by gen-ai models info). "Latest" will drift and break reproducibility.retainer-week-2026-04-22 or pitch-concept-b are internal — not for client eyes.{
"handoff_kind": "client-final",
"client_slug": "acme-fintech",
"engagement": "2025-Q3 to 2026-Q2 retainer",
"delivered_at": "2026-04-22",
"brand_system": "docs/brand-system.json",
"brand_rules": "docs/brand.md",
"pinned_models": "docs/model-pins.json",
"assets_count": 247,
"prompts_count": 54,
"rights_status": "all generated, no licensed stock",
"regeneration_supported": true,
"support_window_days": 30
}
Include this as docs/handoff-manifest.json — a single file that tells the receiving team what they got and what they can do with it.
Handoffs don't generate new assets — they package existing ones. But for reproducibility checks:
| Task | Model | Notes |
|---|---|---|
| Dry-run regeneration test (cheapest) | gemini-3.1-flash-image | Use to verify payload validity, not output quality |
| Full regeneration proof (one asset) | Same as original, pinned | Matches the original bundle; compare outputs visually |
| Re-export at higher resolution | topaz-upscale-image | If the client DAM wants 4K versions |
Never substitute a newer model for the pinned one during handoff — the whole point is that the client can reproduce the agency's output exactly.
handoff-v1/, handoff-v2/. Don't overwrite if an updated bundle is requested later.gen-ai models info <id> --json — preserves capabilities at handoff time.gen-ai install.gen-ai CLI only.Run gen-ai whoami to confirm authentication, then re-run the failed command with --debug.
CLIENT="acme-fintech"
HANDOFF="handoff/$CLIENT-$(date +%Y-%m-%d)"
mkdir -p "$HANDOFF"/{assets,prompts,source,docs}
find "clients/$CLIENT" -name "results.json" -exec cp {} "$HANDOFF/source/" \;
cp -r "clients/$CLIENT/deliverables/"* "$HANDOFF/assets/"
node scripts/extract-prompts.js "$HANDOFF/source/" > "$HANDOFF/prompts/prompt-library.json"
# Get pinned model IDs for every model the engagement used
for model in $(jq -r '.jobs[].model' "$HANDOFF/source/"*.json | sort -u); do
gen-ai models info "$model" --json >> "$HANDOFF/docs/model-pins.json"
done
# Strip internal tags from the prompt library
jq 'del(.jobs[].tags[] | select(startswith("internal-") or startswith("retainer-")))' \
"$HANDOFF/prompts/prompt-library.json" > "$HANDOFF/prompts/prompt-library.clean.json"
mv "$HANDOFF/prompts/prompt-library.clean.json" "$HANDOFF/prompts/prompt-library.json"
Generate a README.md covering: folder walkthrough, regeneration steps (CLI install + one worked example), pinned model note, rights status, support contact + sunset date. Include docs/brand-system.json, docs/brand.md, docs/model-pins.json, docs/RIGHTS.md, docs/CHANGELOG.md.
Minimum regeneration steps to include in the README:
1. Install CLI: curl -fsSL https://picsart.com/gen-ai-cli/install.sh | bash
2. gen-ai login
3. Pick a prompt from prompts/prompt-library.json
4. gen-ai generate -m <pinned-model-id> -p "<prompt>"
cd handoff
zip -r "$CLIENT-handoff-$(date +%Y-%m-%d).zip" "$CLIENT-$(date +%Y-%m-%d)/" \
-x "*.DS_Store" "*/.git/*"
# Cold test — extract to a clean dir, regenerate one asset
tmpdir=$(mktemp -d) && unzip -q "$CLIENT-handoff-$(date +%Y-%m-%d).zip" -d "$tmpdir"
cd "$tmpdir/$CLIENT-$(date +%Y-%m-%d)"
SAMPLE_PROMPT=$(jq -r '.jobs[0].prompt' prompts/prompt-library.json)
SAMPLE_MODEL=$(jq -r '.jobs[0].model' prompts/prompt-library.json)
gen-ai generate -m "$SAMPLE_MODEL" -p "$SAMPLE_PROMPT" --dry-run --debug
# Dry-run validates = bundle is regeneration-ready.
| Phase | Spend | Time |
|---|---|---|
| Inventory + filter + strip | $0 | 1-2 hrs |
| Documentation (README, RIGHTS, CHANGELOG) | $0 | 1-2 hrs |
| Cold-test regeneration (1-2 assets) | ~$0.50 | 15 min |
| Total handoff | <$1 | ~4 hrs |
The real cost is time, not credits. Budget a half-day per handoff; cutting corners creates support calls for months after.
workflows/agency-brand-scoping/ — brand-system.json + brand.md that ship in the handoffworkflows/agency-multi-brand-pack/ — source of per-client results.json archiveworkflows/agency-pitch-mockups/ — pitch bundles that become part of the final handoffgen-ai-use.md — regeneration reference for the clientsickn33/antigravity-awesome-skills
moizibnyousaf/ai-agent-skills
github/awesome-copilot