From Flagrare
Catalogs external research into docs/research/ before sending synthesis, crediting sources and linking decisions to evidence.
How this skill is triggered — by the user, by Claude, or both
Slash command
/flagrare:research-catalogThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
External research is someone else's work. The papers, blog posts, vendor docs, and open-source projects we lean on were written by named humans (or named orgs), and the project owes them three things: visible credit, a usable citation back, and a record of which decision their work informed. This skill is the way the project pays that debt.
External research is someone else's work. The papers, blog posts, vendor docs, and open-source projects we lean on were written by named humans (or named orgs), and the project owes them three things: visible credit, a usable citation back, and a record of which decision their work informed. This skill is the way the project pays that debt.
It also pays a second debt — to the project's own future. ADRs say what was decided. Without a catalog of the research behind those decisions, the why drifts out of reach within months. This skill captures the evidence base alongside the decision, in a stable in-repo location, so a contributor six months from now can trace any non-obvious choice back to the work that justified it.
Run this skill immediately after a research session that pulled in external sources, and before the synthesis is sent back to the user. Sources count as "external" when they came from:
It does not apply to:
git log, grep, file reads).docs/research/ documents why the product is built the way it is, not how the team chose to build it. If you researched a commit-message convention, a testing framework's idioms, a changelog-formatting style, a build tool's options, or an agent-skill's calibration — that research belongs with the tooling it informed (a doc in the tool's own repo, a comment in the relevant config, a memory entry in the agent's working files). It does not belong in the project's research log alongside research about the project's actual domain.The trigger is the conjunction of two things:
The rule of thumb: if a stranger reading docs/research/ learns something about what the product is and why it's designed this way, the entry belongs. If they only learn how the team built it, it doesn't.
Format: YYYY-MM-DD-topic in kebab-case. Examples:
2026-05-18-llm-persona-best-practices2026-03-14-vercel-ai-sdk-providersIf you've already done research on a related topic today, append to that file rather than creating a new one. New sources get appended to its ## Sources section; the synthesis section grows.
docs/research/<slug>.mdIf docs/research/ does not exist, create it now. Use the file template below.
Only catalog sources that actually informed the synthesis. Don't pad the list with sources you skimmed and abandoned. Don't pad with sources you "could have used." The catalog reflects what the answer was built from, not what was available.
docs/research/README.mdIf this file does not exist, create it using the index template below. Add a row linking the new catalog file. Keep the index in reverse chronological order (newest at the top).
Wherever the findings actually land — an ADR, a memory file, a code comment, a TSDoc block — reference the catalog file. The cross-link is what closes the loop. If a decision can't point at the research that justified it, the catalog isn't doing its job.
A typical cross-link looks like:
Based on research in
docs/research/2026-05-18-llm-persona-best-practices.md.
# Research: <human-readable topic>
- **Slug:** `<YYYY-MM-DD-topic>`
- **Date:** YYYY-MM-DD
- **Status:** complete | in-progress
- **Triggered by:** <what prompted this — a task #, an ADR draft, a question raised in chat>
- **Informed:** <where the findings landed — link to ADRs, src files, memory entries, etc. Fill in as cross-links are made.>
## Question
<One paragraph stating the actual question being researched. Be specific. "Best practices for LLM persona instructions" is OK; "LLM stuff" is not.>
## Sources
### [<Title>](<URL>)
- **Authors / Org:** <names if known, or "Anthropic", "OpenAI", etc. If anonymous or uncredited, say so.>
- **Type:** vendor doc | academic paper | engineering blog | open-source project | spec | news article | other
- **Published:** <YYYY-MM-DD if known, else "unknown" or "ongoing">
- **Accessed:** YYYY-MM-DD
- **Relevance:** high | medium | low
- **What this contributed:** <2–4 sentences. What did this source give us that the synthesis depends on? Not a summary of the source — a description of its contribution to OUR answer.>
- **Quoted:** (optional, when a finding hinges on specific phrasing)
> "<verbatim quote>"
### [<Next source title>](<URL>)
…
## Synthesis
<The distilled answer to the question. This is the work product. It should be readable on its own — someone landing here cold should learn what was concluded and why. Cite source entries by linking back to them inline where they support a specific claim.>
## Downstream uses
- <ADR / file / memory entry / chat answer this informed, with a link>
- <…>
docs/research/README.md)# Research log
External research conducted for this project. Each entry credits the sources it leaned on and links forward to where the findings landed (ADRs, code, docs). See the `/flagrare:research-catalog` skill for the workflow, or just read an entry to see the shape.
## Sessions
| Date | Topic | Triggered by | Informed |
|------|-------|--------------|----------|
| YYYY-MM-DD | [Topic title](./YYYY-MM-DD-slug.md) | <task # or context> | <ADR / file / etc.> |
## Adding a session
When you research something external (vendor docs, papers, blog posts, open-source repos), the `/flagrare:research-catalog` skill produces a file in this directory and a row in this table. Run it before the synthesis goes back to the requester.
The point of the catalog is utility for a human reader who didn't do the research. Optimise for that.
Type. Don't quietly smooth over the difference between "Anthropic's official prompt-engineering guide" and "a Medium post by someone with three followers". Reader needs to know.Accessed: field is what someone re-checking your work needs.What this contributed field should answer: what would the synthesis be missing if this source weren't here? If the honest answer is "nothing", don't catalog it.[Anthropic prompt engineering](https://platform.claude.com/…) — not just the URL. Without a title the link is invisible to anyone scanning.docs/research/README.md is unfindable./flagrare:staleness-audit — pre-commit check that includes a "if research was conducted, was it cataloged?" step./flagrare:release-check — post-commit, separate concern.Provides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub flagrare/agent-skills --plugin flagrare