Built-in Plugin Overview
A structured guide to the six built-in plugins in Downcity, what each one is for, how they differ, and which runtime shape each plugin represents
Built-in Plugin Overview
The current built-in plugin set in Downcity is:
authskillwebasrttsworkboard
This list comes from the runtime source of truth in code, not from a docs-only concept list.
How built-in plugins attach in the SDK
Each built-in plugin can be imported from @downcity/agent and explicitly registered into a local Agent:
import {
Agent,
authPlugin,
skillPlugin,
webPlugin,
asrPlugin,
ttsPlugin,
workboardPlugin,
} from "@downcity/agent";
const agent = new Agent({
id: "repo-helper",
path: "/path/to/project",
tools: {},
plugins: [
authPlugin,
skillPlugin,
webPlugin,
asrPlugin,
ttsPlugin,
workboardPlugin,
],
});
const installed = agent.plugins.list();The important semantics are:
- built-in plugin objects are publicly exported
- the SDK does not auto-register every built-in plugin
- a plugin is only available to this local
Agentif you explicitly register it
How the six plugins divide responsibility
| Plugin | Main responsibility | Main capability surface | Best mental model |
|---|---|---|---|
auth | chat authorization, observation, role resolution | guard / effect / resolve / actions | platform rule layer |
skill | skill discovery, installation, lookup | config / actions / system | capability catalog layer |
web | web provider selection and prompt adaptation | config / setup / usage / availability / actions / system | external capability adapter |
asr | speech transcription and inbound augmentation | config / setup / usage / availability / actions / pipeline / system | inbound augmentation layer |
tts | text-to-speech generation | config / setup / usage / availability / actions / system | explicit generation layer |
workboard | runtime work snapshots | availability / http.runtime | observability and control-plane layer |
Best order for understanding them
1. Start with skill
skill is the easiest plugin to build intuition around.
It mainly does four things:
- find a skill
- install a skill
- list learned skills
- read a skill's
SKILL.md
It helps you understand the simplest plugin shape: explicit actions plus system prompt injection.
2. Then read web
web is a great reference for the full plugin surface.
It combines:
configsetupusageavailabilityactionssystem
That makes it one of the best examples for understanding installation, configuration, provider switching, enablement, and prompt injection together.
3. Then read asr
asr shows another important plugin shape:
- part of the capability is explicitly called through actions
- part of the capability is automatically inserted into the runtime chain through a pipeline hook
If you want to design “augment first, then execute” behavior, this is one of the best built-in references.
4. Then read tts
tts is related to asr, but the runtime shape is different.
tts is primarily an explicit invocation plugin: you ask it to generate audio, and it returns a file path plus a reusable file tag.
5. Then read workboard
workboard helps you understand that:
- a plugin does not have to be action-first
- a plugin can mainly expose capability through
http.runtime
It is the clearest runtime HTTP plugin in the current codebase.
6. Finally return to auth
auth is important, but it is not the easiest first reference.
Its main role is not “give the user a new feature,” but:
- decide who can enter the chat pipeline
- record observed user and chat state
- provide resolved role information to downstream logic
It belongs more to the platform rule layer, so it makes more sense after you already understand hooks and resolve points.
Which scenarios each plugin fits
auth
Use it when you need to:
- control who can talk to the agent
- record observed Telegram, Feishu, or QQ users and chats
- resolve user roles for downstream capability policy
skill
Use it when you need to:
- install external skills into the local skill directory
- let the agent know which skills it already learned
- read
SKILL.mdbefore actually using a skill
web
Use it when you need to:
- switch between
web-accessandagent-browser - define one web strategy for a project
- automatically inject web usage constraints into the system prompt
asr
Use it when you need to:
- handle voice attachments
- turn voice into text before agent execution
- transcribe one local audio file explicitly
tts
Use it when you need to:
- turn a text answer into audio
- send spoken output to a channel
- standardize model, format, and speech speed
workboard
Use it when you need to:
- expose structured work snapshots to Console or UI
- observe what the agent is working on
- provide a controlled runtime HTTP endpoint for status surfaces
These plugins are not all the same shape
The most common mistake is to treat every built-in plugin as “just an action container.”
A better mental model is to group them like this:
Mainly action-driven
skilltts
Mainly action plus config plus system
web
Mainly runtime-chain augmentation
authasr
Mainly runtime HTTP
workboard
Which page to open first
- To add skill catalog behavior: read skill Plugin
- To add web strategy: read web Plugin
- To handle spoken input: read asr Plugin
- To generate spoken output: read tts Plugin
- To build a status surface or workboard UI: read workboard Plugin
- To control permissions and roles: read auth Plugin
Related topic docs
Built-in Plugin Guide
Start from one entry page to understand the full built-in plugin set in Downcity, the best reading order, and where to find detailed docs for each plugin
auth Plugin
A detailed guide to the auth built-in plugin, including its authorization flow, role resolution model, available actions, and how it uses guard, effect, and resolve points