kinds
What sorts of thing the platform can talk about — kinds are declared data, capabilities are code, and nothing switches on a kind.
Skill by avaropoint
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/avaropoint-kinds
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: testing, data, writing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/kinds
What's inside
- Skill name
kinds- Description
- What sorts of thing the platform can talk about — kinds are declared data, capabilities are code, and nothing switches on a kind. Use when classifying content, relating one thing to another, scoring coverage, or adding a new sort of thing.
- License
- MIT
- Instructions
- 113 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Kinds and capabilities
`schemas/kinds.md` declares them. This skill is how to work with them.
## The one rule
**Never switch on a kind. Ask what it can do.**
if reg.Can(k, "chain-member") { ... } // right
switch kind { case "policy": ... } // wrong
A `switch` over kind names is a closed set written in the wrong place. Five
independent vocabularies grew that way and disagreed; `code` existed in three of
them and not the fourth, so the code the platform generated could not appear in
an evidence chain at all.
## Kinds are data, capabilities are code
| | | |
|---|---|---|
| Kinds | **open** | declared in `schemas/kinds.md`, extended freely |
| Capabilities | **closed** | each is a contract with an implementation |
**Adding a kind is declaring it** — no code changes, in any tool. **Adding a
capability is deliberate**, because something has to honour it. A capability
nothing implements is a label nothing consumes, which is worse than not offering
it: it looks like configuration and does nothing.
## There is no default
A kind either declares a capability or does not have it, and **not having it is
an answer**. An undeclared kind is representable, reported as undeclared, and
granted nothing.
This replaced three separate `default:` arms that placed unrecognised kinds into
an evidence chain — one as `standard`, one as `blueprint`, one as `reference`.
All three scored unknown documents as compliance.
## The two capabilities most often got wrong
`counts-as-coverage` and `opens-gap` are **separate**. A guideline has **neither**:
not following advice is not a finding, and following it is not compliance. One
"mandatory" flag cannot express that, and collapsing them is what let advisory
material be scored as standard-level evidence.
## Kinds specialise
`sop` specialises `procedure`; `blueprint` specialises `specification`. A
specialisation **adds** capabilities and never removes them, so logic written for
a parent applies to a child unchanged — ask for procedures and you get SOPs.
If a child needs to drop a capability, the parent was wrong.
## Classification
One implementation, from declared stems. **Directories outrank filenames** — a
directory says what kind of thing lives here, a filename says what this one is
about — and the **nearest directory wins**. So `patterns/policy.md` is a
blueprint about policy, and `standards/policies/acceptable-use.md` is a policy.
Nothing matching means `document`: **unclassified**, contributing nothing.
Content signals are the next-weakest evidence and are also declared — words and
weights in the schema, scoring in the tool.
## Relations
A relation is meaningful only between the kinds the schema pairs. One asserted
outside that table is a fault in the producer, not a new relation.
A declared target may name its kind — `implements: [control:iso_27001:A.5.15]`,
the control and the framework that declares it — because an
identifier alone cannot say what it is, and **guessing from its shape is how a
platform asserts something an author never said**. Unqualified means a blueprint,
as before; a prefix is a qualifier only when it names a declared kind, so a URL
is left whole. A bare `control:A.5.15` joins onto whichever framework answers first,
since a control id is unique only within its standard
([`schemas/kinds`](../../schemas/kinds.md#naming-a-targets-kind)).
## platform, provider, integration — three things, three words
One word was doing two jobs; this is the ambiguity the taxonomy exists to remove.
| | Answers | Examples |
|---|---|---|
| **platform** | where does this execute, and what does that offer? | Node, Cloudflare Workers |
| **provider** | whose service is this, and does its configuration satisfy our policy? | Microsoft 365, Google Workspace, AWS, Cloudflare |
| **integration** | what data crosses this boundary, under what contract? | the connection to any of them |
**`platform` is NOT a kind, and neither is `language`.** A platform is the
runtime a component is generated for — `platforms/node.md`,
`platforms/cloudflare.md`; a language is what its code is written in —
`languages/go.md`, `languages/rust.md`. `--platform` selects either today.
Nothing in `schemas/kinds.md` declares them; why the two are separate is
`languages/README.md`.
**One vendor may be both.** Cloudflare is a platform when you build Workers for
it and a provider when you govern the account. Two relationships with one
company, two questions — which is why they need two words.
**Display labels are not identifiers.** A view may head a column "Platforms"
over provider nodes if that is what its readers call them. The identifier is what
tools join on and must mean one thing.
## Adding a sort of thing
1. Declare it in `schemas/kinds.md` with its identity rule, origin and
capabilities.
2. Give it a `specializes` parent if an existing kind already describes most of
it.
3. Add stems if a path should classify into it.
4. Add it to the relation table wherever it may legitimately appear.
5. **Write no code.** If you needed to, a capability is missing — add that
instead, deliberately, with the implementation that honours it.From avaropoint/weblisk-blueprints, MIT.
More from avaropoint/weblisk-blueprints
- 0.587score
operators
avaropoint
Create and use a Weblisk operator identity with the CLI — which identity signs, where it lives, and what holds its private half.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
changes
avaropoint
How a tenant changes after it exists — adding a component such as the content service, deciding what rebuilds, and what must pass before a change is accepted.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
hubs
avaropoint
How to generate, run, and verify a Weblisk hub (the orchestrator a tenant runs).
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
tenants
avaropoint
Create and operate a Weblisk tenant with the CLI, and grow it past its first component.
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
go
avaropoint
Go-only facts for a tenant generated with --platform go — module layout and the two mux rules that panic at startup.
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
rust
avaropoint
Rust-only facts for a tenant generated with --platform rust — the Cargo workspace layout, the shared-crate rule, and the error and concurrency rules that fail…
SkillAFreshness: A★ 1Claude Code +9 - 0.547score
blueprints
avaropoint
How to read a Weblisk blueprint — declaration blocks, section forms, and which sentences bind.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
domains
avaropoint
Create and start a Weblisk domain controller with the CLI.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
gateways
avaropoint
Create and start the Weblisk application gateway with the CLI.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
agents
avaropoint
Create, start, and list Weblisk agents with the CLI.
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
node
avaropoint
Node-only facts for a tenant generated with --platform node — project layout, the module and routing rules that fail at startup, and how the process must shut…
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
cloudflare
avaropoint
Cloudflare-Workers-only facts for a tenant generated with --platform cloudflare — per-Worker layout, the zero-runtime-dependency rule, which storage binding…
SkillBFreshness: B★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Sep 28, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/avaropoint/weblisk-blueprints
- Website
- weblisk.dev
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from avaropoint
- 0.587score
operators
avaropoint
Create and use a Weblisk operator identity with the CLI — which identity signs, where it lives, and what holds its private half.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
changes
avaropoint
How a tenant changes after it exists — adding a component such as the content service, deciding what rebuilds, and what must pass before a change is accepted.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
hubs
avaropoint
How to generate, run, and verify a Weblisk hub (the orchestrator a tenant runs).
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
tenants
avaropoint
Create and operate a Weblisk tenant with the CLI, and grow it past its first component.
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
go
avaropoint
Go-only facts for a tenant generated with --platform go — module layout and the two mux rules that panic at startup.
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
rust
avaropoint
Rust-only facts for a tenant generated with --platform rust — the Cargo workspace layout, the shared-crate rule, and the error and concurrency rules that fail…
SkillAFreshness: A★ 1Claude Code +9
Cite this page
kinds skill. Agent Mart. https://agentmart.dev/skills/avaropoint-kinds (last updated 2026-10-24)