npx claudepluginhub joshuarweaver/cascade-code-general-misc-1 --plugin epieczko-bettyThis skill uses the workspace's default tool permissions.
Enforces policy rules for skill and agent manifests including naming conventions, semantic versioning, permissions validation, and status lifecycle checks.
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.
Enforces policy rules for skill and agent manifests including naming conventions, semantic versioning, permissions validation, and status lifecycle checks.
The policy.enforce skill validates skill and agent manifests against Betty Framework policy rules to ensure consistency and compliance across the framework. It supports both single-file validation and batch mode for scanning all manifests.
api.define, workflow.compose)Valid Examples:
api.definepolicy.enforceskill.createInvalid Examples:
API.define (uppercase)api_define (underscore)api define (space)api-define (hyphen)MAJOR.MINOR.PATCH1.0.0-alpha)Valid Examples:
0.1.01.0.02.3.1-betaInvalid Examples:
1.0 (missing patch)v1.0.0 (prefix not allowed)1.0.0.0 (too many segments)Only the following permissions are allowed:
filesystem (or scoped: filesystem:read, filesystem:write)network (or scoped: network:http, network:https)readwriteAny other permissions will trigger a violation.
Must be one of:
draft - Under developmentactive - Production readydeprecated - Still works but not recommendedarchived - No longer maintainedValidate a single skill or agent manifest:
python3 skills/policy.enforce/policy_enforce.py path/to/skill.yaml
Example:
python3 skills/policy.enforce/policy_enforce.py skills/api.define/skill.yaml
Validate all manifests in skills/ and agents/ directories:
python3 skills/policy.enforce/policy_enforce.py --batch
Or simply run without arguments:
python3 skills/policy.enforce/policy_enforce.py
Treat warnings as errors (if warnings are implemented in future):
python3 skills/policy.enforce/policy_enforce.py --batch --strict
The skill outputs JSON with the following structure:
{
"success": true,
"path": "skills/api.define/skill.yaml",
"manifest_type": "skill",
"violations": [],
"violation_count": 0,
"message": "All policy checks passed"
}
{
"success": false,
"path": "skills/example/skill.yaml",
"manifest_type": "skill",
"violations": [
{
"field": "name",
"rule": "naming_convention",
"message": "Name contains uppercase letters: 'API.define'. Names must be lowercase.",
"severity": "error"
},
{
"field": "version",
"rule": "semantic_versioning",
"message": "Invalid version: '1.0'. Must follow semantic versioning (e.g., 1.0.0, 0.1.0-alpha)",
"severity": "error"
}
],
"violation_count": 2,
"message": "Found 2 policy violation(s)"
}
{
"success": true,
"mode": "batch",
"message": "Validated 15 manifest(s): 15 passed, 0 failed",
"total_manifests": 15,
"passed": 15,
"failed": 0,
"results": [
{
"success": true,
"path": "skills/api.define/skill.yaml",
"manifest_type": "skill",
"violations": [],
"violation_count": 0,
"message": "All policy checks passed"
}
]
}
0 - All policy checks passed1 - One or more policy violations founderror - Blocking violation that must be fixedwarning - Non-blocking issue (recommended to fix)Naming Convention Violations:
API.define → api.defineapi_define → api.defineapi define → api.defineVersion Violations:
1.0 → 1.0.0v1.0.0 → 1.0.0Permission Violations:
http with network:httpfile with filesystemStatus Violations:
Active → activeproduction → activeAdd to your CI pipeline to enforce policies on all manifests:
# .github/workflows/policy-check.yml
name: Policy Enforcement
on: [push, pull_request]
jobs:
policy-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run Policy Enforcement
run: |
python3 skills/policy.enforce/policy_enforce.py --batch
| Input | Type | Required | Default | Description |
|---|---|---|---|---|
manifest_path | string | No | - | Path to a single manifest file to validate |
--batch | boolean | No | false | Enable batch mode to validate all manifests |
--strict | boolean | No | false | Treat warnings as errors |
| Output | Type | Description |
|---|---|---|
success | boolean | Whether all policy checks passed |
violations | array | List of policy violations found |
violation_count | integer | Total number of violations |
message | string | Summary message |
path | string | Path to the validated manifest (single mode) |
manifest_type | string | Type of manifest: "skill" or "agent" (single mode) |
total_manifests | integer | Total number of manifests checked (batch mode) |
passed | integer | Number of manifests that passed (batch mode) |
failed | integer | Number of manifests that failed (batch mode) |
results | array | Individual results for each manifest (batch mode) |
betty.config - Configuration and pathsbetty.validation - Validation utilitiesbetty.logging_utils - Logging infrastructureActive - Production ready
$ python3 skills/policy.enforce/policy_enforce.py skills/api.define/skill.yaml
{
"success": true,
"path": "skills/api.define/skill.yaml",
"manifest_type": "skill",
"violations": [],
"violation_count": 0,
"message": "All policy checks passed"
}
$ python3 skills/policy.enforce/policy_enforce.py --batch
{
"success": true,
"mode": "batch",
"message": "Validated 15 manifest(s): 15 passed, 0 failed",
"total_manifests": 15,
"passed": 15,
"failed": 0,
"results": [...]
}
$ python3 skills/policy.enforce/policy_enforce.py skills/bad-example/skill.yaml
{
"success": false,
"path": "skills/bad-example/skill.yaml",
"manifest_type": "skill",
"violations": [
{
"field": "name",
"rule": "naming_convention",
"message": "Name contains uppercase letters: 'Bad-Example'. Names must be lowercase.",
"severity": "error"
}
],
"violation_count": 1,
"message": "Found 1 policy violation(s)"
}
$ echo $?
1