本文へ移動
cccskills
無料GitHub で公開

ase-meta-brainstorm

Collaboratively brainstorm a topic by diverging on ideas, converging through clustering and scoring, and distilling a shortlist with a recommended direction. Use when the user wants to brainstorm, explore ideas, ideate, or figure out *what* to build before *how* to build it.

インストール方法を見る

含まれるファイル(2)

  • SKILL.md11.6 KB
  • help.md3.3 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md @${CLAUDE_SKILL_DIR}/../../meta/ase-dialog.md @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md

<purpose name="ase-meta-brainstorm"> Collaboratively Brainstorm a Topic </purpose>

<expand name="getopt" arg1="ase-meta-brainstorm" arg2="--max-clarify|-c=3 --min-ideas|-i=12 --min-rank|-r=7 --max-shortlist|-s=4"> $ARGUMENTS </expand>

<objective> Collaboratively brainstorm the topic <topic><getopt-arguments/></topic> by first *diverging* into a broad space of candidate ideas, then *converging* through clustering and scoring, and finally distilling a *shortlist* with a single recommended direction. </objective>

Guiding Tenets

Honor the following tenets throughout the brainstorming:

  • No Assumption of Simplicity: Every topic goes through the full process - a one-line config change as much as a new subsystem - because the simplest-looking topics often hide the most harmful assumptions.

  • Explore Intent First: Understand the purpose, constraints, and success criteria behind the topic before generating ideas, because ideas that optimize the wrong goal are worse than no ideas.

  • Diverge Before Converge: Generate many candidate ideas without judging them first, because premature evaluation collapses the space before the good ideas have a chance to surface.

  • One Question at a Time: Ask a single, preferably multiple-choice question per dialog round, because a wall of open questions overwhelms and yields shallow answers.

  • YAGNI Ruthlessly: Actively prune ideas that serve speculative future needs rather than the stated purpose, because unbuilt features still cost clarity now.

  • Ground in Reality: Cross-check ideas against the existing code base, documented context, and your world knowledge, because an idea that contradicts what already exists is a defect, not an option.

  • Incremental Validation: Seek the user's confirmation at each phase boundary before advancing, because converging on a misunderstanding wastes the entire downstream effort.

