assimilate-popular-wor…
This skill should be used when the user asks to "find skills in the wild", "assimilate popular workflows", "discover SKILL.md files in repos", "research…
Integrates MCP App UI with host theming system. Applies host CSS variables, handles onhostcontextchanged, safe area insets, display mode detection, and fullscreen configuration.
$ npx -y skills add a5c-ai/babysitter --skill mcp-host-styling-integration --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/mcp-host-styling-integrationContext preview
The summary Claude sees to decide when to auto-load this skill.
Integrates MCP App UI with host theming system. Applies host CSS variables, handles onhostcontextchanged, safe area insets, display mode detection, and fullscreen configuration.
name: mcp-host-styling-integration description: Integrates MCP App UI with host theming system. Applies host CSS variables, handles onhostcontextchanged, safe area insets, display mode detection, and fullscreen configuration. allowed-tools: Read, Write, Edit graph: domains: [domain:software-engineering] specializations: [specialization:ai-agents-conversational] skillAreas: [skill-area:mcp-server-implementation, skill-area:mcp-resource-design] roles: [role:backend-engineer, role:fullstack-engineer] workflows: [workflow:feature-development]
Integrate MCP App UIs with the host application's theming system so apps look native in Claude Desktop, ChatGPT, VS Code, Goose, Postman, and other MCP-enabled hosts.
MCP Apps render in sandboxed iframes inside host applications. Each host has its own visual theme (colors, fonts, border radii, spacing). The MCP Apps SDK provides:
The key principle is: always use CSS variable fallbacks so the app looks correct both as an MCP App (host provides variables) and standalone (fallback values apply).
import {
App,
PostMessageTransport,
applyDocumentTheme,
applyHostStyleVariables,
applyHostFonts,
} from '@modelcontextprotocol/ext-apps';
const app = new App({ transport: new PostMessageTransport() });
// Register handler BEFORE connect()
app.onhostcontextchanged = (params) => {
const ctx = params.context;
// Apply theme (light/dark)
if (ctx.theme) {
applyDocumentTheme(ctx.theme);
}
// Apply CSS variables
applyHostStyleVariables(ctx);
// Load and apply fonts
applyHostFonts(ctx);
};
// THEN connect
await app.connect();import { useApp, useHostStyles } from '@modelcontextprotocol/ext-apps/react';
function MyApp() {
const app = useApp();
useHostStyles(); // Handles all theme/variable/font application
return (
<div className="app-container">
<h1>My MCP App</h1>
</div>
);
}/* Always use fallbacks so app works standalone too */
.app-container {
background-color: var(--color-background-primary, #ffffff);
color: var(--color-text-primary, #1a1a1a);
font-family: var(--font-sans, system-ui, -apple-system, sans-serif);
font-size: var(--font-text-base-size, 14px);
border-radius: var(--border-radius-md, 8px);
}
.card {
background-color: var(--color-background-secondary, #f5f5f5);
border: 1px solid var(--color-border-primary, #e0e0e0);
border-radius: var(--border-radius-sm, 4px);
padding: 16px;
}
.label {
color: var(--color-text-secondary, #666666);
font-size: var(--font-text-sm-size, 12px);
}
.code {
font-family: var(--font-mono, 'Courier New', monospace);
}
/* Safe area insets for mobile/embedded contexts */
.app-root {
padding-top: env(safe-area-inset-top, 0px);
padding-bottom: env(safe-area-inset-bottom, 0px);
padding-left: env(safe-area-inset-left, 0px);
padding-right: env(safe-area-inset-right, 0px);
}| Variable | Category | Description | |----------|----------|-------------| | `--color-background-primary` | Color | Main background | | `--color-background-secondary` | Color | Card/section background | | `--color-background-tertiary` | Color | Nested/subtle background | | `--color-text-primary` | Color | Main text | | `--color-text-secondary` | Color | Secondary/muted text | | `--color-text-tertiary` | Color | Subtle/hint text | | `--color-border-primary` | Color | Main borders | | `--color-border-secondary` | Color | Subtle borders | | `--color-accent` | Color | Interactive elements | | `--color-error` | Color | Error states | | `--color-success` | Color | Success states | | `--color-warning` | Color | Warning states | | `--font-sans` | Font | Sans-serif font family | | `--font-mono` | Font | Monospace font family | | `--font-text-xs-size` | Font | Extra small text size | | `--font-text-sm-size` | Font | Small text size | | `--font-text-base-size` | Font | Base text size | | `--font-text-lg-size` | Font | Large text size | | `--font-text-xl-size` | Font | Extra large text size | | `--border-radius-sm` |
Enforce obedience on agentic workforces. Manage extremely complex workflows through deterministic, hallucination-free self-orchestration.
Repo: a5c-ai/babysitter
This skill should be used when the user asks to "find skills in the wild", "assimilate popular workflows", "discover SKILL.md files in repos", "research…
This skill should be used when the user asks to "babysit issues", "work on assigned issues", "check a5c-agent issues", "process babysitter issues", or wants to…
Discover public GitHub repositories that import defineTask from @a5c-ai/babysitter-sdk and maintain a deduplicated catalog of those repositories in…
This skill should be used when the user asks to "fix pipelines", "fix CI", "check staging pipelines", "fix failing workflows", "fix failing actions", or wants…
Scaffold new babysitter process definitions following SDK patterns, proper structure, and best practices. Guides the 3-phase workflow from research to…
For a repository in the babysitter-users catalog, locate its babysitter processes and any committed runs (.a5c/runs/<runId>/) and perform a retrospective on a…