art-director
Orchestrate iterative visual style searches with branch prompts, decision graphs, feedback loops, and final direction selection.
git clone --depth 1 https://github.com/serejaris/personal-corp-skills /tmp/art-director && cp -r /tmp/art-director/skills/art-director ~/.claude/skills/art-directorSKILL.md
# Art Director
Use this skill when the work is an art-direction search for a media production workspace.
The skill coordinates this loop:
```text
brief -> references -> generation branches -> HTML preview -> feedback -> next branches -> selected direction
```
For single-image production, use the host repo's image-generation or media-run instructions. For comic pages, albums, storyboards, or platform-specific assets, use the host repo's format-specific playbook when one exists.
## Default Output Shape
For a project under `art-direction/<project>/`, each serious search pass should leave:
```text
art-direction/<project>/
prompts/vNN/YYYY-MM-DD-vNN-<slug>-prompts.md
process/vNN/YYYY-MM-DD-vNN-<slug>-log.md
styles/YYYY-MM-DD-<style-system>.md
assets/vNN-<slug>/
<variant-id>.png
vNN-<slug>.html
```
For a first run in an empty workspace, create the minimal folders before writing prompts:
```bash
mkdir -p art-direction/<project>/{prompts/v01,process/v01,styles,assets/v01-style-search}
cp skills/art-director/assets/style-search-map-template.html art-direction/<project>/v01-style-search.html
```
If the skill was installed without `assets/style-search-map-template.html`, create the same folders and write a simple local HTML preview from the cluster schema in this file.
If the run continues an existing direction, increment `vNN` and make every new node point back to its parent decision.
The visual map must be an iteration-cluster direction graph:
```text
idea
-> iteration cluster
-> option leaf nodes
-> selected option node
-> carry forward / drop
-> next iteration cluster
-> option leaf nodes
-> selected option node
-> output
```
Keep the important path explicit: iteration checkpoint -> option nodes -> selected option node -> next iteration checkpoint. Unselected options stay as leaf nodes with their status.
## Workflow
1. Read the current project files: `index.html`, latest `vNN-*.html`, `process/v*/`, `prompts/v*/`, `styles/`, and relevant `research/`.
2. Identify the active question: what style, artifact, audience, format, or campaign is being decided.
3. Build an iteration cluster before generation: incoming brief, 3-8 option leaves, difference axes, expected selection criteria, and what may carry forward.
4. Write prompts in `prompts/vNN/`. Each prompt needs iteration id, option id, role, difference axis, prompt, negative prompt, and reject criteria.
5. Generate or collect assets through the host repo's approved image-generation path.
6. Create or update the HTML direction map as the first section of `vNN-<slug>.html`.
7. Put preview cards under the map with anchors matching tree node ids.
8. Capture feedback as first-class nodes in the tree and in `process/vNN/...log.md`.
9. Create the next iteration from feedback: `feedback -> interpretation -> new branch -> asset -> decision`.
10. Mark selected, rejected, paused, and next branches explicitly.
## Iteration Cluster Contract
Every style-search HTML page starts with a direction graph that answers:
- Where did this visual direction come from?
- What was the brief for each iteration?
- Which option leaf nodes were shown for that iteration?
- Which option was selected?
- What changed in the next brief because of that selection?
- What was carried forward, dropped, or turned into output?
Use `skills/art-director/assets/style-search-map-template.html` as the starter preview when the host repo has no renderer yet. If a reusable host-repo renderer exists, record its path in the run log and use it as the local reference. A typical reusable setup is:
- proof page: `art-direction/<project>/vNN-dagre-full.html`;
- shared renderer/data shape: `art-direction/<project>/vNN-style-search-pages.js`;
- shared visual style: `art-direction/<project>/vNN-style-search-page.css`;
- graph runtime: a pinned dagre runtime, for example `@dagrejs/dagre@1.1.8`, when external network use is allowed by the host repo.
Serve preview pages through a local server:
```bash
python3 -m http.server 8080
```
Then open `http://127.0.0.1:8080/...`. If the preview depends on a CDN and the network is blocked, report the blocker and keep the run in `blocked` or `needs-local-runtime` status. Store third-party library source only when the host repo policy explicitly allows vendored dependencies.
## Dagre Rendering Contract
Recommended solution: dagre computes the graph layout; the page renders the graph as static HTML/SVG with a detail panel.
Responsibilities:
- dagre: node coordinates and edge routing for the directed decision graph;
- page JavaScript: graph schema normalization, DOM/SVG rendering, click handlers and validation;
- HTML/CSS: readable node cards, status colors, horizontal scroll and detail panel;
- detail panel: shows the selected node's body text and image asset when available.
Use manual SVG layout only as a fallback or baseline. Use Mermaid for docs and quick sketches only when dense style-search history is not required.
Required graph semantics:
- root idea node;
- iteration checkpoint nodes;
- option nodes for each iteration;
- selected option node connects to the next checkpoint;
- unselected options remain leaves;
- production output nodes attach to the producing checkpoint or selected option;
- visible labels use the iteration id, for example `V8-C`, so later readers can map preview cards back to the run log.
Cluster schema:
```json
{
"id": "v8",
"title": "V8 - Selected direction expansion",
"brief": "Expand user-liked directions from V7.",
"looked_at": "V8-A, V8-B, V8-C, V8-D",
"selected": "v8-c",
"parent": "v7",
"carry_forward": "V8-C: sharp typography, high-contrast palette, warning label rhythm.",
"drop": "Soft abstract metaphors as the main cover style.",
"feedback": {
"target": "v8-c",
"safe_summary": "Reviewer wants the sharp typography direction pushed further.",
"interpretation": "Intensify type scale and warning-label rhythm in V9."
},
"Use when managing Paperclip AI agent companies - creating tasks, managing agents, approving hires, running heartbeats, or any Paperclip control-plane operations via CLI or REST API. Triggers on "paperclip", "задача агенту", "одобри найм", "heartbeat", "запусти агента".
Use when user asks for Claude Code usage stats, weekly analytics, project activity summary, or wants to see what projects were worked on. Triggers on "аналитика", "статистика claude", "cc stats", "weekly report", "что делал
Use when needing strategic project analysis from multiple independent expert perspectives. Triggers on business decisions, growth strategy, product direction, competitive analysis, or any situation where diverse C-level opinions reduce blind spots
Use when creating or refactoring CLAUDE.md files - enforces best practices for size, structure, and content organization
Use when creating, verifying, or registering a private corp-* department repository for a founder or company operating system, including local repo setup, GitHub repository creation or cloning, safe synchronization, and registration in an HQ Markdown file.
Use when the user explicitly asks for a standalone HTML page in a restrained minimal style, especially reading-first dashboards, briefs, handouts, maps, or internal reports. User-invoked only; do not auto-trigger.
>-
Use when user wants a standalone HTML diagram in flat engineering blueprint style — architecture diagrams, system flows, technical spec sheets, component maps. Generates one HTML file using Tailwind v4 (browser CDN) for layout and D3 v7 (CDN) for SVG diagrams. User-invoked only — do NOT auto-trigger. Triggers on "/html-draft", "сделай blueprint", "технический чертёж", "архитектурная схема", "инженерная схема", "blueprint diagram", "engineering blueprint", "technical spec sheet", "architecture diagram", "system flow diagram".