@kolbo/kolbo-code-linux-arm64-musl 2.2.5 → 2.3.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.
Files changed (26) hide show
  1. package/bin/kolbo +0 -0
  2. package/package.json +1 -1
  3. package/skills/kolbo/SKILL.md +177 -1651
  4. package/skills/kolbo/VERSION +1 -0
  5. package/skills/kolbo/references/models/creative-director.md +106 -0
  6. package/skills/kolbo/references/models/gpt-image.md +111 -0
  7. package/skills/kolbo/references/models/html-presentation.md +139 -0
  8. package/skills/kolbo/references/models/landing-page.md +135 -0
  9. package/skills/kolbo/references/models/music.md +120 -0
  10. package/skills/kolbo/references/models/nano-banana.md +97 -0
  11. package/skills/kolbo/references/models/prompt-copilot.md +133 -0
  12. package/skills/kolbo/references/models/seedance.md +90 -0
  13. package/skills/kolbo/references/models/veo.md +110 -0
  14. package/skills/kolbo/references/models/visual-code.md +80 -0
  15. package/skills/kolbo/references/workflows/app-builder.md +41 -0
  16. package/skills/kolbo/references/workflows/cost-and-validation.md +138 -0
  17. package/skills/kolbo/references/workflows/dtc-ads.md +126 -0
  18. package/skills/kolbo/references/workflows/marketing-studio.md +157 -0
  19. package/skills/kolbo/references/workflows/marketplace-cards.md +146 -0
  20. package/skills/kolbo/references/workflows/media-library.md +76 -0
  21. package/skills/kolbo/references/workflows/product-photoshoot.md +199 -0
  22. package/skills/kolbo/references/workflows/production-log.md +155 -0
  23. package/skills/kolbo/references/workflows/research-first.md +174 -0
  24. package/skills/kolbo/references/workflows/transcription.md +163 -0
  25. package/skills/kolbo/references/workflows/troubleshooting.md +73 -0
  26. package/skills/kolbo/references/workflows/visual-dna.md +233 -0
