QA session
A grounded question-and-answer exchange against user-supplied context, closed by a session
summary saved to the consumer repo. Answers are analyzed against the context — never from
memory alone — and every answer names the sources that ground it.
Not the qa test-quality persona, which lives in a different namespace (delegation
personas) and means something else. This skill runs Q&A sessions; that persona audits
tests.
Invocation
qa {context} opens a session. {context} can be anything — accept it as given:
- inline text pasted into the request,
- a file, directory, or topic name,
- a question asked against material already in the conversation.
No context provided: ASK the user for it first. Do not start answering until the context
exists — a session with nothing to stand on produces ungrounded answers.
Procedure
- Accept the context. Restate in one line what the session stands on (the pasted
material, the resolved path, the topic). If a path does not resolve, say so and ask
again — do not substitute a nearby file silently.
- Run the Q&A loop. The user asks; you answer each question against the context:
- Analyze the question in the context before reaching for outside sources.
- Ground every answer per the grounding rule below, in
{answer} + {grounding}
form. One question, one grounded answer, then the next question.
- A follow-up that changes the context (new material, corrected premise) restarts
step 1 for that material; say so in one line.
- Close the session. When the user signals they are done (or the questions run
out), build the session summary and save it to
docs/qa-sessions/<topic-slug>.md in the consumer repo, creating the directory on
demand. Then report the path in one line.
Slug rule: lowercase, non-alphanumeric runs become single hyphens, trimmed of leading
and trailing hyphens, truncated to ~64 characters. Re-running a session for an existing
slug overwrites that file.
Grounding rule
Every answer draws on at least two grounding sources from all available sources, in
this priority order:
- Memory / code — project memory search, the knowledge graph, codebase search.
This leg is mandatory: an answer with no memory-or-code source is not grounded.
- Web — external documentation, upstream references, published sources.
If no web source exists for an answer, the answer carries the literal note
couldn't ground in external source in place of the web leg — never silently drop
the leg, never invent a source to fill it. A source you cannot cite (no path, no
link, no retrieval evidence) is not a source.
Per-answer format
{answer}
{grounding}
{answer} is the analyzed response, scoped to what the sources support. {grounding}
is a short source list naming each source and which leg it satisfies (memory/code or
web), or the couldn't ground in external source note. Mark inference as inference —
anything beyond what the cited sources say is labeled, not smuggled in.
Session summary
Sections, in this order:
- Main motive — what the session was really about, in two or three sentences.
- Refined questions — each asked question restated precisely, disambiguated from
how it was first phrased.
- Structured answers — the answer to each refined question, with its grounding
condensed to source names.
- Open / unanswered questions — what was asked but not resolved, and what would
resolve it. Empty is a valid section; omitting it is not.
- Source links — every source cited in the session, as paths or links.
Gotchas
- The context is the anchor. An answer that drifts off-context is wrong even when it
is factually true — say "beyond the session context" before giving it.
docs/qa-sessions/ lives in the consumer repo only. Never create it in the
framework repo, and never treat a missing directory as a missing session.
- Do not bank the summary in project memory instead of writing the file — the file is
the deliverable. Memory promotion follows the project's own rules, if any.
- Two sources that quote each other are one source. Count independent legs, not
citations.
Red flags — STOP
- Do not answer before the context exists.
- Do not present an ungrounded answer as grounded — no sources, no answer; ask a
clarifying question instead.
- Do not fabricate web sources. The fallback note exists for exactly this case; use
it.
- Do not turn the session into adjacent work: no refactoring the context files, no
opening tasks, no "while I'm here" fixes. Offer them after the summary lands.
Verification Checklist
Files
1---2name: qa-23description: Use when the user wants a question-and-answer session against a context — "qa {context}", "I have questions about X", or a question asked against supplied material — or wants the session's questions and grounded answers saved as a summary. If no context is given, ask for it first; every answer carries its grounding, and the session closes with a summary in docs.4license: MIT5---67# QA session89A grounded question-and-answer exchange against user-supplied context, closed by a session10summary saved to the consumer repo. Answers are analyzed against the context — never from11memory alone — and every answer names the sources that ground it.1213Not the `qa` test-quality persona, which lives in a different namespace (delegation14personas) and means something else. This skill runs Q&A sessions; that persona audits15tests.1617## Invocation1819`qa {context}` opens a session. `{context}` can be anything — accept it as given:2021- inline text pasted into the request,22- a file, directory, or topic name,23- a question asked against material already in the conversation.2425No context provided: ASK the user for it first. Do not start answering until the context26exists — a session with nothing to stand on produces ungrounded answers.2728## Procedure29301. **Accept the context.** Restate in one line what the session stands on (the pasted31 material, the resolved path, the topic). If a path does not resolve, say so and ask32 again — do not substitute a nearby file silently.332. **Run the Q&A loop.** The user asks; you answer each question against the context:34 - Analyze the question in the context before reaching for outside sources.35 - Ground every answer per the grounding rule below, in `{answer}` + `{grounding}`36 form. One question, one grounded answer, then the next question.37 - A follow-up that changes the context (new material, corrected premise) restarts38 step 1 for that material; say so in one line.393. **Close the session.** When the user signals they are done (or the questions run40 out), build the session summary and save it to41 `docs/qa-sessions/<topic-slug>.md` in the consumer repo, creating the directory on42 demand. Then report the path in one line.4344Slug rule: lowercase, non-alphanumeric runs become single hyphens, trimmed of leading45and trailing hyphens, truncated to ~64 characters. Re-running a session for an existing46slug overwrites that file.4748## Grounding rule4950Every answer draws on at least two grounding sources from all available sources, in51this priority order:52531. **Memory / code** — project memory search, the knowledge graph, codebase search.54 This leg is mandatory: an answer with no memory-or-code source is not grounded.552. **Web** — external documentation, upstream references, published sources.5657If no web source exists for an answer, the answer carries the literal note58`couldn't ground in external source` in place of the web leg — never silently drop59the leg, never invent a source to fill it. A source you cannot cite (no path, no60link, no retrieval evidence) is not a source.6162## Per-answer format6364```65{answer}6667{grounding}68```6970`{answer}` is the analyzed response, scoped to what the sources support. `{grounding}`71is a short source list naming each source and which leg it satisfies (memory/code or72web), or the `couldn't ground in external source` note. Mark inference as inference —73anything beyond what the cited sources say is labeled, not smuggled in.7475## Session summary7677Sections, in this order:78791. **Main motive** — what the session was really about, in two or three sentences.802. **Refined questions** — each asked question restated precisely, disambiguated from81 how it was first phrased.823. **Structured answers** — the answer to each refined question, with its grounding83 condensed to source names.844. **Open / unanswered questions** — what was asked but not resolved, and what would85 resolve it. Empty is a valid section; omitting it is not.865. **Source links** — every source cited in the session, as paths or links.8788## Gotchas8990- The context is the anchor. An answer that drifts off-context is wrong even when it91 is factually true — say "beyond the session context" before giving it.92- `docs/qa-sessions/` lives in the consumer repo only. Never create it in the93 framework repo, and never treat a missing directory as a missing session.94- Do not bank the summary in project memory instead of writing the file — the file is95 the deliverable. Memory promotion follows the project's own rules, if any.96- Two sources that quote each other are one source. Count independent legs, not97 citations.9899## Red flags — STOP100101- Do not answer before the context exists.102- Do not present an ungrounded answer as grounded — no sources, no answer; ask a103 clarifying question instead.104- Do not fabricate web sources. The fallback note exists for exactly this case; use105 it.106- Do not turn the session into adjacent work: no refactoring the context files, no107 opening tasks, no "while I'm here" fixes. Offer them after the summary lands.108109## Verification Checklist110111- [ ] Context existed before the first answer (given, or asked for and received)112- [ ] Every answer has at least two grounding sources, memory/code leg first113- [ ] Missing web leg carries the literal fallback note, never silence or invention114- [ ] Summary has all five sections; open questions listed, not hidden115- [ ] Summary file written to `docs/qa-sessions/<topic-slug>.md`; path reported116117## Files118119- `SKILL.md` — this file