Checklist
The items a repository must pass to follow the Lupinum OSS standard, which items are only advice, and how the audit reports them.
A library follows the Lupinum OSS standard when every must item that applies to it passes. Must items guard security and releases. Advice items keep a repository pleasant to work in; the audit shows them as warnings, and they never decide the answer.
The audit answers with yes or no. "Open" lists the must items that block; "Warnings" lists what deserves a look, with advice marked: "Open: GH-05 (fail), NPM-01 (manual)" and "Warnings: GH-07, FILE-08 (advice)".
A repository that publishes nothing to npm, such as this one, skips the items
marked library. A library without a docs/ folder skips the items marked
docs: docs are optional, but a library that has them follows
Write library docs.
How items are checked
auto: the audit checks it every time. Run the audit; record nothing.manual: only the maintainer can do it, in their npm account. Record the date and a short note infleet/libraries.json:json { "repository": "lupinum-dev/nuxt-tour", "evidence": { "NPM-01": "2026-10-03 — trusted publisher release.yml (environment npm, publish); 2FA required, tokens disallowed" } }NPM-01 is the only item with evidence. Remove it when it no longer holds.
agent: an agent looks at it during a review. It is advice; the audit does not report it and nothing is recorded.
Check a repository
From a lupinum-oss checkout:
pnpm audit:repos OWNER/REPO # every item, with GitHub and npm
node scripts/audit.mjs --local DIR # file items only, before the first pushThe audit lists each item with PASS, WARN or FAIL and ends with
"Follows the standard: yes" or "no". An advice item can only reach WARN.
An agent that answers "does this library follow the standard?" runs the audit and reports yes or no and the open must items grouped by who acts: "I can do now", "needs the maintainer". Advice goes in one line at the end. It does not paste the checklist.
Exceptions
A repository may differ from a check only with a decision line in its
internals/decisions.md that names the item and the check in parentheses and
says why, for example
D4 (2026-10-01): Keep upstream-drift.yml (FILE-01: upstream-drift.yml) — it catches breaking pdfkit releases weekly.
The audit prints the name of every check in square brackets, for example
[lean]; copy it from there. The exception covers that one check, and the
other checks of the item still count. An item with only one check may be
named alone, for example (GH-08).
Items marked no exception cannot be excepted, because they guard a real attack path.
Files
Checked by node scripts/audit.mjs --local DIR and by pnpm audit:repos.
| ID | Item | Level | Check |
|---|---|---|---|
| FILE-01 | The workflows are ci.yml, release.yml and preview.yml from the starter (library), or only ci.yml. Another workflow has an exception. | must | auto |
| FILE-02 | ci.yml has a final job named ci with if: always() that needs every other job. CI runs lint, typecheck, test, build and the dependency audit (node scripts/audit-deps.mjs in a library, pnpm audit --audit-level=high otherwise). | must | auto |
| FILE-03 | Every action is pinned to a full commit SHA. Workflows default to read-only permissions, and no job that can push, open pull requests or start workflows runs repository or dependency code. No exception. | must | auto |
| FILE-04 | No npm token in a workflow or .npmrc. Publishing uses npm trusted publishing (see FILE-10). No exception. | must | auto |
| FILE-05 | library: Changesets is configured and pnpm lint runs the changeset lint. | must | auto |
| FILE-06 | packageManager pins pnpm 11 or later. minimumReleaseAge is at least 1440 with minimumReleaseAgeStrict: true; dangerouslyAllowAllBuilds is not set. @lupinum/* may be excluded; any other exclusion is one exact version with a removal date (warns). No exception. | must | auto |
| FILE-07 | .github/renovate.json sets minimumReleaseAge. There is no dependabot.yml. | advice | auto |
| FILE-08 | The repository layout, the issue and pull request templates (library), no MAINTAINING.md or governance tooling, and the tooling budget. | advice | auto |
| FILE-09 | package.json has the scripts build, lint, typecheck, test, verify and (library) changeset. pnpm verify runs what CI runs. | advice | auto |
| FILE-10 | library: the release machinery is the starter's. release.yml matches the starter exactly, apart from the commits actions are pinned to (no exception); this is what keeps publishing safe. scripts/release.mjs matches too, unless an exception names it. A difference in preview.yml, lint-changesets.mjs, audit-deps.mjs or (docs) agent-docs.mjs warns. Fix these files in the starter first, then copy them. | must | auto |
GitHub settings
Checked by pnpm audit:repos through gh api.
| ID | Item | Level | Check |
|---|---|---|---|
| GH-01 | The main ruleset requires a pull request with resolved review threads, linear history, and the check ci from GitHub Actions; it blocks force pushes and deletion and has no bypass actors. Auto-merge is off. No exception. | must | auto |
| GH-02 | library: a tag ruleset on all tags blocks moving and deleting them, with no bypass actors. No exception. | must | auto |
| GH-03 | Merges are squash only and branches are deleted after merge. | advice | auto |
| GH-04 | The Actions token is read-only by default. library: Actions may create pull requests. | must | auto |
| GH-05 | library: the npm environment has a required reviewer, administrators cannot bypass it, and only main can deploy. No exception. | must | auto |
| GH-06 | Secret scanning with push protection, private vulnerability reporting, Dependabot alerts and CodeQL default setup are on. Dependabot security updates are off. | must | auto |
| GH-07 | The repository has no Actions secrets. | must | auto |
| GH-08 | Renovate runs: its Dependency Dashboard issue is open and was updated in the last 14 days. | advice | auto |
npm
library only. Checked by pnpm audit:repos against GitHub and the npm registry.
| ID | Item | Level | Check |
|---|---|---|---|
| NPM-01 | Every package has the trusted publisher release.yml with environment npm, requires two-factor authentication and disallows tokens under Publishing access. | must | manual |
| NPM-02 | The versions on latest and next carry npm provenance. Only a package's first version, published by hand, may lack it (warns). | must | auto |
| NPM-03 | The newest published version of every package has its Git tag and GitHub release. | must | auto |
| NPM-04 | Nothing waits too long: no Version packages pull request older than 14 days, and next is not behind latest. | advice | auto |
Docs
docs only: these items apply when the repository has a docs/ folder.
| ID | Item | Level | Check |
|---|---|---|---|
| DOC-01 | The docs site is built with @lupinum/ginko-docs and answers on the homepage domain from the root package.json, deployed by Vercel's Git integration. | must | auto |
| DOC-02 | /llms.txt lists the pages, and the agent Markdown contains no placeholder for a live example or component. | must | auto |
| DOC-03 | library: every public package exports ./agent-docs, ships it through files, and its own README has the Agent setup section. | must | auto |
| DOC-04 | The sections follow Write library docs: Start and Reference, plus Guides and Help when there is content for them, in that order. | advice | auto |
| DOC-05 | library: every public export, prop and option has a doc comment with its meaning and default. Every error a user can hit names the fix. | advice | agent |
Maintenance
Checked by pnpm audit:repos.
| ID | Item | Level | Check |
|---|---|---|---|
| OPS-01 | The repository is listed in fleet/libraries.json. | must | auto |
| OPS-02 | The last ci run on main succeeded, and (library) the last completed release run on main did not fail. | must | auto |
| OPS-03 | Open Dependabot alerts of high or critical severity. CI decides what blocks (Dependencies). | advice | auto |
| OPS-04 | No branch other than main is older than 30 days without an open pull request. | advice | auto |
| OPS-05 | No open pull request is older than 14 days without activity. | advice | auto |