Agents
AgentSkillTag
A tiny chip naming one of a Digital Worker's skills, tinted with that worker's colour.
Guidelines#
Use it for the skills row on worker cards (Crew OS shows the first three), and anywhere a worker's capabilities are listed in compact form.
What you provide: skill (the label; Crew OS uses the title-case names from AGENT_DETAILS, such as "Lead Generation") and color (required; a 6-digit hex, since alpha is appended to it: read --dc-<agent> or use AGENT_PALETTES[agent].primary).
Anatomy: inline-flex, px-2 py-0.5, rounded-md, 10px medium text, 1px border. Text is the colour itself; the background is the colour at alpha 08 (about 3%) and the border at alpha 25 (about 15%). Lay tags out in a flex flex-wrap gap-1 row.
Behaviour: static.
Don't pass rgb(), oklch() or CSS variables (the alpha suffix breaks them), use it for statuses (use BrandBadge), or show more than three or four per card.
Facts#
| Group | Agents |
|---|---|
| Product | Crew OS |
| Global | window.DigitalCrew.AgentSkillTag |
| Source | digitalcrew-orchestrator: components/dc/index.ts |
| Import in the app | import { AgentSkillTag } from "@/components/dc"; |
API#
TypeScript declarations emitted from components/dc/index.ts (the module also exports AgentAvatar, AgentSkillTag, BrandBadge, BrandStatCard, EquipmentBadge).
/**
* Digital Crew Component Library
* Reusable branded components for the admin dashboard
*/
export { BrandStatCard } from './BrandStatCard';
export { AgentAvatar } from './AgentAvatar';
export { EquipmentBadge } from './EquipmentBadge';
export { BrandBadge } from './BrandBadge';
export { AgentSkillTag } from './AgentSkillTag';Example#
The code of the preview above: plain React.createElement against window.DigitalCrew, with realistic data.
<div id="root" class="p-6"></div>
<script>
(function () {
var h = React.createElement, DC = window.DigitalCrew, I = DC.Icons;
function tok(name) { return getComputedStyle(document.documentElement).getPropertyValue("--dc-" + name).trim(); }
var agents = [
["max", "Max", ["Lead Generation", "Prospect Search", "List Building", "Outreach Strategy"]],
["sophie", "Sophie", ["Candidate Screening", "Interview Scheduling", "Resume Parsing"]],
["claire", "Claire", ["Market Analysis", "Trend Research", "Competitive Intel"]]
];
function App() {
return h("div", { className: "grid gap-3" }, agents.map(function (a) {
return h("div", { key: a[0], className: "flex items-center gap-3" },
h("span", { className: "w-14 text-sm font-medium" }, a[1]),
h("div", { className: "flex flex-wrap gap-1" }, a[2].map(function (s) { return h(DC.AgentSkillTag, { key: s, skill: s, color: tok(a[0]) }); })));
}));
}
ReactDOM.createRoot(document.getElementById("root")).render(h(DC.TooltipProvider, { delayDuration: 80 }, h(App)));
})();
</script>