← All pluginsPlugin

engineering-paved-path

Onion backend architecture and frontend UI structure skills, shared by architecture-review and sdd-engineering.

Compatibility

  • Claude Code ≥ 2.1.318
  • Windows
  • macOS
  • verified on 2.1.318

Install

Who gets it

In a Claude Code session

User

  1. Run in a Claude Code session:

    /plugin install engineering-paved-path --marketplace lindigo-design/devdigest-marketplace
  2. The first time, Claude Code asks before it adds the marketplace. Then the plugin's details open; nothing is installed yet.

  3. Choose Install for you (user scope)

Project

  1. Run in a Claude Code session:

    /plugin install engineering-paved-path --marketplace lindigo-design/devdigest-marketplace
  2. The first time, Claude Code asks before it adds the marketplace. Then the plugin's details open; nothing is installed yet.

  3. Choose Install for all collaborators on this repository (project scope)

  4. Then, in your terminal, record the marketplace in the repository for collaborators (running it again is harmless):

    claude plugin marketplace add lindigo-design/devdigest-marketplace --scope project

The commands write this .claude/settings.json:

{
  "enabledPlugins": {
    "engineering-paved-path@lindigo-devdigest": true
  },
  "extraKnownMarketplaces": {
    "lindigo-devdigest": {
      "source": {
        "source": "github",
        "repo": "lindigo-design/devdigest-marketplace"
      }
    }
  }
}

Commit it:

git add .claude/settings.json

Collaborators who trust the folder get the marketplace and the plugin. These plugins come from the marketplace repository itself, so they load without a separate install. Each collaborator needs Claude Code ≥ 2.1.318.

If Claude Code reports the plugin as enabled but not installed, run this once:

claude plugin install engineering-paved-path@lindigo-devdigest --scope project

Local

  1. Run in a Claude Code session:

    /plugin install engineering-paved-path --marketplace lindigo-design/devdigest-marketplace
  2. The first time, Claude Code asks before it adds the marketplace. Then the plugin's details open; nothing is installed yet.

  3. Choose Install for you, in this repo only (local scope)

.claude/settings.local.json is personal and is not committed.

In your terminal

User

  1. Run in your terminal:

    claude plugin install engineering-paved-path --marketplace lindigo-design/devdigest-marketplace
  2. Restart Claude Code, or run /reload-plugins in an open session, to load it.

Project

  1. Run in your terminal:

    claude plugin marketplace add lindigo-design/devdigest-marketplace --scope project
    claude plugin install engineering-paved-path@lindigo-devdigest --scope project
  2. Restart Claude Code, or run /reload-plugins in an open session, to load it.

The commands write this .claude/settings.json:

{
  "enabledPlugins": {
    "engineering-paved-path@lindigo-devdigest": true
  },
  "extraKnownMarketplaces": {
    "lindigo-devdigest": {
      "source": {
        "source": "github",
        "repo": "lindigo-design/devdigest-marketplace"
      }
    }
  }
}

Commit it:

git add .claude/settings.json

Collaborators who trust the folder get the marketplace and the plugin. These plugins come from the marketplace repository itself, so they load without a separate install. Each collaborator needs Claude Code ≥ 2.1.318.

If Claude Code reports the plugin as enabled but not installed, run this once:

claude plugin install engineering-paved-path@lindigo-devdigest --scope project

Local

  1. Run in your terminal:

    claude plugin install engineering-paved-path --marketplace lindigo-design/devdigest-marketplace --scope local
  2. Restart Claude Code, or run /reload-plugins in an open session, to load it.

.claude/settings.local.json is personal and is not committed.

Adds ~346 tokens to every session.

Components

