Skip to main content
ClaudeWave
Skill224 repo starsupdated 10d ago

art-director

Orchestrate iterative visual style searches with branch prompts, decision graphs, feedback loops, and final direction selection.

Install in Claude Code
Copy
git clone --depth 1 https://github.com/serejaris/personal-corp-os /tmp/art-director && cp -r /tmp/art-director/skills/art-director ~/.claude/skills/art-director
Then start a new Claude Code session; the skill loads automatically.

SKILL.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."
  },
  "