@kolbo/mcp 1.21.0 → 1.22.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/README.md +15 -15
- package/package.json +2 -1
- package/skill/SKILL.md +251 -0
- package/skill/VERSION +1 -0
- package/skill/references/models/creative-director.md +106 -0
- package/skill/references/models/gpt-image.md +111 -0
- package/skill/references/models/html-presentation.md +139 -0
- package/skill/references/models/landing-page.md +135 -0
- package/skill/references/models/music.md +120 -0
- package/skill/references/models/nano-banana.md +97 -0
- package/skill/references/models/prompt-copilot.md +133 -0
- package/skill/references/models/seedance.md +90 -0
- package/skill/references/models/veo.md +110 -0
- package/skill/references/models/visual-code.md +80 -0
- package/skill/references/workflows/app-builder.md +41 -0
- package/skill/references/workflows/cost-and-validation.md +138 -0
- package/skill/references/workflows/dtc-ads.md +126 -0
- package/skill/references/workflows/marketing-studio.md +157 -0
- package/skill/references/workflows/marketplace-cards.md +146 -0
- package/skill/references/workflows/media-library.md +76 -0
- package/skill/references/workflows/product-photoshoot.md +199 -0
- package/skill/references/workflows/production-log.md +155 -0
- package/skill/references/workflows/research-first.md +174 -0
- package/skill/references/workflows/transcription.md +163 -0
- package/skill/references/workflows/troubleshooting.md +73 -0
- package/skill/references/workflows/visual-dna.md +233 -0
- package/src/install.js +29 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
<!-- PARITY: this file mirrors getHtmlPresentationSystemPrompt() + HTML_ARTIFACT_BOILERPLATE
|
|
2
|
+
in kolbo-api/src/config/systemPrompt.js (lines ~1377–1515).
|
|
3
|
+
When that function changes, update this file in the same session. -->
|
|
4
|
+
|
|
5
|
+
# HTML Presentation — Build Rules
|
|
6
|
+
|
|
7
|
+
Load this file when the user wants to **build / create / generate an HTML presentation, slide deck, or pitch deck**. For landing pages see `models/landing-page.md`; for any other interactive HTML artifact (dashboard, game, chart, widget) see `models/visual-code.md`.
|
|
8
|
+
|
|
9
|
+
**Kolbo Code routing:** write the artifact as a single HTML block in your reply. The Kolbo Code panel renders it as a previewable artifact card. Optionally call `publish_html_artifact({ title, content })` afterward to get a public `sites.kolbo.ai` URL.
|
|
10
|
+
|
|
11
|
+
## 🚨 NON-NEGOTIABLE: Viewport Fitting
|
|
12
|
+
|
|
13
|
+
Every single slide MUST fit exactly within 100vh. **No scrolling within a slide, ever.** If content doesn't fit, SPLIT into multiple slides. This is the #1 rule, no exceptions.
|
|
14
|
+
|
|
15
|
+
Apply these invariants to EVERY slide in EVERY deck:
|
|
16
|
+
- Every `.slide` element has: `height: 100vh; height: 100dvh; overflow: hidden;` and a centered flex/grid layout.
|
|
17
|
+
- ALL font sizes and spacing use `clamp(min, preferred, max)` — **never fixed px/rem**. Example: `font-size: clamp(2.5rem, 5vw, 5rem);`.
|
|
18
|
+
- Content containers need explicit `max-height` constraints.
|
|
19
|
+
- Images: `max-height: min(50vh, 400px); object-fit: contain;`.
|
|
20
|
+
- Include short-viewport breakpoints: `@media (max-height: 700px)`, `(max-height: 600px)`, `(max-height: 500px)` — reduce font sizes / hide decoration / tighten gaps at each.
|
|
21
|
+
- Add `@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; } }`.
|
|
22
|
+
- Never negate CSS functions directly. `-clamp()` is silently ignored. Use `calc(-1 * clamp(...))`.
|
|
23
|
+
|
|
24
|
+
## 🚨 NON-NEGOTIABLE: Content Density Limits per Slide
|
|
25
|
+
|
|
26
|
+
| Slide Type | Maximum Content |
|
|
27
|
+
| -------------- | --------------- |
|
|
28
|
+
| Title slide | 1 heading + 1 subtitle + optional tagline |
|
|
29
|
+
| Content slide | 1 heading + 4–6 bullets OR 1 heading + 2 short paragraphs |
|
|
30
|
+
| Feature grid | 1 heading + max 6 cards (2×3 or 3×2) |
|
|
31
|
+
| Code slide | 1 heading + 8–10 lines of code max |
|
|
32
|
+
| Quote slide | 1 quote (≤3 lines) + attribution |
|
|
33
|
+
| Image slide | 1 heading + 1 image (max 60vh height) |
|
|
34
|
+
|
|
35
|
+
**Content exceeds limits? Split into more slides. Never cram, never shrink fonts to fit, never enable scrolling.**
|
|
36
|
+
|
|
37
|
+
## Deck Length & Structure
|
|
38
|
+
|
|
39
|
+
- **Default 8–12 slides** unless the user specifies otherwise. **Hard cap 16 slides** — bigger decks become unwieldy.
|
|
40
|
+
- Pick a structure based on the purpose:
|
|
41
|
+
- **Pitch deck**: Hook → Problem → Solution → How it works → Traction → Market → Team → Ask
|
|
42
|
+
- **Product / feature demo**: Title → Why → What → How (3 features) → Demo → Pricing → Next steps
|
|
43
|
+
- **Educational**: Title → Learning goals → Concept 1 → Concept 2 → Concept 3 → Example → Recap → Q&A
|
|
44
|
+
- **Status / review**: Title → Wins → Numbers → Challenges → Next quarter → Ask
|
|
45
|
+
- **One idea per slide.** Headlines lead: short, declarative, ideally <8 words. Body copy supports.
|
|
46
|
+
|
|
47
|
+
## Slide Layout Palette (vary these — never use the same layout twice in a row)
|
|
48
|
+
|
|
49
|
+
- **Title slide**: oversized headline, subtitle, optional brand mark / date / speaker name.
|
|
50
|
+
- **Content slide**: headline + 4–6 bullets OR 2-column split (text left, visual right).
|
|
51
|
+
- **Quote / pull-quote**: big quote, attribution, optional accent.
|
|
52
|
+
- **Data slide**: big number (kpi) + label + small supporting chart (Chart.js).
|
|
53
|
+
- **Image-led slide**: full-bleed image with caption overlay.
|
|
54
|
+
- **Comparison slide**: side-by-side with checkmarks/crosses.
|
|
55
|
+
- **Process / flow slide**: numbered steps with arrows / chevrons.
|
|
56
|
+
- **Closing / CTA slide**: short CTA, contact, thank-you.
|
|
57
|
+
|
|
58
|
+
## Aesthetic Direction — COMMIT BOLDLY
|
|
59
|
+
|
|
60
|
+
**Pick a clear conceptual direction and execute it with precision.** No timid middle-ground choices. Bold maximalism and refined minimalism both work — what matters is intentionality.
|
|
61
|
+
|
|
62
|
+
Before writing CSS, pick ONE aesthetic and commit:
|
|
63
|
+
- **Bold Signal** — high-contrast monochrome + one electric accent, oversized type
|
|
64
|
+
- **Electric Studio** — saturated brand color, generous whitespace, geometric accents
|
|
65
|
+
- **Dark Botanical** — near-black + deep emerald + warm gold, organic curves
|
|
66
|
+
- **Creative Voltage** — bright neon palette, kinetic typography, motion-led
|
|
67
|
+
- **Neon Cyber** — black + cyan + magenta, scanlines / grid lines, terminal vibes
|
|
68
|
+
- **Split Pastel** — soft duotones, rounded geometry, friendly playful
|
|
69
|
+
- **Notebook Tabs** — paper textures, marker-style annotations, hand-drawn shapes
|
|
70
|
+
- **Paper & Ink** — cream + black + warm red, classical serif, editorial restraint
|
|
71
|
+
- **Swiss Modern** — pure white + black + one accent, grid-disciplined, helvetica-class fonts
|
|
72
|
+
- **Vintage Editorial** — sepia / cream tones, classical serif headlines, golden-ratio layouts
|
|
73
|
+
- **Pastel Geometry** — soft palette, bold shapes, layered transparencies
|
|
74
|
+
- Or invent one that matches the topic. Don't always default to the same look.
|
|
75
|
+
|
|
76
|
+
## Typography — DISTINCTIVE FONTS ONLY
|
|
77
|
+
|
|
78
|
+
**Never use system fonts. Never use Inter, Roboto, or Arial.** Pull from Google Fonts or Fontshare. Pair a distinctive display font with a refined body font:
|
|
79
|
+
- Editorial: `'Fraunces'` / `'Playfair Display'` / `'DM Serif Display'` + `'Source Sans 3'` body
|
|
80
|
+
- Modern technical: `'Bricolage Grotesque'` / `'Instrument Serif'` / `'Geist'` + `'IBM Plex Sans'` body
|
|
81
|
+
- Bold creative: `'Boldonse'` / `'Anton'` / `'Archivo Black'` + `'Manrope'` body
|
|
82
|
+
- Mono accent: `'JetBrains Mono'` / `'Geist Mono'` / `'IBM Plex Mono'`
|
|
83
|
+
- **Avoid `'Space Grotesk'` for everything** — it's an LLM cliché. Pick something else most of the time.
|
|
84
|
+
|
|
85
|
+
Hebrew: `'Heebo'`, `'Rubik'`, `'Frank Ruhl Libre'`, `'Assistant'`. Arabic: `'Cairo'`, `'Tajawal'`, `'IBM Plex Sans Arabic'`, `'Reem Kufi'`.
|
|
86
|
+
|
|
87
|
+
## Color & Background
|
|
88
|
+
|
|
89
|
+
- Commit to a cohesive palette. **Dominant color with sharp accents beats timid evenly-distributed palettes.** Use CSS custom properties (`:root { --bg: ...; --fg: ...; --accent: ...; }`).
|
|
90
|
+
- Backgrounds with atmosphere, not solid colors: layered gradients, gradient meshes, subtle noise texture (data-URI SVG noise), geometric patterns, grain overlays, scanlines, dot grids.
|
|
91
|
+
- ❌ NEVER: default purple/violet gradient on white background — instant AI-slop signal.
|
|
92
|
+
|
|
93
|
+
## Motion — High-Impact, Not Scattered
|
|
94
|
+
|
|
95
|
+
- One well-orchestrated page-load with staggered reveals (`animation-delay` ladder) beats scattered micro-interactions sprinkled everywhere.
|
|
96
|
+
- Slide transitions: `transform: translateX()` + `opacity` with 300–500ms ease-out cubic-bezier. No bouncy / corny effects.
|
|
97
|
+
- Use CSS keyframes for everything. GSAP via CDN ONLY if you need a timeline or scroll-trigger.
|
|
98
|
+
- Always include the `prefers-reduced-motion` media query.
|
|
99
|
+
|
|
100
|
+
## Slide Mechanics
|
|
101
|
+
|
|
102
|
+
- Each slide = `<section class="slide">` inside `<main id="deck">`.
|
|
103
|
+
- Only ONE slide visible at a time. Non-active slides: `display: none` (or `opacity: 0; pointer-events: none` if cross-fading). Active slide: `.active` with the slide-type's display.
|
|
104
|
+
- Navigation:
|
|
105
|
+
- Arrow keys: `ArrowRight` / `Space` → next, `ArrowLeft` → prev. `Home` / `End` → first/last.
|
|
106
|
+
- On-screen prev/next buttons at bottom corners, semi-transparent.
|
|
107
|
+
- Slide counter "3 / 10" in a corner.
|
|
108
|
+
- Press `F` for fullscreen (`document.documentElement.requestFullscreen()`). `Esc` exits.
|
|
109
|
+
- Press number keys 1–9 to jump to that slide.
|
|
110
|
+
- **RTL decks**: swap arrow direction — right arrow → previous, left arrow → next.
|
|
111
|
+
- Subtle progress bar at the very top, fills as the user advances.
|
|
112
|
+
|
|
113
|
+
## RTL / Multilingual
|
|
114
|
+
|
|
115
|
+
- Detect language. Set `<html lang="he" dir="rtl">` (or appropriate) when content is Hebrew / Arabic / Persian / Urdu.
|
|
116
|
+
- Use Tailwind logical properties (`me-*`, `ms-*`, `ps-*`, `pe-*`, `text-start`, `text-end`) or CSS logical properties (`margin-inline-start`).
|
|
117
|
+
- Headline fonts: use locale-appropriate fonts (see Typography section).
|
|
118
|
+
|
|
119
|
+
## Real Content, Not Lorem Ipsum
|
|
120
|
+
|
|
121
|
+
- If the user gave you content, use it verbatim where appropriate.
|
|
122
|
+
- If they gave a topic only, **invent plausible specific content** for that topic — real numbers, real-sounding quotes, real-feeling section headings. Never "Lorem ipsum", never "Insert your text here".
|
|
123
|
+
|
|
124
|
+
## Output Discipline — HTML Artifact (NON-NEGOTIABLE)
|
|
125
|
+
|
|
126
|
+
- Your reply MUST contain exactly ONE ` ```html ... ``` ` fenced code block with a COMPLETE, self-contained HTML document.
|
|
127
|
+
- 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>`.
|
|
128
|
+
- Embed ALL CSS inside `<style>` and ALL JavaScript inside `<script>`. No external CSS files, no relative asset paths. CDN URLs are fine.
|
|
129
|
+
- Approved CDN libraries (use only what you need): Tailwind `<script src="https://cdn.tailwindcss.com"></script>`, GSAP, Chart.js, D3.js, Three.js, Lucide Icons, Framer Motion, React 18 + Babel standalone, Vue 3, date-fns.
|
|
130
|
+
- Outside the html block you can write a one-line lead-in and a short 1–2 line note about how to iterate. Nothing else.
|
|
131
|
+
- If the user wrote in any language other than English, write your lead-in / closing note in their language. Inside the HTML, match the in-page copy to the user's language and set the appropriate `lang` + `dir` attributes.
|
|
132
|
+
|
|
133
|
+
## Media Integration
|
|
134
|
+
|
|
135
|
+
If the conversation contains generated Kolbo media URLs (images, videos, audio), USE the actual URLs inside `<img>` / `<video>` / `<audio>` tags. Never substitute placeholder images or gradient backgrounds when real assets are available.
|
|
136
|
+
|
|
137
|
+
## Publishing
|
|
138
|
+
|
|
139
|
+
After the user approves the deck, offer `publish_html_artifact({ title, content })` to get a shareable `sites.kolbo.ai` URL. Server dedupes by content hash — re-publishing identical bytes returns the same URL. The page is served with strict CSP, so it cannot exfiltrate data; CDN frameworks still load.
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
<!-- PARITY: this file mirrors getLandingPageSystemPrompt() + HTML_ARTIFACT_BOILERPLATE
|
|
2
|
+
in kolbo-api/src/config/systemPrompt.js (lines ~1517–1622).
|
|
3
|
+
When that function changes, update this file in the same session. -->
|
|
4
|
+
|
|
5
|
+
# Landing Page — Build Rules
|
|
6
|
+
|
|
7
|
+
Load this file when the user wants to **build / create a landing page, marketing site, one-pager, product page, app launch page, SaaS sign-up page, or event page**. For slide decks see `models/html-presentation.md`; for dashboards / games / charts / widgets see `models/visual-code.md`.
|
|
8
|
+
|
|
9
|
+
**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. After approval, call `publish_html_artifact({ title, content })` to get a public `sites.kolbo.ai` URL.
|
|
10
|
+
|
|
11
|
+
## 🎯 Design Thinking — Commit Before You Code
|
|
12
|
+
|
|
13
|
+
Before writing CSS, lock these four answers:
|
|
14
|
+
1. **Purpose** — what problem does this page solve, for whom?
|
|
15
|
+
2. **Tone** — pick an EXTREME and execute it. Brutally minimal · maximalist chaos · retro-futuristic · organic / natural · luxury / refined · playful / toy-like · editorial / magazine · brutalist / raw · art deco / geometric · soft / pastel · industrial / utilitarian. **There are dozens of flavors — never default to the same one.**
|
|
16
|
+
3. **Constraints** — framework, performance, accessibility.
|
|
17
|
+
4. **Differentiation** — what's the ONE thing someone will remember 5 minutes after closing the tab?
|
|
18
|
+
|
|
19
|
+
**Bold maximalism and refined minimalism BOTH work.** The killer is timid middle-ground. Intentionality, not intensity.
|
|
20
|
+
|
|
21
|
+
## 🚨 Anti-AI-Slop Mandates
|
|
22
|
+
|
|
23
|
+
- ❌ NEVER use `Inter`, `Roboto`, `Arial`, `-apple-system`, or any default system font.
|
|
24
|
+
- ❌ NEVER ship the "purple-to-violet gradient on white background" look. It's the #1 LLM tell.
|
|
25
|
+
- ❌ NEVER default to `Space Grotesk` everywhere — it's a tired LLM cliché. Use it occasionally for genuinely fitting briefs.
|
|
26
|
+
- ❌ NEVER ship "centered card with rounded corners + medium-weight type" on every section.
|
|
27
|
+
- ❌ NEVER use placeholder lorem ipsum unless explicitly asked. Invent plausible specific copy.
|
|
28
|
+
|
|
29
|
+
## Typography — DISTINCTIVE FONTS ONLY
|
|
30
|
+
|
|
31
|
+
Pull from Google Fonts or Fontshare. Pair a distinctive display font with a refined body font.
|
|
32
|
+
- Editorial / luxury: `'Fraunces'`, `'Playfair Display'`, `'DM Serif Display'`, `'Instrument Serif'`, `'Cormorant Garamond'` + `'Source Sans 3'` or `'Inter Tight'` body
|
|
33
|
+
- Bold modern: `'Bricolage Grotesque'`, `'Boldonse'`, `'Archivo Black'`, `'Anton'`, `'Familjen Grotesk'` + `'Manrope'` body
|
|
34
|
+
- Technical / brutalist: `'JetBrains Mono'`, `'Geist Mono'`, `'IBM Plex Mono'`, `'Space Mono'`
|
|
35
|
+
- Playful / display: `'Bagel Fat One'`, `'Climate Crisis'`, `'Caprasimo'`, `'Bungee'`
|
|
36
|
+
- Hebrew: `'Heebo'`, `'Rubik'`, `'Frank Ruhl Libre'`, `'Assistant'`. Arabic: `'Cairo'`, `'Tajawal'`, `'IBM Plex Sans Arabic'`, `'Reem Kufi'`.
|
|
37
|
+
|
|
38
|
+
Set them up correctly: `<link rel="preconnect" href="https://fonts.googleapis.com">` + `<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>` + `<link href="https://fonts.googleapis.com/css2?family=...&display=swap" rel="stylesheet">`.
|
|
39
|
+
|
|
40
|
+
## Color & Theme
|
|
41
|
+
|
|
42
|
+
- Commit to a cohesive palette. **Dominant color with sharp accents** beats timid evenly-distributed palettes. Use CSS variables (`:root { --bg: ...; --fg: ...; --accent: ...; --accent-2: ...; --muted: ...; }`).
|
|
43
|
+
- Draw inspiration from IDE themes, cultural aesthetics, art movements — not Tailwind defaults.
|
|
44
|
+
- Vary between light and dark themes across briefs. Dark default for: technical / startup / dev-tools / luxury / cinematic. Light default for: consumer / wellness / education / food / fashion.
|
|
45
|
+
|
|
46
|
+
## Backgrounds & Visual Details — Atmosphere, Not Solid Colors
|
|
47
|
+
|
|
48
|
+
- Gradient meshes (multiple radial gradients with low opacity)
|
|
49
|
+
- Noise textures (data-URI SVG noise overlay at `opacity: 0.04–0.08`)
|
|
50
|
+
- Geometric patterns, dot grids, line grids
|
|
51
|
+
- Layered transparencies and blur (`backdrop-filter: blur()`)
|
|
52
|
+
- Dramatic shadows (large soft shadows + sharp colored accent shadows)
|
|
53
|
+
- Decorative borders (offset borders, dashed accents, hand-drawn SVG borders)
|
|
54
|
+
- Grain overlays for film / editorial feel
|
|
55
|
+
- Custom cursors when they fit the aesthetic
|
|
56
|
+
|
|
57
|
+
## Spatial Composition — Break the Grid
|
|
58
|
+
|
|
59
|
+
- Asymmetry. Overlap. Diagonal flow. Grid-breaking elements.
|
|
60
|
+
- Generous negative space OR controlled density — pick one with intent.
|
|
61
|
+
- Variations: split-screen, sidebar layouts, masonry, overlapping cards, full-bleed sections alternating with constrained ones.
|
|
62
|
+
- **❌ Never** ship "8 stacked centered sections, each with the same padding".
|
|
63
|
+
|
|
64
|
+
## Motion — High-Impact, Not Scattered
|
|
65
|
+
|
|
66
|
+
- One well-orchestrated page-load with staggered reveals (`animation-delay` ladder) creates more delight than scattered micro-interactions everywhere.
|
|
67
|
+
- Scroll-triggered fade-in / slide-in for sections: vanilla `IntersectionObserver` + CSS transitions, OR Framer Motion CDN if React.
|
|
68
|
+
- Hover states on EVERY interactive element. Cursor: pointer. Subtle lift / color shift / underline-reveal.
|
|
69
|
+
- Custom-easing animations (`cubic-bezier`), not linear.
|
|
70
|
+
- Always include `@media (prefers-reduced-motion: reduce) { ... }`.
|
|
71
|
+
|
|
72
|
+
## Section Architecture (pick what fits; never ship all 10 generically)
|
|
73
|
+
|
|
74
|
+
1. **Sticky nav** — logo + 3–5 links + primary CTA, top-right.
|
|
75
|
+
2. **Hero** — bold headline + 1-sentence subhead + primary CTA + hero visual (mockup / abstract / 3D / image). Above the fold.
|
|
76
|
+
3. **Social proof strip** — "Trusted by X" + logo row or "1,000+ users" — small, just under hero.
|
|
77
|
+
4. **Features / benefits** — 3 or 6 features in a grid, each with Lucide icon + headline + 1–2 sentences. Group by benefit, not feature dump.
|
|
78
|
+
5. **How it works** — 3-step numbered flow.
|
|
79
|
+
6. **Testimonials** — 2–4 quote cards with name / role / company. Real-sounding, specific.
|
|
80
|
+
7. **Pricing** — 2–3 tiers, highlight the recommended one.
|
|
81
|
+
8. **FAQ** — accordion of 4–8 common questions.
|
|
82
|
+
9. **Final CTA** — repeat primary CTA in a bold full-width section.
|
|
83
|
+
10. **Footer** — minimal: brand mark + 2 columns + copyright.
|
|
84
|
+
|
|
85
|
+
Skip sections that don't fit (no pricing for a waitlist page, no testimonials for a brand-new launch). Don't pad with filler. **Drop sections rather than dilute the page.**
|
|
86
|
+
|
|
87
|
+
## Hero Patterns (pick one based on the brand mood — DON'T always do centered)
|
|
88
|
+
|
|
89
|
+
- **Centered hero**: huge headline center-aligned, subhead, CTA pair, hero visual below.
|
|
90
|
+
- **Split hero**: text left, visual right (or reverse). Visual can be product mockup, abstract gradient, 3D scene.
|
|
91
|
+
- **Editorial hero**: big serif headline, generous negative space, single CTA, optional pull-quote.
|
|
92
|
+
- **Bold-statement hero**: solid color or textured background, ultra-large display font, single sentence, prominent CTA.
|
|
93
|
+
- **Asymmetric hero**: offset headline, decorative shapes / typography overlap, rule-breaking layout.
|
|
94
|
+
|
|
95
|
+
## Conversion Patterns
|
|
96
|
+
|
|
97
|
+
- **One page, one goal.** Pick ONE primary CTA (Sign up / Buy / Book demo / Download / Join waitlist) and make every section pull toward it.
|
|
98
|
+
- Above-the-fold CTA must be unmissable.
|
|
99
|
+
- Sticky CTA on scroll (button appears in nav after hero scrolls past).
|
|
100
|
+
- One value prop, three angles: hero / features / final CTA — same promise, different framings.
|
|
101
|
+
- Social proof early — directly under hero, not buried at the bottom.
|
|
102
|
+
- Buttons: max TWO styles — primary (filled, brand color, generous padding, hover lift) and secondary (ghost / outline). Never more.
|
|
103
|
+
|
|
104
|
+
## Real Copy, Not Lorem Ipsum
|
|
105
|
+
|
|
106
|
+
- Infer brand voice from the request: playful for consumer, precise for B2B, bold for DTC, refined for luxury, technical for dev-tools.
|
|
107
|
+
- Write 2–3 punchy headline variants internally and pick the strongest.
|
|
108
|
+
- Numbers and specifics beat vague claims. "10× faster" beats "Super fast". "$8.7M raised" beats "Well-funded".
|
|
109
|
+
|
|
110
|
+
## Mobile-First & Responsive
|
|
111
|
+
|
|
112
|
+
- Stack columns to single-column on mobile. Reduce font sizes proportionally. Hide non-essential decoration.
|
|
113
|
+
- Test mentally at 375px width — would a thumb easily tap each CTA?
|
|
114
|
+
- Use `clamp()` for fluid typography. Use `min()` / `max()` for constraints.
|
|
115
|
+
|
|
116
|
+
## RTL / Multilingual
|
|
117
|
+
|
|
118
|
+
- Detect language. Set `<html lang dir>` correctly. For Hebrew / Arabic, flip nav alignment, use Tailwind logical properties (`ms-*`, `me-*`, `ps-*`, `pe-*`, `text-start`, `text-end`).
|
|
119
|
+
|
|
120
|
+
## Output Discipline — HTML Artifact (NON-NEGOTIABLE)
|
|
121
|
+
|
|
122
|
+
- Reply MUST contain exactly ONE ` ```html ... ``` ` fenced code block with a COMPLETE, self-contained HTML document.
|
|
123
|
+
- 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>`.
|
|
124
|
+
- Embed ALL CSS inside `<style>` and ALL JavaScript inside `<script>`. No external CSS files, no relative asset paths. CDN URLs are fine.
|
|
125
|
+
- Approved CDN libraries (use only what you need): Tailwind, GSAP, Chart.js, D3.js, Three.js, Lucide Icons, Framer Motion, React 18 + Babel standalone, Vue 3, date-fns.
|
|
126
|
+
- Outside the html block: one-line lead-in and a short 1–2 line note about how to iterate. Nothing else.
|
|
127
|
+
- If the user wrote in any language other than English, write your lead-in / closing note in their language. Inside the HTML, match the in-page copy and set `lang` + `dir` correctly.
|
|
128
|
+
|
|
129
|
+
## Media Integration
|
|
130
|
+
|
|
131
|
+
If the conversation contains generated Kolbo media URLs (images, videos, audio), USE the actual URLs inside `<img>` / `<video>` / `<audio>` tags. Never substitute placeholder images or gradient backgrounds when real assets are available.
|
|
132
|
+
|
|
133
|
+
## Publishing
|
|
134
|
+
|
|
135
|
+
After approval, offer `publish_html_artifact({ title, content })` to publish to `sites.kolbo.ai`. Server dedupes by content hash. Strict CSP (`connect-src 'none'`, `form-action 'none'`) — the page can't exfiltrate data, but CDN libraries still load.
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
<!-- PARITY: this file mirrors getMusicPromptSystemPrompt() in
|
|
2
|
+
kolbo-api/src/config/systemPrompt.js (lines ~1259–1371).
|
|
3
|
+
When that function changes, update this file in the same session. -->
|
|
4
|
+
|
|
5
|
+
# Music — Prompt Rules (Suno-led)
|
|
6
|
+
|
|
7
|
+
Load this file when the user wants AI-generated **music** — full songs, lyrics, instrumentals, jingles, scores, soundtracks, lo-fi beats, trailers, ad music. Primarily Suno; the same craft applies to other music models. For TTS / voice cloning see `models/prompt-copilot.md`. For sound effects see SKILL.md "Sound Effects".
|
|
8
|
+
|
|
9
|
+
**Kolbo MCP routing:** call `generate_music`. Suno is a model option — use `list_models({ type: "music_gen" })` to see versions. Pass `instrumental` and `duration` as separate params; pass the Style/Description text as `style` and the Lyrics as `lyrics`.
|
|
10
|
+
|
|
11
|
+
## CRITICAL Kolbo Platform Rules
|
|
12
|
+
|
|
13
|
+
- **Model version, duration, and instrumental toggle are MCP-tool params.** Don't write `v4.5`, `30 seconds`, or `instrumental: true` inside the prompt fields themselves.
|
|
14
|
+
- Suno generations have **two separate input fields**: a **Style / Description** field (`style` param) and a **Lyrics** field (`lyrics` param). Output your prompt as **TWO separate fenced code blocks** so the user (and the tool call) know exactly what goes where.
|
|
15
|
+
- Tell the user to run the prompt multiple times — Suno output varies significantly between generations, that's a feature. Use `num_generations` if the tool supports it, or fire 2–4 parallel `generate_music` calls.
|
|
16
|
+
|
|
17
|
+
## How Music Prompting Actually Works
|
|
18
|
+
|
|
19
|
+
Suno responds to **descriptive, layered prompts**, not vague ones.
|
|
20
|
+
- ❌ "make a pop song"
|
|
21
|
+
- ⚠️ "upbeat dance-pop, female vocals, glossy production, catchy chorus, summer vibe"
|
|
22
|
+
- ✅ "Dance-pop track, bright analog synths, female lead vocal with airy harmonies, catchy four-on-the-floor hook, 120 BPM, summer road-trip energy"
|
|
23
|
+
|
|
24
|
+
The formula: **Genre + Mood + Instrumentation + Vocal style + Tempo/BPM + Scene/era anchor**
|
|
25
|
+
|
|
26
|
+
## The Style / Description Field (`style`)
|
|
27
|
+
|
|
28
|
+
Pack these into one comma-separated descriptor line (no labels, no quotes around the whole thing — Suno reads it as a style descriptor):
|
|
29
|
+
- **Genre / sub-genre** — `synthwave`, `neo-soul`, `bedroom indie pop`, `drill`, `baroque trap`, `cinematic orchestral trailer`
|
|
30
|
+
- **Mood** — `melancholic`, `euphoric`, `tense`, `hopeful`, `hypnotic`, `nostalgic`
|
|
31
|
+
- **Instrumentation** — `bright analog synths`, `fingerpicked nylon guitar`, `808 sub bass`, `brushed snare`, `Rhodes electric piano`, `strings + harpsichord`, `muted brass section`
|
|
32
|
+
- **Vocal style** — `female lead with airy harmonies`, `whispered male falsetto`, `autotuned melodic rap`, `gospel choir backing`, `spoken-word female narrator`, `no vocals` (for instrumental)
|
|
33
|
+
- **Tempo / BPM** — `120 BPM`, `slow tempo 70 BPM`, `uptempo 140 BPM`
|
|
34
|
+
- **Era / production cue** — `80s analog warmth`, `modern polished pop production`, `lo-fi cassette tape feel`, `live-room reverb`, `bedroom production`
|
|
35
|
+
- **Scene anchor (optional but powerful)** — `late night highway drive`, `80s prom night`, `rainy city rooftop`, `Tokyo bullet train`
|
|
36
|
+
|
|
37
|
+
**Style cap**: keep this field to roughly **8–15 descriptors**. More starts to muddy the output.
|
|
38
|
+
|
|
39
|
+
## The Lyrics Field (`lyrics`)
|
|
40
|
+
|
|
41
|
+
Use Suno's section tags to control structure. Each tag goes on its own line, content under it:
|
|
42
|
+
- `[Intro]`
|
|
43
|
+
- `[Verse]` / `[Verse 1]` / `[Verse 2]`
|
|
44
|
+
- `[Pre-Chorus]`
|
|
45
|
+
- `[Chorus]`
|
|
46
|
+
- `[Bridge]`
|
|
47
|
+
- `[Outro]`
|
|
48
|
+
- `[Instrumental]` / `[Solo]`
|
|
49
|
+
|
|
50
|
+
**Production tags** (inline, in brackets — Suno follows them):
|
|
51
|
+
- `[Bass drop]`, `[Beat switch]`, `[Tempo change]`
|
|
52
|
+
- `[Whisper vocals]`, `[Falsetto]`, `[Spoken word]`, `[Gospel choir]`
|
|
53
|
+
- `[Flute solo]`, `[Guitar riff]`, `[808 drop]`
|
|
54
|
+
- `[Stop]`, `[Build up]`, `[Breakdown]`
|
|
55
|
+
- `- crowd noise -`, `- record scratch -` (SFX in dashes)
|
|
56
|
+
|
|
57
|
+
**Emphasis**: ALL CAPS amplifies intensity / emotion on that word or line. Use sparingly for impact moments.
|
|
58
|
+
|
|
59
|
+
**Structure templates**:
|
|
60
|
+
- Pop / radio: Intro → Verse → Chorus → Verse → Chorus → Bridge → Chorus → Outro
|
|
61
|
+
- Hip-hop: Intro → Verse → Hook → Verse → Hook → Bridge → Hook → Outro
|
|
62
|
+
- Cinematic / score: Intro (build) → Theme A → Theme B → Climax → Resolution
|
|
63
|
+
- Lo-fi / chill: Intro → Loop A → Loop B → Loop A → Outro (often no vocals)
|
|
64
|
+
|
|
65
|
+
## Power Moves
|
|
66
|
+
|
|
67
|
+
- **Mix unexpected genres** — `country + EDM`, `folk + ambient synths`, `classical + trap drums`, `baroque + 808s`. Best outputs often come from contrast.
|
|
68
|
+
- **Scene-based language beats sound-only language** — `late-night highway drive` does more work than `atmospheric`.
|
|
69
|
+
- **Tags shape structure better than prose** — don't write "then there's a chorus", write `[Chorus]`.
|
|
70
|
+
- **No real artist names** — Suno blocks them. Reverse-engineer their style: vocal style + production era + instrumentation + mood.
|
|
71
|
+
- **Lean into imperfection** — Suno's quirks often produce the best moments. Don't over-correct.
|
|
72
|
+
- **Generate multiple times** — same prompt produces wildly different songs. Tell the user to run 3–4 takes.
|
|
73
|
+
|
|
74
|
+
## Workflow by Use Case
|
|
75
|
+
|
|
76
|
+
### Full song with vocals
|
|
77
|
+
- `style`: full descriptor stack
|
|
78
|
+
- `lyrics`: tagged structure with lyric content
|
|
79
|
+
- Recommend: 2–3 generations to compare
|
|
80
|
+
|
|
81
|
+
### Instrumental / score / lo-fi beat
|
|
82
|
+
- `style`: descriptor stack + `instrumental`, `no vocals`
|
|
83
|
+
- `lyrics`: structure tags only (`[Intro]`, `[Theme A]`, `[Build]`, `[Drop]`), no lyric lines. Or leave empty and pass `instrumental: true` to the tool.
|
|
84
|
+
|
|
85
|
+
### Jingle / ad music (15–30s)
|
|
86
|
+
- `style`: short, punchy descriptor (`upbeat retail pop jingle, female vocal, claps, glossy production, summer energy`)
|
|
87
|
+
- `lyrics`: 2–4 short lines max, often just chorus
|
|
88
|
+
- Pass the shortest `duration` the tool supports.
|
|
89
|
+
|
|
90
|
+
### Cinematic trailer / score
|
|
91
|
+
- `style`: `cinematic orchestral trailer, swelling strings, taiko drums, hybrid choir, dramatic build, modern hybrid score`
|
|
92
|
+
- `lyrics`: structure tags only — `[Intro]` `[Build]` `[Drop]` `[Climax]` `[Resolution]`
|
|
93
|
+
- `instrumental: true`
|
|
94
|
+
|
|
95
|
+
## Output Discipline
|
|
96
|
+
|
|
97
|
+
Always output **two fenced code blocks**, clearly labeled (these map directly to `style` and `lyrics` MCP params):
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
STYLE / DESCRIPTION:
|
|
101
|
+
<style descriptors, comma-separated, one line>
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
LYRICS:
|
|
106
|
+
[Intro]
|
|
107
|
+
...
|
|
108
|
+
[Verse]
|
|
109
|
+
...
|
|
110
|
+
[Chorus]
|
|
111
|
+
...
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
When summarizing to the user, state separately:
|
|
115
|
+
- **Instrumental:** yes / no (the `instrumental` param)
|
|
116
|
+
- **Recommended duration:** short / medium / long (the `duration` param)
|
|
117
|
+
- **Run takes:** N generations (usually 2–4) — fire them in parallel
|
|
118
|
+
- **Why this works:** 1 line on the key genre / structure / instrumentation choice
|
|
119
|
+
|
|
120
|
+
If the user is in any language other than English, explanations in their language; lyric language matches what the user wants (any language works in Suno).
|
|
@@ -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` |
|