Agent SkillsYu-0312/editorial-vision-studio › editorial-vision-studio

editorial-vision-studio

GitHub

AI视觉创意总监引擎,提供从意图分析到提示词生成的决策流水线。支持多模型适配、风格控制及系列一致性,用于海报、品牌视觉等设计任务。

Trigger Scenarios

需要AI图像方向或视觉概念设计 上传照片进行编辑设计或修复 指定特定艺术风格生成图片 要求跨模型复用同一视觉规范

Install

npx skills add Yu-0312/editorial-vision-studio --skill editorial-vision-studio -g -y
More Options

Use without installing

npx skills use Yu-0312/editorial-vision-studio@editorial-vision-studio

指定 Agent (Claude Code)

npx skills add Yu-0312/editorial-vision-studio --skill editorial-vision-studio -a claude-code -g -y

安装 repo 全部 skill

npx skills add Yu-0312/editorial-vision-studio --all -g -y

预览 repo 内 skill

npx skills add Yu-0312/editorial-vision-studio --list

SKILL.md

Frontmatter
{
    "name": "editorial-vision-studio",
    "description": "Universal visual direction engine for AI image, design, and layout work: model-agnostic decision pipeline (intent, analysis, visual language, planning, recovery\/refinement) plus swappable adapters for GPT Image, Flux, Ideogram, and generic image backends. Use for visual concepting, image prompts, photo-to-design, posters, covers, zines, gallery prints, campaigns, brand key visuals, product\/editorial imagery, social assets, website hero art, moodboards, presentation decks, Panter-style low-contrast recovery, multi-image series with a consistent visual system, or switching image models while preserving the same creative direction."
}

Editorial Vision Studio

AI Creative Director for Visual Generation.

Philosophy: Do not decorate. Always interpret.

An extensible Editorial Design Engine: one decision pipeline, swappable model adapters. Every layer — intent, analysis, art direction, planning, recovery, compilation, review, iteration — is a separate module with a single job, and the contract between them is a model-agnostic spec.

Architecture: reference/architecture.md

When to Use

  • User asks for AI image direction, image prompts, art direction, visual concepting, or prompt adaptation across models
  • User uploads a photo and asks for photo-to-design, editorial poster, cover, zine, gallery print, campaign key visual, brand visual, product visual, or hero image
  • User gives a theme only and wants a poster, social asset, zine, campaign, moodboard, or conceptual image
  • User mentions low-contrast / gray photo recovery (Panter compensation)
  • User specifies a style: Swiss, Kinfolk, MUJI, Brutalist, Wallpaper*, Purple, Apartamento, POPEYE
  • User wants analysis → direction → prompt → image, not immediate generation
  • User specifies model: gpt-image, flux, ideogram — or asks to reuse direction with a different model
  • User wants a set, not an image: campaign at all sizes, a carousel, a multi-page deck
  • User wants a second image that matches the first — series consistency, brand system, "同一套視覺"
  • User names a preset, or wants a specific fixed look reproduced exactly

Architecture: Decision Engine + Model Adapters

DECISION ENGINE (fixed)          MODEL ADAPTER (swappable)
Intent → Analyzer                     VisionSpec / EditorialSpec
      → Visual Language      →      ↓
      → Art Direction        →   adapters/{model}.md
      → Planner              →      ↓
      → Recovery             →   GenerationRequest → API
      → VisionSpec
                                 SHARED POST-LAYER
                                 Reviewer → Generate → Evaluator → Iteration
                                                                       │
                                 one spec mutation, re-enter Compiler ◄┘
                                 (max 3 passes)

Core Pipeline

User Request
    ↓
Intent Engine          → [prompts/intent.md](prompts/intent.md)
    ↓                    (series? → [prompts/series.md](prompts/series.md) · memory? → [prompts/visual-memory.md](prompts/visual-memory.md))
