# cover-letter

Builds a journal submission letter from an existing LaTeX manuscript, then checks every claim in it against what the paper actually says.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 863 installs · ★ 519
- Author: bahayonghang
- License: not stated · policy=link-only · description only; the file stays with the author
- Source: https://github.com/bahayonghang/academic-writing-skills/tree/HEAD/academic-writing-skills/cover-letter/SKILL.md
- Updated: 2026-10-15
- HTML: https://affpapa.org/en/nevibecode/skills/cover-letter

## What it does

The skill reads your `main.tex` and pulls out the title, abstract, contributions and author list. Mode `generate` turns that into a five-part letter draft shaped by the template for your target venue. Fields it cannot extract stay as placeholders like `[Editor name to be confirmed]`, so the draft never invents a detail. Venues covered by `--journal`: `nature`, `science`, `cell`, `ieee-trans`, `acm`, `springer-lncs`, `neurips`, `icml`, `cvpr`, `generic`.

\`align-check` is the reason to install it. Each sentence of the letter gets matched to visible text in the manuscript: inflated novelty, evidence that is missing, numbers that appear nowhere in the paper. Both `generate` and `optimize` run this check before returning, and findings are appended rather than hidden.

\`journal-fit` scores four sub-axes (scope, how novelty is framed, evidence density, format compliance) as HIGH, MEDIUM or LOW. `presubmission` handles declarations, length, opening clichés and banned wording. Output comes back as LaTeX comments tagged `[Script]` or `[LLM]`, or as structured data with `--json`. Your files are never overwritten. Only `.tex` manuscripts work here; Typst sources and reviewer rebuttals are outside its scope. The modes run through `uv run python -B $SKILL_DIR/scripts/cover_letter.py`, so `uv` has to be present, and `--mode` on the command is how you pick one.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add bahayonghang/academic-writing-skills --skill cover-letter -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/cover-letter/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/cover-letter/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add bahayonghang/academic-writing-skills --skill cover-letter -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/cover-letter/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add bahayonghang/academic-writing-skills --skill cover-letter -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/cover-letter/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install bahayonghang/academic-writing-skills cover-letter
```

2. **Manually: put the files in place**
- File: `.github/skills/cover-letter/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add bahayonghang/academic-writing-skills --skill cover-letter -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/bahayonghang/academic-writing-skills --path academic-writing-skills/cover-letter
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/cover-letter/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add bahayonghang/academic-writing-skills --skill cover-letter -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/bahayonghang/academic-writing-skills/tree/HEAD/academic-writing-skills/cover-letter/SKILL.md

## When to use it
- draft a cover letter from a finished paper
- catch claims in the letter that the manuscript cannot back
- judge whether a letter fits a given journal
- check declarations and length before submitting
- reformat a letter for Nature or IEEE templates

## Example prompts
- Write a submission letter from `main.tex` for nature
- Align `cover_letter.md` with `main.tex` and list the gaps
- Run the presubmission check on my letter for ieee-trans

## Similar
- [anysearch](https://affpapa.org/en/nevibecode/skills/anysearch.md) — skill · 38500 installs
- [academic-paper](https://affpapa.org/en/nevibecode/skills/academic-paper.md) — skill · 10800 installs
- [nature-figure](https://affpapa.org/en/nevibecode/skills/nature-figure.md) — skill · 18800 installs
- [academic-paper-reviewer](https://affpapa.org/en/nevibecode/skills/academic-paper-reviewer.md) — skill · 9800 installs
- [nature-polishing](https://affpapa.org/en/nevibecode/skills/nature-polishing.md) — skill · 17500 installs
- [nature-citation](https://affpapa.org/en/nevibecode/skills/nature-citation.md) — skill · 15600 installs

From the same set: [bahayonghang/academic-writing-skills](https://affpapa.org/en/nevibecode/by/bahayonghang/academic-writing-skills.md) — 5 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