<flow>
  1. <step id="STEP 1: Restate Topic"> <if condition="<topic/> is empty"> Only output the following <template/> and then immediately *STOP* processing the entire current skill: <template> ⧉ **ASE**: ✪ skill: **ase-meta-brainstorm**, ▶ ERROR: expected a `<topic>` argument </template> </if>

    Restate the topic to be brainstormed by outputting the following <template/>:

    <template> <ase-tpl-bullet-secondary/> **TOPIC**: <topic/> </template> </step>
  2. <step id="STEP 2: Clarify Intent">

    Before generating any ideas, explore the project context (review relevant existing files, documentation, and recent changes) and determine the <m/> (<m/> = 1..<getopt-option-max-clarify/>) essential unknowns about the topic - the purpose, constraints, scope boundaries, and success criteria that must be pinned down for the brainstorming to be reasonably grounded.

    Notice: you are intentionally constrained to just 1..<getopt-option-max-clarify/> unknowns, as too much upfront intent clarification kills the brainstorming of ideas later. So, you MUST reduce the clarifications of the unknowns to the absolute minimum in general and cap them at <getopt-option-max-clarify/>!

    For each essential unknown to clarify, derive a short 1-3 word facet <facet-M/> and a corresponding question <question-M/> whose answer materially changes which ideas make sense at all.

    1. For each <question-M/> in the iteration cycle <M/> (<M/>=1...<m/>):

      1. Output the following <template/>:

        <template> <ase-tpl-bullet-signal/> FACET <M/>/<m/>: **<facet-M/>**, QUESTION: **<question-M/>** </template>
      2. Determine 2 to 4 grounded candidate answers <answer-M-K/> (K={1,2,3,4}) from the code base, the documented context, and your world knowledge.

      3. In the following, you MUST NOT use your built-in <user-dialog-tool/> tool! Instead, you MUST just show a custom dialog according to the expanded custom-dialog definition. You MUST closely follow this definition.

        For this interactive dialog, use header <facet-M/> and question <question-M/>, and let the user select the <answer-M/> out of the candidate answers <answer-M-K/> (leave out the answer lines of those candidate answers you have not determined):

        <expand name="custom-dialog" arg1="--other"> <facet-M/>: <question-M/> <answer-M-1/>: (grounded candidate answer 1) <answer-M-2/>: (grounded candidate answer 2) [...] </expand>
      4. Dispatch on the dialog <result/>:

        • If <result/> is CANCEL: Skip the remaining sub-steps of this iteration cycle, break out of the iteration cycle entirely, and continue directly with the outer item 2. (cancellation handling) that immediately follows this iteration cycle 1. within this STEP 2.

        • If <result/> starts with ERROR:: Ask the user interactively, without a special tool, the question <question-M/> directly and set <answer-M/> to the response of the user.

        • If <result/> matches OTHER: <text/>: Set <answer-M><text/></answer-M> (take the user's free-text answer).

        • Otherwise: Set <answer-M><result/></answer-M> (take the selected candidate answer).

        Do not output anything in this sub-step.

      5. Output the following <template/>:

        <template> <ase-tpl-bullet-normal/> FACET <M/>/<m/>: **<facet-M/>**, ANSWER: **<answer-M/>** </template>
    2. If at any point <result/> is CANCEL: Only output the following <template/> and then immediately STOP processing the entire current skill:

      <template> ⧉ **ASE**: ✪ skill: **ase-meta-brainstorm**, ▶ status: **brainstorm cancelled** </template>
    </step>
  3. <step id="STEP 3: Diverge Idea Space">

    Generate a broad space of candidate ideas that address the <topic/> within the constraints established by the answers <answer-M/>.

    Deliberately pursue diverse angles - e.g. the minimal/MVP-first angle, the robustness/risk-first angle, the user-experience-first angle, the reuse-existing-machinery angle, the coolness angle, and the unconventional/wildcard angle - because variety in origin yields variety in outcome.

    Still do not judge, rank, or prune ideas in this step. Generate ideas until you either reach at least <getopt-option-min-ideas/> distinct candidate ideas or have clearly exhausted the meaningfully distinct space.

    Store each candidate idea in <idea-N/> with the format **<idea-name-N/>**: <idea-statement-N/> (where <idea-name-N/> is a short 1-4 word summary and <idea-statement-N/> is a single-sentence statement of not more than 40 words), and output the following <template/>:

    <template> <ase-tpl-bullet-normal/> **IDEA <N/>**: <idea-N/> </template> </step>
  4. <step id="STEP 4: Converge Idea Space">

    Converge the candidate ideas <idea-N/> into a smaller, structured set and finally into a recommendation.

    1. Cluster: group the candidate ideas into <c/> coherent clusters <cluster-C/> (a short 1-4 word label, C=1...<c/>), collapsing near-duplicates and discarding ideas pruned by You Aren't Gonna Need It (YAGNI) (speculative, out-of-scope, or contradicting documented context).

      For each cluster and its contained retained ideas, output the following <template/> (<cluster-summary-C/> is a single-sentence statement of not more than 40 words):

      <template> <ase-tpl-bullet-secondary/> **IDEA CLUSTER <C/>/<c/>**: <cluster-C/> - <cluster-summary-C/>, **IDEAS**: <idea-index-C/> </template>

      Here, <idea-index-C/> is the comma-separated list of the indices <N/> of those retained ideas <idea-N/> that belong to cluster <cluster-C/> (e.g. 2, 5, 9).

    2. Score: for each retained idea <idea-N/> in the clusters, rank its fit against the purpose and constraints on a Likert scale of 0 (poor) to 10 (excellent), considering value, uniqueness, risk, and alignment with the existing code base. Keep only ideas in the clusters with a rank of at least <getopt-option-min-rank/>.

      If no idea meets the <getopt-option-min-rank/> floor, the floor filter would empty the set and leave the downstream steps without any options. In this case, disregard the floor and instead keep the up-to-<getopt-option-max-shortlist/> highest-ranked ideas, and output the following <template/> to flag that even the strongest ideas fall below the bar:

      <template> <ase-tpl-bullet-signal/> **NOTICE**: no idea reached the minimum rank of <getopt-option-min-rank/>/10 - shortlisting the highest-ranked ideas regardless. </template>
    3. From the scored ideas <idea-N/>, distill a shortlist of the top <getopt-option-max-shortlist/> options, sorted by rank from highest to lowest.

      For this, draw the shortlist from distinct clusters <cluster-C/> wherever possible - prefer a diverse shortlist spanning different clusters over several high-ranked variations of the same cluster, unless one cluster clearly dominates on rank.

      Store each distilled option in <option-N/> with the format **<option-name-N/>** (rank: <option-rank-N/>/10, cluster: <option-cluster-N/>): <option-statement-N/> (where the statement is a single sentence of not more than 40 words capturing the direction and its primary trade-off), and output the following <template/>:

      <template> <ase-tpl-bullet-normal/> **DISTILLED IDEA**: <option-N/> </template>
    4. Finally, derive a single recommended idea - the highest-ranked option, or a principled synthesis of the option shortlist that preserves what is strongest in each - store its one-sentence rationale (not more than 40 words) in <recommendation/>, and output the following <template/>:

      <template> <ase-tpl-bullet-signal/> **RECOMMENDED IDEA**: <recommendation/> </template>
    5. Finally, give the closing hint by expanding the following (which, depending on the configured <ase-guidance-level/>, may expand into nothing and hence emit no output at all):

      <ase-tpl-hint level="normal"> To turn the recommended idea into a plan, use `/ase-task-edit`; to turn it directly into code, use `/ase-code-craft`. </ase-tpl-hint>
    </step>
</flow>

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Review software architecture, including package cohesion and inter-package coupling

日本語の概要は準備中です。原文の説明を表示しています。

rse/ase602026年10月12日 更新

Discover additional, third-party components (libraries/frameworks) for the technology stack to provide needed functionality.

日本語の概要は準備中です。原文の説明を表示しています。

rse/ase602026年10月12日 更新

Analyze the source code for problems in either the logic and semantics and its related control flow, performance and efficiency, or security.

日本語の概要は準備中です。原文の説明を表示しています。

rse/ase602026年10月12日 更新

Craft Source Code: Use when user wants to "create", "add", or "craft" a new feature from scratch.

日本語の概要は準備中です。原文の説明を表示しています。

rse/ase602026年10月12日 更新

Edit Source Code: Use when the user wants to "edit" the code base in one shot from a query or a bare analyzer issue id like "P1", fusing crafting, refactoring, and resolving with optional grilling, verification, looping, and Git worktree isolation.

日本語の概要は準備中です。原文の説明を表示しています。

rse/ase602026年10月12日 更新

Explains code with WHAT, WHY, ANALOGY, DIAGRAM, CRUXES, and GOTCHAS. Use when you want to know how code works or when the user asks "how does this work?"

日本語の概要は準備中です。原文の説明を表示しています。

rse/ase602026年10月12日 更新

rse のスキルをすべて見る

このスキルの問題を報告する