chiltepin 0.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +249 -0
  3. package/dist/bin.js +3582 -0
  4. package/dist/bin.js.map +1 -0
  5. package/package.json +93 -0
  6. package/templates/chiltepin.config.json +5 -0
  7. package/templates/demo.md +2161 -0
  8. package/templates/docs/getting-started.md +155 -0
  9. package/templates/docs/tutorial.md +559 -0
  10. package/templates/skill/SKILL.md +172 -0
  11. package/templates/skill/reference/blocks/INDEX.md +141 -0
  12. package/templates/skill/reference/blocks/agentic.md +63 -0
  13. package/templates/skill/reference/blocks/algorithms.md +49 -0
  14. package/templates/skill/reference/blocks/api.md +40 -0
  15. package/templates/skill/reference/blocks/architecture.md +94 -0
  16. package/templates/skill/reference/blocks/business.md +70 -0
  17. package/templates/skill/reference/blocks/charts-overviews.md +74 -0
  18. package/templates/skill/reference/blocks/data-model.md +34 -0
  19. package/templates/skill/reference/blocks/design-system.md +50 -0
  20. package/templates/skill/reference/blocks/flows.md +74 -0
  21. package/templates/skill/reference/blocks/narrative.md +65 -0
  22. package/templates/skill/reference/blocks/planning.md +74 -0
  23. package/templates/skill/reference/blocks/quality.md +43 -0
  24. package/templates/skill/reference/blocks/tables-data.md +55 -0
  25. package/templates/skill/reference/check.md +62 -0
  26. package/templates/skill/reference/decks.md +198 -0
  27. package/templates/skill/reference/exemplars/adr.md +87 -0
  28. package/templates/skill/reference/exemplars/agent-system.md +113 -0
  29. package/templates/skill/reference/exemplars/api-reference.md +110 -0
  30. package/templates/skill/reference/exemplars/backend-arch.md +117 -0
  31. package/templates/skill/reference/exemplars/data-pipeline.md +107 -0
  32. package/templates/skill/reference/exemplars/frontend-arch.md +93 -0
  33. package/templates/skill/reference/exemplars/incident-postmortem.md +93 -0
  34. package/templates/skill/reference/exemplars/migration-plan.md +95 -0
  35. package/templates/skill/reference/exemplars/onboarding.md +78 -0
  36. package/templates/skill/reference/exemplars/product-spec.md +81 -0
  37. package/templates/skill/reference/intake.md +140 -0
  38. package/templates/skill/reference/mermaid.md +216 -0
  39. package/templates/skill/reference/organizing.md +118 -0
  40. package/templates/skill/reference/patterns-design.md +59 -0
  41. package/templates/skill/reference/patterns.md +167 -0
  42. package/templates/skill/reference/recipes.md +153 -0
  43. package/templates/skill/reference/style-ste.md +119 -0
  44. package/templates/skill/reference/system-design.md +161 -0
  45. package/templates/skill/reference/writing.md +132 -0
