Eslint Migrate Options
biomejs/biome
A skill your agent uses when biome migrate eslint must preserve configurable ESLint rule options through source-option models, Biome conversions, typed rule variants, and migration fixtures.
Act as a software architect: analyze a repository's folder structure and cross-file import dependencies, detect its architectural pattern, design element/file boundaries with the user, and configure…
$ npx skills add javierbrea/eslint-plugin-boundaries --skill boundaries-architect -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install javierbrea/eslint-plugin-boundaries boundaries-architect --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/javierbrea/eslint-plugin-boundaries.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/boundaries-architect .claude/skills/boundaries-architect && 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 "boundaries-architect" agent skill from https://github.com/javierbrea/eslint-plugin-boundaries/tree/master/.agents/skills/boundaries-architect into .claude/skills/boundaries-architect/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "boundaries-architect", 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/javierbrea/eslint-plugin-boundaries/tree/master/.agents/skills/boundaries-architectType 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 javierbrea/eslint-plugin-boundaries --skill boundaries-architect -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install javierbrea/eslint-plugin-boundaries boundaries-architect --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/javierbrea/eslint-plugin-boundaries.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/boundaries-architect .agents/skills/boundaries-architect && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "boundaries-architect" agent skill from https://github.com/javierbrea/eslint-plugin-boundaries/tree/master/.agents/skills/boundaries-architect into .agents/skills/boundaries-architect/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "boundaries-architect", 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 javierbrea/eslint-plugin-boundaries --skill boundaries-architect -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install javierbrea/eslint-plugin-boundaries boundaries-architect --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/javierbrea/eslint-plugin-boundaries.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/boundaries-architect .cursor/skills/boundaries-architect && 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 "boundaries-architect" agent skill from https://github.com/javierbrea/eslint-plugin-boundaries/tree/master/.agents/skills/boundaries-architect into .cursor/skills/boundaries-architect/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "boundaries-architect", 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/javierbrea/eslint-plugin-boundaries.git --path .agents/skills/boundaries-architect--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 javierbrea/eslint-plugin-boundaries --skill boundaries-architect -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install javierbrea/eslint-plugin-boundaries boundaries-architect --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/javierbrea/eslint-plugin-boundaries.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/boundaries-architect .gemini/skills/boundaries-architect && 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 "boundaries-architect" agent skill from https://github.com/javierbrea/eslint-plugin-boundaries/tree/master/.agents/skills/boundaries-architect into .gemini/skills/boundaries-architect/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "boundaries-architect", 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 javierbrea/eslint-plugin-boundaries boundaries-architectInstalls 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 javierbrea/eslint-plugin-boundaries --skill boundaries-architect -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/javierbrea/eslint-plugin-boundaries.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/boundaries-architect .github/skills/boundaries-architect && 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 "boundaries-architect" agent skill from https://github.com/javierbrea/eslint-plugin-boundaries/tree/master/.agents/skills/boundaries-architect into .github/skills/boundaries-architect/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "boundaries-architect", 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 javierbrea/eslint-plugin-boundaries --skill boundaries-architect -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install javierbrea/eslint-plugin-boundaries boundaries-architect --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/javierbrea/eslint-plugin-boundaries.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/boundaries-architect .opencode/skills/boundaries-architect && 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 "boundaries-architect" agent skill from https://github.com/javierbrea/eslint-plugin-boundaries/tree/master/.agents/skills/boundaries-architect into .opencode/skills/boundaries-architect/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "boundaries-architect", 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.
boundaries-architectAct as a software architect: analyze a repository's folder structure and cross-file import dependencies, detect its architectural pattern, design element/file boundaries with the user, and configure…
Boundaries Architect is an agent skill from javierbrea/eslint-plugin-boundaries. Act as a software architect: analyze a repository's folder structure and cross-file import dependencies, detect its architectural pattern, design element/file boundaries with the user, and configure eslint-plugin-boundaries (installing it if missing) — including TypeScript resolver setup — in the project's ESLint config. Use when: setting up architectural boundaries, adding eslint-plugin-boundaries to a project, defining elements/policies for the boundaries rule, or auditing/fixing an existing boundaries config.
Its SKILL.md is about 4.2k 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, covering Linting and formatting, File organization and GraphQL. It works with ESLint and TypeScript. The repository describes itself as: Enforce architectural boundaries in your JavaScript and TypeScript projects. The licence is MIT.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 50f2d31. 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.
Shell commands in SKILL.md call:
pnpmnpmyarnbunFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
registry.npmjs.orgAlso links to:
jsboundaries.devnpmjs.comFrom 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.
Boundaries Architect loads about 4.2k tokens when it runs. Until then it costs about 135 tokens; SKILL.md has 1,863 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 javierbrea/eslint-plugin-boundaries at commit 50f2d31, republished under its MIT licence (© javierbrea). 1,863 words, ~4,161 tokens.
.claude/skills/boundaries-architect/SKILL.md (or your agent's skills folder).You are acting as a software architect, not just a config generator. Your job: understand how a codebase is actually organized, propose an architecture that matches (or improves) it, get the human to sign off on the design, and only then translate that design into eslint-plugin-boundaries configuration.
Never skip straight to writing config from folder names alone. Folder names lie (utils/ can hide half the domain logic); only the combination of structure and the dependency graph reveals the real architecture.
Canonical docs (source of truth for anything not covered below): https://www.jsboundaries.dev/docs/overview/
When you're unsure about a syntax detail, a newer feature, or an edge case this skill doesn't cover, WebFetch the relevant page instead of guessing — especially .../docs/classification/, .../docs/selectors/, .../docs/policies/, .../docs/rules/, .../docs/settings/. Also use it to resolve any question the user asks about concepts.
Work from the target root (argument, or cwd if none given). Don't ask the user for information you can find yourself.
Language & tooling
tsconfig.json and a typescript dependency.pnpm-lock.yaml, yarn.lock, package-lock.json, bun.lockb).nx.json, turbo.json, lerna.json, pnpm-workspace.yaml, or workspaces in package.json.eslint.config.{js,mjs,cjs,ts}) vs legacy (.eslintrc*). Note ESM ("type": "module") vs CJS.eslint-plugin-boundaries already a dependency? At what version, with what existing boundaries/* settings/rules (if any — this may be an audit/iterate task, not a fresh setup)?Folder structure — build a tree of the source root(s) (usually src/, or each package/app in a monorepo), a few levels deep, ignoring node_modules, build output, and hidden folders. Note repeating shapes: controllers/services/models, domain/application/infrastructure, features/*, modules/*, components/{atoms,molecules,organisms}, pages/, app/ (Next.js router), packages/*/apps/* (monorepo), colocated __tests__/*.spec.*, etc.
Dependency graph — this is what separates a real architectural analysis from guessing off directory names. For a representative sample (or all, if the codebase is small) of source files:
import ... from "...", require("..."), dynamic import(...), and TS import type). Grep is fine for this — you don't need a full AST pass:
grep -rEn "^\s*import .*from|require\(|import\(" <src> --include=*.{js,jsx,ts,tsx}Agent, general-purpose) so raw grep/file output doesn't fill your context — ask it to return an aggregated folder-to-folder edge list plus notable violations, not raw file contents.File-kind patterns, independently of folder structure. Elements answer "which architectural piece", files answer "what kind of file, regardless of where it lives" — you need both to design a complete eslint-plugin-boundaries config, not just the element layer. Scan for recurring file kinds across elements: tests (*.spec.*, *.test.*, __tests__/), stories (*.stories.*), styles (*.css, *.module.scss), mocks/fixtures (__mocks__/, *.mock.*, fixtures/), type-only files (*.d.ts, types.ts), barrel/entry files (index.ts), snapshots, generated code. For each recurring kind, check the dependency graph for a pattern worth enforcing — e.g. "no production file ever imports a *.spec.* file", "mocks are only imported by test files", "styles are never imported outside their own component". A pattern found in the graph (not just the filename convention) is what justifies turning it into a boundaries/files category plus a policy, not just noting that the naming convention exists.
Synthesize a pattern hypothesis. Common patterns to recognize (not exhaustive — real codebases mix these):
features/* or modules/*, each vertically self-contained)domain/, application/, infrastructure/, interfaces/ or adapters/)atoms/molecules/organisms/templates/pages)packages/*, apps/*, each with its own public entry point)app//pages/ router, Nx libs/ with tags)State your hypothesis with evidence ("services/* only ever imports repositories/* and never the reverse, in 40/42 files — the 2 exceptions look like violations, not exceptions") rather than a bare assertion.
Do not write any config yet. Present your findings and get alignment first, the way an architect would present a design doc:
shared/common/lib-style folder should be importable by everyone, or scoped.recommended (permissive rollout — lets unclassified files pass) vs strict (every file must belong to a known element from day one). recommended is the better default for an existing codebase being retrofitted; strict for new/small projects.AskUserQuestion for these — don't make architecturally significant judgment calls silently.test") — and confirm that too before touching any file. Policy order matters (last match wins) — mention that when a policy has exceptions layered on top of a broader rule.Treat this like an ADR: the output of this phase is a design the user has actually agreed to, not just a config diff to review after the fact.
Only after the design is confirmed:
package.json for eslint-plugin-boundaries. If present, keep the existing version unless the user asked to upgrade.WebFetch https://registry.npmjs.org/eslint-plugin-boundaries/latest (returns JSON with a version field) is more reliable than scraping the npm HTML page at https://www.npmjs.com/package/eslint-plugin-boundaries. Pin the exact version (no ^/~) in devDependencies, matching this repo's own convention of exact-pinned deps via Renovate.eslint version is present (the plugin requires ESLint's flat config / v9+ for the examples in this skill — check the installed major and adapt if the project is still on ESLint 8 legacy config, see 3.3).pnpm add -D, npm install -D, yarn add -D, bun add -D) rather than hand-editing the lockfile.If tsconfig.json was detected, also ensure these are installed (exact-pin the same way):
@typescript-eslint/parser, @typescript-eslint/eslint-plugin, eslint-import-resolver-typescript.
Wire them into the flat config:
import typescriptParser from "@typescript-eslint/parser";
import typescriptEslintPlugin from "@typescript-eslint/eslint-plugin";
export default [{
languageOptions: { parser: typescriptParser },
plugins: { "@typescript-eslint": typescriptEslintPlugin, boundaries },
settings: {
"import/resolver": { typescript: { alwaysTryTypes: true } },
},
}];eslint-import-resolver-typescript auto-detects paths/baseUrl from tsconfig.json, so existing path aliases (@modules/*, @shared/*, ...) resolve correctly without extra config. If the project uses TS project references or a non-standard tsconfig location, point the resolver at it explicitly (project: "./tsconfig.json") — check .../docs/guides/custom-resolvers.md and .../docs/guides/typescript-support.md for details beyond this.
settings["boundaries/elements"] (and boundaries/files if the design includes file categories) from the confirmed design.import boundaries from "eslint-plugin-boundaries";
import { recommended, strict } from "eslint-plugin-boundaries/config";
// spread recommended.rules / recommended.settings (or strict.*) then override boundaries/dependencies"boundaries/dependencies" with default: "allow"|"disallow" (per the confirmed strictness) and the policies array translated directly from the Phase 2 summary — one policy per confirmed rule, ordered general → specific, with a short comment above each mirroring the human-readable rule it encodes..eslintrc* projects: the plugin's own docs and examples target flat config. If the project hasn't migrated, either recommend migrating (link .../docs/installation.mdx) or translate the same plugins/settings/rules shape into the legacy JSON/YAML/JS format — the boundaries/* settings and rule options are identical either way, only the file shape around them changes..../docs/guides/monorepo-setup.md for boundaries/root-path and boundaries/flag-as-external guidance before assuming a single flat element list covers every package.boundaries/dependencies to warn while migrating.boundaries/debug (.../docs/guides/debugging.md) as the tool to reach for if a policy isn't matching the way either of you expects — it prints the full runtime element/file/module description per file, which is the fastest way to see why a pattern isn't matching.Full reference: element/file descriptors → .../docs/classification/, matching → .../docs/selectors/, rule config → .../docs/policies/, settings → .../docs/settings/settings.md.
Elements (boundaries/elements, array, order matters — most specific first, first match wins per path level unless multi-type is enabled):
{ type: "component", pattern: "components/*/*", capture: ["family", "elementName"] }pattern matches folders, matched right-to-left by default (partialMatch: true) — you only write the trailing path segment. Set partialMatch: false to anchor at the project root when two same-named folders must be told apart.capture pulls named values from wildcard segments (micromatch capture) — used later in selectors/messages as element.captured.<name>.basePattern/baseCapture capture a value from the left side of the path when pattern only covers the right side.element.parents).boundaries/elements-single-type: false lets a folder carry multiple element types at once (off by default).Files (boundaries/files, orthogonal to elements — categorizes by file kind regardless of folder):
{ pattern: "**/*.spec.js", category: "test" }Unlike elements, every matching file descriptor contributes its category (file.categories accumulates), matched against the full path.
Policies (boundaries/dependencies rule):
"boundaries/dependencies": [2, {
default: "disallow", // or "allow"
policies: [
{
from: { element: { types: "component" } }, // who's importing
allow: { to: { element: { types: "helper" } } }, // effect + who's imported
message: "optional custom error", // Handlebars: {{from.element.types}}, {{to.module.source}}...
},
],
}]from/to are entity selectors with independent element / file / module sub-selectors (all optional, all must match if present). Use module for external/core packages: to: { module: { origin: "external", source: "react" } }.dependency selects on the import itself: { kind: "value"|"type"|"typeof" }, { relationship: { to: "internal"|"parent"|"child"|... } }.allow and disallow matching, disallow wins.Other rules: boundaries/no-unknown-files (files matching no element/file descriptor), boundaries/no-unknown-dependencies (imports of unrecognized targets), boundaries/no-ignored-dependencies (imports of ignored files). All three are included but disabled in recommended, enabled in strict.
Key settings: boundaries/include/boundaries/ignore (micromatch, ignore wins), boundaries/root-path (defaults to cwd — set explicitly in monorepos), boundaries/flag-as-external (tune what counts as "external" vs "local", important for monorepos), import/resolver (module resolution, e.g. typescript: { alwaysTryTypes: true } or webpack: {...}).
Deprecated but still-working rules you may find in existing configs during an audit: boundaries/element-types (→ boundaries/dependencies), boundaries/entry-point, boundaries/external, boundaries/no-private. If auditing an existing setup, prefer migrating these to boundaries/dependencies equivalents rather than leaving them — check .../docs/releases/migration-guides/v6-to-v7.mdx for the mapping.
© javierbrea, MIT. 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 .agents/skills/boundaries-architect of javierbrea/eslint-plugin-boundaries.
Open the folder on GitHubat commit 50f2d31
Boundaries Architect 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 |
|---|---|---|---|---|---|---|
| Boundaries Architect this skilljavierbrea/eslint-plugin-boundaries | 997 | — | ~4.2k | Automated safety check: Pass | MIT | |
| Eslint Migrate Optionsbiomejs/biome | 26k | — | ~1.4k | Automated safety check: Pass | Apache-2.0 | |
| Ultraciteagustinusnathaniel/nextarter-tailwind | 125 | 2 repos | ~1.2k | Automated safety check: Pass | MIT | |
| Code Qualityredis/RedisInsight | 8.9k | — | ~1.2k | Automated safety check: Pass | Custom licence | |
| Port Ruleweb-infra-dev/rslint | 461 | — | ~1.7k | Automated safety check: Pass | MIT | |
| Migrate OxlintAsvarox/allkaraoke | 261 | 4 repos | ~2.5k | Automated safety check: Pass | None |
biomejs/biome
A skill your agent uses when biome migrate eslint must preserve configurable ESLint rule options through source-option models, Biome conversions, typed rule variants, and migration fixtures.
agustinusnathaniel/nextarter-tailwind
Ultracite is a zero-config linting and formatting preset for JavaScript/TypeScript projects.
redis/RedisInsight
Code-quality standards for RedisInsight: TypeScript strictness, naming conventions (camelCase, PascalCase, UPPERSNAKECASE), linting rules, no any without reason, no !important in styles, and…
web-infra-dev/rslint
Port a new ESLint core or plugin rule to rslint, including explicitly requested batches.
Asvarox/allkaraoke
Guide for migrating a project from ESLint to Oxlint. An agent skill from Asvarox/allkaraoke.
gapmiss/obsidian-plugin-skill
Rules and references for building Obsidian plugins: ESLint rules, TypeScript practices, memory cleanup, API choices, UI standards and the community submission process.
javierbrea/eslint-plugin-boundaries
Review a GitHub pull request from three perspectives — functional fit against its linked issue, code correctness/quality, and architectural boundaries — then post a single GitHub review: one general…
javierbrea/eslint-plugin-boundaries
Complete or maximize unit test coverage for a specific TypeScript file in this repo.
javierbrea/eslint-plugin-boundaries
Create or update a GitHub pull request for the current branch from the repository's fixed PR template (.github/PULLREQUESTTEMPLATE.md) and the branch changes.
javierbrea/eslint-plugin-boundaries
Cross-cutting architecture reference for the eslint-plugin-boundaries monorepo — the dependency graph between packages, the Nx target graph, and the release flow.
Works with
Categories
Act as a software architect: analyze a repository's folder structure and cross-file import dependencies, detect its architectural pattern, design element/file boundaries with the user, and configure…. Boundaries Architect is an agent skill from javierbrea/eslint-plugin-boundaries. Act as a software architect: analyze a repository's folder structure and cross-file import dependencies, detect its architectural pattern, design element/file boundaries with the user, and configure eslint-plugin-boundaries (installing it if missing) — including TypeScript resolver setup — in the project's ESLint config.
Boundaries Architect fits situations like: : setting up architectural boundaries; adding eslint-plugin-boundaries to a project; defining elements/policies for the boundaries rule; auditing/fixing an existing boundaries config.
Run `npx skills add javierbrea/eslint-plugin-boundaries --skill boundaries-architect -a claude-code`. Or copy the skill folder (.agents/skills/boundaries-architect in javierbrea/eslint-plugin-boundaries) into .claude/skills/boundaries-architect in your project. Claude Code loads it when a task matches its description.
Run `npx skills add javierbrea/eslint-plugin-boundaries --skill boundaries-architect -a codex`. Or copy the skill folder (.agents/skills/boundaries-architect in javierbrea/eslint-plugin-boundaries) into .agents/skills/boundaries-architect 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 javierbrea/eslint-plugin-boundaries --skill boundaries-architect -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/boundaries-architect, .gemini/skills/boundaries-architect, .github/skills/boundaries-architect and .opencode/skills/boundaries-architect in your project.
Going by SKILL.md and its folder, Boundaries Architect needs the command-line tools its instructions call (pnpm, npm, yarn and bun). Our summary lists: Node.js.
SKILL.md names 3 domains. In commands or code: registry.npmjs.org; the agent is likely to contact it when it follows the instructions. As links in the text: jsboundaries.dev and npmjs.com. 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.
Boundaries Architect is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.2k 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.
Skills that share tags, products or a category with Boundaries Architect: Eslint Migrate Options (biomejs/biome, 26k stars), Ultracite (agustinusnathaniel/nextarter-tailwind, 125 stars), Code Quality (redis/RedisInsight, 8.9k stars) and Port Rule (web-infra-dev/rslint, 461 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
javierbrea (a GitHub user) maintains it in javierbrea/eslint-plugin-boundaries, which has 997 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 9, 2026.
Source: javierbrea/eslint-plugin-boundaries on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.