style(skills): align SKILL.md table separators

This commit is contained in:
Julien Calixte
2026-07-02 23:37:16 +02:00
parent 1ba85e3235
commit 7a60e57f46

View File

@@ -25,11 +25,11 @@ part — title block, legend, function tabs, the full-view Readout, the composit
map, and the state machine — from a blueprint's **typed data**. You author two
things per blueprint and register them:
| File | What it is |
| --- | --- |
| `src/data/<camel>Blueprint.ts` | the `Blueprint` object — the contract as typed data (see the `Blueprint` type in `src/data/blueprint.ts`) |
| `src/specimens/<Pascal>Specimen.vue` | the **bespoke** static visual mock (left pane), with per-function highlighting |
| `src/data/blueprints.ts` | one line registering the `{ blueprint, specimen }` pair under its slug |
| File | What it is |
| ------------------------------------ | --------------------------------------------------------------------------------------------------------- |
| `src/data/<camel>Blueprint.ts` | the `Blueprint` object — the contract as typed data (see the `Blueprint` type in `src/data/blueprint.ts`) |
| `src/specimens/<Pascal>Specimen.vue` | the **bespoke** static visual mock (left pane), with per-function highlighting |
| `src/data/blueprints.ts` | one line registering the `{ blueprint, specimen }` pair under its slug |
Registering in `blueprints.ts` is all that's needed — the Gallery (`/`) and the
route `/b/<slug>` both derive from the registry automatically. Do **not** hand-edit
@@ -44,12 +44,12 @@ the router or the Gallery.
Study the closest existing pair before you start — copy its shape, don't reinvent:
| Kind | Data module | Specimen | Notes |
| --- | --- | --- | --- |
| **Feature** (set) | `src/data/listBlueprint.ts` | `src/specimens/ListSpecimen.vue` | reuses the shared `LOADSTATE_MACHINE` (`src/data/loadStateMachine.ts`) |
| **Feature** (set) | `src/data/gridBlueprint.ts` | `src/specimens/GridSpecimen.vue` | 2D tile layout |
| **Feature** (temporal) | `src/data/calendarBlueprint.ts` | `src/specimens/CalendarSpecimen.vue` | annotates one surface per function |
| **Capability** | `src/data/rememberMeBlueprint.ts` | `src/specimens/RememberMeSpecimen.vue` | defines a **bespoke** state machine + new `SmKind`s |
| Kind | Data module | Specimen | Notes |
| ---------------------- | --------------------------------- | -------------------------------------- | ---------------------------------------------------------------------- |
| **Feature** (set) | `src/data/listBlueprint.ts` | `src/specimens/ListSpecimen.vue` | reuses the shared `LOADSTATE_MACHINE` (`src/data/loadStateMachine.ts`) |
| **Feature** (set) | `src/data/gridBlueprint.ts` | `src/specimens/GridSpecimen.vue` | 2D tile layout |
| **Feature** (temporal) | `src/data/calendarBlueprint.ts` | `src/specimens/CalendarSpecimen.vue` | annotates one surface per function |
| **Capability** | `src/data/rememberMeBlueprint.ts` | `src/specimens/RememberMeSpecimen.vue` | defines a **bespoke** state machine + new `SmKind`s |
## Workflow
@@ -67,20 +67,20 @@ The README anatomy is fixed: **Signature → UI snapshot → State machine → B
→ Invariants → Functional analysis → Critical performance → Failure modes → Formal
model**. Map it to the `Blueprint` type like this:
| README section | `Blueprint` field |
| --- | --- |
| `# Name<Item>` + intro one-liner | `name`, `tagline` |
| Signature / Standard composition | `sig` (`header`, `fields`, `types`), `role`, `extendsName`, `composesCount` |
| Relations | `related[]` (`{ name, relation }`) |
| UI snapshot (ASCII sketch) | informs the **Specimen** — not a data field |
| State machine | `stateMachine` — reuse `LOADSTATE_MACHINE` or author a bespoke one (see step 2) |
| Behaviors | distributed into `functions[].behaviors[]` (`{ sig, pre, eff }`) |
| Invariants → Core | top-level `coreInvariants[]` |
| Invariants → per-behavior | the owning `functions[].invariants[]` |
| Functional analysis (the table) | **`functions[]`** — one row = one `BlueprintFunction` |
| Critical performance | distributed into `functions[].perf[]` |
| Failure modes | distributed into `functions[].failures[]` |
| Formal model | rendered automatically from `slug` in the footer |
| README section | `Blueprint` field |
| -------------------------------- | ------------------------------------------------------------------------------- |
| `# Name<Item>` + intro one-liner | `name`, `tagline` |
| Signature / Standard composition | `sig` (`header`, `fields`, `types`), `role`, `extendsName`, `composesCount` |
| Relations | `related[]` (`{ name, relation }`) |
| UI snapshot (ASCII sketch) | informs the **Specimen** — not a data field |
| State machine | `stateMachine` — reuse `LOADSTATE_MACHINE` or author a bespoke one (see step 2) |
| Behaviors | distributed into `functions[].behaviors[]` (`{ sig, pre, eff }`) |
| Invariants → Core | top-level `coreInvariants[]` |
| Invariants → per-behavior | the owning `functions[].invariants[]` |
| Functional analysis (the table) | **`functions[]`** — one row = one `BlueprintFunction` |
| Critical performance | distributed into `functions[].perf[]` |
| Failure modes | distributed into `functions[].failures[]` |
| Formal model | rendered automatically from `slug` in the footer |
### 1 · Decide role and state-machine strategy