Agent skill

Platypus Tools

by willdady in willdady/platypus

Platypus tools and tool sets — writing a tool, contributing a tool set from a plugin, scoping tools to a workspace, sharing a tool across sets, chat icons, and custom tool UI.

MITAuto-check passed

Install Platypus Tools

skills CLI
$ npx skills add willdady/platypus --skill platypus-tools -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install willdady/platypus platypus-tools --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/willdady/platypus.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/platypus-tools .claude/skills/platypus-tools && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
platypus-tools
GitHub stars
117
Token cost
~1.7k tokens
SKILL.md length
852 words
Files
2
Skills in repo
7
Repo updated
First seen
Licence
MIT

At a glance

Platypus tools and tool sets — writing a tool, contributing a tool set from a plugin, scoping tools to a workspace, sharing a tool across sets, chat icons, and custom tool UI.

  • Works in 3 steps: Write the tool → Contribute the tool set → Give it a chat icon
  • SKILL.md covers 1. Write the tool, 2. Contribute the tool set, 3. Give it a chat icon and Scoping tools to a workspace, plus 4 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Platypus Tools is an agent skill from willdady/platypus. Platypus tools and tool sets — writing a tool, contributing a tool set from a plugin, scoping tools to a workspace, sharing a tool across sets, chat icons, and custom tool UI. Always load this skill when the user mentions tools or tool sets.

Its SKILL.md is about 1.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `CUSTOM-UI.md`).

The repository describes itself as: Self-hosted AI Agents for your whole team — on your infrastructure, your models, around the clock. The licence is MIT.

Example prompts

  • “/platypus-tools”

Workflow steps

3 steps, taken from the step headings in SKILL.md.

  1. Write the tool
  2. Contribute the tool set
  3. Give it a chat icon

What it can do on your machine

Read from SKILL.md and the folder at commit dc968fc. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • sdk.vercel.ai
    • zod.dev

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Platypus Tools loads about 1.7k tokens when it runs. Until then it costs about 64 tokens; SKILL.md has 852 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~64
When it runs · the whole SKILL.md, loaded when a task matches
~1.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from willdady/platypus at commit dc968fc, republished under its MIT licence (© willdady). 852 words, ~1,674 tokens.

Download SKILL.mdSave it as .claude/skills/platypus-tools/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
platypus-tools
description
Platypus tools and tool sets — writing a tool, contributing a tool set from a plugin, scoping tools to a workspace, sharing a tool across sets, chat icons, and custom tool UI. Always load this skill when the user mentions tools or tool sets.

Platypus Tools

Two things make a tool reachable by an Agent: the tool itself, and the contribution that grants it. A tool nobody contributes is dead code.

1. Write the tool

An AI SDK tool() with three parts — description (how the model decides to call it), inputSchema (a Zod object, every field .describe()d), and execute (sync or async, returning a structured object).

typescript
export const convertTemperature = tool({
  description:
    "Convert temperature between Fahrenheit, Celsius, and Kelvin. Specify the value and the units to convert from and to.",
  inputSchema: z.object({
    value: z.number().describe("The temperature value to convert"),
    from: z.enum(["fahrenheit", "celsius", "kelvin"]).describe("Convert from"),
    to: z.enum(["fahrenheit", "celsius", "kelvin"]).describe("Convert to"),
  }),
  execute: ({ value, from, to }) => ({ result, unit: to }),
});

Note the shape: enums over a tool per unit pair. Widen a tool's parameters before you multiply tools — every extra name is another choice the model can get wrong.

Return { error: "..." } from a caught failure rather than throwing; the model reads the result and can recover.

Tool implementations live in the backend's tools directory, one file per subject area, tests co-located beside them.

2. Contribute the tool set

Tool sets are plugin contributions. Do not reach for registerToolSet — it is core-internal, and its one remaining caller is the Sandbox set, which is a Sandbox-backend extension point rather than a native tool set.

Add yours to the contributes.toolSets array of a PlatypusPlugin. Core plugins live under the backend's plugins directory, split by cohesion: pure utilities in one, the domain tool sets in another.

typescript
export const plugin: PlatypusPlugin = {
  name: "@platypus/tools-basic",
  version: "0.1.0",
  apiVersion: PLUGIN_API_VERSION,
  contributes: {
    toolSets: [
      {
        id: "time",
        name: "Time",
        category: "Utilities",
        description: "Tools for getting current time and converting timezones",
        tools: { getCurrentTime, convertTimezone },
      },
    ],
  },
};
  • id — kebab-case, and a stable identifier: Agents persist granted ids, so renaming a shipped id silently strips the set from every Agent holding it. Core ids stay unprefixed.
  • category — groups the set in the Agent form. Take an existing category unless the set genuinely sits outside all of them.

