agentleFS
ThanhNguyxnOrgThanhNguyxnOrg/blendops/skills/output-format-decision/SKILL.md

output-format-decision

Skill3 starsChanged 6 months agoMITView on GitHub

Pick the right output file format (PNG / JPG / WebP / OpenEXR / TIFF) per use case based on bit depth, compression, transparency, and consumer support.

The file

We split this skill into the rules it gives an agent

4 rules. About 0 are common, 3 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈3

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Avoid mismatched output formats (e.g., JPEG for VFX, EXR for web, TIFF for social).

    line 9
  2. Distinctive:

    when consumer requires specific format

    line 19
  3. Distinctive:

    when transparency / HDR / loss tolerance matters

    line 20
  4. Very specific:

    Default states for this decision skill: Runtime status: Not Run, Artifact status: Not Produced.

    line 79

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

output-format-decision

Purpose

Avoid mismatched output formats (e.g., JPEG for VFX, EXR for web, TIFF for social). Match format to consumer pipeline.

Quick start

  • name the consumer
  • pick one format per output stream
  • pin bit depth + compression + alpha rules
  • emit a 4-line config

When to use

  • before render
  • when consumer requires specific format
  • when transparency / HDR / loss tolerance matters

When not to use

<!-- blendops:generated:start exclusions -->
  • raw modeling without rendering → use ../cycles-vs-eevee-decision/SKILL.md (Delegates out-of-scope requests to cycles-vs-eevee-decision)
  • 3D/GLB exports (out of scope — use glb-web-handoff, mobile-glb-budget, or glb-animation-handoff) → use ../glb-animation-handoff/SKILL.md (out of scope — use glb-web-handoff, mobile-glb-budget, or glb-animation-handoff)
  • verifying saved files on disk after rendering → use ../render-export-evidence/SKILL.md (use render-export-evidence)
<!-- blendops:generated:end exclusions -->

Trigger phrases

<!-- blendops:generated:start triggers -->
  • "PNG or JPEG"
  • "do we need EXR"
  • "what format for the web"
<!-- blendops:generated:end triggers -->

Prerequisites / readiness

  • consumer pipeline known
  • color management decision made (color-management-decision)

Input schema

Required inputs

InputWhy it is required
ConsumerDrives format choice per output stream
Color management configConsumed from color-management-decision to align bit depth and container support
Transparency required?Drives alpha channel and container choice (e.g., PNG/WebP/OpenEXR vs JPG)

Optional inputs

InputUse
File-size budgetGuides lossless vs lossy compression decision

Assumptions to confirm

  • The consumer pipeline can read the chosen container/codec (verify if non-default).
  • Lossy compression is acceptable when chosen.

Output schema

Primary output

A 4-line format record per output stream: format, bit depth, compression, alpha.

Secondary output

  • per-output stream rules
  • caveats per choice
  • evidence label

Evidence / caveat output

Runtime status: Not Run | Attempted | Produced | Verified | Failed
Artifact status: Not Produced | Produced | Verified | Failed
Evidence used: <links, paths, logs, or "none">
Limitations: <known gaps>
  • Default states for this decision skill: Runtime status: Not Run, Artifact status: Not Produced.
  • Truth states are downgrade-only, never upgrade. Pinning a format never produces a file.

Required laws

  • ../../laws/evidence-before-done.md
  • ../../laws/non-blender-user-language.md
  • ../../laws/no-arbitrary-python-interface.md
  • ../../laws/official-runtime-only.md

Official runtime boundary

Decision skill — does not run Blender. Pins format; operator applies to scene render output.

Operating procedure

  1. Identify consumer pipeline + consume color config from color-management-decision.
  2. Select format per references/format-decision-matrix.md.
  3. Pin bit depth + compression + alpha per output stream.
  4. List stream rules and caveats.
  5. Hand off format record to operator (and to resolution-aspect-decision if resolution is unpinned, or render-export-evidence once rendered).

Decision tree

Web hero (consuming sRGB config)?
  → PNG (lossless) or WebP (lossy/lossless); 8-bit; alpha if needed
JPEG-only consumer?
  → JPG; 8-bit; no alpha; lossy quality 85-95
VFX / film pipeline (consuming Linear config)?
  → OpenEXR; 16-bit half float; ZIP compression; alpha as channel
Print?
  → TIFF; 16-bit; LZW or no compression; alpha optional per print prep
Social / mobile (WebP-first)?
  → WebP; 8-bit; alpha optional; lossy quality 85-90