Style Gate             → [prompts/style-gate.md](prompts/style-gate.md)  ← ask the user once, up front
    ↓
Visual Analyzer        → [prompts/analyzer.md](prompts/analyzer.md)  (skip if theme-only / prompt-only)
    ↓
Visual Language Engine → [prompts/visual-language.md](prompts/visual-language.md)
    ↓
Art Direction Engine   → [prompts/art-direction.md](prompts/art-direction.md)  ← 2–3 candidates, commit to one
    ↓
Visual Planner         → [prompts/planner.md](prompts/planner.md)
    ↓
Recovery Engine        → [prompts/recovery.md](prompts/recovery.md) + [recovery/](recovery/)
    ↓
VisionSpec             → [spec/editorial-spec.schema.md](spec/editorial-spec.schema.md)
    ↓
Model Adapter          → [adapters/registry.md](adapters/registry.md)  ← swappable
    ↓
Prompt Reviewer        → [prompts/reviewer.md](prompts/reviewer.md)
    ↓
Image Generation
    ↓
Quality Evaluator      → [prompts/evaluator.md](prompts/evaluator.md)  → quality vector
    ↓
Iteration Engine       → [prompts/iteration.md](prompts/iteration.md)  ← fix one layer, loop (max 3)
    ↓
VisualManifest         → [spec/visual-manifest.schema.md](spec/visual-manifest.schema.md)

Each layer does one job. Never analyze in Compiler. Never generate in Analyzer. Never re-decide in Iteration — mutate the spec and re-run the layer that owns the failure.

Quick routing: reference/decision-tree.md

Step 0: Intent Engine

Before analyzing pixels, resolve user goal → output family:

User says Intent Allowed outputs
art book cover Art Book magazine-cover, gallery-print, poster
TEDx key visual Event Campaign campaign-poster, brand-key-visual, social-asset
skincare brand launch Branding brand-key-visual, product-editorial, social-asset
app hero image Digital Product website-hero, interface-asset, social-asset
zine page Zine zine, poster, editorial-spread
gallery print Gallery gallery-print, photo-abstract-diptych, poster
moodboard Visual Concept moodboard, poster, editorial-spread
10-page deck any family, purpose: presentation presentation-deck

Also resolve the six intent dimensions — subject, purpose, audience, emotion, platform, aspect ratio. Infer them; ask only when a missing one is load-bearing. They are what every later layer is graded against.

Detect scope here, not later: series_id for a set (prompts/series.md), memory_id for a continuation (prompts/visual-memory.md).

Read prompts/intent.md. Reject mismatched formats (e.g. gallery print for TEDx campaign).

Step 0.5: Style Gate

The first question about how the image should look. Before analysing a single pixel, ask which look they want — a numbered menu of the compatible presets plus 「讓 AI 提案」. (Intent may have asked about purpose or platform first; that is a different question.)

Half a step because it computes nothing. It asks one question and turns the answer into a lock.

要什麼風格?

1. 米色明信片 —— 米白紙底,照片重畫成簡化色塊,大量留白。
2. 時代海報 —— 飽和油墨滿版,硬邊平面色塊,地名做成版面。
3. 紙雕明信片 —— 寫實照片,明信片上長出立體紙雕世界。1:1。
4. 自己描述 —— 你說想要的樣子,我拆解照片後照你的描述重畫。
5. 讓 AI 提案 —— 看過照片和用途後給你三個方向再選。

Nobody chooses a look twice unless they asked to see proposals. The gate emits a single field, style_gate.outcome, and Art Direction branches on that and nothing else:

Gate answer outcome Art Direction
A preset commit Becomes the session's Visual Memory; auto-commits, asks nothing
自己描述, or just typing a description commit Captured verbatim; the Analyzer deconstructs the photo, then prompts/style-brief.md rebuilds it to the description. A description is never answered with a menu
「讓 AI 提案」 offer Offers 2–3 candidates. This is the one path with two prompts, and the user asked for it

