Skills System

Composable Markdown instructions for AI agents

Camel-Kit’s skills are composable Markdown instructions that guide AI agents through complex integration tasks. Built on progressive disclosure — only load what you need, when you need it.

13 Skills in Four Tiers

TierSkillCommandPurpose
Entrystart/camel-startRoute a request to the right skill
Pipelinebrainstorm/camel-brainstormDesign interview → Design Specification
Pipelinemigrate/camel-migrateMigration discovery → Design Specification
Pipelineplan/camel-planTask decomposition → Implementation Plan
Pipelineexecute/camel-executeWave-based code generation with staged review
Pipelinevalidate/camel-validateStatic route quality validation
Utilityship/camel-shipThin CLI delegate to the local Ship controller
Utilityknowledge/camel-knowledgeApache Camel documentation queries
Utilitydebug/camel-debugAd-hoc broken-route troubleshooting

camel-ship is the outlier in this tier: its SKILL.md is a short delegate that invokes the registered camel-kit ship (or camel kit ship) command once with the invocation’s options. The CLI command owns validation, state, oversight, evidence, publication, and recovery — the skill does not follow the guide-based structure described below.

Loaded by pipeline skills — not exposed as command stubs:

SkillPurpose
implementGenerate Camel YAML routes and DataMapper transformations
testGenerate Citrus integration tests, using Testcontainers only for required external infrastructure
designComponent selection, EIP catalog, interview guides
verifyBuild, test, diagnose, and repair the application at runtime

These are composition primitives — building blocks assembled by the pipeline stages.

Reusable utilities under skills/shared/:

GuidePurpose
iron-laws.md6 non-negotiable pipeline rules
mcp-setup.mdMCP version mapping and fallback policy
forage.mdInfrastructure configuration ladder and catalog queries
graph-availability.mdGraph CLI detection and fallback
pipeline-infrastructure.mdPipeline IDs, state, provenance, and staleness
datamapper-canonicalize.mdChoose Groovy or XSLT from schemas and field count; pre-compute XPaths for XSLT
flow-test-data.mdTest data generation patterns
yaml-structure.mdYAML DSL structure rules
yaml-components.mdComponent URI syntax and parameter rules
yaml-examples.mdComponent-specific YAML examples
patterns-foundational.mdFoundational EIP patterns (routing, splitting, aggregation)
patterns-error-handling.mdError handling patterns (DLC, retry, circuit breaker)
patterns-deployment.mdDeployment patterns (health checks, graceful shutdown)

One guide, many skills — reusability without duplication.

Skill Structure

Progressive Disclosure

Target Generation

One shared skill set is adapted for eight current AI targets. Legacy IBM Bob 1 replaces seven pipeline SKILL.md files with self-contained monolithic gates and mode switching, so those files have a separate source architecture:

Shared Skill Source

Markdown instructions written once and adapted by each generator:

# /camel-brainstorm
## Step 1: Detect project type
## Step 2: Run interview
## Step 3: Verify components via MCP

Stored in camel-kit-core/src/main/resources/skills/

Agent-Specific Output

Agent-specific generators produce each platform’s native format:

GeneratorAgentOutput
ClaudeGeneratorClaude Code.claude/commands/ + subagent dispatch + .claude/camel-kit-personas/ role library
Bob2GeneratorIBM Bob 2 (default)Shared skills + Bob modes and native spawn_subagent + .bob/personas/ role library
BobGeneratorIBM Bob 1 (legacy).bob/skills/ with seven gate-backed SKILL.md files + modes and rules
GeminiGeneratorGemini CLIGEMINI.md + TOML policies + .gemini/camel-kit-personas/ role library
CodexGeneratorOpenAI Codex CLIAGENTS.md + .agents/skills/ + .codex/agents/ + .agents/camel-kit-personas/ role library
CopilotGeneratorGitHub Copilot CLI.github/skills/ + custom agents and hooks + .github/camel-kit-personas/ role library
PiGeneratorPi.pi/skills/ + prompt templates and guard hooks + .pi/camel-kit-personas/ role library
QwenGeneratorQwen CodePrimary-session workflows + four bounded leaves + .qwen/camel-kit-personas/ role library
OpenCodeGeneratorOpenCodeNine permission-scoped agents, including the primary executor, + .opencode/camel-kit-personas/ role library

Codex discovers the shared skills directly under .agents/skills/. Users inspect them with /skills and invoke the router as $camel-start; generated skill-to-skill references use native $camel-* mentions, and Camel-Kit does not generate .codex/commands/ wrappers. Generated custom-agent roles support focused and parallel dispatch, with inline execution as the fallback when a role is unavailable.

Agent Traits

In addition to per-agent generators, Camel-Kit uses agent traits — agent-specific instruction fragments appended to shared skill files during camel-kit init. Traits bridge the gap between the shared-skill equalization layer and agent-specific capabilities.

How it works: DefaultGenerator.applyTraits() reads .append.md files from templates/traits/{agent}/ and appends them to the corresponding skill files with idempotent HTML comment sentinels. Re-running init does not duplicate trait content.

Two levels:

  • SKILL.md traits (strategy) — e.g., Claude’s camel-execute.append.md adds parallel subagent dispatch via the Agent tool
  • Guide traits (tactics) — e.g., Claude’s implementer-context.append.md adds run_in_background: true guidance for wave-based execution

Each agent gets trait content tailored to its capabilities. Bob 2 reserves built-in explore for factual discovery, generates camel-worker for implementation, test, fix, and verification work from broad orchestration modes, and generates a read/MCP-only camel-reviewer for catalog research, knowledge research, and independent judgment. The parent supplies the selected complete role text from .bob/personas/ to each scoped preset. Standalone restricted implement and test modes keep mutations inline; test retains its path-scoped edit restriction. Independent calls in one parent turn run in parallel, and fork_context is used only when prior conversation decisions are needed. Qwen keeps slash-command workflow orchestration in the primary session so questions, approval, arguments, and handoffs remain available; it generates bounded implementer, reviewer, tester, and validator leaves, with the read-only reviewer receiving complete research and review roles from .qwen/camel-kit-personas/. OpenCode keeps the other command stubs in the calling primary session, while its execute command selects the generated primary executor; that executor can dispatch only its allowlisted bounded leaves, and each leaf denies further delegation. Researcher and reviewer leaves receive complete roles from .opencode/camel-kit-personas/. Bob 1 retains its legacy mode-switching gates. Report ownership follows the same pattern: the Gemini, Qwen, and Copilot validators return complete reports to the primary session, which owns the report write, while the OpenCode validator writes the report only when the executor’s prompt assigns it.

Next Steps