Creator guide · 2 of 3
Write a VibeFuse Skill — from blank SKILL.md to marketplace listing
A skill is a folder with a SKILL.md: a short frontmatter block plus markdown instructions an agent follows when the task matches. VibeFuse loads every skill in C:\vibefuse\skills into the Skills rail, exposes it as a /slash command, and hands it to Vibe Agent and any connected CLI agent (Claude Code, Codex, Cursor, Gemini, Qwen). This guide takes one skill from idea to a published, optionally paid, listing.
What a skill is (and is not)
Skills are instructions, not code. When a user invokes /release-notes-writer, clicks it in the rail, or simply asks for something that matches the description, the agent loads the full SKILL.md into context and follows it — using whatever tools it already has (terminal, browser, MCP servers, file reads). The same format is used by Claude Code, Codex, and Cursor, so a skill you write for VibeFuse also works in those agents.
- Format
- Folder with
SKILL.md(+ optional references) - Where it lives
C:\vibefuse\skills\<slug>\- Triggered by
- Rail click ·
/slug· description match - Limits
- 200 KB markdown per skill
Good skill ideas
- Repeatable workflows: release notes, PR review checklist, commit message style
- Project conventions: “how we write React components”, API error format
- Tool recipes: “deploy to Hostinger over FTP”, “render a HyperFrames video”
- Domain packs: Godot, Blender, Unity docs distilled into steps
Not a skill
- A UI you want on the canvas → build a widget
- Colors and shell chrome → build a styling pack
- A new tool the agent can call → that is an MCP server (Settings → Tools)
- A one-off prompt you will never reuse — just type it
Settings → Skills: local and marketplace skills with Hide / Remove
Prerequisites
- VibeFuse for Windows signed in with your
VF-key, and a working AI provider in Settings → Agent (any provider — OpenAI, Ollama, Gemini, Groq, OpenRouter …). - A text editor, or just the Vibe Agent widget (it can write the files for you).
- A task you have done by hand at least twice. Skills that encode real repetition are the ones people save.
- To sell (optional): seller profile + Stripe Connect.
Package anatomy
One required file. The folder name is the slug users type after /.
Keep SKILL.md short and put depth in references/. The agent reads the main file every time the skill fires; it reads references only when your instructions tell it to (read_skill_file). Progressive disclosure keeps context small and answers fast.
---
name: canvas-layout-helper
description: Use when arranging VibeFuse canvas widgets into rows, columns, or a focused layout.
version: 1.0.0
author: fuseintelligence
kind: marketplace
---
# Canvas layout helper
Tile terminals on the left and browsers on the right.
Call layout_widget with arrange=row when the user says “clean up the canvas.”
Step 1 — Frontmatter
The block between the two --- lines is YAML-style key: value pairs. VibeFuse reads four keys; other agents ignore what they do not know.
---
name: release-notes-writer
description: Use when the user asks for release notes, a changelog entry, or a "what's new" summary from recent commits or a diff.
version: 1.0.0
category: workflow
---
| Key | Required | Guidance |
|---|---|---|
name | Yes | Kebab-case slug, same as the folder name. Becomes the /slash command and the URL /marketplace/skill/<name>. Max 128 chars. |
description | Yes | The single most important line. Agents decide whether to use the skill from this sentence, so start with “Use when …” and list the trigger phrases. Max 500 chars, one line. |
version | No | Semver. Default 1.0.0. Bump on every republish. |
category | No | workflow, docs, code, or custom (default). Used for catalog filtering. |
Step 2 — Writing the body
The body is plain markdown. A structure that works for almost every skill:
-
01
Title + one-line purpose
An
# H1and a sentence restating what the skill produces. This is what a human sees in the rail details overlay. -
02
## When to use
Bullet the trigger situations and phrases. Include a “do not use for …” line if the skill is easily confused with another.
-
03
## Inputs
What the agent needs and how to get it inside VibeFuse: which tool to call (
read_terminal,get_browser_html,read_skill_file, an MCP tool), and what to ask the user if something is missing. -
04
## Steps
A numbered procedure. Imperative voice, one action per step, decisions written as “if X then Y”. This is the part that makes results consistent.
-
05
## Output format
Show the exact shape you want back — a fenced example beats a paragraph of description.
-
06
## Guardrails
What the agent must never do (invent data, run destructive commands, exceed a length). Short, absolute sentences.
- Aim for 80–300 lines. If it is longer, move detail into
references/and point to it. - Name VibeFuse tools when relevant (
layout_widget,create_terminal,web_search,hyperframes_render) — the agent has them and will use them. - Prefer examples over adjectives. One good/bad pair teaches more than “be concise”.
- Avoid provider-specific syntax. The same file runs under Claude, Codex, Gemini, and Cursor.
Complete example — release-notes-writer
Copy this into C:\vibefuse\skills\release-notes-writer\SKILL.md. It follows the structure above and references one supporting file.
---
name: release-notes-writer
description: Use when the user asks for release notes, a changelog entry, or a "what's new" summary from recent commits or a diff. Produces grouped, user-facing notes.
version: 1.0.0
category: workflow
---
# Release notes writer
Turn raw commits, PR titles, or a diff into release notes a customer can read.
## When to use
- The user says "write release notes", "changelog", "what changed", or "what's new".
- A version bump is happening and the notes are missing.
## Inputs
1. Ask which range to cover if it is not obvious (tag, date, or "since last release").
2. Read the commits or diff from the workspace. In VibeFuse, use `read_terminal` after running
`git log --oneline <from>..<to>` in an open terminal, or read `CHANGELOG.md` with `read_skill_file`
if the project keeps one.
## Steps
1. Drop noise: merge commits, formatting-only changes, dependency bumps (mention those once, at the end).
2. Group what remains under **Added**, **Changed**, **Fixed**, **Removed**.
3. Rewrite each item for a user, not a developer: what they can now do, not which file moved.
4. Lead with the single most valuable change. Keep bullets to one line.
5. Add a **Breaking changes** section only if something requires user action, with the exact steps.
## Output format
```markdown
## v1.4.0 — 2026-09-11
### Added
- Quote Board widget remembers favorites between sessions.
### Fixed
- Focus Timer no longer drifts after the laptop sleeps.
### Dependencies
- Piper 1.3.
```
## Guardrails
- Never invent a change that is not in the source material.
- If the range is empty, say so and stop.
- Keep the whole document under 300 words unless the user asks for more.
See `references/style.md` for tone examples.
Two marketplace skills to read as reference: Canvas layout helper (tool-centric, tiny) and /Loop (behavioral, runs until a goal is met).
Step 3 — Supporting files
Anything under references/, scripts/, or assets/ ships with the skill. The agent reads them with read_skill_file when your instructions say so.
# Tone guide
Good: "Search now matches partial widget names."
Bad: "Refactored SearchIndex.ts to use fuzzy matcher."
Good: "Fixed a crash when closing a session with an unsaved note."
Bad: "Handle null ref in SessionManager.dispose()."
# scripts/collect-commits.ps1 — the skill can tell the agent to run this in a Terminal widget
param([string]$From = (git describe --tags --abbrev=0), [string]$To = "HEAD")
git log --no-merges --pretty=format:"%s" "$From..$To"
- Reference files are markdown/text. Keep each under a few hundred lines; the agent pays for every token it reads.
- Scripts are run by the user's agent in the user's terminal. Never include anything destructive or network-writing without saying so in the skill.
- Web publishing currently uploads
SKILL.md; supporting files travel with the local folder and with desktop publishing. If a reference is essential, inline its key points inSKILL.md.
Shortcut — let Vibe Agent write it
Open a Vibe Agent widget and describe the skill. It calls create_skill (name, description, body, files) and the Skills rail refreshes the moment it returns. Use update_skill to iterate.
Create a skill named release-notes-writer.
Description: Use when the user asks for release notes or a changelog from commits or a diff.
Body: group changes under Added / Changed / Fixed / Removed, rewrite for end users,
lead with the most valuable change, add Breaking changes only when action is required.
Also add references/style.md with three good/bad tone examples.
Vibe Agent · create_skill / update_skill
Skill details overlay shows the parsed frontmatter
| Agent tool | Use |
|---|---|
create_skill | Create or overwrite C:\vibefuse\skills\<name>. Required name, description; optional body, files map. |
update_skill | Patch description, body, or files without rewriting everything. |
read_skill / read_skill_file | Review what is on disk before changing it. |
execute_skill | Run the skill against the current task — your test loop. |
delete_skill | Remove the folder and the rail entry. |
Before you write a docs skill — check Skill Seekers
If your skill is “everything about React / Godot / Blender / Unity / Claude Code”, someone has probably already scraped those docs. Connect Settings → Local Servers → Skill Seekers and ask Vibe Agent “is there already a skill for …”. It runs skill-seekers-lookup and lists presets you can install instead of duplicating. If nothing matches, Skill Seekers can scrape a docs site and package it as a SKILL.md folder you then refine and publish.
Details: Skill Seekers in the VibeFuse docs.
Step 4 — Test in VibeFuse
-
01
Drop the folder in place
C:\vibefuse\skills\release-notes-writer\SKILL.md. Open Settings → Skills (or wait a moment) — it appears with a Local badge and shows up in the left-rail Skills section. -
02
Read it back
Click the skill in the rail to open the details overlay. If name/description look wrong, the frontmatter has a typo (missing colon, stray quotes, Windows BOM).
-
03
Fire it three ways
Type
/release-notes-writerin a Vibe Agent widget · click it in the rail · ask naturally (“write release notes for the last tag”). The third one tests yourdescription. -
04
Try it in a CLI agent too
Open a Claude or Codex widget in the same session and ask the same thing. Skills in
C:\vibefuse\skillsare standard Agent Skills, so they load there as well. -
05
Tighten
Where the output drifted, add a step or an example. Where the agent asked an unnecessary question, add the answer to Inputs. Repeat until three runs in a row are right.
/slash command picker lists every installed skill
Settings → Marketplace: local skill packages and their listing status
Step 5 — Publish
Two paths lead to the same listing. Both stamp your profile name as the author and give the skill an id like com.yourname.release-notes-writer.
A · From the desktop app
- Open Settings → Marketplace.
- Under local packages, find the skill card (Not on marketplace).
- Click List on marketplace. The folder uploads.
- Click Publish (or Publish all).
B · From the website
- Open Account → Marketplace Settings → New skill.
- Enter name, slug, short description.
- Paste the
SKILL.mdbody or upload the.mdfile. - Save draft to keep it private, Publish to go live.
On publish the server re-wraps your markdown with canonical frontmatter (name = slug, your description) and generates manifest.json. Buyers who save the skill get both files in C:\vibefuse\skills\<slug> on their next launch.
Step 6 — Polish the listing
| Field | Recommendation |
|---|---|
| Short description | Buyer-facing this time: the outcome (“Consistent, user-friendly release notes in one command”). |
| Card image / banner | Optional but doubles clicks. A dark frame with the skill name and one example output line works. |
| Screenshots | A Vibe Agent chat showing the skill firing and the output. Caption each. |
| SKILL.md preview | Shown on the detail page automatically — buyers read your instructions before saving, so write them cleanly. |
| Category | Pick the closest of workflow / docs / code / custom. |
Your page lives at /marketplace/skill/<slug> with owner, version, saves, the markdown preview, and Save to VibeFuse. It also rotates through the marketplace pulse under Trending skills as saves come in.
Step 7 — Free or paid
Free
Anyone signed in saves it; it syncs into their skills folder at launch. Free skills are how most creators earn followers and their first paid sale.
Paid ($0.50 – $500.00)
Requires Stripe Connect enabled. Hosted Stripe Checkout, 80% to you, 20% platform fee. Domain packs, multi-file workflows, and skills that save hours justify a price; a 20-line prompt usually does not.
See also: Sell AI skills · How to publish a VibeFuse skill.
Step 8 — Ship an update
- Edit
SKILL.md, bumpversion, then Update listing in Settings → Marketplace — or edit and Publish again in Account → Marketplace Settings. - The slug and id stay fixed; saves, views, and price carry over.
- Users receive the new file on their next library sync (app launch or closing the in-app marketplace).
- Unpublish hides the listing without deleting it; installed copies keep working.
Pre-publish checklist
- Frontmatter has
name(kebab-case = folder name) and a one-linedescriptionstarting with “Use when …” - Body has When to use · Inputs · Steps · Output format · Guardrails
- An example of the expected output is included
- Fired successfully three times in a row via
/slug, rail click, and natural language - Also tested in at least one CLI agent widget (Claude / Codex / Cursor)
- No secrets, no destructive commands without explicit warning, nothing provider-specific
- Under 200 KB; long material moved to
references/ - Category chosen; buyer-facing short description written; price decided
Troubleshooting
| Symptom | Fix |
|---|---|
| Skill not in the rail | Folder must be directly under C:\vibefuse\skills and contain SKILL.md (exact case). Check Settings → Navigation — it may be hidden, not missing. |
| Name/description show blank | Frontmatter must start on line 1 with --- and use key: value. Save as UTF-8 without BOM; use LF or CRLF, not mixed. |
| Agent never picks it automatically | Your description lacks the phrases users actually say. Add them. Test with the exact sentence a stranger would type. |
| Agent ignores half the steps | Body too long or too vague. Cut to one action per step, move background into references/. |
| “Add a short description so agents know when to use this skill” | Publishing requires a non-empty description in the form or the frontmatter. |
| “Skill markdown is too large (max 200 KB)” | Move reference material out of SKILL.md. |
| Slug came out different from my name | Slugs are lowercase kebab-case and must be unique; a suffix is added on collision. Set it explicitly in Account → Marketplace Settings. |
FAQ
Do skills work with my provider?
Yes. Skills are plain instructions injected into context, so they work with every provider in Settings → Agent and with the Claude, Codex, Gemini, Cursor, and Qwen CLI widgets.
Can a skill call MCP tools?
A skill can instruct the agent to call any tool the user has connected — GitHub, Linear, Discord, Google Workspace, HyperFrames, Skill Seekers, custom stdio servers. Name the tool and the arguments in your Steps.
Can I reuse a skill I wrote for Claude Code or Cursor?
Drop the folder into C:\vibefuse\skills as-is. The frontmatter and body format are the same Agent Skills convention.
Is my SKILL.md public if the skill is paid?
The detail page shows a preview so buyers know what they are getting. Keep proprietary depth in references/ and summarize it in the main file.
Can I bundle a skill with a widget?
Publish both and cross-link them in the descriptions. A focus-timer widget plus a “deep work” skill plus a matching styling pack sells better than any one alone. Formal bundles are on the roadmap.
Next guides
Related: Agent Skills in VibeFuse · Skill Seekers · Skill catalog