Done when the set appears in the Agent form under its category and its tools run in a chat.

Adding a new plugin

A capability earns its own plugin when an Operator would plausibly want to deny it in isolation — that is why egress and infra are separate plugins while utilities share one. Cohesion, not subject matter, is the test.

A new plugin needs an entry in the built-in loader map, which is the core allowlist — membership there is what makes a plugin core. Then decide its gating: the always-on list for essentials no Operator would deny, otherwise it waits behind the plugins env var. A name in both is rejected fail-loud, since listing an always-on plugin as an enable switch is a misconfiguration.

3. Give it a chat icon

Unmapped tools fall back to a wrench. The icon resolver checks three maps in order, so pick the rung that fits:

  1. Per-tool overrides — checked first. For a set whose tools are visually distinct, or tools belonging to no set at all. Keep it sparse.
  2. Tool name → set id — every tool needs an entry here unless it has an override. A tool in several sets maps to whichever fits best; the icon is correct regardless of which set supplied it at runtime.
  3. Set id → Lucide icon — one per set, matching the workspace home page.

Done when every tool name your contribution exports resolves to something other than the wrench.

Show full SKILL.md (368 more words)Show less

Scoping tools to a workspace

Set tools to a factory instead of an object and it resolves per chat turn against a ToolSetContext — workspace, agent, org, user, and frontend URL:

typescript
tools: ({ workspaceId, agentId, orgId, frontendUrl }) =>
  createKanbanTools(workspaceId, agentId, orgId, frontendUrl),

Keep the factory in the tool's own file, returning Record<string, Tool>.

The context also carries registerCloser for anything needing teardown at end of turn. Call it unguarded — ctx.registerCloser(close). It is required from plugin API v2, and every core that accepts the current apiVersion supplies it.

Sharing one tool across sets

Extract it into a standalone exported factory returning a single Tool. The owning set calls that factory internally; other sets import and call it too.

Use the same key name in every set. Tools claim names into one map as each set resolves, so identical keys collapse to one entry — a deliberate dedup, not a collision. Differing keys give the Agent the same tool twice under two names.

When two different tools claim one name the later claim wins and the shadowed one is logged with both owners, so check the logs before assuming a tool is missing. Turn precedence runs session tools, then search, then sub-agent tools — each layer beating the one before it.

Custom chat UI

Tools render their input and output as JSON by default. For a bespoke card — interactive elements, images, structured results, or progress during execution — read CUSTOM-UI.md, which carries the renderer contract and the double-render trap.

When a tool doesn't appear

Tool resolution is strict at boot, forgiving at runtime: a duplicate set id throws on startup, but at turn time an unresolvable id, a factory that throws or outruns the resolve deadline, or an unreachable or unanswering MCP server each costs only its own tools, logging a warning. A chat turn is not where you discover a plugin is broken — so a silently toolless Agent is a log question, not a UI question.

Work down the chain: is the set in a plugin's contributes.toolSets; is a new plugin in the loader map and either always-on or named in the env var; does the Agent actually hold the set's id; does the backend log a resolution warning for this turn.

Resources

© willdady, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in .agents/skills/platypus-tools of willdady/platypus.

  • SKILL.md
  • CUSTOM-UI.md

Open the folder on GitHubat commit dc968fc

Compare with similar skills

Platypus Tools next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Platypus Tools compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Platypus Tools this skillwilldady/platypus117—~1.7kAutomated safety check: PassMIT
Contributesuperset-sh/superset15k—~624Automated safety check: PassCustom licence
Contributemindfold-ai/Trellis15k—~2.7kAutomated safety check: PassAGPL-3.0
Manage Settingsasgeirtj/system_prompts_leaks69k—~3.1kAutomated safety check: PassCC0-1.0
Contributingkortix-ai/suna20k1 repos~3kAutomated safety check: WarnCustom licence
Warp Settings Editorwarpdotdev/warp65k1 repos~675Automated safety check: PassAGPL-3.0