It skips — outcome: commit, no menu — when a preset or style is already named, a memory or series is active, a direction was committed earlier this session, or the run is unattended. It skips to outcome: offer when fewer than two presets fit the intent, because a one-item menu is not a choice. Unattended runs pick the highest-fit preset with intent-only weights and say which in one line — never silently.

Presets declare intended_layouts; the gate offers only those that intersect intent.allowed_outputs.

Show looks, not internal vocabulary. Nobody outside this repo knows what Kinfolk means.

The gate settles ground and medium only. Layout, composition, abstraction, and copy stay with the Planner.

Read prompts/style-gate.md.

Step 1: Visual Analyzer

Produce structured Image Report with star ratings and Editorial Score (0–100).

Dimensions: subject, clarity, contrast, saturation, composition, negative space, geometry, texture, lighting, emotion.

Read prompts/analyzer.md.

Step 2: Visual Language Engine

Derive Visual Language first, then style/palette/layout — not the reverse.

Examples: Museum → Swiss or MUJI + fine serif; Quiet Human → Kinfolk + cream/sage; Indie Memory → Zine + riso anchor; Poster Graphic → Travel Poster + flat inks.

Read prompts/visual-language.md. User style: override skips auto-derivation but Reviewer still validates DNA fit.

Step 3: Art Direction Engine

Do not generate the first plausible reading of the brief. Draft competing directions, each with a one-sentence thesis and a named trade-off, score them for fit, commit to one, and keep the runner-up.

Branch on style_gate.outcome and nothing else. The gate already resolved every case — preset chosen, free text, 「你決定」, explicit style:, memory, series, unattended, too few presets — into one of two values:

outcome Behaviour
commit Build one direction, commit silently. Never offer candidates — that would be the user's second time choosing a look. Name the runner-up in one line when one exists
offer Present 2–3 candidates and ask. Two for a narrow intent family, three for a theme-only brief or Editorial Score <50

The layer always runs, even on commit — every spec needs an art_direction block with a thesis.

Every candidate must set a different ground. Eight of the eleven style DNAs resolve to a light paper field, so candidates chosen on style alone come back as three shades of ivory. Beyond that, candidates must differ on at least two of: render mode, visual language, layout family, abstraction level, typography weight. Palette swaps are not directions.

The committed direction is a hard constraint on the Planner. Switching to the runner-up later re-runs Planner onward only — never the Analyzer.

Read prompts/art-direction.md.

Step 4: Editorial Planner

Decide layout, typography direction, abstraction level inside the committed directionnot the final prompt.

Key rules (full matrix in prompts/planner.md):

  • Portrait + negative space >50% → Magazine Cover
  • Architecture + strong geometry → Swiss Poster
  • Landscape + quiet mood → Gallery Print
  • Street + human story → Documentary Zine
  • Food/object + minimal → Product Editorial

If user specifies style: kinfolk, load styles/kinfolk.md DNA.

Step 5: Recovery Engine

Apply only when Image Report flags weakness. Each recovery is one atomic fix — see recovery/.

Problem Recovery
Low contrast / gray (saturation <30%) Panter Mode: warm/cool conflict hues, high-sat anchor, wider tonal separation
Weak subject Increase silhouette / scale
Flat lighting Directional light
Busy background Simplify geometry
Too many colors Limit palette to 4
No focal point Editorial color anchor
No rhythm Abstract panel

Panter Mode (from photo-panter lineage): discard dull grays; boost warm to 75% / cool to 70% saturation; add 8% high-chroma anchor block; widen tonal separation and mark scale. Panter is a colour compensation and never adds texture on its own. See recovery/contrast.md.