@@ -0,0 +1,74 @@
1
+ # Chiltepin blocks — Charts & overviews
2
+
3
+ Part of the **chiltepin** skill (the hub is `SKILL.md`, two folders up).
4
+ Run `chiltepin block <type>` for the fields and an example; block → family map:
5
+ `INDEX.md`. Schemas reject unknown fields.
6
+
7
+ **Shape**: the widest family. Time (`chart`, `gantt`, `journey`, `slopegraph`);
8
+ Grid (`heatmap`, `quadrant`); Flow (`sankey`); Containment (`treemap`, `venn`);
9
+ Network (`graph`, `mindmap`); hierarchy and proportion (`tree`, `pyramid`,
10
+ `chart` kinds); causes behind one outcome (`fishbone`).
11
+ **Answers**: What changes over time? How does the whole split? Where does the
12
+ volume go? Where do items sit on two axes? What causes this?
13
+ **Not this family**: one headline number → `bignumber`; a few KPIs with
14
+ trends → `stats`; exact values → `table`; boundaries → architecture.md.
15
+
16
+ #### `graph` — node-link graph
17
+ Nodes and edges on a grid, no nesting; `weight` renders on the edge pill.
18
+ Answers: what connects to what? For BFS / DFS / Dijkstra walkthroughs set node
19
+ `state` (visited, current, frontier, target). `graph`, not `flow`, with no start or end.
20
+ #### `tree` — indented hierarchy (HTML, not SVG)
21
+ Nodes by `parent`. Plain: an indented outline. `variant: issue`: a MECE issue
22
+ tree, left to right. `variant: org`: a top-down org chart with `role` under each
23
+ name; more than 6 reports stack in two columns. `value` on nodes makes a driver
24
+ tree: each node shows its number and its share of its parent. Answers: how does
25
+ this break down? `tree`, not `bintree`, for hierarchies; `fishbone` for causes.
26
+ #### `mindmap` — radial idea map
27
+ One `center`, branches right and left, children on each, `accent` per branch.
28
+ Answers: what belongs to this topic? `tree` for a directed hierarchy; `fishbone` for causes.
29
+ #### `gantt` — schedule bars
30
+ Task bars across named periods, tinted by `kind`. Answers: what runs when?
31
+ `gantt`, not `timeline`, when bars span periods.
32
+ #### `chart` — a data chart (bar / stacked / line / area / scatter / donut / pie / gauge / radar / waterfall / funnel / pareto / histogram / bell / boxplot / bullet)
33
+ `labels` + `series` drive bar, stacked, line, area, radar, and category
34
+ scatter; `items` drive donut, pie, gauge, waterfall, funnel, pareto; `points` drive a
35
+ numeric scatter with `guides`; `values` drive histogram and bell (or give
36
+ `mean` + `sd` and `markers`); `boxes` drive boxplot; `bullets` drive bullet. Answers: how does the number move or split?
37
+ Pick the kind by the question: stacked when the total matters as much as the
38
+ split; gauge for one number against a ceiling; donut for a whole that sums;
39
+ waterfall for parts against a `budget`; funnel for drop-off between ordered
40
+ stages; radar needs 3+ labels; pareto for the few causes behind most of the
41
+ effect (80% rule drawn); histogram for how raw values spread; bell for a normal
42
+ curve with named points; boxplot to compare spreads; bullet for a measure vs a target.
43
+ #### `sankey` — how much moves between stages
44
+ Node height and ribbon width share one scale; nodes are inferred from the links.
45
+ Answers: where does the volume go? Declare `nodes` only for a label, an accent, or
46
+ a pinned `col`. `sankey` for volumes; `flow` for the path; funnel `chart` for drop-off.
47
+ #### `treemap` — proportional composition
48
+ Squarified tiles, area = value, biggest first. Answers: what dominates the whole? `treemap`, not donut, past six slices.
49
+ #### `venn` — two or three overlapping sets
50
+ Fixed circles; `shared.sets` names set labels and puts a label in that lens.
51
+ Answers: what do two groups share? A Venn names regions; it never measures.
52
+ #### `fishbone` — cause & effect (Ishikawa)
53
+ One effect at the head, cause categories as bones, specific causes along each
54
+ bone. Keep 1–8 bones and up to 8 short items per bone. Answers: what causes
55
+ this? `fishbone`, not `tree`, for suspected causes behind one outcome.
56
+ #### `slopegraph` — ranked before / after
57
+ One line per item between two value columns on a shared linear scale; crossings
58
+ are the story. Quote `left` / `right` years. Give `accent` to the one or two lines
59
+ that matter. Answers: what rose, what fell, what held? `slopegraph` for many items
60
+ at two points; `chart` line for a few series over many points.
61
+ #### `heatmap` — a numeric grid with an intensity ramp
62
+ Cells tinted light-to-deep on one ramp, normalised to the data (or `min` /
63
+ `max`). Answers: where is it hot? `heatmap` for a dense value grid; `matrix`
64
+ for categorical cells; `table` when the reader needs exact rows.
65
+ #### `pyramid` — stacked hierarchy (top → bottom widening)
66
+ Levels that widen downward, each with a description. Answers: what rests on
67
+ what? `pyramid`, not `layers`, when the widening shape is the message.
68
+ #### `quadrant` — 2×2 matrix
69
+ Items plotted at `x` / `y` (0–1) on two labelled axes. Answers: where does each
70
+ item sit? `quadrant` for placement by judgement; scatter `chart` with `points` for data.
71
+ #### `journey` — user journey map with optional emotion curve
72
+ Stages across the top, rows of cells beneath, an optional emotion curve (0–1 per
73
+ stage). Answers: what does the user experience at each stage? `journey` for
74
+ experience; funnel `chart` for drop-off numbers; `storymap` for scope per activity.
@@ -0,0 +1,34 @@
1
+ # Chiltepin blocks — Data model
2
+
3
+ Part of the **chiltepin** skill (the hub is `SKILL.md`, two folders up).
4
+ Run `chiltepin block <type>` for the fields and an example; block → family map:
5
+ `INDEX.md`. Schemas reject unknown fields.
6
+
7
+ **Shape**: Network — entities joined by cardinality edges, no nesting
8
+ (`erd`).
9
+ **Answers**: What shape is the data at rest, and how do the entities relate?
10
+ **Not this family**: data in motion → `dfd` (flows.md) or `sankey`
11
+ (charts-overviews.md); classes with behavior → `uml` (architecture.md);
12
+ example rows the reader should scan → `table` (tables-data.md).
13
+
14
+ ### Data model
15
+
16
+ #### `erd` — entities and relations
17
+ Entity cards with columns and key markers, joined by crow's-foot edges. The
18
+ renderer centres the aggregate root (the "one" side of most relations), fans
19
+ neighbours out by relation depth, and never truncates a card.
20
+ Answers: what shape is the data at rest, and how do the entities relate?
21
+ Write columns and relations in the terse forms. Use `fromCol` / `toCol` only
22
+ when the FK cannot be inferred from `ref` or the column name. `schema` on an
23
+ entity, or `groups`, draws a panel around the entities that share it.
24
+ Budget: 20 entities or 60 columns per block; `chiltepin check` warns past that.
25
+ Split the model by domain.
26
+ `erd`, not `uml`, for data at rest; `uml` for classes with behaviour; `dfd`
27
+ for data in motion.
28
+
29
+ ### Other ways to write it
30
+
31
+ A ` ```dbml ` or ` ```prisma ` fence, or a ` ```mermaid ` fence with
32
+ `erDiagram`, parses into an `erd`. `chiltepin sync sql schema.sql --out
33
+ docs/data-model.md` (or `sync dbml` / `sync prisma`) converts a schema file.
34
+ The dialect subsets are in `reference/mermaid.md` (Input dialects).
@@ -0,0 +1,50 @@
1
+ # Chiltepin blocks — Design system & UI mockups
2
+
3
+ Part of the **chiltepin** skill (the hub is `SKILL.md`, two folders up).
4
+ Run `chiltepin block <type>` for the fields and an example; block → family map:
5
+ `INDEX.md`. Schemas reject unknown fields.
6
+
7
+ **Shape**: Structure & emphasis — token specimens, usage rules, and low-fi
8
+ screens (`palette`, `typescale`, `dodont`, `inventory`, `wireframe`).
9
+ **Answers**: What does the UI look like before it exists? What tokens and
10
+ styles exist, and what does correct use look like?
11
+ **Not this family**: a real screenshot → `figure` (narrative.md); the
12
+ component tree → `frontend` (architecture.md); component code → `code`
13
+ (tables-data.md); shipped history → `changelog` (planning.md).
14
+
15
+ ### Design system
16
+
17
+ #### `palette` — color-token swatches
18
+ A card grid of swatches: the hex in mono, the token name, its usage. Text
19
+ contrast on each swatch is automatic. Answers: which colour tokens exist,
20
+ and what is each for? Always quote hex values (`"#0E54A1"`): an unquoted
21
+ `#` starts a YAML comment. An invalid colour falls back to gray.
22
+ `palette` for colour tokens; `stats` for numbers.
23
+
24
+ #### `typescale` — a live type specimen
25
+ One row per style; the sample text renders live at that size, weight, and
26
+ font. Answers: what does each text style look like?
27
+ Sizes over 64px render clamped at 64 but keep the true label.
28
+ `typescale` when the visual matters; `table` for a token list with no visual
29
+ payoff.
30
+
31
+ #### `dodont` — do / don't guideline cards
32
+ Two cards side by side, DO green and DON'T red; both lists are required.
33
+ Answers: what does correct use look like? An item's `example` renders
34
+ beneath it as a mono chip, good for label copy.
35
+ `dodont` for usage rules; `proscons` to weigh a decision; `callout` for one
36
+ warning.
37
+
38
+ #### `inventory` — component / feature status board
39
+ Hairline rows, each with a name, a tag chip, an optional note, and a
40
+ colour-coded maturity chip. Answers: how mature is each component?
41
+ `inventory` for maturity; `statustable` for task work; `changelog` for
42
+ shipped history.
43
+
44
+ #### `wireframe` — low-fi screen mockups (desktop / browser / phone)
45
+ Device frames left to right, each a top-to-bottom stack of gray elements.
46
+ Answers: what does the UI look like before it exists?
47
+ `nav` and `tabs` read their items from a comma-separated `label`; quote it.
48
+ `rows` repeats a list or card and sizes text or a spacer.
49
+ Keep it low fidelity: a wireframe, not a comp. `figure` for a real
50
+ screenshot; `frontend` for the component tree.
@@ -0,0 +1,74 @@
1
+ # Chiltepin blocks — Flows, sequences & state
2
+
3
+ Part of the **chiltepin** skill (the hub is `SKILL.md`, two folders up).
4
+ Run `chiltepin block <type>` for the fields and an example; block → family map:
5
+ `INDEX.md`. Schemas reject unknown fields.
6
+
7
+ **Shape**: Exchange — actors trading messages over time (`sequence`) and one
8
+ request's time split across services (`spans`); Flow — steps and branches
9
+ through a graph (`flow`, `dfd`, `swimlane`, `cycle`, `gitgraph`, `saga`);
10
+ Modes — one object, discrete states (`state`); plus one Structure block for
11
+ linear procedures (`steps`).
12
+ **Answers**: What calls what, in what order? What happens when this fails?
13
+ What states can it be in? What are the exact steps?
14
+ **Not this family**: topology at rest → `c4` / `block` (architecture.md) or
15
+ `graph` (charts-overviews.md); how much moves → `sankey` (charts-overviews.md);
16
+ tasks with owner and status → `statustable` (planning.md).
17
+
18
+ #### `sequence` — interaction over time (rich SVG + step list + footer)
19
+ Lifelines, numbered arrows, frames, activation bars, a step list under the SVG.
20
+ Answers: who calls whom, in what order? `sequence`, not `flow`, when the question
21
+ is message order between actors. Short `label` on the arrow; detail in `summary`.
22
+ `kind: note` is a box, not a message. Close every frame with `end` (`W_SEQ_FRAME`).
23
+ Activation: `-> +B` opens a bar on B; `--> -A` closes the SENDER's bar. Only the
24
+ first `-` closes, so inside an `alt` put the sign on the LAST branch's reply.
25
+ #### `spans` — distributed-trace waterfall (where did the time go?)
26
+ One lane per service, one bar per span on a shared time axis, nested by `parent`;
27
+ the critical path takes the accent. Bars sit exactly where the span ran. Answers:
28
+ how long did each call take, and which one did the response wait on? One request
29
+ per block; the density check warns past 40 spans. `sequence` for order, not duration.
30
+ #### `state` — state machine (+ transition table)
31
+ States on a grid joined by event arrows, plus a transition table. Answers: what
32
+ states can it be in, and what moves it? Give it one `kind: start` state and mark
33
+ `terminal` states. `state`, not `flow`, for one object's discrete modes.
34
+ #### `flow` — flowchart with decisions
35
+ Start, process, decision, and end nodes with labelled edges; `variant: dag`
36
+ frames it as a pipeline. Answers: what happens next, and what if the check
37
+ fails? Flows run across, not down: the main path on `col` 1, 2, 3, branches
38
+ on `row: 2`. Omit `col`/`row` for auto-layout (`dir: TB` works only there).
39
+ A label that starts with no / fail / error / reject renders red. `groups`
40
+ draw dashed zones over cell ranges. `flow`, not `sequence`, for branching.
41
+ #### `dfd` — data-flow diagram
42
+ External entities, numbered processes, and stores joined by labelled data
43
+ flows. Answers: where does the data come from, and where does it land?
44
+ `dfd`, not `flow`, when the arrows carry data rather than control.
45
+ #### `gitgraph` — the branching and release model
46
+ Commit dots on branch lanes, in the order the history happened. The first
47
+ commit on a branch opens its lane; `merge: <branch>` closes that branch into
48
+ the commit's branch; `tag` marks a release. Answers: how do branches fork,
49
+ merge, and ship? `gitgraph` for branches; `timeline` for phases.
50
+ #### `swimlane` — who does which step, in what order
51
+ One lane per owner; a step names its lane by label (`lane: Sales`) and takes its
52
+ column from the links (`col` only to pin one). `phases` bands the columns; `accent:
53
+ true` marks the focal step. `flow` for one object's decisions; `sequence` for messages.
54
+ #### `saga` — a distributed transaction and what runs backwards
55
+ Forward steps left to right, the compensation under each, and the compensating
56
+ flow drawn back from the failing step. Answers: what happens when step 3 fails?
57
+ `failAt` derives every status (failed, compensated, skipped); set `status` only to
58
+ override. Without `failAt` it draws the happy path. Keep it to 12 steps.
59
+ `saga` for the transaction as a whole; `sequence` for the messages of one step.
60
+ #### `steps` — a numbered how-to / runbook stepper
61
+ A vertical stepper: title, body, an optional command on the dark surface, a note.
62
+ Answers: what are the exact steps, in order? `steps` for a linear procedure a person
63
+ runs; `flow` / `swimlane` when it branches; `statustable` when items carry status.
64
+ #### `cycle` — a closed loop of stages arranged in a circle
65
+ Stages clockwise from 12 o'clock, numbered, the last feeding the first; `center`
66
+ labels the hub. 2–8 stages. Answers: what repeats? `cycle` when the process loops;
67
+ `flow` when it branches and ends; `steps` for a one-shot procedure.
68
+ #### `timing` — UML timing diagram
69
+ One lane per lifeline stepping through `states` over a shared time axis
70
+ (`from` … `to` in `unit`), `events` as instants, `constraints` as duration
71
+ brackets. Answers: what state is each part in at time t, and how long does
72
+ a phase last? `timing` when durations and overlaps are the point (a circuit
73
+ breaker, a lease, a handshake); `state` for the transitions without time;
74
+ `sequence` for message order; `spans` for measured traces.
@@ -0,0 +1,65 @@
1
+ # Chiltepin blocks — Narrative & prose
2
+
3
+ Part of the **chiltepin** skill (the hub is `SKILL.md`, two folders up).
4
+ Run `chiltepin block <type>` for the fields and an example; block → family map:
5
+ `INDEX.md`. Schemas reject unknown fields.
6
+
7
+ **Shape**: Structure & emphasis — text that must stand out from the page
8
+ (`callout`, `pullquote`, `bignumber`, `takeaways`), plus the document frame
9
+ (`meta`, `divider`, `prose`, `figure`) and one Containment block (`layers`)
10
+ for ordered conceptual tiers.
11
+ **Answers**: What must the reader notice or remember? What does this term
12
+ mean (`glossary`, `faq`)?
13
+ **Not this family**: a row of KPIs → `stats` (tables-data.md); a procedure →
14
+ `steps` (flows.md); weighing a choice → `options` (business.md) or
15
+ `proscons` (planning.md); an ordinary bullet list → `list` (planning.md).
16
+
17
+ ### Narrative & prose
18
+
19
+ #### `meta` — document cover (first block only)
20
+ Title, subtitle, tag pill, and an optional logo (absolute https URL).
21
+ Answers: what is this document? One `meta` per doc, always first; `divider`
22
+ for a cover inside the doc.
23
+ #### `prose` — structured prose (heading / paragraph / list / quote)
24
+ Headings, paragraphs, lists, and quotes carried as data. Answers: what is
25
+ the context? Plain Markdown outside blocks does the same job; use `prose`
26
+ when the text must live inside a block, such as a `gallery` cell.
27
+ #### `callout` — note / tip / warning / danger
28
+ One aside with a tone band. Bare text with no `field:` lines is the body.
29
+ Answers: what must the reader notice here? `callout` for one aside;
30
+ `takeaways` for the closing list; `faq` for several questions.
31
+ #### `glossary` — term / definition rows
32
+ Term → definition rows. Answers: what does this word mean in this doc?
33
+ The object form adds `avoid`, the words the doc must not use instead;
34
+ `chiltepin check` flags an avoided word anywhere in the doc's prose
35
+ (`W_PROSE_TERM_DRIFT`). This makes the glossary the approved term list.
36
+ #### `figure` — an image with a caption
37
+ A real image with alt text and a caption. Answers: what did it look like?
38
+ `figure` only for screenshots, photos, and exports from other tools.
39
+ Anything the renderer can draw belongs in a typed diagram block.
40
+ #### `faq` — Q&A accordions (native details, no JS)
41
+ One accordion per question; `open: true` starts one expanded. Blank lines in
42
+ an answer become paragraphs. Answers: what do readers ask?
43
+ `faq`, not `glossary`, for questions; `callout` for a single aside.
44
+ #### `divider` — a full-width section break ("PART 2")
45
+ A band with a mono kicker, a title, and a subtitle. Answers: where does the
46
+ next part start? In a deck, put a `divider` alone under its own `##`
47
+ heading and it becomes an interstitial slide.
48
+ #### `bignumber` — one hero metric that carries the slide
49
+ One value with a label, context, and a delta. Quote numeric-looking values
50
+ (`"-75%"`). Answers: what is the one number? The trend arrow is neutral
51
+ gray on purpose: "down" is often good. `bignumber` for ONE number; `stats`
52
+ for a row of KPIs.
53
+ #### `takeaways` — the 2-6 things to remember
54
+ Numbered bold one-liners, each with an optional detail line. Answers: what
55
+ should the reader remember? The natural closing slide of a deck.
56
+ `takeaways` to close; `list` for ordinary bullets inside a document.
57
+ #### `pullquote` — a standout quote
58
+ Bare text is the quote; lead with `text:` / `attribution:` for fields.
59
+ Answers: whose words frame this section? `pullquote` for a quote; `callout`
60
+ for an aside.
61
+ #### `layers` — a layered explanation (N numbered layers)
62
+ Numbered tiers, each with a kicker, a source, a question, and a body.
63
+ Answers: which tier answers which question? `layers`, not `table`, when the
64
+ content reads as ordered tiers (an L1 / L2 / L3 model); `block` with
65
+ `layers:` when arrows join the tiers.
@@ -0,0 +1,74 @@
1
+ # Chiltepin blocks — Planning, lists & backlogs
2
+
3
+ Part of the **chiltepin** skill (the hub is `SKILL.md`, two folders up).
4
+ Run `chiltepin block <type>` for the fields and an example; block → family map:
5
+ `INDEX.md`. Schemas reject unknown fields.
6
+
7
+ **Shape**: Time — what happened or is planned (`timeline`, `changelog`,
8
+ `rollout`, `roadmap`, `chevrons`); Grid — one option weighed (`proscons`);
9
+ work items and cards (`userstory`, `stories`, `kanban`, `storymap`,
10
+ `statustable`, `risk`, `list`, `cvt`, `agenda`, `pattern`, `gallery`).
11
+ **Answers**: What work exists, in what state, owned by whom? What shipped when?
12
+ **Not this family**: bars against dates → `gantt`; verdicts → `options`; targets → `slo`.
13
+
14
+ #### `userstory` — agile story + acceptance criteria + links
15
+ One story as its own section: role / want / soThat, criteria, links. Use a short
16
+ stable `id` (`US-142`); other docs reference it. `links[].ref` (`doc#id`) is a real
17
+ cross-reference that `chiltepin check` verifies. Answers: what does done mean? `stories` for many.
18
+ #### `timeline` — phases / roadmap
19
+ Phases in order with a status dot each. Answers: what happens in which phase?
20
+ `timeline` for plans ahead; `changelog` for history; `gantt` for bars.
21
+ #### `changelog` — release history
22
+ A rail with a dot per release (red for `tag: breaking`), a version pill, a date,
23
+ and typed items. Newest first. Answers: what shipped when?
24
+ #### `kanban` — flexible columns
25
+ Named columns of cards (Now / Next / Later). Answers: what is in flight?
26
+ `kanban` for work in flight; `storymap` for scope; `statustable` for status.
27
+ #### `storymap` — user story mapping (backbone + release slices)
28
+ Activities across the top; each release slice is a band of cards under the step
29
+ they belong to. Each slice's `cells` carries exactly one entry per backbone step,
30
+ in order; write `[]` for an empty step. Answers: what do we build, in what order?
31
+ #### `rollout` — how a change ships, and what stops it
32
+ Stages left to right with traffic share, hold time, and the gate that must pass
33
+ before the next stage; the gate belongs to the stage it closes. `rollback` is the
34
+ footer: the move, not the wish. Answers: what condition starts the next stage?
35
+ #### `statustable` — task table with an update column + colored status pills
36
+ Free cells under `columns`, then a Status pill per row; one level of `subtasks`.
37
+ `statuses` is your label → colour vocabulary; built-in defaults are in progress,
38
+ blocked, completed, todo, done. Any other status fails `chiltepin check`. A parent's status
39
+ never rolls up. Answers: what state is each task in? `list` when items carry no status.
40
+ #### `risk` — a risk register
41
+ One row-card per risk; severity derives from likelihood × impact. Answers: what
42
+ could go wrong, and who owns it? `swot` for strategic position.
43
+ #### `cvt` — current vs target (before / after)
44
+ Two side-by-side panels of items, today and target, with a note. Answers: what
45
+ changes between now and the target? `options` when several targets compete.
46
+ #### `proscons` — pros vs cons (two columns)
47
+ Two columns weighing ONE option. Answers: is this one option worth it?
48
+ `options` for several candidates with verdicts; `gallery` for side by side.
49
+ #### `agenda` — meeting agenda
50
+ Timed rows with duration, title, owner, and description. Answers: what happens
51
+ when in this meeting? `agenda`, not `timeline`, for one meeting.
52
+ #### `list` — a fancy bullet list (four marker styles)
53
+ A bold lead plus text per item; `style` picks accent, check, icon, or number markers.
54
+ Answers: what are the points? `statustable` when items carry status; `takeaways` to close.
55
+ #### `stories` — a collapsible user-story backlog
56
+ Every story as an accordion in one section; `open: true` expands one.
57
+ Answers: what is in the backlog? `userstory` for one with its own section.
58
+ #### `pattern` — a design-pattern reference card
59
+ A GoF-style card: intent, forces, participants, consequences; only `name` is required.
60
+ Answers: what does this pattern do and cost? Start from the pattern library in
61
+ `reference/system-design.md`; pair with `felogic` (structure) and `sequence` (runtime).
62
+ #### `gallery` — a responsive grid of cells
63
+ A real grid (2 columns by default, `cols` up to 4). A cell is a note, a `code`
64
+ snippet, or a nested `block`: a whole diagram checked against its own schema.
65
+ Answers: how do these compare side by side? When the user says "compare X vs Y",
66
+ put each side in a cell as a nested block (a `pattern` card or a diagram), not
67
+ prose or a table. `gallery`, not `code` with `blocks[]`, for a grid.
68
+ #### `chevrons` — process chevron strip
69
+ 2–8 chevrons left to right, `current` highlighted, a `desc` under each. Answers:
70
+ what are the phases, and where are we? `steps` to execute them; `cycle` when it loops.
71
+ #### `roadmap` — themes × periods
72
+ `themes` as rows, `periods` as columns, items as status chips spanning
73
+ `from` … `to`, `now` as a rule. Answers: what ships when, by theme? Coarser
74
+ than `gantt` (no days, no dependencies); `kanban` when nothing is dated.
@@ -0,0 +1,43 @@
1
+ # Chiltepin blocks — Quality & audits
2
+
3
+ Part of the **chiltepin** skill (the hub is `SKILL.md`, two folders up).
4
+ Run `chiltepin block <type>` for the fields and an example; block → family map:
5
+ `INDEX.md`. Schemas reject unknown fields.
6
+
7
+ **Shape**: Verdicts with evidence. What is wrong now (`audit`), what passes
8
+ and fails a standard (`checklist`), what is over budget (`perfbudget`), how
9
+ long the tail is (`percentiles`), and what an attacker can do (`threatmodel`).
10
+ **Answers**: What did the review find? Are we ready? Are we within budget?
11
+ How slow is the slow path? Where can this be attacked, and what stops it?
12
+ **Not this family**: what MIGHT go wrong → `risk` (planning.md); service
13
+ targets over time → `slo` (tables-data.md); measured results side by side →
14
+ `benchmark` (tables-data.md); where the time goes in one request → `spans`.
15
+
16
+ #### `audit` — findings register
17
+ Severity-ranked rows with evidence, fix, owner, status, and a count strip per
18
+ severity. Answers: what did the review find, and how bad is it? One finding
19
+ per row; `evidence` is what was observed (a path, a query, a log line), `fix`
20
+ the change. `audit`, not `risk`, for defects found; `risk` for possibilities.
21
+ `audit`, not `table`: the severity order and the counts are derived.
22
+ #### `checklist` — pass / fail with evidence
23
+ Items, or `groups` of items, each with a verdict and the evidence behind it;
24
+ the footer derives the pass rate. Terse: `"[pass] item — evidence"` (quote
25
+ it: the bracket is YAML flow syntax). Answers: are we ready, and what is
26
+ missing? `checklist` for a standard applied once; `statustable` for work in
27
+ flight; `list` with `check` markers when nothing is being verified.
28
+ #### `perfbudget` — budgets vs measured
29
+ One bar per metric against its budget mark; over / near / ok derived
30
+ (`lowerIsBetter: false` for scores and throughput). Answers: are we within
31
+ budget, and by how much? `perfbudget` for targets with a pass line;
32
+ `benchmark` for candidates against each other; `stats` for KPIs with trends.
33
+ #### `percentiles` — latency distribution per row
34
+ p50 · p90 · p95 · p99 · max per endpoint on one axis, the SLO as a rule;
35
+ `scale: log` for a long tail. Answers: how slow is the slow path? A p99 past
36
+ the SLO is marked. `percentiles` for the tail; `chart` line for latency over
37
+ time; `spans` for where the time goes inside one request.
38
+ #### `threatmodel` — STRIDE on a data flow
39
+ The dfd shapes inside dashed trust `boundaries`, `channel: plain` hops marked,
40
+ and a `threats` table keyed to nodes or edges with the STRIDE letter.
41
+ Answers: where can this be attacked, and what stops it? One trust boundary
42
+ per block; put the mitigations in the table, not in prose. `threatmodel`,
43
+ not `dfd`, when threats are the question; `audit` for what a review found.
@@ -0,0 +1,55 @@
1
+ # Chiltepin blocks — Tables, metrics & code
2
+
3
+ Part of the **chiltepin** skill (the hub is `SKILL.md`, two folders up).
4
+ Run `chiltepin block <type>` for the fields and an example; block → family map:
5
+ `INDEX.md`. Schemas reject unknown fields.
6
+
7
+ **Shape**: Grid — two axes of exact values (`table`, `benchmark`) — plus
8
+ Structure & emphasis for headline numbers, targets, and code as evidence
9
+ (`stats`, `slo`, `code`).
10
+ **Answers**: What are the exact values? How big, fast, or reliable is it,
11
+ as measured?
12
+ **Not this family**:
13
+
14
+ - cells are permission levels → `matrix` (business.md)
15
+ - a value grid read by intensity → `heatmap` (charts-overviews.md)
16
+ - the numbers move over time → `chart` (charts-overviews.md)
17
+ - scores you invented rather than measured → `scorecard` or `harvey`
18
+ (business.md)
19
+
20
+ ### Tables & metrics
21
+
22
+ #### `table` — comparison table
23
+ Rows × columns of exact values; a cell can carry a tone and emphasis.
24
+ Answers: what are the exact values?
25
+ `table`, not `matrix`, when cells are data rather than permissions; not
26
+ `heatmap` when the reader needs the numbers rather than the pattern.
27
+
28
+ #### `stats` — KPI / metric cards
29
+ A row of cards: value, label, delta, and a trend arrow.
30
+ Answers: how big is it right now?
31
+ `stats` for a few KPIs with trends; `bignumber` for one hero number; `chart`
32
+ when the numbers move over time; `envelope` for an estimate.
33
+
34
+ #### `slo` — service-level objectives with error budgets
35
+ One row-card per objective: SLI, target, current, window, and a burn bar.
36
+ Answers: are we inside the error budget?
37
+ `budget` is the fraction consumed (0–1): the bar turns amber past 0.5, red
38
+ past 0.8, "exhausted" at 1. Omit it to skip the bar.
39
+ `slo` for reliability targets; `okr` for goals; `stats` for plain KPIs.
40
+
41
+ #### `benchmark` — measured results, side by side
42
+ Subject columns × metric rows; the best cell per row is derived from the
43
+ numbers and highlighted. Never bold a winner yourself. `better: low` flips a
44
+ row (latency, cost); `better: none` turns the highlight off; `best: true`
45
+ forces it for a tie. `variants` on a row stacks one value per condition and
46
+ compares each condition on its own line. Answers: what did we measure?
47
+ `benchmark` for measured numbers; `scorecard` or `harvey` for scores you gave.
48
+
49
+ #### `code` — code the reader will copy or diff
50
+ When the reader will copy or diff it, it is a `code` block, not prose or a
51
+ table; when the change is the point, `kind: compare` or `kind: diff`.
52
+ `highlight: "3-5, 8"` bands the lines that matter; `lines: true` numbers
53
+ them; `cols: 2` sets snippets side by side (request / response); `kind:
54
+ compare` is before / after under eyebrows; `kind: terminal` is a `session`.
55
+ `steps` for a runbook with prose between commands; `gallery` for a card grid.
@@ -0,0 +1,62 @@
1
+ # Check and fix — step 7 of the procedure
2
+
3
+ After you create or edit any doc, run the CLI and fix everything it reports.
4
+ **A change is not done until `chiltepin check` passes.**
5
+
6
+ ```
7
+ chiltepin check # validate all docs: schema + dangling refs + dup ids
8
+ chiltepin check docs/orders-api.md # validate one file
9
+ chiltepin check --json # machine-readable: every diagnostic with its code, file, line, value
10
+ chiltepin check --strict-prose # prose warnings become errors
11
+ chiltepin block <type> # the fields, enums, terse forms, and example for one block
12
+ chiltepin html docs/orders-api.md -p # render and open it (slides … -p for a deck)
13
+ chiltepin new <name> # scaffold a whole doc (adr, runbook, …) or one block
14
+ chiltepin build # static site (index + nav + cross-doc links) → dist/
15
+ chiltepin sync openapi spec.yaml --out docs/api.md # doc from an OpenAPI spec
16
+ ```
17
+
18
+ Prefix every command with `npx -y chiltepin` when `chiltepin` is not on PATH.
19
+
20
+ `chiltepin check` exits non-zero on any error and names the file, line, and
21
+ offending value. Warnings never fail the check, but read each one: most name a
22
+ real problem.
23
+
24
+ ## Error codes
25
+
26
+ Every diagnostic carries a stable code. Apply the matching fix:
27
+
28
+ | Code | Meaning | First check |
29
+ |---|---|---|
30
+ | `E_PARSE_YAML` | YAML body failed to parse. | Re-read *YAML pitfalls* in `writing.md`. Unquoted `,`/`:`/`#` in a `desc` is the usual cause. |
31
+ | `E_PARSE_MERMAID` | A ` ```mermaid ` body has a line outside the supported subset; the message names the line. | Compare against `mermaid.md`. Fix the line, or write the block as typed YAML. |
32
+ | `E_PARSE_DBML` / `E_PARSE_PRISMA` | A ` ```dbml ` / ` ```prisma ` body has a line outside the supported subset; the message names the line. | Compare against `mermaid.md` (Input dialects). Fix the line, or write the block as an `erd` in YAML. |
33
+ | `E_SCHEMA` | A field is missing, wrong-typed, or unknown; the message contains the path. | Compare against `chiltepin block <type>`. Do not add undocumented fields — the schema is strict. |
34
+ | `E_DANGLING_REF` | A `ref` points at an id that exists nowhere. | Fix the ref string, or add the missing `id:` to the target block. |
35
+ | `E_SWIMLANE_LANE` | A `swimlane` step's `lane` matches no lane label, id, or index. | Use one of the lane labels the hint lists, exactly as written (case does not matter). |
36
+ | `E_DUP_ID` | The same `id:` in two blocks; the message names both. | Ids are repo-global. Rename one. |
37
+ | `E_BAD_REF_FORMAT` | A `ref:` is not `doc#id` or `#id` shape. | Match the format; the id slug is `[\w-]+`. |
38
+ | `E_UNKNOWN_BLOCK` | A segment claims an unknown block type (rare — unknown fences normally fall through to plain code). | Use exactly one of the types `chiltepin block` lists. |
39
+
40
+ Common `E_SCHEMA` shapes: `Expected string, received number` → quote the
41
+ value (`tech: "16"`). `Invalid enum value` → use the documented enum only.
42
+ `Unrecognized key(s)` → you added an undocumented field, or an unquoted comma
43
+ in a flow-style mapping split a phrase into keys. `meta` fails → it must be
44
+ the first block in the file.
45
+
46
+ ## Warning codes
47
+
48
+ | Code | Meaning | What to do |
49
+ |---|---|---|
50
+ | `W_EMPTY_BLOCK` | A typed block had an empty body. | Add fields or remove the block. |
51
+ | `W_SUSPECT_BLOCK` | A fence tag is within typo distance of a real type (e.g. ` ```sequnce `); it rendered as plain text. | Rename the fence to the suggested type. |
52
+ | `W_ALIAS_TYPE` | The fence uses one of the 12 old merged names. It parsed and rendered fine. | Nothing — both spellings work forever. Use the canonical name in new blocks; do not churn existing fences. |
53
+ | `W_DENSE_BLOCK` | A diagram is past its density budget. | Split it into two focused blocks. A diagram past its budget reads worse than two. |
54
+ | `W_EDGE_LABEL` | A `c4` relationship has no `label`. | Add the verb phrase that crosses the line; at container level add `tech` (the protocol). |
55
+ | `W_LENS_REPEAT` | A third `callout`, or a fourth block of any other structural type, in one doc. | Merge them, or answer the third question with a different lens — the hint names the usual one. |
56
+ | `W_PROSE_*` | A prose rule broke: a paragraph too long, a banned opener, a sentence that restates the block. | Apply the prose rules in `SKILL.md` and `style-ste.md`. Block text fields are exempt from the length cap. |
57
+ | `W_DOC_CONVENTION` | The file path breaks the on-disk convention. | See `organizing.md`. Never rename a file only to silence this. |
58
+
59
+ ## The final read
60
+
61
+ After the check passes, reread only the headings and block titles. The skim
62
+ must still tell the story from step 1. Cut any section that reads as filler.