AgentLux
**Leica master-photographer composition and color-grading skill.** Trigger this skill when the user does ANY of the following: - Uploads a photo and asks to make it look better, professional, cinematic, or artistic
Free to install β no account needed
Copy the command below and paste into your agent.
Instant access β’ No coding needed β’ No account needed
What you get in 5 minutes
- Full skill code ready to install
- Works with 2 AI agents
- Lifetime updates included
Description
# AgentLux **Leica master-photographer composition and color-grading skill.** ## When To Activate Trigger this skill when the user does ANY of the following: - Uploads a photo and asks to make it look better, professional, cinematic, or artistic - Says "fix the composition," "crop this better," "edit this photo," "reframe this" - Asks for a "Leica look," "film look," "εΎ·ε³" (German rendering), or "ε€§εΈζεΎ" (master composition) - Provides multiple photos and wants the best one selected and improved - Uploads a photo with no specific editing instructions (default to this skill) **DO NOT ask the user for any preferences.** This skill is fully autonomous and opinionated. ## Prerequisites Check Before first use, verify the module is installed and an API key is available: ```javascript // Step 0: One-time installation check const agentlux = require('agentlux'); // If this fails: npm install agentlux // At least one of these env vars must be set: // ANTHROPIC_API_KEY, OPENAI_API_KEY, GOOGLE_API_KEY ``` ## Agent Workflow: Single Image ### Step 1 β Save the user's image to disk If the user uploaded an image that is in memory or a temp location, ensure it is written to an absolute path on disk. Note the path. ### Step 2 β Execute the skill Write and run a Node.js script. Use `output_path` to write the result directly to a file (recommended): ```javascript const agentlux = require('agentlux'); async function run() { const result = await agentlux.execute({ image_path: "ABSOLUTE_PATH_TO_INPUT", output_path: "/tmp/agentlux_output_" + Date.now() + ".jpg", language: "zh", // match the language you are conversing in (e.g. "en", "zh", "ja", "fr") delete_after: true }); console.log(JSON.stringify(result)); } run(); ``` ### Step 3 β Parse the result from stdout The output is a single JSON object. Check `result.status`: **On `"success"`:** - `result.output_path` β The absolute path to the processed JPEG. **Send this file to the user.** - `result.presentation` β A ready-to-use narrative explaining the creative decisions. **Show this text to the user.** The narrative is proportional: if the original composition was preserved, it says so honestly rather than fabricating a crop story. - `result.master_photographer` β e.g. "Fan Ho" - `result.master_style` β e.g. "Light & Shadow Geometry" - `result.composition_rule` β e.g. "Diagonal shaft of light creates a natural leading line..." - `result.composition_assessment` β `{quality, crop_applied, crop_rationale}` β how the system evaluated the original composition. `quality` is `"excellent"`, `"good"`, `"fair"`, or `"poor"`. When `quality` is `"excellent"`, the original framing is preserved. - `result.processing_applied` β `{cropped, grain_applied, grain_rationale, vignette_level, color_graded}` β what was actually done to the image. Use this to understand the processing decisions. - `result.color_profile` β e.g. "Leica M Monochrom" - `result.lens_profile` β e.g. "Noctilux-M 50mm f/0.95 ASPH" - `result.coordinates` β The crop box applied `{x, y, width, height}` **On `"error"`:** - `result.error_code` β Machine-readable error type - `result.message` β Human-readable description - `result.recovery_hint` β **What YOU (the agent) should do next.** Follow this hint. ### Step 4 β Present to the user 1. Send the output image file (`result.output_path`) 2. Display `result.presentation` as the explanation 3. Optionally add your own commentary about the artistic choices ## Agent Workflow: Burst Mode When the user provides multiple sequential images (e.g. burst photos, bracketed exposures): ```javascript const result = await agentlux.execute({ image_paths: [ "/absolute/path/to/frame_001.jpg", "/absolute/path/to/frame_002.jpg", "/absolute/path/to/frame_003.jpg" ], output_path: "/tmp/agentlux_burst_output_" + Date.now() + ".jpg", delete_after: true }); ``` The system will auto-select the strongest frame, then compose and color-grade it. `result.burst_selection` contains: - `selected_index` β Which frame was chosen (0-based) - `total_images` β How many frames were evaluated - `rationale` β Why this frame was selected ## Error Recovery Guide | error_code | What happened | Agent action | |---|---|---| | `CONFIG_ERROR` | No API key configured | Tell user to set ANTHROPIC_API_KEY, OPENAI_API_KEY, or GOOGLE_API_KEY | | `INPUT_ERROR` | Bad parameters | Fix the input (check file path exists, is absolute, etc.) | | `INPUT_TOO_LARGE` | Image > 30MB | Resize the image before retrying | | `VLM_TIMEOUT` | API call timed out | **Retry the same request** | | `VLM_NETWORK_ERROR` | Network failure | **Retry the same request** | | `VLM_HTTP_TRANSIENT` | API overloaded (5xx/429) | **Wait 3 seconds, then retry** | | `VLM_HTTP_ERROR` | API client error (4xx) | Check API key and model configuration | | `VLM_PARSE_ERROR` | Malformed VLM output | **Retry the same request** | | `VLM_SCHEMA_ERROR` | Unexpected VLM format | **Retry the same request** | ## Environment Variables | Variable | Required | Description | |---|---|---| | `ANTHROPIC_API_KEY` | One of these | Anthropic Claude API key | | `OPENAI_API_KEY` | is required | OpenAI GPT API key | | `GOOGLE_API_KEY` | | Google Gemini API key | | `AGENTLUX_CUSTOM_BASE_URL` | Optional pair | Custom OpenAI-compatible base URL | | `AGENTLUX_CUSTOM_API_KEY` | | Custom API key | | `AGENTLUX_CURATOR_MODEL` | Optional | Override curator model (e.g. `claude-sonnet-4-20250514`) | | `AGENTLUX_MASTER_MODEL` | Optional | Override master model (e.g. `gpt-4o`) | | `AGENTLUX_LANGUAGE` | Optional | Default language for user-facing text (e.g. `zh`, `ja`, `fr`). Overridden by `language` parameter. | ## What This Skill Does (For Context) 1. **Curator Agent** analyzes the image and makes all creative decisions in a single VLM pass: - Selects the best-fit master photographer (Bresson, Alex Webb, Fan Ho, Koudelka, Salgado, Moriyama) - Selects Leica color profile (M10, M9, Monochrom, Tri-X, Portra) and lens character (Summilux, Noctilux, Summicron, Elmarit) - **Assesses composition quality** (`excellent` / `good` / `fair` / `poor`) β if the original composition is already strong, it is preserved - **Decides effects intensity** β whether grain and vignette genuinely serve this image, or would feel like filters slapped on 2. **Master Agent** embodies the selected photographer and computes the optimal crop. If the Curator assessed the composition as excellent, this step is skipped and the original framing is preserved. 3. **Image Pipeline** applies Leica color science. Vignette and film grain are applied **conditionally** based on the Curator's aesthetic judgment β not mechanically. 4. Result is returned with a `presentation` narrative ready to show the user. The narrative is honest: it describes what was actually done, not what could have been done.
Security Status
Scanned
Passed automated security checks
Related AI Tools
More Grow Business tools you might like
Clawra Selfie
FreeEdit Clawra's reference image with Grok Imagine (xAI Aurora) and send selfies to messaging channels via OpenClaw
Agent Skills for Context Engineering
FreeA comprehensive collection of Agent Skills for context engineering, multi-agent architectures, and production agent systems. Use when building, optimizing, or debugging agent systems that require effective context management.
Terraform Skill for Claude
FreeUse when working with Terraform or OpenTofu - creating modules, writing tests (native test framework, Terratest), setting up CI/CD pipelines, reviewing configurations, choosing between testing approaches, debugging state issues, implementing security
NotebookLM Research Assistant Skill
FreeUse this skill to query your Google NotebookLM notebooks directly from Claude Code for source-grounded, citation-backed answers from Gemini. Browser automation, library management, persistent auth. Drastically reduced hallucinations through document-
Engineering Advanced Skills (POWERFUL Tier)
Free"25 advanced engineering agent skills and plugins for Claude Code, Codex, Gemini CLI, Cursor, OpenClaw. Agent design, RAG, MCP servers, CI/CD, database design, observability, security auditing, release management, platform ops."
Clawra Selfie
FreeEdit Clawra's reference image with Grok Imagine (xAI Aurora) and send selfies to messaging channels via OpenClaw