rome-os/rome/import-skill
Claude Code and agent skill by rome-os/rome
- community
Checking that the SKILL.md file is still in the repository.
Import a Rome skill from a URL, a pasted SKILL.md, or a plain-language description — validate it against Rome's frontmatter parser, preview the final file, and install it into the user-skills carrier app after the guardian confirms.
Install
npx vskill@latest install rome-os/rome/import-skillSKILL.md
Import a skill
Turn what the guardian brings you into something installed — a URL to an existing skill, a pasted SKILL.md, or a description of one they wish existed. Brainstorm with them: propose, listen, revise. Don't install anything without getting a clear go-ahead.
Most of what you're handed is a plain skill for the user-skills carrier. The involved ones — a setup step, real interaction, a multi-step process — are better off as their own app. Sorting which is which, with the guardian, is part of the job: see "Skill, or a dedicated app?" before you install.
Classify the input
- URL → see "Resolving a URL".
- Pasted SKILL.md (frontmatter + body, or close to it) → validate, preview.
- Description (prose, a wish, a workflow explained) → see "Generating".
- Empty or ambiguous → ask one short question. Don't guess.
Resolving a URL
github.com/<owner>/<repo>/blob/<ref>/<path>→ fetch the raw form
https://raw.githubusercontent.com/<owner>/<repo>/<ref>/<path>.
github.com/<owner>/<repo>/tree/<ref>/<dir>→ list it via
https://api.github.com/repos/<owner>/<repo>/contents/<dir>?ref=<ref> and download the SKILL.md plus its auxiliary files.
- Bare repo → look for
SKILL.mdat the root, then underskills/. - Anything else → fetch it; if it's skill-shaped, proceed; if it's prose
describing a workflow, offer to generate a skill from it.
If the source holds more than one skill (several SKILL.md under skills/, a repo of them, a page linking many), don't pick for the guardian: list each one you found — path, name, and description — and ask which to import. They may choose one, some, or all; import each as its own pass through the rest of this flow (validate → preview → install), so every skill gets its own confirmation.
On a network error or 404, say so and ask for a corrected link.
Generating from a description
The guardian is the domain expert; you're the author. Ask at most 2–3 focused questions, only where the description is genuinely open:
- Trigger — when should an agent reach for this? (Becomes the description
line, which is also the search index.)
- Procedure — the concrete steps, commands, decision points. "Check the
logs" isn't an instruction; "run X and look for Y" is.
- Tools — which built-ins the steps need.
- Boundaries — what it should refuse or hand off.
Draft the SKILL.md yourself and preview it. The body is second-person, imperative, concrete — instructions for a future agent, not human docs.
Skill, or a dedicated app? Decide before you install
A skill is pure instructions an agent reads. Some requests are apps wearing a SKILL.md, and the carrier gives them a worse version of what they asked for. Once you understand the request, judge it. App-shaped signals — any one means it wants to be its own app:
- an init / setup step before it's usable (credentials, first-run config);
- it needs to interact — ask and react, not just run top-to-bottom;
- a real multi-step process, its own data / operations / UI, or
background / scheduled execution.
A shell command or two inside otherwise-pure instructions is still a skill. When the signals are real, put the choice to the guardian — don't pick for them:
- Import as a skill → the user-skills carrier (the flow below).
- Build a dedicated app → a brand-new app of its own, friendly and
interactive.
Only continue into validate/preview/install when they choose the skill.
Building a dedicated app
Read the coding:app_creation skill with read_skill and follow it to scaffold, build, and install a brand-new app — its OWN app id, never user-skills or the carrier. Carry what you've learned from the guardian as the brief: what the thing does, its init/setup step, the interactions it needs.
Design a friendly flow: an init step that gets the guardian set up, interaction that guides rather than dumps questions, and — where it fits — a conversational agent they talk to, with the app's entry dropping straight into that chat. (A pure inputs → steps → result automation isn't an app — coding:app_creation will redirect it to coding:workflow_creation, as it should.)
Validate against Rome's parser
Rome parses frontmatter with regexes, not YAML. A violating skill installs but is silently dropped from the catalog. Enforce on every skill:
- Starts with a
---line and has a closing---. name:is a single lowercase kebab-case line matching the install folder.description:is a single line — collapse folded (>) or multi-line ones.tools:is only read inline (tools: [A, B, C]) — convert dash-lists; drop
one you can't convert and say so.
- Other keys are ignored, harmless — keep them.
Auto-fix 2–4 and note each fix in the preview. Then check list_skills for a name collision (propose an alternative rather than shadow), and make sure the description carries the trigger words someone would search — search_skills matches name/description/tools, never the body.
Preview, then confirm
Show the guardian the complete final SKILL.md in a fenced block (and any auxiliary files), a note of every fix you made, and the install path user-skills/skills/<name>/. Ask, and wait. Anything short of a clear yes is feedback — revise and preview again.
Install into the carrier
Skills install into one carrier app, user-skills, at <custom app authoring directory from your Runtime Context>/user-skills (~/.rome/<profile>/projects/apps/user-skills).
<!-- Keep this layout in sync with rome_apps/dream/src/lib/user-skills-carrier.ts, which scaffolds the same carrier for Dream's skill review. -->
If it doesn't exist, create it — a minimal hand-rolled layout, no build toolchain, so the coding:app_creation scaffold doesn't apply. It must ship a logo and a minimal web UI, or it shows up in the Apps list as a broken-looking entry. Write the files below exactly; the manifest is schema-validated (assetVersion 12 hex chars, entry exports mount). Backfill these into an existing carrier that's missing them.
Plus package.json: { "name": "user-skills", "private": true, "type": "module" } and an empty skills/ directory. If you later edit web/index.js, bump assetVersion to a new 12-hex string so the browser drops the cached bundle.
Then, for the confirmed skill:
- Write
skills/<name>/SKILL.mdplus any auxiliary files. - Add
skills/<name>to theskills:list in app.yaml. git add -A && git commit -m "Add skill <name>".- Install:
system:app_managementwith
{ "op": "install", "source": { "mode": "source", "path": "<carrier-abs-path>" } } — the daemon builds, packs, and installs in one step.
If a step fails, show the error, fix what you can, and say where things stand.
Verify
Call list_skills and confirm the new name is present. If it isn't, the catalog dropped it — almost always a frontmatter rule. Fix and re-install once; if it still doesn't appear, report what you tried. Once you've seen it listed, tell the guardian it's live: they can invoke it in any chat with /<name>, or find it in the Skills app.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingrome_apps/skills/src/skills/import-skill/SKILL.md
Popularity
- Repository stars
- 672
- Repository forks
- 57
- 7-day trend score
- 33
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/rome-os/rome/import-skill)