Comparative Analysis
This document provides a comprehensive critical comparison between the local polyglot enterprise skills implementation (Castor) and the open Agent Skills Specification, the Client Implementation Guide, and ecosystem clients listed on Agent Skills Clients.
The Castor repository provides a multi-language (Python 3.13, Go 1.26+, Java 17+) enterprise framework for building, loading, validating, registering, and serving AI agent skills compatible with Google Agent Development Kit (ADK) agents.
- Polyglot Skill Loaders & Native Build Plugins: 1:1 functional parity across Python (
loader.py/loader.build_meta), Go (loader.go), and Java (SkillLoader.java/GenerateManifestMojo.java). - Multi-Source URI Resolution: Supports
castor://,cstr://(central enterprise server),github://(remote git trees and zipballs),mod://(Go modules),maven://(Java Maven artifacts),pkg://(workspace runfile packages), andfile://(local paths). - Enterprise Registration Lifecycle (
cstr register): CLI client (cstr) registers source skills to centralCastor Registry(cmd/castor_server), auto-assigning canonicalcastor://skills/{domain}/{category}/{name}/{version}URIs. - Zero-I/O Pre-compiled Manifests: Pre-processes skill registries into
skills_manifest.jsonfor instant cold starts in serverless or containerized environments. - 5-Point SDLC Quality Gate: Automated security auditor (
validator.go/SkillAuditor.java) enforcing frontmatter rules, L3 directory structures, CWE security checkpoints, HTTP 429 rate-limit resilience, and markdown file scheme links. - Just-in-Time (JIT) Semantic Discovery: Replaces static registry loading with RAG-MCP semantic tool retrieval to eliminate LLM context bloat.
- Human-in-the-Loop (HITL) Architecture: Implements tiered intervention gates and explicit compliance validation components to guarantee Agent-Human Interaction (AHI) safety.
| Specification Dimension | agentskills.io Standard |
Local Castor Implementation |
Compliance Status |
|---|---|---|---|
| Parent Directory Name | Lowercase alphanumeric + hyphens (1-64 chars). Must match name field in SKILL.md. |
Validated strictly in validator.go via regex ^[a-z0-9]+(-[a-z0-9]+)*$. |
100% Compliant |
| Description Constraints | Required, non-empty, 1-1024 characters. | Enforced in all loaders and validated by auditor. | 100% Compliant |
| Frontmatter Format | Standard YAML bounded by --- delimiters. |
Parsed via YAML engine (SnakeYAML / gopkg.in/yaml.v3 / PyYAML) with line-by-line fallback. |
100% Compliant |
Allowed Tools (allowed-tools) |
Optional space-separated string of pre-approved tools (e.g. Bash(git:*) Read). |
Extracted into SkillDefinition.allowed_tools across Python, Go, and Java. |
100% Compliant |
| Custom Metadata | Arbitrary key-value mapping under metadata:. |
Supports top-level and nested metadata: keys, exposing author and version seamlessly. |
100% Compliant |
| Directory Conventions | SKILL.md (Required), scripts/, references/, assets/ (Optional). |
Fully supported, with enterprise extension for structured examples/ directories. |
Extended / Compliant |
- Spec Recommendation: Scan project-level (
<project>/.agents/skills/) and user-level (~/.agents/skills/) scopes, as well as native client directories. - Local Implementation:
- Automatically walks Bazel runfiles (
BUILD_WORKSPACE_DIRECTORY,TEST_SRCDIR), workspace packages, and rootskills/. - Includes standard cross-client
.agents/skills/directories at both project root (<root>/.agents/skills) and user home (~/.agents/skills). - Extends discovery with qualified URI parsing (
castor://,cstr://,github://,mod://,maven://,pkg://,file://).
- Automatically walks Bazel runfiles (
- Tier 1 (Catalog): High-level
SkillSummary(name,description,path, reference/example counts) loaded at startup. - Tier 3 (Resources): Deferred on-demand loading of supporting files in
references/andexamples/.- Enhancement: Added
get_reference_content(name)andget_example_content(name)methods across Python (types.py), Go (types.go), and Java (SkillDefinition.java).
- Enhancement: Added
- ADK Agent Integration:
- Google ADK Agents wrap skills in domain toolsets.
- Model calls
list_skills(),get_skill_details(),search_skills(), orgenerate_guidance()to query skills dynamically. - Formats activated skill guidance with explicit Markdown file links.
- Rate-Limit Resilience: Implements exponential backoff with randomized jitter (
retry_with_jitter) for HTTP 429 quota resilience. - Deduplication: Active skills are deduplicated by unique
namebefore synthesizing LLM reasoning prompts.
| Client | Implementation Language | Scope & Discovery | Remote / Registry Capabilities | Quality Verification |
|---|---|---|---|---|
| Claude Code | TypeScript / Node.js | .claude/skills/, .agents/skills/ |
Local & plugin system | Built-in tool permission prompts |
| Gemini CLI | Go | .gemini/skills/, ~/.gemini/skills/ |
Local filesystem | CLI prompt confirmation |
| Roo Code / OpenHands | TypeScript / Python | Workspace .vscode/ & repo roots |
Git & Docker sandboxing | Workspace permission prompts |
| Spring AI | Java (Spring Framework) | Classpath & Spring bean registry | Maven / Gradle dependencies | Framework bean validation |
Castor (Local) |
Python, Go, Java (Polyglot) | Bazel runfiles, packages, .agents/skills |
castor://, github://, mod://, maven://, pkg://, file:// |
Automated 5-Point SDLC Auditor & Native Build Plugins |
All identified recommendations have been fully implemented across Python, Go, and Java loader suites, supported by comprehensive unit and integration tests:
castor:///cstr://Central Server Integration: Full support for central server registration and canonical URI resolution.- Native Build System Hooks:
castor-clientfor Java Maven,castor_client.build_metaPEP 517 hook for Pythonuv, and//go:generatedirectives for Go. - Property Management: Native support for TOML configuration (
modenvin Go), environment loading (dotenvin Python), and JVM System properties (System.getPropertyin Java).
# All workspace Hermetic Bazel test suites passing:
bazel test //...