Skill
A Claude Code recipe hosted on Drop. Stored as a Droplet with `appType: SKILL` + a `SKILL.md` markdown body.
A Skill is a Claude Code recipe (Anthropic Skills) hosted on Drop so any teammate can install it with one command. Skills are Droplets with appType: SKILL — they share the same versioning, access control, and asset story as Droplets, but are detected on deploy from a SKILL.md file with frontmatter (name, description) and rendered with a markdown preview instead of an iframe. Skills default to internalAccess: EVERYONE so they're discoverable across Hi Marley. Admins can feature skills to surface them on /skills.
The Skill object
Every Skill carries these attributes.
Attributes
drop skills install {slug} and /skills/{slug}. Globally unique across all Droplets and Skills.name: field in SKILL.md frontmatter at deploy time; can be overridden via --name on drop skills create.description: field in SKILL.md frontmatter.SKILL for this resource. Determines that /view/{slug} renders a markdown preview and that the skill appears on /skills. Set automatically when a .md file with SKILL.md frontmatter is deployed.MARKDOWN for skills. The raw markdown is what Claude Code installs; the preview at /view/{slug} is server-rendered HTML.PRIVATE/SPACE/SPECIFIC removes the skill from the /api/skills listing for non-permitted callers but keeps it installable via direct slug for those who can see it./skills showcase page. Toggled via Feature / unfeature. The system drop skill cannot be unfeatured.drop skills install pulls the current version by default; drop skills install <slug> --version N pins to a specific version.null; set via Link example on the parent skill.tag:claude).More attributes+ Show 6− Hide
slug in API paths.currentVersion if a draft is in flight.SKILL.md in bytes.{
"id": "clxskill1...",
"slug": "pres",
"name": "Presentations",
"description": "Create Hi Marley branded presentations as 16:9 droplets",
"appType": "SKILL",
"sourceFormat": "MARKDOWN",
"internalAccess": "EVERYONE",
"currentVersion": 5,
"publishedVersion": 5,
"fileSize": 10212,
"featured": true,
"exampleOfSkill": null,
"tags": [
"claude",
"presentations"
],
"ownerId": "usr_alex",
"createdAt": "2026-04-14T12:00:00.000Z",
"updatedAt": "2026-05-28T09:00:00.000Z"
}Methods
Endpoints to operate on a Skill. The example switches between curl, drop CLI, and MCP via the dropdown — your choice persists across the page.
Create a skill
Deploy a new skill from a .md (or .html) file. The CLI auto-detects the SKILL.md frontmatter (name, description) and sets appType: SKILL. Reuses the standard deploy flow — presigned upload + confirm. Subsequent re-deploys with drop skill create (or drop deploy) of the same slug bump currentVersion. Pass --space <slug> to publish the skill straight into a Space — mirroring drop create --space, it scopes the skill to that Space's members (internalAccess: SPACE); omit it and the skill defaults to EVERYONE.
drop skill create SKILL.md \
--slug pres \
--name "Presentations" \
--description "Create Hi Marley branded presentations" \
--space growth-academy \
--notes "v5 — letterboxing support"{
"app": {
"id": "clxskill1...",
"slug": "pres",
"name": "Presentations",
"description": "Create Hi Marley branded presentations",
"appType": "SKILL",
"sourceFormat": "MARKDOWN",
"internalAccess": "EVERYONE",
"status": "ACTIVE",
"createdAt": "2026-04-14T12:00:00.000Z"
},
"uploadUrl": "https://drop-apps.s3.amazonaws.com/pres/v1/index.html?X-Amz-...",
"isNew": true
}Install (Claude Code)
Download a skill's SKILL.md (plus any attached assets) into ~/.claude/skills/{slug}/ so Claude Code picks it up immediately. The CLI and MCP tool both wrap this — there's rarely a reason to call the HTTP endpoint directly.
drop skills install pres # latest version
drop skills install pres --version 4 # pin to v4
drop skills update pres # bump to latest
drop skills outdated # which skills have updates available?---
name: pres
description: Create Hi Marley branded presentations
---
# Presentations
Step-by-step recipe for Claude Code to produce a 16:9 letterboxed deck...Get a skill
Return the full Skill object by slug. Skills use the same /api/apps/{slug} endpoint as Droplets — appType: SKILL is just a discriminator. For the showcase-page-shaped subset (latest version, fileSize, hasAssets), use List skills above.
drop skills info pres
drop skills info pres --json{
"app": {
"id": "clxskill1...",
"slug": "pres",
"name": "Presentations",
"description": "Create Hi Marley branded presentations as 16:9 droplets",
"appType": "SKILL",
"sourceFormat": "MARKDOWN",
"internalAccess": "EVERYONE",
"currentVersion": 5,
"publishedVersion": 5,
"fileSize": 10212,
"featured": true,
"tags": [
"claude",
"presentations"
],
"createdAt": "2026-04-14T12:00:00.000Z",
"updatedAt": "2026-05-28T09:00:00.000Z"
}
}List skills
Return every skill the caller can see, split into three tiers: mySkills (owned by the caller), featured (admin-curated and discoverable), and shared (skills shared with the caller — EVERYONE-access skills plus SPACE-scoped skills in Spaces the caller belongs to). Each row includes currentVersion, fileSize, and a hasAssets flag. Used by the /skills showcase, the CLI (drop skills), and drop_skills_list.
drop skills list{
"mySkills": [
{
"slug": "pres",
"name": "Presentations",
"description": "Create Hi Marley branded presentations",
"currentVersion": 5,
"updatedAt": "2026-04-14T12:00:00.000Z",
"fileSize": 10212,
"hasAssets": false,
"featured": true,
"internalAccess": "EVERYONE"
}
],
"featured": [],
"shared": []
}Feature / unfeature
Toggle whether a skill appears on the /skills showcase page. Library Admin only. Returns 400 if called on a non-SKILL app, 400 if attempting to unfeature the system drop skill, 403 if the caller is not a Library Admin, 404 if the slug does not exist.
Parameters
drop skills admin feature pres --featured{
"slug": "pres",
"featured": true
}Link an example
Link an existing Droplet as a worked example of what the skill produces. The linked Droplet shows up on the skill's /view/{slug} page and in skill cards. Sets the example Droplet's exampleOfSkill to this skill's slug. Library Admin only. Returns 404 if the skill or example Droplet does not exist.
Parameters
drop skills admin examples add pres --example-slug q3-board-deck{
"linked": true,
"exampleSlug": "q3-board-deck",
"skillSlug": "pres"
}Unlink an example
Remove a Droplet as an example of this skill. The Droplet itself is preserved; only the exampleOfSkill pointer is cleared. Library Admin only. Idempotent — calling on a Droplet that isn't a current example still returns 200.
Parameters
drop skills admin examples remove pres --example-slug q3-board-deck{
"unlinked": true,
"exampleSlug": "q3-board-deck",
"skillSlug": "pres"
}