Skills · 2

  • frontend-ui-architecture

    Decides where frontend code lives in a React or Next.js App Router app: components, hooks, helpers, constants, types, state and the client boundary. Use when adding or moving UI files, building a screen, route or feature, splitting a growing component, extracting logic out of a component, reviewing a change for structure, or when a user asks "where should this go?", "how do I structure this?", "split this component" or "this page is too big". Organization only. Not for backend layering (use engineering-paved-path:onion-architecture), hook anti-patterns, performance or testing.

    /engineering-paved-path:frontend-ui-architecture you can start it; Claude also loads it when relevant

    Preloaded by: architecture-reviewer (architecture-review), implementation-planner (sdd-engineering)

  • onion-architecture

    Applies onion architecture to a modular TypeScript/Node backend: domain core, ports, application, infrastructure and presentation rings, with dependencies pointing inward only. Use when creating or changing a backend module, route, service, repository, adapter, job handler or database query, when wiring code into the composition root, when reviewing a backend change for layering, or when a user asks "where should this backend code live?", "is this route too fat?", or mentions onion, clean or hexagonal architecture, ports and adapters, or layers. Examples use Fastify, Drizzle and Zod; the rules apply to any modular backend. Not for frontend structure (use engineering-paved-path:frontend-ui-architecture).

    /engineering-paved-path:onion-architecture you can start it; Claude also loads it when relevant

    Preloaded by: architecture-reviewer (architecture-review), implementation-planner (sdd-engineering)

Try it after install

Check that it loaded

  • In a session, type / and look for /engineering-paved-path:

  • List installed plugins with their version, scope and status:

    claude plugin list
  • See its components and what it adds to every session:

    claude plugin details engineering-paved-path

Call it

  • Skills: type /engineering-paved-path:frontend-ui-architecture, /engineering-paved-path:onion-architecture

Examples from the README

  • /engineering-paved-path:onion-architecture Where should the code that charges a card live?

    The ring the code belongs to (domain, ports, application, infrastructure, presentation), the files to create in your module, and which way each import may point.

  • /engineering-paved-path:onion-architecture Review src/modules/orders for layering

    Violations of the inward-only dependency rule, each with the file, the rule it breaks and the fix.

Manage

Update this plugin

In a Claude Code session

/plugin → Installed → engineering-paved-path → Update now

In your terminal

User

claude plugin update engineering-paved-path@lindigo-devdigest

Project

claude plugin update engineering-paved-path@lindigo-devdigest --scope project

Local

claude plugin update engineering-paved-path@lindigo-devdigest --scope local

From the terminal, restart Claude Code after the update.

Update every plugin from this marketplace

In a Claude Code session

/plugin → Marketplaces → lindigo-devdigest → Update marketplace

In your terminal

Use a Claude Code session.

claude plugin marketplace update without a name only refreshes the listings; it installs no new versions.

Turn on auto-update

In a Claude Code session

/plugin → Marketplaces → lindigo-devdigest → Enable auto-update

In your terminal

Or add autoUpdate to the marketplace entry in your settings file:

{
  "extraKnownMarketplaces": {
    "lindigo-devdigest": {
      "source": {
        "source": "github",
        "repo": "lindigo-design/devdigest-marketplace"
      },
      "autoUpdate": true
    }
  }
}

Auto-update is off by default for this marketplace.

Disable

In a Claude Code session

/plugin disable engineering-paved-path@lindigo-devdigest

In your terminal

User

claude plugin disable engineering-paved-path@lindigo-devdigest

Project

claude plugin disable engineering-paved-path@lindigo-devdigest --scope project

Local

claude plugin disable engineering-paved-path@lindigo-devdigest --scope local

While a plugin that depends on it is enabled (architecture-review, sdd-engineering), Claude Code refuses and prints the command that disables both in order.

Enable

In a Claude Code session

/plugin enable engineering-paved-path@lindigo-devdigest

In your terminal

User

claude plugin enable engineering-paved-path@lindigo-devdigest

Project

claude plugin enable engineering-paved-path@lindigo-devdigest --scope project

Local

claude plugin enable engineering-paved-path@lindigo-devdigest --scope local

Uninstall

In a Claude Code session

/plugin uninstall engineering-paved-path@lindigo-devdigest

In your terminal

User

claude plugin uninstall engineering-paved-path@lindigo-devdigest --prune

Project

claude plugin uninstall engineering-paved-path@lindigo-devdigest --scope project --prune

Local

claude plugin uninstall engineering-paved-path@lindigo-devdigest --scope local --prune

--prune also removes the dependencies that were installed with it and that no other plugin needs.

For a plugin the project enables, Claude Code asks: disable it for you only, or uninstall it for everyone.

Pin this release

In a Claude Code session

Use the terminal.

In your terminal

User

claude plugin marketplace remove lindigo-devdigest
claude plugin marketplace add lindigo-design/devdigest-marketplace#engineering-paved-path--v1.1.0
claude plugin install engineering-paved-path@lindigo-devdigest

