codex-rs/skills/src/assets/research/research-briefing/SKILL.md
Generate a concise research briefing from KB cards or a topic. Use when a user wants a quick overview, orientation, summary of approaches, or wants to understand what their options are before diving deep. Use instead of cross-paper-report when the user wants brevity over depth. Examples -- "give me a quick overview of VLA approaches", "what are my options for sim-to-real", "summarize what I have on diffusion policies", "brief me on action tokenization methods".
npx skillsauth add agents2agentsai/ata research-briefingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
A 2-4 page orientation document that cuts through paper complexity to extract the one core idea per paper. Answers "what are my options and which should I look at first?" — not "how does every mechanism work in detail."
For full technical walkthroughs, use $cross-paper-report. For conversation-derived reports, use $conversation-report. This skill is for quick orientation before diving deep.
Most papers wrap a small, concrete idea in 15 pages of related work, ablations, and notation. The briefing extracts that one core idea and states it plainly — not in the paper's language, but in yours.
Rules:
This skill works best with KB cards, but it can also work without them.
<kb_path> per the $kb skill and verify KB exists.$kb.$paper-synthesis on relevant papers first, then re-run this briefing." The briefing synthesizes from existing KB content — it does not read papers itself.If KB is disabled but the conversation already contains synthesis output (from $paper-synthesis staging files, prior explanations, or user-provided paper details), use that content as source material. Extract the same fields as Phase 1 (core contribution, key result, approach family, tradeoffs, status) from whatever is available.
If KB is disabled and no prior synthesis exists in the conversation, run a lightweight discovery:
paper_search with 2-3 facets from the user's topic (same facet design as $paper-discovery Phase 1).$paper-synthesis on papers of interest."Path C is a fallback. The briefing will lack the depth of a KB-sourced briefing — abstracts don't contain method details, specific numbers, or implementation insights. But it still answers "what are my options?" and gives the user a starting point.
For each relevant card (or paper abstract in Path C):
$kb to get the full content. For Path B, read from conversation context. For Path C, use the paper_search results directly.Group the papers into 2-5 approach families based on their core paradigm. Each approach should have a clear name and a 1-sentence description of the shared strategy.
If <kb_path>/research-context.md exists, use it to tailor the briefing:
If the file doesn't exist, skip this step — the briefing still works without it.
The briefing is delivered in the chat response only — presented directly in conversation. This is the sole deliverable. No markdown file, no PDF. A briefing is a quick orientation — persistence adds latency without value. If the user wants to re-read a previous briefing, they can re-run it (it reads from KB cards, which are stable). If the user wants a polished typeset document, they should use $cross-paper-report.
Research journal tip: If the user has a research-journal.md in their KB, previous journal entries may show related topics they've already explored — mention this connection if relevant (e.g., "You explored action tokenization on [date] — this briefing covers the broader landscape around that topic").
## Research Briefing: [Topic]
### [Date]
### The Landscape
[1 paragraph: what problem space this covers, what the main tension is,
where the field is heading. 4-6 sentences max.]
### Approaches at a Glance
#### [Approach 1 Name] (N papers)
**Core idea:** [1-2 sentences — the actual contribution, plainly stated]
**Key paper:** [Title] ([Year]) — [why this is the best representative]
**Tradeoff:** [what you gain vs. what you lose in 1 sentence]
**Best for:** [when to use this approach]
#### [Approach 2 Name] (N papers)
**Core idea:** [1-2 sentences]
**Key paper:** [Title] ([Year]) — [why this is the best representative]
**Tradeoff:** [what you gain vs. what you lose]
**Best for:** [when to use this approach]
...
### Per-Paper Quick Reference
| Paper | Year | Core Idea (1 sentence) | Key Number | Status |
|-------|------|----------------------|------------|--------|
| RT-2 | 2023 | VLM predicts tokenized actions directly | 2x generalization on novel objects | Superseded by OpenVLA |
| OpenVLA | 2024 | Open 7B VLA with LoRA adaptation | 16.5% avg improvement with fine-tuning | Current best bootstrap |
| ... | | | | |
### Recommendation
[1-2 paragraphs: Given what you're trying to do, here's what I'd suggest
looking at first and why. Reference specific papers. Be opinionated —
the whole point of a briefing is to help the user decide where to focus.]
### Dive Deeper
For full technical walkthroughs of any paper above:
- `$cross-paper-report [card-ids]` for deep multi-paper analysis
- `$paper-synthesis [arxiv-url]` for single-paper deep dive
- Chat about any paper and ask follow-up questions — insights will be saved to KB cards per `$kb`
This section applies to the main agent only. If this skill is loaded in a subagent, return results as text to the main agent — do NOT call present_reading_view.
Phase 1 (Outline): IMMEDIATELY call present_reading_view with document_id set to a unique slug, title to the briefing title, and content containing ONLY the ## section headings with empty bodies. Example content: "## The Landscape\n\n## Approaches at a Glance\n\n## Recommendation". This opens the reading view instantly with "Generating..." placeholders.
Phase 2 (Fill): The tool result will tell you to fill section 0. Immediately call update_document_section(document_id, section_index=0, content="...") with the FULL content for that section — do not output any text, just make the tool call. Each tool result tells you the next section to fill. Continue calling update_document_section for each subsequent section until all are filled.
Markdown formatting: Always put a blank line before numbered list items (1., 2., etc.) and before bullet list items (-, *). Without a blank line, the markdown parser treats 2., 3., etc. as plain text instead of list items, so they lose their formatting. This also applies to content after paragraphs, blockquotes, and code blocks.
When the user asks follow-up questions about a specific section, use the most efficient update tool:
append_to_section with foldable=true — preferred for expansion requests (e.g., "explain more", "go deeper on X"). Adds a collapsible detail block below existing content, preserving scannability. Each foldable block: 3-5 sentences.append_to_section (without foldable) — to add genuinely new information at the end of a section.patch_document_section — to change specific text within a section (for corrections or targeted edits).update_document_section — to fully rewrite a section ONLY when the user asks for a different framing or the section is factually wrong. Never use this just to add more detail.Critical constraint: After any follow-up update, the section must still be ≤30 lines of visible (non-folded) content. If a request would push past this limit, use foldable blocks.
Write follow-up answers as straight content — no editorial labels like "(clearer explanation)" or "(expanded)" in headings or topic lines.
Skip this entire section if KB is disabled. When KB is off, do not write journal entries, research-context updates, or spawn $kb subagents. The briefing in the reading view is the sole output.
After presenting the briefing, do these:
1. Journal entry — Append to <kb_path>/research-journal.md. Prepend (newest first):
## [Date] — Briefing: [Topic]
### Explored
- Briefed on [N] papers covering [topic]
- Approaches identified: [list approach families briefly]
### Recommendation
- [1-2 sentences: what was recommended and why]
### Cards Touched
- [card-ids] (read)
---
2. Research context detection — If the user's questions or reactions reveal priorities (e.g., "which of these is fastest at inference?", "I don't need the simulation-only ones"), offer to note it in research-context.md. This is especially valuable during briefings because the user is actively deciding what to focus on.
3. Follow-up Q&A persistence — When the user exits the reading view and Q&A produced new insights not already in the relevant KB cards, automatically spawn a fire-and-forget $kb subagent (do NOT call wait) to persist them. Do not ask the user. Include the card IDs and a summary of new insights in the subagent prompt:
$kb
Update KB cards with follow-up insights. Do NOT ask the user — this is automatic. Cards to update: [card-id-1], [card-id-2], ... New insights from Q&A: [For each card: card ID, the question asked, and the substantive answer, 2-4 sentences each]
For each card: read it, append insights under
## Discussion Notesper the update protocol, setdate_updated, write the card back.
$paper-discovery or $paper-synthesis.$paper-synthesis with full PDF access.testing
Multi-repo workspace management: clone repos, create execution runs, track papers/datasets/artifacts, manage snapshots, and review audit logs. Use when the user wants to organize multi-repo work, run experiments in sandboxes, or track research resources.
tools
Build, edit, recalculate, import, and export spreadsheet workbooks with the preloaded @oai/artifact-tool JavaScript surface through the artifacts tool.
tools
Build, edit, render, import, and export presentation decks with the preloaded @oai/artifact-tool JavaScript surface through the artifacts tool.
development
Install Codex skills into $CODEX_HOME/skills from a curated list or a GitHub repo path. Use when a user asks to list installable skills, install a curated skill, or install a skill from another repo (including private repos).