Avatar location
Create a new LOCATION (a look) for an existing avatar — keep its IDENTITY (face, gestures, cloned voice, talking_profile) but vary the LOOK: wardrobe + environment + light, optionally incorporating asset references (a logo on a shirt/jacket, a prop in the scene). Generates an identity-anchored hero still + camera angles under <avatar>/locations/<loc>/, selectable later per reel and per scene by avatar-reel-composer, so one avatar can appear in many looks without re-making it. The avatar's DEFAULT location is just what exists today (top-level scene.json + angles/) and is untouched. Use when the user wants to "dress" an avatar differently, put it in another setting/room, give it a wardrobe/scene variant, add a branded outfit (logo on the shirt) or a prop, create reel looks, or asks for avatar locations / outfits / wardrobes / environments / "otro ambiente" / "otra ropa" for an avatar.From its SKILL.md
npx -y skills add puntorigen/avatar-skills --skill avatar-locationAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 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.
SKILL.md
6.2 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it
avatar-location
Give one avatar multiple looks. A location = wardrobe + environment + light
bundled together, on the same subject (identity). It reuses the avatar's existing
identity (face, gestures, cloned voice, talking_profile) and only re-dresses /
re-rooms it, producing a new identity-anchored hero + camera angles. Reels then pick a
look per-reel and/or per-scene via avatar-reel-composer's location field.
The avatar's default location is what exists today — the top-level
scene.json+angles/. It is never modified; locations are purely additive underlocations/<loc>/.
When to use
- "Dress the avatar differently" / "put them in another room/setting" / "otra ropa, otro ambiente".
- A branded outfit (stamp a logo on the shirt) or a prop in the scene → use
--asset. - Build several reel looks for the same person; cut between looks within a reel.
Setup
Keys are inherited from sibling skills (Replicate for gpt-image-2; Gemini only for
--generator gemini). Check with scripts/setup_key.py --show. Install deps once:
pip3 install -r scripts/requirements.txt. Requires an existing avatar with a
scene.json (a subject) and an identity anchor (refs/<slug>_hero_master.png, as
produced by avatar-invent or create_avatar.py).
Workflow (idempotent stage machine — mirrors avatar-invent)
scripts/create_location.py <avatar-dir> <loc-name> runs: author → hero → angles →
record, resuming where it left off. It pauses once after author for a review
checkpoint before any paid generation (skip with --no-review).
# 1) Author + review: seed the LOOK (subject is copied from the avatar; you edit
# wardrobe/scene/light). Stops for review before spending.
python3 ~/.cursor/skills/avatar-location/scripts/create_location.py nora studio_night \
--setting studio \
--brief "evening content studio, moody teal key light, black turtleneck"
# ...edit nora/locations/studio_night/scene.json (wardrobe/scene/light/assets), then:
# 2) Re-run to generate the identity-anchored hero + angles (PAID: ~1 hero + ~5 angles).
python3 ~/.cursor/skills/avatar-location/scripts/create_location.py nora studio_night
# Inspect looks (default + locations):
python3 ~/.cursor/skills/avatar-location/scripts/list_locations.py nora
# 3) Use it in a reel (avatar-reel-composer storyboard):
# top-level "location": "studio_night" (reel default look)
# or per scene "location": "studio_night" (override one scene)
Asset references (logo / prop)
Pass an image to stamp/place, with a placement instruction. Assets are copied into
locations/<loc>/assets/, recorded in the look's scene.json assets[], and attached
as gpt-image-2 references to both the hero and the angles (so the logo/prop stays
crisp and consistent across angle re-renders):
python3 ~/.cursor/skills/avatar-location/scripts/create_location.py doki-monster brand_tee \
--asset doki-monster/brand/logo-primary.png \
--asset-placement "printed large and centered on the chest of the white t-shirt" \
--setting studio --no-review
Repeat --asset/--asset-placement (paired by order) for multiple assets. Keep it to
~1–2 assets so gpt-image-2 doesn't drop the identity anchor.
Seeding the look
The author stage fills wardrobe/scene/light, falling back to the avatar's own look
so every field is non-empty (a valid no-op even with --no-review). Sources, in order
of specificity: explicit --wardrobe/--scene/--light > --brief (free text, seeded
into the setting; refine at the checkpoint) > --setting <keyword> (reuses avatar-invent
presets: office/home/studio/street/outdoors/kitchen/cafe/gym/clinic). --from-image PATH
saves a look reference that's attached to the hero generation.
Cheap validation (no spend)
generate_hero.py --print-prompt/generate_angles.py --print-promptshow the prompts.- Scout angles at
--quality low, then re-run athighfor finals (--force-stage angles). compose_reel.py <storyboard with location> --dry-runprints the resolved angle per talking-head scene (with@ <loc>), confirming the look before any generation.
Key flags
--name, --style (default: avatar's), -ar/--aspect-ratio, --generator,
--quality {low,medium,high,auto}, --moves a,b,c (default: presets), --no-review,
--force-stage {hero,angles}, --status.
Output (under <avatar>/locations/<loc>/)
location.json # record: name, brief, source, status, style, look, assets, angles
scene.json # subject (copied) + NEW wardrobe/scene/light (+ assets[])
assets/ # copies of the asset refs (logo.png, prop.png, ...)
refs/<slug>__<loc>_hero.png (+ _hero_master.png[, look_reference.*])
angles/<slug>__<loc>_<move>_916.png
Also merges a locations registry into <avatar>/avatar.json (additive; preserved when
invent_avatar.py is re-run). <slug> = <avatar>__<loc>.
See REFERENCE.md for the data model, stage details and gotchas.
Reuses (does not duplicate)
avatar-invent/scripts/generate_hero.py—--anchor-identity --ref <hero_master> [--ref <asset>…].avatar-camera-angles/scripts/generate_angles.py—--ref <location hero> [--ref <asset>…].avatar-reel-composerconsumes a location via the storyboardlocationfield.
What ships with it: 6 files
42.1 KB alongside SKILL.md, 4 of them executable
scripts/
- _common.pyruns7.9 KB
- create_location.pyruns21.3 KB
- list_locations.pyruns3.7 KB
- requirements.txt443 B
- setup_key.pyruns2.1 KB
- REFERENCE.md6.7 KB