From epieczko-betty
Validates and registers agent manifests for the Betty Framework.
npx claudepluginhub joshuarweaver/cascade-code-general-misc-1 --plugin epieczko-bettyThis skill uses the workspace's default tool permissions.
Validates and registers agent manifests for the Betty Framework.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
Validates and registers agent manifests for the Betty Framework.
The agent.define skill is the Layer 2 (Reasoning Layer) equivalent of skill.define. It validates agent manifests (agent.yaml) for schema compliance, verifies skill references, and updates the central Agent Registry.
/registry/agents.jsonpython skills/agent.define/agent_define.py <path_to_agent.yaml>
| Argument | Type | Required | Description |
|---|---|---|---|
manifest_path | string | Yes | Path to the agent.yaml file to validate |
0: Validation succeeded and agent was registered1: Validation failed or registration errorAll agent manifests must include:
| Field | Type | Validation |
|---|---|---|
name | string | Must match ^[a-z][a-z0-9._-]*$ |
version | string | Must follow semantic versioning |
description | string | Non-empty string (1-200 chars recommended) |
capabilities | array[string] | Must contain at least one item |
skills_available | array[string] | Must contain at least one item, all skills must exist in registry |
reasoning_mode | enum | Must be iterative or oneshot |
| Field | Type | Default | Validation |
|---|---|---|---|
status | enum | draft | Must be draft, active, deprecated, or archived |
context_requirements | object | {} | Any valid object |
workflow_pattern | string | null | Any string |
example_task | string | null | Any string |
error_handling | object | {} | Any valid object |
output | object | {} | Any valid object |
tags | array[string] | [] | Array of strings |
dependencies | array[string] | [] | Array of strings |
Agent names must:
<domain>.<action>Valid: api.designer, compliance.checker, data-migrator
Invalid: ApiDesigner, 1agent, agent_name
Versions must follow semantic versioning: MAJOR.MINOR.PATCH[-prerelease]
Valid: 0.1.0, 1.0.0, 2.3.1-beta, 1.0.0-rc.1
Invalid: 1.0, v1.0.0, 1.0.0.0
Must be one of:
iterative: Agent can retry with feedback and refine based on errorsoneshot: Agent executes once without retryAll skills in skills_available must exist in the skill registry (/registry/skills.json).
{
"ok": true,
"status": "success",
"errors": [],
"path": "agents/api.designer/agent.yaml",
"details": {
"valid": true,
"errors": [],
"path": "agents/api.designer/agent.yaml",
"manifest": {
"name": "api.designer",
"version": "0.1.0",
"description": "Design RESTful APIs...",
"capabilities": [...],
"skills_available": [...],
"reasoning_mode": "iterative"
},
"status": "registered",
"registry_updated": true
}
}
{
"ok": false,
"status": "failed",
"errors": [
"Missing required fields: capabilities, skills_available",
"Invalid reasoning_mode: 'hybrid'. Must be one of: iterative, oneshot"
],
"path": "agents/bad.agent/agent.yaml",
"details": {
"valid": false,
"errors": [
"Missing required fields: capabilities, skills_available",
"Invalid reasoning_mode: 'hybrid'. Must be one of: iterative, oneshot"
],
"path": "agents/bad.agent/agent.yaml"
}
}
Agent Manifest (agents/api.designer/agent.yaml):
name: api.designer
version: 0.1.0
description: "Design RESTful APIs following enterprise guidelines"
capabilities:
- Design RESTful APIs from requirements
- Apply Zalando guidelines automatically
- Generate OpenAPI 3.1 specs
- Iteratively refine based on validation feedback
skills_available:
- api.define
- api.validate
- api.generate-models
reasoning_mode: iterative
status: draft
tags:
- api
- design
- openapi
Command:
python skills/agent.define/agent_define.py agents/api.designer/agent.yaml
Output:
{
"ok": true,
"status": "success",
"errors": [],
"path": "agents/api.designer/agent.yaml",
"details": {
"valid": true,
"status": "registered",
"registry_updated": true
}
}
Agent Manifest (agents/bad.agent/agent.yaml):
name: BadAgent # Invalid: must be lowercase
version: 1.0 # Invalid: must be semver
description: "Test agent"
capabilities: [] # Invalid: must have at least one
skills_available:
- nonexistent.skill # Invalid: skill doesn't exist
reasoning_mode: hybrid # Invalid: must be iterative or oneshot
Command:
python skills/agent.define/agent_define.py agents/bad.agent/agent.yaml
Output:
{
"ok": false,
"status": "failed",
"errors": [
"Invalid name: Invalid agent name: 'BadAgent'. Must start with lowercase letter...",
"Invalid version: Invalid version: '1.0'. Must follow semantic versioning...",
"Invalid reasoning_mode: Invalid reasoning_mode: 'hybrid'. Must be one of: iterative, oneshot",
"capabilities must contain at least one item",
"Skills not found in registry: nonexistent.skill"
],
"path": "agents/bad.agent/agent.yaml"
}
Agent Manifest (agents/api.analyzer/agent.yaml):
name: api.analyzer
version: 0.1.0
description: "Analyze API specifications for compatibility"
capabilities:
- Detect breaking changes between API versions
- Generate compatibility reports
- Suggest migration paths
skills_available:
- api.compatibility
reasoning_mode: oneshot
output:
success:
- Compatibility report
- Breaking changes list
failure:
- Error analysis
status: active
tags:
- api
- analysis
- compatibility
Command:
python skills/agent.define/agent_define.py agents/api.analyzer/agent.yaml
Result: Agent validated and registered successfully.
The skill automatically updates /registry/agents.json:
{
"registry_version": "1.0.0",
"generated_at": "2025-10-23T10:30:00Z",
"agents": [
{
"name": "api.designer",
"version": "0.1.0",
"description": "Design RESTful APIs following enterprise guidelines",
"reasoning_mode": "iterative",
"skills_available": ["api.define", "api.validate", "api.generate-models"],
"capabilities": ["Design RESTful APIs from requirements", ...],
"status": "draft",
"tags": ["api", "design", "openapi"],
"dependencies": []
}
]
}
skill.define (for skill registry validation)command.define skill (to register commands that invoke agents)workflow.compose (agents orchestrate skills; workflows execute fixed sequences)Error:
Skills not found in registry: api.nonexistent, data.missing
Solution: Ensure all skills in skills_available are registered in /registry/skills.json. Check skill names for typos.
Error:
Invalid reasoning_mode: 'hybrid'. Must be one of: iterative, oneshot
Solution: Use iterative for agents that retry with feedback, or oneshot for deterministic execution.
Error:
capabilities must contain at least one item
Solution: Add at least one capability string describing what the agent can do.
Error:
Invalid agent name: 'API-Designer'. Must start with lowercase letter...
Solution: Use lowercase names following pattern <domain>.<action> (e.g., api.designer).
Create test agent manifests in /agents/test/:
# Create test directory
mkdir -p agents/test.agent
# Create minimal test manifest
cat > agents/test.agent/agent.yaml << EOF
name: test.agent
version: 0.1.0
description: "Test agent"
capabilities:
- Test capability
skills_available:
- skill.define
reasoning_mode: oneshot
status: draft
EOF
# Validate
python skills/agent.define/agent_define.py agents/test.agent/agent.yaml
/registry/skills.json (read for validation)/registry/agents.json (updated by this skill)/agents/README.md - Agent directory documentation