Write Paper
frenzymath/Danus
Turn a project's verified fact graph into a publishable LaTeX paper in a configurable house style — a standalone amsart .tex with a real bibliography, compiled to PDF.
Turn reviewer comments and the changes already made into a point-by-point response letter, in LaTeX or Typst and in plain text.
$ npx skills add Oleafly/Oleafly --skill oleafly-response-letter -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Oleafly/Oleafly oleafly-response-letter --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/Oleafly/Oleafly.git skills-src && mkdir -p .claude/skills && cp -r skills-src/src-tauri/resources/skills/oleafly-response-letter .claude/skills/oleafly-response-letter && 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 "oleafly-response-letter" agent skill from https://github.com/Oleafly/Oleafly/tree/main/src-tauri/resources/skills/oleafly-response-letter into .claude/skills/oleafly-response-letter/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "oleafly-response-letter", 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/Oleafly/Oleafly/tree/main/src-tauri/resources/skills/oleafly-response-letterType 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 Oleafly/Oleafly --skill oleafly-response-letter -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Oleafly/Oleafly oleafly-response-letter --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Oleafly/Oleafly.git skills-src && mkdir -p .agents/skills && cp -r skills-src/src-tauri/resources/skills/oleafly-response-letter .agents/skills/oleafly-response-letter && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "oleafly-response-letter" agent skill from https://github.com/Oleafly/Oleafly/tree/main/src-tauri/resources/skills/oleafly-response-letter into .agents/skills/oleafly-response-letter/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "oleafly-response-letter", 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 Oleafly/Oleafly --skill oleafly-response-letter -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Oleafly/Oleafly oleafly-response-letter --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Oleafly/Oleafly.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/src-tauri/resources/skills/oleafly-response-letter .cursor/skills/oleafly-response-letter && 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 "oleafly-response-letter" agent skill from https://github.com/Oleafly/Oleafly/tree/main/src-tauri/resources/skills/oleafly-response-letter into .cursor/skills/oleafly-response-letter/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "oleafly-response-letter", 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/Oleafly/Oleafly.git --path src-tauri/resources/skills/oleafly-response-letter--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 Oleafly/Oleafly --skill oleafly-response-letter -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Oleafly/Oleafly oleafly-response-letter --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Oleafly/Oleafly.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/src-tauri/resources/skills/oleafly-response-letter .gemini/skills/oleafly-response-letter && 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 "oleafly-response-letter" agent skill from https://github.com/Oleafly/Oleafly/tree/main/src-tauri/resources/skills/oleafly-response-letter into .gemini/skills/oleafly-response-letter/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "oleafly-response-letter", 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 Oleafly/Oleafly oleafly-response-letterInstalls 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 Oleafly/Oleafly --skill oleafly-response-letter -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Oleafly/Oleafly.git skills-src && mkdir -p .github/skills && cp -r skills-src/src-tauri/resources/skills/oleafly-response-letter .github/skills/oleafly-response-letter && 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 "oleafly-response-letter" agent skill from https://github.com/Oleafly/Oleafly/tree/main/src-tauri/resources/skills/oleafly-response-letter into .github/skills/oleafly-response-letter/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "oleafly-response-letter", 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 Oleafly/Oleafly --skill oleafly-response-letter -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Oleafly/Oleafly oleafly-response-letter --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Oleafly/Oleafly.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/src-tauri/resources/skills/oleafly-response-letter .opencode/skills/oleafly-response-letter && 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 "oleafly-response-letter" agent skill from https://github.com/Oleafly/Oleafly/tree/main/src-tauri/resources/skills/oleafly-response-letter into .opencode/skills/oleafly-response-letter/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "oleafly-response-letter", 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.
oleafly-response-letterTurn reviewer comments and the changes already made into a point-by-point response letter, in LaTeX or Typst and in plain text.
Oleafly Response Letter is an agent skill from Oleafly/Oleafly. Turn reviewer comments and the changes already made into a point-by-point response letter, in LaTeX or Typst and in plain text. Use when preparing a rebuttal, an author response, or a revision cover letter for a journal or conference, when mapping each reviewer point to the passage that changed, when a resubmission needs every comment answered, or when a response letter has to compile alongside the paper.
Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including reference files and assets (for example `assets/response-outline.md` and `references/tone-and-structure.md`). Compatibility notes: Any LaTeX or Typst project. Finding what changed works best when the project is a git repository, which Oleafly projects are by default. The bundled templates…
It sits in Documents & Office, covering LaTeX and Resume and CV writing. It works with LaTeX and Git. The repository describes itself as: The local-first AI assisted research workspace for scientific writing & publishing. Research, Write, Compile, Verify and Publish in LaTeX • Typst • Markdown • Git-native • Open…. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit dc582ef. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
read_filelist_filessearch_projectcreate_filewrite_filereplace_in_filecompileget_logset_main_docrun_command…and 3 more on the same allowed-tools line.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Any LaTeX or Typst project. Finding what changed works best when the project is a git repository, which Oleafly projects are by default. The bundled templates compile on the app engines with no extra packages.
From compatibility in the SKILL.md frontmatter.
Oleafly Response Letter loads about 2.3k tokens when it runs, and up to ~3.4k if it reads all its reference files. Until then it costs about 108 tokens; SKILL.md has 1,147 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 Oleafly/Oleafly at commit dc582ef, republished under its MIT licence (© Oleafly). 1,147 words, ~2,309 tokens.
.claude/skills/oleafly-response-letter/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.Reviewers gave comments. The paper changed. This turns those two things into a letter that answers every point and shows where in the manuscript the answer lives.
The letter is a working draft for the authors to check and sign. Every claim in it about what changed must be true, because an editor can and will check.
Get the reviewer comments from wherever the user has them: an attached file, pasted text in the chat, or a file already in the project. Save them unedited with create_file and write_file to review/comments.md.
Number every separable point as you go. One reviewer paragraph often holds three requests, and an unnumbered request is a request that gets missed.
## Reviewer 1
R1.1 The sample size justification is missing.
R1.2 Table 2 reports means without dispersion.
R1.3 The related work section omits the closest prior method.
## Reviewer 2
R2.1 ...Keep the reviewer's wording exactly. Do not paraphrase, soften, or merge points. If the comments arrive as a PDF, ask the user to paste the text or save it into the project, because reviewer letters are usually confidential and should not go through a network tool.
If no comments were supplied, stop and ask for them. Do not invent plausible reviewer comments.
Oleafly commits a checkpoint automatically as you work, so the project is normally a git repository with a usable history.
run_command git log --oneline -40
run_command git diff <revision> -- <path>
run_command git diff --stat <revision>Pick the revision from before the revision round started. If the user knows the date of submission, git log --since=<date> narrows it. run_command needs approval, and it runs in the project directory, so use relative paths.
When git is not available, the history does not go back far enough, or the user declines the command, ask the user to describe the changes and work from that. Say clearly in your final report that the mapping is based on their description rather than on a diff.
For every numbered point, find the passage that answers it:
search_project for a distinctive fragment of the new textread_file around the hit to quote it accurately and get the line numberfile:line and the exact new sentenceSome points map to no change, because you disagreed, because the request was out of scope, or because the data does not exist. Record those as unaddressed with a reason. Do not quietly skip them.
Track the mapping with update_todos so a point cannot fall out of the list.
Write two files:
review/response.md, plain text, for pasting into a submission form or an emailresponse.typ from assets/response-template.typ in a Typst project, and response.tex from assets/response-template.tex otherwiseThe LaTeX template gives you five macros and nothing else to learn:
\reviewer{1}
\point{R1.1}{The sample size justification is missing.}
\reply{We have added the power calculation that determined the group size.}
\changed{sections/methods.tex, line 84}{With 80\% power at alpha = 0.05 to detect a difference of 0.4 SD, each arm required 99 participants.}\reviewer opens a reviewer block, \point prints the comment in italics, \reply prints your answer, and \changed shows where the manuscript changed and quotes the new text. \notchanged marks a point you did not act on.
The Typst template defines the same five functions under the same names:
#reviewer(1)
#point[R1.1][The sample size justification is missing.]
#reply[We have added the power calculation that determined the group size.]
#changed("sections/methods.typ, line 84")[With 80% power at alpha = 0.05 to detect a difference of 0.4 SD, each arm required 99 participants.]The location in #changed is a plain string, and everything else is content in square brackets. Read references/tone-and-structure.md before writing the prose.
The letter is a second document in the same project, and a project has one main document at a time. Two ways to handle that:
Compile it in place. Note the current main document first, because you have to put it back.
set_main_doc to response.tex or response.typcompile, and get_log if it failsset_main_doc back to the paper's main file, whether the compile succeeded or notNever leave the project pointing at the response letter. set_main_doc also picks the engine from the file extension and it changes what the preview pane shows, so a project left in that state looks broken to the user next time they open it.
Or leave it to the user. Tell them the letter is written and that switching the main document to compile it is a one-click change they can make when they want the PDF. This is the safer option in a long agent run where the restore step might not be reached.
file:line behind it.Then call show_location on two or three of the largest changes so the user can see them, and report in chat: how many points, how many addressed, which ones are not, and where the two files are.
| Situation | What to do |
|---|---|
| No comments supplied | Ask for them. Never invent reviewer comments. |
| Comments only exist as a PDF | Ask the user to paste or save the text. Reviewer letters are confidential. |
| Project is not a git repository | Work from the user's description and say so in the report. |
run_command declined | Same as above. Do not retry the command in a different form. |
| Two reviewers ask for opposite changes | Answer both in the same terms, explain the choice once, and reference it from the second reply. |
| A request is out of scope | Say so plainly, explain why, and offer what you did instead. |
| A request needs data that does not exist | Mark it unaddressed, say what would be needed, and add a limitation to the paper if one is missing. |
| The venue caps the response length | Cut the reply prose, never the number of points answered. |
git diff output is enormous: narrow it with a path (git diff <rev> -- sections/) or use --stat first to find which files moved.search_project cannot find the new sentence: the source wraps lines, so search a short fragment with no punctuation or markup in it.article, geometry, xcolor, and parskip. If it still fails, get_log and look for a stray % or an unescaped &, _, or # copied out of a reviewer comment. Reviewer text is the usual culprit, because it was written in a plain-text editor.#, $, *, _, @, < and backticks with a backslash, and keep brackets balanced.review/comments.md, the reviewer comments verbatim and numberedreview/response.md, the plain-text responseresponse.tex or response.typ, the typeset response letter© Oleafly, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files (references, assets) in src-tauri/resources/skills/oleafly-response-letter of Oleafly/Oleafly.
Open the folder on GitHubat commit dc582ef
Oleafly Response Letter 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 |
|---|---|---|---|---|---|---|
| Oleafly Response Letter this skillOleafly/Oleafly | 212 | — | ~2.3k | Automated safety check: Pass | MIT | |
| Write Paperfrenzymath/Danus | 476 | — | ~18k | Automated safety check: Pass | Apache-2.0 | |
| ProjectHurricaHjz/second-yourself | 123 | — | ~3.1k | Automated safety check: Pass | MIT | |
| Review Overleaffcakyon/claude-codex-settings | 1.2k | — | ~940 | Automated safety check: Pass | Apache-2.0 | |
| Latex Diffflonat/flonat-research | 146 | — | ~1.9k | Automated safety check: Pass | MIT | |
| Overleaf CLI Guidewentorai/research-plugins | 298 | 1 repos | ~1.9k | Automated safety check: Pass | MIT |
frenzymath/Danus
Turn a project's verified fact graph into a publishable LaTeX paper in a configurable house style — a standalone amsart .tex with a real bibliography, compiled to PDF.
HurricaHjz/second-yourself
Manage the owner's OWN working repositories (Overleaf LaTeX projects, code repositories) from the vault, on an explicit instruction only: /project link | open | sync | brief | snapshot | status |…
fcakyon/claude-codex-settings
This skill should be used when user asks to "fetch overleaf review comments", "address overleaf reviews", "apply overleaf comments", "review my overleaf paper", "sync overleaf feedback to local"…
flonat/flonat-research
Compare two LaTeX files, project directories, or Git revisions and produce human-readable plus machine-readable severity-graded semantic changes.
wentorai/research-plugins
Sync and manage Overleaf LaTeX projects from the command line
bahayonghang/academic-writing-skills
Submission cover-letter assistant for existing LaTeX manuscripts.
Oleafly/Oleafly
Perform bounded, local exploratory analysis of explicitly supported scientific files.
Oleafly/Oleafly
Design experiments and studies BEFORE data is collected — choosing a design, randomizing, blocking, and laying out treatment combinations so results are interpretable.
Oleafly/Oleafly
Facilitates evidence-aware scientific ideation with independent generation, structured discussion, explicit assumptions, transparent evaluation, adversarial review, and decision logs.
Oleafly/Oleafly
Create and audit truthful, accessible, publication-ready scientific figures with Matplotlib, Seaborn, or Plotly.
Oleafly/Oleafly
Turn a research question into an annotated reading list with provenance.
Oleafly/Oleafly
Entry point for research writing in Oleafly. An agent skill from Oleafly/Oleafly.
Categories
Turn reviewer comments and the changes already made into a point-by-point response letter, in LaTeX or Typst and in plain text. Oleafly Response Letter is an agent skill from Oleafly/Oleafly. Turn reviewer comments and the changes already made into a point-by-point response letter, in LaTeX or Typst and in plain text.
Oleafly Response Letter fits situations like: preparing a rebuttal; an author response; A revision cover letter for a journal; mapping each reviewer point to the passage that changed.
Run `npx skills add Oleafly/Oleafly --skill oleafly-response-letter -a claude-code`. Or copy the skill folder (src-tauri/resources/skills/oleafly-response-letter in Oleafly/Oleafly) into .claude/skills/oleafly-response-letter in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Oleafly/Oleafly --skill oleafly-response-letter -a codex`. Or copy the skill folder (src-tauri/resources/skills/oleafly-response-letter in Oleafly/Oleafly) into .agents/skills/oleafly-response-letter 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 Oleafly/Oleafly --skill oleafly-response-letter -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/oleafly-response-letter, .gemini/skills/oleafly-response-letter, .github/skills/oleafly-response-letter and .opencode/skills/oleafly-response-letter in your project.
Going by SKILL.md and its folder, Oleafly Response Letter needs the command-line tools its instructions call (git). Its frontmatter pre-approves these tools: read_file, list_files, search_project, create_file, write_file, replace_in_file, compile, get_log, set_main_doc, run_command, read_skill_file, show_location, update_todos. Compatibility (from SKILL.md): Any LaTeX or Typst project. Finding what changed works best when the project is a git repository, which Oleafly projects are by default. The bundled templates compile on the app engines with no extra packages..
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. 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.
Oleafly Response Letter is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.3k tokens (SKILL.md is roughly 9.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.1k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Oleafly Response Letter: Write Paper (frenzymath/Danus, 476 stars), Project (HurricaHjz/second-yourself, 123 stars), Review Overleaf (fcakyon/claude-codex-settings, 1.2k stars) and Latex Diff (flonat/flonat-research, 146 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Oleafly (a GitHub organization) maintains it in Oleafly/Oleafly, which has 212 GitHub stars. The repository holds 12 skills in this directory. The repository was last updated on October 10, 2026.
Source: Oleafly/Oleafly on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.