HDR display delivery?
  → PNG 16-bit or OpenEXR; verify consumer supports HDR container

Playbooks

Playbook A: Web hero PNG

PNG, 8-bit per channel, lossless compression, alpha if needed (consumes color config from color-management-decision).

Playbook B: VFX EXR

OpenEXR, 16-bit half float, ZIP compression, alpha as channel. Multi-pass support (consumes Linear config from color-management-decision).

Playbook C: Mobile-first social

WebP, 8-bit, quality 85-90 compression, alpha optional (consumes color config from color-management-decision).

Playbook D: Print

TIFF, 16-bit, LZW or no compression, alpha optional (consumes color config from color-management-decision; resolution owned by resolution-aspect-decision).

Mode handling

Text-only mode

Emit format record + per-stream rules + caveats (Runtime status: Not Run, Artifact status: Not Produced).

Runtime-ready mode

Emit format record for the operator to apply in Blender render output settings. Pinning a format never produces or verifies a file; hand off post-render file verification to render-export-evidence.

Blocked runtime mode

Emit format record only (Runtime status: Not Run, Artifact status: Not Produced).

Validation checklist

  • Consumer + color config identified
  • Format chosen
  • Bit depth chosen
  • Compression chosen
  • Alpha rule explicit
  • Caveats listed

Pass / Warn / Fail rubric

VerdictCriteria
PassFormat + bit depth + compression + alpha pinned; matches consumer; caveats listed.
WarnFormat pinned but compression / alpha ambiguous.
FailWrong format for consumer (JPEG for VFX, EXR for web), missing bit depth, "any format" answer.

Failure handling

  • Consumer unknown → ask once; if still unknown, default to PNG, 8-bit, lossless compression, alpha enabled (paired with upstream color-management-decision).
  • Multiple consumers → define one format record per output stream (or pin the most restrictive format if single-stream delivery is required).

Troubleshooting

ProblemResponse
File too largeReduce bit depth, increase compression, or switch stream to WebP / JPG
HDR data lostSwitch container/bit depth to OpenEXR (16-bit half float) or PNG 16-bit
Alpha disappearedVerify chosen format supports alpha (PNG / WebP / OpenEXR / TIFF yes; JPG no)
Color shift in delivered fileHand off to color-management-decision to verify color config and consumer display transform

Best practices

  • Define one format record per consumer output stream; never convert or re-encode files post-render.
  • For web: use WebP or PNG based on consumer support and alpha/compression requirements.
  • For VFX: always pin OpenEXR; never pin JPG or 8-bit PNG for compositing pipelines.
  • Pass the pinned format record to render-export-evidence for post-render verification.

Good examples

  • "Web hero stream: PNG, 8-bit, lossless compression, alpha enabled (using upstream color config from color-management-decision)."

Bad examples

  • "Save as PNG." — missing bit depth, compression, and alpha rules.

User-facing response template

Consumer: <web / VFX / print / social / mobile>
Color config: <reference color-management-decision output>

Output(s):
  <stream>: <format>, <bit depth>, <compression>, <alpha>

Caveats: <list>
Limitations: <gaps>
Next: render-export-evidence

Anti-patterns

  • "Any format will work."
  • JPEG for VFX.
  • 8-bit for HDR delivery.
  • Lossy compression where archival is required.

Cross-skill handoff

<!-- blendops:generated:start handoffs -->
  • [upstream_reference] Color management → ../color-management-decision/SKILL.md
  • [upstream_reference] Resolution & aspect ratio → ../resolution-aspect-decision/SKILL.md
  • [upstream_reference] Engine choice → ../cycles-vs-eevee-decision/SKILL.md
  • [progression] Render file verification → ../render-export-evidence/SKILL.md
  • [progression] 3D / GLB exports (out of scope here) (glb-animation-handoff) → ../glb-animation-handoff/SKILL.md
  • [boundary_delegation] 3D / GLB exports (out of scope here) (mobile-glb-budget) → ../mobile-glb-budget/SKILL.md
  • [progression] 3D / GLB exports (out of scope here) (glb-web-handoff) → ../glb-web-handoff/SKILL.md
<!-- blendops:generated:end handoffs -->

Non-goals

  • Convert formats post-render.
  • Run Blender.
  • Compress / re-encode files.

References

  • references/format-decision-matrix.md
  • references/bit-depth-rules.md
  • references/compression-tradeoffs.md
  • ../../docs/skill-system.md

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.