Research grounded
Skill ajbarea/techne/plugins/techne/skills/research-grounded
Audit a plan's design decisions — library, framework, pattern, and architecture choices in IMPL.md / ROADMAP.md — for missing `# research(YYYY-MM):` provenance, then web-search to ground them. Use when you want architectural choices verified against current best practice before they harden into code, rather than resting on training-cutoff recall. Catches committed decisions stated as fact but never checked — the class of miss that becomes revertable work.From its SKILL.md
npx -y skills add ajbarea/techne --skill research-groundedAssembled 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.
SKILL.md
6.9 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it
Research-grounded
Catch design decisions that were made without checking current best practice — before they become code. A planning doc that says "we'll use X" with no provenance is a bet on training-cutoff recall; the convention # research(YYYY-MM): <tradeoff> <source> records that the bet was checked against reality. This skill finds the bets that weren't.
Repo context
/techne:research-grounded audits docs in the CWD repo by default, or a path you name (which may live in another repo). Resolve the repo root from the argument:
git -C "$(dirname "<target-doc>")" rev-parse --show-toplevel # no path arg → CWD repo root
The target's .claude/skill-context.md isn't required, but its ## repo section helps you tell a genuine technology choice from incidental prose.
What needs provenance
A committed design decision — a choice with real alternatives, where picking wrong is expensive to undo:
- Library / framework / tool — "MapLibre + PMTiles", "Playwright over Cypress", "switched from JWT to server sessions".
- Pattern / technique — "event delegation over per-node listeners", "stale-while-revalidate", "container queries for card internals".
- Architecture / protocol — "A2A
Message.metadatainstead of text tags", "OPFS for tile storage". - Version / API-surface bets stated as fact — "ElevenLabs v3 supports SSML break tags" (the miss that cost 5 revertable PRs: a capability asserted, never verified against the target's docs).
Each of these, when committed in IMPL/ROADMAP, should carry an adjacent # research(YYYY-MM): <one-line tradeoff> <source>. Negative-space decisions ("we did not do X because…") need provenance too.
Ignore
- Descriptive implementation prose. "reads the metrics object instead of re-reading constants", "returns a structured fallback instead of a retry loop" — uses decision words but picks no technology or pattern. Not research-worthy.
- Hypotheticals & aspirations. "what if we used sessions instead of JWT", "we plan to", "coming soon" — not yet a commitment (mirrors how
/techne:docsyncwaves through roadmap language). - Already grounded. A decision with a
research(...)tag on the same bullet or within a few lines — even a terse one. - Bugfixes, renames, mechanical changes — no alternative space to research.
- Settled house conventions — the fleet's own recorded standards (SHA-pinning, squash-merge). Don't re-flag every mention.
Workflow
-
Scope. Default:
IMPL.md+ROADMAP.mdin the target repo. Accept a named file or a directory (e.g.planning/). For multiple files, fan out — oneExploresubagent per file (see Fan-out). -
Find candidate decisions — two grep passes, then read the design sections. The greps seed candidates; judgment decides which are research-worthy per the lists above.
Pass A — decision verbs (catches "Library … over …" and "Pattern over pattern" phrasing):
grep -nEi 'chose|switched|adopted|replaced|opted for|we use|picked|migrated|over [A-Za-z.-]+ \(|instead of' ROADMAP.md IMPL.mdPass B — capability & best-practice-as-fact (catches the costliest class — "Version / API-surface bets stated as fact" — which carries no decision verb, so Pass A is blind to it):
grep -nEi 'supports?|exposes?|provides?|enables?|natively|built-in|out of the box|standard|canonical|idiomatic|recommended|modern|best practice' ROADMAP.md IMPL.mdPass B surfaces "RealtimeTTS exposes word-timing for Kokoro", "Standard FastAPI 2026 setup", "the 2026 modern … standard is X" — claims a verb-grep never sees.
Neither grep is sufficient — also read the doc's design / architecture sections directly. Both passes are noisy and leaky: a bet phrased as a bare proper-noun list ("Postgres + SQLModel + asyncpg", "MapLibre + PMTiles", "on
Message.metadata") trips no keyword at all. The real signal is proper-noun library / protocol / API names;.claude/skill-context.md's## reposection tells you which tokens are this repo's technology choices. Classify per-hit, not per-match — most Pass Ainstead ofhits and most Pass Bsupports/standardhits are descriptive prose.research(2026-05): off-the-shelf prose linters (proselint / write-good / Vale) flag style weasel-words ("very", "quite"), not capability-claims-missing-provenance — so this seed is bespoke by necessity, not a reinvented wheel.
-
Check provenance. For each genuine decision, look for a
research(YYYY-MM):(or# research:) tag on the same bullet or within a few lines. Present → grounded, skip. Absent → gap. -
Report gaps. One entry per un-grounded decision:
ROADMAP.md:88 decision: "embed offline maps with MapLibre + PMTiles" gap: no research provenance — grounded in 2026 offline-map options, or recall? action: web-search current PMTiles/MapLibre tradeoffs → add `# research(2026-05): <tradeoff> <source>` -
Ground or flag (on confirmation).
- Ground it (the point of the skill — close the loop, don't just flag): web-search the decision's current best practice, then add
# research(YYYY-MM): <tradeoff> <source>capturing what you actually found. - Flag only: if grounding needs the user's domain context a quick search can't supply, leave a one-line note to ground it before it hardens into code.
- Never invent a citation. A
research()tag with a fabricated or unread source is worse than no tag.
- Ground it (the point of the skill — close the loop, don't just flag): web-search the decision's current best practice, then add
Fan-out pattern
For a directory (e.g. planning/), spawn one Explore subagent per file; each returns a gap report for its file. Consolidate, present grouped by file, then ask ground all / ground selected / skip?.
Don't touch
- Docs the user didn't name or imply; git history / changelogs (historical, not live bets).
research()tags that already exist — don't reword a grounded decision unprompted.- Decisions already shipped as code with no alternative left to research — audit the plan, not the past.
Why this skill is quiet
Output is the gap report and, on confirmation, the web-searched research() tags. No narration of the scan — just decision → gap → action. Sibling of /techne:docsync (claims vs code); this is decisions vs evidence.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.