age-transformation
Transform faces across ages using each::sense AI. Create age progressions, de-aging effects, baby-to-adult predictions, and aging simulations for entertainment, forensics, and visual effects.
Packaged view
This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.
Install command
npx @skill-hub/cli install openclaw-skills-age-transformation
Repository
Skill path: skills/eftalyurtseven/age-transformation
Transform faces across ages using each::sense AI. Create age progressions, de-aging effects, baby-to-adult predictions, and aging simulations for entertainment, forensics, and visual effects.
Open repositoryBest for
Primary workflow: Design Product.
Technical facets: Full Stack, Data / AI, Designer.
Target audience: everyone.
License: Unknown.
Original source
Catalog source: SkillHub Club.
Repository owner: openclaw.
This is still a mirrored public skill entry. Review the repository before installing into production workflows.
What it helps with
- Install age-transformation into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
- Review https://github.com/openclaw/skills before adding age-transformation to shared team environments
- Use age-transformation for development workflows
Works across
Favorites: 0.
Sub-skills: 0.
Aggregator: No.
Original source / Raw SKILL.md
---
name: age-transformation
description: Transform faces across ages using each::sense AI. Create age progressions, de-aging effects, baby-to-adult predictions, and aging simulations for entertainment, forensics, and visual effects.
metadata:
author: eachlabs
version: "1.0"
---
# Age Transformation
Transform faces across different ages using each::sense. This skill enables realistic age progression (aging) and age regression (de-aging) effects on photos, useful for entertainment, film/video production, forensic visualization, and creative projects.
## Features
- **Age Progression**: Make subjects appear older (10, 20, 40+ years)
- **Age Regression**: De-age subjects to look younger
- **Baby to Adult**: Predict how a baby/child might look as an adult
- **Teenage Version**: Transform to teenage appearance
- **Senior/Elderly**: Create realistic elderly versions
- **Middle-Aged**: Transform to middle-age appearance
- **Subtle Aging**: Minor age changes (5-10 years)
- **Dramatic Aging**: Major age transformations (30-50 years)
- **De-aging for Film**: Professional de-aging for video/film production
- **Age Timeline**: Generate multiple ages in sequence
## Quick Start
```bash
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Age this person to look 70 years old while maintaining their recognizable features",
"image_urls": ["https://example.com/portrait.jpg"],
"mode": "max"
}'
```
## Use Case Examples
### 1. Age Progression (Make Older)
Transform a young adult to appear significantly older with natural aging characteristics.
```bash
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Age this person by 30 years. Add realistic aging features like wrinkles, slight sagging, gray hair, and age spots while keeping their identity clearly recognizable.",
"image_urls": ["https://example.com/young-adult.jpg"],
"mode": "max"
}'
```
### 2. Age Regression (Make Younger)
De-age an older subject to appear younger with smoother skin and youthful features.
```bash
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "De-age this person by 25 years. Make them look younger with smoother skin, fuller hair, tighter facial features, but keep their identity intact. Natural and realistic result.",
"image_urls": ["https://example.com/middle-aged-person.jpg"],
"mode": "max"
}'
```
### 3. Baby to Adult Prediction
Predict how a baby or young child might look as an adult.
```bash
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Transform this baby photo to show how they might look as a 30-year-old adult. Maintain key facial features like eye shape, nose structure, and overall face shape. Make it realistic and believable.",
"image_urls": ["https://example.com/baby-photo.jpg"],
"mode": "max"
}'
```
### 4. Teenage Version
Transform a child or adult to their teenage appearance.
```bash
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Transform this person to look like a 16-year-old teenager. Adjust facial features to teenage proportions while preserving their recognizable identity. Natural skin, youthful energy.",
"image_urls": ["https://example.com/adult-portrait.jpg"],
"mode": "max"
}'
```
### 5. Senior/Elderly Version
Create a realistic elderly version with natural aging characteristics.
```bash
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Age this person to 80 years old. Add deep wrinkles, age spots, white/gray hair, thinner skin, and natural elderly features. The result should look like a dignified senior while still being recognizable as the same person.",
"image_urls": ["https://example.com/young-person.jpg"],
"mode": "max"
}'
```
### 6. Middle-Aged Version
Transform to a realistic middle-aged appearance.
```bash
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Transform this young adult to appear 45-50 years old. Add subtle wrinkles, slight gray at the temples, mature skin texture, and natural middle-age characteristics while maintaining their identity.",
"image_urls": ["https://example.com/25-year-old.jpg"],
"mode": "max"
}'
```
### 7. Subtle Aging (10 Years)
Apply minor, realistic aging for a 10-year progression.
```bash
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Age this person by exactly 10 years. Apply subtle, realistic aging: fine lines around eyes and mouth, slightly less elastic skin, minimal gray hair starting to show. Keep changes believable and natural.",
"image_urls": ["https://example.com/current-photo.jpg"],
"mode": "max"
}'
```
### 8. Dramatic Aging (40 Years)
Apply significant aging transformation spanning 40 years.
```bash
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Age this 25-year-old by 40 years to look 65. Apply dramatic but realistic aging: significant wrinkles, sagging skin, gray/white hair, age spots, thinning hair, jowls. Result should be photorealistic and the person should still be recognizable.",
"image_urls": ["https://example.com/young-adult-25.jpg"],
"mode": "max"
}'
```
### 9. De-aging for Video/Film
Professional de-aging suitable for film and video production.
```bash
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "De-age this actor to look 25 years younger for a film flashback scene. Remove wrinkles, tighten facial features, restore hair color and volume, create smooth youthful skin. Result must be cinematic quality, photorealistic, and maintain perfect identity consistency.",
"image_urls": ["https://example.com/actor-current.jpg"],
"mode": "max"
}'
```
### 10. Age Progression Timeline (Multiple Ages)
Generate multiple age versions using session continuity.
```bash
# First request - Age to 40
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "This is a 20-year-old. Create an age progression showing them at 40 years old. Maintain identity throughout.",
"image_urls": ["https://example.com/person-age-20.jpg"],
"session_id": "age-timeline-project-001",
"mode": "max"
}'
# Second request - Age to 60 (same session)
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Now show the same person at 60 years old. Continue the aging progression naturally from the 40-year-old version.",
"session_id": "age-timeline-project-001",
"mode": "max"
}'
# Third request - Age to 80 (same session)
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Finally, show them at 80 years old. Complete the age timeline with realistic elderly features.",
"session_id": "age-timeline-project-001",
"mode": "max"
}'
```
## Best Practices
### For Realistic Results
- **High-quality source photos**: Use clear, well-lit frontal portraits
- **Specify exact age**: "Age to 65" is better than "make older"
- **Mention identity preservation**: Always request maintaining recognizable features
- **Describe aging features**: Guide the transformation with specific details
### Input Photo Guidelines
- **Resolution**: Higher resolution photos produce better results
- **Lighting**: Even, neutral lighting works best
- **Angle**: Front-facing portraits are ideal
- **Expression**: Neutral expressions transform most naturally
- **Obstruction**: Avoid sunglasses, heavy makeup, or face coverings
### Prompt Tips
When requesting age transformations, include:
1. **Current age** (if known): "This 30-year-old..."
2. **Target age**: "...to look 70 years old"
3. **Aging features**: "Add wrinkles, gray hair, age spots..."
4. **Identity note**: "...while keeping them recognizable"
5. **Quality requirement**: "Photorealistic result"
### Example Prompt Structure
```
"Transform this [current age]-year-old to look [target age] years old.
Add [specific aging/de-aging features].
Maintain their identity and recognizable features.
[Additional requirements like lighting, style, etc.]"
```
## Mode Selection
| Mode | Best For | Speed | Quality |
|------|----------|-------|---------|
| `max` | Final outputs, professional work, film/video | Slower | Highest |
| `eco` | Quick previews, testing, iterations | Faster | Good |
**Recommendation**: Use `eco` mode to test and refine your prompts, then switch to `max` for final high-quality outputs.
## Multi-Turn Refinement
Use `session_id` to iteratively refine age transformations:
```bash
# Initial transformation
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Age this person to 70 years old",
"image_urls": ["https://example.com/portrait.jpg"],
"session_id": "age-refinement-001"
}'
# Refine the result
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Add more prominent wrinkles and make the hair completely white",
"session_id": "age-refinement-001"
}'
# Further adjustment
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Keep the aging but make the expression warmer, add smile lines",
"session_id": "age-refinement-001"
}'
```
## Common Use Cases
| Use Case | Recommended Approach |
|----------|---------------------|
| Entertainment/Fun | Quick age-ups/de-aging with `eco` mode |
| Film/Video VFX | De-aging actors with `max` mode, detailed prompts |
| Missing Persons | Age progression from childhood, preserve key features |
| Family Projects | "What will I look like at 80?" type queries |
| Forensic Visualization | Professional age progression with identity focus |
| Before/After Concepts | Subtle aging for skincare/health visualizations |
## Error Handling
| Error | Cause | Solution |
|-------|-------|----------|
| `Failed to create prediction: HTTP 422` | Insufficient balance | Top up at eachlabs.ai |
| Poor identity preservation | Vague prompt | Be specific about maintaining features |
| Unrealistic aging | Missing aging details | Describe specific aging characteristics |
| Timeout | Complex generation | Set client timeout to minimum 10 minutes |
## Related Skills
- `each-sense` - Core API documentation
- `face-swap` - Face swapping capabilities
- `image-edit` - General image editing
- `portrait-generation` - Creating portraits from scratch
---
## Skill Companion Files
> Additional files collected from the skill directory layout.
### _meta.json
```json
{
"owner": "eftalyurtseven",
"slug": "age-transformation",
"displayName": "Age Transformation",
"latest": {
"version": "0.1.0",
"publishedAt": 1771567079682,
"commit": "https://github.com/openclaw/skills/commit/77f995d65599c834dbfcba9aceab11301da91aa6"
},
"history": []
}
```
### references/SSE-EVENTS.md
```markdown
# SSE Event Reference
Detailed documentation for all Server-Sent Events (SSE) returned by the each::sense `/chat` endpoint.
## Event Format
Each event follows this format:
```
data: {"type": "event_type", ...fields}\n\n
```
Stream ends with:
```
data: [DONE]\n\n
```
---
## Event Types
### thinking_delta
Claude's reasoning as it streams in real-time. Use this to show users what the AI is thinking.
```json
{
"type": "thinking_delta",
"content": "Let me find the best model for portrait generation..."
}
```
| Field | Type | Description |
|-------|------|-------------|
| `content` | string | Incremental thinking text |
---
### status
Current operation being executed. Shows tool usage and parameters.
```json
{
"type": "status",
"message": "Searching for image generation models...",
"tool_name": "search_models",
"parameters": {"use_case": "text to image portrait"}
}
```
| Field | Type | Description |
|-------|------|-------------|
| `message` | string | Human-readable status message |
| `tool_name` | string | Internal tool being used |
| `parameters` | object | Tool parameters (optional) |
---
### text_response
Text content from the AI (explanations, answers, plans).
```json
{
"type": "text_response",
"content": "I'll create a stunning portrait for you with cinematic lighting and a warm mood."
}
```
| Field | Type | Description |
|-------|------|-------------|
| `content` | string | Text response content |
---
### generation_response
Generated media URL (image or video). This is the primary output event.
```json
{
"type": "generation_response",
"url": "https://storage.eachlabs.ai/outputs/abc123.png",
"generations": ["https://storage.eachlabs.ai/outputs/abc123.png"],
"total": 1,
"tool_name": "execute_model",
"model": "nano-banana-pro"
}
```
| Field | Type | Description |
|-------|------|-------------|
| `url` | string | Primary output URL |
| `generations` | array | All generated URLs |
| `total` | number | Total number of generations |
| `tool_name` | string | Tool that generated output |
| `model` | string | Model used for generation |
---
### clarification_needed
AI needs more information to proceed. Present options to the user.
```json
{
"type": "clarification_needed",
"question": "What type of edit would you like to make to this image?",
"options": [
"Remove the background",
"Apply a style transfer",
"Upscale to higher resolution",
"Add or modify elements"
],
"context": "I can see you've uploaded an image, but I need to understand what changes you'd like."
}
```
| Field | Type | Description |
|-------|------|-------------|
| `question` | string | The question to ask the user |
| `options` | array | Suggested options (can be displayed as buttons) |
| `context` | string | Additional context about the clarification |
**Handling:** Display the question and options to the user. Send their response in a follow-up request with the same `session_id`.
---
### web_search_query
Web search being executed.
```json
{
"type": "web_search_query",
"query": "best AI video generation models 2024",
"recency": "month"
}
```
| Field | Type | Description |
|-------|------|-------------|
| `query` | string | Search query |
| `recency` | string | Time filter (day, week, month, year) |
---
### web_search_citations
Citations from web search results.
```json
{
"type": "web_search_citations",
"citations": [
"https://example.com/ai-video-comparison",
"https://techblog.com/veo3-review"
],
"count": 2
}
```
| Field | Type | Description |
|-------|------|-------------|
| `citations` | array | URLs of sources cited |
| `count` | number | Number of citations |
---
### workflow_created
New workflow was created for complex multi-step generation.
```json
{
"type": "workflow_created",
"workflow_id": "wf_abc123",
"version_id": "v1",
"input_schema": {
"properties": {
"character_description": {
"type": "text",
"required": true,
"default_value": ""
}
}
},
"steps_count": 5
}
```
| Field | Type | Description |
|-------|------|-------------|
| `workflow_id` | string | Unique workflow identifier |
| `version_id` | string | Workflow version |
| `input_schema` | object | Schema for workflow inputs |
| `steps_count` | number | Number of steps in workflow |
---
### workflow_fetched
Existing workflow was loaded (when `workflow_id` is provided in request).
```json
{
"type": "workflow_fetched",
"workflow_name": "Product Video Generator",
"existing_steps": 3,
"existing_definition": {...}
}
```
| Field | Type | Description |
|-------|------|-------------|
| `workflow_name` | string | Name of the workflow |
| `existing_steps` | number | Number of existing steps |
| `existing_definition` | object | Current workflow definition |
---
### workflow_built
Workflow definition was constructed.
```json
{
"type": "workflow_built",
"steps_count": 4,
"definition": {
"version": "v1",
"input_schema": {...},
"steps": [...]
}
}
```
| Field | Type | Description |
|-------|------|-------------|
| `steps_count` | number | Number of steps |
| `definition` | object | Full workflow definition |
---
### workflow_updated
Workflow was pushed to the EachLabs API.
```json
{
"type": "workflow_updated",
"success": true,
"workflow_id": "wf_abc123",
"version_id": "v1",
"definition": {...}
}
```
| Field | Type | Description |
|-------|------|-------------|
| `success` | boolean | Whether update succeeded |
| `workflow_id` | string | Workflow identifier |
| `version_id` | string | Version identifier |
| `definition` | object | Updated definition |
---
### execution_started
Workflow execution has begun.
```json
{
"type": "execution_started",
"execution_id": "exec_xyz789",
"workflow_id": "wf_abc123"
}
```
| Field | Type | Description |
|-------|------|-------------|
| `execution_id` | string | Unique execution identifier |
| `workflow_id` | string | Workflow being executed |
---
### execution_progress
Progress update during workflow execution. Sent approximately every 5 seconds.
```json
{
"type": "execution_progress",
"step_id": "step2",
"step_status": "completed",
"output": "https://storage.eachlabs.ai/outputs/step2.png",
"model": "nano-banana-pro",
"completed_steps": 2,
"total_steps": 5
}
```
| Field | Type | Description |
|-------|------|-------------|
| `step_id` | string | Current step identifier |
| `step_status` | string | Step status (running, completed, failed) |
| `output` | string | Step output URL (if available) |
| `model` | string | Model used for this step |
| `completed_steps` | number | Steps completed so far |
| `total_steps` | number | Total steps in workflow |
---
### execution_completed
Workflow execution finished successfully.
```json
{
"type": "execution_completed",
"execution_id": "exec_xyz789",
"status": "completed",
"output": "https://storage.eachlabs.ai/outputs/final.mp4",
"all_outputs": {
"step1": "https://storage.eachlabs.ai/outputs/step1.png",
"step2": "https://storage.eachlabs.ai/outputs/step2.png",
"step3": "https://storage.eachlabs.ai/outputs/final.mp4"
}
}
```
| Field | Type | Description |
|-------|------|-------------|
| `execution_id` | string | Execution identifier |
| `status` | string | Final status (completed, failed) |
| `output` | string | Final output URL |
| `all_outputs` | object | All step outputs keyed by step_id |
---
### tool_call
Details of a tool being called. Useful for debugging and transparency.
```json
{
"type": "tool_call",
"name": "execute_model",
"input": {
"model_name": "nano-banana-pro",
"inputs": {
"prompt": "A beautiful woman portrait...",
"aspect_ratio": "1:1"
}
}
}
```
| Field | Type | Description |
|-------|------|-------------|
| `name` | string | Tool name |
| `input` | object | Tool input parameters |
---
### message
Informational message from the agent.
```json
{
"type": "message",
"content": "Your video is being processed. This typically takes 2-3 minutes."
}
```
| Field | Type | Description |
|-------|------|-------------|
| `content` | string | Message content |
---
### complete
Final event with summary. Always sent when stream completes successfully.
```json
{
"type": "complete",
"task_id": "chat_1708345678901",
"status": "ok",
"tool_calls": [
{"name": "search_models", "result": "success"},
{"name": "get_model_details", "result": "success"},
{"name": "execute_model", "result": "success", "model": "nano-banana-pro"}
],
"generations": ["https://storage.eachlabs.ai/outputs/abc123.png"],
"model": "nano-banana-pro"
}
```
| Field | Type | Description |
|-------|------|-------------|
| `task_id` | string | Unique task identifier |
| `status` | string | Final status (ok, awaiting_input, error) |
| `tool_calls` | array | Summary of all tool calls |
| `generations` | array | All generated output URLs |
| `model` | string | Primary model used |
**Status values:**
- `ok` - Completed successfully
- `awaiting_input` - Waiting for user clarification
- `error` - An error occurred
---
### error
An error occurred during processing.
```json
{
"type": "error",
"message": "Failed to generate image: Invalid aspect ratio"
}
```
| Field | Type | Description |
|-------|------|-------------|
| `message` | string | Error message |
---
## Event Flow Examples
### Simple Image Generation
```
thinking_delta → "I'll create a beautiful portrait..."
status → "Searching for models..."
status → "Getting model details..."
status → "Generating with nano-banana-pro..."
generation_response → {url: "https://..."}
complete → {status: "ok", generations: [...]}
[DONE]
```
### Clarification Flow
```
thinking_delta → "I see an image, but need to know what edit..."
clarification_needed → {question: "What edit?", options: [...]}
complete → {status: "awaiting_input"}
[DONE]
```
### Workflow Execution
```
thinking_delta → "Creating a multi-step workflow..."
status → "Searching for models..."
workflow_created → {workflow_id: "wf_123", steps_count: 5}
execution_started → {execution_id: "exec_456"}
execution_progress → {completed_steps: 1, total_steps: 5}
execution_progress → {completed_steps: 2, total_steps: 5}
execution_progress → {completed_steps: 3, total_steps: 5}
execution_progress → {completed_steps: 4, total_steps: 5}
execution_completed → {output: "https://...", all_outputs: {...}}
complete → {status: "ok"}
[DONE]
```
### Web Search
```
thinking_delta → "Let me search for current information..."
web_search_query → {query: "best AI models 2024"}
status → "Searching the web..."
web_search_citations → {citations: [...], count: 3}
text_response → "Based on current information..."
complete → {status: "ok"}
[DONE]
```
```