{"slug":"phx-brainstorm","title":"phx-brainstorm","summary":"Brainstorm Elixir/Phoenix features — explore ideas, compare approaches,","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-10-04T15:14:23.770543Z","repo":{"url":"https://github.com/oliver-kriska/claude-elixir-phoenix","stars":560,"forks":44,"license":"MIT","updatedAt":"2026-10-02T04:11:38Z"},"bodyHtml":"<hr>\n<h2>name: phx-brainstorm\ndescription: Brainstorm Elixir/Phoenix features — explore ideas, compare approaches,\ngather requirements. Use when vague idea, not sure how to approach, or want to discuss\nbefore plan.</h2>\n<h1>Brainstorm — Adaptive Requirements Gathering</h1>\n<p>Interactive interview → research → synthesis loop. Produces structured\n<code>interview.md</code> that <code>phx-plan</code> detects and consumes (skipping clarification).</p>\n<h2>Usage</h2>\n<pre><code>phx-brainstorm Add some kind of notification system\nphx-brainstorm Improve authentication security\nphx-brainstorm                    # starts with open question\n</code></pre>\n<h2>Workflow</h2>\n<pre><code>phx-brainstorm {topic}\n    |\n    v\n[INTERVIEW] ←──────────────────┐\n    |                           |\n    v (sufficient OR user exit) |\n[DECISION POINT]                |\n    ├─ Research ──→ [RESEARCH] ─┘\n    ├─ Continue interview ──────┘\n    ├─ Make a plan ──→ STOP (suggest phx-plan {slug})\n    ├─ Store &amp; exit ──→ STOP (artifacts saved)\n    └─ Discuss ──→ freeform ──→ [DECISION POINT]\n</code></pre>\n<h2>Phase 1: Adaptive Interview</h2>\n<p>Create <code>.claude/plans/{slug}/</code> directory. Start asking ONE question at a time.</p>\n<h3>Coverage Dimensions</h3>\n<p>Track coverage across 6 dimensions (0=uncovered, 1=partial, 2=sufficient).\n<strong>Ask Scope early</strong> — for \"optimize X\" topics, ask about boundaries (upstream\nOK? Local-only? CI vs dev?) before research, not during.</p>\n<table>\n<thead>\n<tr>\n<th>Dim</th>\n<th>Target</th>\n<th>Sufficient signal</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>What</td>\n<td>Specific behavior/features</td>\n<td>Concrete verbs, not \"some kind of\"</td>\n</tr>\n<tr>\n<td>Why</td>\n<td>Problem solved, user need</td>\n<td>Clear benefit stated</td>\n</tr>\n<tr>\n<td>Scope</td>\n<td>In/out boundaries</td>\n<td>Explicit exclusions stated</td>\n</tr>\n<tr>\n<td>Where</td>\n<td>Modules, contexts, pages</td>\n<td>File paths or context names mentioned</td>\n</tr>\n<tr>\n<td>How</td>\n<td>Approach, constraints</td>\n<td>At least one concrete constraint</td>\n</tr>\n<tr>\n<td>Edge</td>\n<td>Error states, scale, auth</td>\n<td>2+ edge cases identified</td>\n</tr>\n</tbody>\n</table>\n<p>Interview is \"sufficient\" when total score &gt;= 8 out of 12.</p>\n<h3>Context-Aware Questioning</h3>\n<p><strong>Before each question</strong>, run a brief codebase scan on topics the user mentioned:</p>\n<ol>\n<li>User mentions a topic (e.g., \"notifications\") → run Grep/Glob for related patterns</li>\n<li>Use scan results to ground your next question in what actually exists</li>\n<li>Unknown/niche topic → suggest research pause before continuing</li>\n</ol>\n<h3>Signal Detection</h3>\n<ul>\n<li><strong>Vague answer</strong> (\"maybe\", \"not sure\") → probe deeper on same dimension</li>\n<li><strong>Niche topic</strong> mentioned → \"This involves . Want me to research it first?\"</li>\n<li><strong>Detailed answer</strong> covering 3+ dimensions → mark all covered, advance</li>\n<li><strong>No new coverage</strong> for 2 consecutive questions → suggest moving to Decision Point</li>\n</ul>\n<h2>Phase 2: Decision Point</h2>\n<p>Write interview.md first, then use AskUserQuestion — every option below\nrelies on the saved file. Move past this point only on a formal choice.</p>\n<ol>\n<li><p>Write current state to <code>.claude/plans/{slug}/interview.md</code></p>\n</li>\n<li><p>Show coverage summary: \"Coverage: What 2/2 | Why 2/2 | Scope 1/2 | ...\"</p>\n</li>\n<li><p>Use AskUserQuestion with EXACTLY these options (4 max — the tool's\nhard limit; the auto-added \"Other\" covers freeform discussion):</p>\n<ul>\n<li><strong>Research</strong> — search codebase + internet for approaches (2 agents)</li>\n<li><strong>Continue interview</strong> — ask more questions</li>\n<li><strong>Make a plan</strong> — I'll suggest: <code>phx-plan .claude/plans/{slug}/interview.md</code></li>\n<li><strong>Store &amp; exit</strong> — save everything, come back later</li>\n</ul>\n</li>\n<li><p>Wait for user response. Do NOT proceed without explicit choice</p>\n</li>\n</ol>\n<p><strong>AskUserQuestion discipline</strong>: decisions only, never narration or\nrhetorical check-ins. Every option states concrete impact (what happens,\nwhat it costs) so the user can pick without follow-up questions.</p>\n<h2>Phase 3: Research (Diverge → Evaluate → Converge)</h2>\n<p><strong>First cycle: MAX 2 agents</strong> — keep it fast (~2-3 min). Spawn in ONE\nTool Use block with <code>run_in_background: true</code>:</p>\n<ul>\n<li><code>phoenix-patterns-analyst</code>: \"How does this codebase handle ?\"\nWrite to <code>.claude/plans/{slug}/research/codebase-scan.md</code></li>\n<li><code>web-researcher</code>: \"Elixir/Phoenix approaches to \"\nReturn 500-word summary</li>\n</ul>\n<p><strong>Do NOT spawn additional specialist agents</strong> in the first cycle.\nIf user wants deeper investigation, they pick \"More research\" at the\nnext Decision Point — then spawn focused agents for specific questions.</p>\n<p><strong>Evaluate</strong> — for each approach found:</p>\n<ul>\n<li>Thesis: why it works for THIS codebase</li>\n<li>Antithesis: why it might NOT work (scale, complexity, pattern conflicts)</li>\n</ul>\n<p><strong>Converge</strong> — present 2-3 approaches with honest trade-offs.\nDo NOT recommend one. Return to Decision Point (AskUserQuestion).</p>\n<p>See <code>references/research-integration.md</code> for details.</p>\n<h2>Iron Laws</h2>\n<ol>\n<li><strong>NEVER auto-transition</strong> to <code>phx-plan</code> — always present as option, let user choose</li>\n<li><strong>ONE question at a time</strong> — never dump a question list</li>\n<li><strong>Always write artifacts</strong> — <code>interview.md</code> is the contract with <code>phx-plan</code></li>\n<li><strong>Scan codebase between questions</strong> — every question must be context-aware</li>\n<li><strong>AskUserQuestion at EVERY decision point</strong> — never flow past without formal choice.\nThis is the most critical law. After interview, after research, after discuss — ALWAYS\npresent options via AskUserQuestion. Never let conversation skip the checkpoint</li>\n<li><strong>STOP after presenting options</strong> — do not proceed without user input</li>\n<li><strong>MAX 2 agents in first research cycle</strong> — deeper dives are subsequent cycles.\nUser picks \"More research\" to go deeper, not the skill</li>\n</ol>\n<h2>Integration</h2>\n<pre><code>phx-brainstorm ──→ interview.md ──→ phx-plan (skips clarification)\n                                 ──→ phx-plan --existing (deepens)\n                                 ──→ stored for later session\n</code></pre>\n<p>Position: optional upstream of <code>phx-plan</code> in workflow cycle.</p>\n<h2>References</h2>\n<ul>\n<li><code>references/interview-techniques.md</code> — coverage scoring,\nquestion templates, scan patterns, signal detection, interview.md format</li>\n<li><code>references/research-integration.md</code> — diverge-evaluate-converge,\nagent spawn templates, approach presentation format</li>\n</ul>\n","files":[{"path":"references/interview-techniques.md","sizeBytes":8768,"isText":true},{"path":"references/research-integration.md","sizeBytes":6895,"isText":true},{"path":"SKILL.md","sizeBytes":6039,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-10-04T15:16:29.280648Z","sha256":"2D90C197C0410C08C235E695E5739907101A84B0EFF0B871C263AED9C4B84C89","sizeBytes":10155},"review":null,"source":{"repositoryUrl":"https://github.com/oliver-kriska/claude-elixir-phoenix","path":"targets/amp/skills/phx-brainstorm","license":"MIT","commit":"9767a82d24ddddad553e85f88efc2869a7fd7d88","subtreeSha":"AB897EF0997A988EA77046FC59D3AE8FAC6F413A601F1DEBF808A6442E418197","lastSyncedAt":"2026-10-04T15:14:09.139242Z"},"reviewedAt":"2026-10-04T15:19:57.959839Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/oliver-kriska/claude-elixir-phoenix/tree/main/targets/amp/skills/phx-brainstorm"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install oliver-kriska-claude-elixir-phoenix@llmmart"},{"target":"git","command":"git clone https://github.com/oliver-kriska/claude-elixir-phoenix.git"}]}