Capabilities
What each skill needs from outside itself, declared rather than described.
Why this exists
These skills describe their dependencies in prose. Fifteen of them carry a two-tier model in an ASCII box — ALWAYS (works standalone) above SUPERCHARGED (when you connect your tools) — and nothing reads it. The consequences are measurable rather than theoretical:
| Measured 2026-09-02 | |
|---|---|
| Skills across the populated floors | 92 |
| Skills describing a two-tier model in prose | 15 |
| Most-mentioned "integration" by case-insensitive grep | outreach, 15 hits — all of them the English noun |
| Next, tied | Snowflake 15, Figma 15 |
box, 11 hits |
mostly Box plot, a chart type |
A grep cannot separate a tool called Outreach from the sentence "before outreach", so the question which connectors does the sales floor need? has no mechanical answer. Worse, the two-tier model means a skill silently produces a different, smaller answer when a connector is missing, and the output looks the same either way.
The three parts
- Declare.
capabilities.jsonbeside eachSKILL.md, names drawn from a closed vocabulary soOutreachthe tool andoutreachthe noun cannot occupy one string. - Decide. A pure, total function from (declared, observed) to one of four verdicts. Same inputs, same verdict — the determinism prose could not offer, because prose branches in the reader.
- Disclose. A degraded run owes a sentence naming what is missing and what the answer therefore does not contain. That sentence is a value the caller prints, not a paragraph the caller may have read.
| Verdict | Means | Runs? |
|---|---|---|
ready |
everything declared is present | yes |
degraded |
all required present, some enriching absent | yes, and it must say so |
refused |
a required capability is demonstrably absent | no — throws |
indeterminate |
presence was never established | no — throws, remedy is to probe |
The tier is not our invention
academy.claude.com badges each connector on a use-case page required-or-Optional. Joining
name to badge across the 57 pages that carry a Connect your tools section gives Google
Drive 24 required against 11 optional, Slack 18 against 3, GitHub 6 against 4. The same
connector genuinely sits in both tiers depending on the task — which is why the tier belongs
to the skill's declaration and not to the connector.
What is declared
| Floor | Skill | Required | Enriching |
|---|---|---|---|
sales |
account-research | WebSearch |
Apollo, Salesforce / HubSpot |
sales |
call-prep | WebSearch |
Salesforce / HubSpot, Gmail / Microsoft 365, Google Calendar, Slack, Gong |
sales |
draft-outreach | WebSearch |
Apollo, Salesforce / HubSpot |
sales |
forecast | Read |
Salesforce / HubSpot |
sales |
pipeline-review | Read |
Salesforce / HubSpot, Google Calendar |
What each capability is used for
| Capability | Kind | Tier | Declared by |
|---|---|---|---|
Apollo |
connector | enriching | sales/account-research, sales/draft-outreach |
Gmail |
connector | enriching | sales/call-prep |
Gong |
connector | enriching | sales/call-prep |
Google Calendar |
connector | enriching | sales/call-prep, sales/pipeline-review |
Read |
tool | required | sales/forecast, sales/pipeline-review |
Salesforce |
connector | enriching | sales/account-research, sales/call-prep, sales/draft-outreach, sales/forecast, sales/pipeline-review |
Slack |
connector | enriching | sales/call-prep |
WebSearch |
tool | required | sales/account-research, sales/call-prep, sales/draft-outreach |
Not yet declared
87 skills. An absent capabilities.json is not the same as an empty
one: empty needs is a claim that the skill reaches for nothing outside itself, while
absent means nobody has said. Conflating them would have reported this repository as
fully declared on the day the feature landed.
customer-support— customer-escalation, customer-research, draft-response, kb-article, ticket-triagedata— analyze, build-dashboard, create-viz, data-context-extractor, data-visualization, explore-data, sql-queries, statistical-analysis, validate-data, write-querydesign— accessibility-review, design-critique, design-handoff, design-system, research-synthesis, user-research, ux-copyengineering— architecture, code-review, debug, deploy-checklist, documentation, incident-response, standup, system-design, tech-debt, testing-strategyfinance— audit-support, close-management, financial-statements, journal-entry, journal-entry-prep, reconciliation, sox-testing, variance-analysishuman-resources— comp-analysis, draft-offer, interview-prep, onboarding, org-planning, people-report, performance-review, policy-lookup, recruiting-pipelinelegal— brief, compliance-check, legal-response, legal-risk-assessment, meeting-briefing, review-contract, signature-request, triage-nda, vendor-checkmarketing— brand-review, campaign-plan, competitive-brief, content-creation, draft-content, email-sequence, performance-report, seo-auditoperations— capacity-plan, change-request, compliance-tracking, process-doc, process-optimization, risk-assessment, runbook, status-report, vendor-reviewproduct-management— competitive-brief, metrics-review, product-brainstorming, roadmap-update, sprint-planning, stakeholder-update, synthesize-research, write-specsales— call-summary, competitive-intelligence, create-an-asset, daily-briefing
The live view is a command, not a page: npm run capability:status reads
caches/capabilities.json and prints a verdict per declared skill. It is deliberately not
committed — a probe describes the machine that ran it, so a committed verdict would fail this
gate on every other machine for a true reading.