Connection Import Wasm
feigeCode/navop
A skill your agent uses when implementing, debugging, packaging, or host-enabling onetcli WASM connection importers such as DBeaver, Navicat, Navicat Lite, Termius, connection-import.wit components…
This skill should be used when debugging or extending stable references (topological naming) and history replay in brepjs — when a task says "ShapeRef resolves to the wrong face/edge", "ref won't…
$ npx skills add andymai/brepjs --skill shaperef-lineage -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install andymai/brepjs shaperef-lineage --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/andymai/brepjs.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/shaperef-lineage .claude/skills/shaperef-lineage && rm -rf skills-srcUse ~/.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/
Install the "shaperef-lineage" agent skill from https://github.com/andymai/brepjs/tree/main/.claude/skills/shaperef-lineage into .claude/skills/shaperef-lineage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shaperef-lineage", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/andymai/brepjs/tree/main/.claude/skills/shaperef-lineageType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add andymai/brepjs --skill shaperef-lineage -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install andymai/brepjs shaperef-lineage --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/andymai/brepjs.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/shaperef-lineage .agents/skills/shaperef-lineage && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "shaperef-lineage" agent skill from https://github.com/andymai/brepjs/tree/main/.claude/skills/shaperef-lineage into .agents/skills/shaperef-lineage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shaperef-lineage", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add andymai/brepjs --skill shaperef-lineage -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install andymai/brepjs shaperef-lineage --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/andymai/brepjs.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/shaperef-lineage .cursor/skills/shaperef-lineage && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "shaperef-lineage" agent skill from https://github.com/andymai/brepjs/tree/main/.claude/skills/shaperef-lineage into .cursor/skills/shaperef-lineage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shaperef-lineage", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/andymai/brepjs.git --path .claude/skills/shaperef-lineage--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add andymai/brepjs --skill shaperef-lineage -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install andymai/brepjs shaperef-lineage --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/andymai/brepjs.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/shaperef-lineage .gemini/skills/shaperef-lineage && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "shaperef-lineage" agent skill from https://github.com/andymai/brepjs/tree/main/.claude/skills/shaperef-lineage into .gemini/skills/shaperef-lineage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shaperef-lineage", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install andymai/brepjs shaperef-lineageInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add andymai/brepjs --skill shaperef-lineage -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/andymai/brepjs.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/shaperef-lineage .github/skills/shaperef-lineage && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "shaperef-lineage" agent skill from https://github.com/andymai/brepjs/tree/main/.claude/skills/shaperef-lineage into .github/skills/shaperef-lineage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shaperef-lineage", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add andymai/brepjs --skill shaperef-lineage -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install andymai/brepjs shaperef-lineage --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/andymai/brepjs.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/shaperef-lineage .opencode/skills/shaperef-lineage && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "shaperef-lineage" agent skill from https://github.com/andymai/brepjs/tree/main/.claude/skills/shaperef-lineage into .opencode/skills/shaperef-lineage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shaperef-lineage", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
shaperef-lineageThis skill should be used when debugging or extending stable references (topological naming) and history replay in brepjs — when a task says "ShapeRef resolves to the wrong face/edge", "ref won't…
Shaperef Lineage is an agent skill from andymai/brepjs. This skill should be used when debugging or extending stable references (topological naming) and history replay in brepjs — when a task says "ShapeRef resolves to the wrong face/edge", "ref won't resolve / returns not-found / BrokenRef", "resolveRef returns ambiguous", "add a new reference kind / ref type", "fillet face has no stable hash", "generated evolution is empty on occt-wasm", "selection lost after editing an upstream parameter", "history replay re-targets the wrong entity", "role table / assignRoles /…
Its SKILL.md is about 3.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development. It works with WebAssembly. The repository describes itself as: Web CAD library with exact B-Rep geometry. The licence is Apache-2.0.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit ee50994. It shows what the files ask for, not the result of running them.
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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Shaperef Lineage loads about 3.8k tokens when it runs. Until then it costs about 178 tokens; SKILL.md has 1,482 words of instructions outside code blocks.
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.
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.
The full file from andymai/brepjs at commit ee50994, republished under its Apache-2.0 licence (© andymai). 1,482 words, ~3,804 tokens.
.claude/skills/shaperef-lineage/SKILL.md (or your agent's skills folder).Stable references name a face, edge, or vertex by its stable adjacent-neighbour roles instead of a kernel hash, so a selection survives the edits that re-hash the model. The full concept — name-by-neighbours, the four ref kinds, exact vs geometric-fallback confidence, the failure taxonomy, and per-kernel support — is owned by apps/docs/concepts/stable-references.md. Read that page first for the "why"; this skill owns only extension (adding a ref kind) and debugging (a ref that resolves wrong, to nothing, or to the wrong entity after a replay).
The public surface is the brepjs/shapeRef subpath (package.json exports), re-exported from src/shapeRef.ts, src/topology/shapeRef/index.ts, and src/index.ts. Implementation lives under src/topology/shapeRef/.
RoleTable = ReadonlyMap<origin, ReadonlyMap<role, readonly number[]>> in shapeRefTypes.ts) is the spine: origin → role → face hash codes.assignRoles(shape, origin) names faces; updateRoles(roles, origin, evolution) advances those hashes through one operation's ShapeEvolution.exact.exact = resolved via a tracked hash in the role table; geometric-fallback = resolved via the captured geometric hint (normal, centroid, area).geometric-fallback, they can never be exact.This is the single most important fact in the area, and the cause of most "why won't my fillet face resolve" confusion.
On the OCCT kernels, evolution.generated hashes are never live — they refer to an intermediate shape, not the final result — and fillet/chamfer evolution is empty. Consequences, all deliberate:
updateRoles intentionally does not consume evolution.generated (see the comment at the updateRoles docblock in shapeRefFns.ts: "verified: 0 live generated hashes across cut/fuse on occt-wasm"). Naming a generated face via the role table produces a role that never resolves.derivedFaceRefFns.ts.ResolvedDerivedFaceRef.confidence is hardcoded 'geometric-fallback' in shapeRefTypes.ts.tests/shapeRefDerivedReplay.test.ts header comment).How the geometric workaround actually resolves a derived face (resolveDerivedFaceRef in derivedFaceRefFns.ts):
facesByNormal (faces whose normal dotted with the captured normal exceeds NORMAL_MATCH = 0.99).betweenFaces = faces adjacent to both bridged faces (via cached edge→face adjacency).> BLEND_THRESHOLD = 0.1) along both bridged normals — this rejects the orthogonal flanking faces that are also adjacent to both.edgeMidpoint (HINT_MARGIN = 1e-6 tie → ambiguous); none → broken.| Symptom | Likely cause | Fix |
|---|---|---|
Edge/vertex ref returns not-found | Role table stale — facesForRole returned [] because the tracked hash no longer matches any live face | updateRoles was skipped across an intervening edit; propagate the role table through every operation's ShapeEvolution. Confirm ref.origin matches the string passed to assignRoles. This is the #1 cause. |
| Face ref resolves to the wrong face on geometric fallback | A scorer reject or a weak hint | Check defaultScorer rejects (below); the true face may be scoring -Infinity. Supply a custom FaceScorer if the geometry is unusual. |
resolveRef returns ambiguous | Two candidates tie within a margin, or a duplicated/symmetric feature | Inspect broken.candidates. Thresholds: AMBIGUITY_THRESHOLD = 0.1 (face scoring), HINT_MARGIN = 1e-6 (edge/vertex/derived hint tiebreak). |
Face ref returns deleted; edge/vertex returns not-found for the same vanished feature | Different taxonomies by kind (below) | deleted is expected-skip for a replay engine; edge/vertex/derived can never report deleted (they don't track their own hash) so a vanished entity surfaces as not-found. |
| Non-primitive origin loses stability on rebuild | Only box/cylinder/cone/sphere get semantic roles; everything else falls back to positional opType:face_N | Positional names are stable only if getFaces iteration order is stable across the rebuild. Prefer a primitive origin, or maintain a role table across edits instead of relying on resolveRefIn. |
| Fillet/chamfer face never resolves via the role table | The generated-hash reality above | Use a DerivedFaceRef (geometric), not a face ref. It's inherently geometric-fallback. |
| Replay re-targets the wrong entity | The step has multiple inputs, or a ref points at a non-3D input | resolveStepParams only auto-resolves single-input 3D steps; multi-input refs stay raw. See history section below. |
defaultScorer reject thresholds (scoring.ts)A debugger hitting a wrong/absent match usually tripped one of these hard rejects:
-Infinity (hard reject).dot < 0.707 → -Infinity.distSq > 100 (more than 10 units away) → -Infinity; otherwise penalty -distSq/100.|log(hintArea / faceArea)| > 1.0.resolveRef rejects anything below MIN_SCORE = 0.5 → not-found.Mirror tests/shapeRefEditReplay.test.ts — build the table, advance it, resolve:
const roles = new Map([['box', assignRoles(box, 'box')]]);
const ref = createRef('box', 'box:top', topFace);
const { evolution, shape: next } = unwrap(fuseWithEvolution(box, other)); // *WithEvolution → Result
const advanced = updateRoles(roles, 'box', evolution);
const resolved = resolveRef(ref, advanced, next); // 'face' in resolved ? exact/fallback : broken*WithEvolution wrappers (fuseWithEvolution, filletWithEvolution, …) are the layer-2 source of the ShapeEvolution fed to updateRoles (src/topology/evolutionFns.ts, exported from src/index.ts). Each returns a Result that must be unwrapped or checked before use — mirror tests/shapeRefEditReplay.test.ts, which does const { shape, evolution } = unwrap(fuseResult);.
BrokenRef.reason: 'deleted' | 'ambiguous' | 'not-found'. deleted means the role table had the role but its tracked successor was removed.reason is only 'ambiguous' | 'not-found' — never deleted. They track adjacent face roles, not their own hash, so a vanished entity is not-found. This is stated in the type docblocks in shapeRefTypes.ts.candidates? — the tied entities to inspect.The four existing kinds (face, edge, vertex, derived) share one contract. To add a fifth, work through this checklist against the real files. Follow the export-surface mechanics in the adding-operations sibling skill — a new create*/resolve* pair must flow through the same six export surfaces plus the brepjs/shapeRef subpath.
shapeRefTypes.ts add XRef, its XHint, ResolvedXRef (with a confidence), and BrokenXRef. Decide the failure taxonomy up front: it can report deleted only if it tracks its own face hash; if it names itself by neighbour roles (the recommended pattern), its reason is 'ambiguous' | 'not-found' like edge/vertex.xRefFns.ts with createXRef (capture the hint on the pre-edit shape) and resolveXRef. Follow the established pattern: resolve neighbour roles via roleLookup.ts helpers (facesForRole, roleOfFace), disambiguate with the hint, apply an ambiguity margin. Return early not-found when facesForRole yields [].refResolveFns.ts add an isXRef structural guard and a branch in resolveLineageRef, and extend the LineageRef union (and ResolvedEntity if it resolves to a new entity type). Guard ordering is load-bearing: guards discriminate structurally, most-specific first. Current order is derived (betweenRoles + op) → edge (faceRoles.length === 2) → vertex (faceRoles.length >= 3) → face (role is a string). Place a new guard so it can't be shadowed by a looser one.src/topology/shapeRef/index.ts, src/shapeRef.ts, and src/index.ts. Once it's in the LineageRef union and the guards, it auto-flows through resolveRefParams and history replay for free.resolveRefParams descends via isPlainOptions, which skips arrays it already handled, non-plain-prototype objects, and anything with a wrapped key. Keep the new ref a plain serializable object (like the others); a class instance would be silently skipped by the walker.tests/shapeRefXReplay.test.ts gated to occt-wasm. Use the divergence-skip mechanics owned by the writing-tests sibling skill (currentKernelId, shouldSkipSuite, describe.skipIf).Replay lets a stored selection survive an upstream parameter edit. The engine is src/operations/historyFns.ts (ModelHistory / OperationStep are pure data; OperationRegistry maps op name → OperationFn).
resolveStepParams(params, inputs) resolves refs only for single-input, 3D steps — it calls resolveRefParams against the sole input. Multi-input, ref-free, or non-3D steps are left raw: with several inputs the target input is ambiguous, and resolving against the wrong input would silently return a wrong-shape entity.replayHistory and replayFrom before invoking the OperationFn.ShapeRef is plain JSON, so it survives serializeHistory/deserializeHistory.modifyStep(stepId, newParams) is the parametric-edit loop: it updates the params then replayFroms that step.tests/historyRefReplay.test.ts is the canonical worked example (re-targets an edge after a box-height edit; multi-input leaves the ref raw).Replay errors are Result.Err with codes REPLAY_UNKNOWN_OP / REPLAY_MISSING_INPUT / REPLAY_STEP_FAILED / REPLAY_STEP_NOT_FOUND / MODIFY_STEP_NOT_FOUND.
ShapeEvolution = { modified, generated, deleted } (src/kernel/types.ts) is built in src/kernel/occt/evolutionOps.ts and produced by the *WithHistory kernel methods in src/kernel/occt/historyOps.ts (wired via makeHistoryOps). Fillet/chamfer go through BRepFilletAPI_MakeFillet/MakeChamfer; the plumbing populates generated, but on occt-wasm those Generated() results don't map to final-shape faces — the empty/never-live reality above. For anything kernel-side (adding a *WithHistory method, adapter capability differences), defer to the kernel-abstraction sibling skill; for the embind enum/hash-code details underlying evolutionOps.ts, defer to wasm-interop.
tests/shapeRefEditReplay.test.ts (modified-face tracking + split-fragment disambiguation), tests/shapeRefDerivedReplay.test.ts (fillet/chamfer normal-blend, occt-wasm-gated), tests/shapeRefEdgeReplay.test.ts, tests/shapeRefVertexReplay.test.ts, tests/historyRefReplay.test.ts, and the unit/integration pair tests/shapeRef.test.ts + tests/shapeRefIntegration.test.ts.
adding-operations — the six export surfaces + function-lookup.md gate a new create*/resolve* pair must pass through.kernel-abstraction — kernel-side evolution, *WithHistory methods, adapters, capability differences.wasm-interop — embind enum .value, Uint32Array conversion, and hash-code details underlying evolutionOps.ts.writing-tests — the kernel-divergence skip pattern for gating a new ref-kind test to occt-wasm.© 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
Just SKILL.md in .claude/skills/shaperef-lineage of andymai/brepjs.
Open the folder on GitHubat commit ee50994
Shaperef Lineage 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Shaperef Lineage this skillandymai/brepjs | 114 | — | ~3.8k | Automated safety check: Pass | Apache-2.0 | |
| Connection Import WasmfeigeCode/navop | 1.8k | — | ~2.7k | Automated safety check: Pass | Custom licence | |
| Changesetwhitphx/stlite | 1.7k | — | ~1.9k | Automated safety check: Pass | Apache-2.0 | |
| Debug Php Wasm Main ModuleWordPress/wordpress-playground | 2k | — | ~3.1k | Automated safety check: Pass | GPL-2.0 | |
| Code Reviewziggy42/epsilon | 439 | — | ~1.7k | Automated safety check: Pass | Apache-2.0 | |
| Debug Php Wasm Side ModulesWordPress/wordpress-playground | 2k | — | ~2.5k | Automated safety check: Pass | GPL-2.0 |
feigeCode/navop
A skill your agent uses when implementing, debugging, packaging, or host-enabling onetcli WASM connection importers such as DBeaver, Navicat, Navicat Lite, Termius, connection-import.wit components…
whitphx/stlite
Create or update a changeset fragment (.changeset/.md) reflecting the changes made in the current session or branch.
WordPress/wordpress-playground
Debug PHP.wasm main module crashes including Asyncify errors (unreachable, memory access out of bounds), JSPI errors (SuspendError, trying to suspend JS frames), WASM memory growth bugs, and runtime…
ziggy42/epsilon
A skill your agent uses when the user asks for a code review.
WordPress/wordpress-playground
Debug WASM side modules (dynamic PHP extensions) including dlopen failures, SIDEMODULE loading, JSPI suspension crashes in extensions, C++ weak symbol issues, and extension runtime errors.
justrach/merjs
Work with the merjs Zig web framework. An agent skill from justrach/merjs.
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…
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"…
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…
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…
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…
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…
Works with
Categories
This skill should be used when debugging or extending stable references (topological naming) and history replay in brepjs — when a task says "ShapeRef resolves to the wrong face/edge", "ref won't…. Shaperef Lineage is an agent skill from andymai/brepjs.
Shaperef Lineage fits situations like: development work in your project.
Run `npx skills add andymai/brepjs --skill shaperef-lineage -a claude-code`. Or copy the skill folder (.claude/skills/shaperef-lineage in andymai/brepjs) into .claude/skills/shaperef-lineage in your project. Claude Code loads it when a task matches its description.
Run `npx skills add andymai/brepjs --skill shaperef-lineage -a codex`. Or copy the skill folder (.claude/skills/shaperef-lineage in andymai/brepjs) into .agents/skills/shaperef-lineage in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add andymai/brepjs --skill shaperef-lineage -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/shaperef-lineage, .gemini/skills/shaperef-lineage, .github/skills/shaperef-lineage and .opencode/skills/shaperef-lineage in your project.
SKILL.md names no scripts, command-line tools or credentials: Shaperef Lineage is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
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.
Shaperef Lineage 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.
About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Shaperef Lineage: Connection Import Wasm (feigeCode/navop, 1.8k stars), Changeset (whitphx/stlite, 1.7k stars), Debug Php Wasm Main Module (WordPress/wordpress-playground, 2k stars) and Code Review (ziggy42/epsilon, 439 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
andymai (a GitHub user) maintains it in andymai/brepjs, which has 114 GitHub stars. The repository holds 21 skills in this directory. The repository was last updated on October 8, 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.