Agency client handoff
Shared skills, prompts, and tooling for Picsart's gen-ai CLI and generative-AI workflows
npx -y skills add PicsArt/gen-ai-skills --skill agency-client-handoffAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Export a white-label client deliverable as a zip.
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
8.9 KB, as published. Nobody here has run it
Agency client handoff
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.
When to Use
- End of an engagement, client taking work in-house
- Transition to a new agency of record — outgoing handoff
- Completed pitch / campaign — asset package with provenance for the client's DAM
- Contract-mandated "source file" delivery with regeneration rights
- Year-end portfolio snapshot for a long-term retainer client
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.
Prerequisites
Ask the user (one message):
- Client slug + engagement scope — which client, which project or retainer period is being handed off
- Receiving team — in-house creative? Another agency? Which format and tools do they use (Figma, Adobe, CapCut, Notion)?
- Rights status — are all inputs licensed? Any stock, fonts, or reference faces that need redacting or citing?
- Regeneration expectation — does the client need to re-generate assets on their own, or is this a static archive?
- Confidentiality — any internal prompts, competitor references, or tagged metadata that must be stripped before delivery?
- Delivery format — zip + Drive link? Direct to client S3 / DAM? Physical drive?
If the client needs regeneration capability, they'll need the gen-ai CLI themselves — add an install guide to the bundle.
How to Run
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:
- Pin every model ID.
recraftv4→recraftv4@2026-03-15(or the exact ID returned bygen-ai models info). "Latest" will drift and break reproducibility. - Strip internal metadata. Tags like
retainer-week-2026-04-22orpitch-concept-bare internal — not for client eyes. - Include prompts, not just outputs. A prompt library lets the client's in-house team iterate without re-inventing the system.
- Never ship a handoff you haven't cold-tested. Unzip, pick one prompt, regenerate — if the output drifts, something isn't pinned.
Quick Reference
{
"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.
Quick Reference
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.
Procedure
- Reproducibility is the deliverable. If the client can't regenerate without you, the handoff failed — even if the asset folder is beautiful.
- Strip, don't redact. Remove internal tags entirely; the bundle should look native to the client.
- Version the handoff —
handoff-v1/,handoff-v2/. Don't overwrite if an updated bundle is requested later. - Include a sunset date for agency support — clarifies when the client self-serves or re-engages.
- Pin exact model IDs with
gen-ai models info <id> --json— preserves capabilities at handoff time. - Test on a clean machine. Your laptop has tokens, fonts, caches. The bundle has to work without those.
- No lock-in flags. Everything in the bundle runs on a stock
gen-aiinstall. - Ship prompts, brand, and rationale. Context beats artifacts for knowledge transfer.
Pitfalls
- Unpinned models — client regenerates 6 months later, output drifts, blames the agency.
- Internal metadata leakage — competitor refs, pitch-concept tags, reviewer names surviving in prompt files.
- Missing rights documentation — client legal can't sign off on re-use, bundle is DOA.
- Proprietary tools in the regen path — strip to stock
gen-aiCLI only. - No cold test — bundle ships, step 1 of the README fails, urgent Slack follows.
- One-and-done mentality — promise 30 days of Q&A post-handoff, price it in.
Verification
Run gen-ai whoami to confirm authentication, then re-run the failed command with --debug.
Step 1: Inventory and filter
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"
Step 2: Pin models, strip internal data
# 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"
Step 3: Documentation
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>"
Step 4: Package + verify
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.
Cost & time
| 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.
See also
workflows/agency-brand-scoping/—brand-system.json+brand.mdthat 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 client