{"slug":"team-question","title":"team-question","summary":"Decompose a feature description, ticket, or issue link into the QRSPI Question artifacts (task.md, questions.md). Trigger on \"shape this idea\", \"decompose this task\", or \"/team-question\".","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-08-28T19:35:00.42195Z","repo":{"url":"https://github.com/bostonaholic/team","stars":11,"forks":2,"license":"MIT","updatedAt":"2026-09-29T13:52:37Z"},"bodyHtml":"<hr>\n<h2>name: team-question\ndescription: Decompose a feature description, ticket, or issue link into the QRSPI Question artifacts (task.md, questions.md). Trigger on \"shape this idea\", \"decompose this task\", or \"/team-question\".\neffort: medium\nargument-hint: \"&lt;ticket id, issue URL, or task description&gt;\"</h2>\n<h1>Team Question — Decompose the Task</h1>\n<p>Run the QUESTION phase only, then stop. The Question phase decomposes the\nuser's intent into the artifacts that the rest of the QRSPI pipeline\nconsumes:</p>\n<ul>\n<li><code>task.md</code> — the human's full intent. Read by <code>design-author</code> and\ndownstream phases that need intent. <strong>Never</strong> read by <code>researcher</code> or\n<code>file-finder</code> — they only see <code>questions.md</code>.</li>\n<li><code>questions.md</code> — neutral research questions phrased without intent. The\nonly file <code>researcher</code> and <code>file-finder</code> ever read.</li>\n<li><code>prd.md</code> — written\n<strong>only when the request is vague, multi-story, cross-cutting, or replaces existing behavior</strong>\n(criteria in <code>skills/product-requirements-doc/SKILL.md</code>, loaded\nconditionally through <code>skills/decomposing-intent/SKILL.md</code>). Referenced\nfrom <code>task.md</code>. read downstream by <code>design-author</code>.</li>\n<li><code>repos.md</code> — written <strong>only when the topic spans more than one\nrepository</strong>. Lists each involved repo's slug, absolute path, and\nrole. Its presence switches the rest of the pipeline into multi-repo\nmode (one worktree per repo, slice/step <code>[repo: &lt;slug&gt;]</code> annotations,\none PR per repo). See <code>skills/qrspi-workflow/SKILL.md</code> for the schema\nand <code>skills/decomposing-intent/SKILL.md</code> for the detection rules.</li>\n</ul>\n<p>These files live in <code>docs/plans/&lt;id&gt;/</code> where <code>&lt;id&gt;</code> is either a\nticket-derived slug (<code>ENG-1234-add-rate-limiting</code>) or a date-derived slug\n(<code>2026-05-01-add-rate-limiting</code>).</p>\n<h2>Input</h2>\n<p><code>$ARGUMENTS</code> may be:</p>\n<ul>\n<li>A ticket identifier (e.g. <code>ENG-1234</code>) — recorded as <code>ticketId</code> on\n<code>task.md</code>'s frontmatter. The orchestrator does not call any ticketing\nsystem. The ID is stored for the user's reference.</li>\n<li>An issue URL (e.g. <code>https://github.com/org/repo/issues/42</code>) — fetched\nwith <code>gh issue view</code> (or equivalent) to extract the title and body\nbefore decomposition.</li>\n<li>Free-form text — treated directly as the feature/task description.</li>\n</ul>\n<p>When <code>$ARGUMENTS</code> is empty, <strong>discover, do not demand</strong>: ground in repo\ncontext before asking. Read recent <code>git log</code> activity and the repo's\n<code>README</code> / <code>CLAUDE.md</code> to propose a likely topic, then use\n<code>AskUserQuestion</code> with labeled options to fill any genuine gap in intent.\nNever bare-stop with a plain \"describe it\" demand when context is already\navailable.</p>\n<h2>Execution</h2>\n<blockquote>\n<p>Follow <code>skills/progress-tracking/SKILL.md</code>: when this procedure has two or more steps, seed one todo item per step before starting and mark each complete as you go.</p>\n</blockquote>\n<ol>\n<li><strong>Resolve the input</strong> to a description:\n<ul>\n<li>Empty <code>$ARGUMENTS</code>: ground in repo context, then ask only for genuine\ngaps, per the <strong>\"discover, don't demand\"</strong> rule in <code>## Input</code>.</li>\n<li>Ticket-only: ask the user for context, or use any tracker integration\nthey have configured to fetch the issue body.</li>\n<li>Issue URL: run <code>gh issue view &lt;url&gt; --json title,body</code> and use the\ntitle plus body as the description.</li>\n<li>Free text: use directly.</li>\n</ul>\n</li>\n<li><strong>Derive <code>&lt;id&gt;</code></strong>:\n<ul>\n<li>If a ticket identifier is present: <code>&lt;TICKET&gt;-&lt;kebab-topic&gt;</code> (e.g.,\n<code>ENG-1234-add-rate-limiting</code>).</li>\n<li>Otherwise: <code>&lt;YYYY-MM-DD&gt;-&lt;kebab-topic&gt;</code> (e.g.,\n<code>2026-05-01-add-rate-limiting</code>).</li>\n<li>The <code>&lt;kebab-topic&gt;</code> is a 2–4 word kebab-case slug derived from the\ndescription.</li>\n</ul>\n</li>\n<li><strong>Create <code>docs/plans/&lt;id&gt;/</code></strong> if it does not exist.</li>\n<li><strong>Resume detection.</strong> If <code>docs/plans/&lt;id&gt;/task.md</code> already exists,\nre-read it instead of overwriting. If <code>questions.md</code> is missing, the\nquestioner only writes <code>questions.md</code>.</li>\n<li>Dispatch the <code>questioner</code> agent with the full description and the\ntarget directory <code>docs/plans/&lt;id&gt;/</code>. The agent writes <code>task.md</code> and\n<code>questions.md</code>, plus <code>prd.md</code> when the request meets the PRD criteria\nand <code>repos.md</code> when it makes sure with the user that the topic spans\nmultiple repos.</li>\n<li><strong>Stop once <code>task.md</code> and <code>questions.md</code> exist on disk</strong> — do not\ncontinue to RESEARCH. (<code>prd.md</code> or <code>repos.md</code> can also exist, neither\nchanges the stop condition.)</li>\n</ol>\n<h2>When to use</h2>\n<ul>\n<li>The idea is vague and you want to see the questioner's framing before\ncommitting to research.</li>\n<li>You want to review and edit <code>task.md</code> / <code>questions.md</code> by hand before\nresearch begins.</li>\n<li>You want to run multiple research passes against the same task without\nre-decomposing.</li>\n</ul>\n<h2>Completion</h2>\n<p>Report:</p>\n<ul>\n<li>Path to <code>task.md</code> and <code>questions.md</code> (and <code>prd.md</code> / <code>repos.md</code> when\nwritten)</li>\n<li>Topic slug and <code>&lt;id&gt;</code></li>\n<li>Mode: single-repo or multi-repo (with the list of involved repo slugs\nif multi-repo)</li>\n<li>Tell the user: <strong>\"Next: run <code>/team-research docs/plans/&lt;id&gt;/</code>\"</strong></li>\n</ul>\n","files":[{"path":"agents/openai.yaml","sizeBytes":197,"isText":true},{"path":"SKILL.md","sizeBytes":3260,"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-09-29T20:58:16.484846Z","sha256":"4830669182C94BA862FF9A97457AF973DBFBCC0296B772D870054E9A6BB7CBFB","sizeBytes":1921},"review":null,"source":{"repositoryUrl":"https://github.com/bostonaholic/team","path":"skills/team-question","license":"MIT","commit":"6c69bd8ca8dd43fbcb27bef5f02180b07f3fd3eb","subtreeSha":"3EA1E7E2348E6ED62CFDADEAE6362CE6CA979C5CA77ACCCCFB3042F20C14A83F","lastSyncedAt":"2026-09-29T20:56:15.880837Z"},"reviewedAt":"2026-09-29T20:59:06.941582Z","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/bostonaholic/team/tree/main/skills/team-question"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install bostonaholic-team@llmmart"},{"target":"git","command":"git clone https://github.com/bostonaholic/team.git"}]}