Finishing a Development Branch
obra/superpowers
Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.
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…
$ npx skills add andymai/brepjs --skill implement -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install andymai/brepjs implement --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/packages/brepjs-cad/skills/implement .claude/skills/implement && 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 "implement" agent skill from https://github.com/andymai/brepjs/tree/main/packages/brepjs-cad/skills/implement into .claude/skills/implement/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "implement", 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/packages/brepjs-cad/skills/implementType 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 implement -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install andymai/brepjs implement --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/packages/brepjs-cad/skills/implement .agents/skills/implement && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "implement" agent skill from https://github.com/andymai/brepjs/tree/main/packages/brepjs-cad/skills/implement into .agents/skills/implement/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "implement", 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 implement -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install andymai/brepjs implement --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/packages/brepjs-cad/skills/implement .cursor/skills/implement && 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 "implement" agent skill from https://github.com/andymai/brepjs/tree/main/packages/brepjs-cad/skills/implement into .cursor/skills/implement/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "implement", 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 packages/brepjs-cad/skills/implement--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 implement -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install andymai/brepjs implement --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/packages/brepjs-cad/skills/implement .gemini/skills/implement && 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 "implement" agent skill from https://github.com/andymai/brepjs/tree/main/packages/brepjs-cad/skills/implement into .gemini/skills/implement/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "implement", 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 implementInstalls 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 implement -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/packages/brepjs-cad/skills/implement .github/skills/implement && 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 "implement" agent skill from https://github.com/andymai/brepjs/tree/main/packages/brepjs-cad/skills/implement into .github/skills/implement/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "implement", 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 implement -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 implement --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/packages/brepjs-cad/skills/implement .opencode/skills/implement && 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 "implement" agent skill from https://github.com/andymai/brepjs/tree/main/packages/brepjs-cad/skills/implement into .opencode/skills/implement/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "implement", 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.
implementA 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…
Implement is an agent skill from andymai/brepjs. Use 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 block, and following the hard rules (import every function, unwrap Results, select edges, coordinate semantics). Also covers buildings/BIM/IFC via the declarative family layer (references/families-bim.md). This is the authoring step; pair it with brepjs:verify to check the result.
Its SKILL.md is about 3.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 48 other files, including reference files (for example `examples/chamfered-block.brep.ts`, `examples/chamfered-block.expected.json` and `examples/dome-cap.brep.ts`).
It sits in Development. The repository describes itself as: Web CAD library with exact B-Rep geometry. The licence is Apache-2.0.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit e8fa511. 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.
Ships script files (TypeScript, from the files we listed), which the agent can run.
Shell commands in SKILL.md call:
npxFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
EXPECTED_UNKNOWN_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Implement loads about 3.4k tokens when it runs, and up to ~19k if it reads all its reference files. Until then it costs about 118 tokens; SKILL.md has 1,684 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 e8fa511, republished under its Apache-2.0 licence (© andymai). 1,684 words, ~3,384 tokens.
.claude/skills/implement/SKILL.md (or your agent's skills folder). This skill also uses 47 other files; get the full folder from GitHub.You write a .brep.ts part; the brep CLI runs it on a geometry kernel and reports what it
measured. Judge the part by the report (see brepjs:verify), not by how the code reads. This skill
is self-contained — everything needed to author correctly is here or in references/.
The CLI ships in the brepjs-cad package as brep. Installed: brep verify part.brep.ts ….
Otherwise: npx -y -p brepjs-cad brep verify ….
export default () => <shape> (or async () => {…} to await loadFont/importSTEP).box, cylinder, fuse, cut, fillet, …), named consts at the top.brep init <name>. Edit source, never generated artifacts (STEP/STL/GLB derive
from the .brep.ts).--check passing means buildable, not correct. The bar is the part the brief names, recognisable
as that designed object — and the way that fails is simplification: a valid, generic version that
drops the one feature that makes it itself.
GT2 pulley → the belt-tooth profile (a smooth groove is not a GT2 pulley);
fluted knob → full-height flutes around the whole perimeter (scattered scallops are not flutes);
twisted impeller/swept fan → a cambered airfoil section extruded radially with a pitch twist
(references/airfoils.md), not flat blades or twistAngle on a paddle; scroll chuck →
the spiral face groove; involute gear → the tooth flank (references/gears.md).--check while
missing its headline feature — a blob that verifies. If the feature needs real math (gear/thread/involute/
scroll), use the reference recipe; don't substitute a smooth or sparse stand-in.Prefer ops that succeed first-try; lean on the report and small steps for advanced ops. Full table:
references/operation-tiers.md. In short: primitives, booleans, compound, sketch→extrude,
fillet, shell/offset, transforms are reliable; sweeps/lofts/revolves/fuseAll/text are
advanced; chamfer is the fragile exception (prefer fillet).
expected blockAdd export const expected = { … } from the brief; the CLI asserts it, catching valid-but-wrong
sizing. The only authorable keys are volume, area, bounds, tolerancePct (each optional;
tolerancePct sets the match window) — TOP_LEVEL_KEYS in src/verify/expected.ts:45. Bounds
shape is exactly { xMin, xMax, yMin, yMax, zMin, zMax } (any subset) — not { min, max } or
{ x, y, z } (a wrong shape reports EXPECTED_UNKNOWN_KEY). shapeType is report-only, not
authorable: the report tells you whether the part measured as a solid/compound/etc., but
putting shapeType (or any other field) in expected also reports EXPECTED_UNKNOWN_KEY — assert
the body count or shape via volume/bounds, never a shapeType key.
Prefer bounds over a hand-computed volume (a wrong number fails a correct part). Predict
only extents you place directly — a footprint, where each body sits, the flat face of a body you
placed there — these read off your datums and catch a dropped/misplaced body. An extent governed by a
rotation, a part's orientation, a proud sub-feature, a half-space clip, or the outer top/bottom of a
deep multi-body stack is not a datum: bound it generously or measure-first (run once, copy the
report's measured value). That last one is the #1 EXPECTED_ASSERTION_FAILED on assemblies — a
stack's extreme z is usually crowned by a rounded/proud feature (a carrier hub, a ball cap) and sums
every body's placement error, so measure it; don't hand-add the stack. A flat lid-on-base height
you place is fine; the moment a curved or proud sub-feature defines the extreme, it's governed. This
was the #1 first-try failure across the corpus (rotated handles, articulated yokes, flange discs,
clipped balls): when an operand is rotated, a disc/sphere crowns an axis, or a cut clips an
extreme, measure that one axis — don't predict it.
A chamfer/fillet only REMOVES material — it never grows the bounding box. A beveled or rounded
outer corner keeps the original face plane as its bound, so the extent stays at the un-chamfered face:
predict xMin = 0 for a corner chamfered at x = 0, never xMin = -chamfer.
An extent is a datum only if you place that face directly. A derived extent is not — and these
are the other half of the EXPECTED_ASSERTION_FAILEDs: a body translated beside another (its far
edge is offset ± its own half-extent, not the offset), a face/foot widened to overlap a neighbour
for fusing (its outer edge is the widened size, not the nominal feature length), or a cylinder/cone
given a non-default axis (its far end is base + axis·length, e.g. base x=-15, axis -X,
length 14 → xMin=-29). Compute these from the SAME const that places the geometry, or measure-first.
'brepjs'. A
used-but-unimported symbol is TS2304: Cannot find name and fails --check before geometry runs
(the #1 first-attempt failure). Re-scan the body before finishing.translate(shape, [x,y,z]), rotate(shape, deg, { axis }),
mirror, scale (angles in degrees), the same shape-first form as booleans. They are NOT methods:
shape.translate(...) is TS2339: Property 'translate' does not exist. Placing assembly parts needs
these even when the brief doesn't shout "transform". (references/transforms.md.)measureVolume/measureArea return Result: unwrap(cut(...))
and check the Err branch before chaining. TS2322: Result<X> is not assignable to X (on an
assignment/return) — or TS2345 when you feed an un-unwrapped Result straight into another
op's argument (e.g. fuse(a, cut(b, c))) — means an op (cut/fuse/fillet/chamfer/shell/…)
was used without unwrap(). Unwrap at every step, including the final return — a Result
default export (export default cut(...)) slips past verify (it auto-unwraps a Result default
export, so --check is green) but renders nothing in a viewer/mesh path. Always unwrap() the
returned shape.fuse welds only where solids overlap. Bodies merely touching on a coplanar face/ring may
return a loose Compound (ok:true, not one watertight solid). Overlap the operands +
fuseAll(shapes, { unsafe: true }) to weld; use compound for a distinct-bodies assembly. For
MANY operands (a grille, a stud grid, a space frame), fuseAll unsafe routinely leaves a loose
N-solid compound even with overlap — fold with a pairwise fuse() reduce over real overlaps and
confirm getSolids(part).length === 1.
(references/booleans.md.) But a Compound result is NOT a failure to chase: even genuinely
overlapping operands often fuse to shapeType:Compound (ok:true, correct geometry) rather than a
single Solid — and that's fine, because shapeType is report-only/non-authorable and
bounds/volume/validity still pass. Don't burn attempts trying to force a Solid; only do so (and
then only worry) when a downstream fillet/shell/offset needs a ValidSolid (next rule).
The report's notes flags a multi-body Compound and its solid count — if a part you meant as
ONE piece comes back as N bodies, the weld failed (overlap + fuseAll unsafe); a count matching a
deliberate assembly is fine.fillet/chamfer/shell/offset need a ValidSolid. Primitives already are one and
booleans preserve it, so a primitive-rooted chain feeds them directly. A shape from a 2D-sketch
.extrude()/.revolve() (or loft/sweep) is typed Shape3D; passing it to these ops is
TS2345. Lift in two steps: if (!isSolid(x)) throw …; const solid = unwrap(validSolid(x));. Or
build the prism from a primitive when you know you'll fillet/shell it. (references/modifiers.md.)Compound boolean can't be lifted to ValidSolid — fix the boolean, don't lift. When
fuse/fuseAll only touch (don't overlap) they return a Compound (ok:true), and isSolid
returns false on it (shapeType()==='compound', not 'solid' — src/core/shapeTypes.ts:248).
There is no lift from a multi-body Compound to a ValidSolid: validSolid() needs one
Solid, so if (!isSolid(x)) throw … just throws, and feeding the Compound onward
KERNEL_FAILEDs. Make the operands actually overlap and fuseAll(shapes, { unsafe: true }) so the
weld yields a single solid first, then fillet/shell. (references/booleans.md.)fillet(solid, radius) with no edge
list rounds EVERY edge and frequently FILLET_FAILEDs. Pass edgeFinder().inDirection('Z').findAll(solid).
inDirection matches BOTH ± orientations; discriminate by position with
.when(f => getBounds(f).zMax > t) (getBounds is its own import). Finders take a direction
('X'/'Y'/'Z'/Vec3), never a plane: a top face is faceFinder().inDirection('Z');
parallelTo('XY') fails --check — use 'Z'. (references/modifiers.md.)chamfer is kernel-fragile. CHAMFER_FAILED is common even with a correct edge list. Prefer
fillet, model the bevel additively (cut with an angled tool), or drop it. Re-running the same
chamfer rarely helps.cylinder/box LONGER than the body and place it so it pokes out each end (e.g. height = wall + 2,
positioned past both faces) — a tool flush with or short of a face leaves a blind pocket, not a
through feature, and --check can't catch it (the part is still valid). The brief word "through"
(or "bore", "passage") is the cue. Confirm it actually passes through with the section/xray view,
not just the exterior.revolve angle is RADIANS (Math.PI * 2 = full turn). Build a revolve profile with
polygon(points3D), not draw().close().sketchOnPlane('XZ').face() (fails --check).
(references/sketching-2d.md.)box(width, depth, height) — depth is Y, height is Z, mm. at sets the geometric CENTER:
bare box(w,d,h) is corner-at-origin, { centered: true } centers on origin, { at:[x,y,z] }
centers there. cylinder/cone at is the base center; sphere at is its center.sphere to a half-space with intersect (a box over
the half you want). Fusing a whole sphere bulges past a cap face. See the dome-cap example.circularPattern/rectangularPattern fullAngle), unlike
revolve (radians). Check the unit per op.async: export default async () => {…} is awaited — await loadFont(...)
(required before any sketchText/drawText) or await importSTEP(...). --check type-checks
Node built-ins, so a part may import { readFile } from 'node:fs/promises'.references/getting-started.md · primitives.md · sketching-2d.md · booleans.md ·
modifiers.md · transforms.md · measurement-validation.md · assemblies-motion.md ·
operation-tiers.md. Maker recipes: fdm-conventions.md · mechanical-joints.md ·
gridfinity.md · gears.md · threads.md · airfoils.md (fans/props/impellers/vanes).
Buildings/BIM/IFC: families-bim.md (declarative components → viewport meshes + IFC export).
Backstop: any symbol not covered →
reference/llms-full.txt (every export with signatures), bundled in the package.
Each is a complete examples/<name>.brep.ts + <name>.expected.json baseline.
mounting-bracket · flanged-coupler · transform-bracket · dome-cap.extruded-bracket · revolved-pulley · swept-gasket.rounded-block (fillet) · chamfered-block (API shape only; chamfer is fragile) ·
hollow-enclosure (shelled).spur-gear (polygon→extrude, BOSL2-faithful) · threaded-rod (loft sections).gridfinity-baseplate · gridfinity-bin · gridfinity-divider.© 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
SKILL.md and 47 other files (references) in packages/brepjs-cad/skills/implement of andymai/brepjs.
Open the folder on GitHubat commit e8fa511
Implement 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 |
|---|---|---|---|---|---|---|
| Implement this skillandymai/brepjs | 114 | — | ~3.4k | Automated safety check: Pass | Apache-2.0 | |
| Finishing a Development Branchobra/superpowers | 296k | 5 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Typescript Advanced Typesrolling-scopes/rsschool-app | 10k | 24 repos | ~4.2k | Automated safety check: Pass | MPL-2.0 | |
| PR Babysitteropeninterpreter/openinterpreter | 69k | 3 repos | ~4.2k | Automated safety check: Pass | Apache-2.0 | |
| Code Review ChecklistshareAI-lab/learn-claude-code | 78k | 5 repos | ~1.1k | Automated safety check: Pass | MIT | |
| Greplooponyx-dot-app/onyx | 32k | 4 repos | ~3.3k | Automated safety check: Pass | MIT |
obra/superpowers
Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.
rolling-scopes/rsschool-app
Master TypeScript's advanced type system including generics, conditional types, mapped types, template literals, and utility types for building type-safe applications.
openinterpreter/openinterpreter
Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.
shareAI-lab/learn-claude-code
Reviews code against a five-part checklist covering security, correctness, performance, maintainability and testing, and reports findings in a fixed format.
onyx-dot-app/onyx
Iteratively improves a PR (GitHub), MR (GitLab), or shelved changelist (Perforce) until Greptile gives it a 5/5 confidence score with zero unresolved comments.
akash-network/node
Behavioral guidelines to reduce common LLM coding mistakes. An agent skill from akash-network/node.
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…
andymai/brepjs
This skill should be used when deciding which layer or module a new file, function, or directory belongs in, or when a layer-boundary check fails.
Categories
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…. Implement is an agent skill from andymai/brepjs.ts part — writing the geometry with the functional API (box, cylinder, fuse, cut, fillet, sketch→extrude…), declaring an expected block, and following the hard rules (import every function, unwrap Results, select edges, coordinate semantics).
Implement fits situations like: editing a brepjs .brep.ts part — writing the geometry with the functional API (box; sketch→extrude…); declaring an expected block; following the hard rules (import every function.
Run `npx skills add andymai/brepjs --skill implement -a claude-code`. Or copy the skill folder (packages/brepjs-cad/skills/implement in andymai/brepjs) into .claude/skills/implement in your project. Claude Code loads it when a task matches its description.
Run `npx skills add andymai/brepjs --skill implement -a codex`. Or copy the skill folder (packages/brepjs-cad/skills/implement in andymai/brepjs) into .agents/skills/implement 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 implement -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/implement, .gemini/skills/implement, .github/skills/implement and .opencode/skills/implement in your project.
Going by SKILL.md and its folder, Implement needs TypeScript for the scripts in its folder, the command-line tools its instructions call (npx) and credentials named EXPECTED_UNKNOWN_KEY. Our summary lists: Node.js; A credential in EXPECTED_UNKNOWN_KEY.
SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. 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.
Implement 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.4k tokens (SKILL.md is roughly 14k 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 16k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Implement: Finishing a Development Branch (obra/superpowers, 296k stars), Typescript Advanced Types (rolling-scopes/rsschool-app, 10k stars), PR Babysitter (openinterpreter/openinterpreter, 69k stars) and Code Review Checklist (shareAI-lab/learn-claude-code, 78k 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 6, 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.