Texture Permission — single source of truth: assets/texture.md. Three tiers: PRINT (riso/halftone/scan defects) is zine only; SURFACE (substrate character such as cotton paper) is allowed on CLEAN layouts whose style DNA rates Texture ★★★+; FLAT (zero texture words) covers the photo-abstract-diptych panel ground, interface-asset, the website-hero copy-safe area, and the product-editorial background. Recoveries never raise a layout's tier.

Never redesign the entire image unless Editorial Score <50 (Concept Reconstruction).

Step 6: Prompt Compiler + Model Adapter

Phase 1: Assemble VisionSpec / EditorialSpec — read prompts/compiler.md

Phase 2: Route to adapter by target.model:

Model When Adapter
gpt-image (default for photo upload) Diptych, photo fidelity adapters/gpt-image.md
flux Zine texture, atmosphere adapters/flux.md
ideogram Cover/campaign typography adapters/ideogram.md
generic Unknown backend adapters/generic.md

User: model: flux or "用 Flux 生成" → set adapter, do not re-analyze.

Same direction, different model: reuse VisionSpec / EditorialSpec, swap adapter only.

Step 7: Prompt Reviewer

Before generation, run conflict detection. Read prompts/reviewer.md.

Examples:

  • Swiss grid + Kinfolk organic → reject or resolve
  • MUJI + heavy typography → reject
  • Brutalist + soft pastoral palette → warn

Auto-correct incompatible pairings.

Step 8: Quality Evaluator

After generation, score a quality vector — not one number. Ten weighted dimensions: subject, composition, focal_point, palette, typography, texture, style_coherence, photo_fidelity, intent_fit, platform_fit. Each 0.00–1.00; inapplicable dimensions are null, never 0.

overall is the weighted mean and maps to grade A–D. Any single dimension below 0.60 fails the run regardless of overall.

The evaluator must name lowest_failing and responsible_layer — without them the iteration loop has nothing to act on.

Read prompts/evaluator.md.

Step 9: Iteration Engine

A low score points at one layer, not at the whole image. Fix that layer, recompile, regenerate.

lowest failing dimension → responsible layer → one minimal spec mutation → recompile → re-score
  • One mutation per iteration. Two at once makes the next score unattributable.
  • Mutate the spec, never the prompt string. A hand-patched prompt cannot be replayed from the manifest.
  • Escalate when the same dimension fails twice: Compiler → Recovery → Planner → Art Direction → Intent.
  • Re-enter at the Compiler after every mutation. "Responsible layer" names whose decision changed, not an entry point.
  • Stop at overall ≥ 0.85 with no dimension below 0.60, at 3 iterations, on score regression, or when escalation reaches Intent — then report, don't guess.

Taste disagreement ("I don't like the blue") is a direction change, not a QC failure — route it to prompts/art-direction.md.

Read prompts/iteration.md.

Ground & Render Mode

Two axes, required, with no default:

Axis Values Question it answers
design_tokens.ground paper-light · neutral-gray · dark · saturated · full-bleed-photo · duotone What is the canvas field itself?
direction.render_mode photographic · photo-plus-graphic · graphic · painterly · mixed What medium is the image made of?

Enum values are contract tokens, never prompt words — every adapter resolves them to prose through assets/ground.md.

An unset value is a rejection, not a fallback. This matters more than it looks: before these fields existed, an undecided ground fell through to warm ivory paper on every run, because that was the most-repeated value in the repo. A field with no default cannot be skipped.

render_mode is not abstraction_level. Medium and distance-from-source are independent — a photographic image can still be full-abstract.

Presets

A preset is a shipped VisualMemory with source: preset — a locked partial spec authored in the repo instead of established from a run. It reuses the entire memory mechanism; nothing new enforces it.

Preset Ground Render mode
ivory-postcard paper-light painterly
vintage-travel-poster saturated graphic
papercraft-diorama-postcard full-bleed-photo photographic

The Style Gate offers these as a numbered menu at the start of a run; preset: ivory-postcard is the shortcut that skips the menu, for automation and series work. Three different grounds is deliberate — it is what gives the candidate-diversity rule something to draw on. Registry and authoring guide: presets/registry.md.

