MCP Server Builder
anthropics/skills
Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.
Run the full One-Report pipeline from one input file through grounding, research, evidence-rich report drafting, final review quality-gating, and export, while reusing existing skills, preserving…
$ npx skills add gaotiexinqu/OneResearchClaw --skill one-report -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install gaotiexinqu/OneResearchClaw one-report --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/gaotiexinqu/OneResearchClaw.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.cursor/skills/one-report .claude/skills/one-report && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "one-report" agent skill from https://github.com/gaotiexinqu/OneResearchClaw/tree/main/.cursor/skills/one-report into .claude/skills/one-report/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "one-report", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/gaotiexinqu/OneResearchClaw/tree/main/.cursor/skills/one-reportType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add gaotiexinqu/OneResearchClaw --skill one-report -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install gaotiexinqu/OneResearchClaw one-report --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gaotiexinqu/OneResearchClaw.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.cursor/skills/one-report .agents/skills/one-report && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "one-report" agent skill from https://github.com/gaotiexinqu/OneResearchClaw/tree/main/.cursor/skills/one-report into .agents/skills/one-report/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "one-report", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add gaotiexinqu/OneResearchClaw --skill one-report -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install gaotiexinqu/OneResearchClaw one-report --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gaotiexinqu/OneResearchClaw.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.cursor/skills/one-report .cursor/skills/one-report && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "one-report" agent skill from https://github.com/gaotiexinqu/OneResearchClaw/tree/main/.cursor/skills/one-report into .cursor/skills/one-report/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "one-report", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/gaotiexinqu/OneResearchClaw.git --path .cursor/skills/one-report--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add gaotiexinqu/OneResearchClaw --skill one-report -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install gaotiexinqu/OneResearchClaw one-report --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gaotiexinqu/OneResearchClaw.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.cursor/skills/one-report .gemini/skills/one-report && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "one-report" agent skill from https://github.com/gaotiexinqu/OneResearchClaw/tree/main/.cursor/skills/one-report into .gemini/skills/one-report/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "one-report", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install gaotiexinqu/OneResearchClaw one-reportInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add gaotiexinqu/OneResearchClaw --skill one-report -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/gaotiexinqu/OneResearchClaw.git skills-src && mkdir -p .github/skills && cp -r skills-src/.cursor/skills/one-report .github/skills/one-report && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "one-report" agent skill from https://github.com/gaotiexinqu/OneResearchClaw/tree/main/.cursor/skills/one-report into .github/skills/one-report/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "one-report", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add gaotiexinqu/OneResearchClaw --skill one-report -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install gaotiexinqu/OneResearchClaw one-report --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gaotiexinqu/OneResearchClaw.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.cursor/skills/one-report .opencode/skills/one-report && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "one-report" agent skill from https://github.com/gaotiexinqu/OneResearchClaw/tree/main/.cursor/skills/one-report into .opencode/skills/one-report/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "one-report", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
one-reportRun the full One-Report pipeline from one input file through grounding, research, evidence-rich report drafting, final review quality-gating, and export, while reusing existing skills, preserving…
One Report is an agent skill from gaotiexinqu/OneResearchClaw. Run the full One-Report pipeline from one input file through grounding, research, evidence-rich report drafting, final review quality-gating, and export, while reusing existing skills, preserving current contracts, and enforcing strict downstream skill fidelity for every grounded unit.
Its SKILL.md is about 17k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Agent Workflows. The repository describes itself as: Any research. One Claw. 🦞 From any materials to research with fully autonomous & skill-driven researcher. The licence is MIT.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 37e86c6. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are yaml, bash and json).
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
arxiv.orgyoutube.commodelservice.jdcloud.comyoutu.beapi.gptplus5.comapi.custom-proxy.comAlso links to:
api.openai.comgenerativelanguage.googleapis.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
OPENAI_API_KEYGEMINI_API_KEYGOOGLE_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
One Report loads about 17k tokens when it runs. Until then it costs about 74 tokens; SKILL.md has 6,532 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from gaotiexinqu/OneResearchClaw at commit 37e86c6, republished under its MIT licence (© gaotiexinqu). 6,532 words, ~16,957 tokens.
.claude/skills/one-report/SKILL.md (or your agent's skills folder).Use this skill as the single top-level entry skill for the full One-Report pipeline.
This skill is a thin orchestration layer. It does not replace existing input, grounding, research, summary, review, or export skills. It must reuse them.
The purpose of this skill is to let a user provide:
and then complete the full pipeline:
input -> grounding -> research -> report drafting -> review quality gate -> output export
without requiring the user to manually run each stage.
This skill must:
Task tool to create independent subagent branches for each topic child (see Subagent Rule below)This skill must not:
grounded-review and treat the draft report as the final deliverableThis skill is an orchestrator, not a replacement for the lower-level skills.
This section is MANDATORY. Violations will break the pipeline.
When subagents are launched, the parent agent may be tempted to:
This is forbidden and breaks the pipeline.
During subagent execution, the parent agent must NOT:
| Forbidden Action | Why It Breaks Things |
|---|---|
Generate lit.md directly | Overwrites/wastes subagent's research work |
Generate summary.md directly | Overwrites/wastes subagent's summary work |
| Override subagent output files | Destroys evidence of subagent completion |
| "Help by generating" while subagent runs | Creates duplicate work, confuses pipeline state |
| Skip waiting to move to next stage | Violates artifact-based completion rule |
| Use transcript line count as progress metric | Misleading — subagent may write files without updating transcript |
Every subagent that produces a pipeline artifact must end its final response with a structured completion signal block. This signal is the authoritative declaration of whether the subagent believes its work is done.
Required format — subagent must include at the end of its final response:
{
"subagent_claims_complete": true,
"artifact_written": "<canonical path>",
"lines_written": <number>,
"round": <N>,
"completion_verified_by_subagent": true
}If subagent_claims_complete is false, the subagent is still working or has encountered a problem. The parent must not act as if the stage is complete.
Subagent prompt instruction: Every subagent prompt launched via Task tool must end with:
After completing your work and writing the output file, your final response MUST end with this block:
{
"subagent_claims_complete": true,
"artifact_written": "<canonical output path>",
"lines_written": <actual line count>,
"round": <N or 0>,
"completion_verified_by_subagent": true
}
Do NOT end your response without this block. The parent agent will not act on your work without it.Parent agent rule: The parent agent must wait for this signal before treating a subagent as complete. The presence of this signal in the subagent's response is necessary (but not sufficient) for the parent to mark the task as complete.
The parent agent may only:
Task tool with resume parameter to prompt stuck subagentsWhen launching subagents, immediately create this todo structure:
todo_write with:
[
{"id": "research_<topic_id>", "status": "in_progress:awaiting_file", "expected_file": "data/lit_results/<ground_id>/lit.md"},
{"id": "summary_<topic_id>", "status": "blocked", "depends_on": ["research_<topic_id>"]},
{"id": "review_<topic_id>", "status": "blocked", "depends_on": ["summary_<topic_id>"]}
]Rule: blocked todos must never be processed by the parent agent directly.
A subagent task is complete ONLY when its expected file exists at the canonical path:
| Subagent Type | Expected File | Minimum Size |
|---|---|---|
| Research | data/lit_results/<ground_id>/lit.md | ~200 lines |
| Summary | data/report_inputs/<ground_id>/summary.md | ~300 lines |
Parent agent must verify file existence before marking todo as completed.
The parent agent must NOT use transcript line count as a progress or completion metric. Subagents may write files without updating their transcript, especially when:
download_opened_literature.py --wait)Correct polling protocol:
1. Launch subagent with run_in_background=true
2. Set todo status to "in_progress:awaiting_file"
3. Poll using Glob — check if the canonical output file exists AND has non-trivial size:
- Research: data/lit_results/<ground_id>/lit.md (min ~200 lines)
- Summary: data/report_inputs/<ground_id>/summary.md (min ~300 lines)
- Review round: data/review_outputs/<ground_id>/round_<N>/review_state.json
- Research report: data/reports/<ground_id>/research_report.md (min ~150 lines)
4. If file exists with valid size:
- Check transcript for the subagent's completion signal block
- If signal present: mark todo completed, proceed
- If signal absent: wait one more poll cycle (60s), then check again
5. If file does NOT exist after 2+ consecutive polls (60s each) AND transcript shows no new messages:
- Consider the subagent stalled
- Resume via Task tool resume parameter with explicit continuation instructions
- Do NOT generate the file yourself
6. If file does NOT exist after resume + 2 more poll cycles: treat as definitive failure, launch replacement subagentCritical: A subagent transcript that stops growing does NOT mean the subagent has stopped working. It means the transcript has stopped updating. Always verify artifact existence before drawing any conclusions about subagent state.
What to check instead of transcript lines:
| Instead of this | Check this |
|---|---|
| Transcript line count | Glob for canonical output file existence |
| "Subagent seems quiet" | ls to verify file size > minimum threshold |
| "No new transcript messages" | wc -l on the output file to confirm content |
| Subagent declared "I'm writing..." | Actual file on disk at canonical path |
Before acting:
agent-transcripts/<uuid>/subagents/<subagent_id>.jsonl for the completion signal blockTask tool with resume parameter1. Launch subagent with run_in_background=true
2. Set todo status to "in_progress:awaiting_file"
3. Poll using Glob for canonical output file existence:
- Research: data/lit_results/<ground_id>/lit.md
- Summary: data/report_inputs/<ground_id>/summary.md
- Research report: data/reports/<ground_id>/research_report.md
4. Check wc -l on output file — verify size > minimum threshold
5. When canonical file exists with valid size AND subagent transcript shows completion signal:
- Mark todo as "completed"
- Mark dependent todo as "in_progress"
6. If file exists but completion signal absent: wait one more 60s poll before marking done
7. If file absent: wait for resume signal, do not generate the file yourself
8. Never: generate the file yourself while subagent runs, or treat a silent transcript as failureIf the parent agent generates a file that a subagent was supposed to produce:
The user should provide the following information at the beginning.
input_pathoutput_formatsresearch_moderesearch_requirementssearch_backendexternal_api_keyrequire_open_linkdownload_opened_literaturetranscription_languageoutput_langinput_pathPath to exactly one supported input file.
output_formatsOne format or comma-separated formats supported by report-export, for example:
mdmd,pdfmd,docx,pdf,pptxresearch_modeControls how many literature items the research stage will search for and open. This is the primary token-cost lever for the pipeline.
Expected values:
simple — few papers. For focused, well-scoped topics where a small number of highly relevant papers are sufficient.medium — moderate papers. For topics that require broader coverage or moderate exploration. This is the default.complex — many papers. For topics that span multiple sub-areas, involve cross-domain context, or require comprehensive literature mapping.The exact paper count range for each mode is defined in
config/research_pipeline.envas theRESEARCH_MODE_*_MIN_OPENED/RESEARCH_MODE_*_MAX_OPENEDvariables. Edit those variables to customize the default ranges.
This is a required parameter. The pipeline will not proceed without it.
The mode is translated into runtime config values (MIN_OPENED_PAPERS, OPEN_TOP_K, MIN_RECENT_PAPERS) and written to config/research_pipeline.env before the research stage begins.
research_requirementsOptional extra research instructions that should shape the downstream research stage. Examples:
search_backendOptional override for the research backend. Expected values:
autoexternalcursorIf omitted, downstream research should use its normal default behavior.
external_api_keyOptional external search API key, only relevant when an external backend is requested or available.
require_open_linkOptional boolean-like setting for the research stage. Expected values:
truefalsedownload_opened_literatureOptional boolean-like setting for the research stage. Expected values:
truefalsetranscription_languageThe language of the audio/video source content, used to guide Whisper transcription.
This parameter is only relevant when the input is an audio or video file. It tells the speech recognition system what language to expect, which directly affects transcription accuracy.
Expected values:
en — Englishzh — Chinese (Simplified)zh-TW — Chinese (Traditional)ja — Japaneseko — KoreanIf omitted, the downstream audio/video grounding skill defaults to en.
output_langThe language for the final export products (PDF, DOCX, PPTX, etc.).
This parameter controls the language of the exported report only. It has no effect on intermediate pipeline artifacts (grounded.md, lit.md, summary.md, research_report.md, review_report.md), which are always written in English.
Expected values:
en — English (default)zh — Chinese (Simplified)If omitted, defaults to en.
If the user provides a URL instead of a local file path:
remote-input skill first to download the remote contentinput_path for the rest of the pipelinemerge_failed: true, use audio_path instead of pathmeeting-audio-grounding, video file → meeting-video-grounding)| URL Type | Download Target | Local Extension |
|---|---|---|
https://arxiv.org/abs/... | .pdf | |
https://arxiv.org/pdf/... | .pdf | |
https://www.youtube.com/watch?v=... | Video | .mp4/.mkv |
https://youtu.be/... | Video | .mp4/.mkv |
User provides: https://arxiv.org/abs/2301.07041
↓
┌───────────────────────┐
│ remote-input skill │
│ (downloads PDF to │
│ data/raw_inputs/ │
│ remote/arxiv/) │
└───────────────────────┘
↓
Returns: data/raw_inputs/remote/arxiv/2301.07041.pdf
↓
Continue with normal pipeline
(input-router → document-grounding → ...)User provides: https://youtube.com/watch?v=xxx
↓
┌───────────────────────┐
│ remote-input skill │
│ (downloads video, │
│ merge may fail) │
└───────────────────────┘
↓
Returns: {
"path": "video.mp4", // video without audio
"audio_path": "audio.webm", // separate audio file
"merge_failed": true
}
↓
Since merge_failed=true, use audio_path
↓
Route to meeting-audio-grounding
(not meeting-video-grounding)By default, this skill must reuse the existing input-router skill and therefore follow the current extension-based routing behavior.
That means the input should normally be routed strictly by extension through:
input-routerwhich will dispatch to the correct existing grounding skill.
.txtThere is only one allowed exception.
If the user explicitly states that a .txt file is an already-transcribed meeting transcript, then this skill may bypass the normal .txt -> document-grounding route and instead apply:
meeting-groundingThis exception should be used only when the user explicitly says so.
Do not infer meeting-transcript status from filename patterns or directory names alone.
When the input is an audio or video file, the transcription_language parameter must be passed to the downstream audio/video grounding skill to guide Whisper transcription.
The transcription_language parameter is only relevant for audio/video inputs. It has no effect on document, PPTX, or table inputs.
Immediately after grounding completes, check for multi-topic structure before ANY downstream work:
→ Continue downstream execution in the current context.
→ STOP. You MUST use the Task tool NOW to create independent subagent branches for each topic child.
Do not attempt to run research or downstream stages in the parent/main context when multi-topic structure exists.
See the Subagent Rule for Multi-Topic Meetings section below for the required Task tool invocation pattern.
This skill must follow this workflow.
Collect:
input_pathoutput_formatsresearch_mode (required; one of simple / medium / complex)transcription_language (if provided by user; defaults to en)output_lang (if provided by user; defaults to en)Normally:
input-routerSpecial case:
.txt file is an already-transcribed meeting transcript, directly apply meeting-groundingThe task is not complete after naming the selected skill. Grounding must actually finish. Do not stop after planning the pipeline, identifying the correct skills, or describing what should be done next.
When invoking input-router for audio or video input, always pass transcription_language (from user settings, default en) so that the downstream audio/video grounding skill can guide Whisper transcription accurately.
After grounding is complete, determine what should continue into research.
Every downstream stage in the pipeline must reuse the same ground_id that was generated at the grounding stage. This ensures all artifacts for the same input belong to the same pipeline run.
How to get the ground_id:
Read ground_id.txt from the grounding bundle:
data/grounded_notes/<ground_id>/ground_id.txtThe file contains exactly one line: the ground_id string (e.g. pdf-paper_name_20260410153022).
Do NOT generate a new ground_id in downstream stages. All downstream directories reuse the same ground_id:
data/lit_inputs/<ground_id>/
data/lit_downloads/<ground_id>/
data/lit_results/<ground_id>/
data/report_inputs/<ground_id>/
data/review_outputs/<ground_id>/
data/reports/<ground_id>/
data/final_outputs/<ground_id>/For a standard single-unit grounding result, grounding counts as complete only if the grounded note exists at:
data/grounded_notes/<ground_id>/grounded.mdDo not treat an alternative temporary path, scratch path, or non-canonical location as sufficient completion if the canonical grounded note has not been written.
For a multi-topic meeting grounding result, grounding counts as complete only if all of the following canonical artifacts exist under the same parent grounded unit root:
data/grounded_notes/<ground_id>/grounded.mddata/grounded_notes/<ground_id>/topic_manifest.jsondata/grounded_notes/<ground_id>/child_outputs/topic_xx/grounded.md for each topic child that is expected to continue downstreamDo not treat the meeting as properly grounded if only non-canonical child files exist somewhere else.
If grounding produces multiple child grounded items for separate downstream work, each child grounded note must also exist at its canonical downstream path under the parent grounded root before downstream research begins.
Grounding is not complete merely because a grounding skill was invoked or because some grounded-like file exists somewhere on disk. The canonical downstream grounded artifacts must actually be written.
If the grounding output corresponds to one grounded unit, continue with that single grounded unit.
If the meeting grounding output includes:
topic_manifest.jsonchild_outputs/topic_xx/grounded.mdthen treat each child topic grounded note as an independent downstream grounded unit.
In this case, do not collapse the meeting back into one mixed downstream report.
If grounding clearly produces multiple child grounded items that are intended for separate downstream work, then continue downstream per child grounded unit, not only at the parent level.
⚠️ This is a human-in-the-loop checkpoint. It must be executed before any research begins.
After all grounded unit(s) are identified, and before launching any research subagent (multi-topic) or running research directly (single-topic), you must:
For each grounded unit (single or multi-topic), read its grounded.md and extract:
Search Keywords if presentThen generate three query groups per grounded unit:
Display the query candidates in a structured, readable format. Group by grounded unit (especially for multi-topic). Explain what each query group is for.
Example single-topic display:
Based on your input, I have generated the following search keywords for literature research:
【Problem / Background Direction (problem_queries)】
1. "xxx"
2. "yyy"
【Method / Solution Direction (method_queries)】
1. "zzz"
2. "www"
【Constraint / Risk Direction (constraint_queries)】
1. "vvv"
Please confirm:
- Press Enter to continue with the above keywords
- Or tell me what you want to add, remove, or adjustExample multi-topic display:
The following topics were found. Preparing for literature research:
[Topic 1: xxx]
problem_queries: ["aaa", "bbb"]
method_queries: ["ccc"]
constraint_queries: ["ddd"]
[Topic 2: yyy]
problem_queries: ["eee", "fff"]
method_queries: ["ggg"]
constraint_queries: ["hhh"]
Please confirm each topic, or tell me in one message which topic(s) you want to modify and what changes you would like.Stop execution and wait for the user's response.
Interpret the user's response as follows:
| User response | Action |
|---|---|
| "continue" / "ok" / "looks good" | Use all query groups as-is |
| Specific additions | Append the new queries to the indicated group(s) |
| Specific deletions | Remove the indicated queries |
| Specific replacements | Substitute the indicated queries |
| Mixed feedback | Apply all changes, then continue |
After the user confirms (with or without modifications), store the confirmed queries:
data/lit_inputs/<topic_ground_id>/queries_confirmed.jsondata/lit_inputs/<ground_id>/queries_confirmed.jsonFormat:
{
"ground_id": "<ground_id>",
"problem_queries": ["query string 1", "query string 2"],
"method_queries": ["query string 1"],
"constraint_queries": ["query string 1"]
}⚠️ Before any research begins, write the mode-specific runtime values to
config/research_pipeline.env.
Read the current RESEARCH_MODE_* preset values from config/research_pipeline.env, then write the runtime variables based on research_mode:
# Example for research_mode=medium:
RESEARCH_MODE=medium
MIN_OPENED_PAPERS=6
OPEN_TOP_K=3
MIN_RECENT_PAPERS=4This ensures grounded-research-lit reads the correct thresholds when it runs source config/research_pipeline.env.
queries_confirmed.jsongrounded-research-lit directly, passing the path to queries_confirmed.jsonFor every grounded unit selected in Step 3 — whether there is only one grounded unit or multiple topic child units — this skill must require the downstream stages to be executed strictly according to the downstream skill contracts, not in a shortened, approximate, or weakly summarized form.
This rule applies equally to:
For each grounded unit, this top-level orchestration must ensure that:
grounded-research-lit is actually executed with its full artifact, opening, note-building, and literature-writing requirementsgrounded-summary is actually executed as the main evidence-rich report-drafting stage rather than a short recapgrounded-review is actually executed as the final review / refinement / quality-gating stage — with dedicated reviewer and writer subagents via Task tool, bounded repair rounds (initial + up to 5 rounds), explicit rubric scoring, hard-gate enforcement, and reviewer_independence recorded in review_state.json — rather than a superficial cleanup pass, a monolithic parent-context review, or a repair step that was diagnosed but never executedreport-export is actually executed from the final reviewed report rather than from an earlier intermediate draftDo not allow a grounded unit to pass downstream merely because some artifact file exists if the produced content is visibly much thinner, more abbreviated, or more weakly structured than the downstream skill contract requires.
Examples of unacceptable weak execution include:
used_reviewer_role === true / used_writer_role === true recorded in review_state.json; examples include:Task tool call for reviewer)verdict === "repair" was diagnosed but the writer subagent was never launched (no Task tool call for writer)research_report.md was finalized with a pending repair verdictreviewer_independence === "unknown" indicating no dedicated reviewer was usedIf the output of a downstream stage is clearly inconsistent with the intended depth or structure required by that stage's own skill, treat that stage as not properly completed.
⚠️ IMPORTANT: This section works in conjunction with the PARENT AGENT SUBAGENT ISOLATION RULES section at the top of this document. Read both sections together.
If a meeting grounding result contains multiple topic child grounded notes, this skill must require topic-isolated downstream execution for research and summary stages.
For each topic child grounded note:
Each topic requires two sequential subagent branches:
Perform:
grounded-research-litdata/lit_results/<ground_id>/lit.mdAfter the subagent completes research and writes lit.md, do NOT have the subagent proceed to summary/review/export. The research subagent's task ends after lit.md is written.
Perform:
grounded-summarygrounded.md and lit.md produced by Branch 1lit.md paper analysis bodies verbatim into Section 4.1, complete the verification checklist before proceedingdata/report_inputs/<ground_id>/summary.mdThe summary subagent is fully responsible for Two-Phase execution fidelity. The parent cannot enforce this if the subagent skips Phase 1 verification — so the subagent must be explicitly instructed to do it.
After the subagent completes summary and writes summary.md, do NOT have the subagent proceed to review/export. The summary subagent's task ends after summary.md is written.
After both research and summary subagents complete for all topic children, the parent agent should:
lit.md and summary.md both exist at their canonical paths
b. Execute grounded-review using reviewer/writer subagents via Task tool with the bounded repair loop (initial review + up to 5 repair rounds). The reviewer subagent is loaded via .cursor/agents/reviewer.md, which provides a different model than the writer subagent (loaded via .cursor/agents/writer.md) to maximize reviewer independence.
c. Verify review contract compliance (see below) before proceeding to export
d. Execute report-export for requested formatsSeparating research and summary into dedicated subagents ensures:
review_state.json verdict logicFor each topic child, you MUST use the Task tool with subagent_type="generalPurpose" for both branches.
Use the `.cursor/skills/grounded-research-lit` skill to run literature research.
Input:
- grounded_note_path: data/grounded_notes/<parent_ground_id>/child_outputs/<topic_id>/grounded.md
- ground_id: <topic_ground_id> (e.g., "meeting_001_topic01")
- queries_confirmed_path: data/lit_inputs/<topic_ground_id>/queries_confirmed.json
- transcription_language: [from user settings, default en — only relevant for audio/video source; passed downstream for grounding accuracy]
Research requirements:
- [copy from user's research requirements]
Search settings:
- search_backend: [from user settings]
- require_open_link: [from user settings]
- download_opened_literature: [from user settings]
- research_mode: [from user settings — simple / medium / complex; determines MIN_OPENED_PAPERS, OPEN_TOP_K, MIN_RECENT_PAPERS via config]
Confirmed queries: The user has reviewed and confirmed the search queries. Use the queries from data/lit_inputs/<topic_ground_id>/queries_confirmed.json directly — do NOT regenerate queries or ask the user again. Write queries.json from the confirmed file, then proceed to execute research.
Language requirement: ALL output content MUST be in English only (this applies to all intermediate artifacts; `transcription_language` above only affects upstream audio/video transcription accuracy, not this stage's output language).
IMPORTANT — Tools to use:
- When search_backend is "cursor", you MUST use the WebSearch and WebFetch tools directly
- DO NOT use MCP browser tools (ListMcpResources, browser_* tools) — these are not for literature research
- DO NOT try to call Python search scripts — those are for external API backend only
- web_search_reader.py is only for external backend
IMPORTANT: After completing research and writing the lit.md file, your task is complete. Do NOT proceed to summary, review, or export stages. The parent agent will handle those stages.
IMPORTANT: Your final response MUST end with this block (do not omit it):
{
"subagent_claims_complete": true,
"artifact_written": "data/lit_results/<ground_id>/lit.md",
"lines_written": <actual line count of lit.md>,
"round": 0,
"completion_verified_by_subagent": true
}Use the `.cursor/skills/grounded-summary` skill to produce the report draft.
Input:
- grounded_note_path: data/grounded_notes/<parent_ground_id>/child_outputs/<topic_id>/grounded.md
- lit_result_path: data/lit_results/<topic_ground_id>/lit.md
- ground_id: <topic_ground_id> (e.g., "meeting_001_topic01")
- transcription_language: [from user settings, default en — only relevant for audio/video source; passed downstream for grounding accuracy]
IMPORTANT — Language rule:
ALL output content MUST be in English only. The `transcription_language` parameter above only affects upstream audio/video transcription accuracy — this stage always outputs English.
IMPORTANT — Two-Phase Execution:
You must follow the Two-Phase Execution Model in grounded-summary/SKILL.md strictly:
Phase 1 — Literal Copy (Section 4.1):
1. Read lit.md
2. Locate "## Detailed Analysis of Opened Papers" and "## Newly Strengthened / Newly Added Papers from Downloaded PDFs"
3. Copy both sections verbatim into Section 4.1 of summary.md
4. Do NOT paraphrase, condense, or rewrite during Phase 1
5. Run the Phase 1 Verification Checklist:
- All opened papers present in Section 4.1? (count match vs lit.md)
- All PDF-refined papers present? (count match vs lit.md)
- Paper body word count >= 90% of lit.md per paper?
- Subsection structure (Problem/Method/Evidence/Relevance/Limits) preserved?
- Wording identical to lit.md, not paraphrased?
6. If any check fails, go back and fix Section 4.1 before proceeding
Phase 2 — Thematic Synthesis (all other sections):
7. Write Sections 1, 2, 3, 4.2, 5, 6, 7, 8
8. Phase 2 references Phase 1 but does not modify it
Output:
- data/report_inputs/<ground_id>/summary.md
IMPORTANT: After completing summary and writing the summary.md file, your task is complete. Do NOT proceed to review or export stages. The parent agent will handle those stages.
IMPORTANT: Your final response MUST end with this block (do not omit it):
{
"subagent_claims_complete": true,
"artifact_written": "data/report_inputs/<ground_id>/summary.md",
"lines_written": <actual line count of summary.md>,
"round": 0,
"completion_verified_by_subagent": true
}Important:
After each grounded-review execution, before proceeding to report-export, the parent agent must verify review_state.json against this checklist. If any check fails, the review is incomplete — re-execute the review properly before exporting.
| Check | Required value | If fails |
|---|---|---|
used_reviewer_role | true | Re-launch reviewer subagent via Task tool |
reviewer_agent_path | not null | Ensure reviewer reads .cursor/agents/reviewer.md |
reviewer_independence | high or limited (not unknown) | Re-execute reviewer via Task tool |
reviewer_model_hint | not inherit or unknown | The reviewer subagent must be launched with the agent role declaration block — this triggers Cursor's auto-matching to load .cursor/agents/reviewer.md and its configured model |
verdict | pass or repair | Review incomplete |
If verdict == "repair" and round < 2 | used_writer_role === true | Re-launch writer subagent via Task tool, then re-review |
| All 6 rubric scores present | scores object has all 6 dimensions | Re-execute reviewer |
weighted_total | consistent with score formula | Re-execute reviewer |
round_<N>/ directory exists for each completed round | Each round's files in its own round_<N>/ | Review incomplete — reorganize files into round_<N>/ |
review_history.json exists and covers all rounds | History matches each round_<N>/review_state.json | Review incomplete — rebuild review_history.json |
Historical round_<N>/ directories were never overwritten | Only new round_<N+1>/ created; existing rounds unchanged | Review incomplete — restore from backup |
The presence of review_report.md and research_report.md on disk does not mean the review was properly executed. Only the metadata fields in review_state.json are authoritative for contract compliance.
If verdict == "repair" and used_writer_role == false, do NOT proceed to export. Re-launch the writer subagent and complete the bounded repair loop first.
For multi-topic downstream execution, it is not enough to merely claim that topics were handled separately.
The run must be able to state:
If dedicated branch creation did not occur, or if the summary subagent skipped Phase 1 verification, the corresponding multi-topic workflow stage should be treated as failed or incomplete.
Some research-stage controls are implemented as global runtime configuration values rather than prompt-only instructions.
For any user-provided setting that affects the research stage global behavior, this skill must ensure that the effective runtime configuration is updated before invoking grounded-research-lit.
This includes, when provided by the user:
research_modesearch_backendexternal_api_keyrequire_open_linkdownload_opened_literatureIf the downstream research workflow reads these values from a shared config file such as:
config/research_pipeline.envthen this skill must:
research_mode to configFor research_mode, look up the corresponding values from the mode preset table in config/research_pipeline.env and write them to the runtime variables before any research subagent is launched:
| mode | write RESEARCH_MODE=<mode> | then set runtime vars to |
|---|---|---|
simple | RESEARCH_MODE=simple | _SIMPLE_ preset values |
medium | RESEARCH_MODE=medium | _MEDIUM_ preset values |
complex | RESEARCH_MODE=complex | _COMPLEX_ preset values |
Specifically, write these lines to config/research_pipeline.env (in addition to preserving existing non-mode variables):
RESEARCH_MODE=<mode>
MIN_OPENED_PAPERS=<preset_MIN_OPENED>
OPEN_TOP_K=<preset_OPEN_TOP_K>
MIN_RECENT_PAPERS=<preset_MIN_RECENT>Example for research_mode=medium:
RESEARCH_MODE=medium
MIN_OPENED_PAPERS=6
OPEN_TOP_K=3
MIN_RECENT_PAPERS=4This must happen before grounded-research-lit is invoked, so that the skill's source config/research_pipeline.env call reads the correct values.
Prompt-level instructions alone are not sufficient when a downstream stage depends on runtime config.
Do not merely mention, forward, or restate user research settings in natural language if the actual downstream execution depends on a config file or environment-backed control. The settings must be made effective in the runtime configuration used by the current run.
A research setting counts as applied only if both are true:
If a requested config-backed setting cannot be applied, fail clearly or report that the setting was not honored.
This top-level orchestration skill must respect the backend-specific completion rules of grounded-research-lit.
If the actual research backend is external:
If the actual research backend is cursor:
MIN_OPENED_PAPERS unique relevant literature itemsopened_sources/prepare_opened_paper_notes.py and produce:opened_paper_notes.jsonlopened_paper_notes/DOWNLOAD_OPENED_LITERATURE=true, the Cursor-native branch must also successfully download at least MIN_OPENED_PAPERS unique relevant literature items, or explicitly report why this target could not be reached after continued search/open/download attemptsgrounded-summary, the parent/main agent must explicitly verify the opened-paper count from search_results.json and opened_sources/ rather than relying only on stage self-reportis_research_literature == trueopened == trueopen_status == "success"opened_source_path is present in search_results.jsonopened_source_path actually exists on disk under data/lit_inputs/<ground_id>/opened_sources/$MIN_OPENED_PAPERS ruleMIN_OPENED_PAPERS, do not move to grounded-summary; the research stage must continue or fail clearlygrounded-summary until these research-stage artifact and sufficiency conditions have been satisfiedThis orchestration skill must preserve the intended depth of the pipeline.
That means:
grounded-research-lit is expected to produce a substantial literature analysis rather than a thin search recapgrounded-summary is expected to produce the main evidence-rich report draft for the grounded unitgrounded-review is expected to perform final review, refinement, evidence alignment, overclaim control, and detail restoration when neededreport-export is expected to export the reviewed report without materially compressing itDo not frame grounded-summary as a short memo stage when invoking it from this top-level workflow.
Do not frame grounded-review as a second summarization pass. It is a reviewer/writer subagent loop with bounded repair rounds and explicit verdict scoring.
Do not instruct downstream stages to shrink detailed literature analysis into a minimal bullet recap.
For each grounded unit, the downstream flow must preserve and integrate:
The final report should be a substantial, well-organized report, not a compressed note.
If a downstream artifact exists but the content is conspicuously too brief, too generic, or too weakly structured relative to the downstream skill's expected behavior, do not treat that stage as successfully executed just because a file was written.
In particular:
grounded-research-lit was not followed strictly enoughgrounded-summary was not followed strictly enough (also check: did the Phase 1 literal copy of lit.md paper analysis bodies into Section 4.1 complete with the required verification? Was Section 4.1 word count approximately preserved vs lit.md? Were all papers from lit.md included?)grounded-review was not followed strictly enough (also check: did it use reviewer/writer subagents via Task tool? did it go through the bounded repair loop? did review_state.json record used_reviewer_role: true?)The top-level orchestration must prefer faithful stage execution over merely obtaining minimal placeholder artifacts.
For each grounded unit selected in Step 3, reuse the existing downstream skills in order.
Apply:
grounded-research-litusing the grounded unit as input and the user-confirmed queries from queries_confirmed.json.
Pass along:
data/lit_inputs/<ground_id>/queries_confirmed.json — the grounded-research-lit skill should read queries from this file instead of generating its ownresearch_requirementssearch_backendexternal_api_keyrequire_open_linkdownload_opened_literature⚠️ Single-topic: After Step 3B completes, the confirmed queries file already exists. Pass
queries_confirmed_pathtogrounded-research-litso it uses the confirmed queries directly without re-generating or re-asking.
The top-level workflow must also enforce the backend-specific research sufficiency rule:
external, do not require a fixed minimum download countcursor, do not allow research to finish unless at least MIN_OPENED_PAPERS unique relevant literature items were searched/opened/read and the expected opened-source / paper-note artifacts were producedcursor, the parent/main agent must explicitly verify the minimum-$MIN_OPENED_PAPERS opened count from local artifacts before allowing the pipeline to proceed to grounded-summarycursor and DOWNLOAD_OPENED_LITERATURE=true, do not allow research to finish unless at least MIN_OPENED_PAPERS unique relevant literature items were successfully downloaded, or the run explicitly reports why this target could not be reached after continued search/open/download attemptsApply:
grounded-summaryusing the grounded note and the literature result from the current grounded unit.
grounded-summary is the main report-drafting stage.
It should produce the primary evidence-rich report draft for the grounded unit.
It must preserve relevant literature depth and integrate it into the report body rather than compressing it into a shallow memo.
It must be executed according to the full grounded-summary skill expectations even when the current run is only a single-topic case.
Apply:
grounded-reviewusing the current grounded unit's:
grounded-review is the final refinement, verification, and quality-gating stage.
CRITICAL: This stage must be executed using reviewer and writer subagents via Task tool, not as a single monolithic pass in the parent context.
The required execution pattern is:
Launch reviewer subagent via Task tool to score, diagnose, and produce repair actions. The reviewer prompt must start with the agent role declaration block to trigger Cursor's agent auto-matching:
---
You are operating as the **REVIEWER AGENT** (grounded-review-reviewer).
Read and follow .cursor/agents/reviewer.md now to load your reviewer configuration and model.
---This loads .cursor/agents/reviewer.md, which provides the dedicated reviewer model (configured in the agent file frontmatter) and the full reviewer role definition.
Parent agent creates round_<N>/ directory and persists review_report.md and review_state.json to data/review_outputs/<ground_id>/round_<N>/
Parent agent waits for reviewer's completion signal block in transcript before proceeding
The reviewer subagent's final response must include:
{
"subagent_claims_complete": true,
"artifact_written": "data/review_outputs/<ground_id>/round_<N>/review_state.json",
"lines_written": <N>,
"round": <current round>,
"completion_verified_by_subagent": true
}If verdict is repair and round < 2: launch writer subagent via Task tool to apply repairs. The writer prompt must start with the agent role declaration block:
---
You are operating as the **WRITER AGENT** (grounded-review-writer).
Read and follow .cursor/agents/writer.md now to load your writer configuration.
---This loads .cursor/agents/writer.md, which provides the writer role definition.
Parent agent waits for writer's completion signal block in transcript before proceeding
The writer subagent's final response must include:
{
"subagent_claims_complete": true,
"artifact_written": "data/reports/<ground_id>/research_report.md",
"lines_written": <N>,
"round": <current round>,
"completion_verified_by_subagent": true
}Parent agent archives the current round: if round > 0, ensure round_<N>/ is intact (immutable)
Launch reviewer subagent again to re-check the revised draft (round + 1). Use the same reviewer prompt template with the agent role declaration block.
Parent agent creates round_<N+1>/ directory and persists the new review_report.md and review_state.json
Repeat steps 3–8 for at most 5 repair rounds
Only after reviewer passes (or loop is exhausted): update review_history.json, update root-level review_report.md and review_state.json (symlinks/copies), and finalize research_report.md
The review stage must produce the final reviewed report. review_state.json must record used_reviewer_role: true and used_writer_role: true if the subagent loop was properly executed.
Agent model separation summary:
.cursor/agents/reviewer.md → model is whatever model field is in reviewer.md frontmatter (dedicated, different from writer).cursor/agents/writer.md → model is whatever model field is in writer.md frontmatter (typically inherit)Apply:
report-exportusing the final reviewed report from the current grounded unit, the user-requested output_formats, and the output_lang parameter.
When data/reports/<ground_id>/research_report.md exists, export must use that final reviewed report rather than an earlier draft such as summary.md.
When output_lang is not en, the Agent must translate the English report into the target language before exporting. Perform the translation by reading the report content and writing a translated markdown version, then use that translated file for all format exports. All markdown structure (headings, tables, code fences, links, formatting) must be preserved during translation.
The final content truth source for each grounded unit remains:
data/reports/<ground_id>/research_report.mdThis skill must not redefine the truth source.
Export should happen after review, not before.
All intermediate artifacts produced by the pipeline must be written in English only, regardless of the output_lang setting:
grounded.mdlit.mdsummary.mdresearch_report.mdreview_report.mdWhen invoking any downstream skill or subagent for grounding, research, summary, or review, always include this instruction:
Language requirement: ALL output content MUST be in English only.
- Write all headings in English
- Write all body text in English
- Do not mix languages within the same document
- If the source material is in another language, translate/summarize the key content into Englishoutput_langThe output_lang parameter controls the language of the final export products only (e.g., PDF, DOCX, PPTX).
It has no effect on any intermediate pipeline artifacts.
The default export language is English (en).
| Parameter | Scope | Purpose |
|---|---|---|
transcription_language | Audio/video grounding | Guides Whisper transcription |
output_lang | Export stage only | Controls final export language |
These two parameters are independent and serve different purposes.
The audio export format is always narrated in English, regardless of the output_lang setting. This is because audio narration synthesizes the report content directly, and the audio backend is configured for English speech synthesis. Do not apply output_lang translation to the audio format.
At the end, this skill must clearly report:
cursor, the explicitly verified opened-paper count used by the parent/main agentFor multi-topic meetings, the final report must make clear that multiple topic branches were processed separately.
This version is intended for:
This version is not intended to implement:
A stage counts as complete only if its expected output artifact has actually been written to the correct path.
Examples:
research_report.md existsStating that a stage was invoked, planned, or requested is not enough.
For this top-level skill, artifact existence is a necessary condition but not always a sufficient quality condition. If the produced artifact is materially inconsistent with the required depth or structure of the downstream skill that produced it, the stage should be treated as not properly completed.
For grounding specifically, artifact existence means the canonical downstream grounded artifacts exist at the required locations, not merely that some grounded-like file was written somewhere else.
input_path is missing, fail clearly.When reviewer_api_config is provided in the one-report invocation, the review stage uses the external LLM API as the reviewer for all rounds of the bounded loop — not just the first round. The external API replaces the local Cursor reviewer subagent for every round (Round 0, Round 1, ..., Round N) until the report passes or the loop is exhausted.
This is useful when you want to:
reviewer_api_config:
provider: # Required. External LLM provider type
type: string
enum: [openai, gemini]
description: |
"openai" - OpenAI-compatible API (supports official OpenAI, vLLM, third-party proxies)
"gemini" - Gemini API (supports JD Cloud Gemini, Google Gemini API)
model: # Required. Model identifier
type: string
description: "Specific model ID (e.g., gpt-4o, gpt-4o-mini, Gemini-3-Flash-Preview)"
api_key: # Optional. Direct API key
type: string
description: "API key for authentication. Takes precedence over api_key_env."
api_key_env: # Optional. Environment variable name
type: string
description: "Environment variable containing the API key (alternative to api_key)"
base_url: # Optional. Custom API endpoint
type: string
description: "Override the default API endpoint. Useful for proxies or custom deployments."
temperature: # Optional. Default: 0.3
type: number
description: "Temperature for review generation (recommend 0.1-0.3)"
max_tokens: # Optional. Default: 4096
type: integer
description: "Maximum tokens in response"
fallback_to_local: # Optional. Default: true
type: boolean
description: "If external API call fails on Round N, fall back to local Cursor reviewer for that round only. Subsequent rounds continue using external API unless all retries are exhausted."At least one of api_key or api_key_env must be provided.
| Provider | Default Endpoint | Notes |
|---|---|---|
| openai | https://api.openai.com/v1/chat/completions | OpenAI-compatible APIs |
| gemini | https://generativelanguage.googleapis.com/v1beta/models | JD Cloud / Google Gemini |
When reviewer_api_config is provided, the external API is the reviewer for every round of the bounded loop:
grounded.md + lit.md + summary.mdresearch_report.md + previous round_<N-1>/review_report.md + repair actions contextcall_ext_api.py via Shell tool with system prompt (from .cursor/agents/reviewer.md) + user promptround_<N>/ directoriesreviewer_independence: "high" and reviewer_agent_path: null (external mode)Task tool, then loops back to step 2 with updated research_report.mdWhen reviewer_api_config is NOT provided:
Task tool for all roundsreviewer_api_config:
provider: openai
model: gpt-4o
api_key_env: OPENAI_API_KEY
temperature: 0.2reviewer_api_config:
provider: openai
model: gpt-4o-mini
api_key: "sk-xxxxx"
base_url: "https://api.gptplus5.com/v1"
temperature: 0.2reviewer_api_config:
provider: gemini
model: Gemini-3-Flash-Preview
api_key_env: GEMINI_API_KEY
base_url: "https://modelservice.jdcloud.com/v1"
temperature: 0.2reviewer_api_config:
provider: gemini
model: gemini-2.5-pro-preview-03-12
api_key_env: GOOGLE_API_KEY
temperature: 0.2Use the existing `.cursor/skills/one-report/` skill to generate a full report.
Input:
- input_path: data/raw_inputs/docs/example.pdf
- research_mode: medium
Research requirements:
- focus on technical contribution, evidence strength, limitations, and concrete next steps
- require opened-link reading
- preserve literature depth in the report body
Search settings:
- search_backend: auto
- download_opened_literature: false
Output:
- output_formats: md,pdf,pptx
Language requirement: ALL output content MUST be in English only.Use the existing `.cursor/skills/one-report/` skill to generate a full report.
Input:
- input_path: https://arxiv.org/abs/2301.07041
- output_formats: md,pdf
- research_mode: medium
Research requirements:
- focus on technical contribution, evidence strength, limitations
The skill will:
1. Download the arXiv paper PDF via remote-input skill
2. Continue with document-grounding pipelineUse the existing `.cursor/skills/one-report/` skill to generate a full report.
Input:
- input_path: https://www.youtube.com/watch?v=dQw4w9WgXcQ
- output_formats: md,pdf
- research_mode: medium
Research requirements:
- focus on key insights and technical details
The skill will:
1. Download the YouTube video via remote-input skill
2. Continue with meeting-video-grounding pipelineUse the existing `.cursor/skills/one-report/` skill to generate a full report.
Input:
- input_path: data/raw_inputs/docs/example.pdf
- research_mode: medium
Research requirements:
- focus on technical contribution, evidence strength, limitations, and concrete next steps
Output:
- output_formats: md,pdf
Reviewer:
- provider: openai
- model: gpt-4o
- api_key_env: OPENAI_API_KEY
- temperature: 0.2Use the existing `.cursor/skills/one-report/` skill to generate a full report.
Input:
- input_path: data/raw_inputs/meeting.pdf
- research_mode: medium
Output:
- output_formats: md
Reviewer:
- provider: gemini
- model: Gemini-3-Flash-Preview
- api_key_env: GEMINI_API_KEY
- base_url: "https://modelservice.jdcloud.com/v1"
- temperature: 0.2Use the existing `.cursor/skills/one-report/` skill to generate a full report.
Input:
- input_path: data/raw_inputs/meeting.pdf
- research_mode: medium
Output:
- output_formats: md
Reviewer:
- provider: openai
- model: gpt-4o-mini
- api_key: "sk-xxxxx"
- base_url: "https://api.custom-proxy.com/v1"
- temperature: 0.2Use the existing `.cursor/skills/one-report/` skill to generate a full report.
Input:
- input_path: data/raw_inputs/transcripts/example.txt
- research_mode: simple
This txt file is an already-transcribed meeting transcript. Treat it as meeting input rather than a general document.
Output:
- output_formats: md,pdf© gaotiexinqu, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .cursor/skills/one-report of gaotiexinqu/OneResearchClaw.
Open the folder on GitHubat commit 37e86c6
One Report next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| One Report this skillgaotiexinqu/OneResearchClaw | 450 | — | ~17k | Automated safety check: Pass | MIT | |
| MCP Server Builderanthropics/skills | 180k | 63 repos | ~2.3k | Automated safety check: Pass | Apache-2.0 | |
| Hook Development for Claude Code Pluginsanthropics/claude-plugins-official | 38k | 10 repos | ~4.1k | Automated safety check: Notes | Apache-2.0 | |
| Using Superpowersfarm-fe/farm | 5.6k | 36 repos | ~1.4k | Automated safety check: Pass | MIT | |
| Executing Plans Inlineobra/superpowers | 297k | 2 repos | ~5.1k | Automated safety check: Pass | MIT | |
| Skill CreatorAzure/azqr | 796 | 89 repos | ~8.2k | Automated safety check: Pass | Apache-2.0 |
anthropics/skills
Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.
anthropics/claude-plugins-official
Explains how to write Claude Code plugin hooks, both prompt-based checks and bash commands, for events such as PreToolUse, Stop and SessionStart.
farm-fe/farm
A skill your agent uses when starting any conversation - establishes how to find and use skills, requiring Skill tool invocation before ANY response including clarifying questions
obra/superpowers
Has the agent carry out an implementation plan itself, task by task in the current session, keeping a ledger, proving each step with a test and ending with one whole-branch review.
Azure/azqr
Create new skills, modify and improve existing skills, and measure skill performance.
anthropics/claude-plugins-official
Explains how to write agents for Claude Code plugins: the markdown file with YAML frontmatter, trigger descriptions, model and color settings, and system prompt design.
gaotiexinqu/OneResearchClaw
Download remote content (arxiv papers, YouTube videos, Bilibili videos) to local storage and route to downstream grounding pipeline.
gaotiexinqu/OneResearchClaw
Run focused literature and web research from a grounded note.
gaotiexinqu/OneResearchClaw
Unpack a ZIP archive, inventory its files, run the corresponding child grounding skill for each supported child file, and then write a real archive-level grounded.md.
gaotiexinqu/OneResearchClaw
Convert a raw document into a structured grounding note for downstream research and summarization.
gaotiexinqu/OneResearchClaw
Convert a meeting audio file into a transcript bundle, then use meeting-grounding to produce structured meeting grounding outputs.
gaotiexinqu/OneResearchClaw
Convert a meeting video into an audio-first transcript bundle, then use meeting-grounding to produce structured meeting grounding outputs.
Categories
Run the full One-Report pipeline from one input file through grounding, research, evidence-rich report drafting, final review quality-gating, and export, while reusing existing skills, preserving…. One Report is an agent skill from gaotiexinqu/OneResearchClaw. Run the full One-Report pipeline from one input file through grounding, research, evidence-rich report drafting, final review quality-gating, and export, while reusing existing skills, preserving current contracts, and enforcing strict downstream skill fidelity for every grounded unit.
One Report fits situations like: agent Workflows work in your project.
Run `npx skills add gaotiexinqu/OneResearchClaw --skill one-report -a claude-code`. Or copy the skill folder (.cursor/skills/one-report in gaotiexinqu/OneResearchClaw) into .claude/skills/one-report in your project. Claude Code loads it when a task matches its description.
Run `npx skills add gaotiexinqu/OneResearchClaw --skill one-report -a codex`. Or copy the skill folder (.cursor/skills/one-report in gaotiexinqu/OneResearchClaw) into .agents/skills/one-report in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add gaotiexinqu/OneResearchClaw --skill one-report -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/one-report, .gemini/skills/one-report, .github/skills/one-report and .opencode/skills/one-report in your project.
Going by SKILL.md and its folder, One Report needs credentials named OPENAI_API_KEY, GEMINI_API_KEY and GOOGLE_API_KEY.
SKILL.md names 8 domains. In commands or code: arxiv.org, youtube.com, modelservice.jdcloud.com, youtu.be, api.gptplus5.com and api.custom-proxy.com; the agent is likely to contact these when it follows the instructions. As links in the text: api.openai.com and generativelanguage.googleapis.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
One Report is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 17k tokens (SKILL.md is roughly 68k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with One Report: MCP Server Builder (anthropics/skills, 180k stars), Hook Development for Claude Code Plugins (anthropics/claude-plugins-official, 38k stars), Using Superpowers (farm-fe/farm, 5.6k stars) and Executing Plans Inline (obra/superpowers, 297k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
gaotiexinqu (a GitHub user) maintains it in gaotiexinqu/OneResearchClaw, which has 450 GitHub stars. The repository holds 15 skills in this directory. The repository was last updated on May 9, 2026.
Source: gaotiexinqu/OneResearchClaw on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.