@a-company/atelier 0.37.0 → 0.38.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-JPZ4F4PW.js → chunk-3ARBOSWY.js} +64 -5
- package/dist/chunk-3ARBOSWY.js.map +1 -0
- package/dist/cli.js +11469 -413
- package/dist/cli.js.map +1 -1
- package/dist/{dist-M67UZGFQ.js → dist-3YQK6PI6.js} +2 -2
- package/dist/index.cjs +3193 -227
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +701 -8
- package/dist/index.d.ts +701 -8
- package/dist/index.js +7237 -72
- package/dist/index.js.map +1 -1
- package/dist/mcp.js +2898 -507
- package/dist/mcp.js.map +1 -1
- package/package.json +6 -6
- package/src/web/inline-app.ts +55 -4
- package/src/web/timeline-state-types.ts +28 -0
- package/src/web/timeline-view.test.ts +99 -0
- package/src/web/timeline-view.ts +339 -0
- package/src/web/workspace-app.ts +3146 -0
- package/templates/workspace/.claude/agents/atelier-iris.md +75 -0
- package/templates/workspace/.claude/agents/atelier-lux.md +67 -0
- package/templates/workspace/.claude/agents/atelier-quill.md +61 -0
- package/templates/workspace/.gitignore +30 -0
- package/templates/workspace/.paradigm/personas/_shared/cascade-merge.md +172 -0
- package/templates/workspace/CLAUDE.md +93 -0
- package/templates/workspace/README.md +75 -0
- package/templates/workspace/SETUP.md +127 -0
- package/templates/workspace/_brand/.atelier-brand.yaml +34 -0
- package/templates/workspace/_brand/DESIGN.md +56 -0
- package/templates/workspace/_brand/SCRIPT.md +41 -0
- package/templates/workspace/_brand/STORYBOARD.md +33 -0
- package/templates/workspace/_packs/README.md +54 -0
- package/templates/workspace/projects/README.md +49 -0
- package/templates/workspace/workspace.atelier +22 -0
- package/university/index.yaml +1 -1
- package/dist/chunk-5QQESXI6.js +0 -4432
- package/dist/chunk-5QQESXI6.js.map +0 -1
- package/dist/chunk-JPZ4F4PW.js.map +0 -1
- package/dist/cli.cjs +0 -6313
- package/dist/cli.cjs.map +0 -1
- package/dist/cli.d.cts +0 -1
- package/dist/cli.d.ts +0 -1
- package/dist/mcp.cjs +0 -5462
- package/dist/mcp.cjs.map +0 -1
- /package/dist/{dist-M67UZGFQ.js.map → dist-3YQK6PI6.js.map} +0 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# Workspace setup runbook
|
|
2
|
+
|
|
3
|
+
> **For the agent team.** When the creator asks to "get set up" (or "run the
|
|
4
|
+
> setup checklist", "am I ready to render", "check my environment"), work
|
|
5
|
+
> through this file top to bottom. For each item: run the **Check**, judge it
|
|
6
|
+
> against **Pass**, and if it fails, walk the creator through the **Fix** — then
|
|
7
|
+
> re-run the Check to confirm. Do NOT skip steps silently. End with the
|
|
8
|
+
> **Report** at the bottom: a ✓/✗/– line per item plus the single next action.
|
|
9
|
+
>
|
|
10
|
+
> Run the checks with the `Bash` tool. Surface command output verbatim when an
|
|
11
|
+
> item fails — don't paraphrase errors. Detect the OS first (`uname`) so you
|
|
12
|
+
> give the right install command (the Fixes below show macOS/Homebrew; on Linux
|
|
13
|
+
> use the distro package manager, on Windows use winget/scoop or the installer
|
|
14
|
+
> links).
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Required — the creator cannot render without these
|
|
19
|
+
|
|
20
|
+
### 1. Claude Code
|
|
21
|
+
- **Check:** You're running inside it, so this passes by definition.
|
|
22
|
+
- **Pass:** This session exists.
|
|
23
|
+
- **Fix:** n/a.
|
|
24
|
+
|
|
25
|
+
### 2. Node.js 22+
|
|
26
|
+
- **Check:** `node --version`
|
|
27
|
+
- **Pass:** major version ≥ 22. (Everything below runs through `npx`, which needs
|
|
28
|
+
Node — so check this first.)
|
|
29
|
+
- **Fix:** Install Node 22 LTS from <https://nodejs.org> (or `nvm install 22 && nvm use 22`).
|
|
30
|
+
Re-run the Check.
|
|
31
|
+
|
|
32
|
+
### 3. Hyperframes + the render toolchain ← the important one
|
|
33
|
+
Hyperframes is the render engine (Iris drives it via `npx hyperframes preview` /
|
|
34
|
+
`render`). There is **no manual install** — `npx` auto-fetches the published
|
|
35
|
+
`hyperframes` package on first run. It ships its own dependency checker; use it
|
|
36
|
+
as the authoritative check for the whole render toolchain:
|
|
37
|
+
|
|
38
|
+
- **Check:** `npx --yes hyperframes doctor`
|
|
39
|
+
- **Pass:** read the `✓ / ✗` lines it prints. You want `✓` on **FFmpeg**,
|
|
40
|
+
**FFprobe**, and **Chrome** (the three render-critical deps), plus Node and
|
|
41
|
+
adequate Disk/Memory.
|
|
42
|
+
> ⚠️ **`doctor` exits 0 even when a check fails.** Do NOT trust the exit code —
|
|
43
|
+
> judge by the `✗` markers in the output. Surface any `✗` line verbatim.
|
|
44
|
+
- **Fix**, per failing line:
|
|
45
|
+
- **FFmpeg / FFprobe ✗** → macOS `brew install ffmpeg` (ships both); Debian/Ubuntu
|
|
46
|
+
`sudo apt install ffmpeg`; Windows `winget install Gyan.FFmpeg`. Required for the
|
|
47
|
+
render → `.mp4`/`.mov`/`.webm` mux and all audio. Re-run `doctor`.
|
|
48
|
+
- **Chrome ✗** → `npx --yes hyperframes browser install` (Hyperframes renders by
|
|
49
|
+
driving headless Chrome). Re-run `doctor`.
|
|
50
|
+
- **Low Memory / Disk ⚠** → renders may fail or run slowly; have the creator free
|
|
51
|
+
resources. Not a hard blocker.
|
|
52
|
+
- **`npx hyperframes` errors entirely** → confirm step 2 passed and the first run
|
|
53
|
+
can reach the npm registry (a corporate proxy may need `npm config set proxy`).
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Optional — enhances the workflow, not required to render
|
|
58
|
+
|
|
59
|
+
### 5. Whisper (transcription)
|
|
60
|
+
- **Check:** `whisper-cli --help 2>/dev/null || whisper-cpp --help 2>/dev/null || echo MISSING`
|
|
61
|
+
- **Pass:** either binary responds. (Only needed if the creator will drop raw
|
|
62
|
+
recordings into `projects/<name>/media/` for auto-transcription.)
|
|
63
|
+
- **Fix:** macOS `brew install whisper-cpp`; otherwise build whisper.cpp from
|
|
64
|
+
<https://github.com/ggerganov/whisper.cpp>. Safe to skip until the first recording.
|
|
65
|
+
|
|
66
|
+
### 6. Paradigm learning loop (cross-session memory)
|
|
67
|
+
- **Check:** `ls ~/.paradigm/notebooks/quill ~/.paradigm/notebooks/lux ~/.paradigm/notebooks/iris 2>/dev/null || echo MISSING`
|
|
68
|
+
- **Pass:** all three notebook dirs exist → the team accumulates learning across
|
|
69
|
+
sessions. If MISSING, the agents still work fully from their workspace shims;
|
|
70
|
+
they just don't persist learning between sessions.
|
|
71
|
+
- **Fix:** Install the Paradigm plugin and the Atelier personas (Quill / Lux /
|
|
72
|
+
Iris) into `~/.paradigm/`. This is optional — only set it up if the creator
|
|
73
|
+
wants the agents to get smarter over time. Don't block setup on it.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Workspace verification — is THIS workspace intact?
|
|
78
|
+
|
|
79
|
+
### 7. Scaffold integrity
|
|
80
|
+
- **Check:** confirm these exist (use `Glob`/`ls`):
|
|
81
|
+
`workspace.atelier`, `_brand/`, `_packs/`, `projects/`,
|
|
82
|
+
`.claude/agents/atelier-quill.md`, `atelier-lux.md`, `atelier-iris.md`,
|
|
83
|
+
`.paradigm/personas/_shared/cascade-merge.md`, `CLAUDE.md`.
|
|
84
|
+
- **Pass:** all present.
|
|
85
|
+
- **Fix:** re-run `atelier workspace` in this folder — it's idempotent and
|
|
86
|
+
refreshes scaffold files without touching authored brand artifacts.
|
|
87
|
+
|
|
88
|
+
### 8. Brand artifacts authored (not placeholders)
|
|
89
|
+
- **Check:** read `_brand/DESIGN.md`, `_brand/SCRIPT.md`, `_brand/STORYBOARD.md`
|
|
90
|
+
and `_brand/.atelier-brand.yaml`; look for remaining `TODO` markers or template
|
|
91
|
+
placeholder text.
|
|
92
|
+
- **Pass:** the brand reflects the creator's real palette / typography / voice.
|
|
93
|
+
- **Fix:** offer to have **@atelier-quill** (voice + design) and **@atelier-lux**
|
|
94
|
+
(visual patterns) interview the creator and fill these in. Placeholders are not
|
|
95
|
+
a hard failure — flag them and move on.
|
|
96
|
+
|
|
97
|
+
### 9. Fonts staged (if the brand uses custom fonts)
|
|
98
|
+
- **Check:** if `_brand/.atelier-brand.yaml` names non-system fonts, confirm the
|
|
99
|
+
files exist under `_assets/fonts/<family>/`.
|
|
100
|
+
- **Pass:** every named custom font is present locally.
|
|
101
|
+
- **Fix:** stage the font files into `_assets/fonts/<family>/`. This is the
|
|
102
|
+
font-staging pattern — Hyperframes' render step does NOT reliably load web-CDN
|
|
103
|
+
fonts, so brand fonts must be local or renders fall back to a generic sans.
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Report
|
|
108
|
+
|
|
109
|
+
Summarize like this, then state the single next action:
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
Atelier setup check
|
|
113
|
+
✓ Node.js 22+ v22.x
|
|
114
|
+
✓ Hyperframes 0.6.x (npx)
|
|
115
|
+
✓ ffmpeg present
|
|
116
|
+
– Whisper not installed (optional — needed for transcription)
|
|
117
|
+
– Paradigm learning loop not installed (optional)
|
|
118
|
+
✓ Workspace scaffold intact
|
|
119
|
+
⚠ Brand artifacts still has TODO placeholders
|
|
120
|
+
✓ Fonts n/a (system fonts only)
|
|
121
|
+
|
|
122
|
+
Next: your brand still has placeholders — want @atelier-quill to draft your
|
|
123
|
+
voice + @atelier-lux your visual patterns? Or jump straight to a first project.
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Use ✓ pass, ✗ required-and-failing (must fix before render), ⚠ works-but-attention,
|
|
127
|
+
– optional-and-absent.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# {{WORKSPACE_NAME}} — structured brand overlay
|
|
2
|
+
#
|
|
3
|
+
# Agents read this for fields the markdown doesn't structure cleanly.
|
|
4
|
+
# DESIGN.md / SCRIPT.md / STORYBOARD.md are the source of truth for prose;
|
|
5
|
+
# this overlay captures the things agents query as data (palette, fonts,
|
|
6
|
+
# whitelists, etc).
|
|
7
|
+
#
|
|
8
|
+
# Cascade: project-tier `projects/<name>/.atelier-overlay.yaml` extends this
|
|
9
|
+
# per `.paradigm/personas/_shared/cascade-merge.md` (lists extend, scalars
|
|
10
|
+
# override, maps override-at-key).
|
|
11
|
+
|
|
12
|
+
name: "{{WORKSPACE_NAME}}"
|
|
13
|
+
|
|
14
|
+
voice:
|
|
15
|
+
register: TODO # one short phrase, e.g. clinical-editorial
|
|
16
|
+
tone: TODO # e.g. confident-not-cocky
|
|
17
|
+
exemplars: [] # quill mirrors these tonally
|
|
18
|
+
do: [] # tonal moves to make
|
|
19
|
+
dont: [] # tonal moves to never make
|
|
20
|
+
|
|
21
|
+
visual:
|
|
22
|
+
primary_palette: [paper, ink, accent]
|
|
23
|
+
typography:
|
|
24
|
+
display: Inter
|
|
25
|
+
body: Inter
|
|
26
|
+
treatment:
|
|
27
|
+
photos: TODO # e.g. high-key, generous negative space
|
|
28
|
+
motion: TODO # e.g. gentle ease-out, never bounce
|
|
29
|
+
aspect: 9:16 # default canvas aspect (1080:1920); override per project
|
|
30
|
+
|
|
31
|
+
techniques_whitelist:
|
|
32
|
+
- TODO
|
|
33
|
+
techniques_blacklist:
|
|
34
|
+
- TODO
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# {{WORKSPACE_NAME}} — Brand Design
|
|
2
|
+
|
|
3
|
+
> **Workspace-tier brand design.** This file describes the durable visual + tonal
|
|
4
|
+
> brand identity for **every** project under this workspace. Project-tier
|
|
5
|
+
> `projects/<name>/DESIGN.md` overrides + extends per the cascade rules
|
|
6
|
+
> (`.paradigm/personas/_shared/cascade-merge.md`).
|
|
7
|
+
|
|
8
|
+
## Audience
|
|
9
|
+
|
|
10
|
+
<!-- Who is this brand FOR? Specifics, not generics. Replace this placeholder. -->
|
|
11
|
+
TODO — who watches / reads / interacts with this brand?
|
|
12
|
+
|
|
13
|
+
## Voice register
|
|
14
|
+
|
|
15
|
+
<!-- The tonal posture. One short paragraph. Examples: "clinical-editorial,
|
|
16
|
+
confident-not-cocky" / "warm-conversational, never preachy" / etc. -->
|
|
17
|
+
TODO — describe the voice register.
|
|
18
|
+
|
|
19
|
+
## Visual register
|
|
20
|
+
|
|
21
|
+
<!-- The visual posture. One short paragraph. Examples: "editorial generosity,
|
|
22
|
+
restrained palette, type-led" / "kinetic-bold with primary-color blocks" -->
|
|
23
|
+
TODO — describe the visual register.
|
|
24
|
+
|
|
25
|
+
## Palette
|
|
26
|
+
|
|
27
|
+
<!-- Brand colors with semantic roles. Hex values. Lux reads these to make
|
|
28
|
+
palette decisions; Iris emits these as `--brand-palette-<role>` CSS vars
|
|
29
|
+
in every Hyperframes scaffold. -->
|
|
30
|
+
- `paper` — `#FFFFFF` — primary background
|
|
31
|
+
- `ink` — `#000000` — primary foreground / text
|
|
32
|
+
- `accent` — `#FF6B35` — single accent color used sparingly
|
|
33
|
+
|
|
34
|
+
## Typography
|
|
35
|
+
|
|
36
|
+
<!-- Brand fonts with usage. Lux reads these for typography staging; Iris emits
|
|
37
|
+
these as `--brand-font-<usage>` CSS vars. Use Hyperframes-compatible
|
|
38
|
+
fonts when possible (see https://hyperframes.mintlify.app/docs/fonts). -->
|
|
39
|
+
- `display` — Inter — large headlines, hero copy
|
|
40
|
+
- `body` — Inter — captions, body text, secondary copy
|
|
41
|
+
|
|
42
|
+
## Constraints
|
|
43
|
+
|
|
44
|
+
<!-- Hard rules. Lux and Iris MUST respect these. Examples:
|
|
45
|
+
- never use stock photography
|
|
46
|
+
- aspect is portrait 9:16 unless explicitly requested otherwise
|
|
47
|
+
- no exclamation marks in any on-screen copy -->
|
|
48
|
+
- TODO — list the brand hard rules.
|
|
49
|
+
|
|
50
|
+
## Success criteria
|
|
51
|
+
|
|
52
|
+
<!-- How do we know a finished video is "on brand"? Specific signals creator
|
|
53
|
+
uses to evaluate output. Examples:
|
|
54
|
+
- viewer can identify the brand from the first 1.5s without a logo
|
|
55
|
+
- palette restraint never exceeds 3 hues per frame -->
|
|
56
|
+
- TODO — list signals of brand-correct output.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# {{WORKSPACE_NAME}} — Brand Voice
|
|
2
|
+
|
|
3
|
+
> **Workspace-tier voice exemplars + do/don't.** Quill reads this as the
|
|
4
|
+
> default voice for every project. Project-tier `projects/<name>/SCRIPT.md`
|
|
5
|
+
> overrides + extends per the cascade rules.
|
|
6
|
+
|
|
7
|
+
## Voice exemplars
|
|
8
|
+
|
|
9
|
+
<!-- Real phrases that exemplify the brand voice. Quill mirrors these tonally
|
|
10
|
+
when drafting. Concrete > abstract. Three to five is enough.
|
|
11
|
+
Replace these placeholders with actual brand-voice samples. -->
|
|
12
|
+
- TODO — exemplar 1 (real phrase the brand would say)
|
|
13
|
+
- TODO — exemplar 2
|
|
14
|
+
- TODO — exemplar 3
|
|
15
|
+
|
|
16
|
+
## Do
|
|
17
|
+
|
|
18
|
+
<!-- Tonal moves the brand SHOULD make. -->
|
|
19
|
+
- TODO — e.g. "lead with the metric, not the brag"
|
|
20
|
+
- TODO — e.g. "end on the actionable beat, not the inspirational one"
|
|
21
|
+
|
|
22
|
+
## Don't
|
|
23
|
+
|
|
24
|
+
<!-- Tonal moves the brand should NEVER make. -->
|
|
25
|
+
- TODO — e.g. "no exclamation marks"
|
|
26
|
+
- TODO — e.g. "no hype adjectives (amazing, incredible, game-changing)"
|
|
27
|
+
|
|
28
|
+
## Default structure
|
|
29
|
+
|
|
30
|
+
<!-- The brand's default short-form structure. Quill uses this unless overridden.
|
|
31
|
+
Default is hook → story → proof → CTA — replace if the brand prefers
|
|
32
|
+
a different shape. -->
|
|
33
|
+
- hook
|
|
34
|
+
- story
|
|
35
|
+
- proof
|
|
36
|
+
- CTA
|
|
37
|
+
|
|
38
|
+
## Sign-off
|
|
39
|
+
|
|
40
|
+
<!-- The brand's canonical closing beat / tagline / sign-off. Optional. -->
|
|
41
|
+
TODO — closing beat if the brand has one (otherwise delete this section).
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# {{WORKSPACE_NAME}} — Brand Storyboard Patterns
|
|
2
|
+
|
|
3
|
+
> **Workspace-tier visual patterns.** Lux reads this for recurring storyboard
|
|
4
|
+
> primitives the brand favors. Project-tier `projects/<name>/STORYBOARD.md`
|
|
5
|
+
> overrides + extends per the cascade rules.
|
|
6
|
+
|
|
7
|
+
## Signature transitions
|
|
8
|
+
|
|
9
|
+
<!-- Named transitions the brand uses. Lux selects from this whitelist when
|
|
10
|
+
deciding scene-to-scene transitions. Each entry: name + when-to-use. -->
|
|
11
|
+
- TODO — e.g. "hard-cut: between distinct beats"
|
|
12
|
+
- TODO — e.g. "fade-under-vo: when voiceover continues across visual change"
|
|
13
|
+
|
|
14
|
+
## Recurring frames
|
|
15
|
+
|
|
16
|
+
<!-- Named frames the brand uses across episodes (intro shells, outro shells,
|
|
17
|
+
hero compositions). Lux references these by name in project storyboards
|
|
18
|
+
instead of redescribing each time. -->
|
|
19
|
+
- TODO — e.g. "swiss-grid-3up: 3-column comparison hero"
|
|
20
|
+
- TODO — e.g. "ken-burns-restrained: photographic still with gentle zoom"
|
|
21
|
+
|
|
22
|
+
## Technique whitelist
|
|
23
|
+
|
|
24
|
+
<!-- Visual techniques the brand allows. Lux picks from this list. -->
|
|
25
|
+
- TODO — e.g. swiss-grid
|
|
26
|
+
- TODO — e.g. ken-burns-restrained
|
|
27
|
+
- TODO — e.g. fade-under-vo
|
|
28
|
+
|
|
29
|
+
## Technique blacklist
|
|
30
|
+
|
|
31
|
+
<!-- Visual techniques the brand never uses (overrides any whitelist). -->
|
|
32
|
+
- TODO — e.g. glitch
|
|
33
|
+
- TODO — e.g. kinetic-typography-heavy
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Asset Packs
|
|
2
|
+
|
|
3
|
+
Asset packs are **folders + sidecars**. Each subdirectory here is a pack.
|
|
4
|
+
Anywhere else on disk works too — register external folders via:
|
|
5
|
+
|
|
6
|
+
```sh
|
|
7
|
+
atelier pack register ~/Dropbox/Shared/CompanyBrand
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
(`atelier pack register` ships in a later release. For now, register by
|
|
11
|
+
editing `workspace.atelier`'s `packs.external` list.)
|
|
12
|
+
|
|
13
|
+
## Pack structure
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
_packs/<pack-name>/
|
|
17
|
+
├── .atelier-pack.yaml # required — sidecar describes what/when/how
|
|
18
|
+
├── logos/ # category folders (yours to name)
|
|
19
|
+
├── photos/
|
|
20
|
+
├── transitions/
|
|
21
|
+
└── ...
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Sidecar shape
|
|
25
|
+
|
|
26
|
+
See `.paradigm/personas/lux/skills/walk-asset-packs.md` for the canonical
|
|
27
|
+
schema. Quick reference:
|
|
28
|
+
|
|
29
|
+
```yaml
|
|
30
|
+
name: swiss-grid
|
|
31
|
+
owner: you
|
|
32
|
+
vibe: editorial, clinical, generous whitespace
|
|
33
|
+
categories:
|
|
34
|
+
logos:
|
|
35
|
+
when: full-screen reveals, watermarks
|
|
36
|
+
when_not: inline with body copy
|
|
37
|
+
treatment: monochrome on photos; full color on solid paper
|
|
38
|
+
restrictions:
|
|
39
|
+
- never combine logos/ with grids/ in same frame
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Who reads packs
|
|
43
|
+
|
|
44
|
+
- **Lux** (Cinematographer) walks `_packs/*/` to resolve asset slots when
|
|
45
|
+
storyboarding. Cites pack-relative paths or category descriptors in
|
|
46
|
+
STORYBOARD.md.
|
|
47
|
+
- **Iris** (Composer) symlinks the cited pack assets into
|
|
48
|
+
`projects/<name>/assets/` at scaffold time.
|
|
49
|
+
|
|
50
|
+
## What NOT to put here
|
|
51
|
+
|
|
52
|
+
- Bytes you want to share publicly — packs are local-first (`TD-2026-05-26-271`)
|
|
53
|
+
- Generated outputs — those live in `projects/<name>/out/`
|
|
54
|
+
- Per-project raw recordings — those live in `projects/<name>/media/`
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Projects
|
|
2
|
+
|
|
3
|
+
Each subdirectory here is one **output series** — typically one video or a
|
|
4
|
+
small batch of related variants (teaser-15s / trailer-30s / full-spot-60s
|
|
5
|
+
sharing the same beat).
|
|
6
|
+
|
|
7
|
+
## Project structure
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
projects/<name>/
|
|
11
|
+
├── DESIGN.md # project overrides to workspace _brand/DESIGN.md
|
|
12
|
+
├── SCRIPT.md # this project's actual script
|
|
13
|
+
├── STORYBOARD.md # this project's shot list
|
|
14
|
+
├── .atelier-overlay.yaml # optional — structured overrides to brand .yaml
|
|
15
|
+
├── media/ # raw recordings for this project
|
|
16
|
+
├── transcripts/ # auto-generated from media/
|
|
17
|
+
├── _packs/ # optional — project-only packs (rare)
|
|
18
|
+
└── (Iris emits these as needed)
|
|
19
|
+
├── index.html # Hyperframes composition
|
|
20
|
+
├── assets/ # symlinks into media/ + _packs/
|
|
21
|
+
└── out/ # final renders
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Creating a project
|
|
25
|
+
|
|
26
|
+
Ask Quill in a Claude Code session:
|
|
27
|
+
|
|
28
|
+
> @atelier-quill draft a 15s teaser for `<project-name>`
|
|
29
|
+
|
|
30
|
+
Quill will scaffold `projects/<name>/` with starter DESIGN.md / SCRIPT.md /
|
|
31
|
+
STORYBOARD.md that inherit the workspace `_brand/` voice + visual register
|
|
32
|
+
via the cascade rules.
|
|
33
|
+
|
|
34
|
+
## Cascade rules (TL;DR)
|
|
35
|
+
|
|
36
|
+
When agents work in `projects/<name>/`, the **effective brand** they read is
|
|
37
|
+
`_brand/<file>` (workspace) overlaid with `projects/<name>/<file>`:
|
|
38
|
+
|
|
39
|
+
- **Strings** → project overrides workspace
|
|
40
|
+
- **Lists** → project extends workspace (additive)
|
|
41
|
+
- **Map bindings** → project overrides at the key, leaves siblings intact
|
|
42
|
+
|
|
43
|
+
Full rules: `.paradigm/personas/_shared/cascade-merge.md`.
|
|
44
|
+
|
|
45
|
+
## What NOT to put here
|
|
46
|
+
|
|
47
|
+
- Brand-level rules (those go in `_brand/` — agents will prompt promotion when
|
|
48
|
+
they see something repeat across projects)
|
|
49
|
+
- Pack bytes (those go in `_packs/<pack-name>/` or external pack folders)
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Atelier v2 workspace manifest.
|
|
2
|
+
# Created by `atelier workspace`. Edit fields freely.
|
|
3
|
+
#
|
|
4
|
+
# A workspace is a brand container. It holds:
|
|
5
|
+
# - _brand/ brand artifacts (DESIGN/SCRIPT/STORYBOARD + .atelier-brand.yaml)
|
|
6
|
+
# inherited by every project
|
|
7
|
+
# - _packs/ asset packs (folders with .atelier-pack.yaml sidecars)
|
|
8
|
+
# visible to every project
|
|
9
|
+
# - projects/ output series (each a self-contained brief + Hyperframes scaffold)
|
|
10
|
+
#
|
|
11
|
+
# Agents (Quill / Lux / Iris) read the workspace from cwd. There is no
|
|
12
|
+
# `.atelier/active.yaml` in v2 — explicit project arg or cwd determines scope.
|
|
13
|
+
|
|
14
|
+
version: 2.0.0
|
|
15
|
+
name: "{{WORKSPACE_NAME}}"
|
|
16
|
+
created: "{{ISO_DATE}}"
|
|
17
|
+
|
|
18
|
+
# External pack pointers — register folders anywhere on disk so agents can
|
|
19
|
+
# resolve them under `_packs/<pack>/`. Add via `atelier pack register <dir>`.
|
|
20
|
+
# (`atelier pack register` ships in a later release; for now edit by hand.)
|
|
21
|
+
packs:
|
|
22
|
+
external: []
|
package/university/index.yaml
CHANGED