Unlike a series memory, a preset may lock composition, aspect_ratio, and layout: a preset is avowedly a template, which is what it is for.

Visual Memory & Series

The engine keeps a visual system across images, not just within one.

Ask Read
"now do the next one," "同一套視覺," brand assets supplied prompts/visual-memory.md
"一套 10 頁簡報," "campaign 全尺寸," carousel, all platform sizes prompts/series.md

Visual Memory locks the identity fields — style, visual language, palette, typography, texture tier — and leaves layout, composition, abstraction level, and aspect ratio free per image. Locking composition produces a template, not a system. On a memory run, Art Direction still runs but auto-commits to the locked DNA rather than offering candidates. A lock that no longer fits gets forked, never silently mutated. Contract: spec/visual-memory.schema.md.

Series runs Intent → Analyzer → Visual Language → Art Direction once, then fans out per output. Generate the hero first and pass QC before derivatives — a weak hero multiplies into N weak frames. Cross-image QC scores palette drift, typographic identity, texture tier, anchor legibility, and compositional variety; a single outlier is fixed alone, never by re-running the set.

Run Manifest

Every run emits spec/visual-manifest.schema.md: direction taken and runner-up, visual system, quality vector, iteration history, prompt hash, provenance.

This is what makes the cheap paths cheap:

User says Re-run
"同一張,改用 Flux" Adapter → Reviewer → Generate
"改用 B 那個方向" Planner → downstream
"一模一樣再生一次" Generate only
"同一套視覺,換主題" Analyzer → Art Direction (auto-commit) → Planner → downstream

Never re-run the Analyzer when a valid image_report for the same source image already exists. Keep the manifest internal unless the user asks for it or the run is part of a series.

Editorial Score & Modes

This is the Editorial Score — an input measure of the source photo, produced by the Analyzer. It is not the Quality Score from Step 8, which measures the generated image on different bands.

Editorial Score Mode
90+ Premium Editorial — refined extraction, minimal recovery
70–89 Standard Editorial
50–69 Compensation Mode — apply Recovery stack
<50 Concept Reconstruction — abstract reinterpretation

Output Contract

Match the requested depth. Default to a concise direction summary plus GenerationRequest.

  • Include an Image Report only when a source image is analyzed.
  • Include full VisionSpec / EditorialSpec when the user asks for a reusable direction, comparison, or model switch.
  • Include a generated image only when an image-generation tool is available and the user asks for generation; otherwise return the model-ready prompt.
  • Include Quality Grade and evaluator notes after generating, or when the user requests review.
  • Include the full quality vector only when the user asks why, or when a dimension failed.
  • Include the VisualManifest only on request, or when the run belongs to a series.
  • Present Art Direction candidates as a 3-line table — name, thesis, trade-off — never as raw YAML.

Model switch without re-analysis

User: "同一份方向,改用 Ideogram" → reuse VisionSpec / EditorialSpec, run adapters/ideogram.md only.

Direction switch without re-analysis

User: "改用 B 那個方向" → reuse Intent + Image Report, set the runner-up as selected, re-run Planner onward.

Series and continuation

User: "同一套視覺,做東京街景" → load the Visual Memory, run Analyzer on the new photo, let Art Direction auto-commit to the locked DNA, and Planner sets free fields only.

Bilingual output

  • Image prompt: English (model-optimized)
  • Analysis/direction summary: match user's language (中文/English)

Guardrails

Never:

  • Redraw, filter, or stylize the original photo region when photo_policy.fidelity: required
  • Blindly copy fixed 60/30/10 layout — adapt proportions to subject
  • Mix style languages without Reviewer pass
  • Overload typography or decorative elements

