skillmaker adopt
skillmaker adopt [path]Imports pre-existing SKILL.md files — from a skills repo you didn’t build
in Skillmaker Studio — as Skill Bundles, in place. adopt runs on top
of a workspace; it does not create one (skillmaker init first). It
discovers every SKILL.md under path (default: the current directory),
and wraps each one as a bundle without moving any files: bundle.json and
the journal’s bundle.created event get written, but the skill’s directory
stays exactly where it was.
This is the strategic front door for the “adopt-first” thesis: most skill
authors already have a repo full of SKILL.md files before they ever hear
of Skillmaker Studio, and the studio should meet that repo where it is
rather than demanding a rewrite.
What it does
Section titled “What it does”- Discovers
SKILL.mdfiles underpathand, for each one not already adopted, writes abundle.jsonnext to it (identity only — see The Skill Bundle) and journalsbundle.created. - Layout-aware pathname mapping, applied by convention rather than
configuration: a skill under a
deprecated/directory is adopted archived (bundle.archivedfollowsbundle.created); a skill under anin-progress/directory is adopted at stageidea. - Computes an initial version from the bundle’s hashed
design/outputand journalsskill.version_recordedwith label"adopted", so every adopted skill starts with a real, hashed version — never “unversioned.” - Preserves nonstandard frontmatter fields it doesn’t recognize (version, triggers, allowed-tools, and other conventions your repo already uses) rather than stripping them.
- Detects (but does not import) manifest files (e.g.
plugin.json) and existing eval/test infrastructure — these are reported, not touched. - Idempotent: re-running skips skills already adopted (
skipped, reasonalready-adopted); nothing is double-imported or overwritten.
Options
Section titled “Options”| Flag | Meaning |
|---|---|
path | Directory to scan for SKILL.md files. Defaults to the current directory. |
--json | Emit a structured report instead of text |
Output
Section titled “Output”Real output adopting two skills, one archived from a deprecated/ path:
skillmaker: adopt -- found 2 SKILL.md file(s), adopted 2, skipped 0 (already adopted)adopted: + old-thing <- existing-skills/deprecated/old-thing [archived] warning: adopted from a "deprecated/" directory + frobnicate-widgets <- existing-skills/frobnicate-widgetsRe-running is a no-op:
skillmaker: adopt -- found 2 SKILL.md file(s), adopted 0, skipped 2 (already adopted)skipped (already adopted): - existing-skills/deprecated/old-thing - existing-skills/frobnicate-widgets--json on the re-run:
{"found":2,"adopted":[],"skipped":[{"relativePath":"existing-skills/deprecated/old-thing","reason":"already-adopted"},{"relativePath":"existing-skills/frobnicate-widgets","reason":"already-adopted"}],"warnings":[],"manifests":[],"evalInfra":[]}An adopted bundle looks like any other bundle afterward —
skillmaker status frobnicate-widgets reports stage idea, a real version
hash, and a skill.version_recorded event labeled "adopted" as its last
event.
Known limitation
Section titled “Known limitation”Publish’s layout-awareness for adopted bundles (respecting the original
repo’s directory conventions on the way out, not just on the way in) is
flagged as follow-up work — today the production-state guard on publish
(bundle must reach published) blocks it from being reachable regardless.
See also
Section titled “See also”Adopting an existing repo — a full walkthrough with real output against a scratch repo, plus real numbers from adopting two real-world skills repos.