style(skills): align SKILL.md table separators
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user