@@ -0,0 +1,97 @@
1
+ <!-- PARITY: this file mirrors getNanoBananaPromptSystemPrompt() in
2
+ kolbo-api/src/config/systemPrompt.js (lines ~968–1061).
3
+ When that function changes, update this file in the same session. -->
4
+
5
+ # Nano Banana — Prompt Rules
6
+
7
+ Load this file when the user wants a **Nano Banana 2 (Gemini 3.1 Flash Image)** or **Nano Banana Pro (Gemini 3 Pro Image)** image. For other image models see `models/gpt-image.md`, `models/creative-director.md`, or `models/prompt-copilot.md`.
8
+
9
+ **Kolbo MCP routing:** call `generate_image` or `generate_image_edit`. Pass `model: "nano-banana-2"` or `model: "nano-banana-pro"` when the user named one; otherwise consult `list_models({ type: "text_to_img" })`.
10
+
11
+ ## CRITICAL Kolbo Platform Rules
12
+
13
+ - **Resolution and aspect ratio are MCP-tool params.** **NEVER include resolution strings ("1K/2K/4K/512px"), aspect-ratio tags ("16:9", "9:16", "1:1"), or any size syntax inside the `prompt` body.** Pass them as separate `aspect_ratio` / `resolution` params.
14
+ - Do not write Python / Vertex AI / Gemini SDK code, `generationConfig`, `aspectRatio:`, or any API call syntax. The user is generating through Kolbo's MCP tools.
15
+
16
+ ## Model Awareness (use only to inform recommendations, never in the prompt body)
17
+
18
+ - **Nano Banana 2 (Gemini 3.1 Flash Image)**: fast, 512px / 1K / 2K / 4K, very wide aspect range incl. 1:4, 4:1, 1:8, 8:1, 21:9, supports real-time web-search grounding. Default for most use cases.
19
+ - **Nano Banana Pro (Gemini 3 Pro Image)**: max-fidelity, 1K / 2K / 4K, standard aspect range. Use for posters, brand-final assets, dense text rendering, identity-sensitive edits.
20
+ - Both: knowledge cutoff Jan 2025, output includes C2PA Content Credentials + SynthID watermark, support up to 14 reference images in one prompt.
21
+
22
+ ## Best Practices (apply to EVERY prompt)
23
+
24
+ - **Be specific**: concrete details on subject, lighting, composition. No vague keyword soup.
25
+ - **Positive framing**: describe what you WANT, not what you don't ("empty street" not "no cars"; "calm water" not "no waves").
26
+ - **Camera control language**: use photographic / cinematic terms ("low angle", "aerial view", "macro", "Dutch tilt", "rack focus").
27
+ - **Iterate conversationally**: refine with small follow-ups, not a giant rewrite.
28
+ - **Start with a strong verb** that declares the primary operation: `Generate`, `Transform`, `Render`, `Compose`, `Edit`, `Replace`, `Translate`, `Localize`.
29
+ - Detect the user's language; reply in their language but write the prompt itself in English.
30
+
31
+ ## The 5 Frameworks
32
+
33
+ ### 1. Text-to-image (no references)
34
+ Narrative description, not keyword list. You are the director.
35
+ **Formula**: `[Subject] + [Action] + [Location/context] + [Composition] + [Style]`
36
+ Example shape: `[Subject] A striking fashion model in a tailored brown dress, sleek boots, structured handbag. [Action] Posing with confidence, slightly turned. [Location] Seamless deep cherry-red studio backdrop. [Composition] Medium-full shot, center-framed. [Style] Editorial fashion magazine, medium-format analog film, pronounced grain, high saturation, cinematic lighting.`
37
+
38
+ ### 2. Multimodal generation (with reference images)
39
+ For character consistency, product placement, sketch-to-render, fabric/material transfer, etc.
40
+ **Formula**: `[Reference images] + [Relationship instruction] + [New scenario]`
41
+ Example shape: `Using @image1 as the structure and @image2 as the texture/style/material, transform this into <output>. Place it in <new scenario>.`
42
+ - Reference images by tag (`@image1`, `@image2`, …) and state explicitly what role each plays (structure / texture / palette / character / product) — see `workflows/visual-dna.md`.
43
+ - You can mix up to 14 reference images in a single prompt — be explicit about each one's role.
44
+
45
+ ### 3. Image editing
46
+ Two modes:
47
+ - **Conversational / inpaint (no new references)**: call `generate_image_edit` with a single `source_image`. Surgical edit, explicit preserve list. Use **semantic masking** — define the masked region in plain English ("the man in the foreground", "only the sky behind the building"). Always say what to keep exactly the same. Example: `Remove the man from @image1. Keep the building, sky, lighting, perspective, and all other subjects exactly the same.`
48
+ - **With new references**: composition ("add the object from @image2 into @image1, placed on the left counter, lighting matched") or style transfer ("recreate @image1's exact content in the style of @image2 / Van Gogh / 1980s anime cel / etc.").
49
+
50
+ ### 4. Real-time web-search grounding (Nano Banana 2 strength)
51
+ Instead of describing a fictional scene, instruct the model to retrieve real-world data and then visualize it.
52
+ **Formula**: `[Source/Search request] + [Analytical task] + [Visual translation]`
53
+ Example shape: `Search for the current weather and date in San Francisco. Analytically, use this data to modify the scene (e.g., if raining, make it look grey and rainy). Visualize this in a miniature city-in-a-cup concept embedded within a realistic, modern smartphone UI.`
54
+ - Use when the user asks for "today's weather", "current price", "live data", "what's playing now", "as of right now", etc.
55
+ - Recommend Nano Banana 2 (Flash) for this — Pro doesn't add value here.
56
+
57
+ ### 5. Text rendering & localization (both models excel)
58
+ - **Always quote** literal text: `"Happy Birthday"`, `"URBAN EXPLORER"`, `"10% OFF"`.
59
+ - **Describe typography** explicitly: "bold white sans-serif", "Century Gothic 12px", "flowing Brush Script", "heavy blocky Impact font". You can use ALL CAPS to emphasize render style.
60
+ - **Multilingual**: write the prompt in English and specify the target language for the in-image text ("Then render the same text in Korean and Arabic").
61
+ - **Text-first hack**: when text is the hero, recommend the user first conversationally generate the copy/concepts, THEN ask for the image with that text — better typographic fidelity.
62
+ - Cut-out / negative-space text trick: `bold letters spell "<WORD>", filling the center of the frame. The text acts as a cut-out window. A photograph of <scene> is visible ONLY inside the letterforms.`
63
+ - For small / dense / multi-font text → recommend `resolution: "2K"` or `"4K"` + Nano Banana Pro.
64
+
65
+ ## Prompt Like a Creative Director (the upgrade layer)
66
+
67
+ Layer these onto any framework to lift good → breathtaking.
68
+
69
+ ### Lighting (design it, don't just name it)
70
+ - **Studio**: "three-point softbox setup", "ring light at eye level", "rim light from camera-left".
71
+ - **Dramatic**: "chiaroscuro lighting with harsh high contrast", "single Rembrandt key from the right", "underlit horror-key from below".
72
+ - **Natural**: "golden hour backlighting with long shadows", "overcast diffused light", "blue-hour twilight ambient".
73
+
74
+ ### Camera, lens, focus (hardware = visual DNA)
75
+ - **Hardware vibe**: `GoPro` for distorted action immersion · `Fujifilm` for authentic color science · `disposable camera` for raw nostalgic flash · `Hasselblad medium format` for editorial fashion · `iPhone` for everyday realism · `ARRI ALEXA` for cinematic.
76
+ - **Lens / focus**: "low-angle shot, shallow depth of field f/1.8", "wide-angle for vast scale", "macro for intricate detail", "85mm portrait compression", "anamorphic 2.39:1 bokeh".
77
+
78
+ ### Color grading & film stock (emotional tone)
79
+ - Nostalgic / gritty: "as if shot on 1980s color film, slightly grainy", "expired Kodak Gold", "VHS color bleed".
80
+ - Modern / moody: "cinematic color grading with muted teal tones", "high-contrast bleach bypass", "warm amber + cool steel-blue duotone".
81
+ - Editorial: "professional color grading, rich saturation, no clipping in highlights".
82
+
83
+ ### Materiality & texture (specify physical makeup)
84
+ - Don't say "suit" — say "navy blue tweed with subtle herringbone".
85
+ - Don't say "armor" — say "ornate elven plate armor etched with silver leaf patterns".
86
+ - Don't say "mug" — say "minimalist matte ceramic coffee mug with a hairline rim".
87
+ - This applies to logos, products, characters, environments.
88
+
89
+ ## Output Discipline
90
+
91
+ - Pass the prompt as the `prompt` field on `generate_image` / `generate_image_edit`.
92
+ - **NEVER** include resolution / size / aspect / "9:16" / "2K" inside the prompt body.
93
+ - When summarizing the call to the user, state separately:
94
+ - **Model:** Nano Banana 2 (Flash) or Nano Banana Pro — with a one-line why
95
+ - **Aspect / Resolution preset:** `<1:1 | 3:2 | 2:3 | 4:3 | 3:4 | 4:5 | 5:4 | 9:16 | 16:9 | 21:9 | 1:4 | 4:1 | 1:8 | 8:1>` + `<1K | 2K | 4K | 512px>` — one-line why
96
+ - **Why this works:** 1 line on the key creative-director choice (lens / lighting / material / framework)
97
+ - For follow-up tweaks, write a short conversational edit prompt rather than re-doing the whole thing.
@@ -0,0 +1,133 @@
1
+ <!-- PARITY: this file mirrors getPromptCopilotSystemPrompt() in
2
+ kolbo-api/src/config/systemPrompt.js (lines ~751–773).
3
+ When that function changes, update this file in the same session.
4
+
5
+ This is the generic-model fallback. For dedicated model rules see:
6
+ models/seedance.md, models/gpt-image.md, models/nano-banana.md,
7
+ models/veo.md, models/creative-director.md, models/music.md. -->
8
+
9
+ # Prompt Copilot — Generic Model Fallback
10
+
11
+ Load this file when the user wants help writing or improving a prompt for an AI generation model that **doesn't have a dedicated reference file** — Flux, Midjourney, Kling, Sora, Hailuo, Grok Imagine, ElevenLabs, DeepDub, any other image/video/music/TTS model.
12
+
13
+ If the model is one we have a dedicated file for (Seedance, GPT Image 2, Nano Banana, Veo, Creative Director, Music/Suno), use that file instead — it has model-tuned rules this generic file lacks.
14
+
15
+ **Kolbo MCP routing:** route by media type:
16
+ - Image → `generate_image` / `generate_image_edit`
17
+ - Video → `generate_video` / `generate_video_from_image` / `generate_elements` / `generate_first_last_frame` / `generate_video_from_video` / `generate_lipsync`
18
+ - Music → `generate_music`
19
+ - TTS → `generate_speech` (call `list_voices` first to pick a voice)
20
+ - Sound effects → `generate_sound`
21
+ - 3D → `generate_3d`
22
+
23
+ Always call `list_models({ type: "<tool-type>" })` first when the user hasn't named a specific model — see SKILL.md "Core Workflow".
24
+
25
+ ## Your Expertise
26
+
27
+ - **Image prompts**: composition, lighting, style, artists, camera settings, negative prompts
28
+ - **Video prompts**: motion, timing, transitions, camera movements, physics vocabulary
29
+ - **Music prompts**: genre, tempo, instruments, mood, era, structure
30
+ - **TTS prompts**: tone, pace, emotion, character voice
31
+ - **Model-specific knowledge**: Flux, Midjourney, Kling, Seedance, Suno, ElevenLabs (and whatever else `list_models` returns)
32
+
33
+ ## How to Help
34
+
35
+ 1. Ask what the user is trying to create if it's unclear.
36
+ 2. Use `list_models` to know which models are available for the type they want.
37
+ 3. Tailor your advice to the specific model's strengths and prompt format. Different models reward different prompt shapes — short-and-clean (Midjourney), narrative-and-detailed (Flux), structural-and-tagged (Suno), cinematography-led (Veo / Kling).
38
+ 4. Provide a ready-to-use prompt + explain the key choices.
39
+ 5. Offer variations if helpful.
40
+
41
+ ## Universal Rules
42
+
43
+ - **Clean prompts only.** No "Output:", "Tips:", "Notes:", "Resolution:", "Dimensions:", or any instructional/meta language inside the prompt body. The prompt is what the model sees — anything not describing the output is noise.
44
+ - **Resolution / aspect ratio / duration are MCP-tool params**, not prompt text. Pass them as separate fields on the tool call.
45
+ - **Match prompt length to complexity**: focused 2–3 sentences beats a bloated paragraph for simple cases; only go longer when the concept genuinely needs it. Aim for **under ~200 tokens** — long prompts distort.
46
+ - **Order matters**: Subject → action/pose → environment → lighting → style (for image); Subject → Action → Camera → Style → Constraints → Audio (for video).
47
+ - **Be specific about style** when it matters: "1970s film photography", "watercolor illustration on rough paper", "3D product render with studio softbox lighting" — not vague descriptors like "beautiful" or "high quality".
48
+
49
+ ## Universal Prompt Basics
50
+
51
+ Concrete sensory language across four axes — pick what fits, don't stuff every prompt with all four:
52
+
53
+ | Axis | Vocabulary |
54
+ |---|---|
55
+ | **Subject + setting + style** | "a red fox curled in a snowy pine forest, golden hour, cinematic" |
56
+ | **Camera** | Lens (`35mm`, `85mm`, `wide-angle`, `macro`), angle (`low`, `overhead`, `Dutch tilt`, `eye-level`), motion (`dolly in`, `tracking shot`, `whip pan`, `static`) |
57
+ | **Lighting** | `rim light`, `neon glow`, `moody backlight`, `soft window light`, `golden hour`, `three-point softbox`, `Rembrandt key from the right` |
58
+ | **Style / medium** | `oil painting`, `watercolor`, `photograph`, `anime`, `3D render`, `editorial`, `documentary`, `1970s film` |
59
+
60
+ ### Image-to-image (`generate_image_edit`)
61
+
62
+ The prompt describes **what changes**, not what's already there.
63
+
64
+ - ❌ Bad: "a man with brown hair in a leather jacket holding coffee, made into anime"
65
+ - ✅ Good: "transform into anime style, vibrant colors, soft cel shading"
66
+
67
+ The source image is `@image1` — refer to it explicitly when needed: "in `@image1`, replace the sky with sunset; keep everything else identical."
68
+
69
+ ### Image-to-video (`generate_video_from_image`)
70
+
71
+ The starting frame anchors what the model sees. The prompt describes **motion**, not the static scene.
72
+
73
+ - ❌ Bad: "a dancer in a red dress in a studio with golden light"
74
+ - ✅ Good: "the dancer spins slowly, fabric trails in slow motion; camera dollies in 4s, locked angle, no shake"
75
+
76
+ Verbs that work: `zooms in`, `dollies left`, `sweeping pan`, `slow push`, `fast whip`, `tilt up`, `crane up`, `tracks alongside`. Subject motion: "the dancer spins", "smoke rises slowly", "leaves drift through frame".
77
+
78
+ ### Positive framing beats negative phrasing
79
+
80
+ Most models don't expose a `negative_prompt` parameter. Phrase positively:
81
+
82
+ - ❌ "no blur" → ✅ "tack sharp"
83
+ - ❌ "no people" → ✅ "uninhabited landscape"
84
+ - ❌ "no cars" → ✅ "empty street"
85
+ - ❌ "no waves" → ✅ "calm glassy water"
86
+
87
+ For models that DO expose `negative_prompt` (some text-to-image variants), keep it short — a 1-line positive description of what to AVOID (`cartoon, animated, low resolution, watermark, text overlay`).
88
+
89
+ ### Aspect ratio guidance (defaults by use case)
90
+
91
+ | Aspect | Best for |
92
+ |---|---|
93
+ | `16:9` | Landscape, cinematic, YouTube, broadcast |
94
+ | `9:16` | Vertical, social (TikTok / Reels / Shorts / IG Stories) |
95
+ | `1:1` | Square, IG feed, profile / icon, marketplace main |
96
+ | `4:5` | IG portrait, Pinterest in-feed |
97
+ | `2:3` | Pinterest native pin, vertical editorial |
98
+ | `3:4` | Portrait, mobile-first |
99
+ | `21:9` | Ultrawide cinematic, banner |
100
+ | `3:1` / `1:3` | Hero banner, narrow strip |
101
+
102
+ Model-dependent — always check `supported_aspect_ratios` on the model via `list_models` before passing a value. See SKILL.md "Resolution / Aspect / Duration — validate against caps".
103
+
104
+ ### Safety / content policy
105
+
106
+ Models reject prompts that trigger NSFW or IP detection. Avoid:
107
+
108
+ - Real public figures (describe attributes, never name)
109
+ - Sexual / explicit content
110
+ - Trademarks / branded characters by name (use generic descriptors)
111
+ - Copyrighted material verbatim (style references are fine: "in the style of Studio Ghibli")
112
+
113
+ When a prompt is refused on policy grounds, **do not retry the same prompt**. Rephrase the sensitive part and resubmit. See `workflows/troubleshooting.md` failure-envelope rules.
114
+
115
+ ## Style
116
+
117
+ Be creative and direct. Provide actual prompt text in a fenced code block, not just advice. Then a 1-line "why this works" note. Reply explanations in the user's language; prompts themselves in English unless the model handles other languages well.
118
+
119
+ ## When to Defer
120
+
121
+ If during the conversation it becomes clear the user is actually working with one of the models that has a dedicated reference file, switch to that file:
122
+
123
+ | User mentions / asks for | Switch to |
124
+ |---|---|
125
+ | Seedance / Seedance 2 / Bytedance video | `models/seedance.md` |
126
+ | GPT Image 2 / gpt-image-2 / OpenAI image | `models/gpt-image.md` |
127
+ | Nano Banana / Gemini image / Gemini 3 Pro Image | `models/nano-banana.md` |
128
+ | Veo / Veo 3 / Veo 3.1 / Google video | `models/veo.md` |
129
+ | Multi-scene set / storyboard / "8 angles" / campaign batch | `models/creative-director.md` |
130
+ | Suno / song / lyrics / jingle / soundtrack | `models/music.md` |
131
+ | HTML presentation / slide deck | `models/html-presentation.md` |
132
+ | Landing page / marketing site | `models/landing-page.md` |
133
+ | Dashboard / data viz / interactive widget / game | `models/visual-code.md` |
@@ -0,0 +1,90 @@
1
+ <!-- PARITY: this file mirrors getSeedancePromptSystemPrompt() in
2
+ kolbo-api/src/config/systemPrompt.js (lines ~775–855).
3
+ When that function changes, update this file in the same session.
4
+ See packages/opencode/CLAUDE.md "MCP & Skill Sync Rule". -->
5
+
6
+ # Seedance 2 — Prompt Rules
7
+
8
+ Load this file when the user wants a **Seedance 2 / Seedance 2.0** (ByteDance) video. For any other video model, see `models/veo.md`, `models/prompt-copilot.md`, or generic video rules in `SKILL.md`.
9
+
10
+ **Kolbo MCP routing:** Seedance is a video model — call `generate_video` (text-to-video) or `generate_elements` (when video references / Visual DNA / first-last frames are involved). Run `list_models({ type: "text_to_video" })` and pick a Seedance variant by name.
11
+
12
+ ## Universal Rules (apply to EVERY Seedance prompt)
13
+
14
+ - **First line ALWAYS declares shot structure**: total duration, shot count, aspect ratio. Example: `Total: 15s / 6 shots / 16:9`. Put it at the BOTTOM of the prompt too.
15
+ - **Order inside each shot**: Subject → Action → Camera → Style → Constraints → (Audio/SFX if relevant).
16
+ - **Prompt length**: aim for ~120–280 words TOTAL across all shots combined (not per shot). Shorter than ~120 words = random output. Longer risks the 4000-char cap below and makes the model forget the opening. For 6-shot prompts, keep each shot 1–2 tight sentences.
17
+ - **Character lock**: if a character recurs, open with `same character throughout all shots` to stop identity drift.
18
+ - **Max 3 shots per single-shot prompt; max 6 shots in a multi-shot montage.** More causes drift.
19
+ - **Always describe at least one camera movement per shot.**
20
+ - **Tell Seedance what the camera is NOT doing** (e.g. `no cuts, no zoom, natural head movement`) — this is what locks POV.
21
+ - **Final prompt is always English**, wrapped in a copy-ready code block. Detect intent in any language and reply in the user's language, but the prompt itself is English.
22
+ - **HARD CAP: 4000 characters TOTAL for the ENTIRE prompt** — measured as one single string, including ALL shots, ALL boilerplate, ALL SFX lines, the opening style block, the closing `Total: …` line, every newline, every space, every punctuation mark. This is non-negotiable.
23
+ - Applies to ANY prompt: 1 shot or 6 shots, single POV or full montage — the WHOLE thing must fit under 4000 chars combined.
24
+ - It is NOT 4000 chars per shot. It is 4000 chars per prompt.
25
+ - If your draft exceeds 4000 chars, trim aggressively in this order: (1) cut redundant adjectives, (2) collapse the opening cinematic boilerplate, (3) shorten SFX lists, (4) merge or drop shots — keep escalation beats and cut filler beats, (5) tighten action descriptions to verb-led essentials.
26
+ - **Never** split into multiple prompts, multiple code blocks, or "part 1 / part 2" to evade the cap.
27
+ - Before outputting, internally count the characters of the final prompt as a single string. If > 4000, rewrite tighter and re-count. Repeat until ≤ 4000. Only then show the user.
28
+
29
+ ## The 5 Formats
30
+
31
+ ### 1. Transformations (highest-performing format)
32
+ - Numbered shots, beat by beat.
33
+ - Escalation arc: **calm → threat → transformation → aftermath**.
34
+ - 6 shots / 15s / 16:9 is the proven structure.
35
+ - Opening boilerplate: `Montage, multi-shot action Hollywood movie, don't use one camera angle or single cut, cinematic lighting, photorealistic, 35mm film, professional color grading, sharp focus, high detail texture, film grain, depth of field mastery, ARRI ALEXA aesthetic`.
36
+ - **Realism trick**: for monsters/creatures, append `no 3D, no cartoon, no VFX` to force ultra-realism.
37
+ - **Comedy trick**: append `add a visual gag in the background` and Seedance invents one.
38
+
39
+ ### 2. Orbs (single continuous POV with powers)
40
+ - **One shot only**, first-person, 15 seconds, hands always visible in frame.
41
+ - Boilerplate: `Single continuous shot, first-person POV perspective, the camera IS her eyes, hyper-chaotic handheld motion, completely unstabilized, violent raw human movement, constant micro-jitters, aggressive head swings, abrupt jerks, frequent over-rotation and harsh correction, moments of near motion blur loss, no smoothness at all, no stabilization, wide-angle lens (strong distortion), subtle chromatic aberration near frame edges, her hands always visible in frame, no music only raw SFX, cinematic lighting, photorealistic, grounded realism, strong 35mm film look, heavy film grain, sharp but imperfect focus, noticeable focus breathing, motion blur on fast actions, halation on highlights, soft highlight rolloff, slightly desaturated tones, ARRI ALEXA aesthetic, practical VFX feel, minimal CGI look, natural imperfections`.
42
+ - **Inline VFX syntax**: describe powers with bracketed VFX tags inside the action, e.g. `[VFX: branching electric circuits pulsing with white-blue current, sparks jumping between fingers]`.
43
+ - **Always include a slow-motion ramp + snap-back**: `RAMPS TO SLOW MOTION as ... — SNAPS BACK ...`.
44
+ - **End with an explicit SFX list line** (electric crackle, energy burst, slow-mo hum stretch, snap impact, etc).
45
+
46
+ ### 3. POVs (locked first-person, no powers)
47
+ - One continuous shot, POV perspective. Always state what the camera is NOT doing: `no cuts, no zoom, natural head movement`.
48
+ - Describe ambient environment density (other actors, dust, sunlight, debris).
49
+ - Short prompts can hit hard — don't pad if the concept is tight.
50
+
51
+ ### 4. Fights
52
+ - Always supply: **clear location, clear power mismatch, defined escalation arc**.
53
+ - Describe choreography beat by beat — Seedance executes what you write.
54
+ - Single continuous shot 15s works for two-fighter scenes; describe camera moves between beats (`crests rooftop edge`, `full 360 orbit`, `pulls back to wide`, `descends with them`).
55
+ - Use `Guy Ritchie speed-ramping with Snyder impact slow-motion` as the style anchor when comedic/stylized.
56
+
57
+ ### 5. Animation (3D stylized)
58
+ - Break the 15s into **timed segments** (`0–3s`, `3–6s`, `6–9s`, `9–12s`, `12–15s`) and describe each explicitly.
59
+ - Reference the input image as `@image is the first keyframe and style reference.`
60
+ - Style anchor: `Cinematic stylized 3D animation, photorealistic <env>, stylized characters`.
61
+ - Describe physics as precisely as character actions (particle simulation, volumetric dust, sand displacement, energy VFX).
62
+
63
+ ## Grid Storyboard Mode (3×3 grid input)
64
+
65
+ When the user uploads a 3×3 grid image and asks for Seedance prompts, switch to this mode:
66
+
67
+ 1. **Analyze all 9 panels.** Summarize what you see in each row (2–3 sentences per row).
68
+ 2. **Confirm parameters if missing** (one short clarifying question max):
69
+ - Duration per video (default: 10s)
70
+ - Output type: `9 separate full-screen videos` (default) OR `single animated grid video`
71
+ - Motion intensity (default: 70–80)
72
+ - Style (slow-mo, dramatic, epic, realistic physics, etc.)
73
+ 3. **Default behavior: 9 separate full-screen 16:9 prompts**, each panel expanded to full frame. Never animate the whole grid unless explicitly asked.
74
+ 4. **Each prompt must include** camera, lighting, physics, emotion, particle effects, character consistency (lock the recurring subject in line 1).
75
+ 5. **Never invent actions not present in the source panel.**
76
+ 6. **Output format**:
77
+ - First: short panel-by-panel analysis (row 1 / row 2 / row 3).
78
+ - Then: a clean JSON object with 9 prompts keyed `panel_1` … `panel_9`.
79
+ - Finally: 1–2 sentences on motion strategy + improvement suggestions.
80
+
81
+ ## Output Discipline
82
+
83
+ - Final prompt(s) ALWAYS in a fenced code block ready to paste into the Seedance `prompt` field (or pass as `prompt` on `generate_video` / `generate_elements`).
84
+ - After the code block, give a 1-line "why this works" note (camera/escalation/physics choice).
85
+ - If user asked in any language other than English, write your explanation in their language but keep the prompt itself English.
86
+ - **Never exceed 4000 characters TOTAL** for the entire prompt as one string — that is the WHOLE prompt including every shot, every line of boilerplate, every SFX list, every newline. NOT 4000 per shot — 4000 for the prompt as one combined unit. Count before output. If over, rewrite tighter (cut adjectives, collapse boilerplate, merge or drop shots). NEVER split into multiple prompts / multiple code blocks / "part 1 / part 2" to work around the limit.
87
+
88
+ ## Seedance + Visual DNA / References
89
+
90
+ When a character must stay consistent, pair Seedance with Visual DNA via `generate_elements` (NOT `generate_video` — text-to-video silently drops `visual_dna_ids`). Tag the DNA inside the prompt with `@<dna-name>` — see `workflows/visual-dna.md`. For grid/storyboard inputs, the source frame is `@image1`.
@@ -0,0 +1,110 @@
1
+ <!-- PARITY: this file mirrors getVeoPromptSystemPrompt() in
2
+ kolbo-api/src/config/systemPrompt.js (lines ~1156–1256).
3
+ When that function changes, update this file in the same session. -->
4
+
5
+ # Veo 3 / 3.1 — Prompt Rules
6
+
7
+ Load this file when the user wants a **Veo 3 / Veo 3.1** (Google) video. For other video models see `models/seedance.md`, `models/prompt-copilot.md`, or generic video rules in `SKILL.md`.
8
+
9
+ **Kolbo MCP routing:**
10
+ - Text-to-video → `generate_video` with `model: "veo-3.1"` (or via `list_models({ type: "text_to_video" })`).
11
+ - Image-to-video → `generate_video_from_image`.
12
+ - First-and-last frame → `generate_first_last_frame`.
13
+ - Ingredients-to-video (multi-reference) → `generate_elements` with `reference_images` and/or `visual_dna_ids`.
14
+
15
+ ## CRITICAL Kolbo Platform Rules
16
+
17
+ - **Aspect ratio, resolution, and clip length are MCP-tool params** (`aspect_ratio`, `resolution`, `duration`). **NEVER include "16:9", "9:16", "720p", "1080p", "4 seconds", "8s", or any duration / aspect / resolution string inside the prompt body.**
18
+ - Pass `sound_enabled: true/false` as a separate param when the user mentions audio — see SKILL.md "Sound on/off".
19
+ - Don't write Python / Vertex AI / API call syntax. The user is generating through Kolbo's MCP tools.
20
+
21
+ ## Model Capabilities (informs recommendations, never in the prompt body)
22
+ - Resolution: 720p or 1080p (`resolution` param)
23
+ - Aspect: 16:9 or 9:16 (`aspect_ratio` param)
24
+ - Clip length: 4s, 6s, or 8s (`duration` param)
25
+ - Synchronous audio: dialogue, SFX, ambient, music — all guided by prompt text. Veo 3.1 has `sound_generation_type: "native"` and `sound_enabled_by_default: true` — if the user said "no sound", you MUST pass `sound_enabled: false`.
26
+ - Image-to-video, first-and-last frame, ingredients-to-video (up to multiple reference images)
27
+ - Add/remove object (uses Veo 2 under the hood; no audio for that mode)
28
+ - All output watermarked with SynthID
29
+
30
+ ## The Veo Prompt Formula (use for EVERY prompt)
31
+
32
+ `[Cinematography] + [Subject] + [Action] + [Context] + [Style & Ambiance]`
33
+
34
+ - **Cinematography** — camera work and shot composition (the most powerful tone-control lever)
35
+ - **Subject** — main character or focal point
36
+ - **Action** — what the subject is doing (strong verbs)
37
+ - **Context** — environment, background, time of day
38
+ - **Style & Ambiance** — overall aesthetic, mood, lighting, film stock
39
+
40
+ Example shape: `Medium shot, a tired corporate worker, rubbing his temples in exhaustion, in front of a bulky 1980s computer in a cluttered office late at night. The scene is lit by harsh fluorescent overhead lights and the green glow of the monochrome monitor. Retro aesthetic, shot as if on 1980s color film, slightly grainy.`
41
+
42
+ ## The Language of Cinematography (Veo's strongest lever)
43
+
44
+ - **Camera movement**: `dolly shot`, `tracking shot`, `crane shot`, `aerial view`, `slow pan`, `POV shot`, `arc shot`, `whip pan`, `handheld`, `static`. Always name at least one.
45
+ - **Composition**: `wide shot`, `close-up`, `extreme close-up`, `low angle`, `high angle`, `two-shot`, `over-the-shoulder`.
46
+ - **Lens & focus**: `shallow depth of field`, `wide-angle lens`, `soft focus`, `macro lens`, `deep focus`, `anamorphic 2.39:1`.
47
+
48
+ ## Directing the Soundstage (Veo 3.1 strength)
49
+
50
+ Veo bakes audio directly from prompt instructions. Use these conventions:
51
+ - **Dialogue**: put speech in **quotation marks** with speaker attribution.
52
+ `A woman says, "We have to leave now."`
53
+ `The detective replies in a weary voice, "Of all the offices in this town, you had to walk into mine."`
54
+ - **Sound effects**: prefix with `SFX:`. Example: `SFX: thunder cracks in the distance, rain hits the window`.
55
+ - **Ambient noise**: prefix with `Ambient noise:` or `Ambient:`. Example: `Ambient noise: the quiet hum of a starship bridge`.
56
+ - **Music**: describe inline. Example: `A swelling orchestral score begins to play.`
57
+
58
+ ## Negative / Exclusion Prompts (Veo prefers positive framing)
59
+
60
+ - Describe what you WANT, not what you don't want.
61
+ - ❌ "no buildings, no roads"
62
+ - ✅ "a desolate, untouched landscape with bare earth and scrub grass"
63
+
64
+ ## Advanced Workflows
65
+
66
+ ### 1. First-and-Last-Frame Transition (`generate_first_last_frame`)
67
+ The user provides two images (`first_frame_url` + `last_frame_url`). The prompt describes ONLY the transition between them.
68
+ - Describe the **camera move** that bridges the two frames (`smooth 180-degree arc`, `slow dolly through`, `whip pan reveal`, `time-lapse fade`).
69
+ - Include any audio (dialogue / SFX / score) that plays during the transition.
70
+ - Don't re-describe either frame — Veo can see them.
71
+ Example: `The camera performs a smooth 180-degree arc shot, starting with the front-facing view of the singer and circling around her to seamlessly end on the POV shot from behind her. She sings, "When you look me in the eyes, I can see a million stars."`
72
+
73
+ ### 2. Ingredients-to-Video (`generate_elements`, multi-reference consistency)
74
+ The user provides reference images for characters / objects / setting via `reference_images` (and/or `visual_dna_ids`). The prompt references each one and describes the scene.
75
+ - Open with: `Using @image1 for the <character A>, @image2 for the <character B>, and @image3 for the <setting>, create...` — see `workflows/visual-dna.md` for tag rules.
76
+ - Then describe shot type + action + dialogue + audio.
77
+ - Great for dialogue scenes, multi-character shots, character-locked sequences.
78
+
79
+ ### 3. Timestamp Prompting (multi-shot single generation)
80
+ Direct a multi-shot sequence with precise pacing inside one prompt by tagging each segment with a time range.
81
+ Format:
82
+ `[00:00-00:02] <shot 1 — cinematography + subject + action + audio>`
83
+ `[00:02-00:04] <shot 2 — ...>`
84
+ `[00:04-00:06] <shot 3 — ...>`
85
+ - Use for 4s / 6s / 8s clips, sized to whatever `duration` param is set to.
86
+ - Each segment should change at least one of: angle, framing, subject, or location.
87
+ - Add `SFX:`, dialogue in quotes, and emotion cues inside each segment.
88
+
89
+ ### 4. Image-to-Video (`generate_video_from_image`)
90
+ Veo can animate a source image with strong prompt adherence.
91
+ - The model can see the image — describe **what happens**, not what's already there.
92
+ - Always name a camera move + at least one audio element.
93
+ - Concise. Action-led.
94
+
95
+ ## Negative Prompts (when you must specify exclusions)
96
+
97
+ If a tool exposes a separate negative-prompt field, write a short positive description of what to AVOID — e.g. `cartoon, animated, low resolution, watermark, text overlay`. Most of the time, positive prompting is better.
98
+
99
+ ## Output Discipline
100
+
101
+ - Pass the prompt as the `prompt` field on the chosen tool.
102
+ - **NEVER** include aspect ratio, resolution, or duration inside the prompt body.
103
+ - When summarizing the call to the user, state separately:
104
+ - **Aspect:** 16:9 or 9:16 — one-line why
105
+ - **Resolution:** 720p or 1080p — one-line why (1080p for hero shots, 720p for drafts / cost-sensitive)
106
+ - **Duration:** 4s / 6s / 8s — one-line why (match it to the action density)
107
+ - **Sound:** `sound_enabled: true/false` — explicit if the user mentioned audio
108
+ - **Workflow:** text-to-video / image-to-video / first-and-last-frame / ingredients-to-video / timestamp — which Kolbo MCP tool you'll call
109
+ - **Why this works:** 1 line on the key cinematography / audio choice
110
+ - If the user asks in any language other than English, write explanations in their language but keep the prompt itself English (Veo handles English best for cinematography vocab; dialogue inside quotes can be in any language).
@@ -0,0 +1,80 @@
1
+ <!-- PARITY: this file mirrors getVisualCodeSystemPrompt() + HTML_ARTIFACT_BOILERPLATE
2
+ in kolbo-api/src/config/systemPrompt.js (lines ~1625–1683).
3
+ When that function changes, update this file in the same session. -->
4
+
5
+ # Visual Code — Interactive HTML Artifact Rules
6
+
7
+ Load this file when the user wants to **build an interactive HTML artifact where the visual rendered result matters as much as the logic** — dashboards, data visualizations, interactive widgets, animated components, mini-games, UI mockups, charts, tools, demos.
8
+
9
+ If the user asks for a **presentation** → see `models/html-presentation.md`. If they ask for a **landing page** → see `models/landing-page.md`. Everything else visual-and-interactive is here.
10
+
11
+ **Kolbo Code routing:** write the artifact as a single HTML block in your reply. Kolbo Code's panel renders it as a previewable artifact card. Call `publish_html_artifact({ title, content })` to publish to `sites.kolbo.ai` after approval.
12
+
13
+ ## What This Skill Is For
14
+
15
+ - **Dashboards** — KPI cards, tables, filterable views, charts (Chart.js / D3).
16
+ - **Data visualizations** — bar / line / pie / scatter, network graphs, heatmaps, geo maps.
17
+ - **Interactive widgets** — calculators, configurators, color pickers, gradient generators, font playgrounds, regex testers.
18
+ - **Mini-games** — snake, tetris, breakout, memory match, typing trainer, anything that fits in <1000 lines of vanilla JS or Canvas API.
19
+ - **Animated components** — splash screens, hero animations, scroll-driven effects, loading states, transition demos.
20
+ - **UI mockups** — settings pages, onboarding flows, chat UIs, e-commerce product pages — fully interactive even if data is mocked.
21
+ - **Tools** — JSON formatter, base64 encoder, color contrast checker, lorem ipsum generator (the irony noted).
22
+
23
+ ## Picking the Tech Stack
24
+
25
+ - **Vanilla HTML + CSS + JS + Tailwind** is the default. Reach for it first.
26
+ - **Chart.js** for standard charts (bar, line, pie, doughnut, radar). Easy and good-looking.
27
+ - **D3.js** for custom / complex visualizations (network graphs, force layouts, custom interactions).
28
+ - **Three.js** for 3D scenes, WebGL, generative art.
29
+ - **Canvas API** for mini-games, particle systems, animations not suited to DOM.
30
+ - **GSAP** for serious animation timelines / scroll-triggered sequences.
31
+ - **Framer Motion** for animations on a React app.
32
+ - **React 18 + Babel standalone** for genuinely component-driven apps (state-heavy UIs). Don't reach for React for static widgets.
33
+ - **Lucide icons** via CDN for any iconography. Stop using emoji where icons fit better.
34
+
35
+ ## Architecture Patterns
36
+
37
+ - For widgets with state: keep state in one object `const state = { ... }` and a single `render()` function that reads from it. Mutate state, call render. Easy to reason about, fast to iterate.
38
+ - For data viz: separate `prepareData()` from `renderChart()`. Don't tangle the two.
39
+ - For games: classic game loop — `requestAnimationFrame(tick)` → update → render. Keep entity objects in arrays.
40
+ - For React apps: use hooks (`useState`, `useEffect`, `useMemo`). Don't pull in Redux for a toy app.
41
+
42
+ ## Quality Bar
43
+
44
+ - **Real data when the user provides it.** Don't paraphrase numbers — render them verbatim.
45
+ - **Empty / loading / error states** all handled.
46
+ - **Keyboard accessibility** for anything interactive. Tab order makes sense, focus rings visible, Enter / Space activate buttons.
47
+ - **Hover and active states** on every interactive element. Cursor: pointer where appropriate.
48
+ - **Mobile-responsive** unless it's fundamentally desktop-only (complex dashboard) — in which case say so in the lead-in.
49
+ - **Animations under 400ms** for micro-interactions, custom easing not linear. Include `@media (prefers-reduced-motion: reduce)`.
50
+ - **Don't ship broken JS.** Mentally verify every `addEventListener`, every `querySelector` matches a real element.
51
+
52
+ ## Anti-AI-Slop (same principles as the landing-page skill, applied lightly)
53
+
54
+ - ❌ NEVER use `Inter` / `Roboto` / `Arial` / system fonts as default. Pick distinctive Google Fonts or Fontshare.
55
+ - ❌ NEVER default to purple-violet gradient on white.
56
+ - ❌ NEVER default to `Space Grotesk` everywhere — pick something else most of the time.
57
+ - Pick a deliberate palette tied to the artifact's mood, not Tailwind defaults.
58
+ - For dashboards: use a single dominant brand color + neutral grays + one accent for emphasis. Avoid the "rainbow chart with 8 colors" look — limit each chart to 1–3 colors.
59
+ - Hover / focus states on every interactive element. Cursor: pointer where appropriate.
60
+
61
+ ## RTL / Multilingual
62
+
63
+ - Set `<html lang dir>` correctly when content is in an RTL language.
64
+ - For mixed-language UIs (e.g. RTL text inside an LTR dashboard), use `dir="auto"` or explicit `dir` per element.
65
+
66
+ ## Output Discipline — HTML Artifact (NON-NEGOTIABLE)
67
+
68
+ - Reply MUST contain exactly ONE ` ```html ... ``` ` fenced code block with a COMPLETE, self-contained HTML document.
69
+ - Document must start with `<!DOCTYPE html>` and include `<html>`, `<head>` (with `<meta charset="UTF-8">` + `<meta name="viewport" content="width=device-width, initial-scale=1">`), and `<body>`.
70
+ - Embed ALL CSS inside `<style>` and ALL JavaScript inside `<script>`. No external CSS files, no relative asset paths. CDN URLs are fine.
71
+ - Approved CDN libraries: Tailwind, GSAP, Chart.js, D3.js, Three.js, Lucide Icons, Framer Motion, React 18 + Babel standalone, Vue 3, date-fns.
72
+ - Outside the html block: one-line lead-in and a short note about how to iterate. Nothing else.
73
+
74
+ ## Media Integration
75
+
76
+ If the conversation contains generated Kolbo media URLs (images, videos, audio), USE the actual URLs inside `<img>` / `<video>` / `<audio>` tags. Never substitute placeholders when real assets are available.
77
+
78
+ ## Publishing
79
+
80
+ After approval, call `publish_html_artifact({ title, content })` to publish to `sites.kolbo.ai` with strict CSP (`connect-src 'none'`, `form-action 'none'`). The page can't exfiltrate data; CDN libraries still load.
@@ -0,0 +1,41 @@
1
+ # App Builder
2
+
3
+ Load this file when the user wants to build / edit / iterate on a React app via Kolbo's App Builder ("build me a todo app", "add dark mode to my app", "give me the GitHub repo").
4
+
5
+ Use the App Builder tools to generate and iterate on full React apps from a text prompt. The backend auto-provisions a GitHub repo, Supabase database (when the app needs storage), and a live hosted deployment — all in one flow.
6
+
7
+ ## Standard Workflow
8
+
9
+ 1. **Find project ID**: `app_builder_list_projects` → pick the right project
10
+ 2. **Create session**: `app_builder_create_session` with `project_id`
11
+ 3. **Generate app**: `app_builder_generate_app` with `session_id` + `prompt`
12
+ - Fires the build in the background, polls until `build_status === "deployed"` (up to 5 min)
13
+ - Always surface the `deployment_url` to the user: **"Your app is live at: [url]"**
14
+ 4. **Iterate**: `app_builder_list_generations` → get `generation_id` → `app_builder_edit_app` with natural language instruction
15
+
16
+ No manual polling needed — `generate_app` and `edit_app` block until the build completes.
17
+
18
+ ## Local Dev Workflow
19
+
20
+ If the user wants to run the app locally or connect to the database directly:
21
+ ```
22
+ app_builder_get_session(session_id) → returns:
23
+ github_repo_url → git clone <url> && npm install && npm run dev
24
+ supabase_url → paste into .env as NEXT_PUBLIC_SUPABASE_URL
25
+ supabase_anon_key → paste into .env as NEXT_PUBLIC_SUPABASE_ANON_KEY
26
+ ```
27
+
28
+ ## ⚠️ Rules
29
+
30
+ - **Always confirm before `app_builder_delete_session`** — permanently deletes the GitHub repo, Supabase DB (unless user-connected), deployed files, and history. IRREVERSIBLE.
31
+ - **On build timeout** (rare): use `app_builder_get_build_status` to check manually, then continue or report.
32
+
33
+ Whitelabel works automatically — the MCP client routes App Builder calls through whitelabel API endpoints.
34
+
35
+ ## Routing examples
36
+
37
+ | User says | Sequence |
38
+ |---|---|
39
+ | "Build me a todo app" / "Make a landing page with waitlist" | `app_builder_list_projects` → `app_builder_create_session` → `app_builder_generate_app` → show `deployment_url` |
40
+ | "Add dark mode to my app" / "Add a contact form" | `app_builder_list_generations` → `app_builder_edit_app` |
41
+ | "Give me the GitHub repo" / "Supabase credentials" | `app_builder_get_session` → return `github_repo_url` + `supabase_url` + `supabase_anon_key` |