Always:

  • Preserve the source's arrangement, overlaps, and relative scale — abstraction removes detail, not relationships
  • Name one projection, one ground plane, one light direction; give every grounded object a contact shadow
  • Preserve visual identity of source photo when one is provided
  • Make every abstract mark traceable to a photo fact, theme fact, brand cue, or stated goal
  • Keep prompts imageable and concrete
  • Apply Recovery only when Image Report warrants it
  • Give each direction a thesis before giving it a palette
  • Fix one layer per iteration, and stop at three
  • Fork a Visual Memory rather than mutating a lock to rescue one image

Style & Layout Reference

Asset module File
Ground & Render Mode assets/ground.md
Scene construction (space) assets/scene-construction.md
Texture permission assets/texture.md
Palette assets/palette.md
Typography assets/typography.md
Style File
Swiss styles/swiss.md
Kinfolk styles/kinfolk.md
MUJI styles/muji.md
Brutalist styles/brutalist.md
Wallpaper* styles/wallpaper.md
Apartamento styles/apartamento.md
Purple Magazine styles/purple.md
POPEYE styles/popeye.md
Monocle styles/monocle.md
COS styles/cos.md
Period Travel Poster styles/travel-poster.md
Layout File
Editorial Poster layouts/poster.md
Magazine Cover layouts/magazine-cover.md
Gallery Print layouts/gallery-print.md
Zine layouts/zine.md
Editorial Spread layouts/editorial-spread.md
Campaign Poster layouts/campaign-poster.md
Brand Key Visual layouts/brand-key-visual.md
Product Editorial layouts/product-editorial.md
Website Hero layouts/website-hero.md
Social Asset layouts/social-asset.md
Moodboard layouts/moodboard.md
Interface Asset layouts/interface-asset.md
Photo-Abstract Diptych layouts/photo-abstract-diptych.md
Presentation Deck layouts/presentation-deck.md

Extending the Engine

Extend Action Touch Decision Engine?
New style (Aesop, NYT Mag) Add styles/foo.md No
New preset Add presets/foo.md + register No
New layout Add layouts/foo.md No
New recovery Add recovery/foo.md No
New image model Add adapters/foo.md + register No
New intent family Edit prompts/intent.md Yes (minimal)
New QC dimension Edit prompts/evaluator.md + map a layer in prompts/iteration.md Yes (minimal)
New lockable DNA field Edit spec/visual-memory.schema.md + enforce in prompts/reviewer.md Yes (minimal)

See adapters/_template.md for new models.

Extending Styles

Add new magazines/brands by creating styles/your-style.md with Style DNA table + compiler clauses. No need to rewrite SKILL.md.

Engine Reference

Layer File
Intent Engine prompts/intent.md
Style Gate prompts/style-gate.md
Style Brief prompts/style-brief.md
Visual Analyzer prompts/analyzer.md
Visual Language Engine prompts/visual-language.md
Art Direction Engine prompts/art-direction.md
Visual Planner prompts/planner.md
Recovery Engine prompts/recovery.md
Prompt Compiler prompts/compiler.md
Prompt Reviewer prompts/reviewer.md
Quality Evaluator prompts/evaluator.md
Iteration Engine prompts/iteration.md
Visual Memory prompts/visual-memory.md
Series Planner prompts/series.md
Preset Registry presets/registry.md
Contract File
VisionSpec / EditorialSpec spec/editorial-spec.schema.md
VisualManifest spec/visual-manifest.schema.md
VisualMemory spec/visual-memory.schema.md

Agent Config

Model parameters: agents/openai.yaml

Version History

  • 0a73656 Current 2026-08-16 15:53

    重构照片抽象对开页布局,移除受版权限制的上游引用,基于本地规范重写以确保MIT许可合规。

  • 540bb1b 2026-08-12 09:04

Metadata

Files
0
Version
0a73656
Hash
5813b689
Indexed
2026-08-12 09:04

inicio - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-16 18:00
浙ICP备14020137号-1 $mapa de visitantes$