K
Docs
Building Bots

📦 Expansions

Expansions unlock categories of Pieces on the Canvas. The Base Set is always included — unbox The Vault to give your bot a database, The Mod Squad for moderation tools, The Control Panel for buttons, dropdowns and pop-up forms, or The Darkroom for images, GIFs and the Studio.

🎁 All expansions are free

📬Unbox → Install

Claim an expansion into your account, then attach it to a bot.

🎁
1. Unbox

Browse the expansion gallery and click Unbox. The expansion lands in your account inventory.

🔧
2. Install on bot

Open bot settings → Expansions and install from your inventory. New Pieces appear in the palette.

📋Expansion Catalog

🗄️
The Vault
vault
Unbox to unlock

Give your bot a memory. Tables for anything you want to keep, leaderboards and ranks, tallies, random picks and cooldowns for /daily — plus the 🔐 All-or-Nothing box, so a trade or a /pay either happens completely or not at all. Unlocks the Vault tab.

Pieces (13)
🛡️
The Mod Squad
mod
Unbox to unlock

Everything the people who keep the chaos at bay could want — kick, ban, timeout, purge, slowmode, lockdown and more. Now automated, so your mods can sleep at night.

Pieces (10)
🎛️
The Control Panel
ui
Unbox to unlock

Stop making people type. Hand them a button to press, a menu to pick from, or a form to fill in — then catch what they did and carry on. Works on every bot, Interaction Only included.

Pieces (12)
🎞️
The Darkroom
img
Unbox to unlock

Develop pictures on the fly. Grab avatars and server art, read images out of any message, design rank cards and welcome banners in the Studio, touch up, caption and deep-fry, then send it all back — GIFs included. Unlocks the Gallery for your own images.

Pieces (10)

✅Kit validation

💡How validation works

Before publishing, Kitcord checks that every piece id in your flows belongs to an expansion installed on that bot. The expansions array in the Kit lists which expansion ids are active (must include base).

📐Under the hood — types
TypeScript
// Canvas catalog (lib/expansions.ts)
interface ExpansionDef {
  id: string;           // "base" | "vault" | "mod" | "ui" | "img"
  name: string;
  tagline: string;
  alwaysUnboxed?: boolean; // base is always available
}

// In a Bot Kit — validated before publish
type KitExpansions = string[]; // e.g. ["base", "mod", "ui"]
kit.json (expansions)JSON
{
  "expansions": ["base", "mod"],
  "flows": [
    {
      "id": "flow_warn",
      "entry": "node_kick",
      "nodes": [
        {
          "id": "node_kick",
          "piece": "mod.kick",
          "config": { "userId": "{{input.options.target.id}}", "reason": "Spam" }
        }
      ],
      "edges": []
    }
  ]
}