paperlint 2.1.0 → 3.1.0
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/CLAUDE.md +6 -1
- package/README.md +243 -235
- package/action.yml +4 -6
- package/dist/adapters/references/index.d.ts +13 -0
- package/dist/adapters/references/index.d.ts.map +1 -0
- package/dist/adapters/references/index.js +55 -0
- package/dist/adapters/references/index.js.map +1 -0
- package/dist/adapters/references/reach.io.d.ts +3 -0
- package/dist/adapters/references/reach.io.d.ts.map +1 -0
- package/dist/adapters/references/reach.io.js +14 -0
- package/dist/adapters/references/reach.io.js.map +1 -0
- package/dist/build-engine.d.ts.map +1 -1
- package/dist/build-engine.js +6 -2
- package/dist/build-engine.js.map +1 -1
- package/dist/build.d.ts +15 -0
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +60 -7
- package/dist/build.js.map +1 -1
- package/dist/cli.d.ts +94 -30
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +500 -288
- package/dist/cli.js.map +1 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +40 -72
- package/dist/doctor.js.map +1 -1
- package/dist/engine.d.ts +9 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +27 -0
- package/dist/engine.js.map +1 -1
- package/dist/facts-file.d.ts +2 -2
- package/dist/facts-file.js +2 -2
- package/dist/hooks-settings.d.ts +0 -21
- package/dist/hooks-settings.d.ts.map +1 -1
- package/dist/hooks-settings.js +17 -135
- package/dist/hooks-settings.js.map +1 -1
- package/dist/init.d.ts +39 -29
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +144 -173
- package/dist/init.js.map +1 -1
- package/dist/link-skills.d.ts +1 -1
- package/dist/link-skills.d.ts.map +1 -1
- package/dist/link-skills.js +11 -29
- package/dist/link-skills.js.map +1 -1
- package/dist/new-paper.d.ts +8 -1
- package/dist/new-paper.d.ts.map +1 -1
- package/dist/new-paper.js +49 -25
- package/dist/new-paper.js.map +1 -1
- package/dist/paper-files.d.ts +85 -0
- package/dist/paper-files.d.ts.map +1 -0
- package/dist/paper-files.js +96 -0
- package/dist/paper-files.js.map +1 -0
- package/dist/paper-settings.d.ts +13 -41
- package/dist/paper-settings.d.ts.map +1 -1
- package/dist/paper-settings.js +71 -71
- package/dist/paper-settings.js.map +1 -1
- package/dist/ports/check-references.d.ts +31 -0
- package/dist/ports/check-references.d.ts.map +1 -0
- package/dist/ports/check-references.js +7 -0
- package/dist/ports/check-references.js.map +1 -0
- package/dist/presets.d.ts +1 -1
- package/dist/presets.d.ts.map +1 -1
- package/dist/presets.js +4 -6
- package/dist/presets.js.map +1 -1
- package/dist/reference-rules.d.ts +47 -0
- package/dist/reference-rules.d.ts.map +1 -0
- package/dist/reference-rules.js +156 -0
- package/dist/reference-rules.js.map +1 -0
- package/dist/references.d.ts +36 -0
- package/dist/references.d.ts.map +1 -0
- package/dist/references.js +91 -0
- package/dist/references.js.map +1 -0
- package/dist/rules-config.d.ts +5 -3
- package/dist/rules-config.d.ts.map +1 -1
- package/dist/rules-config.js +15 -6
- package/dist/rules-config.js.map +1 -1
- package/dist/structure.js +3 -3
- package/dist/structure.js.map +1 -1
- package/dist/tex-requirements.js +2 -2
- package/dist/tex-requirements.js.map +1 -1
- package/dist/toolchain.d.ts +5 -1
- package/dist/toolchain.d.ts.map +1 -1
- package/dist/toolchain.js +22 -5
- package/dist/toolchain.js.map +1 -1
- package/dist/types.d.ts +26 -18
- package/dist/types.d.ts.map +1 -1
- package/dist/venue-rules.d.ts.map +1 -1
- package/dist/venue-rules.js +12 -10
- package/dist/venue-rules.js.map +1 -1
- package/docs/configuration.md +163 -104
- package/docs/e2e.md +1 -1
- package/docs/install.md +25 -40
- package/docs/optional-rules.md +5 -4
- package/docs/rules.md +65 -24
- package/docs/skills.md +80 -0
- package/eslint-rules/bib-reachable-entry.mjs +75 -0
- package/eslint-rules/latex-language.mjs +29 -1
- package/eslint-rules/paper-stages.harness.mjs +1 -117
- package/eslint-rules/paper-stages.mjs +0 -120
- package/eslint-rules/paper-stages.mutations.mjs +0 -76
- package/eslint-rules/paper-typography.mjs +306 -191
- package/eslint-rules/paper-typography.test.mjs +337 -0
- package/eslint-rules/papers.harness.mjs +8 -12
- package/eslint-rules/papers.mjs +17 -31
- package/eslint-rules/pdf-last-page-balance.mjs +4 -7
- package/eslint-rules/review-frontmatter.mjs +118 -0
- package/eslint-rules/review-frontmatter.schema.json +36 -0
- package/eslint-rules/review-frontmatter.test.mjs +118 -0
- package/eslint-rules/sibling-frontmatter.mjs +19 -0
- package/eslint-rules/sibling-frontmatter.schema.json +14 -0
- package/eslint.config.mjs +0 -15
- package/fixtures/real-markdown-paper/baseline.json +6 -7
- package/fixtures/toolchain-mirror/catalog.txt +1 -0
- package/fixtures/toolchain-mirror/install-tl +4 -1
- package/fixtures/toolchain-mirror/stub-fmtutil-sys +4 -0
- package/fixtures/toolchain-mirror/stub-tlmgr +15 -0
- package/hooks/hooks.harness.mjs +39 -98
- package/hooks/hooks.mutations.mjs +6 -6
- package/hooks/paper-edit-guard.hook.d.mts +2 -3
- package/hooks/paper-edit-guard.hook.mjs +31 -42
- package/hooks/paper-skills-nudge.hook.mjs +21 -19
- package/hooks/paper-status-gates.hook.mjs +21 -19
- package/hooks/paper-status-gates.sh +8 -13
- package/lib/paper-config.d.mts +15 -25
- package/lib/paper-config.harness.mjs +18 -35
- package/lib/paper-config.mjs +83 -105
- package/lib/paper-config.mutations.mjs +2 -2
- package/lib/skill-checks.mjs +1 -1
- package/lib/skill-trigger-cases.harness.mjs +9 -8
- package/lib/skill-trigger-cases.mjs +7 -15
- package/package.json +1 -1
- package/scripts/eslint-report-guard.mjs +1 -1
- package/scripts/harness-api.frozen.json +0 -3
- package/scripts/mutation-batteries.frozen.json +5 -14
- package/skills/analyze-sibling-paper/SKILL.md +16 -12
- package/skills/analyze-sibling-paper/SKILL.md.spec.ts +15 -11
- package/skills/cold-read-diff/SKILL.md +20 -1
- package/skills/cold-read-diff/SKILL.md.spec.ts +19 -0
- package/skills/grade-paper-writing/SKILL.md +20 -1
- package/skills/grade-paper-writing/SKILL.md.spec.ts +19 -0
- package/skills/paper-pipeline/scripts/consumer.d.mts +0 -1
- package/skills/paper-pipeline/scripts/consumer.harness.mjs +8 -12
- package/skills/paper-pipeline/scripts/consumer.mjs +19 -33
- package/skills/paper-pipeline/scripts/extract-ref-facts.harness.mjs +6 -4
- package/skills/paper-pipeline/scripts/run-mechanical.mjs +2 -11
- package/skills/plan-paper-timeline/SKILL.md +2 -2
- package/skills/plan-paper-timeline/SKILL.md.spec.ts +1 -1
- package/skills/plan-paper-timeline/plan-paper-timeline.effects.harness.mjs +1 -1
- package/skills/plan-paper-timeline/plan-paper-timeline.effects.mutations.mjs +2 -2
- package/skills/render-paper/check-render.sh +2 -3
- package/skills/render-paper/render-paper.harness.mjs +2 -2
- package/skills/verify-citations/SKILL.md +10 -1
- package/skills/verify-citations/SKILL.md.spec.ts +9 -0
- package/skills/verify-citations/scripts/bib-authors.mjs +48 -26
- package/src/adapters/references/index.ts +102 -0
- package/src/adapters/references/reach.io.ts +12 -0
- package/src/build-engine.ts +6 -1
- package/src/build.harness.mjs +54 -6
- package/src/build.ts +89 -11
- package/src/cli.harness.mjs +149 -294
- package/src/cli.mutations.mjs +35 -44
- package/src/cli.ts +637 -328
- package/src/doctor.harness.mjs +41 -84
- package/src/doctor.mutations.mjs +9 -9
- package/src/doctor.ts +44 -89
- package/src/engine.harness.mjs +50 -0
- package/src/engine.ts +35 -0
- package/src/facts-file.test.ts +0 -7
- package/src/facts-file.ts +2 -2
- package/src/hooks-settings.harness.mjs +7 -92
- package/src/hooks-settings.mutations.mjs +2 -17
- package/src/hooks-settings.ts +18 -162
- package/src/init.test.ts +206 -0
- package/src/init.ts +187 -231
- package/src/link-skills.harness.mjs +1 -38
- package/src/link-skills.mutations.mjs +9 -5
- package/src/link-skills.ts +10 -34
- package/src/lint-fix.test.ts +120 -0
- package/src/linted-set.test.ts +118 -0
- package/src/new-paper.harness.mjs +2 -0
- package/src/new-paper.mutations.mjs +0 -14
- package/src/new-paper.test.ts +173 -14
- package/src/new-paper.ts +82 -30
- package/src/paper-files.test.ts +395 -0
- package/src/paper-files.ts +200 -0
- package/src/paper-settings-commands.test.ts +121 -122
- package/src/paper-settings.test.ts +93 -64
- package/src/paper-settings.ts +99 -97
- package/src/parse-args.test.ts +48 -0
- package/src/ports/check-references.ts +28 -0
- package/src/presets.ts +5 -15
- package/src/reference-rules.ts +229 -0
- package/src/references.test.ts +209 -0
- package/src/references.ts +138 -0
- package/src/rules-config.harness.mjs +24 -8
- package/src/rules-config.ts +19 -7
- package/src/rules-off.test.ts +111 -0
- package/src/structure.harness.mjs +4 -2
- package/src/structure.ts +3 -3
- package/src/tex-requirements.ts +2 -2
- package/src/toolchain.harness.mjs +41 -6
- package/src/toolchain.ts +29 -5
- package/src/types.ts +36 -18
- package/src/venue-rules.test.ts +23 -11
- package/src/venue-rules.ts +12 -14
- package/templates/paper/paperlint.json +1 -1
- package/eslint-rules/doc-fields.harness.mjs +0 -336
- package/eslint-rules/doc-fields.mjs +0 -186
- package/eslint-rules/doc-fields.mutations.mjs +0 -96
- package/eslint-rules/paper-typography.harness.mjs +0 -291
- package/eslint-rules/paper-typography.mutations.mjs +0 -131
- package/eslint-rules/review-findings-cause.harness.mjs +0 -228
- package/eslint-rules/review-findings-cause.mjs +0 -135
- package/eslint-rules/review-findings-cause.mutations.mjs +0 -72
- package/fixtures/paper-stages/authors-ran/PIPELINE-STATUS.md +0 -16
- package/fixtures/paper-stages/marker-in-prose/PIPELINE-STATUS.md +0 -17
- package/fixtures/review-findings-cause/clean.md +0 -17
- package/fixtures/review-findings-cause/defect.md +0 -14
- package/fixtures/review-findings-cause/old-debt.md +0 -14
- package/fixtures/review-findings-cause/quiet-in-fence.md +0 -16
package/CLAUDE.md
CHANGED
|
@@ -193,7 +193,7 @@ the CONFIG is not declaring something. Check that before adding a verb.
|
|
|
193
193
|
|
|
194
194
|
`npm i -D paperlint` brings all the code — rules, skills, hooks, scripts. `paperlint init`
|
|
195
195
|
then does what only a command can, because it depends on the project it lands in: it finds the
|
|
196
|
-
papers directory and declares it in `
|
|
196
|
+
papers directory and declares it in a root `paperlint.json` when it is not the default `papers`, links each skill into `.claude/skills/`, writes
|
|
197
197
|
the hook commands into `.claude/settings.json` (vigiles' `mergeRegistrations`, reading
|
|
198
198
|
`plugin/hooks/hooks.json` as the one source), and offers a CI workflow pinned to the installed
|
|
199
199
|
release's tag. `paperlint doctor` reads all of it back. Details: `docs/install.md`.
|
|
@@ -520,6 +520,11 @@ import none of the three are frozen in `scripts/harness-api.frozen.json`, which
|
|
|
520
520
|
exits 1 when no file matches, and it transpiles without type-checking, so `npm run check` runs
|
|
521
521
|
`tsc -p tsconfig.test.json` as its own gate.
|
|
522
522
|
|
|
523
|
+
**Local = the fast gates on what you touched; the full `npm run check` = CI.** Locally run vitest on
|
|
524
|
+
the touched test files, `npx tsc --noEmit`, `npx eslint <touched files>` and `npm run fmt:check`, then
|
|
525
|
+
push and read CI by job name. The repo is public, so CI is free, and it also runs the TeX e2e that
|
|
526
|
+
cannot run locally; a local full run takes 10-15 min, most of it the mutation batteries (#52).
|
|
527
|
+
|
|
523
528
|
⚠️ **Not `vigiles test .`** — the `.` is read as a FILE, the runner dies with
|
|
524
529
|
`ERR_UNSUPPORTED_DIR_IMPORT`, and it still exits 0. See the measured table below.
|
|
525
530
|
|
package/README.md
CHANGED
|
@@ -1,297 +1,305 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
README style — keep it scannable, not a wall of text:
|
|
3
|
+
- One idea per paragraph; paragraphs ≤ 3 lines. Split anything longer.
|
|
4
|
+
- Every section starts with a heading (##); sub-topics get ###. No section longer than one screen.
|
|
5
|
+
- Lists over prose for anything with 3+ items; bullets ≤ 2 lines.
|
|
6
|
+
- Tables for comparisons (commands, venues, checks). Code blocks for every command and file.
|
|
7
|
+
- A blank line between every block. Bold only for the one phrase a skimmer must see.
|
|
8
|
+
- Mechanics and edge cases live in docs/, linked — not inline.
|
|
9
|
+
- A reader must be able to answer "what is it, which venues, how do I start" from the first screen.
|
|
10
|
+
- Sparse emoji are fine where they help rhythm and scanning (e.g. one per section heading or feature bullet); never decorative, never several in a row.
|
|
11
|
+
- One name per thing, everywhere (lint, build, venue preset, kind, skill, papersDir), each explained once, before it is used.
|
|
12
|
+
- Editing this file: re-read all of it first, and change it so it still reads as one document — the opening, the diagram, the order and the names your change touches. Remove or merge what it makes redundant. Never bolt on a section or patch one paragraph in isolation.
|
|
13
|
+
-->
|
|
14
|
+
|
|
1
15
|
# paperlint
|
|
2
16
|
|
|
3
17
|
[](https://www.npmjs.com/package/paperlint)
|
|
4
18
|

|
|
5
19
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
-
|
|
26
|
-
|
|
27
|
-
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
20
|
+
**Write a research paper in LaTeX from idea to camera-ready, and catch what gets it sent back
|
|
21
|
+
before you submit.** It comes in two parts:
|
|
22
|
+
|
|
23
|
+
- ✅ **A linter** — a command-line tool, no AI needed. Its headline catches:
|
|
24
|
+
- 📏 a paper over the page limit for its kind at your venue;
|
|
25
|
+
- 🔤 the wrong font — LaTeX silently fell back to Computer Modern because a package was missing;
|
|
26
|
+
- 🔗 a bad reference — a cited work that does not exist, or lists the preprint's authors.
|
|
27
|
+
|
|
28
|
+
Smaller slips too: `§` for "Section", `.05` for `0.05` — fixed for you.
|
|
29
|
+
|
|
30
|
+
- 🧠 **Skills for [Claude Code](https://claude.com/claude-code)** — optional, 24 of them, covering the
|
|
31
|
+
whole pipeline: the idea, the venue, the study, the draft, the reviews, submission.
|
|
32
|
+
|
|
33
|
+
## Contents
|
|
34
|
+
|
|
35
|
+
- [The pipeline](#-the-pipeline)
|
|
36
|
+
- [Supported venues](#-supported-venues)
|
|
37
|
+
- [Getting started](#-getting-started)
|
|
38
|
+
- [A new paper](#a-new-paper)
|
|
39
|
+
- [A paper you already have](#a-paper-you-already-have)
|
|
40
|
+
- [Commands](#-commands)
|
|
41
|
+
- [Skills](#-skills)
|
|
42
|
+
- [Lint and build](#-lint-and-build)
|
|
43
|
+
- [Configuration](#-configuration)
|
|
44
|
+
- [Add a venue that isn't listed](#-add-a-venue-that-isnt-listed)
|
|
45
|
+
- [Run it in CI](#-run-it-in-ci)
|
|
46
|
+
- [FAQ](#-faq)
|
|
47
|
+
- [Docs](#-docs)
|
|
48
|
+
|
|
49
|
+
## 🧭 The pipeline
|
|
50
|
+
|
|
51
|
+
```text
|
|
52
|
+
stage what you get skills linter
|
|
53
|
+
1 idea a go / no-go, with the reason yes
|
|
54
|
+
2 venue venues ranked, deadlines planned yes
|
|
55
|
+
3 study a study design, honest statistics yes
|
|
56
|
+
4 draft a first draft, then a tighter one yes lint
|
|
57
|
+
5 review the objections, before the reviewers yes lint
|
|
58
|
+
6 submit a PDF within the limit, recorded yes build, lint
|
|
59
|
+
7 camera-ready the final, de-anonymised PDF yes build, lint
|
|
60
|
+
8 extend a plan for the next paper yes
|
|
61
|
+
|
|
62
|
+
skills: optional, with Claude Code
|
|
63
|
+
lint: every edit and every CI run, once the paper exists (paperlint new)
|
|
64
|
+
build: compiles and measures the PDF; lint then checks pages, fonts, references
|
|
65
|
+
```
|
|
37
66
|
|
|
38
|
-
|
|
67
|
+
## 🎯 Supported venues
|
|
39
68
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
npx paperlint init
|
|
43
|
-
```
|
|
69
|
+
A **venue preset** holds a venue's format and page limits. A paper's **kind** picks which limit
|
|
70
|
+
applies: at AgenticDev a `short` paper gets 5 pages and a `full` one 10. You choose it once per paper.
|
|
44
71
|
|
|
45
|
-
|
|
46
|
-
|
|
72
|
+
| preset | venue | format | kinds and page limits |
|
|
73
|
+
| ----------------------- | ------------------ | ------------------ | ------------------------------------------------------------------------------------------- |
|
|
74
|
+
| `paperlint:acm-sigconf` | any ACM conference | ACM two-column | no kinds: the format only, no page limit |
|
|
75
|
+
| `paperlint:agenticdev` | AgenticDev @ ASE | ACM two-column | `short` 5, `full` 10, `demo` 5 pages, + 2 pages of references |
|
|
76
|
+
| `paperlint:aisec` | AISec @ ACM CCS | ACM two-column | `research`, `benchmark`, `position`, `sok`: 10 pages + 2 pages of references |
|
|
77
|
+
| `paperlint:realm` | REALM @ EMNLP | ACL two-column, A4 | `long` 8, `short` 4 — recorded, not checked ([why](docs/rules.md#checks-against-the-venue)) |
|
|
47
78
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
asks questions only when you run it in a terminal; an agent, CI or `--yes` gets the defaults, and
|
|
51
|
-
each default it takes is printed. It ends by running `paperlint doctor`, which checks the setup.
|
|
52
|
-
Exactly what it writes: [`docs/install.md`](docs/install.md#what-paperlint-init-writes).
|
|
79
|
+
Not shipped yet: IEEE, USENIX, NeurIPS, Springer, and ACL venues other than REALM.
|
|
80
|
+
[Add yours](#-add-a-venue-that-isnt-listed) in one small file.
|
|
53
81
|
|
|
54
|
-
##
|
|
82
|
+
## 🚀 Getting started
|
|
55
83
|
|
|
56
|
-
|
|
57
|
-
| ----------------------------- | -------------------------------------------------------------------------------------------------- |
|
|
58
|
-
| `npx paperlint init` | sets the project up (see above) |
|
|
59
|
-
| `npx paperlint new my-paper` | creates a paper folder from a template; never overwrites a file |
|
|
60
|
-
| `npx paperlint lint` | runs every check over your papers; `npx paperlint lint papers/my-paper` checks one |
|
|
61
|
-
| `npx paperlint build <paper>` | compiles `paper.tex` to `paper.pdf` with pdflatex and bibtex; `--all` builds every paper |
|
|
62
|
-
| `npx paperlint toolchain` | installs TeX Live with the LaTeX packages your venues need; `--check` only reports what is missing |
|
|
63
|
-
| `npx paperlint doctor` | checks the setup and exits non-zero if something is miswired |
|
|
64
|
-
| `npx paperlint --help` | every command and flag |
|
|
84
|
+
### A new paper
|
|
65
85
|
|
|
66
|
-
|
|
67
|
-
`paperlint build` offers to install it the first time it needs it.
|
|
86
|
+
<!-- `vigiles:symbol src/init.ts#init` — `npm run check` fails if this function is renamed or removed. -->
|
|
68
87
|
|
|
69
|
-
|
|
88
|
+
1. Install (Node 22.13 or newer):
|
|
70
89
|
|
|
71
|
-
|
|
90
|
+
```sh
|
|
91
|
+
npm i -D paperlint
|
|
92
|
+
```
|
|
72
93
|
|
|
73
|
-
|
|
94
|
+
2. Set up. `init` asks three questions: where your papers live (default `papers/`), whether to
|
|
95
|
+
install TeX Live now, and whether to add a CI workflow. With Claude Code it also installs the
|
|
96
|
+
skills and three hooks ([what they do](docs/install.md)).
|
|
74
97
|
|
|
75
|
-
|
|
98
|
+
```sh
|
|
99
|
+
npx paperlint init
|
|
100
|
+
```
|
|
76
101
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
```
|
|
102
|
+
3. Create a paper. `--venue` names its venue preset from the table above, `--kind` which of its page
|
|
103
|
+
limits applies:
|
|
80
104
|
|
|
81
|
-
|
|
82
|
-
✓ created papers/my-paper
|
|
83
|
-
+ PIPELINE-STATUS.md (from the package template)
|
|
84
|
-
+ paper.tex (from the package template)
|
|
85
|
-
+ paperlint.json (from the package template)
|
|
105
|
+
<!-- `vigiles:symbol src/new-paper.ts#newPaper` — `npm run check` fails if this function is renamed or removed. -->
|
|
86
106
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
107
|
+
```sh
|
|
108
|
+
npx paperlint new my-paper --venue agenticdev --kind short
|
|
109
|
+
```
|
|
90
110
|
|
|
91
|
-
|
|
92
|
-
|
|
111
|
+
It writes `papers/my-paper/` (in the folder you gave `init`) with three files:
|
|
112
|
+
- `paper.tex` — your paper;
|
|
113
|
+
- `paperlint.json` — its venue preset and kind;
|
|
114
|
+
- `PIPELINE-STATUS.md` — which stage the paper is at; the skills read and update it.
|
|
93
115
|
|
|
94
|
-
|
|
116
|
+
4. Build the PDF. **This needs TeX Live, a ~270 MB download (~3 min, once).** If you said no in
|
|
117
|
+
`init`, run `npx paperlint toolchain` first.
|
|
95
118
|
|
|
96
|
-
|
|
119
|
+
```sh
|
|
120
|
+
npx paperlint build papers/my-paper
|
|
121
|
+
```
|
|
97
122
|
|
|
98
|
-
|
|
99
|
-
papers/
|
|
100
|
-
my-paper/
|
|
101
|
-
paper.tex the paper, in LaTeX
|
|
102
|
-
PIPELINE-STATUS.md the paper's record: its research question and the stages it reached
|
|
103
|
-
paperlint.json this paper's settings: its venue preset and kind — `new` writes it
|
|
104
|
-
reviews/*.md review notes (optional)
|
|
105
|
-
versions/ the exact PDF and source you sent at each stage, never edited
|
|
106
|
-
```
|
|
123
|
+
5. Check it:
|
|
107
124
|
|
|
108
|
-
|
|
109
|
-
|
|
125
|
+
```sh
|
|
126
|
+
npx paperlint lint
|
|
127
|
+
```
|
|
110
128
|
|
|
111
|
-
|
|
112
|
-
{ "extends": "paperlint:aisec", "kind": "research" }
|
|
113
|
-
```
|
|
129
|
+
On the stub from step 3 the first run already catches something (output shortened):
|
|
114
130
|
|
|
115
|
-
|
|
131
|
+
```text
|
|
132
|
+
papers/my-paper/paper.tex
|
|
133
|
+
1:1 error 1 column(s), agenticdev requires 2 — the wrong document class or class option pdf/geometry
|
|
134
|
+
1:1 error no font starts with `LinLibertine` (body text of agenticdev); the PDF has: CMR10, … pdf/fonts
|
|
135
|
+
8:4 warning `§` instead of the word «Section» — `paperlint lint --fix` writes it paper/section-word
|
|
136
|
+
```
|
|
116
137
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
papers/my-paper/
|
|
120
|
-
paperlint.json { "extends": "paperlint:aisec", … } this paper
|
|
121
|
-
paperlint:aisec a venue preset: shipped, or ./your-venue.jsonc the venue
|
|
122
|
-
```
|
|
138
|
+
`new` writes a format-neutral stub in plain `article`, and AgenticDev wants ACM's class. Make
|
|
139
|
+
the first line `\documentclass[sigconf]{acmart}`, build again, and the errors are gone.
|
|
123
140
|
|
|
124
|
-
|
|
125
|
-
`paperlint.json` replaces `venue.json` (2.1.0); `npx paperlint init` moves it.
|
|
141
|
+
### A paper you already have
|
|
126
142
|
|
|
127
|
-
|
|
128
|
-
version for the proceedings). The name may use `a-z`, `0-9`, `.`, `_` and `-`. On a folder that
|
|
129
|
-
already exists, `paperlint new` adds only the missing files. To use your own templates, put files with
|
|
130
|
-
the same names in `papers/.template/`; `{{name}}` in them becomes the paper's name.
|
|
143
|
+
paperlint finds a paper by its folder: `<papersDir>/<name>/`, with the main file named `paper.tex`.
|
|
131
144
|
|
|
132
|
-
|
|
145
|
+
1. Put the paper there — for example `papers/my-paper/paper.tex`, the rest of its files beside it. If
|
|
146
|
+
your paper folders already live elsewhere, say `thesis/`, [set `papersDir`](#-configuration) instead.
|
|
147
|
+
2. Run `npx paperlint new my-paper --venue <preset> --kind <kind>`. On an existing folder it only
|
|
148
|
+
adds the missing `paperlint.json` and `PIPELINE-STATUS.md`; it never touches `paper.tex`.
|
|
149
|
+
3. Build and lint, as above.
|
|
133
150
|
|
|
134
|
-
|
|
135
|
-
npx paperlint lint # check every paper
|
|
136
|
-
npx paperlint build papers/my-paper # writes papers/my-paper/paper.pdf
|
|
137
|
-
```
|
|
151
|
+
## 🧰 Commands
|
|
138
152
|
|
|
139
|
-
|
|
140
|
-
|
|
153
|
+
| command | what it does |
|
|
154
|
+
| ----------------------------------------------------------- | ------------------------------------------------------------------------------ |
|
|
155
|
+
| `npx paperlint init` | sets the project up |
|
|
156
|
+
| `npx paperlint new my-paper --venue <preset> --kind <kind>` | creates a paper folder for that venue, or completes an existing one |
|
|
157
|
+
| `npx paperlint build <paper>` | compiles `paper.tex` to `paper.pdf`, measures it, checks the references online |
|
|
158
|
+
| `npx paperlint lint` | runs every check over your papers; `--fix` fixes what can be fixed |
|
|
159
|
+
| `npx paperlint toolchain` | installs TeX Live with the packages your venues need (~270 MB, ~3 min, once) |
|
|
160
|
+
| `npx paperlint doctor` | checks the setup and exits non-zero if something is miswired |
|
|
161
|
+
| `npx paperlint --help` | every command and flag |
|
|
141
162
|
|
|
142
|
-
|
|
143
|
-
matter of `PIPELINE-STATUS.md`, with the file sizes in bytes:
|
|
163
|
+
## 🧠 Skills
|
|
144
164
|
|
|
145
|
-
|
|
146
|
-
stages
|
|
147
|
-
|
|
148
|
-
date: 2026-07-22
|
|
149
|
-
venue: A Venue 2026
|
|
150
|
-
pdf: versions/2026-07-22-submitted.pdf
|
|
151
|
-
bytes: 305412
|
|
152
|
-
source: versions/2026-07-22-submitted.tex
|
|
153
|
-
sourceBytes: 57210
|
|
154
|
-
```
|
|
165
|
+
You do not need to learn the skills' names: you ask Claude Code, and the matching skill starts.
|
|
166
|
+
`paper-pipeline` walks you through the stages; any skill also starts on its own when you ask for
|
|
167
|
+
what it does — "is this idea worth a paper?", "find me a venue for this". `init` installs them.
|
|
155
168
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
169
|
+
- **A go / no-go on your idea, with the reason.** `research-ideate`
|
|
170
|
+
- **A ranked list of venues that fit** — deadline, page limit, indexing. `find-venue`
|
|
171
|
+
- **A first draft from your results.** `draft-paper`
|
|
172
|
+
- **A hostile review before the real one.** `paper-adversarial-review`
|
|
173
|
+
- **A ready / not ready verdict before you submit**, worst problem first. `harden-paper`
|
|
174
|
+
- **Where your paper stands**, measured from the real build. `paper-status`
|
|
159
175
|
|
|
160
|
-
|
|
176
|
+
All 24, by stage: [`docs/skills.md`](docs/skills.md).
|
|
161
177
|
|
|
162
|
-
|
|
178
|
+
## 🔍 Lint and build
|
|
163
179
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
1:1 warning 1 × `§` instead of «Section» (reviewer B). Paying the debt down is silent; growth is reported paper/typography
|
|
170
|
-
1:1 warning 1 × a decimal without a leading zero, `.05` instead of `0.05` (IEEE / ISO 80000-1 style). Paying the debt down is silent; growth is reported paper/typography
|
|
171
|
-
|
|
172
|
-
✖ 2 problems (0 errors, 2 warnings)
|
|
173
|
-
```
|
|
180
|
+
| | `paperlint build` | `paperlint lint` |
|
|
181
|
+
| ------ | -------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
|
|
182
|
+
| needs | Node, TeX Live, the network | Node |
|
|
183
|
+
| does | compiles `paper.tex`, measures the PDF, checks each reference online (exists, right authors) | checks the source, and judges what build recorded: page limit, fonts, the reference results — offline |
|
|
184
|
+
| writes | `paper.pdf`, and in `_build/` the measurements and the reference results | nothing (`--fix`: the three fixable slips) |
|
|
174
185
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
186
|
+
- If `paper.pdf` or the bibliography changed since the last build, lint fails and tells you to rebuild.
|
|
187
|
+
- Lint also checks the pipeline's own records: `PIPELINE-STATUS.md`, reviews, notes on related
|
|
188
|
+
papers ([`docs/rules.md`](docs/rules.md)).
|
|
189
|
+
- The rules run on ESLint, so a deliberate exception is a comment on the line above:
|
|
190
|
+
`% eslint-disable-next-line paper/leading-zero -- quoted from the reviewer`.
|
|
191
|
+
- Errors fail the run; warnings only print, unless you pass `--max-warnings <n>`.
|
|
180
192
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
never fail the run unless you pass `--max-warnings <n>`. `--json` prints the findings as JSON.
|
|
193
|
+
Every check: [`docs/rules.md`](docs/rules.md). How build compiles:
|
|
194
|
+
[`docs/configuration.md`](docs/configuration.md#how-paperlint-build-compiles-a-paper).
|
|
184
195
|
|
|
185
|
-
##
|
|
196
|
+
## 🧩 Configuration
|
|
186
197
|
|
|
187
|
-
|
|
198
|
+
Two levels, one file name, both optional:
|
|
188
199
|
|
|
189
|
-
```yaml
|
|
190
|
-
- uses: zernie/paperlint@v2.0.0
|
|
191
|
-
with:
|
|
192
|
-
paths: papers
|
|
193
200
|
```
|
|
201
|
+
paperlint.json the project: papersDir, rules, defaults for every paper
|
|
202
|
+
papers/my-paper/paperlint.json one paper: its venue preset ("extends"), its kind, its own rules
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
- `papersDir` is the folder that holds your paper folders; it defaults to `papers`.
|
|
206
|
+
- The paper's venue preset is its `"extends"` key — the one `new --venue` writes.
|
|
207
|
+
- A paper's `paperlint.json` overrides the project's, key by key.
|
|
208
|
+
- **An unknown key is an error**, so a typo cannot silently turn a setting off.
|
|
194
209
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
| ------------------------------ | ------- | ---------------------------------------------------------------------------------------------------------------- |
|
|
205
|
-
| `paper/stages` | error | a stage's PDF is missing, or it is not the same file any more (its size changed) |
|
|
206
|
-
| `paper/source` | error | a stage has no frozen source file next to its PDF |
|
|
207
|
-
| `paper/author-list` | warning | a stage is declared, but `PIPELINE-STATUS.md` does not record that the author list was checked |
|
|
208
|
-
| `paper/research-question` | warning | the research question is missing from `PIPELINE-STATUS.md`, or the paper does not contain that sentence |
|
|
209
|
-
| `paper/typography` | warning | more `§`, `.05`-style decimals, mixed `Fig.`/`Figure`, or references without a DOI or URL than you allowed |
|
|
210
|
-
| `tex/future-promise` | warning | a camera-ready still says your code "will be released" |
|
|
211
|
-
| `tex/acm-frontmatter-override` | error | an ACM paper overrides the template's title-page commands, so parts of page 1 go missing |
|
|
212
|
-
| `review/findings-cause` | error | a review note lists several findings and names no cause for any of them |
|
|
213
|
-
| `doc/fields` | warning | a review note's front matter is missing a field you require (off unless configured) |
|
|
214
|
-
| `pdf/limits` | error | more body or reference pages than the venue allows for your kind of paper, or a reference font size out of range |
|
|
215
|
-
| `pdf/fonts` | error | a Type 3 or unembedded font, or the venue template's fonts are missing (a silent Computer Modern fallback) |
|
|
216
|
-
| `pdf/geometry` | error | the paper size or column count differs from the venue's |
|
|
217
|
-
| `pdf/body-size` | warning | the body font size is off the venue's |
|
|
218
|
-
| `pdf/profile` | error | the paper's `extends` names no preset (a typo), or a kind of paper the venue does not have |
|
|
219
|
-
| `pdf/fresh` | error | the build facts describe an earlier PDF than the one on disk |
|
|
220
|
-
| `pdf/measured` | warning | the venue checks did not run: the paper names no venue preset yet, or was not built |
|
|
221
|
-
|
|
222
|
-
The `pdf/` checks run only for a paper whose `paperlint.json` extends a venue preset, and they judge the PDF
|
|
223
|
-
`paperlint build` made: build, then lint. Errors fail the run; warnings only print. What each check
|
|
224
|
-
reads: [`docs/rules.md`](docs/rules.md).
|
|
225
|
-
Checks that only some venues need are off until you turn them on:
|
|
226
|
-
[`docs/optional-rules.md`](docs/optional-rules.md).
|
|
227
|
-
|
|
228
|
-
## Configuration
|
|
229
|
-
|
|
230
|
-
`paperlint init` writes the one required setting into `package.json`:
|
|
231
|
-
|
|
232
|
-
```json
|
|
210
|
+
Every key: [`docs/configuration.md`](docs/configuration.md). Already use ESLint for other files? See
|
|
211
|
+
[`docs/configuration.md`](docs/configuration.md#using-the-rules-from-an-existing-eslint-config).
|
|
212
|
+
|
|
213
|
+
### ➕ Add a venue that isn't listed
|
|
214
|
+
|
|
215
|
+
A venue preset is a small JSONC file: the preset it builds on, and the page limit of each kind of
|
|
216
|
+
paper. For an ACM workshop with a 4-page limit for short papers, `venues/my-workshop.jsonc`:
|
|
217
|
+
|
|
218
|
+
```jsonc
|
|
233
219
|
{
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
220
|
+
// page size, columns and fonts of the ACM two-column format
|
|
221
|
+
"extends": "paperlint:acm-sigconf",
|
|
222
|
+
"format": {
|
|
223
|
+
// one entry per kind of paper the call for papers names
|
|
224
|
+
"kinds": {
|
|
225
|
+
// the limit from the call for papers, in pages, references not counted
|
|
226
|
+
"short": { "body_pages_max": 4 },
|
|
227
|
+
},
|
|
228
|
+
},
|
|
237
229
|
}
|
|
238
230
|
```
|
|
239
231
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
232
|
+
```sh
|
|
233
|
+
npx paperlint new my-paper --venue ./venues/my-workshop.jsonc --kind short
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
Give the path from where you run the command; `new` rewrites it relative to the paper's own
|
|
237
|
+
`paperlint.json`. A venue in another format: [`docs/rules.md`](docs/rules.md#writing-your-own-venue-preset).
|
|
238
|
+
|
|
239
|
+
## 🤖 Run it in CI
|
|
240
|
+
|
|
241
|
+
Two options:
|
|
245
242
|
|
|
246
|
-
|
|
243
|
+
| job | time | checks |
|
|
244
|
+
| -------------------------- | ----------------------------- | ------------------------------------------ |
|
|
245
|
+
| build, then lint | ~3 min first run, then cached | everything |
|
|
246
|
+
| lint only (`init` adds it) | seconds | the source; not pages, fonts or references |
|
|
247
247
|
|
|
248
|
-
|
|
248
|
+
Lint judges pages, fonts and references from what build measured, so the full job builds first:
|
|
249
|
+
|
|
250
|
+
```yaml
|
|
251
|
+
name: papers
|
|
252
|
+
on: [push, pull_request]
|
|
253
|
+
jobs:
|
|
254
|
+
papers:
|
|
255
|
+
runs-on: ubuntu-latest
|
|
256
|
+
steps:
|
|
257
|
+
- uses: actions/checkout@v4
|
|
258
|
+
- uses: actions/setup-node@v4
|
|
259
|
+
with:
|
|
260
|
+
node-version: 22
|
|
261
|
+
- run: npm ci
|
|
262
|
+
- uses: actions/cache@v4
|
|
263
|
+
with:
|
|
264
|
+
path: ~/.cache/paperlint/texlive
|
|
265
|
+
key: texlive-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
|
|
266
|
+
- run: npx paperlint toolchain
|
|
267
|
+
- run: npx paperlint build --all
|
|
268
|
+
- run: npx paperlint lint
|
|
269
|
+
```
|
|
249
270
|
|
|
250
|
-
|
|
251
|
-
submission and camera-ready. They are linked into `.claude/skills/`. Start with `/paper-pipeline`;
|
|
252
|
-
it routes to the rest. Some call Java or Python 3, which you install yourself.
|
|
271
|
+
Lint only — each paper then gets one warning that it was not built:
|
|
253
272
|
|
|
254
|
-
|
|
255
|
-
|
|
273
|
+
```yaml
|
|
274
|
+
- uses: zernie/paperlint@v3.0.0
|
|
275
|
+
with:
|
|
276
|
+
paths: papers # your papersDir
|
|
277
|
+
```
|
|
256
278
|
|
|
257
|
-
|
|
258
|
-
| -------------------- | ------- | ---------------------------------------------------------------- |
|
|
259
|
-
| `paper-edit-guard` | yes | stops a shell command from writing to a paper file |
|
|
260
|
-
| `paper-skills-nudge` | no | after a paper edit, shows the agent the pre-submission checklist |
|
|
261
|
-
| `paper-status-gates` | no | after a paper edit, lists the stages that have not run yet |
|
|
279
|
+
## ❓ FAQ
|
|
262
280
|
|
|
263
|
-
**
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
with a normal file edit — those are not blocked.
|
|
281
|
+
**Does it install anything without asking?**
|
|
282
|
+
No. TeX Live comes only from `paperlint toolchain`, or when you say yes in `init` or `build`. On
|
|
283
|
+
Windows, install TeX Live yourself.
|
|
267
284
|
|
|
268
|
-
|
|
285
|
+
**Several papers for different venues in one repo?**
|
|
286
|
+
Yes. Each paper names its own venue preset in its own `paperlint.json`.
|
|
269
287
|
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
- **It does not guess what to check.** There is no default papers directory.
|
|
274
|
-
- **It does not overwrite your files.** `paperlint new` and `paperlint init` only add what is missing.
|
|
275
|
-
- **It does not run your build script.** `paperlint build` compiles the paper itself.
|
|
276
|
-
- **It does not write or grade the paper.** `paperlint lint` checks records and a few mechanical
|
|
277
|
-
mistakes; judging the writing is what the optional skills are for.
|
|
278
|
-
- **New papers are LaTeX.** Markdown papers (`paper.md`) are still read but deprecated
|
|
279
|
-
([#57](https://github.com/zernie/paperlint/issues/57)).
|
|
280
|
-
- **No Yarn Plug'n'Play.** npm and pnpm are supported
|
|
281
|
-
([`docs/install.md`](docs/install.md#package-managers)).
|
|
288
|
+
**Does it change my paper?**
|
|
289
|
+
Only `paperlint lint --fix`, and only three rules: `paper/section-word` (`§` → Section),
|
|
290
|
+
`paper/leading-zero` (`.05` → `0.05`) and `paper/figure-ref-style` (one figure-reference style).
|
|
282
291
|
|
|
283
|
-
##
|
|
292
|
+
## 📚 Docs
|
|
284
293
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
294
|
+
- [`docs/skills.md`](docs/skills.md) — every skill, by stage
|
|
295
|
+
- [`docs/install.md`](docs/install.md) — what `init` does, the hooks, package managers, troubleshooting
|
|
296
|
+
- [`docs/configuration.md`](docs/configuration.md) — every setting, how `build` compiles, using your own ESLint
|
|
297
|
+
- [`docs/rules.md`](docs/rules.md) — every check, venue presets, recording a submitted PDF
|
|
298
|
+
- [`docs/optional-rules.md`](docs/optional-rules.md) — checks only some venues need
|
|
299
|
+
- [`docs/toolchain.md`](docs/toolchain.md) — TeX Live, and Banal (HotCRP's page-geometry checker, GPL)
|
|
300
|
+
- [`CONTRIBUTING.md`](CONTRIBUTING.md) — how the package is tested and released, and adding a venue to it
|
|
288
301
|
|
|
289
302
|
## License
|
|
290
303
|
|
|
291
|
-
MIT.
|
|
292
|
-
|
|
293
|
-
**banal is not part of this package.** banal, the page-geometry script from
|
|
294
|
-
[HotCRP](https://github.com/kohler/hotcrp) (Geoffrey M. Voelker, Eddie Kohler), is licensed
|
|
295
|
-
GPL-2.0-or-later. paperlint does not contain, copy or modify it: `paperlint toolchain` downloads it from HotCRP
|
|
296
|
-
at a pinned commit, checks its sha256, and paperlint runs it as a separate program (`perl banal …`),
|
|
297
|
-
reading its JSON output. Details: [`docs/toolchain.md`](docs/toolchain.md#page-geometry-banal-without-poppler).
|
|
304
|
+
MIT. Banal, used for page geometry, is GPL and not part of this package:
|
|
305
|
+
[`docs/toolchain.md`](docs/toolchain.md#page-geometry-banal-without-poppler).
|
package/action.yml
CHANGED
|
@@ -26,11 +26,9 @@ description: Install the toolchain the texcount/* rules need, run ESLint, and re
|
|
|
26
26
|
inputs:
|
|
27
27
|
config:
|
|
28
28
|
description: >-
|
|
29
|
-
Path to the `
|
|
30
|
-
the way eslint and tsc find theirs, so
|
|
31
|
-
|
|
32
|
-
ESLint FLAT CONFIG and defaulted to `eslint.config.mjs`; a caller still passing one will
|
|
33
|
-
fail loudly on the first run rather than lint against it.
|
|
29
|
+
Path to the project's root `paperlint.json`. Optional, and so is the file: `paperlint lint`
|
|
30
|
+
finds it by walking up from the working directory, the way eslint and tsc find theirs, so
|
|
31
|
+
most callers never set this. Pass it only when the file is somewhere the walk cannot reach.
|
|
34
32
|
required: false
|
|
35
33
|
default: ""
|
|
36
34
|
paths:
|
|
@@ -135,4 +133,4 @@ runs:
|
|
|
135
133
|
npx paperlint lint $PAPERLINT_PATHS ${PAPERLINT_CONFIG:+--config "$PAPERLINT_CONFIG"} \
|
|
136
134
|
--max-warnings="$PAPERLINT_MAXWARN" --json > "$RUNNER_TEMP/paperlint-report.json" || RC=$?
|
|
137
135
|
node "$GITHUB_ACTION_PATH/scripts/eslint-report-guard.mjs" \
|
|
138
|
-
"$RUNNER_TEMP/paperlint-report.json" "$RC" "$PAPERLINT_PATHS" "${PAPERLINT_CONFIG:-
|
|
136
|
+
"$RUNNER_TEMP/paperlint-report.json" "$RC" "$PAPERLINT_PATHS" "${PAPERLINT_CONFIG:-paperlint.json}"
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The online reference checks, as the `CheckReferences` port: `verify-cites` (the cited work
|
|
3
|
+
* exists, the title matches — Crossref, OpenAlex, Semantic Scholar, arXiv) and `bib-authors` (the
|
|
4
|
+
* authors are the published version's — DBLP). Both ship in this package's verify-citations skill;
|
|
5
|
+
* this adapter only runs them and shapes their answers.
|
|
6
|
+
*
|
|
7
|
+
* "Not checked" is decided up front, by one request: when Crossref cannot be reached at all, the
|
|
8
|
+
* checkers would degrade every entry to `unresolvable` / `unchecked`, which reads like a result.
|
|
9
|
+
* Saying `not-checked` with the reason is the honest record.
|
|
10
|
+
*/
|
|
11
|
+
import type { CheckReferences } from "../../ports/check-references.ts";
|
|
12
|
+
export declare const onlineReferences: CheckReferences;
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/references/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,iCAAiC,CAAC;AAwEzC,eAAO,MAAM,gBAAgB,EAAE,eAgB9B,CAAC"}
|