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
swamp repo inita root repo.- Create a subdir extension that bundles a skill:
sub/manifest.yamlwithpaths: { 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
- 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)
Shipped
Click a lifecycle step above to view its details.