Repository navigation
v0.20.0
New features
- Marketplaces (#29): extensions install from Claude Code marketplaces (
marketplace.json).extension marketplace add|list|update|remove,extension search,extension add <plugin>@<marketplace>. Folder,github,url,git-subdir,npm(checked against the registry's sha512integrity) andarchive(a zip over HTTPS, checked against itssha256) sources;commandsources never install. An agent's own marketplace isofficialand installs without asking; another asks for its name to be typed, and installing from it asks again (--yesanswers for the person). npm and zip downloads are unpacked in-process (optionalfflate), so a packaged agent needs neither npm nortar, and nothing in them runs. Exports:addMarketplace(),listMarketplaces(),updateMarketplace(),removeMarketplace(),findPlugin(),installFromMarketplace(),readMarketplaceManifest(),inspectMarketplace(). - Extensions on and off in a running session (#49):
/extensions disable|enableon an installed extension takes effect without reopening the session (its tools, skills, commands and subagents go and come back);buildSessionOptions()returnsswitchExtension. The model is told what changed. - An extension declares the programs it needs (
needsin its manifest): one whose program isn't on thePATHis off, with why;extension infoshows them. - Denied paths as the SDK's own rules too:
deniedPaths(and the SDK's credentials) also go tosettings.permissions.deny, a second layer under the file scope gate.denyRules()is exported. - Each extension owns its options (#50): the kit's extensions are factories, exported from the package root:
awareness({ guide }),sources({ dir, saveDescription }),knowledge({ dir, pageTypes, store }),memory({ dir }). A folder is a path or a function of the session's config (FolderOption).ExtensionContext.capabilitiestells an extension what the active ones provide.
Breaking changes
AgentSpec.extensionstakesExtensionobjects only:extensions: ["sources", "knowledge"]becomesextensions: [sources({ dir }), knowledge({ dir })].- Removed from
BaseSessionConfig:knowledgeDir,sourcesDir,memoryDir; pass them toknowledge({ dir }),sources({ dir }),memory({ dir }), e.g.knowledge({ dir: (config) => path.join(config.projectDir, "knowledge") }). - Removed from
AgentSpec:helpGuide(nowawareness({ guide })),saveToSourcesDescription(sources({ saveDescription })),knowledgePageTypes(knowledge({ pageTypes })),knowledgeStore(config)(knowledge({ store: (config, dir) => … })).identitystays. buildSessionOptions()no longer returnsknowledgeStore: readapis.knowledge.knowledgeStore.- A folder of plain notes (formerly
knowledgeDirwithout the knowledge extension) is anextraWritableDirsentry. - The knowledge base explains matching summaries to originals when the sources extension is active, not when a sources folder is configured.
Captain Whiskers
Captain Whiskers 0.2.0, the example agent built on agent-kit 0.20.0, as a Windows app: download the installer. It's unsigned, so SmartScreen warns about it; it asks for a Claude key on first start and keeps everything in ~/.captain-whiskers. New: his own marketplace, the shipyard, from which his jokebook installs; his extensions through their factories.
Internal
- The core imports no extension, not even a type; ESLint enforces it.
- The shipyard is checked with
claude plugin validateby a test.