crewship skill
Skills are reusable instruction playbooks that get injected into an agent’s system prompt as a[SKILLS AVAILABLE] block and materialised on disk in
each CLI’s discovery convention (.claude/skills/, .opencode/skills/,
.factory/skills/, .agents/skills/, .cursor/rules/). The CLI is the
canonical authoring + iteration path; the web UI is a surface over the
same API.
Subcommands at a glance
The CLI authoring loop
The intended flow for a custom skill is:crewship skill init
Write a SKILL.md scaffold to disk so you can edit it locally and upload.
The scaffold writes the canonical body sections (
When to use, Steps,
Output format, Guardrails, optional Verification) and frontmatter
fields the parser accepts.
crewship skill list
Examples:
crewship skill get
Show metadata for one skill — name, slug, category, version, source, author, tool count, created-at. The markdown description body renders below the metadata block via glamour for human formats; JSON / YAML / quiet outputs include it raw inside the serialized struct.
GET /api/v1/skills/{id} after resolving <slug-or-id> to the skill’s id.
crewship skill export
Recover the SKILL.md body from the workspace and write it to disk or stdout.
--output, prints to stdout (pipe-friendly). With --output set
to a directory, writes <slug>.md inside it.
crewship skill import
Import a single SKILL.md (URL or file) or walk a whole git repo.
What runs on every import
- SSRF check — URL/host must be public; private IPs blocked (single + bulk).
- License gate — frontmatter
license:is matched against the SPDX allowlist below. - Prompt-injection scanner — body scanned for “ignore previous instructions”, role hijack, large base64 blobs, etc. Status stored in
scan_status(CLEAN/FLAGGED). - Size cap — single fetch ≤ 512 KB; bulk per-file same; bulk total ≤ 500 SKILL.md files.
- BUNDLED protection — re-importing a slug already owned by a
BUNDLEDskill is refused.
SPDX allowlist
MIT, Apache-2.0, BSD-2-Clause, BSD-3-Clause, ISC, CC0-1.0,
MPL-2.0, Unlicense, 0BSD. Pass --unsafe-license to bypass for one
batch (audited via the license column).
crewship skill create
LLM-authored SKILL.md via Anthropic Messages.
Requires an active Anthropic credential of type
API_KEY in the
workspace (Settings → Credentials). An OAuth token from claude /login
is not sufficient (it’s a Bearer for claude.ai, not the Messages API).
Users without an API key should reach for skill init instead.crewship skill delete
Remove a skill from the workspace registry. Cascades to agent_skills.
crewship skill assign
crewship skill unassign
Same target shapes as assign:
unassign, the next time the agent runs, the orchestrator prunes
the skill folder from the agent’s container (.claude/skills/<slug>/,
.cursor/rules/<slug>.mdc, etc.) so a CLI auto-discovery walker can no
longer pick it up.
crewship skill proposed
Operator-side HITL surface for the memory→Skills bridge. When the consolidator sees a learned rule with sustained recall (default ≥ 10 recall events, composite score ≥ 0.85) it stages an Anthropic-format SKILL.md under .memory/{crew-slug}/topics/.proposed/skill-<slug>.md. These three verbs let an operator inspect and decide.
Each
proposed verb requires OWNER, ADMIN, or MANAGER role.crewship skill proposed list
Output columns: FILE, NAME, CATEGORY, DESCRIPTION (truncated to 60 chars), QUALITY (
ok when the server didn’t flag it).
Backed by GET /api/v1/skills/proposed?crew_id=<id>.
crewship skill proposed approve
Run the staged file through the canonical skill importer — same path as URL-based imports, so the SPDX license check and prompt-injection scan apply. On success the staging file is deleted and an EntryMemorySkillApproved journal entry fires.
Backed by
POST /api/v1/skills/proposed/approve. Output: approved <file> -> skill <id> (<slug>, created|updated).
crewship skill proposed reject
Discard the staging file without importing. Idempotent — rejecting an already-deleted file returns success, and an EntryMemorySkillRejected journal entry fires either way.
Backed by
POST /api/v1/skills/proposed/reject.
Per-CLI filesystem materialisation
When a skill is assigned, the orchestrator writes its SKILL.md into the discovery convention each adapter knows. This way the same skill works for whatever CLI the agent is configured with:
The system-prompt block is the authoritative surface — filesystem layout
is the bonus discovery path for adapters that walk it natively.