mindforge-cc 11.5.0 → 11.6.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/.agent/mindforge/skill-tdd.md +53 -0
- package/.agent/mindforge/skills-index.md +118 -0
- package/.agent/mindforge/systematic-debug.md +60 -0
- package/.agent/skills/1password-skill/SKILL.md +156 -0
- package/.agent/skills/1password-skill/references/cli-examples.md +31 -0
- package/.agent/skills/1password-skill/references/get-started.md +21 -0
- package/.agent/skills/article-illustrator/SKILL.md +199 -0
- package/.agent/skills/article-illustrator/references/prompt-construction.md +426 -0
- package/.agent/skills/article-illustrator/references/style-presets.md +80 -0
- package/.agent/skills/article-illustrator/references/styles.md +224 -0
- package/.agent/skills/article-illustrator/references/usage.md +50 -0
- package/.agent/skills/article-illustrator/references/workflow.md +332 -0
- package/.agent/skills/arxiv/SKILL.md +275 -0
- package/.agent/skills/blogwatcher/SKILL.md +130 -0
- package/.agent/skills/code-wiki/SKILL.md +438 -0
- package/.agent/skills/code-wiki/templates/README.md +31 -0
- package/.agent/skills/code-wiki/templates/architecture.md +30 -0
- package/.agent/skills/code-wiki/templates/getting-started.md +47 -0
- package/.agent/skills/code-wiki/templates/module.md +38 -0
- package/.agent/skills/codebase-inspection/SKILL.md +109 -0
- package/.agent/skills/comic-creator/SKILL.md +240 -0
- package/.agent/skills/comic-creator/references/analysis-framework.md +176 -0
- package/.agent/skills/comic-creator/references/auto-selection.md +71 -0
- package/.agent/skills/comic-creator/references/base-prompt.md +98 -0
- package/.agent/skills/comic-creator/references/character-template.md +180 -0
- package/.agent/skills/comic-creator/references/ohmsha-guide.md +85 -0
- package/.agent/skills/comic-creator/references/partial-workflows.md +106 -0
- package/.agent/skills/comic-creator/references/storyboard-template.md +143 -0
- package/.agent/skills/comic-creator/references/workflow.md +401 -0
- package/.agent/skills/concept-diagrams/SKILL.md +355 -0
- package/.agent/skills/concept-diagrams/references/dashboard-patterns.md +43 -0
- package/.agent/skills/concept-diagrams/references/infrastructure-patterns.md +144 -0
- package/.agent/skills/concept-diagrams/references/physical-shape-cookbook.md +42 -0
- package/.agent/skills/creative-ideation/SKILL.md +144 -0
- package/.agent/skills/creative-ideation/references/full-prompt-library.md +110 -0
- package/.agent/skills/devops-cli/SKILL.md +149 -0
- package/.agent/skills/devops-cli/references/app-discovery.md +112 -0
- package/.agent/skills/devops-cli/references/authentication.md +59 -0
- package/.agent/skills/devops-cli/references/cli-reference.md +104 -0
- package/.agent/skills/devops-cli/references/running-apps.md +171 -0
- package/.agent/skills/devops-watchers/SKILL.md +103 -0
- package/.agent/skills/docker-management/SKILL.md +273 -0
- package/.agent/skills/domain-intel/SKILL.md +96 -0
- package/.agent/skills/duckduckgo-search/SKILL.md +230 -0
- package/.agent/skills/github-auth/SKILL.md +240 -0
- package/.agent/skills/github-code-review/SKILL.md +474 -0
- package/.agent/skills/github-code-review/references/review-output-template.md +74 -0
- package/.agent/skills/github-issues/SKILL.md +363 -0
- package/.agent/skills/github-issues/templates/bug-report.md +35 -0
- package/.agent/skills/github-issues/templates/feature-request.md +31 -0
- package/.agent/skills/github-pr-workflow/SKILL.md +360 -0
- package/.agent/skills/github-pr-workflow/references/ci-troubleshooting.md +183 -0
- package/.agent/skills/github-pr-workflow/references/conventional-commits.md +71 -0
- package/.agent/skills/github-pr-workflow/templates/pr-body-bugfix.md +35 -0
- package/.agent/skills/github-pr-workflow/templates/pr-body-feature.md +33 -0
- package/.agent/skills/github-repo-management/SKILL.md +509 -0
- package/.agent/skills/github-repo-management/references/github-api-cheatsheet.md +161 -0
- package/.agent/skills/godmode/SKILL.md +396 -0
- package/.agent/skills/godmode/references/jailbreak-templates.md +128 -0
- package/.agent/skills/godmode/references/refusal-detection.md +142 -0
- package/.agent/skills/hyperframes/SKILL.md +182 -0
- package/.agent/skills/hyperframes/references/cli.md +185 -0
- package/.agent/skills/hyperframes/references/composition.md +129 -0
- package/.agent/skills/hyperframes/references/features.md +289 -0
- package/.agent/skills/hyperframes/references/gsap.md +136 -0
- package/.agent/skills/hyperframes/references/troubleshooting.md +137 -0
- package/.agent/skills/hyperframes/references/website-to-video.md +145 -0
- package/.agent/skills/jupyter-live-kernel/SKILL.md +160 -0
- package/.agent/skills/kanban-orchestrator/SKILL.md +209 -0
- package/.agent/skills/kanban-worker/SKILL.md +188 -0
- package/.agent/skills/llm-wiki/SKILL.md +499 -0
- package/.agent/skills/meme-generation/SKILL.md +122 -0
- package/.agent/skills/node-inspect-debugger/SKILL.md +312 -0
- package/.agent/skills/obsidian/SKILL.md +60 -0
- package/.agent/skills/osint-investigation/SKILL.md +269 -0
- package/.agent/skills/osint-investigation/templates/source-template.md +59 -0
- package/.agent/skills/oss-forensics/SKILL.md +422 -0
- package/.agent/skills/oss-forensics/references/evidence-types.md +89 -0
- package/.agent/skills/oss-forensics/references/github-archive-guide.md +184 -0
- package/.agent/skills/oss-forensics/references/investigation-templates.md +131 -0
- package/.agent/skills/oss-forensics/references/recovery-techniques.md +164 -0
- package/.agent/skills/oss-forensics/templates/forensic-report.md +151 -0
- package/.agent/skills/oss-forensics/templates/malicious-package-report.md +43 -0
- package/.agent/skills/parallel-cli/SKILL.md +384 -0
- package/.agent/skills/pinggy-tunnel/SKILL.md +302 -0
- package/.agent/skills/pixel-art/SKILL.md +209 -0
- package/.agent/skills/pixel-art/references/palettes.md +49 -0
- package/.agent/skills/plan/SKILL.md +331 -0
- package/.agent/skills/polymarket/SKILL.md +75 -0
- package/.agent/skills/polymarket/references/api-endpoints.md +220 -0
- package/.agent/skills/python-debugpy/SKILL.md +368 -0
- package/.agent/skills/requesting-code-review/SKILL.md +273 -0
- package/.agent/skills/research-paper-writing/SKILL.md +2367 -0
- package/.agent/skills/research-paper-writing/references/autoreason-methodology.md +394 -0
- package/.agent/skills/research-paper-writing/references/checklists.md +434 -0
- package/.agent/skills/research-paper-writing/references/citation-workflow.md +563 -0
- package/.agent/skills/research-paper-writing/references/experiment-patterns.md +728 -0
- package/.agent/skills/research-paper-writing/references/human-evaluation.md +476 -0
- package/.agent/skills/research-paper-writing/references/paper-types.md +481 -0
- package/.agent/skills/research-paper-writing/references/reviewer-guidelines.md +433 -0
- package/.agent/skills/research-paper-writing/references/sources.md +191 -0
- package/.agent/skills/research-paper-writing/references/writing-guide.md +474 -0
- package/.agent/skills/research-paper-writing/templates/README.md +251 -0
- package/.agent/skills/rest-graphql-debug/SKILL.md +507 -0
- package/.agent/skills/s6-container-supervision/SKILL.md +171 -0
- package/.agent/skills/scrapling/SKILL.md +328 -0
- package/.agent/skills/sherlock/SKILL.md +186 -0
- package/.agent/skills/simplify-code/SKILL.md +168 -0
- package/.agent/skills/skill-authoring/SKILL.md +158 -0
- package/.agent/skills/spike/SKILL.md +190 -0
- package/.agent/skills/subagent-driven-development/SKILL.md +345 -0
- package/.agent/skills/subagent-driven-development/references/context-budget-discipline.md +53 -0
- package/.agent/skills/subagent-driven-development/references/gates-taxonomy.md +93 -0
- package/.agent/skills/systematic-debugging/SKILL.md +360 -0
- package/.agent/skills/test-driven-development/SKILL.md +336 -0
- package/.agent/skills/video-orchestrator/SKILL.md +194 -0
- package/.agent/skills/video-orchestrator/references/examples.md +227 -0
- package/.agent/skills/video-orchestrator/references/intake.md +166 -0
- package/.agent/skills/video-orchestrator/references/kanban-setup.md +278 -0
- package/.agent/skills/video-orchestrator/references/monitoring.md +180 -0
- package/.agent/skills/video-orchestrator/references/role-archetypes.md +298 -0
- package/.agent/skills/video-orchestrator/references/tool-matrix.md +317 -0
- package/.agent/skills/web-pentest/SKILL.md +332 -0
- package/.agent/skills/web-pentest/references/bypass-techniques.md +133 -0
- package/.agent/skills/web-pentest/references/exploitation-techniques.md +204 -0
- package/.agent/skills/web-pentest/references/scope-enforcement.md +110 -0
- package/.agent/skills/web-pentest/references/vuln-taxonomy.md +81 -0
- package/.agent/skills/web-pentest/templates/authorization.md +69 -0
- package/.agent/skills/web-pentest/templates/pentest-report.md +178 -0
- package/.claude/commands/mindforge/skill-tdd.md +53 -0
- package/.claude/commands/mindforge/skills-index.md +118 -0
- package/.claude/commands/mindforge/systematic-debug.md +60 -0
- package/.mindforge/config.json +2 -2
- package/.mindforge/memory/sync-manifest.json +1 -1
- package/.mindforge/skills/arxiv/SKILL.md +294 -0
- package/.mindforge/skills/blogwatcher/SKILL.md +147 -0
- package/.mindforge/skills/code-wiki/SKILL.md +457 -0
- package/.mindforge/skills/codebase-inspection/SKILL.md +126 -0
- package/.mindforge/skills/concept-diagrams/SKILL.md +373 -0
- package/.mindforge/skills/creative-ideation/SKILL.md +162 -0
- package/.mindforge/skills/domain-intel/SKILL.md +116 -0
- package/.mindforge/skills/duckduckgo-search/SKILL.md +249 -0
- package/.mindforge/skills/github-code-review/SKILL.md +493 -0
- package/.mindforge/skills/github-issues/SKILL.md +382 -0
- package/.mindforge/skills/github-pr-workflow/SKILL.md +379 -0
- package/.mindforge/skills/jupyter-live-kernel/SKILL.md +179 -0
- package/.mindforge/skills/kanban-orchestrator/SKILL.md +227 -0
- package/.mindforge/skills/kanban-worker/SKILL.md +206 -0
- package/.mindforge/skills/meme-generation/SKILL.md +141 -0
- package/.mindforge/skills/obsidian/SKILL.md +80 -0
- package/.mindforge/skills/osint-investigation/SKILL.md +288 -0
- package/.mindforge/skills/oss-forensics/SKILL.md +421 -0
- package/.mindforge/skills/pixel-art/SKILL.md +228 -0
- package/.mindforge/skills/plan/SKILL.md +350 -0
- package/.mindforge/skills/requesting-code-review/SKILL.md +292 -0
- package/.mindforge/skills/research-paper-writing/SKILL.md +2384 -0
- package/.mindforge/skills/scrapling/SKILL.md +345 -0
- package/.mindforge/skills/sherlock/SKILL.md +203 -0
- package/.mindforge/skills/simplify-code/SKILL.md +187 -0
- package/.mindforge/skills/spike/SKILL.md +209 -0
- package/.mindforge/skills/subagent-driven-development/SKILL.md +364 -0
- package/.mindforge/skills/systematic-debugging/SKILL.md +379 -0
- package/.mindforge/skills/test-driven-development/SKILL.md +355 -0
- package/.mindforge/skills/web-pentest/SKILL.md +327 -0
- package/CHANGELOG.md +88 -0
- package/MINDFORGE.md +3 -3
- package/README.md +38 -3
- package/RELEASENOTES.md +100 -0
- package/bin/dashboard/api-router.js +10 -1
- package/bin/governance/approve.js +5 -1
- package/bin/memory/federated-sync.js +11 -2
- package/bin/memory/knowledge-capture.js +10 -1
- package/bin/memory/pillar-health-tracker.js +9 -1
- package/bin/review/ads-engine.js +2 -2
- package/bin/security/trust-boundaries.js +5 -0
- package/docs/getting-started.md +42 -5
- package/package.json +1 -1
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
# Worked Examples
|
|
2
|
+
|
|
3
|
+
Six concrete pipelines covering different video styles. Each shows the team
|
|
4
|
+
composition, task graph, and skill/tool choices the orchestrator would make
|
|
5
|
+
for that brief. **These are illustrative, not templates** — adapt to the
|
|
6
|
+
actual brief.
|
|
7
|
+
|
|
8
|
+
## Example 1 — Narrative short film (text-to-image → image-to-video → cut)
|
|
9
|
+
|
|
10
|
+
**Brief:** A 90-second noir-style short. A detective walks through a rainy
|
|
11
|
+
city. Voiceover narration. AI-generated visuals.
|
|
12
|
+
|
|
13
|
+
**Team:**
|
|
14
|
+
- `director` — vision, decomposition, approval
|
|
15
|
+
- `writer` — script + voiceover copy (loads `humanizer` for natural voice)
|
|
16
|
+
- `storyboarder` — beat-by-beat shot list (loads `excalidraw`)
|
|
17
|
+
- `image-generator` — generates each shot's still via local ComfyUI workflows
|
|
18
|
+
(loads `comfyui`)
|
|
19
|
+
- `image-to-video-generator` — animates each still (Runway/Kling, OR
|
|
20
|
+
ComfyUI's AnimateDiff/WAN workflows via `comfyui`)
|
|
21
|
+
- `voice-talent` — narration via ElevenLabs
|
|
22
|
+
- `audio-mixer` — VO + ambient pad
|
|
23
|
+
- `editor` — assembly + transitions
|
|
24
|
+
- `reviewer` — final QA
|
|
25
|
+
|
|
26
|
+
**Task graph:**
|
|
27
|
+
```
|
|
28
|
+
T0 director decompose
|
|
29
|
+
T1 writer script + voiceover.md (parent: T0)
|
|
30
|
+
T2 storyboarder shot list with framing per beat (parent: T1)
|
|
31
|
+
T3 image-generator one still per shot (~12 shots) (parent: T2)
|
|
32
|
+
T4 image-to-video animate each still (parent: T3)
|
|
33
|
+
T5 voice-talent generate narration audio (parent: T1)
|
|
34
|
+
T6 audio-mixer mix VO + ambient (parent: T5)
|
|
35
|
+
T7 editor cut + transitions + audio mux (parents: T4, T6)
|
|
36
|
+
T8 reviewer final QA (parent: T7)
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**Key choices:**
|
|
40
|
+
- Local ComfyUI via `comfyui` skill is preferred over external API for
|
|
41
|
+
cost/control — but external APIs are fine if ComfyUI isn't installed
|
|
42
|
+
- `editor` profile is ffmpeg-only, no specialized skill required beyond
|
|
43
|
+
`kanban-worker`
|
|
44
|
+
- Storyboarder produces `storyboard.excalidraw` alongside the markdown
|
|
45
|
+
|
|
46
|
+
## Example 2 — Product / marketing teaser
|
|
47
|
+
|
|
48
|
+
**Brief:** A 30-second product teaser for a developer tool. Shows code +
|
|
49
|
+
terminal + UI screen recordings, voiceover, CTA at end. Square 1:1.
|
|
50
|
+
|
|
51
|
+
**Team:**
|
|
52
|
+
- `director`
|
|
53
|
+
- `copywriter` — taglines, voiceover script, CTA (loads `humanizer`)
|
|
54
|
+
- `concept-artist` — style frames (loads `claude-design` for UI mockups)
|
|
55
|
+
- `renderer-motion-graphics` — animated UI sequences (Remotion CLI)
|
|
56
|
+
- `renderer-ascii` — terminal-style demo scenes (loads `ascii-video`)
|
|
57
|
+
- `voice-talent` — VO via ElevenLabs
|
|
58
|
+
- `editor` — assembly + brand-color treatment
|
|
59
|
+
- `audio-mixer` — VO + light music bed
|
|
60
|
+
- `captioner` — burned subtitles for muted-autoplay platforms
|
|
61
|
+
- `masterer` — produces 1:1 + 9:16 + 16:9 variants
|
|
62
|
+
|
|
63
|
+
**Task graph:**
|
|
64
|
+
```
|
|
65
|
+
T0 director decompose
|
|
66
|
+
T1 copywriter copy.md + cta + vo script (parent: T0)
|
|
67
|
+
T2 concept-artist visual-spec.md + style frames (parent: T1)
|
|
68
|
+
T3a renderer-motion-graphics scene 1: UI sequence (parent: T2)
|
|
69
|
+
T3b renderer-ascii scene 2: terminal demo (parent: T2)
|
|
70
|
+
T3c renderer-motion-graphics scene 3: feature highlight (parent: T2)
|
|
71
|
+
T3d renderer-motion-graphics scene 4: CTA card (parent: T2)
|
|
72
|
+
T4 voice-talent narration (parent: T1)
|
|
73
|
+
T5 audio-mixer VO + music bed (parent: T4)
|
|
74
|
+
T6 editor cut + transitions (parents: T3*, T5)
|
|
75
|
+
T7 captioner SRT + burned subtitles (parent: T6)
|
|
76
|
+
T8 masterer 1:1, 9:16, 16:9 variants (parent: T7)
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**Key choices:**
|
|
80
|
+
- Multiple specialized renderers (motion-graphics + ASCII) coexist
|
|
81
|
+
- Captioner is included because muted autoplay is the norm on social
|
|
82
|
+
- `claude-design` skill for UI mockups maps directly to the product video idiom
|
|
83
|
+
|
|
84
|
+
## Example 3 — Music video (synced to provided track)
|
|
85
|
+
|
|
86
|
+
**Brief:** A 3-minute music video for a provided lo-fi hip-hop track. Visuals
|
|
87
|
+
should pulse with the beat. Generative + ASCII hybrid. Vertical 9:16.
|
|
88
|
+
|
|
89
|
+
**Team:**
|
|
90
|
+
- `director`
|
|
91
|
+
- `music-supervisor` — analyze track, emit `audio/beats.json` (loads `songsee`)
|
|
92
|
+
- `storyboarder` — beat-aligned shot list (loads `excalidraw`)
|
|
93
|
+
- `renderer-ascii` — ASCII scenes synced to bass kicks (loads `ascii-video`)
|
|
94
|
+
- `renderer-p5js` — generative particle scenes synced to highs (loads `p5js`)
|
|
95
|
+
- `editor` — beat-cut assembly using `beats.json`
|
|
96
|
+
- `reviewer` — sync QA
|
|
97
|
+
|
|
98
|
+
**Task graph:**
|
|
99
|
+
```
|
|
100
|
+
T0 director decompose
|
|
101
|
+
T1 music-supervisor analyze track → beats.json + spectrogram (parent: T0)
|
|
102
|
+
T2 storyboarder shot list aligned to beats (parents: T1, T0)
|
|
103
|
+
T3a renderer-ascii scene 1: bass-driven ASCII (parent: T2)
|
|
104
|
+
T3b renderer-p5js scene 2: high-end particle field (parent: T2)
|
|
105
|
+
... (more scenes)
|
|
106
|
+
T4 editor cut to beats + mux track (parents: T3*, T1)
|
|
107
|
+
T5 reviewer sync QA + final approval (parent: T4)
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
**Key choices:**
|
|
111
|
+
- `music-supervisor` runs FIRST — `beats.json` gates the renderers
|
|
112
|
+
- `editor` uses `beats.json` directly to align cuts to bass kicks
|
|
113
|
+
- No voice-talent — music is the audio
|
|
114
|
+
- Two specialized renderers (`ascii-video` + `p5js`) for visual variety
|
|
115
|
+
|
|
116
|
+
## Example 4 — Math/algorithm explainer
|
|
117
|
+
|
|
118
|
+
**Brief:** A 2-minute explainer of an algorithm. 3Blue1Brown-style. Animated
|
|
119
|
+
diagrams, equations, narration. Square 1:1.
|
|
120
|
+
|
|
121
|
+
**Team:**
|
|
122
|
+
- `director`
|
|
123
|
+
- `writer` — narration script (loads `humanizer`)
|
|
124
|
+
- `cinematographer` — visual spec (loads `manim-video`)
|
|
125
|
+
- `renderer-manim` — all animated scenes (loads `manim-video`)
|
|
126
|
+
- `voice-talent` — narration via ElevenLabs
|
|
127
|
+
- `editor` — assembly + audio mux
|
|
128
|
+
- `captioner` — burned subtitles
|
|
129
|
+
|
|
130
|
+
**Task graph:**
|
|
131
|
+
```
|
|
132
|
+
T0 director decompose
|
|
133
|
+
T1 writer script + narration (parent: T0)
|
|
134
|
+
T2 cinematographer visual spec for all scenes (parent: T1)
|
|
135
|
+
T3a-Tn renderer-manim scenes 1..N (parents: T2)
|
|
136
|
+
T4 voice-talent narration audio (parent: T1)
|
|
137
|
+
T5 editor cut + mux (parents: T3*, T4)
|
|
138
|
+
T6 captioner SRT + burn (parent: T5)
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
**Key choices:**
|
|
142
|
+
- `manim-video` skill drives both the cinematographer (visual language) and
|
|
143
|
+
the renderer (actual scene production)
|
|
144
|
+
- The `manim-video` skill's reference docs (animation-design-thinking,
|
|
145
|
+
scene-planning, equations) auto-load when needed via the renderer's pinned skill
|
|
146
|
+
|
|
147
|
+
## Example 5 — ASCII video, music-track-only
|
|
148
|
+
|
|
149
|
+
**Brief:** A 60-second pure-ASCII video reactive to an existing track. No
|
|
150
|
+
voiceover, no other tools. Square 1:1.
|
|
151
|
+
|
|
152
|
+
**Team:**
|
|
153
|
+
- `director`
|
|
154
|
+
- `music-supervisor` — track analysis (loads `songsee`)
|
|
155
|
+
- `renderer-ascii` — all visuals (loads `ascii-video`)
|
|
156
|
+
- `editor` — assembly + audio mux
|
|
157
|
+
|
|
158
|
+
**Task graph:**
|
|
159
|
+
```
|
|
160
|
+
T0 director decompose
|
|
161
|
+
T1 music-supervisor analyze track (parent: T0)
|
|
162
|
+
T2a renderer-ascii scene 1 (parents: T1, T0)
|
|
163
|
+
T2b renderer-ascii scene 2 (parents: T1, T0)
|
|
164
|
+
T2c renderer-ascii scene 3 (parents: T1, T0)
|
|
165
|
+
T3 editor stitch + mux audio (parents: T2*)
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
**Key choices:**
|
|
169
|
+
- Minimal team (4 profiles) for a focused single-tool project
|
|
170
|
+
- No reviewer — short experimental piece, director approves directly
|
|
171
|
+
- All scenes run through one `renderer-ascii` profile because the `ascii-video`
|
|
172
|
+
skill covers everything
|
|
173
|
+
|
|
174
|
+
This example illustrates the rule: **don't over-decompose**. Three scenes
|
|
175
|
+
through one renderer is fine. Don't spawn three renderer profiles.
|
|
176
|
+
|
|
177
|
+
## Example 6 — Real-time / installation art
|
|
178
|
+
|
|
179
|
+
**Brief:** A 2-minute audio-reactive visual for a gallery installation. Driven
|
|
180
|
+
by an audio input feed. TouchDesigner-based. 16:9 4K.
|
|
181
|
+
|
|
182
|
+
**Team:**
|
|
183
|
+
- `director`
|
|
184
|
+
- `cinematographer` — visual language spec (loads `touchdesigner-mcp`)
|
|
185
|
+
- `renderer-touchdesigner` — all visuals + record-to-disk
|
|
186
|
+
(loads `touchdesigner-mcp`)
|
|
187
|
+
- `audio-mixer` — final loudness pass on the captured audio (optional if
|
|
188
|
+
pre-mixed source)
|
|
189
|
+
- `editor` — assemble final clip from TouchDesigner recording
|
|
190
|
+
- `reviewer` — visual QA
|
|
191
|
+
|
|
192
|
+
**Task graph:**
|
|
193
|
+
```
|
|
194
|
+
T0 director decompose
|
|
195
|
+
T1 cinematographer TD operator graph spec (parent: T0)
|
|
196
|
+
T2 renderer-touchdesigner build TD network + record output (parent: T1)
|
|
197
|
+
T3 editor trim + audio mux (parent: T2)
|
|
198
|
+
T4 reviewer final QA (parent: T3)
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
**Key choices:**
|
|
202
|
+
- `touchdesigner-mcp` controls a running TouchDesigner instance — the
|
|
203
|
+
cinematographer designs the operator graph, renderer builds it
|
|
204
|
+
- Output is a recording from the running TD network, not a render-to-frames
|
|
205
|
+
process; editor mostly just trims
|
|
206
|
+
|
|
207
|
+
## Pattern recognition
|
|
208
|
+
|
|
209
|
+
When the user describes a video, look for these signals to map to an example:
|
|
210
|
+
|
|
211
|
+
- **Plot, characters, scripted dialogue** → Example 1 (narrative)
|
|
212
|
+
- **Specific product, CTA, brand colors, voiceover** → Example 2 (marketing)
|
|
213
|
+
- **Track file provided, "synced to music"** → Example 3 (music video)
|
|
214
|
+
- **"Explain how X works", math/algorithm/concept walkthrough** → Example 4 (manim explainer)
|
|
215
|
+
- **Terminal aesthetic, ASCII, retro pixel** → Example 5 (ASCII)
|
|
216
|
+
- **"Audio-reactive", "real-time", "installation"** → Example 6 (TouchDesigner)
|
|
217
|
+
- **Comic-style narrative** → use `renderer-comic` (`baoyu-comic` skill)
|
|
218
|
+
- **Retro game / pixel-art aesthetic** → use `renderer-pixel` (`pixel-art` skill)
|
|
219
|
+
- **3D scene, photoreal environment** → use `renderer-3d` (`blender-mcp`)
|
|
220
|
+
- **Generative art, particle system, shader** → use `renderer-p5js` (`p5js`)
|
|
221
|
+
- **AI-generated photoreal stills + animation** → use `renderer-comfyui`
|
|
222
|
+
(`comfyui`) for both stills and image-to-video
|
|
223
|
+
- **"video about how the system works", recursive demo** → composable from
|
|
224
|
+
any of the above; the recursion is a rendering technique, not a style
|
|
225
|
+
|
|
226
|
+
The actual team should be derived from the specific brief — these examples are
|
|
227
|
+
starting points, not endpoints.
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# Intake — Discovery Question Banks
|
|
2
|
+
|
|
3
|
+
The discovery process is **adaptive**. Always start with three baseline
|
|
4
|
+
questions to identify the broad style category, then drill into a per-style
|
|
5
|
+
question bank. Ask 2-4 questions at a time, listen, then proceed. Make
|
|
6
|
+
reasonable assumptions whenever the user implies an answer.
|
|
7
|
+
|
|
8
|
+
## Tier 0 — Baseline (always ask)
|
|
9
|
+
|
|
10
|
+
1. **What is the video?** — One-sentence pitch
|
|
11
|
+
2. **How long?** — Approximate duration
|
|
12
|
+
3. **Aspect ratio + target platform?** — 16:9 / 9:16 / 1:1 / 4:5; X, IG, YouTube, internal, etc.
|
|
13
|
+
|
|
14
|
+
From these answers, classify the style category and pick the relevant Tier 1
|
|
15
|
+
follow-ups. **Do not** continue asking until you have at least these three.
|
|
16
|
+
|
|
17
|
+
## Style classification
|
|
18
|
+
|
|
19
|
+
Map the brief to one of these archetypes (or a hybrid):
|
|
20
|
+
|
|
21
|
+
| Archetype | Tells |
|
|
22
|
+
|-----------|-------|
|
|
23
|
+
| **Narrative film** | Plot, characters, scenes-with-events, dialogue, location |
|
|
24
|
+
| **Product / marketing** | A specific product or feature being shown / sold; CTA at end |
|
|
25
|
+
| **Music video** | A specific track exists; visuals sync to music |
|
|
26
|
+
| **Explainer / educational** | A concept being taught; voiceover-driven |
|
|
27
|
+
| **Tutorial / changelog** | Software demo, terminal-heavy, technical |
|
|
28
|
+
| **ASCII / terminal art** | Retro terminal aesthetic explicit, character-grid |
|
|
29
|
+
| **Abstract / loop** | Generative, no plot, often perfect-loop |
|
|
30
|
+
| **Documentary / interview cut** | Real footage, transcription-driven |
|
|
31
|
+
| **Real-time / installation** | Audio-reactive, gallery installation, VJ output |
|
|
32
|
+
|
|
33
|
+
If ambiguous, **ask** which category fits — don't guess. Hybrids are common
|
|
34
|
+
(e.g., a product video with a narrative arc); decompose into the dominant
|
|
35
|
+
mode + secondary modifiers.
|
|
36
|
+
|
|
37
|
+
**Recursive / meta** ("a video that shows its own production") is a
|
|
38
|
+
*rendering technique*, not a separate style — compose it from any of the
|
|
39
|
+
above by adding a two-pass render step where pass 2 uses pass 1's output as
|
|
40
|
+
texture inside the final scene.
|
|
41
|
+
|
|
42
|
+
## Tier 1 — Per-style follow-ups
|
|
43
|
+
|
|
44
|
+
### Narrative film
|
|
45
|
+
|
|
46
|
+
- **Setting / world?** — When and where the story takes place
|
|
47
|
+
- **Characters?** — How many, archetypes, who carries dialogue
|
|
48
|
+
- **Beat list or full script?** — Has the user written the story or do we draft it
|
|
49
|
+
- **Dialogue language?** — Spoken lines, on-screen subs only, silent
|
|
50
|
+
- **Visual generation approach?** — Text-to-image (FAL/Midjourney/Imagen) →
|
|
51
|
+
image-to-video (Runway/Kling), 3D animation (Blender), 2D animation,
|
|
52
|
+
procedural, or hybrid
|
|
53
|
+
- **Voice approach?** — TTS (which voice), recorded VO, no dialogue
|
|
54
|
+
- **Music / score?** — Commissioned (via `songwriting-and-ai-music` Suno
|
|
55
|
+
prompts, or local `heartmula`), licensed track provided, silent
|
|
56
|
+
|
|
57
|
+
### Product / marketing
|
|
58
|
+
|
|
59
|
+
- **Product?** — Name, what it does, key feature being shown
|
|
60
|
+
- **Target audience?** — Who's watching, what they care about
|
|
61
|
+
- **CTA?** — Visit URL, install, sign up, etc.
|
|
62
|
+
- **Tone?** — Serious, playful, technical, premium, edgy
|
|
63
|
+
- **Brand assets available?** — Logo files, color palette, fonts, existing footage
|
|
64
|
+
- **Animation style?** — Motion graphics (Remotion / AE-style), screen recording,
|
|
65
|
+
generative, illustrated
|
|
66
|
+
- **Voiceover?** — Yes (which voice / language) or text-only
|
|
67
|
+
- **Music?** — Track provided, license-free needed, custom-composed
|
|
68
|
+
|
|
69
|
+
### Music video
|
|
70
|
+
|
|
71
|
+
- **Track file?** — Path to the audio (essential — we'll analyze BPM + beats)
|
|
72
|
+
- **Track length to use?** — Full song or a section
|
|
73
|
+
- **Genre / energy?** — Tells what visual rhythm and density to use
|
|
74
|
+
- **Lyric / narrative content?** — Are there lyrics to render on screen,
|
|
75
|
+
or is it purely visual?
|
|
76
|
+
- **Visual reference style?** — Existing music videos / artists for reference
|
|
77
|
+
- **Performer footage?** — None, has clips, will provide
|
|
78
|
+
- **Visual generation approach?** — Per-beat generative, edit-driven cuts of stock
|
|
79
|
+
footage, illustrated, hybrid
|
|
80
|
+
|
|
81
|
+
### Explainer / educational
|
|
82
|
+
|
|
83
|
+
- **What concept is being taught?** — One-sentence concept, key takeaway
|
|
84
|
+
- **Audience expertise?** — Beginner / intermediate / expert
|
|
85
|
+
- **Diagram density?** — Heavy math / formulas / code / abstract concepts
|
|
86
|
+
- **Voiceover?** — TTS / recorded / on-screen text only
|
|
87
|
+
- **Tool preference?** — `manim-video` (math), `p5js` (generative),
|
|
88
|
+
Remotion (UI motion graphics), `comfyui` (AI-generated visuals),
|
|
89
|
+
`ascii-video` (technical/retro), hybrid
|
|
90
|
+
- **Pacing?** — Fast and dense (3Blue1Brown) or slow and contemplative
|
|
91
|
+
|
|
92
|
+
### Tutorial / changelog / software demo
|
|
93
|
+
|
|
94
|
+
- **Software being demonstrated?** — Name, what it does
|
|
95
|
+
- **Demo script?** — Sequence of commands / screens to show
|
|
96
|
+
- **Terminal-only or with GUI?**
|
|
97
|
+
- **Voiceover for narration?**
|
|
98
|
+
- **Diagram support needed?** — Often these benefit from a diagram skill
|
|
99
|
+
alongside the screen-capture/render step (`excalidraw`,
|
|
100
|
+
`architecture-diagram`, `concept-diagrams`)
|
|
101
|
+
|
|
102
|
+
### ASCII / terminal art
|
|
103
|
+
|
|
104
|
+
- **Source material?** — Generative / driven by audio / converting existing
|
|
105
|
+
video / static image starting point
|
|
106
|
+
- **Color palette?** — Brand-driven (gold/black/blue), Matrix green, full
|
|
107
|
+
rainbow, monochrome
|
|
108
|
+
- **Audio reactivity?** — None / loose mood / tight beat sync / FFT-driven
|
|
109
|
+
- **Character set?** — ASCII only / Unicode block-drawing / mystic glyphs
|
|
110
|
+
- **Loop or narrative?** — Perfect loop or one-shot
|
|
111
|
+
|
|
112
|
+
### Abstract / loop
|
|
113
|
+
|
|
114
|
+
- **Mood / emotion?** — One word that captures the feel
|
|
115
|
+
- **Motion type?** — Zoom-into-itself, particle drift, wave, geometric, organic
|
|
116
|
+
- **Loop required?** — Perfect loop (Droste-style) or just satisfying ending
|
|
117
|
+
- **Audio?** — Silent, ambient pad, beat-synced
|
|
118
|
+
|
|
119
|
+
### Documentary / interview cut
|
|
120
|
+
|
|
121
|
+
- **Source footage?** — Provided clips, length per clip
|
|
122
|
+
- **Transcript / subtitles?** — Provided or to be generated
|
|
123
|
+
- **Story structure?** — Chronological / thematic / arc
|
|
124
|
+
- **B-roll approach?** — Generated, stock library, none
|
|
125
|
+
|
|
126
|
+
### Real-time / installation
|
|
127
|
+
|
|
128
|
+
- **Output environment?** — Gallery wall, projector, screen, web embed
|
|
129
|
+
- **Audio source?** — Live audio input, pre-recorded track, both
|
|
130
|
+
- **Reactivity tightness?** — Mood-level (loose) vs. tight beat-sync vs. live
|
|
131
|
+
parameter control
|
|
132
|
+
- **Tool preference?** — `touchdesigner-mcp` for full TD operator graphs;
|
|
133
|
+
`p5js` for web-canvas; `comfyui` for generative-AI fed by audio features
|
|
134
|
+
|
|
135
|
+
## Tier 2 — Always ask near the end
|
|
136
|
+
|
|
137
|
+
- **Brand assets path?** — Where logo / color palette / fonts / music library lives
|
|
138
|
+
- **Output format requirements?** — Codec preference, target file size, accepted
|
|
139
|
+
alternates (vertical cut, GIF, audio-only)
|
|
140
|
+
- **Deadline?** — Affects task `max_runtime_seconds` and acceptable scope
|
|
141
|
+
- **Quality bar?** — Rough draft for review / polished final / archival
|
|
142
|
+
- **Existing footage / assets to reuse?** — Anything that should appear, not just inform
|
|
143
|
+
|
|
144
|
+
## Reasonable assumption defaults
|
|
145
|
+
|
|
146
|
+
When the user under-specifies, fill in these defaults rather than asking:
|
|
147
|
+
|
|
148
|
+
| Question | Default |
|
|
149
|
+
|----------|---------|
|
|
150
|
+
| Frame rate | 30 fps for X / IG; 60 fps for tutorials/explainers; 24 fps for narrative film |
|
|
151
|
+
| Resolution | 1080×1080 for square, 1920×1080 for 16:9, 1080×1920 for 9:16 |
|
|
152
|
+
| Codec | H.264 / yuv420p, CRF 18 |
|
|
153
|
+
| Audio codec | AAC 192 kbps |
|
|
154
|
+
| Voice | Provider's mid-range neutral voice unless brand calls for distinctive timbre |
|
|
155
|
+
| Music | Silent (require user to specify if music is wanted) |
|
|
156
|
+
| Captions | On for explainer/tutorial; off for narrative/abstract unless requested |
|
|
157
|
+
| Quality bar | Polished final unless user says draft |
|
|
158
|
+
|
|
159
|
+
State the assumption explicitly: *"Assuming 30fps and AAC audio unless you say otherwise — proceed?"*
|
|
160
|
+
|
|
161
|
+
## Anti-patterns
|
|
162
|
+
|
|
163
|
+
- **Asking 10 questions at once.** Maximum 4 per turn.
|
|
164
|
+
- **Asking for things the brief already implies.** If the user said "music video for my track," do not ask "is there a track?"
|
|
165
|
+
- **Failing to classify before drilling in.** Tier-1 questions depend on classification; mixing them up wastes turns.
|
|
166
|
+
- **Treating "make a video" as enough to proceed.** Always confirm the three baseline questions.
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
# Kanban Setup — Project Bootstrap & Profile Configuration
|
|
2
|
+
|
|
3
|
+
Once the brief is locked and the team is designed, the next step is producing
|
|
4
|
+
the actual `setup.sh` that creates the project workspace, configures the agent
|
|
5
|
+
profiles, and fires the initial kanban task.
|
|
6
|
+
|
|
7
|
+
This file documents the patterns. The companion script
|
|
8
|
+
`scripts/bootstrap_pipeline.py` automates most of it from a structured input
|
|
9
|
+
JSON.
|
|
10
|
+
|
|
11
|
+
> **Credit:** the single-project-workspace layout, profile-config patching
|
|
12
|
+
> approach, SOUL.md-per-profile convention, and `--workspace dir:<path>` rule
|
|
13
|
+
> are adapted from alt-glitch's original multi-agent video pipeline:
|
|
14
|
+
> [
|
|
15
|
+
> This skill generalizes those patterns across video styles and replaces the
|
|
16
|
+
> string-replacement config patcher with a PyYAML-based one.
|
|
17
|
+
|
|
18
|
+
## Project workspace structure
|
|
19
|
+
|
|
20
|
+
Every video project gets one workspace under `~/projects/video-pipeline/<slug>/`:
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
~/projects/video-pipeline/<slug>/
|
|
24
|
+
├── brief.md ← the contract; all tasks reference
|
|
25
|
+
├── TEAM.md ← team composition + task graph (director reads this)
|
|
26
|
+
├── taste/
|
|
27
|
+
│ ├── brand-guide.md ← color, typography, motion rules
|
|
28
|
+
│ ├── emotional-dna.md ← what the piece should FEEL like
|
|
29
|
+
│ └── style-frames/ ← optional: visual references
|
|
30
|
+
├── audio/
|
|
31
|
+
│ ├── track.mp3 ← provided music (if any)
|
|
32
|
+
│ ├── voiceover/ ← per-line TTS clips
|
|
33
|
+
│ └── sfx/ ← sound effects
|
|
34
|
+
├── assets/
|
|
35
|
+
│ ├── logos/
|
|
36
|
+
│ ├── fonts/
|
|
37
|
+
│ └── existing-footage/ ← reusable provided clips
|
|
38
|
+
├── scenes/
|
|
39
|
+
│ ├── scene-01/
|
|
40
|
+
│ │ ├── VISUAL_SPEC.md ← cinematographer's per-scene spec
|
|
41
|
+
│ │ ├── render.py ← renderer's code (or sketch.html, etc.)
|
|
42
|
+
│ │ ├── checkpoints/ ← preview frames for QA
|
|
43
|
+
│ │ └── clip.mp4 ← the deliverable for this scene
|
|
44
|
+
│ ├── scene-02/...
|
|
45
|
+
│ └── ...
|
|
46
|
+
├── checkpoints/ ← global review frames
|
|
47
|
+
├── tools/ ← optional project-local helpers
|
|
48
|
+
└── output/
|
|
49
|
+
├── final.mp4 ← stitched + audio
|
|
50
|
+
├── final-noaudio.mp4
|
|
51
|
+
├── final-9x16.mp4 ← optional: vertical alternate
|
|
52
|
+
└── captions.srt ← optional: subtitle file
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
**The slug** is derived from the brief title: lowercase, hyphen-separated.
|
|
56
|
+
Example: `q3-product-teaser`, `ascii-mood-loop`, `interview-cut-2026-q1`.
|
|
57
|
+
|
|
58
|
+
## The setup.sh script
|
|
59
|
+
|
|
60
|
+
The setup script does six things in order:
|
|
61
|
+
|
|
62
|
+
1. **Create workspace tree** — all directories above
|
|
63
|
+
2. **Create profiles** — `hermes profile create <name> --clone`
|
|
64
|
+
3. **Configure profiles** — patch each profile's
|
|
65
|
+
`~/.agent/profiles/<name>/config.yaml` to set toolsets, always_load skills,
|
|
66
|
+
and `cwd`
|
|
67
|
+
4. **Write SOUL.md per profile** — the personality + role definition
|
|
68
|
+
5. **Copy any provided assets + write `brief.md`, `TEAM.md`, and `taste/`**
|
|
69
|
+
6. **Fire the initial kanban task** — `hermes kanban create` assigned to the director
|
|
70
|
+
|
|
71
|
+
See `assets/setup.sh.tmpl` for the skeleton.
|
|
72
|
+
|
|
73
|
+
### Profile creation pattern
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
hermes profile create director --clone 2>/dev/null || true
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
The `--clone` flag clones from the active profile (preserving model, base
|
|
80
|
+
config). The `|| true` makes the script idempotent — re-running won't error if
|
|
81
|
+
the profile already exists.
|
|
82
|
+
|
|
83
|
+
### Profile config patching
|
|
84
|
+
|
|
85
|
+
Each profile has a YAML config at `~/.agent/profiles/<name>/config.yaml`. The
|
|
86
|
+
setup script edits exactly two keys:
|
|
87
|
+
|
|
88
|
+
1. `toolsets:` — replace the default with the role's required toolsets
|
|
89
|
+
2. `skills.always_load:` — list the role's must-load skills (may be empty)
|
|
90
|
+
|
|
91
|
+
**Do NOT** modify `approvals.mode` (controls user-confirmation of tool calls
|
|
92
|
+
— a security setting that must stay as the user configured it). **Do NOT**
|
|
93
|
+
modify `terminal.cwd` — the kanban dispatcher overrides cwd per-task via
|
|
94
|
+
`--workspace dir:<path>`, so the profile's cwd is irrelevant to the kanban
|
|
95
|
+
work and changing it could break the user's interactive use of the profile.
|
|
96
|
+
|
|
97
|
+
Use **PyYAML**, not string replacement, so the patch is robust against
|
|
98
|
+
default-config schema drift:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
configure_profile() {
|
|
102
|
+
local profile="$1"
|
|
103
|
+
local toolsets_json="$2" # JSON array, e.g. '["kanban","terminal","file"]'
|
|
104
|
+
local skills_json="$3" # JSON array, e.g. '["kanban-worker","ascii-video"]'
|
|
105
|
+
python3 - "$profile" "$toolsets_json" "$skills_json" <<'PY'
|
|
106
|
+
import json, os, sys, yaml
|
|
107
|
+
profile, ts_json, sk_json = sys.argv[1:4]
|
|
108
|
+
p = os.path.expanduser(f"~/.agent/profiles/{profile}/config.yaml")
|
|
109
|
+
with open(p) as f:
|
|
110
|
+
cfg = yaml.safe_load(f) or {}
|
|
111
|
+
cfg["toolsets"] = json.loads(ts_json)
|
|
112
|
+
cfg.setdefault("skills", {})["always_load"] = json.loads(sk_json)
|
|
113
|
+
with open(p, "w") as f:
|
|
114
|
+
yaml.safe_dump(cfg, f, sort_keys=False)
|
|
115
|
+
PY
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
PyYAML must be installed in the user's Python (it commonly available
|
|
120
|
+
installs). If absent: `pip install pyyaml`.
|
|
121
|
+
|
|
122
|
+
The setup script should also **validate** the patch by re-reading the file
|
|
123
|
+
and comparing — see `assets/setup.sh.tmpl` for the validation pattern.
|
|
124
|
+
|
|
125
|
+
### SOUL.md per profile
|
|
126
|
+
|
|
127
|
+
Each profile gets a `SOUL.md` at `~/.agent/profiles/<name>/SOUL.md` that
|
|
128
|
+
defines its role, voice, and rules. See `assets/soul.md.tmpl` for the
|
|
129
|
+
template. Customize per role and per project.
|
|
130
|
+
|
|
131
|
+
The director's SOUL.md should be the most opinionated — its voice flavors
|
|
132
|
+
the entire production. **Critical content for the director's SOUL.md:**
|
|
133
|
+
|
|
134
|
+
- **Anti-temptation rules:** "Do not execute the work yourself. For every
|
|
135
|
+
concrete task, create a kanban task and assign it. Decompose, route, comment,
|
|
136
|
+
approve — that's the whole job." (The `kanban-orchestrator` skill provides
|
|
137
|
+
the deeper playbook; load it.)
|
|
138
|
+
- **Decomposition steps:** Read `brief.md`, `TEAM.md`, `taste/`. Use the team
|
|
139
|
+
graph in `TEAM.md` to fan out tasks.
|
|
140
|
+
- **The workspace_path rule** (see below).
|
|
141
|
+
|
|
142
|
+
Other profiles' SOUL.md is briefer; mostly mechanical: who you are, what you
|
|
143
|
+
read, what you produce, what skills/tools to use, where to write outputs.
|
|
144
|
+
Most non-director profiles should `always_load: kanban-worker` for the
|
|
145
|
+
deeper-than-baseline kanban guidance.
|
|
146
|
+
|
|
147
|
+
### Initial kanban task
|
|
148
|
+
|
|
149
|
+
The final action of setup.sh is firing the kanban:
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
hermes kanban create "Direct production of <video title>" \
|
|
153
|
+
--assignee director \
|
|
154
|
+
--workspace dir:"$HOME/projects/video-pipeline/${PROJECT_SLUG}" \
|
|
155
|
+
--tenant ${PROJECT_SLUG} \
|
|
156
|
+
--priority 2 \
|
|
157
|
+
--max-runtime 4h \
|
|
158
|
+
--body "$(cat <<EOF
|
|
159
|
+
Read brief.md, TEAM.md, and taste/.
|
|
160
|
+
Decompose into the team graph defined in TEAM.md.
|
|
161
|
+
All child tasks MUST use:
|
|
162
|
+
workspace_kind="dir"
|
|
163
|
+
workspace_path="$HOME/projects/video-pipeline/${PROJECT_SLUG}"
|
|
164
|
+
tenant="${PROJECT_SLUG}"
|
|
165
|
+
EOF
|
|
166
|
+
)"
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
The `--workspace dir:<path>` flag is **critical** — it tells the kanban that
|
|
170
|
+
all child tasks share this workspace. Skipping or using `worktree` will
|
|
171
|
+
isolate profiles and break artifact sharing.
|
|
172
|
+
|
|
173
|
+
## The TEAM.md file
|
|
174
|
+
|
|
175
|
+
Alongside `brief.md`, write a `TEAM.md` that the director reads. It documents
|
|
176
|
+
the team composition + task graph the orchestrator should follow. This
|
|
177
|
+
removes ambiguity and prevents the director from inventing extra steps.
|
|
178
|
+
|
|
179
|
+
Example structure (for an ASCII video with a music supervisor and editor):
|
|
180
|
+
|
|
181
|
+
```markdown
|
|
182
|
+
# Team & Task Graph — <video title>
|
|
183
|
+
|
|
184
|
+
## Team
|
|
185
|
+
|
|
186
|
+
- `director` (this profile) — vision, decomposition, approval
|
|
187
|
+
- `cinematographer` — visual spec, quality review (loads `ascii-video`)
|
|
188
|
+
- `renderer-ascii` — ASCII scenes (loads `ascii-video`)
|
|
189
|
+
- `music-supervisor` — track analysis (loads `songsee`)
|
|
190
|
+
- `voice-talent` — narration (uses ElevenLabs API)
|
|
191
|
+
- `audio-mixer` — final mix (ffmpeg)
|
|
192
|
+
- `editor` — assembly (ffmpeg)
|
|
193
|
+
- `reviewer` — final QA gate
|
|
194
|
+
|
|
195
|
+
## Task Graph
|
|
196
|
+
|
|
197
|
+
T0: this task — decompose
|
|
198
|
+
│
|
|
199
|
+
├── T1: cinematographer "Design visual language" (parent: T0)
|
|
200
|
+
│ │
|
|
201
|
+
│ ├── T2a: renderer-ascii "Scene 1 — title card" (parent: T1)
|
|
202
|
+
│ ├── T2b: renderer-ascii "Scene 2 — main beat" (parent: T1)
|
|
203
|
+
│ ├── T2c: renderer-ascii "Scene 3 — outro" (parent: T1)
|
|
204
|
+
│
|
|
205
|
+
├── T3: music-supervisor "Analyze track + emit beats.json" (parent: T0)
|
|
206
|
+
│
|
|
207
|
+
├── T4: voice-talent "Generate narration" (parent: T0)
|
|
208
|
+
│
|
|
209
|
+
├── T5: audio-mixer "Mix VO + bg music" (parents: T3, T4)
|
|
210
|
+
│
|
|
211
|
+
├── T6: editor "Assemble cut + mux audio" (parents: T2*, T5)
|
|
212
|
+
│
|
|
213
|
+
└── T7: reviewer "Final QA" (parent: T6)
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
The director turns this into actual `kanban_create` calls.
|
|
217
|
+
|
|
218
|
+
## API-key prerequisites check
|
|
219
|
+
|
|
220
|
+
Before firing the kanban, verify required keys are available. Check both
|
|
221
|
+
the the agent `.env` (`${AGENT_HOME:-$HOME/.agent}/.env`) and macOS Keychain
|
|
222
|
+
(if on macOS):
|
|
223
|
+
|
|
224
|
+
```bash
|
|
225
|
+
check_key() {
|
|
226
|
+
local var="$1"
|
|
227
|
+
local kc_account="$2"
|
|
228
|
+
local kc_service="$3"
|
|
229
|
+
local _agent_env="${AGENT_HOME:-$HOME/.agent}/.env"
|
|
230
|
+
if grep -q "^${var}=" "$_agent_env" 2>/dev/null && \
|
|
231
|
+
[ -n "$(grep "^${var}=" "$_agent_env" | cut -d= -f2-)" ]; then
|
|
232
|
+
return 0
|
|
233
|
+
fi
|
|
234
|
+
if command -v security >/dev/null 2>&1 && \
|
|
235
|
+
security find-generic-password -a "${kc_account}" -s "${kc_service}" -w >/dev/null 2>&1; then
|
|
236
|
+
return 0
|
|
237
|
+
fi
|
|
238
|
+
echo "ERROR: ${var} not set in ${_hermes_env} or Keychain (${kc_account}/${kc_service})"
|
|
239
|
+
return 1
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
check_key ELEVENLABS_API_KEY hermes ELEVENLABS_API_KEY || exit 1
|
|
243
|
+
check_key OPENROUTER_API_KEY hermes OPENROUTER_API_KEY || exit 1
|
|
244
|
+
# ...
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
If a key is missing, the script aborts with a clear message rather than
|
|
248
|
+
firing a kanban that will hit credential errors mid-execution.
|
|
249
|
+
|
|
250
|
+
## Critical rules
|
|
251
|
+
|
|
252
|
+
1. **`workspace_kind="dir"` + `workspace_path="<absolute>"` on every kanban_create.** Otherwise profiles can't share artifacts.
|
|
253
|
+
|
|
254
|
+
2. **Tenant every task.** `--tenant <project-slug>` keeps the dashboard scoped
|
|
255
|
+
and prevents cross-pollination with other ongoing kanbans.
|
|
256
|
+
|
|
257
|
+
3. **Idempotency keys.** For tasks that should not duplicate on re-run (e.g.,
|
|
258
|
+
setup creating profiles), use the `idempotency_key` argument or check
|
|
259
|
+
existence first.
|
|
260
|
+
|
|
261
|
+
4. **`max_runtime_seconds` per task.** Renderers that get stuck eat compute.
|
|
262
|
+
Standard defaults:
|
|
263
|
+
- Renderer task: 1800s (30min)
|
|
264
|
+
- Editor task: 600s (10min)
|
|
265
|
+
- Voice-talent task: 300s (5min)
|
|
266
|
+
- Image-generator task: 600s (10min)
|
|
267
|
+
- Image-to-video-generator task: 900s (15min)
|
|
268
|
+
|
|
269
|
+
5. **Heartbeats for long renders.** Tasks expected to run >5min should emit
|
|
270
|
+
`kanban_heartbeat` periodically with progress. Renderers should report
|
|
271
|
+
frame counts; the editor should report assembly progress.
|
|
272
|
+
|
|
273
|
+
6. **The `audio/` and `taste/` dirs are populated BEFORE firing the kanban.**
|
|
274
|
+
Don't ask the director's pipeline to source these — copy at setup time.
|
|
275
|
+
|
|
276
|
+
7. **`brief.md` is read-only after setup.** If the brief changes during
|
|
277
|
+
execution, that's a significant pivot — re-fire the kanban rather than edit
|
|
278
|
+
live.
|