intent-to-3d-brief-writer
Purpose
Translate a confirmed user intent (from blender-brainstorming or a clear initial request) into a structured 3D brief that downstream planners can consume without re-asking. Inspired by the "Analysis phase" pattern in BMad-Method (PRD / project brief), adapted for 3D scene work and non-Blender users.
This skill produces a brief, not a plan. The brief has fixed slots for subject, mood, deliverables, constraints, evidence expectations, and acceptance criteria. Planners consume the brief; they do not negotiate with it.
Quick start
- read confirmed intent from prior step (brainstorming or original request)
- fill the 8 brief slots
- echo the brief to the user for confirmation
- hand off to the relevant planner once confirmed
When to use
- right after
blender-brainstorming confirms user intent
- when the user provides a structured request that just needs format normalization
- before any planner skill (
product-hero-scene-planner, composition / lighting / material planners)
- when multiple planners need to share the same source-of-truth brief
When not to use
- intent is still ambiguous (run
blender-brainstorming first)
- the user is mid-execution and asks for a re-brief (route to troubleshooting instead)
- the request is iteration on existing output ("make it darker") — that's a planner-level edit, not a new brief
Trigger phrases
- "lock the brief"
- "write the brief from this conversation"
- "what's the formal scope?"
- "before planning, write the spec"
Prerequisites / readiness
- confirmed intent from prior step
- no Blender runtime required
- works in text-only mode
Input schema
Required inputs
- confirmed intent paragraph (from brainstorming or user)
- target deliverable type (image / GLB / web hero / iteration loop / docs)
- audience (non-Blender-technical user / mixed / technical-OK)
Optional inputs
- brand / mood / reference notes
- performance / time / scope constraints
- prior similar briefs to match style
Assumptions to confirm
- the user accepts a structured brief format
- the brief slots are exhaustive (subject, mood, deliverables, constraints, evidence, acceptance, audience, owner)
- runtime status is
Not Run and may stay so
Output schema
Primary output — the 8-slot brief
# 3D Brief: <short title>
1. Subject. <what the scene is about>
2. Mood / style. <visual mood, tone, references>
3. Deliverables. <render image / GLB / preview / response>
4. Constraints. <performance, scope, time, brand>
5. Evidence expectations. <which truth labels acceptable; required evidence fields>
6. Acceptance criteria. <how we know the deliverable matches intent>
7. Audience. <who reads the final response>
8. Owner. <who runs and verifies>
Secondary output
- list of decisions explicitly deferred to planners
- explicit unknowns flagged
Evidence / caveat output
- runtime status:
Not Run
- artifact status:
Not Produced
- brief is a contract; planners should not silently expand scope
Required laws
- ../../laws/non-blender-user-language.md
- ../../laws/evidence-before-done.md
- ../../laws/no-arbitrary-python-interface.md
- ../../laws/official-runtime-only.md
Official runtime boundary
This skill does not install Blender, run Blender, configure MCP, or claim artifacts. Output is a structured text brief.
Operating procedure
- Read confirmed intent (from brainstorming or original request).
- Pull each of the 8 slots one at a time. If a slot is missing, ask one targeted question per missing slot in a single batch.
- Write the brief in markdown using the 8-slot template.
- List decisions deferred to planners (e.g. "lighting style left to lighting planner per mood").
- Echo the brief to the user. Ask for confirm or edit.
- After confirmation, hand off to the relevant planner.
Decision tree
- intent is fully covered by 8 slots → write brief, no questions
- 1-3 slots missing → batch missing-slot questions, then write
- 4+ slots missing → route back to
blender-brainstorming (intent isn't actually confirmed)
- audience is mixed (technical + non-technical) → write twice (one technical paragraph, one plain-language) — but final user-facing response always plain-language
Playbooks
- Playbook A: "Product hero brief" — subject = product, mood = brand-aligned, deliverable = render + GLB, audience = marketing team
- Playbook B: "Web hero brief" — deliverable = GLB + preview image, constraint = poly budget for web
- Playbook C: "Iteration loop brief" — deliverable = text-only plan first, runtime later
- Playbook D: "Mixed audience brief" — write technical + plain-language sections
Mode handling
Text-only mode
- text only, no runtime calls
- runtime status:
Not Run
- artifact status:
Not Produced
Runtime-ready mode
- still text-only for this skill (brief is always text)
- runtime activation happens in downstream planner / readiness flow
Blocked runtime mode
- still produces brief
- adds explicit note that downstream planning may be blocked too
Validation checklist
Pass / Warn / Fail rubric
| Category |
Pass |
Warn |
Fail |
| Slot coverage |
All 8 filled or Unknown |
1-2 slots missing without note |
3+ slots missing |
| Plain language |
No jargon |
Minor jargon explained |
Jargon-heavy |
| Acceptance criteria |
Observable |
Partly subjective |
Fully subjective |
| Confirmation |
User reviewed and confirmed |
Echoed but not confirmed |
Not echoed |
Failure handling
- user changes intent mid-brief: pause, mark intent as not-confirmed, route back to brainstorming
- conflicting deliverables (e.g. "GLB and 50MB poly budget"): flag conflict in slot 4, ask user to resolve
- user wants the brief to skip slots: explicit
Unknown markers, never invent
Troubleshooting
- if the brief feels too long, write a "TL;DR" line at top but keep all 8 slots
- if the user pushes for execution, route to readiness checker; brief stays as locked contract
Best practices
- 8 slots, every time, every brief
- echo the brief to the user before handoff
- name the owner explicitly; ambiguity here breaks accountability
Good examples
- "Brief: Cyberpunk Shoe Web Hero. Subject: floating cyberpunk sneaker. Mood: neon-lit, glossy dark floor, dramatic. Deliverables: preview image + GLB for web. Constraints: poly budget for mobile web; brand neon palette. Evidence:
Verified requires render path + GLB path + validation notes. Acceptance: subject framing centered, neon visible, web GLB ≤ 10MB. Audience: marketing team (non-Blender). Owner: . Deferred: exact lighting placement to lighting planner; exact camera angle to composition planner."
Bad examples
- "Brief: shoe render. Make it cool. Hand off to planner." (5 slots missing, jargon-leaning, no acceptance criteria, no owner)
User-facing response template
- One-line TL;DR
- 8-slot structured brief in markdown
- Decisions deferred to planners
- Confirmation prompt: "echo back any edits or confirm to proceed"
Anti-patterns
- writing a brief without echoing to user
- inventing slots that weren't confirmed (especially mood and constraints)
- letting planners re-negotiate the brief after handoff
- using Blender jargon
Cross-skill handoff
- After: relevant planner (
product-hero-scene-planner for product hero context, then composition / lighting / material planners)
- If runtime needed next: route to
official-runtime-readiness-checker after planning
- If brief reveals intent ambiguity: route back to
blender-brainstorming
Non-goals
- making the plan (planner's job)
- running Blender
- setting up runtime
- writing the final user response (response writer's job)
References
- Inspired by BMad-Method "Analysis phase" pattern (https://docs.bmad-method.org/reference/commands/)
- BlendOps law: ../../laws/non-blender-user-language.md
- BlendOps law: ../../laws/evidence-before-done.md
- Skill system: ../../docs/skill-system.md
1---2name: intent-to-3d-brief-writer3description: Convert a non-Blender-user's natural-language request into a structured 3D brief (subject, mood, deliverables, constraints, evidence expectations). Use as first step before any planner.4---56# intent-to-3d-brief-writer78## Purpose910Translate a confirmed user intent (from `blender-brainstorming` or a clear initial request) into a structured 3D brief that downstream planners can consume without re-asking. Inspired by the "Analysis phase" pattern in BMad-Method (PRD / project brief), adapted for 3D scene work and non-Blender users.1112This skill produces **a brief, not a plan**. The brief has fixed slots for subject, mood, deliverables, constraints, evidence expectations, and acceptance criteria. Planners consume the brief; they do not negotiate with it.1314## Quick start1516- read confirmed intent from prior step (brainstorming or original request)17- fill the 8 brief slots18- echo the brief to the user for confirmation19- hand off to the relevant planner once confirmed2021## When to use2223- right after `blender-brainstorming` confirms user intent24- when the user provides a structured request that just needs format normalization25- before any planner skill (`product-hero-scene-planner`, composition / lighting / material planners)26- when multiple planners need to share the same source-of-truth brief2728## When not to use2930- intent is still ambiguous (run `blender-brainstorming` first)31- the user is mid-execution and asks for a re-brief (route to troubleshooting instead)32- the request is iteration on existing output ("make it darker") — that's a planner-level edit, not a new brief3334## Trigger phrases3536- "lock the brief"37- "write the brief from this conversation"38- "what's the formal scope?"39- "before planning, write the spec"4041## Prerequisites / readiness4243- confirmed intent from prior step44- no Blender runtime required45- works in text-only mode4647## Input schema4849### Required inputs5051- confirmed intent paragraph (from brainstorming or user)52- target deliverable type (image / GLB / web hero / iteration loop / docs)53- audience (non-Blender-technical user / mixed / technical-OK)5455### Optional inputs5657- brand / mood / reference notes58- performance / time / scope constraints59- prior similar briefs to match style6061### Assumptions to confirm6263- the user accepts a structured brief format64- the brief slots are exhaustive (subject, mood, deliverables, constraints, evidence, acceptance, audience, owner)65- runtime status is `Not Run` and may stay so6667## Output schema6869### Primary output — the 8-slot brief7071```md72# 3D Brief: <short title>73741. Subject. <what the scene is about>752. Mood / style. <visual mood, tone, references>763. Deliverables. <render image / GLB / preview / response>774. Constraints. <performance, scope, time, brand>785. Evidence expectations. <which truth labels acceptable; required evidence fields>796. Acceptance criteria. <how we know the deliverable matches intent>807. Audience. <who reads the final response>818. Owner. <who runs and verifies>82```8384### Secondary output8586- list of decisions explicitly deferred to planners87- explicit unknowns flagged8889### Evidence / caveat output9091- runtime status: `Not Run`92- artifact status: `Not Produced`93- brief is a contract; planners should not silently expand scope9495## Required laws9697- ../../laws/non-blender-user-language.md98- ../../laws/evidence-before-done.md99- ../../laws/no-arbitrary-python-interface.md100- ../../laws/official-runtime-only.md101102## Official runtime boundary103104This skill does not install Blender, run Blender, configure MCP, or claim artifacts. Output is a structured text brief.105106## Operating procedure1071081. Read confirmed intent (from brainstorming or original request).1092. Pull each of the 8 slots one at a time. If a slot is missing, ask one targeted question per missing slot in a single batch.1103. Write the brief in markdown using the 8-slot template.1114. List decisions deferred to planners (e.g. "lighting style left to lighting planner per mood").1125. Echo the brief to the user. Ask for confirm or edit.1136. After confirmation, hand off to the relevant planner.114115## Decision tree116117- intent is fully covered by 8 slots → write brief, no questions118- 1-3 slots missing → batch missing-slot questions, then write119- 4+ slots missing → route back to `blender-brainstorming` (intent isn't actually confirmed)120- audience is mixed (technical + non-technical) → write twice (one technical paragraph, one plain-language) — but final user-facing response always plain-language121122## Playbooks123124- Playbook A: "Product hero brief" — subject = product, mood = brand-aligned, deliverable = render + GLB, audience = marketing team125- Playbook B: "Web hero brief" — deliverable = GLB + preview image, constraint = poly budget for web126- Playbook C: "Iteration loop brief" — deliverable = text-only plan first, runtime later127- Playbook D: "Mixed audience brief" — write technical + plain-language sections128129## Mode handling130131### Text-only mode132133- text only, no runtime calls134- runtime status: `Not Run`135- artifact status: `Not Produced`136137### Runtime-ready mode138139- still text-only for this skill (brief is always text)140- runtime activation happens in downstream planner / readiness flow141142### Blocked runtime mode143144- still produces brief145- adds explicit note that downstream planning may be blocked too146147## Validation checklist148149- [ ] all 8 slots filled or marked `Unknown` explicitly150- [ ] subject is non-jargon plain language151- [ ] deliverables list is exhaustive (no implicit "and other things")152- [ ] evidence expectations name truth labels153- [ ] acceptance criteria observable, not subjective154- [ ] audience is named explicitly155- [ ] owner is named (operator / agent / human)156- [ ] decisions deferred listed157- [ ] runtime status remains `Not Run`158- [ ] no Blender jargon in user-facing brief159160## Pass / Warn / Fail rubric161162| Category | Pass | Warn | Fail |163|---|---|---|---|164| Slot coverage | All 8 filled or `Unknown` | 1-2 slots missing without note | 3+ slots missing |165| Plain language | No jargon | Minor jargon explained | Jargon-heavy |166| Acceptance criteria | Observable | Partly subjective | Fully subjective |167| Confirmation | User reviewed and confirmed | Echoed but not confirmed | Not echoed |168169## Failure handling170171- user changes intent mid-brief: pause, mark intent as not-confirmed, route back to brainstorming172- conflicting deliverables (e.g. "GLB and 50MB poly budget"): flag conflict in slot 4, ask user to resolve173- user wants the brief to skip slots: explicit `Unknown` markers, never invent174175## Troubleshooting176177- if the brief feels too long, write a "TL;DR" line at top but keep all 8 slots178- if the user pushes for execution, route to readiness checker; brief stays as locked contract179180## Best practices181182- 8 slots, every time, every brief183- echo the brief to the user before handoff184- name the owner explicitly; ambiguity here breaks accountability185186## Good examples187188- "Brief: Cyberpunk Shoe Web Hero. Subject: floating cyberpunk sneaker. Mood: neon-lit, glossy dark floor, dramatic. Deliverables: preview image + GLB for web. Constraints: poly budget for mobile web; brand neon palette. Evidence: `Verified` requires render path + GLB path + validation notes. Acceptance: subject framing centered, neon visible, web GLB ≤ 10MB. Audience: marketing team (non-Blender). Owner: <user>. Deferred: exact lighting placement to lighting planner; exact camera angle to composition planner."189190## Bad examples191192- "Brief: shoe render. Make it cool. Hand off to planner." (5 slots missing, jargon-leaning, no acceptance criteria, no owner)193194## User-facing response template195196- One-line TL;DR197- 8-slot structured brief in markdown198- Decisions deferred to planners199- Confirmation prompt: "echo back any edits or confirm to proceed"200201## Anti-patterns202203- writing a brief without echoing to user204- inventing slots that weren't confirmed (especially mood and constraints)205- letting planners re-negotiate the brief after handoff206- using Blender jargon207208## Cross-skill handoff209210- After: relevant planner (`product-hero-scene-planner` for product hero context, then composition / lighting / material planners)211- If runtime needed next: route to `official-runtime-readiness-checker` after planning212- If brief reveals intent ambiguity: route back to `blender-brainstorming`213214## Non-goals215216- making the plan (planner's job)217- running Blender218- setting up runtime219- writing the final user response (response writer's job)220221## References222223- Inspired by BMad-Method "Analysis phase" pattern (https://docs.bmad-method.org/reference/commands/)224- BlendOps law: ../../laws/non-blender-user-language.md225- BlendOps law: ../../laws/evidence-before-done.md226- Skill system: ../../docs/skill-system.md