Skip to main content
← Back to list
01Issue
BugShippedSwamp CLIPublic
Assigneesstack72

Relationships

#1754 repo init/upgrade --tool kiro references .kiro/skills/ but installs skills to ~/.kiro/skills/

Opened by esteban · 8/20/2026· Shipped 8/21/2026

Summary

swamp repo init --tool kiro (and swamp repo upgrade --tool kiro) reports skillsCopied: ["swamp", "swamp-getting-started"], but installs those skills into the global $HOME/.kiro/skills/. It never creates the project-local .kiro/skills/ directory.

Both files it generates in the same run then point at the project-local path that does not exist:

  • .kiro/steering/swamp-rules.md references .kiro/skills/... 8 times, including the mandatory session-start instruction to read .kiro/skills/swamp-getting-started/SKILL.md.
  • .kiro/agents/swamp.json declares the resource glob skill://.kiro/skills/**/SKILL.md, which matches zero files.

So a freshly initialized Kiro repo instructs the agent to read a path that cannot resolve, and the default agent's own skill glob is empty.

Steps to reproduce

tmpdir=$(mktemp -d)
swamp repo init -t kiro --json "$tmpdir"
# reports: "skillsCopied": ["swamp", "swamp-getting-started"]

ls "$tmpdir/.kiro/skills/"
# ls: cannot access ...: No such file or directory

grep -n "swamp-getting-started" "$tmpdir/.kiro/steering/swamp-rules.md"
# 29:- `.kiro/skills/swamp-getting-started/SKILL.md` - Interactive onboarding...
# 35:immediately read `.kiro/skills/swamp-getting-started/SKILL.md` and follow its

ls "$tmpdir/.kiro/skills/"*/SKILL.md
# no matches  <-- the agent's skill:// glob resolves to nothing

ls -d "$HOME/.kiro/skills/"*/
# .../.kiro/skills/swamp/  .../.kiro/skills/swamp-getting-started/

.kiro/ after init contains only agents/, hooks/, settings/, steering/ — no skills/.

Expected behavior

Either:

  1. init/upgrade creates .kiro/skills/<name>/SKILL.md for each entry in skillsCopied, matching what the generated steering and agent glob reference; or
  2. the generated steering and .kiro/agents/swamp.json reference skills the way the Claude scaffolding does — by name, resolved from the global skills directory — rather than by a project-relative path.

Option 2 looks more consistent: the Claude scaffolding already installs to $HOME/.claude/skills/ and its generated CLAUDE.md refers to skills by name (`swamp`, `swamp-getting-started`), so nothing dangles.

Actual behavior

skillsCopied is reported for a directory that is never created, and two generated config files reference it.

Impact

On a multi-tool repo (tools: [kiro, claude]) the Claude side is fine — its instructions refer to skills by name. Only the Kiro side dangles. The workaround is to copy the global skill directories into .kiro/skills/ by hand, after which repo upgrade does keep them in sync (it reports them under localSkillCopies) — which suggests the sync path exists and only the initial creation is missing.

#173 (swamp repo init --tool kiro does not create .kiro/settings/cli.json, closed) is the same class of bug: a scaffolding file reported as created but absent on disk.

Version

swamp 20260819.011806.0-sha.a9c7ee9a
02Bog Flow
OPENTRIAGEDIN PROGRESSSHIPPED+ 1 MOREASSIGNED+ 5 MOREREVIEW+ 4 MOREPR_MERGED+ 2 MORESESSION_SUMMARIZED

Shipped

8/21/2026, 1:17:51 PM

Click a lifecycle step above to view its details.

03Sludge Pulse
stack72 assigned stack728/21/2026, 9:59:11 AM
Editable. Press Enter to edit.

stack72 commented 8/21/2026, 1:17:59 PM

Thanks @esteban 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.