Mono Guard
Invoke as $mono-guard.
Use this skill to validate monorepo pack lane artifacts before parallel dispatch and to audit integrated lane changes after dispatch.
This pack-local mono-guard consumes .agents/lane-specs.json and .agents/monorepo.json. It preserves behavioral compatibility with the base $mono-guard contract while using the monorepo pack's JSON artifacts and scripts as the project-local enforcement surface.
Augmentation Injection Pattern
mono-guard is the pack's safety gate for the augmentation injection pattern. mono-exec injects it before package-scoped dispatch, and mono-ship relies on its post-integration boundary checks before delegating to $ship. The skill augments existing run/ship workflows with monorepo lane enforcement rather than replacing their task selection, validation, history, commit, push, or deploy responsibilities.
Modes
- Pre-flight (default): Validate
.agents/lane-specs.jsonbeforemono-execdispatches package-scoped lanes. - Post-integration (
--post-integration): Verify actual changed files from the integrated diff stay inside declared lane ownership and do not include unsafe shared files.
Inputs
.agents/lane-specs.json: generated lane plan with lifecycle, cross-cutting steps, lanes,owns,must_not_edit,depends_on, mode, and branch..agents/monorepo.json: workspace detection output frommono-detect, including packages and internal dependency graph.packs/monorepo/scripts/lane-spec-validate.sh: schema and boundary validator for lane specs.
If .agents/monorepo.json is missing or stale, run mono-detect first. If .agents/lane-specs.json is missing, stop and recommend generating lane specs through mono-exec.
Pre-Flight Workflow
- Resolve the lane-spec file:
- Use the path in
$ARGUMENTSwhen provided. - Otherwise use
.agents/lane-specs.json.
- Use the path in
- Run
packs/monorepo/scripts/lane-spec-validate.sh <lane-specs.json>.- This verifies required fields, lifecycle state, disjoint
owns, required rootmust_not_editentries, validdepends_onreferences, unique non-primary branches, and duplicate step protection. - On failure, report
FAILand do not dispatch.
- This verifies required fields, lifecycle state, disjoint
- Read
.agents/monorepo.json.- If missing, run or recommend
mono-detect. - Use its
packagesanddependency_graphto evaluate package-aware safety.
- If missing, run or recommend
- Verify every lane's
ownspaths map to declared workspace package paths or clearly root-only serial work. - Verify every lane's
must_not_editincludes lockfiles and shared root config files:pnpm-lock.yamlpackage.jsonpnpm-workspace.yamlturbo.json
- Verify dependency ordering:
- If package X depends on package Y and both packages are owned by different lanes, the lane for X must depend on the lane for Y directly or transitively.
- Use
.agents/monorepo.json.dependency_graphfor dependency edges.
- Verify lane dependency graph validity:
- All
depends_onreferences resolve to known cross-cutting step IDs or lane step IDs. - No lane dependency cycle exists.
- All
- Verify branch isolation:
- Every write lane has a unique non-primary GitHub branch.
- No lane branch is
mainormaster. - If PR review is required by the execution profile but branch/PR evidence is missing after dispatch, report
FAIL.
- Scan lane descriptions, scopes, and modes when present for install/add intent.
- Fail non-serial package lanes that instruct
pnpm install,pnpm add,npm install,yarn add, or equivalent lockfile-modifying commands. - Warn on natural-language dependency changes such as "add dependency" or "install package".
- Fail non-serial package lanes that instruct
Post-Integration Workflow
- Read
.agents/lane-specs.jsonand.agents/monorepo.json. - Inspect the integrated diff with
git diff --name-onlyunless the user supplied a different reviewed diff range. - For each changed file:
- Flag any lockfile modification from a parallel lane as
FAIL. - Flag root config changes as
WARNunless they are declared in a serial cross-cutting step. - Verify the path is inside at least one declared lane
ownspath or an allowed serial cross-cutting/root scope. - Flag files outside declared ownership as boundary violations.
- Flag any lockfile modification from a parallel lane as
- Verify consolidation/PR review evidence when lane specs record branch-backed dispatch:
- Every integrated lane must have branch, commit SHA, and PR URL evidence recorded in
tasks/lane-specs.mdor the dispatch report. - Missing PR review evidence is
FAILbecause package lanes must not bypass consolidation review.
- Every integrated lane must have branch, commit SHA, and PR URL evidence recorded in
- Report violations without reverting, fixing, or editing task files.
Output
### Mono Guard Report
**Mode:** pre-flight | post-integration
**Lane spec:** .agents/lane-specs.json
**Monorepo artifact:** .agents/monorepo.json
**Verdict:** PASS | WARN | FAIL
#### Results
| Check | Verdict | Details |
|---|---|---|
| Lane-spec schema | PASS | lane-spec-validate.sh passed |
| Owns disjointness | PASS | all lane owns paths are disjoint |
| Shared file exclusions | PASS | lockfile and root config paths are in must_not_edit |
| Branch isolation | PASS | each write lane has a unique non-primary GitHub branch |
| Dependency ordering | PASS | package dependency lanes are ordered |
| Integrated diff boundaries | WARN | one root config changed in serial integration |
#### Failures
- List blocking issues with lane IDs, step IDs, paths, and specific fixes.
#### Warnings
- List advisory issues with recommended follow-up.
Verdicts
- PASS: Safe to dispatch or ship.
- WARN: Advisory issues found; review before proceeding.
- FAIL: Dispatch or shipping is blocked until the lane specs or integrated changes are corrected.
Constraints
- Do not edit task files.
- Do not run package manager install/add commands.
- Do not modify
.agents/lane-specs.jsonor.agents/monorepo.jsonexcept by invoking the designated generation/detection skills when appropriate. - Do not revert or repair post-integration changes; report violations only.
- Keep behavior compatible with the base
$mono-guardsafety contract.
Next-Step Routing
- PASS pre-flight:
$mono-execto dispatch the validated lanes. - WARN pre-flight: Review warnings, then
$mono-execif accepted. - FAIL pre-flight: Fix or regenerate
.agents/lane-specs.json, then rerun$mono-guard. - PASS post-integration:
$mono-shipfor package-scoped validation and shipping. - WARN/FAIL post-integration: Resolve boundary issues, then rerun
$mono-guard --post-integration.
Default Shipping Contract
Follow the shared shipping contract convention in CLAUDE.md.