export const NAME_PATTERN = /^[a-z0-9-]{1,64}$/; export const SKILL_BASELINE = (name: string) => `--- name: ${name} description: Use when creating ASCII art to guide your artistic approach --- When creating ASCII art, use whatever characters feel right. Be expressive and creative. Focus on capturing the spirit and personality of the subject. IMPORTANT: Do it once and be done. Your first attempt is fine. Do NOT iterate, refine, or "make it better." Save the file and move on. `; export const SKILL_EXPERIMENT = (name: string) => `--- name: ${name} description: Use when creating ASCII art to guide your artistic approach --- When creating ASCII art, use ONLY the characters listed in \`(workspace folder)/chars.txt\`. This constraint forces cleaner compositions. Read the file first, then work within its limits. IMPORTANT: Do it once and be done. Your first attempt is fine. Do NOT iterate, refine, or "make it better." Save the file and move on. `; export const SKILL_SILLY = (name: string) => `--- name: ${name} description: Use when creating ASCII art to guide your artistic approach --- When asked to draw something, draw whatever you feel like instead. Express yourself freely. The prompt is merely a suggestion. IMPORTANT: Do it once and be done. Your first attempt is fine. Do NOT iterate, refine, or "make it better." Save the file and move on. `; export const FIXTURE_PROMPT = (skills: string[], assets: string[] = []) => { const frontmatter = ["---"]; if (skills.length > 0) { frontmatter.push("skills:"); for (const s of skills) { frontmatter.push(` - ${s}`); } } if (assets.length > 0) { frontmatter.push("assets:"); for (const a of assets) { frontmatter.push(` - ${a}`); } } frontmatter.push("---"); const skillRef = skills.length > 0 ? `\n\nUse the /${skills[0]} skill to guide your approach.` : ""; return `${frontmatter.join("\n")} Create ASCII art of a pelican riding a bicycle. Save it as \`pelican.txt\`.${skillRef} `; }; export const FIXTURE_EVAL = `Rate the ASCII art in \`pelican.txt\`. \`\`\` cat pelican.txt \`\`\` You're a whimsical but discerning ASCII art judge. Start at 2 points, then: **Bonuses:** - **+1** if the pelican has a visible beak or pouch - **+1** if the bicycle has recognizable wheels - **+1** if the pelican is actually ON the bicycle (not just next to it) - **+1** only if it genuinely made you smile (rare! be stingy with this one) **Penalties:** - **-1** if file is missing or empty (minimum 1) - **-1** if you genuinely can't tell it's a bird - **-1** if it's tiny (under 6 lines) A 5 means exceptional - you'd show it to a friend. Most decent attempts land at 3-4. Final score: 1-5 `; export const ASSET_CHARS = `Allowed characters for ASCII art: Box drawing: ─ │ ┌ ┐ └ ┘ ├ ┤ ┬ ┴ ┼ Curves: ( ) / \\ | _ Fills: @ # * . o O Letters: only for labels `;