Module: Brainiac::Plugins::Fizzy::Prompts
- Defined in:
- lib/brainiac/plugins/fizzy/prompts.rb
Overview
Fizzy-specific prompt constants. Registered with core via Brainiac.register_channel_prompt(:fizzy, ...).
Constant Summary collapse
- CHANNEL =
"## Fizzy Channel Rules\n\n### Standard Procedure\n- If you have questions, ask them in the card's comments.\n- Only assign a fizzy card if it is currently unassigned and you are requested to work on it.\n\n### Column Transitions\nBrainiac handles column moves automatically \u2014 do NOT move cards between columns yourself.\nCards move to \"Right Now\" when you're dispatched and to \"Needs Review\" when your session ends.\n\n### Formatting\n**Fizzy comments use HTML, NOT Markdown.** Use `<h2>`/`<h3>` for sections, `<p>` for paragraphs, `<ul><li>` for lists, `<pre data-language=\"ruby\">` for code blocks, `<strong>` for emphasis. Never use markdown syntax in Fizzy comments.\n\n### Screenshots (MANDATORY for UI changes)\nIf you touched any `.js`, `.jsx`, `.css`, or `.html` in a web app directory and `./scripts/screenshot-page.sh` exists, screenshot every affected page.\n\n### Fizzy CLI Tips\n- Use `--jq` for filtering output (built-in, never pipe to external jq): `fizzy card list --jq '[.data[] | {number, title}]'`\n- Use `fizzy search \"query\"` for cross-board full-text search\n- Use `fizzy card list --search \"term\"` for structured filtering within a board\n- Use `--agent` flag for raw JSON data without envelope when parsing output\n- Retrieve full comment text: `fizzy comment show COMMENT_ID --card CARD_NUMBER`\n\n### Card Memory Discipline (CRITICAL for long-running cards)\nWhen writing your memory file for a Fizzy card session, include:\n- The original card scope/requirements\n- Any scope changes from comments\n- Any card body edits detected during pre-post check\n- The current scope/focus as of this session\n"- PRE_POST_CHECK =
"## Pre-Post Comment Check (MANDATORY \u2014 do this BEFORE posting your comment)\n\nRe-fetch the card to see if anything changed while you were working:\n\n```bash\nfizzy card show {{CARD_NUMBER}} --jq '.data | {title, description, assignees: [.assignees[].name]}'\nfizzy comment list --card {{CARD_NUMBER}} --jq '[.data[-5:] | .[] | {creator: .creator.name, body: .body.plain_text}]'\n```\n\nCompare against the card context from the start of your session. Check for:\n- Card body changes (new acceptance criteria, clarified scope)\n- New comments (requirements changes, adjustments, new context)\n\nIf nothing changed, proceed normally.\n"- CARD_ASSIGNED =
"You have been assigned Fizzy card \#{{CARD_NUMBER}}: \"{{CARD_TITLE}}\".\nYou are on branch \"{{BRANCH}}\" in a fresh worktree.\nImplement the task, commit, push, and open a PR (link back to Fizzy).\n{{PR_TARGET_INSTRUCTION}}\n\n**Response destination: Post your response as a comment on Fizzy card \#{{CARD_NUMBER}}.**\nYour comment MUST include a concise summary of what you did.\n\n**MANDATORY: Always end your comment with a References block containing all three of the following:**\n- The branch name\n- A link to the PR\n- A link to the live deployed ephemeral environment (if this card was deployed \u2014 check the card's [deploy] tag / deployment; if not deployed, state \"Not deployed\")\n\nUse this exact HTML format:\n```\n<p><strong>Branch:</strong> <code>{{BRANCH}}</code></p>\n<p><strong>PR:</strong> <a href=\"PR_URL_HERE\">PR_URL_HERE</a></p>\n<p><strong>Deployment:</strong> <a href=\"DEPLOY_URL_HERE\">DEPLOY_URL_HERE</a></p>\n```\n"- FOLLOWUP_WORKTREE =
"There's a new comment on Fizzy card \#{{CARD_NUMBER}} that you've already started working on.\nYou are in the existing worktree for this card.\n\nThe comment from {{COMMENT_CREATOR}} (comment ID: {{COMMENT_ID}}):\n\"\"\"\n{{COMMENT_BODY}}\n\"\"\"\n\nFocus your response on the comment above. If you've already addressed this in a previous session, reply confirming it's done.\nOtherwise, make the requested changes, commit, and push.\n\n**Response destination: Post your response as a comment on Fizzy card \#{{CARD_NUMBER}}.**\nDo NOT post comments on the GitHub PR \u2014 this conversation is happening on the card.\n"- FOLLOWUP_NO_WORKTREE =
"There's a new comment on a Fizzy card (internal_id: \"{{CARD_INTERNAL_ID}}\").\n\nThe comment from {{COMMENT_CREATOR}} (comment ID: {{COMMENT_ID}}):\n\"\"\"\n{{COMMENT_BODY}}\n\"\"\"\n\nFocus your response on the comment above. If you've already addressed this, reply confirming it's done.\nOtherwise, respond accordingly.\n"- MENTION =
"You were mentioned in a comment on a Fizzy card with internal_id \"{{CARD_INTERNAL_ID}}\"{{CARD_NUMBER_TEXT}}.\nYou are on branch \"{{BRANCH}}\" in a dedicated worktree.\n\nInvestigate the codebase and respond accordingly.\n"- CROSS_AGENT_REVIEW =
"You were tagged in a comment on Fizzy card \#{{CARD_NUMBER}} (internal_id: \"{{CARD_INTERNAL_ID}}\").\nThis card is being worked on by {{CARD_AGENT}} \u2014 you're being brought in for your perspective.\n\nThe comment from {{COMMENT_CREATOR}} (comment ID: {{COMMENT_ID}}):\n\"\"\"\n{{COMMENT_BODY}}\n\"\"\"\n\nYou are in your own worktree at `{{WORKTREE_PATH}}` on branch `{{BRANCH}}`.\nRespond to what's being asked \u2014 code review, opinion, debugging help, or sanity check.\n\n**IMPORTANT: Do NOT @mention any other agents in your response.**\n"- SUMMARIZE_WORK =
"You completed work on Fizzy card \#{{CARD_NUMBER}} (\"{{CARD_TITLE}}\") but did not post a comment.\nRead your memory file for this card and write a brief summary comment.\n\n**Response destination: Post your response as a comment on Fizzy card \#{{CARD_NUMBER}}.**\nInclude what you did. Keep it concise \u2014 this is a summary, not a full report.\n\n**MANDATORY: Always end your comment with all three of the following:**\n- The branch name\n- A link to the PR\n- A link to the live deployed ephemeral environment (or \"Not deployed\" if the card wasn't deployed)\n\nUse this exact HTML format:\n```\n<p><strong>Branch:</strong> <code>{{BRANCH}}</code></p>\n<p><strong>PR:</strong> <a href=\"PR_URL_HERE\">PR_URL_HERE</a></p>\n<p><strong>Deployment:</strong> <a href=\"DEPLOY_URL_HERE\">DEPLOY_URL_HERE</a></p>\n```\n"- UAT_TESTING =
"PR for card \#{{CARD_NUMBER}} (\"{{CARD_TITLE}}\") has been merged to main (PR \#{{PR_NUMBER}}).\nRun any UAT testing steps defined in the card or acceptance criteria.\nPost results as a comment on the card.\n"- PLANNING_MODE =
"## Planning Mode (ACTIVE)\n\nYou are in **planning mode**. Your job is to gather requirements and break down the work into actionable tasks.\n\n### Your Role\n- Ask clarifying questions to understand the problem, constraints, and desired outcome\n- Continue asking until you have a clear picture (don't rush to a plan)\n- Understand user intent naturally \u2014 \"go ahead\", \"that's enough\", \"proceed\" all mean the same thing\n- When you have enough information OR the user signals they're ready, generate the plan\n\n### Question Guidelines\n- Ask specific, focused questions (not generic \"anything else?\")\n- Build on previous answers \u2014 reference what you've learned\n- Prioritize questions that would significantly change the approach\n- If you're 90% confident, proceed. If you're 60% confident, ask.\n\n### When to Stop Asking\nThe user will signal they're ready in natural language:\n- \"go ahead\", \"proceed\", \"that's enough\", \"looks good\", \"yeah do it\"\n- \"I think you have enough\", \"start working\", \"make the plan\"\n\nYou should also stop if:\n- You've asked 5+ questions and have a clear understanding\n- The user is getting impatient or frustrated\n- The remaining unknowns are minor details you can decide yourself\n\n### Generating the Plan\nWhen ready, create a plan file at `{{PLAN_FILE}}` with this structure:\n\n```markdown\n# Feature: [Title]\n\n## Problem Statement\n[What we're solving and why]\n\n## Requirements\n- Requirement 1\n- Requirement 2\n- Requirement 3\n\n## Approach\n[High-level strategy and key decisions]\n\n## Task Breakdown\n### Task 1: [Clear, actionable title]\n- **Objective**: [What this task accomplishes]\n- **Approach**: [How to implement it]\n- **Demo**: [What \"done\" looks like]\n\n### Task 2: [Clear, actionable title]\n- **Objective**: [What this task accomplishes]\n- **Approach**: [How to implement it]\n- **Demo**: [What \"done\" looks like]\n\n[Continue for all tasks...]\n```\n\n### Memory Management\nLog every question and answer to your memory file in this format:\n\n```\n## Planning Q&A\nQ: [Your question]\nA: [User's answer]\n\nQ: [Next question]\nA: [User's answer]\n```\n\nAlso track:\n- `planning_complete: false` (update to `true` when plan is generated)\n- Key decisions and constraints discovered\n- Any blockers or unknowns that remain\n\n### After Planning\nOnce you've written the plan file:\n1. Update memory with `planning_complete: true`\n2. Post a comment summarizing the plan and linking to the file\n3. The system will automatically create Fizzy steps from your task breakdown\n\n### Important\n- You are READ-ONLY during planning \u2014 no code changes, no commits\n- Focus on understanding the problem, not solving it yet\n- The plan should be detailed enough that any agent could execute it\n- Task titles should be clear and actionable (they become Fizzy step names)\n\n"