Skip to content
Back to skills

Latex Template

ASecurity

Compare a project's LaTeX preamble and conventions against the canonical working-paper template. Use when diagnosing template drift without converting venue formats or editing prose.

  • 144 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 23, 2026
researchgobashgit

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned September 23, 2026

npx -y skills add flonat/flonat-research --skill latex-template --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Latex Template?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Latex Template
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/flonat-latex-template/badge)](https://www.skillsdirectory.com/skills/flonat-latex-template)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: latex-template
description: "Compare a project's LaTeX preamble and conventions against the canonical working-paper template. Use when diagnosing template drift without converting venue formats or editing prose."
allowed-tools:
  - Read
  - Glob
  - Grep
  - Edit
  - Write
  - Bash(ls*)
  - Bash(latexmk*)
  - Bash(lualatex*)
  - Bash(biber*)
  - Bash(cmp*)
  - Bash(cp*)
  - Bash(head*)
  - AskUserQuestion
  - Skill
argument-hint: "[project-path] [--apply]"
skill-dependencies: [latex, retarget-journal]
---

# Template Compliance

> Compare a research project's LaTeX preamble against the working-paper template bundled with the installed `latex` skill. Classify every difference, produce a scored report, and optionally apply changes interactively.

## When to Use

- After the template has been updated and you want to check older papers
- Before submission — verify the preamble is clean and up to date
- When a paper has mysterious compilation issues (often a stale preamble)
- During periodic maintenance or `system-audit`
- When starting work on a paper that hasn't been touched in a while

## When NOT to Use

- **Setting up a new project** — the separate `init-project-research` workflow
  copies the template; this skill audits an existing project
- **Fixing compilation errors** — use `latex` first, then run this
- **Non-LaTeX projects** — this skill is LaTeX-specific

---

## Critical Rules

1. **Never edit without `--apply`.** Default mode is report-only. Without `--apply`, the skill produces a report and exits.
2. **Never auto-apply Conflict items.** Conflicts always require explicit user confirmation via `the available structured-question mechanism`.
3. **Semantic comparison, not line-by-line.** Compare packages, options, commands, and environments as logical units — not raw text diffs.
4. **Preserve project-specific additions.** Items classified as **Keep** are informational. Never suggest removing them unless they conflict with a template feature.
5. **Template is the reference, not the authority.** Projects may legitimately diverge. The skill reports differences — the user decides what to act on.
6. **Compile after applying.** If `--apply` makes any changes, always verify with `latex`.

---

## Protocol

### Phase 1: Locate & Parse

1. **Resolve the project path.** Accept as argument or use CWD. Resolve to absolute path.
2. **Find the project's preamble files.** The canonical location is the **Overleaf document**, accessed via the `paper/` symlink in the project directory. Search in this order:
   - **New format (`.sty` files):** `paper/your-template.sty` + `paper/your-bib-template.sty` (Overleaf symlink — **preferred**)
   - **Legacy format:** `paper/settings.tex` (Overleaf symlink)
   - If no `paper/` symlink exists, check the project root for `your-template.sty` (or `settings.tex`)
   - Project root: `your-template.sty` + `your-bib-template.sty` or `settings.tex` (for local-only projects without Overleaf)
   - Any `\input{settings}` or `\usepackage{your-template}` in `main.tex` pointing elsewhere

   **NEVER** check settings/style files in subdirectories like `docs/`, `to-sort/`, `docs/venues/`, or any non-paper location. Only the main paper's preamble is relevant.

   **New papers:** copy `templates/venues/_shared/user-math.sty` in alongside the venue kit and `\usepackage{user-math}` (clash-safe; `[notheorems]` if the kit owns theorem envs) rather than hand-declaring `\E`/`\Prob`/`\R`/`\argmax`. Existing compiling papers are not retrofitted — see `templates/venues/_shared/README.md`.

   If no preamble files are found, report error and exit.

3. **Read the template.** Resolve the sibling installed skill path, then use
   `../latex/templates/working-paper/` relative to this skill. Compare the two
   `.sty` files there, with `settings.tex` as a legacy fallback when present.

   If no template files are found, report "Bundled working-paper template not
   found — reinstall or repair the `latex` skill" and exit.

4. **Parse both files into semantic blocks:**

   | Block | What to extract |
   |-------|----------------|
   | **Packages** | Package name + options (e.g., `[dvipsnames]{xcolor}`) |
   | **Hyperref** | All `\hypersetup{}` key-value pairs + `\urlstyle` |
   | **Bibliography** | System (biblatex/natbib), all options, `\addbibresource`, source mappings, field clearing (`\AtEveryBibitem`), possessive citation commands |
   | **Custom commands** | All `\newcommand`, `\renewcommand`, `\DeclareMathOperator`, `\newcolumntype` |
   | **Theorem environments** | All `\newtheorem` declarations with their styles and counters |
   | **Build config** | Canonical `.latexmkrc` byte identity and optional `.latexmkrc.local` validity |

   For packages, normalise options: `\usepackage[a,b]{pkg}` and `\usepackage[b,a]{pkg}` are equivalent.

---

### Phase 2: Compare

For each semantic block, compare the project against the template. Detailed check tables for each block: [`references/comparison-checklist.md`](references/comparison-checklist.md)

Blocks to compare: **Packages** (missing, extra, options, load order, duplicates) · **Hyperref** (missing keys, different values, urlstyle, cleveref ordering) · **Bibliography** (system mismatch, options, source mappings, field clearing, possessive citations) · **Custom Commands** (missing, different definitions, column types, math commands) · **Theorem Environments** (missing, different styles/counters, numberwithin) · **Build Config** (canonical `.latexmkrc` identity and local-supplement policy)

---

### Phase 3: Classify

Label every difference with: **Adopt** (missing from project, safe to add) · **Keep** (project-specific, informational) · **Conflict** (needs human judgement, always ask) · **Drop** (redundant/superseded).

Full classification rules and when-to-use-each-label guidance: [`references/comparison-checklist.md`](references/comparison-checklist.md#phase-3-classification-rules)

---

### Phase 4: Check Auxiliaries

Check `main.tex` (preamble loading, documentclass, printbibliography, no stale bibliography commands), compare `.latexmkrc` byte-for-byte with the resolved canonical, and inspect any `.latexmkrc.local` for a forbidden `$pdf_mode` assignment.

Full check tables: [`references/comparison-checklist.md`](references/comparison-checklist.md#phase-4-auxiliary-checks)

---

### Phase 5: Report

Produce a structured compliance report. Full format: [`references/report-format.md`](references/report-format.md)

#### Quality Score

Apply numeric quality scoring using the shared framework: [`../shared/quality-scoring.md`](../shared/quality-scoring.md)

Start at **100** and deduct per issue:

| Tier | Deduction | Examples |
|------|-----------|----------|
| **Critical** | -15 to -25 | Missing or divergent canonical `.latexmkrc`, natbib vs biblatex conflict, missing `hyperref`, `hyperref`/`cleveref` load order wrong |
| **Major** | -5 to -14 | Missing common packages (booktabs, microtype, enumitem), missing `dvipsnames`, duplicate package loads, missing custom commands (\todo, \red, \blue), missing source mappings, missing field clearing, missing `cleveref` |
| **Minor** | -1 to -4 | Missing optional packages, different hyperref colours, missing theorem environments, missing math operators, missing `\numberwithin` |

#### Verdicts

| Score | Verdict | Meaning |
|-------|---------|---------|
| 95-100 | Ship | Fully aligned with template |
| 90-94 | Ship with notes | Minor gaps, acceptable to proceed |
| 80-89 | Revise | Meaningful gaps — fix before submission |
| 60-79 | Revise (major) | Significant drift — several features missing |
| 0-59 | Blocked | Major conflicts or missing infrastructure — consider full resync |

#### Report Sections

1. **Header**: Project name, path, score, date
2. **Summary table**: Counts by classification (Adopt / Keep / Conflict / Drop)
3. **Per-item detail**: Grouped by semantic block, showing classification + what/why
4. **Auxiliaries**: main.tex and .latexmkrc checks
5. **Recommendations**: Prioritised list of suggested actions

If `--apply` is not set, end with:
```
Run `latex-template <path> --apply` to interactively apply changes.
```

---

### Phase 6: Apply (--apply mode only)

Apply changes in dependency order to avoid compilation breakage:

1. **Package options** (e.g., add `dvipsnames` to xcolor)
2. **Missing packages** (insert in correct position relative to existing packages)
3. **Hyperref configuration** (update `\hypersetup{}` block)
4. **Bibliography changes** (only if user approves — always `the available structured-question mechanism` for system changes)
5. **Custom commands** (append after existing commands section)
6. **Theorem environments** (append after existing theorem section)
7. **`.latexmkrc`** (with approval, copy the resolved canonical verbatim; migrate legitimate project settings to `.latexmkrc.local` and never set `$pdf_mode` there)
8. **Cleanup** (remove duplicates, drop redundancies)

#### Apply Rules

- **Show a summary first.** Before making any edits, present the full list of changes to be applied (Adopt + Drop items) and ask for confirmation.
- **Conflicts are always individual.** Each Conflict item gets its own `the available structured-question mechanism` with the template version, project version, and context.
- **Keep items are never touched.** They appear in the report but are skipped during apply.
- **Preserve comments and whitespace.** When inserting packages, match the project's existing formatting style (e.g., if packages are grouped with comment headers, add to the right group).
- **Log what was changed.** After applying, list every edit made.

---

### Phase 7: Verify (--apply mode only)

After applying changes:

1. **Compile with `latex`.** This handles any secondary issues the changes might introduce.
2. **Report the result:**
   - If compilation succeeds: report success + number of changes applied
   - If compilation fails: report the error, suggest reverting specific changes, and note which change likely caused the issue

---

## What This Skill Does NOT Do

- **Does not rewrite `main.tex` structure.** Only checks `\input{settings}` and bibliography commands.
- **Does not check content quality.** The separate `proofread` workflow covers
  prose quality when that additional review is wanted.
- **Does not manage `.bib` files.** Use an installed bibliography validator, or perform direct cite-key and metadata checks.
- **Does not handle journal-specific formatting.** Use `retarget-journal` for that.
- **Does not compare across projects.** Checks one project at a time against the template.

---

## Examples

### Report only (default)

> "latex-template ~/papers/costly-voice"

Produces a compliance report without making any changes.

### Apply mode

> "latex-template ~/papers/costly-voice --apply"

Produces the report, then interactively applies Adopt and Drop changes with user confirmation.

### Current directory

> "Check my template compliance"

Runs on the current working directory in report-only mode.

### After template update

> "I updated the template — check all my papers"

Run on each project individually. This skill checks one project at a time.

---

## Cross-References

- **`../latex/templates/working-paper/`** — the bundled template this skill compares against
- **`latex`** — used in Phase 7 to verify compilation after applying changes
- **`audit-project-research`** — complementary: checks directory structure, this checks LaTeX preamble
- **Installed bibliography validator** — optional complement for citation keys and metadata; this skill checks bibliography system configuration
- **`init-project-research`** — creates projects from the template; this skill
  verifies ongoing compliance
- **`retarget-journal`** — handles journal-specific formatting (different concern)

Files in this skill

  • SKILL.md11.6 KB
  • references/comparison-checklist.md6.8 KB
  • references/report-format.md6.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.