open-research 0.1.25 → 0.1.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -18
- package/builtin-skills/novelty-checker/SKILL.md +79 -0
- package/builtin-skills/paper-explainer/SKILL.md +83 -21
- package/builtin-skills/reviewer-response/SKILL.md +99 -0
- package/builtin-skills/skill-creator/SKILL.md +98 -7
- package/dist/chunk-AYB7CAO5.js +128 -0
- package/dist/cli.js +3893 -1895
- package/dist/sessions-FMB5GHSR.js +10 -0
- package/package.json +1 -1
- package/builtin-skills/literature-reviewer/SKILL.md +0 -72
- package/builtin-skills/synthesis-updater/SKILL.md +0 -43
package/README.md
CHANGED
|
@@ -70,7 +70,7 @@ The agent searches arXiv, Semantic Scholar, and OpenAlex — reads papers, runs
|
|
|
70
70
|
|
|
71
71
|
Those are coding agents. Open Research is a **research agent**.
|
|
72
72
|
|
|
73
|
-
It has tools that coding agents don't: federated academic paper search, PDF extraction, source-grounded synthesis, and pluggable research skills (
|
|
73
|
+
It has tools that coding agents don't: federated academic paper search, PDF extraction, source-grounded synthesis, sub-agent delegation, and pluggable research skills (novelty checker, experiment designer, reviewer response manager, etc.).
|
|
74
74
|
|
|
75
75
|
Everything stays local. Your workspace is a directory with `sources/`, `notes/`, `papers/`, `experiments/`. The agent reads and writes to it. Risky edits go to a review queue.
|
|
76
76
|
|
|
@@ -102,17 +102,29 @@ You review the charter and either approve it, send it back for revision, or canc
|
|
|
102
102
|
|
|
103
103
|
**Phase 2 — Execution.** Once approved, the agent executes the charter autonomously — searching papers, reading sources, running analysis code, writing notes, and producing artifacts. It runs until the success criteria are met or it hits a dead end and reports what it found.
|
|
104
104
|
|
|
105
|
+
## Sub-Agents
|
|
106
|
+
|
|
107
|
+
The main agent can delegate exploration tasks to lightweight sub-agents that run on their own context window. This keeps the main agent's context clean and improves token efficiency.
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
launch_subagent(type: "explore", goal: "Find all files related to the auth flow...")
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
The **explore** sub-agent runs on `gpt-5.4-mini` with high reasoning effort. It has read-only tools (`read_file`, `list_directory`, `search_workspace`) and returns a concise, conclusion-oriented summary. The main agent gets the answer without burning its context on raw file reads.
|
|
114
|
+
|
|
115
|
+
Sub-agents are extensible — new types can be added as config entries without changing the tool schema.
|
|
116
|
+
|
|
105
117
|
## Research Skills
|
|
106
118
|
|
|
107
119
|
Skills are pluggable research methodologies — detailed workflow prompts that guide the agent through a specific research task. Type `/<skill-name>` to activate.
|
|
108
120
|
|
|
109
|
-
###
|
|
121
|
+
### Ideation & Discovery
|
|
110
122
|
|
|
111
123
|
| Skill | What it does |
|
|
112
124
|
|---|---|
|
|
125
|
+
| **`/novelty-checker`** | Quick "has this been done?" assessment. Decomposes ideas into technique/domain/claim components, runs 5-8 search variations, and delivers a verdict: Novel, Partially novel, Incremental, or Already done — with closest existing work, white space map, and pivot recommendations. |
|
|
113
126
|
| **`/source-scout`** | Systematically finds papers the workspace is missing. Searches with multiple query variations, evaluates relevance by citation count and venue, fetches key papers, produces a prioritized scout report with gap analysis. |
|
|
114
|
-
| **`/paper-explainer`** |
|
|
115
|
-
| **`/literature-reviewer`** | Produces a structured literature review: inventories all sources, clusters by theme, synthesizes each theme chronologically, maps relationships between papers, performs gap analysis (methodological, empirical, theoretical), and writes the review with optional PRISMA systematic review support. |
|
|
127
|
+
| **`/paper-explainer`** | Two modes: (1) Single paper deep read with structured breakdown including methodological red flags, or (2) Multi-paper comparison table with structured extraction across 6-10 dimensions (Elicit-style) and cross-paper synthesis. |
|
|
116
128
|
|
|
117
129
|
### Critical Evaluation
|
|
118
130
|
|
|
@@ -129,24 +141,28 @@ Skills are pluggable research methodologies — detailed workflow prompts that g
|
|
|
129
141
|
| **`/experiment-designer`** | Autonomous proof engine. Takes a hypothesis and runs the full loop: formalize → design minimal experiment → write code → run it → analyze results → iterate (up to 5x) until proven or disproven. All artifacts saved to `experiments/` with versioned scripts. |
|
|
130
142
|
| **`/data-analyst`** | End-to-end statistical analysis: explore data (distributions, missing values) → clean (with documented decisions) → analyze (appropriate tests, mandatory effect sizes and confidence intervals) → visualize (matplotlib/seaborn) → interpret with honest caveats. |
|
|
131
143
|
|
|
132
|
-
###
|
|
144
|
+
### Writing & Revision
|
|
133
145
|
|
|
134
146
|
| Skill | What it does |
|
|
135
147
|
|---|---|
|
|
136
|
-
| **`/synthesis-updater`** | Living-document management. Integrates new evidence into existing notes with full provenance tracking (`[Source: Author Year]`), confidence labels (`[Strong]`, `[Moderate]`, `[Weak]`, `[Contested]`), change trails, and a synthesis changelog. |
|
|
137
148
|
| **`/draft-paper`** | Drafts a publication-quality LaTeX paper: gathers workspace evidence → outlines the argument → writes each section (intro through conclusion) → generates BibTeX from sources → self-reviews for unsupported claims and argument flow. |
|
|
149
|
+
| **`/reviewer-response`** | Parses peer review comments into numbered items (R1.1, R1.2...), classifies as Major/Minor/Praise/Question, flags contradictions between reviewers, generates a point-by-point response letter with verbatim quotes and specific change locations, and maintains a revision completion checklist. |
|
|
138
150
|
|
|
139
151
|
### Meta
|
|
140
152
|
|
|
141
153
|
| Skill | What it does |
|
|
142
154
|
|---|---|
|
|
143
|
-
| **`/skill-creator`** | Create
|
|
155
|
+
| **`/skill-creator`** | Create custom skills in `~/.open-research/skills/`. Full guidance on the SKILL.md format, directory structure, prompt design, and validation — with quality guidelines for writing effective workflow prompts. |
|
|
144
156
|
|
|
145
157
|
## Memory
|
|
146
158
|
|
|
147
159
|
The agent learns about you automatically. After each conversation, a background process identifies facts worth remembering — your research field, preferred tools, current projects, methodological preferences.
|
|
148
160
|
|
|
149
|
-
Memories
|
|
161
|
+
Memories are stored at two levels:
|
|
162
|
+
- **Global** (`~/.open-research/memory.json`) — your profile, preferences, expertise
|
|
163
|
+
- **Project** (`<workspace>/.open-research/memory.json`) — project-specific context
|
|
164
|
+
|
|
165
|
+
Only relevant memories are injected each turn based on query similarity, keeping the context window efficient.
|
|
150
166
|
|
|
151
167
|
```
|
|
152
168
|
/memory View all stored memories
|
|
@@ -172,7 +188,7 @@ For final PDF output, the agent compiles with `pdflatex` or `tectonic` via `run_
|
|
|
172
188
|
|
|
173
189
|
## Tools
|
|
174
190
|
|
|
175
|
-
The agent has
|
|
191
|
+
The agent has 14 tools with full filesystem and shell access:
|
|
176
192
|
|
|
177
193
|
| Tool | Description |
|
|
178
194
|
|---|---|
|
|
@@ -189,6 +205,7 @@ The agent has 13 tools with full filesystem and shell access:
|
|
|
189
205
|
| `create_paper` | Create LaTeX paper drafts |
|
|
190
206
|
| `load_skill` | Activate a research skill |
|
|
191
207
|
| `read_skill_reference` | Read reference materials from active skills |
|
|
208
|
+
| `launch_subagent` | Delegate tasks to lightweight sub-agents with isolated context |
|
|
192
209
|
|
|
193
210
|
## Commands
|
|
194
211
|
|
|
@@ -200,7 +217,15 @@ The agent has 13 tools with full filesystem and shell access:
|
|
|
200
217
|
| `/skills` | List available research skills |
|
|
201
218
|
| `/preview <file>` | Live-preview a LaTeX file in browser |
|
|
202
219
|
| `/memory` | View or manage stored memories |
|
|
203
|
-
| `/
|
|
220
|
+
| `/api-keys` | Set API keys for Semantic Scholar, OpenAlex |
|
|
221
|
+
| `/config` | View or change settings (model, theme, mode, apikey) |
|
|
222
|
+
| `/compact` | Manually compress conversation to save context |
|
|
223
|
+
| `/cost` | Show token usage and cost for the session |
|
|
224
|
+
| `/context` | Show context window usage — how full it is |
|
|
225
|
+
| `/btw` | Ask a side question without affecting the main conversation |
|
|
226
|
+
| `/export` | Export conversation as markdown |
|
|
227
|
+
| `/diff` | Show files the agent has changed this session |
|
|
228
|
+
| `/doctor` | Diagnose auth, connectivity, and tool availability |
|
|
204
229
|
| `/resume` | Resume a previous session |
|
|
205
230
|
| `/clear` | Start a new conversation |
|
|
206
231
|
| `/help` | Show all commands |
|
|
@@ -214,18 +239,23 @@ my-research/
|
|
|
214
239
|
artifacts/ # Generated outputs
|
|
215
240
|
papers/ # LaTeX paper drafts
|
|
216
241
|
experiments/ # Analysis scripts, results, hypotheses
|
|
217
|
-
.open-research/ # Workspace metadata
|
|
242
|
+
.open-research/ # Workspace metadata, sessions, project memory
|
|
243
|
+
AGENTS.md # Auto-generated project context (injected into system prompt)
|
|
218
244
|
```
|
|
219
245
|
|
|
220
246
|
## Features
|
|
221
247
|
|
|
222
|
-
- **
|
|
223
|
-
- **
|
|
224
|
-
-
|
|
248
|
+
- **Senior research director persona** — concise, conclusion-oriented responses. Findings first, evidence second.
|
|
249
|
+
- **Sub-agent delegation** — explore agent handles codebase navigation on its own context, returns summaries
|
|
250
|
+
- **Terminal markdown** — bold, italic, code blocks, headings rendered natively with chalk
|
|
251
|
+
- **Autocomplete** — slash commands, skills, and @file mentions in a scrollable arrow-key dropdown
|
|
252
|
+
- **Condensed tool activity** — grouped summary per turn instead of per-tool spam, with live progress in footer
|
|
225
253
|
- **Shift+Enter** — multi-line input
|
|
226
|
-
- **
|
|
227
|
-
- **
|
|
228
|
-
- **
|
|
254
|
+
- **Slash command highlighting** — commands appear in blue as you type
|
|
255
|
+
- **Context management** — automatic two-phase compaction at 90% of context window
|
|
256
|
+
- **Token tracking** — context usage visible in the status bar (input/output/reasoning/cache breakdown)
|
|
257
|
+
- **AGENTS.md** — auto-generated project context file, updated after each turn, injected into system prompt
|
|
258
|
+
- **Two-tier memory** — global + project-level, with selective retrieval based on query relevance
|
|
229
259
|
- **Update notifications** — checks for new versions on launch
|
|
230
260
|
|
|
231
261
|
## Development
|
|
@@ -235,7 +265,7 @@ git clone https://github.com/gangj277/open-research.git
|
|
|
235
265
|
cd open-research
|
|
236
266
|
npm install
|
|
237
267
|
npm run dev # dev mode
|
|
238
|
-
npm test #
|
|
268
|
+
npm test # tests
|
|
239
269
|
npm run build # production build
|
|
240
270
|
```
|
|
241
271
|
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: novelty-checker
|
|
3
|
+
description: Quick assessment of whether a research idea has been done before, and what the competitive landscape looks like.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Novelty Checker
|
|
7
|
+
|
|
8
|
+
You are a research landscape analyst. Your job is to take a research idea — often rough and early-stage — and quickly determine whether it's been done, what's close to it, and where the genuine white space is. You help researchers avoid spending weeks on something that already exists.
|
|
9
|
+
|
|
10
|
+
## Workflow
|
|
11
|
+
|
|
12
|
+
### Phase 1: Understand the Idea
|
|
13
|
+
|
|
14
|
+
1. Read the user's input carefully. If it's vague, use `ask_user` to clarify:
|
|
15
|
+
- What specifically are they proposing? (method, finding, application, framework)
|
|
16
|
+
- What domain or field is this in?
|
|
17
|
+
- What makes them think this might be novel?
|
|
18
|
+
2. Decompose the idea into its core components. Most research ideas combine:
|
|
19
|
+
- A **technique** (what approach or method)
|
|
20
|
+
- A **domain** (what field or application area)
|
|
21
|
+
- A **claim** (what result or contribution)
|
|
22
|
+
- Example: "Using transformer attention maps for interpretable medical diagnosis" = technique (attention maps) + domain (medical diagnosis) + claim (interpretability)
|
|
23
|
+
|
|
24
|
+
### Phase 2: Systematic Search
|
|
25
|
+
|
|
26
|
+
Search aggressively using `search_external_sources` with multiple query strategies:
|
|
27
|
+
|
|
28
|
+
1. **Direct match** — search the idea as stated
|
|
29
|
+
2. **Component combinations** — search each pair of components (technique + domain, technique + claim, domain + claim)
|
|
30
|
+
3. **Synonym variations** — replace key terms with synonyms or related concepts (e.g., "interpretable" → "explainable", "medical" → "clinical")
|
|
31
|
+
4. **Broader framing** — search the general area to find survey papers that would mention existing work
|
|
32
|
+
5. **Narrower framing** — search for very specific variants that might be buried in larger papers
|
|
33
|
+
|
|
34
|
+
Run at least 5-8 searches with different query formulations. Cast a wide net.
|
|
35
|
+
|
|
36
|
+
### Phase 3: Assess Each Hit
|
|
37
|
+
|
|
38
|
+
For each relevant paper found:
|
|
39
|
+
1. Read the title and abstract (use `fetch_url` if available as open access)
|
|
40
|
+
2. Determine the overlap:
|
|
41
|
+
- **Direct hit**: this paper does essentially the same thing
|
|
42
|
+
- **Partial overlap**: shares some components but differs meaningfully
|
|
43
|
+
- **Tangential**: related topic but different approach or contribution
|
|
44
|
+
3. Note the year, venue, and citation count — recent work in top venues is more concerning for novelty than old work in minor venues
|
|
45
|
+
|
|
46
|
+
### Phase 4: Deliver the Verdict
|
|
47
|
+
|
|
48
|
+
Write a clear assessment to `notes/novelty-check-{topic}.md`:
|
|
49
|
+
|
|
50
|
+
**Verdict** — one of:
|
|
51
|
+
- **Novel**: No existing work does this. Genuine white space.
|
|
52
|
+
- **Partially novel**: Components exist separately but the specific combination is new. Differentiation needed.
|
|
53
|
+
- **Incremental**: Similar work exists. The idea could still be a paper but needs clear positioning against prior art.
|
|
54
|
+
- **Already done**: This has been published. Cite the existing work and pivot.
|
|
55
|
+
|
|
56
|
+
**Closest existing work** — list the 3-5 most relevant papers:
|
|
57
|
+
- Title, authors, year, venue
|
|
58
|
+
- One sentence on what they did
|
|
59
|
+
- One sentence on how the user's idea differs (or doesn't)
|
|
60
|
+
|
|
61
|
+
**White space map** — what nearby areas are genuinely unexplored:
|
|
62
|
+
- What variations of this idea have NOT been tried?
|
|
63
|
+
- What domains has this technique NOT been applied to?
|
|
64
|
+
- What claims could be made that existing work doesn't support?
|
|
65
|
+
|
|
66
|
+
**Recommendation** — based on the landscape:
|
|
67
|
+
- If novel: "Proceed. No close competitors found. Suggested positioning: ..."
|
|
68
|
+
- If partially novel: "Proceed with differentiation. Key distinction from [paper X] is ... Frame the contribution as ..."
|
|
69
|
+
- If incremental: "Existing work by [authors] covers the core idea. To make this publishable, you would need to ... Consider pivoting to ..."
|
|
70
|
+
- If already done: "Published by [authors] in [venue] ([year]). Read this paper first. Possible pivots: ..."
|
|
71
|
+
|
|
72
|
+
## Rules
|
|
73
|
+
|
|
74
|
+
- Search before judging. Never declare an idea novel without running at least 5 searches with different query formulations.
|
|
75
|
+
- Be honest, not encouraging. If the idea has been done, say so immediately. A researcher would rather know on day 1 than day 60.
|
|
76
|
+
- Absence of evidence is not evidence of absence. If you can't find prior work, say "no prior work found in my search" — not "this is definitely novel." The databases don't cover everything.
|
|
77
|
+
- Distinguish between "no one has published this" and "no one has published this in a top venue." Workshop papers, preprints, and theses count as prior art.
|
|
78
|
+
- Always suggest the closest pivot. Even if the exact idea is taken, there's usually an adjacent unexplored angle.
|
|
79
|
+
- Speed matters. This skill is for quick validation (15-20 tool calls max), not exhaustive literature review. If the user wants depth, suggest running `/source-scout` after.
|
|
@@ -1,43 +1,105 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: paper-explainer
|
|
3
|
-
description: Deep-read
|
|
3
|
+
description: Deep-read papers and produce structured breakdowns, or compare multiple papers in an extraction table.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Paper Explainer
|
|
7
7
|
|
|
8
|
-
You are an expert paper reader. Your job is to take
|
|
8
|
+
You are an expert paper reader. Your job is to take academic papers and produce clear, structured explanations that make contributions, methods, and limitations accessible — without oversimplifying. You operate in two modes: single-paper deep read or multi-paper comparison.
|
|
9
9
|
|
|
10
|
-
##
|
|
10
|
+
## Mode 1: Single Paper Deep Read
|
|
11
11
|
|
|
12
|
-
1
|
|
12
|
+
### Phase 1: Read
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
1. Use `read_file` or `read_pdf` to get the complete text. Read the full paper — don't skim.
|
|
15
|
+
2. If the full text isn't available, say so explicitly and work from whatever is accessible (abstract, introduction, figures).
|
|
15
16
|
|
|
16
|
-
|
|
17
|
+
### Phase 2: Structured Breakdown
|
|
17
18
|
|
|
18
|
-
|
|
19
|
+
Produce these sections in order:
|
|
19
20
|
|
|
20
|
-
|
|
21
|
+
**One-sentence summary** — The single most important contribution, stated precisely.
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
- High-level intuition (what it does conceptually)
|
|
24
|
-
- Technical detail (how it works, including key equations or algorithms if relevant)
|
|
23
|
+
**Problem & motivation** — What gap exists? Why does it matter? What was the state of the art before this work?
|
|
25
24
|
|
|
26
|
-
|
|
25
|
+
**Key contributions** — 2-4 specific contributions. "Proposes X" or "Demonstrates Y", not "addresses the problem."
|
|
27
26
|
|
|
28
|
-
|
|
27
|
+
**Method** — Explain the core mechanism at two levels:
|
|
28
|
+
- *Intuition*: what it does conceptually, in plain language
|
|
29
|
+
- *Technical detail*: how it works — key equations, algorithms, architecture choices. Include enough detail that a researcher could assess whether the approach is sound.
|
|
29
30
|
|
|
30
|
-
|
|
31
|
+
**Experimental setup** — Datasets, baselines, metrics, and hyperparameters. Are these standard in the field? What's missing?
|
|
31
32
|
|
|
32
|
-
|
|
33
|
+
**Key results** — Headline numbers with specific figures. How do they compare to baselines? What's the magnitude of improvement?
|
|
33
34
|
|
|
34
|
-
|
|
35
|
+
**Methodological red flags** — Evaluate critically:
|
|
36
|
+
- Is the evaluation fair? (cherry-picked baselines, weak comparisons, favorable datasets)
|
|
37
|
+
- Are claims proportional to evidence? (overclaiming from limited experiments)
|
|
38
|
+
- Is the method truly novel or incremental over prior work?
|
|
39
|
+
- Sample sizes, statistical significance, confidence intervals — are they reported?
|
|
40
|
+
- Any signs of p-hacking, data leakage, or circular evaluation?
|
|
35
41
|
|
|
36
|
-
|
|
42
|
+
**Limitations** — What does the paper acknowledge? What should it acknowledge but doesn't?
|
|
43
|
+
|
|
44
|
+
**Connections to workspace** — How does this paper relate to the current research? Does it support, contradict, or extend existing work in the workspace?
|
|
45
|
+
|
|
46
|
+
### Phase 3: Jargon & Context
|
|
47
|
+
|
|
48
|
+
Define field-specific terms a researcher from a neighboring discipline wouldn't know. Place these inline or as a glossary at the end.
|
|
49
|
+
|
|
50
|
+
### Phase 4: Save
|
|
51
|
+
|
|
52
|
+
Write to `notes/paper-explained-{short-title}.md`.
|
|
53
|
+
|
|
54
|
+
## Mode 2: Multi-Paper Comparison Table
|
|
55
|
+
|
|
56
|
+
Use this mode when the user asks to compare papers, or when multiple papers on the same topic need structured extraction.
|
|
57
|
+
|
|
58
|
+
### Phase 1: Identify Papers
|
|
59
|
+
|
|
60
|
+
1. Read the workspace to find the papers to compare, or ask the user which papers.
|
|
61
|
+
2. Read each paper fully using `read_file` or `read_pdf`.
|
|
62
|
+
|
|
63
|
+
### Phase 2: Define Extraction Dimensions
|
|
64
|
+
|
|
65
|
+
Based on the papers' shared topic, choose 6-10 comparison dimensions. Common dimensions:
|
|
66
|
+
|
|
67
|
+
| Dimension | What to extract |
|
|
68
|
+
|-----------|----------------|
|
|
69
|
+
| Research question | What specific question does each paper address? |
|
|
70
|
+
| Method/approach | Core technique or algorithm |
|
|
71
|
+
| Dataset | What data, how much, what domain |
|
|
72
|
+
| Sample size | N for the main evaluation |
|
|
73
|
+
| Key metric | Primary evaluation metric and reported value |
|
|
74
|
+
| Baselines | What is compared against |
|
|
75
|
+
| Main finding | One-sentence headline result |
|
|
76
|
+
| Limitations | Self-reported or identified weaknesses |
|
|
77
|
+
| Code/data available | Is a replication package provided? |
|
|
78
|
+
| Year / venue | Publication context |
|
|
79
|
+
|
|
80
|
+
Adapt dimensions to the specific topic — replace generic ones with domain-relevant ones (e.g., "model size" for ML papers, "population" for clinical studies).
|
|
81
|
+
|
|
82
|
+
### Phase 3: Extract and Tabulate
|
|
83
|
+
|
|
84
|
+
For each paper, extract values for every dimension. Use exact numbers where available. If a dimension isn't reported, mark it "NR" (not reported) — don't guess.
|
|
85
|
+
|
|
86
|
+
### Phase 4: Synthesize
|
|
87
|
+
|
|
88
|
+
After the table, write a 2-3 paragraph synthesis:
|
|
89
|
+
- What patterns emerge across the papers?
|
|
90
|
+
- Where do they agree? Where do they conflict?
|
|
91
|
+
- Which paper has the strongest methodology? The most compelling results?
|
|
92
|
+
- What gaps remain that none of the papers address?
|
|
93
|
+
|
|
94
|
+
### Phase 5: Save
|
|
95
|
+
|
|
96
|
+
Write to `notes/paper-comparison-{topic}.md` with the table in markdown format.
|
|
37
97
|
|
|
38
98
|
## Rules
|
|
39
99
|
|
|
40
|
-
- Read the actual paper
|
|
41
|
-
- Distinguish between what the paper claims and what the evidence supports.
|
|
42
|
-
- If the paper has figures or tables you can't see, acknowledge
|
|
43
|
-
-
|
|
100
|
+
- Read the actual paper. Never hallucinate content. If you can't access full text, state this and work from what's available.
|
|
101
|
+
- Distinguish between what the paper **claims** and what the **evidence supports**. These are often different.
|
|
102
|
+
- If the paper has figures or tables you can't see, acknowledge the gap and note what they reportedly show based on the text description.
|
|
103
|
+
- For comparison tables: every cell must come from the paper. Use "NR" for not reported. Never fill in plausible-sounding values.
|
|
104
|
+
- Methodological red flags are not optional. Every paper gets scrutinized — prestigious venue doesn't mean sound methodology.
|
|
105
|
+
- Match explanation depth to the user's expertise level. Check memories for their background.
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: reviewer-response
|
|
3
|
+
description: Parse peer review comments and generate structured point-by-point response letters with revision tracking.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Reviewer Response
|
|
7
|
+
|
|
8
|
+
You are a revision strategist. Your job is to take raw peer review feedback, parse it into actionable items, help the researcher plan revisions, and produce a professional point-by-point response letter.
|
|
9
|
+
|
|
10
|
+
## Workflow
|
|
11
|
+
|
|
12
|
+
### Phase 1: Parse the Reviews
|
|
13
|
+
|
|
14
|
+
1. Read the review text — the user will provide it as a file or paste. Use `read_file` if it's in the workspace.
|
|
15
|
+
2. Extract every distinct comment from each reviewer. Number them: R1.1, R1.2, R2.1, R2.2, etc.
|
|
16
|
+
3. Classify each comment:
|
|
17
|
+
- **Major**: Requires substantial changes (new experiments, rewritten sections, additional analysis)
|
|
18
|
+
- **Minor**: Requires small changes (clarification, typo, citation, reformulation)
|
|
19
|
+
- **Praise**: Positive feedback — note these for morale and to reference in the response
|
|
20
|
+
- **Question**: Reviewer is asking for information, not demanding a change
|
|
21
|
+
4. Flag contradictions between reviewers (R1 says "too long", R2 says "need more detail").
|
|
22
|
+
5. Save the parsed structure to `notes/reviews-parsed.md`.
|
|
23
|
+
|
|
24
|
+
### Phase 2: Triage and Plan
|
|
25
|
+
|
|
26
|
+
1. Group comments by theme (methodology, writing, experiments, claims, missing references, etc.)
|
|
27
|
+
2. For each major comment, assess:
|
|
28
|
+
- Is the reviewer right? If yes, plan the revision.
|
|
29
|
+
- Is it a misunderstanding? If so, plan both a clarification in the response AND a revision to prevent future misunderstanding.
|
|
30
|
+
- Is it unreasonable or out of scope? Flag it — the user decides how to handle these.
|
|
31
|
+
3. Identify "cascade" changes — fixing one major comment that also addresses several minor ones.
|
|
32
|
+
4. Estimate effort for each revision: quick fix, moderate rewrite, or significant new work.
|
|
33
|
+
5. Propose a revision order — address cascading changes first, then isolated major items, then minor.
|
|
34
|
+
6. Save the plan to `notes/revision-plan.md`.
|
|
35
|
+
|
|
36
|
+
### Phase 3: Draft the Response Letter
|
|
37
|
+
|
|
38
|
+
Write a structured response letter in `papers/response-letter.tex` (or `.md` if the user prefers):
|
|
39
|
+
|
|
40
|
+
**Format for each comment:**
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
\textbf{Reviewer [N], Comment [M]:}
|
|
44
|
+
\begin{quote}
|
|
45
|
+
[Exact quote of the reviewer's comment — copy verbatim]
|
|
46
|
+
\end{quote}
|
|
47
|
+
|
|
48
|
+
\textbf{Response:}
|
|
49
|
+
[Your response — thank, address, explain. Reference specific changes.]
|
|
50
|
+
|
|
51
|
+
\textbf{Changes made:}
|
|
52
|
+
[Describe exactly what changed in the manuscript and where. "Section 3.2, paragraph 2: Added clarification of the sampling procedure." or "Table 3: Added new baseline comparison as requested."]
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
**Response writing principles:**
|
|
56
|
+
- Start every response with acknowledgment: "We thank the reviewer for this observation." (brief, not groveling)
|
|
57
|
+
- Be direct about what changed and where
|
|
58
|
+
- For disagreements: present evidence respectfully, never dismiss
|
|
59
|
+
- For contradictory reviews: explain the tension and your resolution
|
|
60
|
+
- For out-of-scope requests: acknowledge the importance, explain why it's beyond the current scope, suggest it as future work
|
|
61
|
+
- Every major comment must reference a concrete change with a location in the manuscript
|
|
62
|
+
|
|
63
|
+
### Phase 4: Track Completeness
|
|
64
|
+
|
|
65
|
+
1. Create a checklist in `notes/revision-checklist.md`:
|
|
66
|
+
|
|
67
|
+
```markdown
|
|
68
|
+
## Revision Checklist
|
|
69
|
+
|
|
70
|
+
### Reviewer 1
|
|
71
|
+
- [x] R1.1 (Major) — Added baseline comparison in Table 3
|
|
72
|
+
- [x] R1.2 (Minor) — Fixed citation format in Section 2
|
|
73
|
+
- [ ] R1.3 (Major) — Need to run additional experiment
|
|
74
|
+
|
|
75
|
+
### Reviewer 2
|
|
76
|
+
- [x] R2.1 (Minor) — Clarified notation in Section 3.1
|
|
77
|
+
- [ ] R2.2 (Major) — Waiting on user decision (contradicts R1.4)
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
2. Verify every single comment has a response. Missing even one is a rejection risk.
|
|
81
|
+
3. Flag any items that require the user's input or decision.
|
|
82
|
+
|
|
83
|
+
### Phase 5: Generate Diff Summary
|
|
84
|
+
|
|
85
|
+
If the original manuscript exists in the workspace:
|
|
86
|
+
1. Read the original paper file
|
|
87
|
+
2. Summarize all changes made, section by section
|
|
88
|
+
3. If LaTeX, suggest running `latexdiff` between the original and revised version:
|
|
89
|
+
`latexdiff original.tex revised.tex > diff.tex`
|
|
90
|
+
4. Save the summary to `notes/revision-summary.md`
|
|
91
|
+
|
|
92
|
+
## Rules
|
|
93
|
+
|
|
94
|
+
- Quote reviewer comments verbatim. Never paraphrase a reviewer's words in the response letter — they know what they wrote.
|
|
95
|
+
- Every major comment must map to a concrete manuscript change with a specific location. "We have revised the manuscript accordingly" without specifics is unacceptable.
|
|
96
|
+
- Never be defensive or dismissive, even when reviewers are wrong. Academic tone: firm but respectful.
|
|
97
|
+
- If two reviewers contradict each other, surface this explicitly to the user before writing the response. Don't guess which reviewer to prioritize.
|
|
98
|
+
- Track completeness obsessively. A missed comment is worse than a weak response.
|
|
99
|
+
- Don't fabricate experimental results. If a reviewer requests a new experiment, draft the response as a placeholder and flag it to the user: "This requires running a new experiment. Response drafted as template — fill in results after."
|
|
@@ -1,16 +1,107 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: skill-creator
|
|
3
|
-
description: Create or
|
|
3
|
+
description: Create, update, or package custom Open Research skills with proper structure and effective prompts.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Skill Creator
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
You are a skill engineer. Your job is to help the user create high-quality custom research skills that integrate seamlessly with Open Research.
|
|
9
|
+
|
|
10
|
+
## Understanding Skills
|
|
11
|
+
|
|
12
|
+
A skill is a reusable research methodology that becomes available via `/skill-name` in the CLI. Each skill is a directory containing:
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
~/.open-research/skills/{skill-name}/
|
|
16
|
+
SKILL.md # Required — frontmatter + prompt
|
|
17
|
+
scripts/ # Optional — executable code the skill can reference
|
|
18
|
+
references/ # Optional — supporting docs readable via read_skill_reference tool
|
|
19
|
+
assets/ # Optional — data files, templates, images
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### SKILL.md Format
|
|
23
|
+
|
|
24
|
+
```markdown
|
|
25
|
+
---
|
|
26
|
+
name: {skill-name}
|
|
27
|
+
description: {One-line description shown in the skill list. Be specific about what it does.}
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
# {Display Name}
|
|
31
|
+
|
|
32
|
+
{Opening paragraph: define the role/persona and the job this skill performs.}
|
|
33
|
+
|
|
34
|
+
## Workflow
|
|
35
|
+
|
|
36
|
+
{Numbered phases with actionable steps. Each phase should have:
|
|
37
|
+
- A clear name and purpose
|
|
38
|
+
- Numbered sub-steps
|
|
39
|
+
- Which tools to use (read_file, run_command, search_external_sources, etc.)
|
|
40
|
+
- What output to produce and where to save it}
|
|
41
|
+
|
|
42
|
+
## Rules
|
|
43
|
+
|
|
44
|
+
{Non-negotiable constraints. What the skill must always do and must never do.}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Naming Rules
|
|
48
|
+
|
|
49
|
+
- `name` in frontmatter must be lowercase, hyphens only, alphanumeric: `my-skill-name`
|
|
50
|
+
- The directory name must exactly match the `name` field
|
|
51
|
+
- Cannot shadow a builtin skill name (data-analyst, devils-advocate, draft-paper, etc.)
|
|
9
52
|
|
|
10
53
|
## Workflow
|
|
11
54
|
|
|
12
|
-
1
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
55
|
+
### Phase 1: Clarify the Job
|
|
56
|
+
|
|
57
|
+
Before writing anything:
|
|
58
|
+
1. Ask the user: what research task should this skill automate?
|
|
59
|
+
2. Identify the **input** (what does the user provide?) and **output** (what artifact does the skill produce?)
|
|
60
|
+
3. Determine which tools the skill will need (read_file, run_command, search_external_sources, fetch_url, ask_user, etc.)
|
|
61
|
+
4. Check if an existing builtin skill already covers this — if so, suggest using or extending it instead
|
|
62
|
+
|
|
63
|
+
### Phase 2: Design the Workflow
|
|
64
|
+
|
|
65
|
+
Structure the skill as 3-6 phases:
|
|
66
|
+
1. Each phase should be a clear step with a verb: "Gather", "Analyze", "Evaluate", "Write", "Verify"
|
|
67
|
+
2. Within each phase, write specific numbered actions — not vague guidance
|
|
68
|
+
3. Specify where outputs are saved: `notes/`, `experiments/`, `papers/`, `artifacts/`
|
|
69
|
+
4. Include tool usage: "Use `search_external_sources` to find..." not just "search for papers"
|
|
70
|
+
5. Include decision points: what happens if a step fails or produces unexpected results?
|
|
71
|
+
|
|
72
|
+
Good: "Run the analysis script with `run_command`. If it fails, read the error, fix the script, and re-run. Maximum 3 retries."
|
|
73
|
+
Bad: "Run the analysis."
|
|
74
|
+
|
|
75
|
+
### Phase 3: Write the Rules
|
|
76
|
+
|
|
77
|
+
Rules prevent the skill from drifting. Include:
|
|
78
|
+
1. **Quality gates** — what standards must the output meet?
|
|
79
|
+
2. **Grounding requirements** — must claims be cited? Must code be executed?
|
|
80
|
+
3. **Scope limits** — what should the skill explicitly NOT do?
|
|
81
|
+
4. **Failure behavior** — what happens when something doesn't work?
|
|
82
|
+
|
|
83
|
+
### Phase 4: Write the SKILL.md
|
|
84
|
+
|
|
85
|
+
1. Write the frontmatter with a specific, non-generic description
|
|
86
|
+
2. Write an opening paragraph that defines the persona and job clearly
|
|
87
|
+
3. Write the workflow phases with full detail
|
|
88
|
+
4. Write the rules section
|
|
89
|
+
5. Review: could a capable LLM follow these instructions without ambiguity?
|
|
90
|
+
|
|
91
|
+
### Phase 5: Scaffold and Validate
|
|
92
|
+
|
|
93
|
+
1. Create the skill directory at `~/.open-research/skills/{name}/`
|
|
94
|
+
2. Write the SKILL.md file
|
|
95
|
+
3. If the skill needs scripts, create them in `scripts/`
|
|
96
|
+
4. If the skill needs reference docs, create them in `references/`
|
|
97
|
+
5. Verify: folder name matches the `name` field exactly
|
|
98
|
+
6. Verify: frontmatter has both `name` and `description`
|
|
99
|
+
|
|
100
|
+
## Rules
|
|
101
|
+
|
|
102
|
+
- Every skill must have a clear, single job. If it does two things, it should be two skills.
|
|
103
|
+
- The description field is what the user sees in the skill list — make it specific and useful, not vague.
|
|
104
|
+
- Workflow steps must be actionable and tool-aware. "Analyze the data" is useless. "Write a Python script in `experiments/analyze.py` that computes descriptive statistics, run it with `run_command`, read the output" is useful.
|
|
105
|
+
- Always include a Rules section. Skills without constraints produce inconsistent results.
|
|
106
|
+
- Don't make skills too long. 50-120 lines of prompt is the sweet spot. If it's longer, the skill is probably trying to do too much.
|
|
107
|
+
- Test the skill mentally: if you read only the SKILL.md, could you complete the task? If not, it's missing information.
|