fenceline

Enforce JavaScript and TypeScript import boundaries with @howells/boundaries.

2|Updated May 21, 2026
One-click install
npx skills add https://github.com/howells/skills --skill fenceline
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: fenceline
Source: https://github.com/howells/skills/tree/main/fenceline
Command: npx skills add https://github.com/howells/skills --skill fenceline

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Fenceline prevents architecture drift by catching and fixing JavaScript and TypeScript package and source-layer boundary violations before they spread.

Core Features & Use Cases

  • Boundary enforcement and repair: Add, check, and correct package-level and source-level import rules using the boundaries CLI from @howells/boundaries.
  • Explainable relationship analysis: Produce human-readable explanations of why an import or relationship is considered invalid, so you can fix it without weakening policy.
  • Profile-based source layout checking: Validate repo structure against common architectural profiles (feature-sliced, next-feature, clean-node) when Turbo-based boundaries aren’t the primary mechanism.

Quick Start

Use fenceline to run a boundary dry-run for your workspace, then apply the resulting root rules and execute boundaries check to locate and fix violations.

Frequently Asked Questions about fenceline

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I enforce architecture boundaries in a TypeScript monorepo?

Fenceline prevents architecture drift in JavaScript and TypeScript monorepos by validating package dependencies and source-layer import rules, catching and fixing boundary violations before they spread.

How do I stop app-to-app imports in a Turborepo workspace?

You stop app-to-app imports in a Turborepo workspace by running a boundary dry-run to generate deterministic root rules, applying them, and executing boundaries check to locate and repair violations.

Can I check import rules without using Turborepo?

Yes, you can validate repository structure without Turborepo by profiling source layouts against architectural profiles like feature-sliced, next-feature, or clean-node to enforce import rules.

How do I debug invalid import violations in JavaScript?

You debug invalid import violations in JavaScript by running boundaries explain, which produces human-readable diagnostics detailing why a relationship is invalid so you can resolve it without weakening policy.

What is the best way to prevent architecture drift in JavaScript projects?

The best way to prevent architecture drift in JavaScript projects is to apply deterministic rule generation and evidence-based relationship diagnostics to validate package and source-layer boundaries continuously.