Install
$ agentstack add skill-mikefluff-skills-avatar-maker ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Headshot / profile-pic / avatar generator. Input: user photo (REQUIRED) + optional style + optional aspect set. Output: N variant images at chosen aspects, each preserving the original face while applying the style's palette / lighting / composition.
Distinct from flyer-maker / carousel-builder:
- Single subject focus (the face). No event details, no narrative split, no embedded text.
- Identity preserve is the PRIMARY constraint — model picker defaults to nano-banana-pro.
- Multi-variant within an aspect is the common case (give user 3 takes per aspect, pick the best).
This skill does NOT:
- Generate avatars from text alone —
--photois required (useimage-promptfor text-only portrait generation). - Render text overlays (name / handle / title) — avatars are visual only. Add text in your design tool if needed.
- Touch-up / retouch existing photos at the pixel level — the model regenerates the subject in a new style.
- Generate animal mascots / cartoon avatars without a photo reference — see
image-promptfor that. - Handle multi-person group photos — single subject only; the model picks one face if given a group.
ROLE
Read user photo + optional style preference → pick a ref-capable identity-preserving model → assemble per-aspect prompts emphasizing identity preserve + style anchor → batch execute → save N variants per aspect → print paths.
PIPELINE
- Resolve photo (required):
--photo: local file or remote URL.- Should be a clean front-facing portrait at ≥800px on the short edge for best results.
- Resolve style:
--style auto: picks photoreal-friendly styles from carousel library (kinfolk-minimal, photo-editorial-bw, gradient-mesh-modern, dark-academia, …) — avoids illustration / 3D styles where identity gets lost.--style: explicit library entry. Uses theStyle anchor (carousel)block.--style-mod "": tweak.
- Pick model:
--model auto: defaults tonano-banana-pro(best identity preserve).- If identity preserve isn't the priority (style transfer first) →
flux-2-proorseedream-5. - If embedded brand colors / typography needed →
ideogram-3(rare for avatars). --model: override.- ONE model across all aspects + variants.
- Build per-aspect prompts:
```
Portrait of the person from the reference image. Preserve identity: face shape, age, ethnicity, hair, distinguishing features. Apply the style's palette, lighting, and composition to the surrounding environment / clothing texture / background — but the face stays recognizably the same person.
Framing: Aspect ratio: Size: ```
- Estimate cost + confirm —
aspects × variants × per-image cost. Default 1 aspect × 3 variants × $0.05 = $0.15. Under budget.
- Batch execute —
common.runners.batch.run_batch(). Parallelism 3.
- Output:
`` ./generated/avatar// square-v1.png ... square-v.png (1080×1080) cover-v1.png ... cover-v.png (1080×1350, if requested) story-v1.png ... story-v.png (1080×1920, if requested) manifest.json style-used.md prompts.md ``
MODES
Required
avatar-maker --photo
Style
--style auto|— visual style (default: auto, picks photoreal-friendly)--style-mod ""— tweak the anchor
Aspect + variants
--aspects square,square-tight,cover,story— comma list (default:square)--variants N— variants per aspect (default 3 — sweet spot for picking the best)--slug— output directory slug (default: derived from photo filename)
Execution
--model auto|— image provider (defaultnano-banana-pro)--execute— actually generate (else returns prompts)--output— custom output dir--parallelism N— concurrent API calls (default 3)--yes— skip cost confirmation--resume— retry failed variants--prompts-only— dry run, save prompts.md, exit--cost-only— print total cost, exit--strict— exit if--modelcan't handle photo refs
REFERENCES (load on demand)
| File | When to load | |---|---| | [references/model-picker.md](references/model-picker.md) | Step 3 — identity-preserve model comparison, when to pick which | | [references/aspect-presets.md](references/aspect-presets.md) | Step 4 — aspect dimensions, framing conventions per platform (LinkedIn / Twitter / IG / Cover banners) | | [references/troubleshoot.md](references/troubleshoot.md) | When face doesn't look like the original / style overpowers identity / variants look identical |
EXAMPLES
See [examples/before-after.md](examples/before-after.md) — 3 calibration runs: founder headshot for LinkedIn (kinfolk-minimal, 3 variants), photo-editorial B&W portrait set, multi-aspect avatar set for someone setting up new social accounts (square + cover-banner + story).
CONSTRAINTS
- Identity preserve is paramount. Nano Banana Pro is the safest pick. If
--modelis overridden and identity gets lost, the troubleshoot reference covers fixes.
- Use a clean source photo. ≥800px on the short edge. Front-facing or 3/4. Even lighting. Avoid heavy shadow / backlight / partial occlusion.
- No mid-image text. Avatars are visual-only. Don't add
--titleor similar.
- Default 3 variants per aspect. Models produce stochastic variation — 3 takes lets the user pick the best. Past 5, diminishing returns.
- One model across the run. Mixing providers breaks consistency.
- One style across the run. Same anchor across all aspects + variants.
- Photoreal-friendly styles win. Carousel library has illustration / 3D / abstract styles (
flat-vector-illustration,low-poly-3d,paper-cutout-craft) — these LOSE identity.--style autofilters them out. If explicitly chosen, the result will look more like "a person in that style" than "this specific person".
- Cost confirm ONCE per batch. Sum across aspects × variants.
- Output slug derived from photo filename by default. Override via
--slugor--output.
- Manifest updates after every variant.
--resumeretries failed only.
- Photo can be local or URL. Provider routes accordingly.
- Never print API keys. Mask in errors.
- Output dir is
./generated/avatar//by default.
INVOCATION HINTS
When the user says any of:
- "make me an avatar / profile pic from this photo"
- "headshot variants", "portrait variants"
- "LinkedIn profile picture", "Twitter profile pic", "Instagram avatar"
- "professional headshot", "business portrait"
- "branded avatar set" (variants in different aspects for cross-platform consistency)
- "сделай аватарку / портрет / хедшот"
- "профиль для LinkedIn / Twitter / IG"
- "аватарка с моей фоткой"
Defaults: --aspects square --variants 3 --style auto --model nano-banana-pro. Without --execute, returns prompts; with --execute, generates.
If the user mentions LinkedIn → emphasize --aspects square (LinkedIn profile is 1:1 + a 4:1 cover-banner area; the cover aspect is closer to LinkedIn cover banner).
If the user mentions cross-platform: --aspects square,square-tight,cover gives them 1:1 for most + a tighter crop for small profile thumbs + a cover banner.
This skill is distinct from:
flyer-maker— that's events with embedded text; this is identity-preserved portraitsimage-prompt— that's any image; this is specifically photo-input → variant portraitscarousel-builder— that's narrative slides; this is variants of one subject
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: Mikefluff
- Source: Mikefluff/skills
- License: MIT
- Homepage: https://www.npmjs.com/package/@mikefluff/skills
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.