一键导入
brainstorm
Compare approaches, surface unknowns, and draft a recommendation before PRD work.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Compare approaches, surface unknowns, and draft a recommendation before PRD work.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Deploy or share generated HQ artifacts through hq-deploy.
Mark a company as HQ Pro cloud-backed and sync its team setup.
Send HQ Sync direct messages, prompts, details, or scheduled notes to teammates.
Run a full bidirectional sync for cloud-backed HQ companies.
Scaffold a new HQ company AND optionally take it all the way to operational — business-discovery interview, seeded knowledge/workers/skills/projects, brand design packs (generated from website/PDF/Drive and bound to deploys via policy), connected integrations, org groups + ACL rules, teammate invites, and optional cloud agents.
Resolve HQ Sync conflicts by choosing local, cloud, or discard.
| name | brainstorm |
| description | Compare approaches, surface unknowns, and draft a recommendation before PRD work. |
| allowed-tools | Read, Write, Edit, Grep, Glob, Bash(git:*), Bash(qmd:*), Bash(ls:*), Bash(date:*), Task, Bash, AskUserQuestion, WebSearch |
Think through a problem before committing to a PRD. Research HQ context, compare approaches, surface unknowns.
Input: The user's argument — typically [company] <idea description or board idea ID>.
Pipeline: idea capture --> brainstorm --> PRD --> run-project
Check if the first word of the user's input matches a company slug in companies/manifest.yaml.
How to check: Read companies/manifest.yaml. Extract top-level keys (company slugs). If the first word exactly matches one:
{co} = matched slug. Strip from input — remaining text is the descriptioncompanies/{co}/policies/ (skip example-policy.md), run bash core/scripts/read-policy-frontmatter.sh {file}. Note enforcement: hard titles. For hard-enforcement policies only, additionally Read the ## Rule section with a targeted rangeqmd_collections in manifest, use -c {collection}If no match -- full input is the description text. Company resolved later.
Board ID detection: After company check, see if remaining args match a board.json project ID pattern ({prefix}-proj-{NNN}). If so, this brainstorm is expanding an existing idea — proceed to Step 1 with that ID.
Infer the brainstorm mode from context — no question needed:
prd_path, no prior art in HQ, greenfield domainprd_path, target repo already existsAnnounce mode: Mode: **STARTUP** or Mode: **BUILDER**
Mode affects Steps 2-4 (premise challenge depth, question framing, research scope).
If board ID matched in Step 0:
{co} already set: read companies/{co}/board.json, find entry by ID{co} not set: scan all companies/*/board.json for the ID (use manifest board_path list)title and description as starting contextsource_idea_id = matched IDIf no board ID and no company: infer from cwd (companies/{slug}/ --> use that slug, repos/{pub|priv}/{name} --> manifest lookup). If still ambiguous, ask the user directly in Step 3.
If input is empty: go straight to Step 3 (full interview).
Do not ask questions yet. Build context from HQ first.
Hybrid search (BM25 + vector + re-ranking):
qmd_collections: qmd query "<description keywords>" -c {collection} --json -n 10qmd query "<description keywords>" --json -n 10Existing projects:
companies/{co}/projects/ directly or qmd search "prd.json" -c {co} --json -n 10Workers:
core/workers/registry.yaml — identify workers with skills matching the descriptionPolicies (anchored only):
Target repo (if inferable):
Present compact summary:
Research complete:
- Related projects: {list or "none found"}
- Relevant workers: {list}
- Policies: {count loaded}
- Prior art: {relevant knowledge hits or "none"}
After research, before asking the user anything, challenge the premise:
State a position. Don't hedge. If the premise is weak, say so before exploring approaches. This may eliminate the need for a full brainstorm.
Present as:
Premise check:
- Core assumption: {what must be true}
- Inaction cost: {what happens if we skip this}
- 80% solution: {simpler alternative, or "none — this requires dedicated work"}
- Verdict: {STRONG / QUESTIONABLE / WEAK}
If verdict is WEAK: flag it and ask the user if they want to continue or reconsider.
Batch all missing directional info into one question posed directly to the user. Skip any field already clear from args, board entry, or research. Wait for the user's response before proceeding.
If all info is already clear (description + company + direction obvious from context), skip the interview entirely.
Research in layers — stop as soon as you have enough signal. Don't research for thoroughness.
Layer 1 — HQ (always, already done in Step 2): qmd, workers, policies, existing projects. Already complete.
Layer 2 — Reasoning (always, free): Competitive landscape, known tools, pricing, market context from training data. No API calls needed. Run this as part of your analysis — identify alternatives, comparable tools, known pricing tiers, and market dynamics. 2-3 bullets.
Layer 3 — Live Web (conditional, privacy-gated): Only if: idea involves a new API/service you're not confident about, unfamiliar domain, or user explicitly requested research.
Before searching: announce what you'll search for and why. Proceed only after implicit or explicit approval (user continuing the conversation counts as approval).
If Layer 2 is sufficient (internal tooling, known platforms — the common case): skip Layer 3 entirely.
Derive slug from title (lowercase, hyphens, no special chars).
Create companies/{co}/projects/{slug}/brainstorm.md (or personal/projects/{slug}/brainstorm.md for personal/HQ):
---
company: {slug}
created_at: {ISO8601}
status: exploring
promoted_to: null
source_idea_id: {board ID or null}
---
# {Title}
> {1-sentence problem/opportunity framing}
## Context
{2-4 sentences: why this matters now, what triggered the exploration, rough size of the thing}
## What We Know
- {Confirmed fact from HQ research — existing projects, prior work, tech constraints}
- {Relevant worker or knowledge base that exists}
- ...
## What We Don't Know
- {Open question that would change the approach}
- {Assumption that needs validating}
- {Missing info that blocks confident decision-making}
- ...
## Premise Check
{Position on whether the core assumption holds. State verdict: STRONG / QUESTIONABLE / WEAK}
## Narrowest Wedge *(STARTUP mode only)*
{Smallest version that delivers real value to one specific person. What's the narrowest scope — one seam, not the whole subsystem?}
## Approaches
### Option A: {Name}
**How it works:** {2-3 sentences describing the approach}
**Tradeoffs:**
- Pro: {specific advantage}
- Pro: {specific advantage}
- Con: {specific cost or risk}
**Effort:** {S / M / L / XL — scope/risk} · {throughput: ~N sessions, sequential|concurrent-able}
**When to choose this:** {specific signal or condition that makes this the right pick}
---
### Option B: {Name}
**How it works:** {2-3 sentences}
**Tradeoffs:**
- Pro: {specific advantage}
- Con: {specific cost or risk}
**Effort:** {S / M / L / XL — scope/risk} · {throughput: ~N sessions, sequential|concurrent-able}
**When to choose this:** {condition}
---
### Option C: {Name} *(only if genuinely distinct from A and B)*
...
---
## Recommendation
**Preferred approach:** Option {X} — {one sentence on why}
**Key condition:** {What would make you choose a different option instead}
**Biggest risk:** {The one thing most likely to blow up the preferred approach}
## Next Steps
- [ ] {Specific validation task or question to resolve before starting PRD}
- [ ] {Other prerequisite}
**Promotion path:**
- Ready to build --> promote to a PRD with `/plan` (brainstorm.md pre-populates the interview)
- Needs more research --> edit this file, revisit later
- Not worth pursuing --> park as idea on the board
Approach rules:
ai-velocity-time-sense): S (one seam, low risk), M (one subsystem, modest unknowns), L (multiple seams, real unknowns), XL (cross-cutting, hard-to-reverse). If "how long" is needed, use sessions + concurrency ("~2 sessions, parallel-able"), never weeks/months. Be honest about breadthRead companies/{co}/board.json.
If started from existing board idea (source_idea_id set):
status --> "exploring"brainstorm_path: "companies/{co}/projects/{slug}/brainstorm.md"updated_atIf fresh brainstorm (no existing board idea):
id values from projects array, extract numeric suffixes from {prefix}-proj-{NNN} pattern, next = {prefix}-proj-{max_N + 1} zero-padded to 3 digits{
"id": "{prefix}-proj-{NNN}",
"title": "{concise title}",
"description": "{user's description}",
"status": "exploring",
"scope": "company",
"app": null,
"initiative_id": null,
"objective_id": null,
"prd_path": null,
"brainstorm_path": "companies/{co}/projects/{slug}/brainstorm.md",
"created_at": "{ISO8601}",
"updated_at": "{ISO8601}"
}
Write updated board.json.
Spec: core/knowledge/public/hq-core/journal-spec.md. Open a session journal at the project_dir so research, decisions, and dead ends survive context compaction:
.claude/skills/_shared/journal.sh open brainstorm "{project_dir}"
Where {project_dir} is companies/{co}/projects/{slug}/ (or personal/projects/{slug}/ for personal/HQ). The helper:
{project_dir}/journal/{ISO8601}-brainstorm.md with frontmatter (status: active, skill: brainstorm, summary: "").claude/state/active-journal.d/ so only this session's subsequent steps and autocapture hook append to this file/prd, /deep-plan, /plan handoffs — only /handoff and /checkpoint close itAfter the helper returns, append a curated entry summarizing the brainstorm outcome (preferred approach, biggest risk, open questions) to the journal's ## Decisions section. The autocapture hook will append a ## Auto-capture line for any subsequent Agent / WebFetch / WebSearch / AskUserQuestion calls in this session.
Skip if: journal helper is unavailable (fail-soft, don't error).
If {co} is resolved and company has a knowledge directory (not null in manifest):
spawn_task(
reason: "Pulse-garden {co} knowledge",
prompt: "Run the knowledge-pulse skill at .claude/skills/knowledge-pulse/SKILL.md.
company_slug: {co}
knowledge_path: companies/{co}/knowledge/
policies_path: companies/{co}/policies/
caller: brainstorm
qmd_collection: {qmd_collections[0] from manifest, or omit if none}
search_results_summary: {condensed list of qmd hits from Step 2, max 10 items — path + title per hit}
discovered_facts: {any new company facts surfaced during premise check or research, or 'none'}
Read the skill file for full instructions."
)
Do NOT wait for the pulse to complete — continue immediately to Step 7.
Skip if: company has no knowledge directory.
The brainstorm is written. Automatically deploy a visual research deck so the findings are shareable, not just a markdown file — the framing, what we know / don't know, the premise verdict, the approaches compared with their tradeoffs, and the recommendation, rendered on the company's design standards.
Invoke the project-summary skill in deck mode on this brainstorm:
project-summary {co}/{slug} --brainstorm (for personal/HQ brainstorms the path is
personal/projects/{slug} and it falls back to a password gate). It reads brainstorm.md,
renders a branded deck, deploys it company-gated via hq-deploy, and returns a live URL.
Rules for this step:
brainstorm.md and writes no project files; this does not
violate the "brainstorm.md + board.json are the only files written" rule (the deck is a
deploy artifact under workspace/, not a project file).skipped — {reason}) and surface it in Step 7.Print:
Brainstorm: **{title}** ({id})
File: companies/{co}/projects/{slug}/brainstorm.md
Approaches:
A. {Option A name} — {effort}
B. {Option B name} — {effort}
{C. Option C name — effort, if present}
Recommendation: Option {X}
Deck (live, members only): {deck_url} (or: "skipped — {reason}")
Next: promote to a PRD with `/plan`, edit brainstorm.md, or park on the board.
Reindex: qmd update 2>/dev/null || true
Once brainstorm.md is written and the summary printed, automatically save a lightweight checkpoint so the user can continue in a fresh session without a manual /handoff. This only snapshots continuity — it does not close the brainstorm (which stays open across /prd and /plan).
Write workspace/threads/T-{UTC YYYYMMDD-HHMMSS}-auto-brainstorm-{slug}.json with: thread_id, version: 1, type: "auto-checkpoint", created_at, updated_at, workspace_root, cwd, git: { branch, current_commit, dirty }, conversation_summary (topic + recommended option, one sentence), files_touched (include the brainstorm.md path), next_steps (e.g. "promote to PRD with /plan, or refine brainstorm.md"), and metadata: { title: "Auto: brainstorm {slug}", tags: ["auto-checkpoint", "brainstorm"], trigger: "brainstorm-complete" }.
Keep it cheap: do not rebuild INDEX, update recent.md, run qmd update, or write a legacy checkpoint. Then tell the user a fresh session can resume from this checkpoint (/startwork).
workspace/threads/ (see "Final step — auto-checkpoint"). No implementation/target files are modified (knowledge pulse runs as a background agent and writes its own report independently)ai-velocity-time-sense/plan — turn the chosen approach into a PRD/idea — capture it on the board first