layers/skills/selfie/SKILL.md
# Selfie Skill — Expression Generate selfie images using xAI's Grok Imagine model and optionally send them to messaging platforms via OpenClaw. Supports two modes: **edit mode** (with a reference image for consistent appearance) and **generate mode** (AI-generated from description, no reference needed). ## When to Use - User says "send a selfie", "send me a pic", "take a photo", "show me a photo" - User says "send a pic of you...", "send a selfie of you..." - User asks "what are you doing?",
npx skillsauth add acnlabs/openpersona layers/skills/selfieInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Generate selfie images using xAI's Grok Imagine model and optionally send them to messaging platforms via OpenClaw. Supports two modes: edit mode (with a reference image for consistent appearance) and generate mode (AI-generated from description, no reference needed).
Check for a reference image in this order:
assets/reference/avatar.png (relative to your skill pack root)referenceImage URL from persona.jsonIf a reference image exists → use Edit Mode (consistent appearance based on reference) If no reference image → use Generate Mode (AI creates from persona description)
| Keywords in User Request | Style | Best For | |--------------------------|-------|----------| | outfit, wearing, clothes, dress, suit, fashion, full-body, mirror | mirror | Full-body shots, outfit showcases | | cafe, restaurant, beach, park, city, sunset, night, street | direct | Close-up portraits, location shots | | close-up, portrait, face, eyes, smile | direct | Emotional expressions | | (default when no keyword matches) | mirror | General selfie |
Mirror style:
make a pic of this person, but [user's context]. the person is taking a mirror selfie
Direct style:
a close-up selfie taken by herself at [user's context], direct eye contact with the camera, looking straight into the lens, eyes centered and clearly visible, not a mirror selfie, phone held at arm's length, face fully visible
Build a prompt using the persona's physical description from persona.json. Include:
Mirror style:
a 22-year-old girl with [persona's visual traits], [user's context], taking a mirror selfie, casual and natural pose, warm lighting, phone visible in reflection, realistic photo style
Direct style:
a close-up selfie of a 22-year-old girl with [persona's visual traits] at [user's context], direct eye contact with camera, natural smile, phone held at arm's length, warm natural lighting, realistic photo style
Tip: Read the persona's background and vibe to inform visual traits. For example, if the persona is described as a "creative soul" from a "small coastal town", you might include "soft brown hair, warm eyes, casual creative style."
JSON_PAYLOAD=$(jq -n \
--arg image_url "$REFERENCE_IMAGE" \
--arg prompt "$EDIT_PROMPT" \
'{image_url: $image_url, prompt: $prompt, num_images: 1, output_format: "jpeg"}')
curl -s -X POST "https://fal.run/xai/grok-imagine-image/edit" \
-H "Authorization: Key $FAL_KEY" \
-H "Content-Type: application/json" \
-d "$JSON_PAYLOAD"
JSON_PAYLOAD=$(jq -n \
--arg prompt "$GENERATE_PROMPT" \
'{prompt: $prompt, num_images: 1, output_format: "jpeg"}')
curl -s -X POST "https://fal.run/xai/grok-imagine-image" \
-H "Authorization: Key $FAL_KEY" \
-H "Content-Type: application/json" \
-d "$JSON_PAYLOAD"
Or use scripts/generate-image.sh:
# Edit mode (with reference)
scripts/generate-image.sh "$REFERENCE_IMAGE" "$USER_CONTEXT" "$MODE" "$CHANNEL" "$CAPTION"
# Generate mode (without reference — pass "none" as reference)
scripts/generate-image.sh "none" "$USER_CONTEXT" "$MODE" "$CHANNEL" "$CAPTION"
Response format (both modes):
{
"images": [{ "url": "https://v3b.fal.media/files/...", "content_type": "image/jpeg" }]
}
# Via OpenClaw CLI
openclaw message send --action send --channel "$CHANNEL" --message "$CAPTION" --media "$IMAGE_URL"
# Or via gateway API
curl -s -X POST "http://localhost:18789/message" \
-H "Authorization: Bearer $OPENCLAW_GATEWAY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"action": "send", "channel": "'$CHANNEL'", "message": "'$CAPTION'", "media": "'$IMAGE_URL'"}'
When sending selfies:
FAL_KEY — fal.ai API key (required). Get from https://fal.ai/dashboard/keysOPENCLAW_GATEWAY_TOKEN — OpenClaw gateway token (optional, for messaging)tools
Audit any OpenPersona (or peer LLM-agent) persona in three complementary modes: structural (CLI, deterministic, CI-friendly: 4 Layers × 5 Systemic Concepts × Constitution gate with role-aware severity), semantic white-box (LLM reads pack-content JSON and scores Soul-narrative quality via rubrics), and semantic black-box (LLM evaluates a remote agent it cannot read on disk, via A2A handshake / consent-probe / passive observation, with confidence caps). Produces quality reports with dimension scores, strengths, and actionable improvements. Use when asked to evaluate, audit, score, review, self-review, peer-review, or black-box review an agent.
tools
Distill any commercial entity into a personalized brand agent — a living brand persona with authentic voice, declared service capabilities, and a standard service contract. Every commercial entity has a brand: a name, a style, a way of showing up in the world. This skill exists so that a street vendor, a family clinic, and a global chain can all have their own agent on equal footing. Supports both distillation from existing brand content and declaration from scratch.
development
A local-first personal AI double framework that helps users build, govern, and evolve their own digital self with clear
development
A complete pipeline to build your AI Second Me: distill your identity from personal data, grow a private knowledge base, train a local model, and govern what gets shared.