akw-factory-floorsfloors.akwlabs.com · ga

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

  1. Declare. capabilities.json beside each SKILL.md, names drawn from a closed vocabulary so Outreach the tool and outreach the noun cannot occupy one string.
  2. 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.
  3. 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.


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.