Downcity
PluginsBuilt-in Plugins

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:

  • auth
  • skill
  • web
  • asr
  • tts
  • workboard

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 Agent if you explicitly register it

How the six plugins divide responsibility

PluginMain responsibilityMain capability surfaceBest mental model
authchat authorization, observation, role resolutionguard / effect / resolve / actionsplatform rule layer
skillskill discovery, installation, lookupconfig / actions / systemcapability catalog layer
webweb provider selection and prompt adaptationconfig / setup / usage / availability / actions / systemexternal capability adapter
asrspeech transcription and inbound augmentationconfig / setup / usage / availability / actions / pipeline / systeminbound augmentation layer
ttstext-to-speech generationconfig / setup / usage / availability / actions / systemexplicit generation layer
workboardruntime work snapshotsavailability / http.runtimeobservability 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:

  • config
  • setup
  • usage
  • availability
  • actions
  • system

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.md before actually using a skill

web

Use it when you need to:

  • switch between web-access and agent-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

  • skill
  • tts

Mainly action plus config plus system

  • web

Mainly runtime-chain augmentation

  • auth
  • asr

Mainly runtime HTTP

  • workboard

Which page to open first