agentleFS
GoogleKnown publishergoogle/adk-samples/plugins/retail/skills/virtual-tryon/SKILL.md

retail-virtual-tryon

Skill11k starsChanged 44 days agoApache-2.0View on GitHub

Creates virtual try-on agents supporting image and video (catwalk animation) try-ons on Google Cloud (Gemini image models and Veo on Gemini Enterprise Agent Platform). Handles resource setup, user photo uploading, image/video generation pipelines, local testing, and evaluation.

  • Installs packages

1 other project uses a version of this.

Trending

More talk lately.about the whole repository

Dec 2025: 1 mentionJan 2026: 1 mentionFeb 2026: 2 mentionsMar 2026: 0 mentionsApr 2026: 0 mentionsMay 2026: 1 mentionJun 2026: 1 mentionJul 2026: 2 mentionsAug 2026: 0 mentionsSep 2026: 4 mentionsOct 2026: 4 mentionsNov 2026: 0 mentions
Dec 2025Jun 2026Nov 2026
Mentions a month of the google/adk-samples repository that our weekly crawl found. There is no adoption data for this file yet.

Most recently taken up by

Who's talking about google/adk-samples

The biggest 5 of 32 mentions linking to the repository that our crawl found. Each line is their own headline.

See all 32

Talked about on GitHub, Bluesky, Hacker News and Stack Overflow (32 times).

On GitHub · 23

18 more on GitHub

On Bluesky · 4

The file

Show its rules and text

We split this skill into the rules it gives an agent

