Resolve
The why behind your code, as plain markdown in your repo. Agent skill to capture decisions, dashboard to browse them.
npx -y skills add DustinVK/wherefore --skill resolveAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Mark an open question in the team's wherefore log as resolved. Use whenever the user wants to close out an open question, e.g. "mark Q-042 resolved", "we figured out Q-007", "close Q-015", "we have an answer for Q-003". Works both when resolution comes from a new wherefore entry and when it's a standalone answer with no new entry.
SKILL.md
6.2 KB, as published. Nobody here has run it
Wherefore: resolve
Close out an open question by updating its individual file in
wherefore/questions/, recording what was decided, why, and which discussion (if
any) contains the full context. The file's frontmatter is the single source of
truth.
No em dashes. Periods, commas, colons, semicolons, or parentheses instead. Firm project rule.
Never delete anything under a wherefore/ data dir. Retire, do not delete.
Frontmatter safety
When you fill resolution, emit it as a double-quoted, single-line string, escaping
embedded " as \" and \ as \\. An unquoted value containing : (colon-space)
or a leading -, #, [, {, or " makes YAML misparse and crashes the dashboard
viewer. If the answer will not fit on one line, keep resolution to a one-line
summary and move detail into a ## Resolution body section. status and
resolution_slug need no quotes.
Workflow
-
Find the question. Files are named
Q-NNN-short-slug.md(ID prefix plus a scannable slug), so glob by the ID rather than assuming the exact name:ls wherefore/questions/Q-042-*.md wherefore/questions/Q-042.md 2>/dev/null(the second path catches any legacy file still namedQ-NNN.md). Expect exactly one match; open it. If nothing matches, say so clearly. To list what is open, dump the question frontmatter and filterstatus: open:for f in wherefore/questions/Q-*.md; do awk -v F="$f" 'BEGIN{print "=== " F " ==="} /^---[[:space:]]*$/ { n++; if (n==2) exit; next } n==1 { print }' "$f" doneConfirm the target's current
status. Ifstatus: resolved, tell the user and show the existing resolution; don't overwrite it. -
Get the resolution. Ask the user (or extract from context if they already provided it):
- Answer: what was decided, in one sentence.
- Why: the rationale or constraint that drove it, in one or two sentences. This is the part that matters months later; don't skip it.
- Source discussion (optional): a discussion slug if the answer came out of
a logged discussion. The user can name it, or you can check whether they just
ran the
captureskill and a fresh entry exists. If no wherefore entry captures it, the resolution is standalone.
-
Update the question file (
wherefore/questions/Q-NNN-short-slug.md). Edit the frontmatter in place:- Set
status: resolved - Fill in
resolutionwith a one-sentence answer (and the why, if concise enough to fit; otherwise put it in a## Resolutionbody section below the frontmatter). Quote it per Frontmatter safety. - Set
resolution_slugto the source discussion slug, or leave blank if standalone
- Set
-
Update the source wherefore entry (if applicable). If the resolution came from a specific wherefore entry, open
wherefore/log/<slug>.mdand add a note in its "Open questions / follow-ups" section next to the relevant item, linking the question with a relative Markdown link (per AGENTS.md "Linking"):- Q-042: <question text> (resolved, see [Q-042](../questions/Q-042-<slug>.md)) -
Report back. Show:
- The question text and its ID
- The answer recorded
- Which files were touched
- Whether any related questions still
openshare the same areas (dump the question frontmatter to check), as a nudge; don't resolve them automatically - Plan items this resolution touches. Dump
wherefore/plan/P-*.mdfrontmatter (resolvereads onlyquestion_ref,answers, andstatusand writes nothing toplan/). Skip any item whosestatusisdropped; a dropped item is not waiting on anything. Then:- Unblocked: items whose
question_refis the ID you just resolved just became unblocked. Tell the user; do not change their status. The item stays where it is until someone advances it through theslateskill. - Answered: items whose
answersis that ID just accomplished their purpose (the spike that was investigating it). Report them and offer to advance them todonethrough theslateskill. Do not advance them silently, and do not advance them here yourself. - Break the loop: if the
slateskill drove this resolve (its advance intent handed off here to close the question a finishing spike answered), suppress the offer to advance those items.slateis already advancing the item; offering to advance it back would loop. This mirrors howslateadvance suppresses its capture offer when capture is the driver. Readingplan/here does not compromiseslate's sole ownership of it; nothing is written.
- Unblocked: items whose
Examples
Example 1: resolution from a new discussion
User: "Mark Q-001 resolved: we decided to use zero-rated VAT for EU digital goods.
We discussed it in the entry we just logged, 2026-07-01-eu-vat-strategy."
Action: find the file (ls wherefore/questions/Q-001-*.md) and edit it (status ->
resolved, resolution filled, resolution_slug set), update that wherefore entry to
note the question is resolved. Report both files touched.
Example 2: standalone resolution
User: "Close Q-007. We're not doing offline sync this quarter, pushed to Q3."
Action: edit the Q-007 file (wherefore/questions/Q-007-*.md) (status -> resolved,
resolution filled, resolution_slug left blank). No wherefore entry to update. Report
the file touched.
Example 3: question not found
User: "Resolve Q-099"
Action: no wherefore/questions/Q-099-*.md matches. Respond: "Q-099 wasn't found
in wherefore/questions/. Check the ID; I can list the open questions if that helps."
Example 4: already resolved
User: "Mark Q-002 resolved"
Action: open the Q-002 file (wherefore/questions/Q-002-*.md); status is already resolved. Show the
recorded resolution date and text and make no changes, e.g. "Q-002 was resolved on
2026-06-24: zero-rated VAT for EU digital goods. No changes made."