YAML-based specifications for AI agents, MCP servers, skills, and environment variables.
This repository contains declarative specifications in YAML format that define:
- Agent Specs (
agentspecs/agents/) - Agent configurations organized by category (code-ai/, codemode-paper/, datalayer-ai/) - MCP Server Specs (
agentspecs/mcp-servers/) - MCP server commands and environment variables - Skill Specs (
agentspecs/skills/) - Agent skills with dependencies and env vars - Envvar Specs (
agentspecs/envvars/) - Environment variable definitions with registration URLs
These YAML specifications serve as the single source of truth for agent configurations and can be consumed by any system that implements the schema.
agentspecs/
βββ agents/ # Agent specifications (organized by category)
β βββ code-ai/ # Code-focused agents
β β βββ coder.yaml
β β βββ simple.yaml
β β βββ tux.yaml
β βββ codemode-paper/ # Research paper agents
β β βββ crawler-mcp.yaml
β β βββ financial-viz.yaml
β β βββ information-routing.yaml
β β βββ task-decomposition.yaml
β βββ datalayer-ai/ # Data-focused agents
β βββ data-acquisition.yaml
β βββ github-agent.yaml
β βββ simple.yaml
β βββ web-search.yaml
βββ mcp-servers/ # MCP server specifications
β βββ kaggle.yaml
β βββ github.yaml
β βββ filesystem.yaml
β βββ tavily.yaml
β βββ ...
βββ skills/ # Skill specifications
β βββ data-analysis.yaml
β βββ ...
βββ envvars/ # Environment variable specifications
β βββ KAGGLE_TOKEN.yaml
β βββ GITHUB_TOKEN.yaml
β βββ TAVILY_API_KEY.yaml
β βββ ...
βββ agent-spec.schema.yaml # JSON Schema for validation
βββ README.md # This file
Agent IDs are automatically prefixed with their folder name, ensuring uniqueness across categories.
For example, an agent in code-ai/simple.yaml will have ID "code-ai/simple", while datalayer-ai/simple.yaml has ID "datalayer-ai/simple".
id(string): Unique identifier within folder (kebab-case). The full ID becomesfolder/id(e.g.,code-ai/simple)name(string): Display namedescription(string): Agent capabilities description
tags(list): Categorization tagsenabled(boolean): Whether agent is active (default:true)mcp_servers(list): MCP server IDs to useskills(list): Agent skillsenvironment_name(string): Runtime environment (default:"ai-agents")icon(string): UI icon identifieremoji(string): UI emoji identifier (e.g.,"π")color(string): Hex color code (e.g.,"#3B82F6")suggestions(list): Chat exampleswelcome_message(string): Greeting messagesystem_prompt(string): Base system prompt for the agentsystem_prompt_codemode_addons(string): Additional instructions for Code Mode execution environmentwelcome_notebook(string): Jupyter notebook pathwelcome_document(string): Lexical document path
Agents are organized in subfolders by category:
code-ai/: Code-focused agents (coder, simple, tux)codemode-paper/: Research paper agents (crawler-mcp, financial-viz, information-routing, task-decomposition)datalayer-ai/: Data-focused agents (data-acquisition, github-agent, simple, web-search)
This folder structure:
- Prevents ID conflicts: Multiple agents can have the same base ID (e.g., "simple") in different folders
- Improves organization: Related agents are grouped together
- Enables categorization: Frontend can display agents by category
- Maintains clarity: Full IDs like "code-ai/simple" clearly show the agent's purpose
# File: agentspecs/agents/codemode-paper/financial-viz.yaml
# Full ID will be: "codemode-paper/financial-viz"
id: financial-viz
name: Financial Visualization Agent (Viz)
description: >
Analyzes financial market data and creates visualizations and charts.
tags:
- finance
- stocks
- visualization
enabled: true
mcp_servers:
- alphavantage
- chart
skills: []
environment_name: ai-agents-env
icon: trending-up
emoji: π
color: "#F59E0B"
suggestions:
- Show me the stock price history for AAPL
- Create a chart comparing MSFT and GOOGL over the last year
- Analyze the trading volume trends for Tesla
welcome_message: >
Welcome! I'm the Financial Visualization Agent. I can help you analyze
stock market data, track financial instruments, and create charts to
visualize market trends.
system_prompt: >
You are a financial market analyst with access to Alpha Vantage market data and chart generation tools.
You can fetch stock prices, analyze trading volumes, create visualizations, and track market trends.
Provide clear insights with relevant data points and generate charts to illustrate patterns.
system_prompt_codemode_addons: >
## IMPORTANT: Be Honest About Your Capabilities
NEVER claim to have tools or capabilities you haven't verified.
## Core Codemode Tools
Use these 4 tools to accomplish any task:
1. **list_servers** - List available MCP servers
2. **search_tools** - Progressive tool discovery by natural language query
3. **get_tool_details** - Get full tool schema and documentation
4. **execute_code** - Run Python code that composes multiple tools
## Recommended Workflow
1. **Discover**: Use list_servers and search_tools to find relevant tools
2. **Understand**: Use get_tool_details to check parameters
3. **Execute**: Use execute_code to perform multi-step tasksid(string): Unique identifier (kebab-case)name(string): Display namedescription(string): Server capabilities descriptioncommand(string): Executable command (e.g.,"npx","python")args(list): Command arguments
transport(string): Transport protocol ("stdio","remote")envvars(list): References to environment variable specification IDsenv(dict): Environment variables to set for the server processtags(list): Categorization tags
Use ${VAR_NAME} syntax in args for environment variable expansion:
args:
- "-m"
- "mcp_remote"
- "--Authorization"
- "Bearer ${KAGGLE_TOKEN}"id: kaggle
name: Kaggle MCP Server
description: Access Kaggle datasets, competitions, and kernels
command: python
args:
- "-m"
- "mcp_remote"
- "--Authorization"
- "Bearer ${KAGGLE_TOKEN}"
- "--accept"
- "application/json"
- "--"
- "https://mcp.kaggle.com"
transport: remote
envvars:
- KAGGLE_TOKEN
tags:
- data
- kaggle
- datasetsid(string): Unique identifier (kebab-case)name(string): Display namedescription(string): Skill capabilities descriptionmodule(string): Python module path (e.g.,"agent_skills.data_analysis")
envvars(list): References to environment variable specification IDsoptional_env_vars(list): Optional environment variablesdependencies(list): Required Python packagestags(list): Categorization tags
id: data-analysis
name: Data Analysis Skill
description: Perform statistical analysis and data visualization
module: agent_skills.data_analysis
envvars:
- OPENAI_API_KEY
optional_env_vars:
- PLOT_DPI
- CHART_THEME
dependencies:
- pandas>=2.0.0
- matplotlib>=3.7.0
- seaborn>=0.12.0
- numpy>=1.24.0
tags:
- data
- analysis
- visualizationid(string): Unique identifier (UPPER_SNAKE_CASE, e.g.,"KAGGLE_TOKEN")name(string): Display namedescription(string): Purpose and usage description
registrationUrl(string): URL where users can obtain the variable (e.g., API key registration page)tags(list): Categorization tags
Environment variables are linked to MCP servers and skills through the envvars field:
# In MCP server or skill spec
envvars:
- KAGGLE_TOKEN
- GITHUB_TOKENid: KAGGLE_TOKEN
name: Kaggle API Token
description: >
API token for accessing Kaggle datasets, competitions, notebooks, and models.
Required for Kaggle MCP server authentication.
registrationUrl: https://www.kaggle.com/settings/account
tags:
- authentication
- api-key
- kaggle
- dataSee specs/envvars/ for all defined environment variables:
- KAGGLE_TOKEN: Kaggle API authentication
- GITHUB_TOKEN: GitHub authentication for MCP server and skills
- TAVILY_API_KEY: Tavily search and web crawling
- ALPHAVANTAGE_API_KEY: Alpha Vantage financial data
- SLACK_BOT_TOKEN: Slack bot authentication
- SLACK_TEAM_ID: Slack workspace identifier
- SLACK_CHANNEL_IDS: Slack channel access list
- GOOGLE_OAUTH_CLIENT_ID: Google Workspace OAuth client ID
- GOOGLE_OAUTH_CLIENT_SECRET: Google Workspace OAuth secret
All YAML specifications are validated against the JSON Schema defined in agent-spec.schema.yaml.
The schema validates:
- Required fields are present
- ID format (kebab-case for most, UPPER_SNAKE_CASE for envvars)
- Color format (hex codes like
#3B82F6) - List and object structures
- Field types and constraints
- Choose the appropriate folder:
code-ai/,codemode-paper/, ordatalayer-ai/ - Create
agentspecs/agents/<folder>/my-agent.yaml - The agent ID will automatically become
<folder>/my-agent - Follow the Agent Specification format described above
- Create
agentspecs/mcp-servers/my-server.yaml - Follow the MCP Server Specification format described above
- Create
agentspecs/skills/my-skill.yaml - Follow the Skill Specification format described above
- Create
agentspecs/envvars/MY_VAR.yaml - Use UPPER_SNAKE_CASE for the filename and
idfield - Follow the Environment Variable Specification format described above
MCP servers and skills can reference environment variables defined in the envvars/ directory:
envvars: List of environment variable IDs that are requiredoptional_env_vars: List of environment variable IDs that are optionalenv: Dictionary of environment variables to set for the server process- Variable Expansion: Use
${VAR_NAME}syntax in args for runtime expansion
Example:
# MCP server with auth token
args:
- "--Authorization"
- "Bearer ${KAGGLE_TOKEN}"
envvars:
- KAGGLE_TOKENThe ${KAGGLE_TOKEN} will be expanded at runtime by consuming systems.
- Naming: Use kebab-case for IDs (
data-acquisition, notdata_acquisition). Exception: envvars use UPPER_SNAKE_CASE. - Descriptions: Be specific about capabilities and use cases
- Tags: Use consistent tags across related specs for better categorization
- Environment Variables: Always define envvars in
envvars/directory and reference them by ID - Dependencies: Pin major versions for skills (
pandas>=2.0.0) to avoid breaking changes - Colors: Use hex color codes consistently (e.g.,
#3B82F6for blue) - Suggestions: Provide 3-5 clear, actionable example prompts
- System Prompts: Keep base
system_promptgeneral, usesystem_prompt_codemode_addonsfor execution-specific instructions - Organization: Place agents in appropriate subfolders (code-ai/, codemode-paper/, datalayer-ai/) based on their purpose
- Use 2 spaces for indentation (not tabs)
- Quote strings that contain special characters
- Use
>or|for multi-line strings - Ensure all required fields are present
- Invalid indentation: Use 2 spaces consistently
- Missing required fields: Check schema for required fields (id, name, description)
- Invalid ID format: Use kebab-case (lowercase with hyphens)
- Invalid color codes: Use 6-digit hex codes starting with # (e.g.,
#3B82F6) - Broken references: Ensure referenced envvars, skills, or mcp_servers exist
When adding new specifications:
- Follow the YAML schema format defined in
agent-spec.schema.yaml - Add appropriate tags for categorization
- Define environment variables in
envvars/directory - Use consistent naming conventions (kebab-case for most, UPPER_SNAKE_CASE for envvars)
- Provide clear descriptions and examples
- Update this README if adding new patterns or conventions
The following MCP servers are defined in agentspecs/mcp-servers/:
tavily- Web search via Tavily APIfilesystem- Local filesystem operationsgithub- GitHub repository operationsgoogle-workspace- Google Workspace integrationslack- Slack messagingkaggle- Kaggle datasets and competitionsalphavantage- Financial market datachart- Chart generation
Reference these server IDs in the mcp_servers field of agent specifications.
- ID: kebab-case (
data-acquisition) - Name: Title Case with "Agent" suffix
- Constants: Auto-generated as
SCREAMING_SNAKE_CASE_AGENT_SPEC
- Blue (
#3B82F6): Data and information - Green (
#10B981): Web and networking - Indigo (
#6366F1): Development and code - Amber (
#F59E0B): Finance and analytics - Pink (
#EC4899): Communication and workflow
- Descriptions: 1-2 sentences, present tense
- Suggestions: 3-5 concrete examples with action verbs
- Tags: 2-5 relevant categorization keywords
- Single Source of Truth: YAML files are the authoritative specification
- Declarative: Define what agents can do, not how they do it
- Composable: Agents reference MCP servers and skills by ID
- Validated: JSON Schema ensures consistency and correctness
- Extensible: Easy to add new fields or specification types
- Human-Readable: YAML format is easy to read and edit
Agent Specification
βββ Basic Info (id, name, description, tags)
βββ Configuration (enabled, environment_name)
βββ Capabilities
β βββ MCP Servers (references to mcp-servers/*.yaml)
β βββ Skills (references to skills/*.yaml)
βββ UI Customization (icon, emoji, color)
βββ User Guidance (suggestions, welcome_message)
βββ Prompts
βββ system_prompt (base instructions)
βββ system_prompt_codemode_addons (execution mode instructions)
MCP Server Specification
βββ Basic Info (id, name, description, tags)
βββ Execution (command, args, transport)
βββ Environment
β βββ envvars (required environment variables)
β βββ env (variables to set for the process)
βββ UI (icon, emoji)
Skill Specification
βββ Basic Info (id, name, description, tags)
βββ Implementation (module)
βββ Environment
β βββ envvars (required environment variables)
β βββ optional_env_vars (optional variables)
βββ Dependencies (Python packages)
βββ UI (icon, emoji)
Environment Variable Specification
βββ Basic Info (id, name, description)
βββ Registration (registrationUrl)
βββ Categorization (tags)
βββ UI (icon, emoji)
Copyright (c) 2025-2026 Datalayer, Inc. Distributed under the terms of the Modified BSD License.