17 rules. About 0 are common, 12 are distinctive, and 5 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈12

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 5

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Do NOT output the Q-MODE block.

    line 32
  2. Distinctive:

    Do NOT ask about products, industry, GCP project, or anything else first.

    line 38
  3. Distinctive:

    Do NOT propose a plan. Do NOT explain what you will do.

    line 39
  4. Distinctive:

    Q-MODE first, always: No exceptions. No preamble.

    line 56
  5. Distinctive:

    Execute steps in order: Do NOT jump ahead or skip steps.

    line 61
  6. Distinctive:

    Verify each step succeeded: before moving to the next.

    line 62
  7. Very specific:

    After the interview, run .venv/bin/python "$SKILL_DIR/scripts/setup.py" --config ./design-spec.md (see the Workspace Setup section to …

    line 64
  8. Distinctive:

    Run this as ONE shell command -- splitting it across tool calls loses state:

    line 85
  9. Very specific:

    All scripts run from the install dir against the workspace config.

    line 98
  10. Distinctive:

    After collecting these answers, do this automatically:

    line 141
  11. Very specific:

    Write the answers to ./design-spec.md (in the workspace), filling in:

    line 143
  12. Very specific:

    Run GCS sync verification: .venv/bin/python "$SKILL_DIR/scripts/setup_tryon.py" --config ./design-spec.md

    line 189
  13. Distinctive:

    Do NOT use for furniture/home styling (use room placement tools), or complex 3D avatar creation.

    line 215
  14. Distinctive:

    Run a quick test script without the UI:

    line 256
  15. Distinctive:

    Verify outputs using the local evaluation YAML.

    line 276
  16. Distinctive:

    Start the FastAPI local server:

    line 282
  17. Very specific:

    Image Models: Use flash (recommended) or pro for general try-on.

    line 293

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Virtual Try-On Agent

Creates virtual try-on (VTO) agents on Google Cloud supporting image and video (catwalk animation) try-on modes.

STOP -- READ THIS BEFORE RESPONDING

Check your operating mode first — there are two distinct modes:

Mode A: Deployed Try-On Agent

If the system context tells you that setup is complete (e.g. it says "You are a DEPLOYED try-on agent", or the conversation history shows setup has already been completed) — skip Q-MODE entirely. Respond directly to the user's try-on query. Do NOT output the Q-MODE block. Do NOT mention setup.

Mode B: First-time Setup (default)

If there is no such context (fresh invocation, no prior setup) — your VERY FIRST response MUST be the Q-MODE block below. Nothing else.

Do NOT ask about products, industry, GCP project, or anything else first. Do NOT propose a plan. Do NOT explain what you will do.

Your first message to the user must be EXACTLY this (copy-paste, no changes):

[skill: retail-virtual-tryon] active.
Q-MODE: Pick a setup mode? [default: 1]
  1. Quick start -- Local testing sandbox, interactive 6-question config, ~90s. Best for demos.
  2. Export Web App & GCS Catalog Sync -- Generate standalone containerized codebase, GCS catalog sync, and Cloud Run config, ~3 min.

Then STOP and wait for the user's answer.

Accept: 1, quick, empty/Enter (= Quick Start), 2, export, sync or webapp (= Export Web App & GCS Catalog Sync).

Execution Rules

  1. Q-MODE first, always. No exceptions. No preamble.
    • CRITICAL WARNING: Do NOT automatically run setup or deployment scripts (e.g. setup_tryon.py, export_app.py, deploy_cloudrun.sh) upon receiving a general request like "I want to create/deploy a VTO app on GCP". You MUST first present the Q-MODE setup menu choice and wait for the user to select Mode 1, 2, or 3.
  2. One question at a time. Show the default. Accept empty input. Format: Q: <question text>? [default: <value>] Pressing Enter = use the default. NEVER ask multiple questions in one turn.
  3. Execute steps in order. Do NOT jump ahead or skip steps.
  4. Verify each step succeeded before moving to the next.
  5. Save all answers to ./design-spec.md (in the workspace) as you collect them. After the interview, run .venv/bin/python "$SKILL_DIR/scripts/setup.py" --config ./design-spec.md (see the Workspace Setup section to resolve $SKILL_DIR).
  6. Confirm completion of each step before proceeding.

Before Quick Start has launched setup, the user can say "export", "webapp", or "deploy" to switch to Mode 2 (Export Web App & GCS Catalog Sync). Carry over answers already given for project, mode, and region; ask only the remaining Mode-2 questions (GCS catalog bucket, export directory). After setup.py has already started buckets/APIs, the workflow is committed -- to run Mode 2 instead, start a fresh workspace.

Workspace Setup

The skill has two locations:

  • Install dir -- where SKILL.md and scripts live (varies by host)
  • Workspace -- the agent's cwd; design-spec.md, .venv, and per-run state live here

By the end of this section the workspace must have .venv/ (with the skill installed editable), design-spec.md, and SKILL_DIR exported in the shell.

Run this as ONE shell command -- splitting it across tool calls loses state:

SKILL_DIR=$(for d in ~/.claude/skills ~/.agents/skills ~/.gemini/skills ~/.cursor/skills; do
  [ -f "$d/retail-virtual-tryon/SKILL.md" ] && echo "$d/retail-virtual-tryon" && break
done)
bash "$SKILL_DIR/scripts/bootstrap.sh"

bootstrap.sh finds a Python 3.11+ interpreter (with absolute-path fallback for sandboxed shells), creates .venv, installs the skill editable, and copies design-spec.md into the workspace.

All scripts run from the install dir against the workspace config. Use .venv/bin/python, not bare python -- bare python may resolve to a Python without the skill's editable install on sys.path.

.venv/bin/python "$SKILL_DIR/scripts/setup.py" --config ./design-spec.md

Edit ./design-spec.md and set gcp_project_id (the agent will do this based on the user's answers in Q-MODE).

Mode 1: Quick start (4-5 questions)

QQuestionDefaultSource
Q-AGCP project ID?$GOOGLE_CLOUD_PROJECT or gcloud config get-value projectenv / gcloud
Q-BTry-on mode?2 (both Image + Veo Video)prompt
Q-CGCP Region?us-west1prompt
Q-DCatalog Path?demo (type 'demo' to use bundled catalog, or specify local folder, or gs:// URI)prompt
Q-EUpload local catalog to GCS? (Only asked if Q-D is a custom local folder)1 (Yes)prompt

Question Formats & Accepted Choices:

  • Q-B: Try-on mode? Format to print:
    Q: Try-on mode? [default: 2]
      1. image_only (Faster, static images only)
      2. image_and_video (Catwalk video animations via Veo)
    Accept: 1 (= image_only), 2 (= image_and_video), image_only, image_and_video.
  • Q-D: Catalog Path? Accept: demo (uses bundled catalog), local directory path, or GCS URI starting with gs://.
  • Q-E: Upload local catalog to GCS? Format to print:
    Q: Upload local catalog to GCS? [default: 1]
      1. Yes (Sync and host catalog in GCS)
      2. No (Run locally using local folder assets)
    Accept: 1 (= Yes), 2 (= No), Yes, No.

After collecting these answers, do this automatically:

  1. Write the answers to ./design-spec.md (in the workspace), filling in:
    • gcp_project_id
    • tryon_mode
    • tryon_model (always use flash)
    • tryon_output_bucket (default: {project_id}-tryon-output)
    • tryon_upload_bucket (default: {project_id}-tryon-uploads)
    • gcp_region
    • tryon_catalog_path
    • tryon_catalog_upload (set to true by default, set to false only if Q-E is answered as No)
  2. Tell the user: "Setting up local sandbox environment resources..."
  3. Run: .venv/bin/python "$SKILL_DIR/scripts/setup.py" --config ./design-spec.md
  4. Stream the output. On success, start the local sandbox server in the background: .venv/bin/python "$SKILL_DIR/scripts/start_sandbox.py" --config ./design-spec.md
  5. Provide the user with the clickable localhost link to test: "VTO fitting room sandbox is running! Open http://localhost:8080 in your browser to test it."

Mode 2: Export Web App & GCS Catalog Sync (4 questions)

QQuestionDefaultSource
Q2-AGCP project ID?$GOOGLE_CLOUD_PROJECT or gcloud config get-value projectenv / gcloud
Q2-BTry-on mode?2 (both Image + Veo Video)prompt
Q2-CGCS Catalog Bucket name?{project_id}-tryon-catalogprompt
Q2-DTarget Directory to export code?./vto-retail-appprompt

Question Formats & Accepted Choices:

  • Q2-B: Try-on mode? Format to print:
    Q: Try-on mode? [default: 2]
      1. image_only (Faster, static images only)
      2. image_and_video (Catwalk video animations via Veo)
    Accept: 1 (= image_only), 2 (= image_and_video), image_only, image_and_video.

After collecting these answers, do this automatically:

  1. Write the answers to ./design-spec.md (in the workspace), filling in:
    • gcp_project_id
    • tryon_mode
    • gcs_catalog_bucket (starts with gs://...)
    • export_directory
    • gcp_region (default: us-west1)
    • tryon_model (always use gemini-2.5-flash-image)
  2. Tell the user: "Setting up Cloud resources, exporting containerized codebase, and deploying to Google Cloud Run..."
  3. Run: .venv/bin/python "$SKILL_DIR/scripts/export_app.py" --config ./design-spec.md --skill-dir "$SKILL_DIR"
  4. Run GCS sync verification: .venv/bin/python "$SKILL_DIR/scripts/setup_tryon.py" --config ./design-spec.md
  5. Build and Deploy container to Google Cloud Run: gcloud run deploy vto-retail-app --source ./vto-retail-app/ --region us-west1 --project {gcp_project_id} --allow-unauthenticated
  6. Get the deployed service URL: gcloud run services describe vto-retail-app --region us-west1 --project {gcp_project_id} --format="value(status.url)"
  7. Output the following structured instructions to the user:
    • Clickable Cloud Run service link: "🚀 VTO App is deployed and running on Cloud Run! Open [Cloud Run App URL] in your browser to test it directly."
    • How to Sync Catalog Images to GCS:
      gsutil -m rsync -r ./my_clothes/ gs://{gcs_catalog_bucket}/
      # Then force index refresh:
      curl -X GET "https://{cloud_run_url}/api/catalog?force=true"
    • How to Embed in Your Website:
      <!-- Place this iframe widget on your product details page -->
      <iframe src="https://{cloud_run_url}" width="100%" height="800px" style="border:none; border-radius:12px; box-shadow: 0 4px 20px rgba(0,0,0,0.15);"></iframe>

When to Use

  • Building virtual try-on fitting rooms for e-commerce.
  • Creating interactive catwalk-style video animations showing how clothes look when walking.
  • Enabling general retail try-on for accessories, jewelry, eyewear, or clothes.

Do NOT use for furniture/home styling (use room placement tools), or complex 3D avatar creation.

Resource Setup

Set the parameters in ./design-spec.md (in the workspace), then run:

.venv/bin/python "$SKILL_DIR/scripts/setup.py" --config ./design-spec.md

On success, local sample catalog images will be generated under ./catalog_images/ (unless a GCS bucket or custom catalog path was specified, in which case bucket access will be verified).

Testing & Verification

Set the required environment variables in the shell that runs the agent:

export GOOGLE_CLOUD_PROJECT="<your-project-id>"
export TRYON_OUTPUT_BUCKET="<your-project-id>-tryon-output"
export TRYON_UPLOAD_BUCKET="<your-project-id>-tryon-uploads"
export GEMINI_IMAGE_MODEL="flash"  # or pro / gemini-2.5-flash-image / gemini-2.5-pro-image

Run using adk web

Launch the interactive web UI. Use .venv/bin/adk, not bare adk -- bare adk may resolve to a global Python (pyenv, brew, etc.) whose ADK can't find the skill and reports an empty app list (UI loads, but /list-apps returns [] and queries time out).

.venv/bin/adk web .

You can start a chat session and test VTO by providing:

  • Product ID: shirt_001 or sunglasses_001
  • User Photo: Upload catalog_images/sample_user.jpg or any photo of yourself.
  • Request: "Try on this shirt for me" or "Show me a catwalk video wearing these sunglasses".

Direct Python Smoke Test

Run a quick test script without the UI:

# Test image try-on
.venv/bin/python -c "
from scripts.tryon_agent import try_on_product_image
res = try_on_product_image('shirt_001', 'catalog_images/sample_user.jpg', 'catalog_images/shirt_001.jpg', 'clothing', 'red shirt')
print(res)
"

# Test video try-on (Veo)
.venv/bin/python -c "
from scripts.tryon_agent import try_on_product_video
res = try_on_product_video('sunglasses_001', 'catalog_images/sample_user.jpg', 'catalog_images/sunglasses_001.jpg', 'eyewear', 'sunglasses')
print(res)
"

Evaluation

Verify outputs using the local evaluation YAML. Ensure image consistency, correct garment placement, and no visual distortions.

Sandbox Visual Testing

To test the VTO skill interactively with your own catalog of product images, launch the Sandbox Dashboard:

  1. Start the FastAPI local server:
    .venv/bin/python "$SKILL_DIR/scripts/start_sandbox.py" --config ./design-spec.md
  2. Open http://localhost:8080 in your browser.
  3. Upload your own portrait photo, select any product card from the scanned catalog, and click Generate Try-On Image.
  4. To index a custom local folder of images, type the folder path in the search header input and click Scan (uses Gemini to automatically catalog and describe them).

Gotchas

  • Veo video resolution/duration: Video generation via Veo takes ~30-60s. Be patient.
  • Image Models: Use flash (recommended) or pro for general try-on.
  • Privacy Compliance: ephemerally upload user photos into the uploads bucket with a 24-hour Lifecycle auto-delete rule (configured automatically by setup_tryon.py).

Troubleshooting

Error patternLikely causeFix
BILLING_DISABLEDGCP project has no billingLink billing account in Cloud Console
API has not been used / disabledRequired API disabledRun: gcloud services enable aiplatform.googleapis.com storage.googleapis.com
PermissionDenied on GCSService Account lack rightsGrant roles/storage.admin
MethodNotImplemented: 501 / Model not foundSelected model is unavailable in regionCheck your GCP project region availability

Completion Checklist

  • GCP project ID and try-on mode configured.
  • GCP resources provisioned and verified (Buckets, Gemini Enterprise Agent Platform APIs).
  • Sample catalog generated.
  • Smoke tests for image try-on succeed.
  • Catwalk video generation using Veo verified.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.