Agent skill

Implement

by andymai in 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…

Apache-2.0Auto-check passedDevelopment

Install Implement

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

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

GitHub CLI
$ gh skill install andymai/brepjs implement --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/packages/brepjs-cad/skills/implement .claude/skills/implement && 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
implement
GitHub stars
114
Token cost
~3.4k tokens
SKILL.md length
1,684 words
Files
48 (incl. references)
Skills in repo
21
Repo updated
First seen
Licence
Apache-2.0

At a glance

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…

  • Works in 3 steps: Decompose the brief into named features,… → Build that feature to spec, not an… → Before finishing, re-read the brief noun…
  • Editing a brepjs .brep.ts part — writing the geometry with the functional API (box
  • SKILL.md covers Authoring contract, Realize the designed object —…, Choose the operation… and Declare intent — the expected…, plus 3 more sections
  • Runs TypeScript scripts from its folder; calls npx; needs EXPECTED_UNKNOWN_KEY

What it does

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.

When your agent uses it

  • 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

Example prompts

  • “/implement”

Requirements

  • Node.js
  • A credential in EXPECTED_UNKNOWN_KEY

Workflow steps

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

  1. Decompose the brief into named features, then mark the ONE defining feature — the geometry without
  2. Build that feature to spec, not an eyeballed approximation. Each of the above passes --check while
  3. Before finishing, re-read the brief noun by noun and confirm each named feature is actually in the

What it can do on your machine

Read from SKILL.md and the folder at commit e8fa511. 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

    Ships script files (TypeScript, from the files we listed), which the agent can run.

    Shell commands in SKILL.md call:

    • npx

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

  • Network

    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.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • EXPECTED_UNKNOWN_KEY

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

Context cost

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.

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

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 e8fa511, republished under its Apache-2.0 licence (© andymai). 1,684 words, ~3,384 tokens.

Download SKILL.mdSave it as .claude/skills/implement/SKILL.md (or your agent's skills folder). This skill also uses 47 other files; get the full folder from GitHub.
name
implement
description
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.
version
0.1.0

Author a brepjs part

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 ….

Authoring contract

  • export default () => <shape> (or async () => {…} to await loadFont/importSTEP).
  • Short functional API (box, cylinder, fuse, cut, fillet, …), named consts at the top.
  • Scaffold with brep init <name>. Edit source, never generated artifacts (STEP/STL/GLB derive from the .brep.ts).

Realize the designed object — not just a valid one

--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.

  1. Decompose the brief into named features, then mark the ONE defining feature — the geometry without which it's a generic blob. 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).
  2. Build that feature to spec, not an eyeballed approximation. Each of the above passes --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.
  3. Before finishing, re-read the brief noun by noun and confirm each named feature is actually in the geometry — including count (e.g. four mount holes, N teeth), not just present-ish.

Choose the operation (reliability tiers)

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).

Declare intent — the expected block

Add 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.

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

Hard rules

  • Import every function you call. No globals — every op is a named export from '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.
  • Transforms are free functions, shape-first — 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.)
  • Unwrap Results. Booleans and 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.)
  • A loose-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.)
  • Select edges/faces; don't fillet/chamfer everything. 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.
  • A through hole/slot/mortise needs a tool proud of BOTH faces. Size the cutting 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.
  • No half-sphere primitive: clip a full 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.
  • Pattern angles are DEGREES (circularPattern/rectangularPattern fullAngle), unlike revolve (radians). Check the unit per op.
  • Parts may be 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'.
  • Author in ESM (the tool's default) so the kernel loads.

Reference index (load only what the task needs)

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.

Examples index (read the closest before authoring)

Each is a complete examples/<name>.brep.ts + <name>.expected.json baseline.

  • Primitives + booleans: mounting-bracket · flanged-coupler · transform-bracket · dome-cap.
  • 2D sketch → solid: extruded-bracket · revolved-pulley · swept-gasket.
  • Modifiers: rounded-block (fillet) · chamfered-block (API shape only; chamfer is fragile) · hollow-enclosure (shelled).
  • Mechanical: spur-gear (polygon→extrude, BOSL2-faithful) · threaded-rod (loft sections).
  • Gridfinity: 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

Files

SKILL.md and 47 other files (references) in packages/brepjs-cad/skills/implement of andymai/brepjs.

  • SKILL.md
  • examples/chamfered-block.brep.ts
  • examples/chamfered-block.expected.json
  • examples/dome-cap.brep.ts
  • examples/dome-cap.expected.json
  • examples/extruded-bracket.brep.ts
  • examples/extruded-bracket.expected.json
  • examples/flanged-coupler.brep.ts
  • examples/flanged-coupler.expected.json
  • examples/gridfinity-baseplate.brep.ts
  • examples/gridfinity-baseplate.expected.json
  • examples/gridfinity-bin.brep.ts
  • examples/gridfinity-bin.expected.json
  • examples/gridfinity-divider.brep.ts
  • examples/gridfinity-divider.expected.json
  • examples/hollow-enclosure.brep.ts
  • examples/hollow-enclosure.expected.json
  • examples/mounting-bracket.brep.ts
  • examples/mounting-bracket.expected.json
  • examples/revolved-pulley.brep.ts
  • … and 28 more

Open the folder on GitHubat commit e8fa511

Compare with similar skills

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.

Implement compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Implement this skillandymai/brepjs114—~3.4kAutomated safety check: PassApache-2.0
Finishing a Development Branchobra/superpowers296k5 repos~1.9kAutomated safety check: PassMIT
Typescript Advanced Typesrolling-scopes/rsschool-app10k24 repos~4.2kAutomated safety check: PassMPL-2.0
PR Babysitteropeninterpreter/openinterpreter69k3 repos~4.2kAutomated safety check: PassApache-2.0
Code Review ChecklistshareAI-lab/learn-claude-code78k5 repos~1.1kAutomated safety check: PassMIT
Greplooponyx-dot-app/onyx32k4 repos~3.3kAutomated safety check: PassMIT

Similar skills

  • 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.

    296k GitHub starsUsed in 5 repos~1.9k tokens
    DevelopmentAuto-check passed
  • Typescript Advanced Types

    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.

    10k GitHub starsUsed in 24 repos~4.2k tokens
    DevelopmentAuto-check passed
  • PR Babysitter

    openinterpreter/openinterpreter

    Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.

    69k GitHub starsUsed in 3 repos~4.2k tokens
    DevelopmentAuto-check passed
  • Code Review Checklist

    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.

    78k GitHub starsUsed in 5 repos~1.1k tokens
    DevelopmentAuto-check passed
  • Greploop

    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.

    32k GitHub starsUsed in 4 repos~3.3k tokens
    DevelopmentAuto-check passed
  • Guidelines

    akash-network/node

    Behavioral guidelines to reduce common LLM coding mistakes. An agent skill from akash-network/node.

    1.1k GitHub starsUsed in 22 repos~577 tokens
    DevelopmentAuto-check passed

More from andymai/brepjs

All 21 skills in this repo
  • 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"…

    114 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…

    114 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…

    114 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…

    114 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…

    114 GitHub stars~4.4k tokensUpdated yesterday
    Auto-check passed
  • 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.

    114 GitHub stars~3.4k tokensUpdated yesterday
    Auto-check passed

Categories

Questions about Implement

What does Implement do?

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).

When should I use Implement?

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.

How do I install Implement in Claude Code?

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.

How do I install Implement in Codex?

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.

Can I use Implement 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 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.

What does Implement need to run?

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.

Does Implement access the network?

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.

Is Implement 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 Implement use?

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.

How many tokens does Implement use?

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.

What are the alternatives to Implement?

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.

Who maintains Implement?

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.