Skip to main content
← Back to list
01Issue
FeatureShippedSwamp CLI
Assigneesstack72

Relationships

#459 paths.base: manifest is not honored for skills: — bundled skills only resolve from repo root, blocking multi-extension repos

Opened by magistr · 5/27/2026· Shipped 5/28/2026

Description

When an extension manifest.yaml sets paths.base: manifest, the typed-key paths (models, reports, include) and additionalFiles correctly resolve relative to the manifest's own directory. However, skills: entries do not follow paths.base — they are resolved only from the repository root's .claude/skills/ (and ~/.claude/skills/).

This makes it impossible to keep a skill-bundling extension self-contained in its own subdirectory inside a single multi-extension ("monorepo") repository: swamp extension push / quality fail to find the skill even though it lives next to the manifest.

Steps to reproduce

  1. swamp repo init a root repo.
  2. Create a subdir extension that bundles a skill:
    • sub/manifest.yaml with paths: { base: manifest }, models: [extensions/models/x.ts], skills: [demo-skill]
    • skill at sub/.claude/skills/demo-skill/SKILL.md
    • model at sub/extensions/models/x.ts
  3. From the root repo run: swamp extension push sub/manifest.yaml --dry-run

Actual

The model resolves correctly (via paths.base: manifest, from sub/extensions/models/x.ts), but the skill lookup fails:

Error: "Skill directory not found: demo-skill (looked in <root>/.claude/skills and ~/.claude/skills)"

Expected

With paths.base: manifest, skills: entries should resolve relative to the manifest's own directory (sub/.claude/skills/<name>/), consistent with how models / reports / additionalFiles already resolve under that mode — so a skill-bundling extension can be fully self-contained in its subdirectory.

Impact / motivation

A multi-extension monorepo (one repo, one .swamp/, N extension subdirs) works today for model-only extensions via paths.base: manifest, and is attractive because it avoids a separate swamp repo init (and separate .swamp/ runtime dir) per extension. But skill-bundling extensions cannot be converted because their skills won't resolve per-subdir. Honoring paths.base for skills: (or adding a manifest-relative skill base) would let a single repo host many extensions — including skill-bundling ones — instead of one repo per extension.

Environment

  • swamp 20260526.194925.0-sha.80b42672
  • macOS (darwin)
02Bog Flow
OPENTRIAGEDIN PROGRESSSHIPPED+ 1 MOREASSIGNED+ 5 MOREREVIEW+ 3 MOREPR_MERGED+ 1 MORECONTRIBUTOR_NOTIFIED

Shipped

5/28/2026, 3:07:51 PM

Click a lifecycle step above to view its details.

03Sludge Pulse
stack72 assigned stack725/28/2026, 12:19:25 PM
Editable. Press Enter to edit.

stack72 commented 5/28/2026, 3:07:58 PM

Thanks @magistr for reporting this! The fix has been merged and a release is on its way. We appreciate your contribution to swamp.

Sign in to post a ripple.