Skip to content
LoopSkill

Documentation · Publishing

Publishing a skill.

LoopSkill is an open marketplace. Any developer can submit a skill for review. The canonical publish path is MCP-first — your agent calls recipes_publish_request from within a conversation. A CLI fallback is also available.

New in Phase C / recipes_2005

The recipes_publish_request MCP tool is live. It submits your SKILL.md directly from the agent conversation, runs the quality gate in-memory, opens a GitHub review issue, and returns a request_id and issue_url in one tool call. No dashboard, no upload form.

What gets published vs. what you keep

  • Published: your SKILL.md, optional references/ and templates/ directories, a skill.toml manifest.
  • Private: your env vars, your credentials, your agent config. None of those travel with the skill.
  • Revenue share: accepted skills earn a percentage of subscription revenue attributed to your skill's install and use events. See Creator program for current rates.

MCP-first path (recommended)

Step 1: Develop locally

Scaffold your skill directory using recipes_recipify or by hand:

SKILL.md          ← required: YAML frontmatter + instructions body
skill.toml        ← required: metadata (slug, version, tier, license)
references/       ← optional: reference docs, loaded on demand
templates/        ← optional: config snippets, scaffolds

The SKILL.md frontmatter must include at minimum: name, description, version (semver), tier (free | cook | operator), and license (SPDX).

Step 2: Call recipes_publish_request

From inside your agent conversation (e.g. Claude Code, Hermes):

// Tell your agent:
"Submit my skill at ./skills/my-skill/ to the LoopSkill marketplace"

// The agent calls:
recipes_publish_request({
  slug: "my-skill",
  content: "<SKILL.md contents>",
  version: "1.0.0",
  description: "What this skill does",
  tier: "cook",
  license: "MIT"
})

The tool runs synchronously and returns:

{
  "request_id": "uuid...",
  "slug": "my-skill",
  "status": "pending_review",
  "issue_url": "https://github.com/wisechef-ai/recipes-api/issues/NNN",
  "sha256": "abc123...",
  "warnings": []   // or [{severity: "low", message: "..."}]
}

If the quality gate finds a HIGH severity issue (e.g. curl | bash pattern, hardcoded $HOME path, credential leak), the tool returns {"error": "quality_gate_failed"} and no issue is opened — fix the finding and resubmit.

Step 3: GitHub review

The issue_url in the response links to a GitHub issue in the wisechef-ai/recipes-api repo. A WiseChef team member reviews:

  1. Does the skill do what it says?
  2. Is the install reproducible on a clean machine?
  3. Does telemetry surface the expected success/failure events?
  4. Is the quality gate fully green?

You can track the issue directly. The reviewer may leave comments asking for changes. Respond by updating your SKILL.md and calling recipes_publish_request again with the same slug — the system deduplicates and links the new submission to the existing issue.

Step 4: Signed and published

Once approved, a WiseChef team member closes the issue with the approved-publish label. An automation job:

  1. Builds the final tarball from the approved submission
  2. Signs with the WiseChef ed25519 publish key
  3. Uploads to the CDN
  4. Creates the skill row in the catalog database
  5. Sends you a confirmation email with the published URL

CLI fallback

If you prefer a terminal workflow, the recipes CLI (Phase F) supports the same flow:

recipes publish --slug my-skill --dir ./skills/my-skill/

This packs the directory into a tarball, runs the local quality gate, and posts to POST /api/publish/request. The response is the same as the MCP tool.

Quality gate

The quality gate runs on every submission and checks for:

  • HIGH (blocks submission): curl | bash pipelines, hardcoded $HOME or username paths, binary executables in the tarball, path traversal in filenames, credential patterns (AWS keys, GitHub tokens, etc.), internal WiseChef infra references.
  • MEDIUM (warns, allows submission): External links not on the allowlist, use of sudo, large scripts (>500 lines), missing CHANGELOG section.
  • LOW (informational): Missing screenshots, short description (<100 chars), no template files.

Tier semantics

Set the tier field in your submission:

  • free — available to all API key holders, no subscription required. Good for open-source skills you want maximum adoption on. MIT or Apache-2.0 license preferred.
  • cook — available to Pro subscribers ($20/mo). This is the sweet spot for polished, maintained skills. Most catalog skills are cook-tier.
  • operator — available to Pro+ subscribers ($100/mo). For enterprise skills: fleet-specific tooling, high-compute workflows, bespoke integrations.

The reviewer may suggest a different tier if the skill's complexity or maintenance burden warrants it. Final tier is set at publish time.

Rate limits

recipes_publish_request is rate-limited to 1 submission per 24h per (user, slug) pair. This prevents flooding the review queue. If you need to resubmit quickly after a rejection, contact the reviewer on the GitHub issue.

Creator earnings

Once your skill is published, you earn a share of the subscription revenue attributed to its install and use events. Payouts are calculated monthly. See the Creator program for current revenue share percentages and payout minimums.

Related

FAQ

Can I update a published skill?

Yes — increment the version in your SKILL.md frontmatter and call recipes_publish_request again with the updated content. Patch versions (e.g. 1.0.0 → 1.0.1) go through expedited review. Major versions (e.g. 1.x → 2.0.0) get a full review cycle.

What if the quality gate flags my skill?

HIGH severity findings block the submission — no issue is opened. Fix the finding and resubmit. MEDIUM and LOW findings are warnings: the issue is opened with the findings listed, and the reviewer may ask you to address them before approval.

How long does review take?

Standard review: we aim to respond within a few business days. Operator subscribers receive priority review. If your issue hasn't received a response, comment on it with a ping.