Similar skills

  • Contribute

    superset-sh/superset

    Set up a Superset open-source contribution, from forking and cloning superset-sh/superset through local dev setup and the repo's rules to a merge-ready PR.

    15k GitHub stars~624 tokensUpdated today
    DevelopmentAuto-check passed
  • Contribute

    mindfold-ai/Trellis

    Guide for contributing to Trellis documentation and marketplace.

    15k GitHub stars~2.7k tokensUpdated 9 days ago
    DevelopmentAuto-check passed
  • Manage Settings

    asgeirtj/system_prompts_leaks

    Any explicit Muse Code setting question or change (model, reasoning effort, /settings) requires a silent readskill call for bundled:manage-settings as FIRST ACTION—no assistant text or other tool…

    69k GitHub stars~3.1k tokensUpdated today
    Auto-check passed
  • Contributing

    kortix-ai/suna

    The pull request loop for this repo: branch → commit → verify in your own box (local tests + local stack) → PR into main → demo video recorded with agent-browser on the local stack → gh --attach →…

    20k GitHub starsUsed in 1 repo~3k tokens
    DevelopmentAuto-check: warnings
  • Warp Settings Editor

    warpdotdev/warp

    Finds and changes Warp application settings by searching a bundled JSON schema and editing the matching TOML settings file at the right nesting depth.

    65k GitHub starsUsed in 1 repo~675 tokens
    Productivity & AutomationAuto-check passed
  • OpenDesign Contribution Flow

    nexu-io/open-design

    Helps newcomers contribute to OpenDesign: ship a skill or design system, translate docs, fix docs or report a bug, ending in a pull request or issue.

    100k GitHub stars~3.5k tokensUpdated today
    DevelopmentAuto-check: notes

More from willdady/platypus

  • API Conventions

    willdady/platypus

    Response-body conventions for the Platypus backend API — the error key for failures, the message key for 2xx status messages, and when to throw a typed error instead of returning a response.

    117 GitHub stars~655 tokensUpdated yesterday
    Auto-check passed
  • Add API Endpoint

    willdady/platypus

    Guide for adding new API endpoints to the Platypus backend using Hono.js — routing, tenant scoping middleware, validation, and database access.

    117 GitHub stars~955 tokensUpdated yesterday
    Auto-check passed
  • Database Schema Changes

    willdady/platypus

    Guide for making database schema changes in Platypus using Drizzle ORM — editing the schema, pushing to a dev database, and generating the migration that ships.

    117 GitHub stars~527 tokensUpdated yesterday
    Auto-check passed
  • Docs Audit

    willdady/platypus

    Audit one section of the docs content against the code, and report what is wrong, stale, fragile, off-voice, or missing.

    117 GitHub stars~1.2k tokensUpdated yesterday
    Auto-check passed
  • Form Conventions

    willdady/platypus

    Post-save conventions for Platypus frontend forms — where a save lands the user, and what the submit button is called.

    117 GitHub stars~916 tokensUpdated yesterday
    Auto-check passed
  • Pre Release Check

    willdady/platypus

    The final gate before a release is cut — go green, reconcile the release PR against what actually landed, sweep what CI can't see, check the roadmap and ADR statuses, optionally deep-review, then…

    117 GitHub stars~3.1k tokensUpdated yesterday
    Auto-check passed

Questions about Platypus Tools

What does Platypus Tools do?

Platypus tools and tool sets — writing a tool, contributing a tool set from a plugin, scoping tools to a workspace, sharing a tool across sets, chat icons, and custom tool UI. Platypus Tools is an agent skill from willdady/platypus. Platypus tools and tool sets — writing a tool, contributing a tool set from a plugin, scoping tools to a workspace, sharing a tool across sets, chat icons, and custom tool UI.

How do I install Platypus Tools in Claude Code?

Run `npx skills add willdady/platypus --skill platypus-tools -a claude-code`. Or copy the skill folder (.agents/skills/platypus-tools in willdady/platypus) into .claude/skills/platypus-tools in your project. Claude Code loads it when a task matches its description.

How do I install Platypus Tools in Codex?

Run `npx skills add willdady/platypus --skill platypus-tools -a codex`. Or copy the skill folder (.agents/skills/platypus-tools in willdady/platypus) into .agents/skills/platypus-tools in your project. Codex loads it when a task matches its description.

Can I use Platypus Tools in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add willdady/platypus --skill platypus-tools -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/platypus-tools, .gemini/skills/platypus-tools, .github/skills/platypus-tools and .opencode/skills/platypus-tools in your project.

What does Platypus Tools need to run?

SKILL.md names no scripts, command-line tools or credentials: Platypus Tools is instructions for the agent only.

Does Platypus Tools access the network?

SKILL.md names 2 domains. As links in the text: sdk.vercel.ai and zod.dev. This is read from the text; nothing was executed.

Is Platypus Tools safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Platypus Tools use?

Platypus Tools is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Platypus Tools use?

About 1.7k tokens (SKILL.md is roughly 6.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Platypus Tools?

Skills that share tags, products or a category with Platypus Tools: Contribute (superset-sh/superset, 15k stars), Contribute (mindfold-ai/Trellis, 15k stars), Manage Settings (asgeirtj/system_prompts_leaks, 69k stars) and Contributing (kortix-ai/suna, 20k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Platypus Tools?

willdady (a GitHub user) maintains it in willdady/platypus, which has 117 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 7, 2026.

Source: willdady/platypus on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.