Project

claude plugin marketplace remove lindigo-devdigest
claude plugin marketplace add lindigo-design/devdigest-marketplace#engineering-paved-path--v1.1.0
claude plugin install engineering-paved-path@lindigo-devdigest --scope project

Local

claude plugin marketplace remove lindigo-devdigest
claude plugin marketplace add lindigo-design/devdigest-marketplace#engineering-paved-path--v1.1.0
claude plugin install engineering-paved-path@lindigo-devdigest --scope local

A pin applies to the whole catalog, not only to this plugin. Removing the marketplace uninstalls every plugin installed from it and deletes their saved data, so reinstall the others afterwards. To unpin, run the same commands without #engineering-paved-path--v1.1.0.

Latest change

1.1.02026-11-11

Added

  • Eval suite evals/: onion-architecture loads on a backend layering question, frontend-ui-architecture on a component-structure question, neither on an unrelated request (deterministic tool_used graders; run with claude plugin eval).

Full changelog on GitHub

README.md

engineering-paved-path

Architecture rules shared by every workflow plugin in this marketplace: backend layering (onion architecture) and frontend UI structure. Knowledge only: no agents, no hooks, nothing runs.

Install

/plugin marketplace add lindigo-design/devdigest-marketplace
/plugin install engineering-paved-path@lindigo-devdigest

You rarely install it by hand: architecture-review and sdd-engineering depend on it and pull it in.

How to use

The skills load on their own when a task matches their description (adding a backend module, deciding where a component goes, reviewing a change for layering). You can also call them directly:

You type You get
/engineering-paved-path:onion-architecture Where should the code that charges a card live? The ring the code belongs to (domain, ports, application, infrastructure, presentation), the files to create in your module, and which way each import may point.
/engineering-paved-path:onion-architecture Review src/modules/orders for layering Violations of the inward-only dependency rule, each with the file, the rule it breaks and the fix.
/engineering-paved-path:frontend-ui-architecture This page component is 600 lines, split it A split plan: which parts stay route-local, which become shared components, hooks or pure helpers, and where each file goes.
/engineering-paved-path:frontend-ui-architecture Where does a date-formatting helper go? The folder for it (route-local vs shared), its name, and the import rules that keep layers clean.

The skills do not assume a folder layout. They look for your backend and UI source roots, existing module folders and the composition root, and ask you when the layout is unclear.

Other plugins use them by name: the architecture-reviewer agent preloads both, and the sdd-engineering planner applies them when it splits work into tasks.

Components

Type Name What it covers
skill onion-architecture Rings of a backend module, inward-only dependencies, ports and adapters, where routes, services, repositories, jobs and validation go; references for Fastify, Drizzle, Zod, adapters, jobs and server-sent events; worked examples.
skill frontend-ui-architecture Where components, hooks, helpers, constants, types and state live in a React / Next.js App Router UI; how to split a component; import layers; the client boundary.

Skills are namespaced: /engineering-paved-path:<skill>.

Permissions

None. The plugin ships skills only: no agents, hooks, MCP servers or executables, so it adds no tool permissions.

Dependencies

None. This is the base layer.

Used by How
architecture-review architecture-reviewer preloads both skills
sdd-engineering implementation-planner applies both when planning

Evals

evals/ checks behaviour, not only the manifest: a backend layering question loads onion-architecture, a component-structure question loads frontend-ui-architecture, an unrelated request loads neither. The graders are deterministic (tool_used); the agent runs call the model, so a run is paid and CI does not run it.

claude plugin eval ./plugins/engineering-paved-path --runs 1 --ablation none

Later

Planned for minor releases once their source and licence are confirmed or they are written:

  • security: security rubric and checklists (licence of the original not confirmed yet).
  • guardrails, engineering-insights, mermaid-diagram.
  • Quality evals for both skills against a sample application (the trigger evals ship in 1.1).

Licence

MIT, see LICENSE. Both skills are adapted from an MIT-licensed course project (© 2026 Ivan Lapa); sources.json records the origin of each skill and CHANGELOG.md the source commit.

See CHANGELOG.md and COMPATIBILITY.md.

Compatibility notes

Claude Code
≥ 2.1.318 (declared minimum; verified on 2.1.318, the CI pin)
OS
Windows 10/11, macOS

COMPATIBILITY.md on GitHub