This skill assumes a text editor and nothing else. No MCP server, no
skill-fetching tool, no work-plan store, no build. If those exist they are not yours to rely
on yet — see AGENTS.md.
That constraint is the reason this skill exists rather than a pointer to the harness's own navigation tooling: an agent here may have no connected server, and a bootstrap that required one would fail in exactly the cold-start case it exists for.
Three facts carry the whole model, and every one of them is checkable by reading:
$schema.id, never its path. Matching on path turns one relocated
graph into two, and every consumer then scans a directory that is not there.Two more words you will meet in a declaration. A field this skill does not describe is an Extension: a Harness added it, and you ignore it. A Harness's own kind of declaration, which requires everything bootstrap's does and adds Extensions, is a Subkind of bootstrap's: read it as bootstrap's, and it still means what it says.
Versions and addresses. A declaration may state its version
(MAJOR.MINOR.PATCH) and an iriBase. Every identifier it mints is then
<iriBase><version>/…, which pins exactly, and a page meant for a person is
<iriBase>v<major>/…. Bootstrap's own are in its declaration; read them
there rather than trusting a copy.
graphTypologies name the kind you want. In
bootstrap they are named for what they hold: skills, processes,
scenarios (the Roles) and schemas. The entry's path is relative to
the declaration.name: and
description: in front matter is a skill — its body is the instruction
you were looking for. A file declaring $schema: is stating that it is
something else, and is not a skill however it is named.An absent declaration and an unreadable one are different, and collapsing them is the mistake this section exists to prevent:
| what you found | what it means | what to do |
|---|---|---|
| no declaration | not an instance yet | this is bootstrap's case — continue |
| a declaration that will not parse | an instance asserting something broken | stop and say so; do not fall back |
| a declared directory that is not there | the declaration is wrong | stop and say so — scanning nothing and reporting a clean run is the defect |
| no declaration for a kind you want | this instance has none of it | that is an answer, not a failure |
A declared-but-absent directory is the one to be loudest about. Every consumer that scans it finds nothing and reports success, so the failure is silent and looks exactly like a clean result.
It does not describe what a Harness above bootstrap holds, such as its content or its checks. Those are concepts of the Harness you have not loaded yet, and a description of them here would be a second one, free to disagree with the first.
If you find yourself needing one of them to finish bootstrap, that is a sign the boundary is in the wrong place — say so rather than importing the definition.