Free for 30 days on Scale.Start free
Build9 steps2-5 days

Build and ship a Claude Skill

A Claude Skill that loads automatically on the right queries, runs sandboxed scripts when needed, and is packaged + versioned so your team can install it in one command.

A Claude Skill that loads automatically on the right queries

A Claude Skill that loads automatically on the right queries, runs sandboxed scripts when needed, and is packaged + versioned so your team can install it in one command.

Spin up an agent for the heavy lifting

Your drafting agent (yours) writes the SKILL.md trigger description and resource summaries from your spec.

9 steps, 14 official links, 4 agent prompts

Every external doc the agent needs to cite is pre-loaded into the workspace's Pointers table. No hunting for the right URL mid-draft.

What's inside

Pre-loaded so day one is execution.

6Surfaces
9Steps
4Agent prompts
14Official links
5Tools mapped
Surfaces
  • tableSteps
  • tablePointers
  • docBrief
  • tableEval log
  • docIteration retro
  • docStatus
How the loop works

Your agent works. Dock shows you what happened.

Open this template and you get a workspace seeded with an agent prompt. Connect your agent — Claude via our MCP, Cursor, your own setup — and it reads, drafts, and posts updates as it goes. You watch Dock for the latest.

  1. 01

    Connect your agent

    Claim an agent invite at trydock.ai/agent-invites — your agent gets an API key scoped to this workspace. Paste the key into Claude Desktop, Cursor, or any MCP client.

  2. 02

    Your agent reads the workspace

    The agent prompt at the top of the workspace tells your agent its role, the cadence to follow, and the surfaces to update. No extra setup — open Dock and your agent already knows what to do.

  3. 03

    Watch Dock for the latest

    Your agent posts to the Status surface after every meaningful action — newest at top. Wire the workspace's webhooks to Slack or email to get pinged in real time.

Wire it up · Claude Desktop

Add Dock as an MCP server in 30 seconds.

{
  "mcpServers": {
    "dock": {
      "command": "npx",
      "args": ["-y", "@trydock/mcp"],
      "env": {
        "DOCK_API_KEY": "<paste from /agent-invites>"
      }
    }
  }
}

Drop into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or the equivalent on Windows / Linux. Restart Claude Desktop. Ask Claude:“Read trydock.ai/<org>/build-a-claude-skill and follow the agent prompt.”

FAQ

Common questions on this template.

What's the difference between a Claude Skill and a tool / function call?
Tools (function calls) are runtime callables the model invokes mid-conversation. Skills are static folders the model loads on demand based on the trigger description. A skill can include tools/scripts inside it, but the skill itself is the package: SKILL.md + resources + scripts. Think 'tool' = one function, 'skill' = a domain-expert mode the model enters.
Do I need the API to ship a skill, or can I use claude.ai?
claude.ai (Pro or Team plan) supports skills directly: upload a zip from Settings -> Skills. Claude Code (the local terminal client) auto-loads skills from ~/.claude/skills/. The API supports skills as part of agent loops if you build the loader yourself. For most ship-a-skill cases, claude.ai or Claude Code is enough.
Why doesn't my skill load when I expect it to?
9 times out of 10, the trigger description is too narrow or too vague. Run the eval pass: send 20 queries that should trigger the skill, count how many actually do. If hit rate is below 90%, expand the description with the phrasing your users actually use. The trigger description is the single most-tuned part of a skill.
Can my skill call my internal API?
Yes, via a script. Scripts run in a sandbox with optional network access (you have to explicitly grant it). For an internal API, your script needs an auth token, which you'd inject via env vars on the host that runs Claude Code. claude.ai sandboxes don't have access to your internal network, only public APIs.
How do I version a skill?
Add `version: <semver>` to the SKILL.md front-matter. Bump on every release, tag the git repo with the same version. Loaders use the version to decide whether to upgrade an installed skill. Without a version, the loader treats every install as 0.0.0 and upgrades silently fail.
Can my AI agent help build the skill?
That's the point. Connect your own agent (Claude in Cursor, Claude Code, Codex, anything with MCP) to the workspace, and this template ships the prompts for the slow parts: drafting SKILL.md from a 1-line spec, generating scripts from your existing tooling, running the eval pass against the trigger description, and analyzing eval results to suggest description tweaks. The Eval log surface is the canonical history of every trigger version, and Status keeps your agent context-aware from session to session.
What's the Iteration retro for?
When v1 of your skill ships, you'll know things you didn't when you started: which trigger phrasings actually worked, which resources the model never used, which scripts kept failing in the sandbox. Capture those in the Iteration retro doc. When you fork the workspace for v2, the retro seeds your agent's first Status entry, so v2 starts with context not blank state. Skills get better across versions, not in a single pass.

Open it. Hand it to your agent. Ship.

One click mints a fresh workspace in your org with the template body seeded. Your agents, your team, your edits from there.

About this template

Curated by the Dock team at . Every template is a real shared workspace we run with our own agents before publishing.

Reviewed regularly by the Dock team. Each playbook step links to the upstream tool's official docs so we can re-verify the rules as platforms change.