Skip to content

v0.3.0

  • v0.3.0
  • 6a1af22
  • Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
  • Choose a tag to compare

  • v0.3.0
  • 6a1af22
  • Choose a tag to compare

  • Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
@EricAndrechek EricAndrechek tagged this 09 Jun 17:59
## Summary

Renames the package to **`@wave-rf/starlight-llm-tools`** and replicates
the npm-publishing + CI/CD + release-automation + agent-tooling setup
from `@wave-rf/astro-themed-mermaid`, adapted to this package's shape (a
Starlight plugin that **ships raw `src/` with no build step**).

### What's wired up
- **CI** (`ci.yml`): `biome check` + `tsc --noEmit` on **Node 24** (pnpm
11 needs ≥ 22.13, so CI doesn't run on the package's `engines` floor;
`engines.node` stays `>=18` to document the consumer floor). No
committed lockfile (library) → `pnpm install --no-frozen-lockfile`, no
`cache: pnpm`.
- **Publishing** (`publish-npm.yml`, one file): release-please (manifest
mode, `release-type: node`, `bump-minor-pre-major` +
`bump-patch-for-minor-pre-major`, tags `vX.Y.Z`) → `publish-release`
gated on `releases_created` → npm publish to `latest`/prerelease via
**OIDC trusted publishing** (no `NPM_TOKEN`), plus **`publish-dev`**
publishing a content-addressed `0.0.0-dev.<hash>` on every `main` push
(skips cleanly until the package exists).
- **`pr-title`** check (skips `dependabot[bot]`), **Dependabot** weekly
grouped bumps + patch/minor auto-merge, PR/issue templates,
`pr-review`/`docs-review` prompts.
- **Agent tooling**: Biome + `@biomejs/biome`, `verify` = `biome check
&& tsc --noEmit`, git hooks (`pre-commit`/`pre-push`), `.claude/`
settings + `agent-bash-gate`/`review-marker`/`format-on-save` hooks +
`pre-push-reviewer`/`docs-reviewer` subagents + `/prepush` + `/release`,
worktree config.
- Docs: `AGENTS.md`, `CLAUDE.md`, `CONTRIBUTING.md`, `RELEASING.md`,
`CHANGELOG.md` (seeded to the 0.1.0–0.3.0 history).

### Key adaptation decisions
- **Rename** to `@wave-rf/starlight-llm-tools`; README install/import
lines updated from the old unscoped/`github:` form to the scoped npm
package.
- **`verify` = Biome + typecheck** (no `node --test` suite exists; CI
runs the same two gates).
- **Publish shape preserved**: ships raw `src/` (the `files` allowlist),
**no build pipeline added** — `tsc`/Vite in the consumer compile it.
`npm pack --dry-run` lists exactly `LICENSE`, `README.md`,
`package.json`, and the 20-file `src/` tree, with no
`.claude`/`.github`/`scripts`/`AGENTS.md` leakage.
- **`scripts/dev-version.mjs`** hashes the full `src/` tree (recursive,
sorted for determinism) + `package.json` minus `version`, matching this
package's actual shipped content (verified deterministic +
content-sensitive).
- **`.astro` excluded from Biome** (`files.includes: ["**",
"!**/*.astro"]`): Biome 2.x only partially parses Astro SFCs and emitted
false-positive `noUnused*` on correct frontmatter; their
`<style>`/`<script>` stay hand-tuned and out of scope. The two real
`.ts` findings (`noConfusingVoidType`, `useTemplate`) were fixed in
place with Biome's idiomatic suggestions.
- **pnpm `allowBuilds: { esbuild: false, sharp: false }`** in
`pnpm-workspace.yaml`: astro/starlight (devDeps, for type resolution)
drag in native build scripts that otherwise fail the install with
`ERR_PNPM_IGNORED_BUILDS` (non-zero exit); we never build them, so
they're acknowledged-and-skipped. (pnpm 11.1.3 — the CI-pinned version —
uses `allowBuilds`, not `ignoredBuiltDependencies`, for this.)
- **Removed the committed `pnpm-lock.yaml`** (library convention;
`.gitignore` updated).
- **`exports`**: added `./components/*` so the README-documented
`@wave-rf/starlight-llm-tools/components/*` deep import actually
resolves under the scoped npm package (`.` and `./lib` were already
present).

### Captured invariants (in `AGENTS.md` + the prompts)
Standalone-first / **optional `starlight-glossary`** (dynamic import,
no-op when absent, never fails the build) · **MDX transforms are
surgical** (`stripMdxImports` doesn't eat fenced code;
`transformMdxImages` resolves bindings via `getImage()` with `![alt]()`
fallback) · **deterministic sidebar ordering** (unknown docs
alphabetized at the end) · **non-doc-slug exclusion**
(`isLlmDoc`/`NON_DOC_SLUGS`) everywhere · **respect the consumer's
component override** · **prerendered build-time route + virtual-config**
contract · **standalone typechecking via local shims** · **ESM + Node ≥
18**.

## Test plan
- `pnpm install` (clean, exit 0) → `pnpm run verify` (Biome + tsc)
green.
- `npm pack --dry-run` → 20 files, scoped name, no tooling leakage.
- `bash -n` on every shell script + `actionlint` on all workflows →
pass.
- `pnpm run setup` → `core.hooksPath = .githooks`.
- `agent-bash-gate.sh`: no-`--draft` → exit 2; `--draft` + valid title →
exit 0; bad title / `gh pr ready` → exit 2.
- `dev-version.mjs` deterministic + content-sensitive.

## Do NOT merge yet
This is a **draft**. Branch protection is **not** set, nothing is
published. Human bootstrap is required first (see `RELEASING.md`):
1. Confirm the **`@wave-rf`** npm org exists and you can publish to it.
2. One-time **manual** `npm publish --access public` of `0.3.0` (OIDC
can't create a not-yet-existing package; this first publish won't be
provenance-attested — fine).
3. Configure the **OIDC trusted publisher** on npmjs.com: org `Wave-RF`,
repo `starlight-llm-tools`, workflow `publish-npm.yml` (no environment).
4. After this merges **and CI runs once on `main`**, run `bash
scripts/setup-repo.sh` to set squash-only merges + branch protection.
Merge the bot-opened release PR with the admin "merge without waiting
for requirements" override (no PAT; `enforce_admins` left off).

### Notes for the orchestrator
- **No git tags exist** (local or remote) — `0.1.0`–`0.3.0` were plain
history. The manifest is seeded to `0.3.0`, so the first
release-please-cut release creates the first `vX.Y.Z` tag. No
reconciliation needed; just don't hand-create a `v0.3.0` tag.
- `pr-title` won't run on this PR until the workflow is on `main`
(expected).
- `npm whoami` is authenticated locally as `ericandrechek`, but per
instructions **no `npm publish` was run**.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Assets 2
Loading