agent-capability

Add tools and capabilities to agents through the capability registry.

49|11|Updated Jul 31, 2026
One-click install
npx skills add https://github.com/vstorm-co/agenticos --skill agent-capability-vstorm-co
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: agent-capability
Source: https://github.com/vstorm-co/agenticos/tree/main/.claude/skills/agent-capability
Command: npx skills add https://github.com/vstorm-co/agenticos --skill agent-capability-vstorm-co

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Agents in this project are assembled per run from a capability registry, so there is no @agent.tool decorator or assistant module to extend. This Skill guides you through the only supported path for giving an agent a new tool, capability, guardrail, or approval gate without hitting the silent failure modes the registry makes possible. ## Core Features & Use Cases - Shape selection: Decide whether the ask needs a new tool in an existing capability, a new capability package, a behavior-only capability with no tools, an MCP connection with no code, or a per-agent tool_overrides rename. - Registry contract guidance: Covers every @register argument including tools, config_schema, side_effecting, scopes, conditional secrets, and provider_executed, plus the build function's ctx fields and returning None. - Failure-mode prevention: Explains the three silent failures (a tool missing from tools=, a module missing from load_builtins(), a changed id) and the house rules for tool docstrings and steer() instead of bare ModelRetry. - Use Case: You want the agent to call a new weather API. The Skill walks you through creating backend/app/agents/capabilities/weather/ with init.py, _capability.py, _toolset.py, and README.md, registering it in load_builtins(), and declaring a conditional SecretRequirement. ## Quick Start Ask the agent to add a new capability that gives agents a tool for looking up current weather by city name.

Frequently Asked Questions about agent-capability

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add a new tool to an agent in this project?▼

Add the tool to an existing capability's _toolset.py and its tools= tuple, or create a new capability package under backend/app/agents/capabilities/ with __init__.py, _capability.py, _toolset.py, and README.md. There is no @agent.tool decorator; every tool arrives through the capability registry.

When should I create a new capability versus adding to an existing one?▼

Add to an existing capability when the tool belongs to a decision somebody already makes. Create a new capability package for a genuinely new switch an agent author would want, or a behavior change with no tools, like the clock or thinking capabilities.

Why does my registered capability not appear in the Builder?▼

Registration is an import, not a scan, so the module must be added to load_builtins() in _registry.py. A @register call in a submodule only fires if something imports that module, which is how a capability vanishes with every test still green.

How does per-tool approval work with side_effecting capabilities?▼

Approval resolves most-specific first: tool_approval in the binding, then approval on the binding, then the capability's side_effecting flag. Use CapabilityToolInfo.side_effecting per tool when a capability both reads and writes, since marking the whole capability side-effecting forces approval even for read-only calls.

Why should tools use steer() instead of raising ModelRetry?▼

A tool call gets one retry attempt by default, and a ModelRetry raised past that budget ends the whole run with UnexpectedModelBehavior. The steer() helper from capabilities/_failures.py returns the message as a string on the last attempt, so a repeated malformed call cannot take down the conversation.

Can I connect a third-party SaaS tool without writing a capability?▼

Yes. If the service already publishes an MCP server, no code is needed; use the mcp-connections skill and docs/mcp.md instead. Note that MCP tools are discovered at run time and are not covered by the approval gate.