Agent skill

Companion Packages

by andymai in andymai/brepjs

This skill should be used when orienting in the brepjs monorepo's packages/ and apps/ directories — answering "what is brepjs-viewer / brepjs-cad / brepjs-voxel", "is package X published", "which…

Apache-2.0Auto-check passedDevelopment

Install Companion Packages

skills CLI
$ npx skills add andymai/brepjs --skill companion-packages -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install andymai/brepjs companion-packages --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/andymai/brepjs.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/companion-packages .claude/skills/companion-packages && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
companion-packages
GitHub stars
115
Token cost
~4.3k tokens
SKILL.md length
1,516 words
Files
2 (incl. references)
Skills in repo
21
Repo updated
First seen
Licence
Apache-2.0

At a glance

This skill should be used when orienting in the brepjs monorepo's packages/ and apps/ directories — answering "what is brepjs-viewer / brepjs-cad / brepjs-voxel", "is package X published", "which…

  • Works in 3 steps: Published satellites (opencascade, bim,… → Source-shipped internals (manifold,… → Private (vscode, playground, docs):…
  • Tasks that involve Monorepo tooling
  • SKILL.md covers Package map, Workspace dependency rules, Build order and Release and publish (summary), plus 4 more sections
  • Calls npm and bash

What it does

Companion Packages is an agent skill from andymai/brepjs. This skill should be used when orienting in the brepjs monorepo's packages/ and apps/ directories — answering "what is brepjs-viewer / brepjs-cad / brepjs-voxel", "is package X published", "which workspace do I edit", "why does npm ci fail with ETARGET on a workspace version-range", "playground shows stale behavior from brepjs-bim/sheetmetal", "in what order do I build the packages", "Dependabot flags a workspace dependency", "add a new workspace package", or deciding how a change in one package ripples into its…

Its SKILL.md is about 4.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/publish-pipeline.md`).

It sits in Development, covering Monorepo tooling and Dependency management. It works with npm and WebAssembly. The repository describes itself as: Web CAD library with exact B-Rep geometry. The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve Monorepo tooling
  • Tasks that involve Dependency management

Example prompts

  • “s packages/ and apps/ directories — answering”
  • “is package X published”
  • “which workspace do I edit”
  • “/companion-packages”

Requirements

  • Node.js

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Published satellites (opencascade, bim, families, sheetmetal, cad, viewer, create-brepjs): consumers may resolve them from the npm…
  2. Source-shipped internals (manifold, voxel, voxel-wasm): resolved only through workspace symlinks; manifold and voxel have no build step at…
  3. Private (vscode, playground, docs): never published; playground and docs deploy via Vercel/Pages instead.

What it can do on your machine

Read from SKILL.md and the folder at commit 2907fb1. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npm
    • bash

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Companion Packages loads about 4.3k tokens when it runs, and up to ~5.6k if it reads all its reference files. Until then it costs about 138 tokens; SKILL.md has 1,516 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~138
When it runs · the whole SKILL.md, loaded when a task matches
~4.3k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~5.6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from andymai/brepjs at commit 2907fb1, republished under its Apache-2.0 licence (© andymai). 1,516 words, ~4,293 tokens.

Download SKILL.mdSave it as .claude/skills/companion-packages/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
companion-packages
description
This skill should be used when orienting in the brepjs monorepo's packages/ and apps/ directories — answering "what is brepjs-viewer / brepjs-cad / brepjs-voxel", "is package X published", "which workspace do I edit", "why does npm ci fail with ETARGET on a workspace version-range", "playground shows stale behavior from brepjs-bim/sheetmetal", "in what order do I build the packages", "Dependabot flags a workspace `*` dependency", "add a new workspace package", or deciding how a change in one package ripples into its consumers.

Monorepo companion packages

The root package.json workspaces field is the source of truth for the monorepo layout: 11 packages under packages/ plus apps/playground and apps/docs. The ## Packages list in CLAUDE.md is a curated subset — when it disagrees with the manifests, trust the manifests.

Package map

WorkspacePurposenpm status
brepjs (root)Core CAD libraryPublished; auto-released via release-please
packages/brepjs-opencascadeCustom OpenCascade WASM build (fallback kernel)Published; manual publish only (publish-opencascade.yml — expensive WASM build)
packages/brepjs-bimIFC4 parametric building elements + IFC import/exportPublished, experimental; auto-released
packages/brepjs-familiesDeclarative family layer: element trees, key paths → CSG IRPublished, experimental; auto-released (dist build; bim type-imports it, bundles nothing)
packages/brepjs-sheetmetalFlange authoring, fold/unfold flat patterns, DXF/STEPPublished, experimental; auto-released
packages/brepjs-cadAgent skill pipeline + brep/brep-mcp CLI bins + WASM viewerPublished; auto-released
packages/create-brepjsnpm create brepjs scaffolder (dependency-free bin + templates)Published; auto-released
packages/brepjs-viewerShared React/R3F renderer (playground + brepjs-cad)Published; manual publish, deliberately unmanaged by release-please
packages/brepjs-manifoldManifold mesh/CSG preview kernel adapterUnpublished, source-shipped (exports → ./src/index.ts, no build)
packages/brepjs-voxel-wasmRust→WASM voxel/SDF engine (wasm-pack build, committed pkg/)Versioned/tagged by release-please but no publish workflow — not on npm
packages/brepjs-voxelTS loader for brepjs-voxel-wasmUnpublished, source-shipped
packages/brepjs-vscodeVS Code extension: live 3D preview for .brep.tsprivate: true — the only packages/ workspace that is private (not published, not source-shipped)
apps/playgroundInteractive docs playground (Vercel)private: true
apps/docsVitePress docs siteprivate: true

Three tiers, and the rules differ per tier:

  1. Published satellites (opencascade, bim, families, sheetmetal, cad, viewer, create-brepjs): consumers may resolve them from the npm registry, so their manifests must always describe an installable package.
  2. Source-shipped internals (manifold, voxel, voxel-wasm): resolved only through workspace symlinks; manifold and voxel have no build step at all — editing their src/ is immediately live for consumers.
  3. Private (vscode, playground, docs): never published; playground and docs deploy via Vercel/Pages instead.

READMEs exist only for bim, families, sheetmetal, cad, and viewer — point users there for per-package API detail rather than restating it.

Workspace dependency rules

  • Satellites depend on brepjs as a floor-ranged peerDependency: "brepjs": ">=18.0.0" in packages/brepjs-bim/package.json, packages/brepjs-families/package.json, and packages/brepjs-sheetmetal/package.json. Exception: brepjs-cad takes brepjs as a real dependency (">=18.117.1") because its CLI must run standalone.
  • bim depends on families as a bounded range: "brepjs-families": ">=0.1.0 <1.0.0" in packages/brepjs-bim/package.json (runtime dep for familiesToBim consumers; the adapter itself only type-imports families, so bim's dist bundles none of it). Release ordering: the families release PR merges before bim's.
  • Root brepjs's kernel packages are optional peers: brepjs-manifold, brepjs-opencascade, brepkit-wasm, occt-wasm are all optional: true under peerDependenciesMeta in the root package.json. Never promote one to a hard dependency — consumers pick exactly one kernel.
  • Internal cross-references use "*" (e.g. "brepjs-viewer": "*" in apps/playground and in brepjs-cad's devDependencies). npm workspaces symlink these locally. Gotcha: Dependabot scans each sub-manifest without a co-located lockfile, so an unconstrained "*" on an external dev tool reads as permitting every vulnerable version. Fix by constraining a floor on the flagged spec ("vite": "^8.0.0", "vitest": "^4.0.0" — see packages/brepjs-viewer/package.json), not by lockfile churn.
  • brepjs-viewer role differs per consumer: runtime dependency of the playground; build-time devDependency of brepjs-cad (its viewer bundle inlines it — see the packages-verify comment in .github/workflows/ci.yml). Viewer declares its react/three/fiber/drei peers as floor ranges (>=19, >=0.184, etc.) compatible with the playground's versions, so npm dedups to one copy monorepo-wide; rationale in packages/brepjs-viewer/README.md.
  • npm overrides use nested-object syntax: "vitepress": { "vite": "6.4.3" } in root package.json overrides, plus scoped-range keys like "esbuild@<0.25.0": "^0.25.0". There is no pnpm-style parent>dep separator in npm.
  • Never regenerate package-lock.json from scratch. For security floors, edit the spec then run npm install --package-lock-only (no re-resolution, no churn). Full regeneration has historically dropped required @emnapi/* peer entries and broken CI.
  • 0.x caret hazard: brepjs-voxel pins "brepjs-voxel-wasm": ">=0.2.0" as a plain range, not ^0.x — a ^0.1.0 caret excludes 0.2.0, and an internal 0.x bump once left consumers pointing at a version that was never published, 404-ing npm ci repo-wide. Use >= floors for unpublished internal 0.x packages.

Build order

Workspace symlinks resolve manifests instantly, but built packages resolve through their dist/ — a stale or missing dist fails typecheck or, worse, silently runs old code.

Three ordered chains, all encoded in scripts (prefer running the script over hand-ordering):

  1. Playground — build:deps in apps/playground/package.json builds brepjs-bim, brepjs-sheetmetal, and brepjs-viewer, and runs automatically as predev/prebuild. If playground behavior looks stale after editing a companion package, this chain (or a manual npm run build --workspace=<pkg>) is the fix.
  2. Full site — root build:site: provision-fonts → root build → brepjs-bim → brepjs-sheetmetal → apps/playground → apps/docs → copy playground dist into the docs dist.
  3. brepjs-cad — root npm run build → npm run build --workspace=brepjs-viewer → npm run build --workspace=brepjs-cad. The cad viewer worker imports brepjs and bundles brepjs-viewer, so both dists must exist first; CI's packages-verify job and publish-brepjs-cad.yml both follow this order.

WASM bootstrap: the OpenCascade runtime files (brepjs_single.js/.wasm) are gitignored. Root prepare runs scripts/ensure-wasm.sh, which downloads them from the published brepjs-opencascade npm package into packages/brepjs-opencascade/src, keyed by a .wasm-version marker. Corollary: npm ci --ignore-scripts skips the download — fine when WASM is not needed (publish-brepjs-viewer.yml does this deliberately), otherwise re-run bash scripts/ensure-wasm.sh manually (publish-brepjs-cad.yml does, with retries).

Release and publish (summary)

The package topology that shapes the pipeline lives in references/publish-pipeline.md; the operator mechanics live in the release-publishing skill. The shape:

  • release-please-config.json manages 8 components: root, opencascade, voxel-wasm, cad, bim, families, sheetmetal, create-brepjs; separate PRs per component and no plugins (plugins: []). Viewer and voxel are deliberately excluded.
  • Leaf release PRs are held until the root brepjs release merges — merging a leaf first pins it to an unpublished brepjs version and breaks npm ci with ETARGET.
  • npm OIDC trusted publishers are bound to specific workflow filenames, so release-please dispatches each publish-brepjs-*.yml rather than inlining npm publish.
  • Every publish-*.yml is workflow_dispatch with dry_run defaulting to true — a bare manual dispatch is a safe dry run; pass dry_run=false to actually publish.

See the release-publishing skill for the operator playbook on cutting and recovering releases; this skill covers only how the package topology shapes that pipeline.

Show full SKILL.md (547 more words)Show less

CI coverage per package

WorkspaceCI gate (.github/workflows/ci.yml)
roottypecheck/lint/boundaries/patterns + 4-way sharded tests
brepjs-viewerpackages-viewer: typecheck, lint, test, build
brepjs-cadpackages-verify: typecheck, lint, test, build, eval, smoke, smoke:standalone
brepjs-sheetmetalpackages-sheetmetal: typecheck, lint, test, build
brepjs-bimpackages-bim: typecheck, lint, test, build
brepjs-voxel-wasmvoxel-wasm-rust: cargo test + clippy (path-filtered on packages/brepjs-voxel-wasm/**)
apps/playgroundplayground-build (path-filtered; mirrors the Vercel build)
brepjs-vscode, brepjs-manifold, brepjs-voxel (TS)no CI job — changes here are ungated; run their checks manually

Two consequences worth internalizing: root npm run validate does not cover satellites (run npm run <script> --workspace=<name> directly when touching one), and the ungated packages rot silently — verify manually before relying on them.

Symptom → cause → fix

SymptomCauseFix
npm ci/Vercel fails with ETARGET on a brepjs or workspace versionA manifest pins a version not yet on npm (leaf merged before root, or 0.x caret on an internal bump)Merge/publish the root release first, or widen the internal range to a >= floor; see references/publish-pipeline.md
Playground ignores an edit in brepjs-bim/sheetmetal/viewerPlayground worker runs the companion's built dist, which is stalenpm run build:deps in apps/playground (automatic on predev/prebuild)
brepjs-cad typecheck/build fails on missing brepjs or viewer typesRoot or viewer dist missingBuild in order: root → viewer → cad
Kernel init fails locally with missing brepjs_single.jsGitignored WASM never downloaded (--ignore-scripts, fresh clone glitch)bash scripts/ensure-wasm.sh
Dependabot alert on a workspace "*" dev-depSub-manifest scanned without lockfile contextConstrain a floor version on the spec; npm install --package-lock-only
Manual publish dispatch "succeeded" but nothing on npmdry_run defaults to trueRe-dispatch with dry_run=false
A satellite change passed root validate but fails CIRoot validate does not run satellite gatesRun typecheck/lint/test/build with --workspace=<name> before pushing

Adding a new workspace package — checklist

  1. Add the directory to root package.json workspaces.
  2. Decide the tier: published (needs build, files, exports to dist/, a publish-<name>.yml workflow, and an npm trusted-publisher entry bound to that filename), source-shipped (exports → ./src/index.ts, no build — copy packages/brepjs-voxel/package.json), or private: true.
  3. Dependency shape: brepjs as ">=18.0.0" peerDependency for library satellites; internal siblings as "*"; floor-constrain any external dev tool that Dependabot might flag.
  4. Add the directory to the root component's exclude-paths in release-please-config.json (every packages/* is excluded so satellite-only commits never bump root). If published: add entries to release-please-config.json and .release-please-manifest.json, and a dispatch job in release-please.yml (mirror publish-brepjs-bim). If it must not auto-release (like viewer), leave it out of the managed config.
  5. Add a CI job in ci.yml modeled on packages-bim (build root first if the package imports brepjs through dist exports).
  6. If the playground consumes it, append it to build:deps in apps/playground/package.json.
  7. npm install from the repo root to register the workspace in the lockfile — never regenerate the lockfile wholesale.

Additional resources

  • references/publish-pipeline.md — release topology: which packages release-please manages/excludes and why, and the build order baked into each publish workflow (operator mechanics live in the release-publishing skill)
  • packages/brepjs-cad/README.md — the two-rail distribution model: skills install via the repo's Claude plugin marketplace (.claude-plugin/marketplace.json → packages/brepjs-cad), runtime via npm i -D brepjs-cad brepjs occt-wasm
  • packages/brepjs-viewer/README.md — exports and peer-pinning rationale
  • Workflow comments in .github/workflows/release-please.yml and ci.yml — the best inline docs for release mechanics and per-package build-order rationale
  • Sibling skills: release-publishing (operating the release pipeline), ci-triage (diagnosing red CI), playground-examples (adding examples inside apps/playground), quality-gates (root repo gates), wasm-interop (kernel WASM behavior beyond the bootstrap covered here)

© andymai, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in .claude/skills/companion-packages of andymai/brepjs.

  • SKILL.md
  • references/publish-pipeline.md

Open the folder on GitHubat commit 2907fb1

Compare with similar skills

Companion Packages next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Companion Packages compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Companion Packages this skillandymai/brepjs115—~4.3kAutomated safety check: PassApache-2.0
Linea Dependency MaintenanceConsensys-Incorporated/linea-attestation-registry1771 repos~3.7kAutomated safety check: WarnMIT
Dependabot Alerts Updatelivesession/xyd114—~2kAutomated safety check: PassMIT
Monorepo Tooling and Dependenciespierrecomputer/pierre6.3k—~1.1kAutomated safety check: PassApache-2.0
Handsontable Node Script Conventionshandsontable/handsontable22k—~1.1kAutomated safety check: PassCustom licence
Fix Dependabotremotion-dev/remotion63k—~509Automated safety check: PassCustom licence

Similar skills

  • Linea Dependency Maintenance

    Consensys-Incorporated/linea-attestation-registry

    Safely plan and execute dependency maintenance for JavaScript/TypeScript (npm, pnpm) and GitHub Actions, including npm lockfiles, pnpm workspaces, catalogs, overrides, SHA-pinned action versions…

    177 GitHub starsUsed in 1 repo~3.7k tokens
    DevelopmentAuto-check: warnings
  • Automatically fetch and fix Dependabot security alerts by querying GitHub REST API for open alerts, identifying vulnerable packages, researching secure versions, and updating package.json files…

    114 GitHub stars~2k tokensUpdated 2 days ago
    DevelopmentAuto-check passed
  • Sets one monorepo's rules for toolchain pins, pnpm package operations, the shared dependency catalog and moon tasks, so the agent adds versions and scripts the right way.

    6.3k GitHub stars~1.1k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Handsontable Node Script Conventions

    handsontable/handsontable

    Conventions for .mjs files in the Handsontable monorepo: native node: imports, top-level await, the tasks.json dispatcher and native modules instead of extra dependencies.

    22k GitHub stars~1.1k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Fix Dependabot

    remotion-dev/remotion

    Official

    Fix a Dependabot PR by updating all monorepo instances of the dependency, running bun install, and pushing

    63k GitHub stars~509 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Nx Run Tasks

    nomcopter/react-mosaic

    Helps with running tasks in an Nx workspace. An agent skill from nomcopter/react-mosaic.

    4.8k GitHub starsUsed in 8 repos~613 tokens
    DevelopmentAuto-check passed

More from andymai/brepjs

All 21 skills in this repo
  • Implement

    andymai/brepjs

    A skill your agent uses when authoring or editing a brepjs .brep.ts part — writing the geometry with the functional API (box, cylinder, fuse, cut, fillet, sketch→extrude…), declaring an expected…

    115 GitHub stars~3.4k tokensUpdated yesterday
    Auto-check passed
  • Memory And Disposal

    andymai/brepjs

    This skill should be used when managing WASM handle lifetimes or hunting memory leaks in brepjs — when a task mentions "createHandle() without using keyword risks WASM memory leak"…

    115 GitHub stars~3.1k tokensUpdated yesterday
    Auto-check passed
  • Polish

    andymai/brepjs

    A skill your agent uses when a valid brepjs part should look designed rather than glued-from-primitives (products, toys, mechanisms, anything a human eyeballs), and when exporting/handing off the…

    115 GitHub stars~588 tokensUpdated yesterday
    Auto-check passed
  • Wasm Interop

    andymai/brepjs

    This skill should be used when working across the JS/WASM boundary in brepjs — writing or debugging code in src/kernel/occt, src/kernel/occtWasm, or src/kernel/brepkit, or diagnosing symptoms like…

    115 GitHub stars~3k tokensUpdated yesterday
    Auto-check passed
  • Writing Tests

    andymai/brepjs

    This skill should be used when writing, running, or fixing tests in the brepjs repository — when a task says "add a test", "write a regression test", "tests are failing", "test timed out", "coverage…

    115 GitHub stars~4.3k tokensUpdated yesterday
    Auto-check passed
  • Adding Operations

    andymai/brepjs

    This skill should be used when adding or extending a geometric shape operation in brepjs — the end-to-end recipe once the target module is chosen (which is decided by architecture-navigation) — when…

    115 GitHub stars~4.4k tokensUpdated yesterday
    Auto-check passed

Works with

Categories

Questions about Companion Packages

What does Companion Packages do?

This skill should be used when orienting in the brepjs monorepo's packages/ and apps/ directories — answering "what is brepjs-viewer / brepjs-cad / brepjs-voxel", "is package X published", "which…. Companion Packages is an agent skill from andymai/brepjs.

When should I use Companion Packages?

Companion Packages fits situations like: tasks that involve Monorepo tooling; tasks that involve Dependency management.

How do I install Companion Packages in Claude Code?

Run `npx skills add andymai/brepjs --skill companion-packages -a claude-code`. Or copy the skill folder (.claude/skills/companion-packages in andymai/brepjs) into .claude/skills/companion-packages in your project. Claude Code loads it when a task matches its description.

How do I install Companion Packages in Codex?

Run `npx skills add andymai/brepjs --skill companion-packages -a codex`. Or copy the skill folder (.claude/skills/companion-packages in andymai/brepjs) into .agents/skills/companion-packages in your project. Codex loads it when a task matches its description.

Can I use Companion Packages in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add andymai/brepjs --skill companion-packages -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/companion-packages, .gemini/skills/companion-packages, .github/skills/companion-packages and .opencode/skills/companion-packages in your project.

What does Companion Packages need to run?

Going by SKILL.md and its folder, Companion Packages needs the command-line tools its instructions call (npm and bash). Our summary lists: Node.js.

Does Companion Packages access the network?

SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Companion Packages safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Companion Packages use?

Companion Packages is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Companion Packages use?

About 4.3k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.3k tokens, read only when the agent opens those files.

What are the alternatives to Companion Packages?

Skills that share tags, products or a category with Companion Packages: Linea Dependency Maintenance (Consensys-Incorporated/linea-attestation-registry, 177 stars), Dependabot Alerts Update (livesession/xyd, 114 stars), Monorepo Tooling and Dependencies (pierrecomputer/pierre, 6.3k stars) and Handsontable Node Script Conventions (handsontable/handsontable, 22k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Companion Packages?

andymai (a GitHub user) maintains it in andymai/brepjs, which has 115 GitHub stars. The repository holds 21 skills in this directory. The repository was last updated on October 9, 2026.

Source: andymai/brepjs on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.