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.
- package/LICENSE +21 -0
- package/README.md +249 -0
- package/dist/bin.js +3582 -0
- package/dist/bin.js.map +1 -0
- package/package.json +93 -0
- package/templates/chiltepin.config.json +5 -0
- package/templates/demo.md +2161 -0
- package/templates/docs/getting-started.md +155 -0
- package/templates/docs/tutorial.md +559 -0
- package/templates/skill/SKILL.md +172 -0
- package/templates/skill/reference/blocks/INDEX.md +141 -0
- package/templates/skill/reference/blocks/agentic.md +63 -0
- package/templates/skill/reference/blocks/algorithms.md +49 -0
- package/templates/skill/reference/blocks/api.md +40 -0
- package/templates/skill/reference/blocks/architecture.md +94 -0
- package/templates/skill/reference/blocks/business.md +70 -0
- package/templates/skill/reference/blocks/charts-overviews.md +74 -0
- package/templates/skill/reference/blocks/data-model.md +34 -0
- package/templates/skill/reference/blocks/design-system.md +50 -0
- package/templates/skill/reference/blocks/flows.md +74 -0
- package/templates/skill/reference/blocks/narrative.md +65 -0
- package/templates/skill/reference/blocks/planning.md +74 -0
- package/templates/skill/reference/blocks/quality.md +43 -0
- package/templates/skill/reference/blocks/tables-data.md +55 -0
- package/templates/skill/reference/check.md +62 -0
- package/templates/skill/reference/decks.md +198 -0
- package/templates/skill/reference/exemplars/adr.md +87 -0
- package/templates/skill/reference/exemplars/agent-system.md +113 -0
- package/templates/skill/reference/exemplars/api-reference.md +110 -0
- package/templates/skill/reference/exemplars/backend-arch.md +117 -0
- package/templates/skill/reference/exemplars/data-pipeline.md +107 -0
- package/templates/skill/reference/exemplars/frontend-arch.md +93 -0
- package/templates/skill/reference/exemplars/incident-postmortem.md +93 -0
- package/templates/skill/reference/exemplars/migration-plan.md +95 -0
- package/templates/skill/reference/exemplars/onboarding.md +78 -0
- package/templates/skill/reference/exemplars/product-spec.md +81 -0
- package/templates/skill/reference/intake.md +140 -0
- package/templates/skill/reference/mermaid.md +216 -0
- package/templates/skill/reference/organizing.md +118 -0
- package/templates/skill/reference/patterns-design.md +59 -0
- package/templates/skill/reference/patterns.md +167 -0
- package/templates/skill/reference/recipes.md +153 -0
- package/templates/skill/reference/style-ste.md +119 -0
- package/templates/skill/reference/system-design.md +161 -0
- package/templates/skill/reference/writing.md +132 -0
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: chiltepin
|
|
3
|
+
description: >-
|
|
4
|
+
Write, edit, validate, and render Chiltepin docs: Markdown with typed YAML
|
|
5
|
+
blocks for diagrams, API references, ADRs, runbooks, and slides. Use when
|
|
6
|
+
the user requests Chiltepin or the chiltepin CLI, or edits typed-block docs in a
|
|
7
|
+
Chiltepin project (chiltepin.config.*). Preserve an explicitly requested format;
|
|
8
|
+
installing this skill alone does not make every Markdown task a Chiltepin task.
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Chiltepin — docs as Markdown with typed YAML blocks
|
|
12
|
+
|
|
13
|
+
A doc is plain Markdown. Anything structured — a diagram, a table, a plan — is
|
|
14
|
+
a fenced block whose info-string is the block type and whose body is YAML.
|
|
15
|
+
The `.md` file is the only source of truth. Never paste HTML or SVG. Never
|
|
16
|
+
place pixels: the renderer owns layout, you own content.
|
|
17
|
+
|
|
18
|
+
````
|
|
19
|
+
## Request flow
|
|
20
|
+
|
|
21
|
+
```sequence
|
|
22
|
+
actors:
|
|
23
|
+
- { id: Client, name: Client }
|
|
24
|
+
- { id: API, name: Orders API }
|
|
25
|
+
messages:
|
|
26
|
+
- Client -> API: POST /orders
|
|
27
|
+
- API --> Client: 201 Created
|
|
28
|
+
```
|
|
29
|
+
````
|
|
30
|
+
|
|
31
|
+
## Fast path
|
|
32
|
+
|
|
33
|
+
Use the project's installed CLI (`pnpm exec chiltepin` or `npx --no-install chiltepin`)
|
|
34
|
+
to match its dependency version. Otherwise, `npx -y chiltepin …` downloads and
|
|
35
|
+
runs the published CLI. In the Chiltepin source repo, use the built
|
|
36
|
+
`node packages/cli/dist/bin.js`. The commands below show the fallback form.
|
|
37
|
+
|
|
38
|
+
Detailed references live beside this file — read them on demand; the table
|
|
39
|
+
at the end explains which reference each task needs.
|
|
40
|
+
|
|
41
|
+
1. **Pick the blocks from the reader's question**, not from the words in the
|
|
42
|
+
request. Use the table below. For a full doc, two to five structural blocks
|
|
43
|
+
often suffice. A single diagram request needs only that diagram. Use prose
|
|
44
|
+
when a small list communicates the same information more clearly.
|
|
45
|
+
Unsure which block exists: `npx -y chiltepin block` lists all 107 block types.
|
|
46
|
+
2. **Look up each block you will write**: `npx -y chiltepin block <type>`.
|
|
47
|
+
It prints the fields, enums, terse one-line forms, and a validating
|
|
48
|
+
example. Read a family selection sheet only when the choice remains unclear.
|
|
49
|
+
3. **Write the doc.** For a full doc, put `meta` first (title, subtitle, tag). A `##` heading
|
|
50
|
+
above a block is its title. Prose carries why and consequence, never a
|
|
51
|
+
description of the block below it. Rules in the two sections after the
|
|
52
|
+
table.
|
|
53
|
+
4. **Check**: `npx -y chiltepin check <file> --json`. Every diagnostic carries
|
|
54
|
+
a stable code and the failing value; `reference/check.md` maps each code
|
|
55
|
+
to its fix. Fix errors and rerun while you make progress. Stop and report
|
|
56
|
+
the blocker if a diagnostic repeats without a new fix or needs missing facts.
|
|
57
|
+
Warnings do not fail the check by default; review them and report relevant ones.
|
|
58
|
+
A non-zero exit is never "done". If the CLI is unavailable, report validation
|
|
59
|
+
as unverified. Never invent a successful check.
|
|
60
|
+
5. **Render when asked**: `npx -y chiltepin html <file> -p` (page) or
|
|
61
|
+
`slides <file> -p` (deck).
|
|
62
|
+
|
|
63
|
+
Handoff: the file path, actual check result, and any unresolved diagnostics.
|
|
64
|
+
Explain block selection only when the user asks or a tradeoff needs explanation.
|
|
65
|
+
|
|
66
|
+
Editing an existing doc: read it whole first. Change the one block, and
|
|
67
|
+
carry the fact into related blocks within the requested scope. Preserve unrelated
|
|
68
|
+
content. Rewrite the whole document only when the user requests a rewrite.
|
|
69
|
+
|
|
70
|
+
## Pick the block by the reader's question
|
|
71
|
+
|
|
72
|
+
| Reader question | Blocks | Choose by |
|
|
73
|
+
|---|---|---|
|
|
74
|
+
| What calls what? | `sequence` · `graph` · `c4` | ordered messages → sequence; topology at rest → graph or c4 |
|
|
75
|
+
| What path does a request take through the infrastructure? | `block` · `c4` · `cluster` | tiers and hops → block; system context for a stakeholder → c4; namespaces and replicas → cluster |
|
|
76
|
+
| What happens when this fails? | `flow` · `saga` · `state` · `sequence` | branching decisions → flow; multi-service undo → saga; one object's lifecycle → state |
|
|
77
|
+
| Where did the time go? | `spans` · `sequence` | measured durations → spans; call order only → sequence |
|
|
78
|
+
| What does the event carry, who emits and consumes it? | `eventcontract` · `table` | one event → eventcontract; a catalog → table |
|
|
79
|
+
| Who publishes, who subscribes, how does work fan out? | `block` (`preset: event`) · `dfd` · `sequence` | topology of producers, topics, queues, consumers → block; the hop order with the failure branch → sequence; `reference/patterns.md` names the stack per pattern |
|
|
80
|
+
| How does this ship, and what stops it? | `rollout` · `steps` · `timeline` | staged traffic with gates → rollout; manual procedure → steps; dated milestones → timeline |
|
|
81
|
+
| What lives inside what? | `c4` · `cluster` · `block` · `layers` · `archmap` · `tree` · `composition` · `treemap` | runtime boundaries → c4/cluster/block; conceptual tiers → layers; capability landscape → archmap; part-of → tree/composition; area budget → treemap |
|
|
82
|
+
| What changes over time? | `timeline` · `gantt` · `changelog` · `chart` · `slopegraph` · `state` | events → timeline; scheduled work → gantt; released work → changelog; a measured quantity → chart; two snapshots → slopegraph |
|
|
83
|
+
| How do these options compare? | `options` · `proscons` · `matrix` · `scorecard` · `benchmark` · `quadrant` · `harvey` | criteria × candidates → options; one option → proscons; numbers → benchmark; two axes → quadrant |
|
|
84
|
+
| Where does data go? | `dfd` · `sankey` · `erd` | processes and stores → dfd; volumes → sankey; shape at rest → erd |
|
|
85
|
+
| Who does what, when? | `swimlane` · `journey` · `agenda` · `team` · `kanban` | ownership across steps → swimlane; experience over stages → journey; work in flight → kanban |
|
|
86
|
+
| What are the exact steps? | `steps` · `flow` | linear → steps; branches or retries → flow |
|
|
87
|
+
| What do we build, in what order? | `storymap` · `timeline` · `gantt` | scope per journey step by release → storymap |
|
|
88
|
+
| How big, how fast, how much? | `bignumber` · `stats` · `chart` · `envelope` · `benchmark` | one headline → bignumber; a set → stats; napkin math → envelope |
|
|
89
|
+
| What is this made of? | `anatomy` · `composition` · `erd` · `layers` | labeled parts of a string → anatomy; proportions → composition |
|
|
90
|
+
| What causes this? | `fishbone` · `matrix` | one effect, branching causes → fishbone |
|
|
91
|
+
| Why did we decide this? | `options` · `proscons` · `scqa` · `takeaways` · `callout` | the ADR shape → `reference/recipes.md`; the decision alone → callout |
|
|
92
|
+
| What does the API accept and return? | `endpoint` · `code` · `packet` · `table` | HTTP surface → endpoint; wire format → packet; error codes → table |
|
|
93
|
+
| How does the agent behave? | `agentloop` · `trace` · `prompt` · `context` | the loop → agentloop; one real run → trace; the contract → prompt; window contents → context |
|
|
94
|
+
| What did the review find, and are we ready? | `audit` · `checklist` · `risk` | defects found with evidence → audit; a standard applied once → checklist; what might go wrong → risk |
|
|
95
|
+
| Are we within budget, and how slow is the tail? | `perfbudget` · `percentiles` · `slo` · `benchmark` | targets with a pass line → perfbudget; p50…p99 per endpoint → percentiles; targets over time → slo |
|
|
96
|
+
| Where can this be attacked? | `threatmodel` · `dfd` · `audit` | STRIDE on a data flow with trust boundaries → threatmodel; the flow alone → dfd |
|
|
97
|
+
| Who uses the system for what, and which module may depend on which? | `usecase` · `pkg` · `uml` · `timing` | actors and cases → usecase; module dependencies → pkg; classes → uml; states over time with durations → timing; `reference/patterns-design.md` maps the GoF and distributed patterns to blocks |
|
|
98
|
+
| What is the model's shape, and what may it be used for? | `neuralnet` · `modelcard` · `chart` | layers → neuralnet; the card → modelcard; loss curves → chart line |
|
|
99
|
+
| What ships when, by theme, and where are we in the process? | `roadmap` · `chevrons` · `gantt` · `mindmap` | quarters × themes → roadmap; phases with the current one → chevrons; dated tasks → gantt; unordered ideas around a topic → mindmap |
|
|
100
|
+
| What must always hold? | `spec` · `slo` · `glossary` · `callout` | invariants → spec; service targets → slo; terms → glossary |
|
|
101
|
+
| What does the user see? | `wireframe` · `frontend` · `felogic` | screens → wireframe; component tree → frontend; module graph with edges → felogic |
|
|
102
|
+
| How does the algorithm move through the data? | `array` · `linkedlist` · `bintree` · `hashmap` · `graph` · `code` | pointers, a window, or binary search over cells → array; pointer rewiring → linkedlist; a tree shape → bintree (never `tree`, that is a file hierarchy); hashing → hashmap; visit order → graph with node `state`; the reference implementation → code. A `flow` or `table` is the keyword trap here. |
|
|
103
|
+
|
|
104
|
+
The type name is a hint, not a cage: a `quadrant` is any two-axis 2×2, a
|
|
105
|
+
`journey` any staged progression, a `cvt` any before → after. Relabel every
|
|
106
|
+
axis, column, and unit in the user's own nouns.
|
|
107
|
+
|
|
108
|
+
Twelve old names still work as aliases (`infra` `event` `ddd` `network` →
|
|
109
|
+
`block`, `belogic` → `felogic`, `dag` → `flow`, `waterfall` `funnel` →
|
|
110
|
+
`chart`, `diff` `terminal` → `code`, `mece` → `tree`, `tracker` →
|
|
111
|
+
`statustable`). Write the canonical name in new blocks; never rewrite an
|
|
112
|
+
existing fence only to silence the `W_ALIAS_TYPE` warning.
|
|
113
|
+
|
|
114
|
+
## Writing rules
|
|
115
|
+
|
|
116
|
+
- Use only the fields `chiltepin block <type>` prints. Schemas are strict: an
|
|
117
|
+
unknown field is an error.
|
|
118
|
+
- **Quote any YAML value that contains `,` `:` `#` `{` `}` or starts with a
|
|
119
|
+
special character.** Inside `{ a: b, c: d }` an unquoted comma splits a
|
|
120
|
+
phrase into keys. Numbers that must be strings (`version: "1.0"`, `delta:
|
|
121
|
+
"0"`) get quotes. Prose fields (`desc`, `note`, `summary`, `description`)
|
|
122
|
+
are always quoted. When unsure, write the body as JSON — it is valid YAML.
|
|
123
|
+
- Prefer the terse one-line item forms the contract prints (`a -> b: label`,
|
|
124
|
+
`Term — definition`). Switch to the object form only for a field the
|
|
125
|
+
grammar cannot say.
|
|
126
|
+
- Give a block an `id:` when another block references it; reference it as
|
|
127
|
+
`doc#id`, or `#id` inside the same doc. A ref to a missing id fails the
|
|
128
|
+
check.
|
|
129
|
+
- Use the user's nouns verbatim, and the same name for the same thing in
|
|
130
|
+
every block. Headings say what the reader sees, never the block type.
|
|
131
|
+
- **Vary the lens.** One `callout` per doc (the assumptions), never a row of
|
|
132
|
+
them: several points are a `list`, a `spec`, a `faq`, or `takeaways`. A
|
|
133
|
+
third block of the same type is a warning (`W_LENS_REPEAT`). Reach past
|
|
134
|
+
the habitual four (`callout`, `table`, `sequence`, `flow`): ownership
|
|
135
|
+
across steps is a `swimlane`; code the reader will copy or diff is a
|
|
136
|
+
`code` block (`kind: compare` for before / after); terms are a
|
|
137
|
+
`glossary`; questions a reader will ask are a `faq`; a runbook is
|
|
138
|
+
`steps`; side-by-side snippets or nested diagrams are a `gallery`.
|
|
139
|
+
- Diagram data (node names, messages, labels, values) is never trimmed to
|
|
140
|
+
fit. Split a dense diagram into two; `chiltepin check` warns at the caps.
|
|
141
|
+
- Every arrow says what crosses it, as a verb phrase, never "uses". A `c4`
|
|
142
|
+
edge without a label is a warning; at container level add `tech` too.
|
|
143
|
+
Solid is a call, dashed is async or optional. Flow runs left to right or
|
|
144
|
+
top to bottom, one direction per diagram.
|
|
145
|
+
- `sequence`, `flow`, `erd`, `state`, and pie `chart` also accept a
|
|
146
|
+
```mermaid fence; `erd` accepts ```dbml and ```prisma. Subsets are in
|
|
147
|
+
`reference/mermaid.md`.
|
|
148
|
+
|
|
149
|
+
## Prose rules
|
|
150
|
+
|
|
151
|
+
`reference/style-ste.md` is the authority. Between blocks: three sentences
|
|
152
|
+
per paragraph by default, five at most. Every sentence carries a fact, a
|
|
153
|
+
decision, or a consequence. Banned openers: "In this section", "This diagram
|
|
154
|
+
shows", "It's important to note", "At a high level". Block text fields keep
|
|
155
|
+
every fact in short active sentences. Diagram data is untouchable.
|
|
156
|
+
|
|
157
|
+
## Read more only when the task needs it
|
|
158
|
+
|
|
159
|
+
| File | When |
|
|
160
|
+
|---|---|
|
|
161
|
+
| `reference/blocks/INDEX.md` | Scanning every block with a one-line description (same as `chiltepin block`). |
|
|
162
|
+
| `reference/blocks/<family>.md` | Choosing between neighbours in one family — discriminators and hard rules the schema cannot express. |
|
|
163
|
+
| `reference/writing.md` | The full terse-form table, every YAML trap, `doc#id`, naming. |
|
|
164
|
+
| `reference/check.md` | A diagnostic code you do not recognise. |
|
|
165
|
+
| `reference/recipes.md` | Composing a whole document: architecture, ADR, API reference, incident, pipeline, agent system. |
|
|
166
|
+
| `reference/patterns.md` | Anything with events, queues, streams, fan-out, outbox, CQRS, sagas, retries: which blocks draw each pattern and the trap. |
|
|
167
|
+
| `reference/patterns-design.md` | A GoF or architectural design pattern (Strategy, Observer, CQRS, Circuit breaker …): the block stack that documents it. |
|
|
168
|
+
| `reference/system-design.md` | Any "design an X" ask — the eight-step method. |
|
|
169
|
+
| `reference/intake.md` | A new document with an unclear reader or scope — the questions to ask back. |
|
|
170
|
+
| `reference/decks.md` | Any slides or deck ask. |
|
|
171
|
+
| `reference/organizing.md` | Multi-doc work — file naming, splitting, index docs. |
|
|
172
|
+
| `reference/exemplars/*.md` | Ten finished documents to model on. |
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# The 107 block types — by family
|
|
2
|
+
|
|
3
|
+
Part of the **chiltepin** skill (the hub is `SKILL.md`, two folders up). One
|
|
4
|
+
line per block, mapped to the family file that holds its selection guidance.
|
|
5
|
+
For a block's fields and a validating example, run `npx -y chiltepin block
|
|
6
|
+
<type>`; bare `chiltepin block` prints this same list. Twelve old block names
|
|
7
|
+
remain valid as permanent aliases — see the table at the bottom.
|
|
8
|
+
|
|
9
|
+
| Block | Family file | What it represents |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| `meta` | `narrative.md` | Document header — title, subtitle, tag pill. Always the first block. |
|
|
12
|
+
| `callout` | `narrative.md` | A single aside: note / tip / warn / danger. |
|
|
13
|
+
| `table` | `tables-data.md` | Genuinely tabular data (rows × columns of values); cells can carry tone. |
|
|
14
|
+
| `sequence` | `flows.md` | Messages between actors **over time** (lifelines, returns); optional step list + endpoint pill. |
|
|
15
|
+
| `erd` | `data-model.md` | Entity-relationship diagram — tables, views, enums, columns with key markers, schema groups, crow's-foot cardinality; also written as ```dbml / ```prisma. |
|
|
16
|
+
| `userstory` | `planning.md` | An agile story: role / want / soThat + acceptance criteria + links. |
|
|
17
|
+
| `timeline` | `planning.md` | Phases in order with status dots (done / current / next / future). |
|
|
18
|
+
| `kanban` | `planning.md` | Flexible named columns (e.g. Now / Next / Later) of cards. |
|
|
19
|
+
| `prose` | `narrative.md` | Structured prose (headings, paragraphs, lists, quotes) carried as data. |
|
|
20
|
+
| `glossary` | `narrative.md` | Term → definition rows. |
|
|
21
|
+
| `proscons` | `planning.md` | Two columns weighed against each other: pros vs cons. |
|
|
22
|
+
| `cvt` | `planning.md` | Current → target (before / after) as two side-by-side panels. |
|
|
23
|
+
| `stats` | `tables-data.md` | KPI cards — a value with a delta and an up/down/flat trend. |
|
|
24
|
+
| `code` | `tables-data.md` | Code the reader will copy or diff — `highlight` line bands, `lines`, a `cols` grid; `kind: compare` before / after, `kind: diff` a unified diff, `kind: terminal` a shell session. |
|
|
25
|
+
| `agenda` | `planning.md` | Meeting agenda — time, duration, owner, topic per row. |
|
|
26
|
+
| `tree` | `charts-overviews.md` | An indented file/folder hierarchy (HTML, not SVG); `variant: issue` draws a MECE issue tree. |
|
|
27
|
+
| `pyramid` | `charts-overviews.md` | A layered pyramid (strategy / hierarchy), widening top → bottom. |
|
|
28
|
+
| `flow` | `flows.md` | A decision flowchart — start / process / decision / end nodes, with `error` exits; `variant: dag` frames it as a pipeline / DAG. |
|
|
29
|
+
| `state` | `flows.md` | A state machine — states + event transitions (+ a transition table). |
|
|
30
|
+
| `dfd` | `flows.md` | Data-flow — processes, external entities, and datastores. |
|
|
31
|
+
| `journey` | `charts-overviews.md` | A user journey across stages, with an optional emotion curve. |
|
|
32
|
+
| `gantt` | `charts-overviews.md` | A schedule — tasks as bars across date columns. |
|
|
33
|
+
| `graph` | `charts-overviews.md` | A generic node-link graph with colour-cycled groups. |
|
|
34
|
+
| `quadrant` | `charts-overviews.md` | A 2×2 matrix (e.g. effort vs impact) with plotted items. |
|
|
35
|
+
| `swimlane` | `flows.md` | A cross-functional process with one horizontal lane per role. |
|
|
36
|
+
| `c4` | `architecture.md` | C4 model (context / container / component) — people, systems, containers, stores. |
|
|
37
|
+
| `uml` | `architecture.md` | A class diagram — attributes, methods, UML relationships. |
|
|
38
|
+
| `frontend` | `architecture.md` | A top-down component tree — root / layout / page / component / provider / hook / store. |
|
|
39
|
+
| `cluster` | `architecture.md` | Kubernetes-style namespaces holding services, with replica counts. |
|
|
40
|
+
| `block` | `architecture.md` | Generic boxes-and-arrows architecture — grid **or** horizontal `layers`, `groups` zones that nest by `parent`, node `replicas`; `preset: infra \| event \| ddd \| network \| k8s` re-frames it for cloud, pub/sub, DDD, security-zone, or Kubernetes maps. |
|
|
41
|
+
| `felogic` | `architecture.md` | Frontend module/logic graph — components, hooks, interfaces, strategies; group zones + egress edges; `variant: be` re-frames it for the backend (controller / service / repository / adapter). |
|
|
42
|
+
| `wireframe` | `design-system.md` | Low-fi UI mockups inside device frames — desktop / browser / phone screens. |
|
|
43
|
+
| `endpoint` | `api.md` | A Swagger-style API endpoint card — method, path, params, request body, responses, examples. |
|
|
44
|
+
| `pullquote` | `narrative.md` | A standout pull-quote with optional attribution. |
|
|
45
|
+
| `layers` | `narrative.md` | A layered explanation — N numbered layers, each a kicker / title / source / question + body. |
|
|
46
|
+
| `matrix` | `business.md` | A role × resource capability grid; cells tint by permission level. |
|
|
47
|
+
| `anatomy` | `business.md` | The labelled parts of a structured string (e.g. `app:feature:action`). |
|
|
48
|
+
| `composition` | `business.md` | Effective access as intersected gates — `gate₁ ∩ gate₂ ∩ … = result`. |
|
|
49
|
+
| `drivers` | `business.md` | A grid of factor/driver cards — icon + title + body + tag, the forces that shaped a design. |
|
|
50
|
+
| `options` | `business.md` | Approaches explored — cards with pros / cons / verdict; the chosen one is highlighted. |
|
|
51
|
+
| `spec` | `business.md` | A labelled spec sheet — `label → value` rows (a value can be an inline step-flow). |
|
|
52
|
+
| `list` | `planning.md` | A fancy bullet list — bold lead + supporting line per row, in one of four marker styles (accent bar / check / icon / number). |
|
|
53
|
+
| `stories` | `planning.md` | A collapsible backlog of user stories — many stories as `<details>` accordions in one section. |
|
|
54
|
+
| `pattern` | `planning.md` | A design-pattern reference card — intent · forces · participants · consequences. |
|
|
55
|
+
| `gallery` | `planning.md` | A responsive grid of cards — code snippets or notes (a bug gallery, a comparison grid). |
|
|
56
|
+
| `chart` | `charts-overviews.md` | A data chart in pure SVG — `kind:` bar / line / area / donut / radar, plus `waterfall` (budget cascade) and `funnel` (conversion bands). |
|
|
57
|
+
| `figure` | `narrative.md` | An image with a caption in a bordered card (optional pixel width cap). |
|
|
58
|
+
| `steps` | `flows.md` | A numbered how-to / runbook stepper — title + body + optional command + note per step. |
|
|
59
|
+
| `cycle` | `flows.md` | A closed loop of stages arranged in a circle — the last step feeds the first; descriptions become a numbered legend. |
|
|
60
|
+
| `faq` | `narrative.md` | Q&A accordions — native `<details>`, question in the summary, answer expands. |
|
|
61
|
+
| `envelope` | `business.md` | Back-of-envelope capacity math — assumptions, derivation rows, a highlighted bottom line. |
|
|
62
|
+
| `slo` | `tables-data.md` | Service-level objectives — SLI, target vs current, and an error-budget burn bar. |
|
|
63
|
+
| `benchmark` | `tables-data.md` | Measured results side by side — subject columns × metric rows, the best number in each row derived and highlighted; one column can be outlined as the focus. |
|
|
64
|
+
| `swot` | `business.md` | A classic SWOT 2×2 — strengths / weaknesses / opportunities / threats as tinted quadrant cards. |
|
|
65
|
+
| `okr` | `business.md` | Objectives + key results — one card per objective, a status-coloured progress bar per KR. |
|
|
66
|
+
| `persona` | `business.md` | User persona cards — avatar, role, quote, goals, frustrations, tools. |
|
|
67
|
+
| `changelog` | `planning.md` | Release history on a vertical rail — version pills, dates, and typed change chips. |
|
|
68
|
+
| `team` | `business.md` | Compact people cards — initials avatar, name, role, focus area. |
|
|
69
|
+
| `heatmap` | `charts-overviews.md` | A numeric grid with an intensity ramp — rows × columns of tiles tinted by value. |
|
|
70
|
+
| `sankey` | `charts-overviews.md` | Flow volumes between stages — node height and ribbon thickness are the value, so the widest ribbon is where the volume goes. |
|
|
71
|
+
| `gitgraph` | `flows.md` | A branching and release model — lanes for branches, dots for commits, curves where one forks and merges back; tags mark releases. |
|
|
72
|
+
| `treemap` | `charts-overviews.md` | Proportional composition as nested tiles — area is the value, so thirty items stay readable where a donut gives up at six. |
|
|
73
|
+
| `packet` | `api.md` | A wire format laid out bit by bit — fields wrap across rows of `width` bits, the way an RFC header diagram reads. |
|
|
74
|
+
| `venn` | `charts-overviews.md` | Two or three overlapping sets with the shared regions labelled — scope, ownership, responsibility. |
|
|
75
|
+
| `wardley` | `business.md` | A Wardley map — components placed by visibility to the user and by evolution (genesis → commodity), joined into a value chain. |
|
|
76
|
+
| `harvey` | `business.md` | A rated comparison — options across the top, criteria down the side, a Harvey ball per judgement, and the recommended column marked. |
|
|
77
|
+
| `scqa` | `business.md` | An executive summary in Minto order — situation, complication, question, and the answer the deck exists to deliver. |
|
|
78
|
+
| `scenarios` | `business.md` | Base, upside and downside against the same drivers — assumptions in columns, the outcome each produces on its own row. |
|
|
79
|
+
| `scorecard` | `business.md` | A weighted decision matrix — criteria rows × option columns, weighted totals, winner highlighted. |
|
|
80
|
+
| `risk` | `planning.md` | A risk register — severity derived from likelihood × impact, with mitigation, owner, status. |
|
|
81
|
+
| `palette` | `design-system.md` | Color-token swatches — name, hex value, and usage per color, on a card grid. |
|
|
82
|
+
| `typescale` | `design-system.md` | A live type specimen — each row renders the sample text at its real size / weight / font. |
|
|
83
|
+
| `dodont` | `design-system.md` | Do / don't guideline cards — what to do (green ✓) vs what to avoid (red ✕), with optional mono examples. |
|
|
84
|
+
| `inventory` | `design-system.md` | A component / feature status board — name + color-coded status chip (stable · beta · experimental · deprecated · planned) per row. |
|
|
85
|
+
| `array` | `algorithms.md` | Array cells for algorithm walkthroughs — tones, pointer labels below cells, a dashed index-window highlight. |
|
|
86
|
+
| `linkedlist` | `algorithms.md` | A pointer-chain diagram (singly or doubly) — boxed nodes with next/prev arrows, markers like `head`/`curr`, a ∅ terminator. |
|
|
87
|
+
| `bintree` | `algorithms.md` | A binary tree — nodes placed by `parent` + `side`, tinted to show search paths, traversals, heap shapes. |
|
|
88
|
+
| `hashmap` | `algorithms.md` | Hash buckets with chained entries — collision chains read left → right as key/value pills. |
|
|
89
|
+
| `agentloop` | `agentic.md` | The canonical LLM agent loop — environment → agent (model chip) → tools column, memory cylinder, numbered loop arrows, stop condition. |
|
|
90
|
+
| `trace` | `agentic.md` | An agent / session execution transcript — user / assistant / tool / system turns, with `thinking` and tool `args` → `result`. |
|
|
91
|
+
| `prompt` | `agentic.md` | Prompt anatomy — stacked role segments (system / user / assistant / tool) with `{{variable}}` chips and a variable legend. |
|
|
92
|
+
| `context` | `agentic.md` | A context-window token budget — one stacked bar sized against the window, with free space and over-budget overflow. |
|
|
93
|
+
| `archmap` | `architecture.md` | A target-architecture capability map — a mosaic of tinted domain areas packed with small status-coded capability tiles (current · target · new · gap · deprecated). |
|
|
94
|
+
| `divider` | `narrative.md` | A full-width section break — kicker ("PART 2"), display title, optional subtitle on an accent-washed band; a clean interstitial slide in decks. |
|
|
95
|
+
| `bignumber` | `narrative.md` | One hero metric at presentation scale — a display-size value with an optional delta + neutral trend arrow, a one-line claim, and a context line. |
|
|
96
|
+
| `takeaways` | `narrative.md` | The 2-6 things to remember — numbered rows at presentation scale, each a bold one-liner with an optional detail; a deck's closing slide. |
|
|
97
|
+
| `statustable` | `planning.md` | A task table — free columns (task / update) plus a colored status pill per row, from a user-defined label → color vocabulary; rows can nest one level of subtasks. |
|
|
98
|
+
| `fishbone` | `charts-overviews.md` | Cause & effect (Ishikawa) — one effect at the head, cause categories as bones off the spine, specific causes along each bone. |
|
|
99
|
+
| `storymap` | `planning.md` | User story map — the ordered backbone of activities across the top, release slices as rows of cards under each step. |
|
|
100
|
+
| `eventcontract` | `api.md` | An async event contract card — name, version, channel, producers → consumers, delivery / ordering / retention, payload fields with the partition key marked; the twin of `endpoint`. |
|
|
101
|
+
| `saga` | `flows.md` | A distributed transaction — forward steps left to right, the compensation under each, and the compensating flow drawn back from the step that fails (`failAt`). |
|
|
102
|
+
| `slopegraph` | `charts-overviews.md` | Ranked before / after — one line per item between two labeled columns; the slopes show what rose, fell, or held. |
|
|
103
|
+
| `spans` | `flows.md` | A distributed-trace waterfall — one lane per service, each span a bar on a shared time axis, nested by parent; the critical path is marked. |
|
|
104
|
+
| `rollout` | `planning.md` | A progressive-delivery plan — stages left to right with their traffic share, hold time, and the gate each must pass; the rollback move as the footer. |
|
|
105
|
+
| `neuralnet` | `agentic.md` | A layered neural network — one column per layer with unit counts, kinds, activations; dense mesh between layers. |
|
|
106
|
+
| `modelcard` | `agentic.md` | An ML model card — identity, intended use, training data, metrics per split, limitations. |
|
|
107
|
+
| `mindmap` | `charts-overviews.md` | A radial mind map — one centre, branches left and right, sub-branches per branch. |
|
|
108
|
+
| `audit` | `quality.md` | An audit findings register — severity-ranked rows with evidence, fix, owner, status; counts per severity. |
|
|
109
|
+
| `checklist` | `quality.md` | A pass / fail checklist with evidence per item; pass rate derived. `"[pass] item — evidence"`. |
|
|
110
|
+
| `perfbudget` | `quality.md` | Performance budgets vs measured — one bar per metric with the budget mark; over / near / ok derived. |
|
|
111
|
+
| `percentiles` | `quality.md` | Latency percentiles per row — p50 … p99 · max on one axis with the SLO rule. |
|
|
112
|
+
| `threatmodel` | `quality.md` | A STRIDE threat model — data-flow shapes inside trust boundaries plus a threats table. |
|
|
113
|
+
| `usecase` | `architecture.md` | A UML use-case diagram — actors, system boundary, use cases, include / extend / generalize. |
|
|
114
|
+
| `pkg` | `architecture.md` | A UML package diagram — tabbed folders with members, dashed import / use dependencies. |
|
|
115
|
+
| `timing` | `flows.md` | A UML timing diagram — lifelines stepping through states over time, with events and constraints. |
|
|
116
|
+
| `chevrons` | `planning.md` | A process chevron strip — phases left to right, the current one highlighted. |
|
|
117
|
+
| `roadmap` | `planning.md` | A roadmap — themes × periods with status chips spanning their periods and a "now" rule. |
|
|
118
|
+
|
|
119
|
+
## Old names → canonical — the permanent aliases
|
|
120
|
+
|
|
121
|
+
These 12 former block types merged into a canonical block. **The old spelling
|
|
122
|
+
keeps working forever.** An alias fence parses to the canonical type with the
|
|
123
|
+
listed fields injected (only for keys the body doesn't set). It renders
|
|
124
|
+
exactly as it always did, and `chiltepin check` notes the mapping as a
|
|
125
|
+
`W_ALIAS_TYPE` warning (warnings never fail a check). Write the canonical spelling in new
|
|
126
|
+
blocks; don't rewrite existing fences just to silence the warning.
|
|
127
|
+
|
|
128
|
+
| Alias | Canonical | Injected fields |
|
|
129
|
+
|---|---|---|
|
|
130
|
+
| `infra` | `block` | `preset: infra` |
|
|
131
|
+
| `event` | `block` | `preset: event` |
|
|
132
|
+
| `ddd` | `block` | `preset: ddd` |
|
|
133
|
+
| `network` | `block` | `preset: network` |
|
|
134
|
+
| `belogic` | `felogic` | `variant: be` |
|
|
135
|
+
| `dag` | `flow` | `variant: dag` |
|
|
136
|
+
| `waterfall` | `chart` | `kind: waterfall` |
|
|
137
|
+
| `funnel` | `chart` | `kind: funnel` |
|
|
138
|
+
| `diff` | `code` | `kind: diff` |
|
|
139
|
+
| `terminal` | `code` | `kind: terminal` |
|
|
140
|
+
| `mece` | `tree` | `variant: issue` |
|
|
141
|
+
| `tracker` | `statustable` | `variant: tracker` |
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Chiltepin blocks — AI & agents
|
|
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 — four fixed frames for one LLM agent: the
|
|
8
|
+
loop (`agentloop`), one real episode (`trace`), the contract (`prompt`), and
|
|
9
|
+
the window budget (`context`).
|
|
10
|
+
**Answers**: What does the loop do? What can it call? What is the model
|
|
11
|
+
told? What fills the window? What did a real run look like?
|
|
12
|
+
They compose — the AI / agent recipe in `reference/recipes.md` stacks all
|
|
13
|
+
four.
|
|
14
|
+
**Not this family**: the architecture around the agent (services, queues,
|
|
15
|
+
vector stores) → `block` (architecture.md; `kind: llm` / `agent` gets the
|
|
16
|
+
violet card); one turn's message timing between services → `sequence`
|
|
17
|
+
(flows.md).
|
|
18
|
+
|
|
19
|
+
### AI & agents
|
|
20
|
+
|
|
21
|
+
#### `agentloop` — the canonical agent-loop diagram
|
|
22
|
+
Environment left, agent card centre, tools stacked right, a memory cylinder
|
|
23
|
+
below. Answers: what does one loop turn do, and what can the agent call?
|
|
24
|
+
The four numbered arrows are fixed (prompt → tool call → result → response).
|
|
25
|
+
List only tools the agent can call; the render shows 5 and folds the rest.
|
|
26
|
+
The memory cylinder draws only when `memory:` is present.
|
|
27
|
+
`agentloop` for the loop itself; `block` for the deployment around it.
|
|
28
|
+
|
|
29
|
+
#### `trace` — an agent / session execution transcript
|
|
30
|
+
A vertical transcript: one card per turn with a role chip (user, assistant,
|
|
31
|
+
tool, system). Answers: what did one real episode do, step by step?
|
|
32
|
+
Quote `args` and `result`: JSON braces and colons are YAML syntax. Block
|
|
33
|
+
scalars (`|`) keep line breaks.
|
|
34
|
+
`trace`, not `sequence`, to follow one conversation; `sequence` for the
|
|
35
|
+
timing between services.
|
|
36
|
+
|
|
37
|
+
#### `prompt` — prompt anatomy with variable highlighting
|
|
38
|
+
Stacked segment cards with role kickers; every `{{variable}}` highlights as
|
|
39
|
+
a chip. Answers: what is the model told, and where does each value come from?
|
|
40
|
+
Quote any `text` that contains `{{ }}`: bare braces are YAML flow syntax.
|
|
41
|
+
List each variable in `vars` so the legend explains it.
|
|
42
|
+
`prompt`, not `code`, for templates and system prompts; `code` for programs.
|
|
43
|
+
|
|
44
|
+
#### `context` — context-window token budget
|
|
45
|
+
One horizontal bar sized against `window`, segments left to right, free space
|
|
46
|
+
dim. Answers: what fills the window, and how much is left?
|
|
47
|
+
A sum past `window` draws red past a dashed boundary with an "over budget"
|
|
48
|
+
chip. Use it to show the failure case on purpose.
|
|
49
|
+
`context` for token budgets; a waterfall `chart` for latency and cost.
|
|
50
|
+
|
|
51
|
+
#### `neuralnet` — layered network
|
|
52
|
+
One column per layer with `units`, `kind` (input / conv / pool / dense /
|
|
53
|
+
attention / output …) and `activation`; dense mesh between layers, an
|
|
54
|
+
ellipsis when a layer is wider than `maxUnits`. Answers: what is the model's
|
|
55
|
+
shape? List the layers a reader would name, not every repeated block: fold
|
|
56
|
+
"12 × transformer block" into one `attention` layer with a `note`.
|
|
57
|
+
`neuralnet` for the architecture; `flow` (`variant: dag`) for the training
|
|
58
|
+
pipeline; `chart` line for loss curves.
|
|
59
|
+
#### `modelcard` — model card
|
|
60
|
+
Identity, intended use and out-of-scope, training data, metrics per split,
|
|
61
|
+
limitations, ethics. Answers: what is this model, and what may it be used
|
|
62
|
+
for? The endpoint card for a model: one per deployed model version.
|
|
63
|
+
`modelcard`, not `spec`, for a model; `benchmark` to compare candidates.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Chiltepin blocks — Algorithms & data structures
|
|
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 — one data structure frozen at one step
|
|
8
|
+
(`array`, `linkedlist`, `bintree`, `hashmap`). One step per block; freeze a
|
|
9
|
+
moment, don't animate.
|
|
10
|
+
**Answers**: What does the structure hold at this step, and where do the
|
|
11
|
+
pointers stand?
|
|
12
|
+
**Not this family**: graph algorithms (BFS / DFS / Dijkstra) → `graph` with
|
|
13
|
+
node `state` + edge `weight` (charts-overviews.md); a file hierarchy →
|
|
14
|
+
`tree` (charts-overviews.md); control flow → `flow` (flows.md).
|
|
15
|
+
|
|
16
|
+
### Algorithms & data structures
|
|
17
|
+
|
|
18
|
+
All four blocks share one `tone` enum: `active` is the element under
|
|
19
|
+
examination, `visited` is processed, `target` is the goal, `muted` is out of
|
|
20
|
+
play. Quote numeric values (`value: "19"`); they are strings.
|
|
21
|
+
|
|
22
|
+
#### `array` — array cells for algorithm walkthroughs
|
|
23
|
+
A row of square cells, indices above, pointer labels (`lo`, `mid`) below.
|
|
24
|
+
Answers: where do the pointers stand at this step?
|
|
25
|
+
`window` outlines a 0-based inclusive index range.
|
|
26
|
+
`array`, not `table`, for binary search, two pointers, and sliding windows;
|
|
27
|
+
`table` for tabular data.
|
|
28
|
+
|
|
29
|
+
#### `linkedlist` — pointer-chain diagram
|
|
30
|
+
Boxed nodes joined by arrows; the chain ends in a ground symbol.
|
|
31
|
+
Answers: which node does each pointer hold during a reversal or insertion?
|
|
32
|
+
`kind: doubly` adds a back-arrow per link. Pointer labels render above.
|
|
33
|
+
`linkedlist`, not `flow`, for pointer manipulation; `flow` for control flow.
|
|
34
|
+
|
|
35
|
+
#### `bintree` — binary tree
|
|
36
|
+
Nodes placed by parent and side; a parent centres over its children, so an
|
|
37
|
+
unbalanced chain slants. Answers: which path does a search or traversal take?
|
|
38
|
+
Every node with a `parent` must set `side`. Two children on one side is a
|
|
39
|
+
schema error. Several parentless nodes draw as side-by-side roots (rotations).
|
|
40
|
+
`bintree`, not `tree`, for BSTs, heaps, and traversals; `tree` for file
|
|
41
|
+
hierarchies.
|
|
42
|
+
|
|
43
|
+
#### `hashmap` — buckets + chained entries
|
|
44
|
+
A column of bucket slots; entries in one bucket chain rightward in entry
|
|
45
|
+
order. Answers: where does each key land, and which keys collide?
|
|
46
|
+
An entry whose `bucket` is outside `0..buckets-1` is skipped, not clamped.
|
|
47
|
+
The render caps at 12 buckets; keep the count readable.
|
|
48
|
+
`hashmap`, not `table`, for hashing and collision walkthroughs; `table` for a
|
|
49
|
+
plain key-value listing.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Chiltepin blocks — API reference
|
|
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 — one contract card per operation
|
|
8
|
+
(`endpoint`) or per event (`eventcontract`) — plus Exchange at the byte
|
|
9
|
+
level (`packet`).
|
|
10
|
+
**Answers**: What can I call, with what, and what comes back? Who emits this
|
|
11
|
+
event, who consumes it, and what does the payload guarantee? What does the
|
|
12
|
+
wire carry, bit by bit?
|
|
13
|
+
**Not this family**: how calls compose over time → `sequence` (flows.md);
|
|
14
|
+
an error-code listing → `table` (tables-data.md); the API already has an
|
|
15
|
+
OpenAPI spec → generate the cards with `chiltepin sync openapi`.
|
|
16
|
+
|
|
17
|
+
### API reference
|
|
18
|
+
|
|
19
|
+
#### `endpoint` — a Swagger-style API endpoint card
|
|
20
|
+
One card per operation: method pill, path, parameters, body, responses, and
|
|
21
|
+
example request and response. Answers: what can I call, with what, and what
|
|
22
|
+
comes back? Only `method` and `path` are required.
|
|
23
|
+
For a whole spec, run `chiltepin sync openapi` instead of writing cards by hand.
|
|
24
|
+
`endpoint`, not `sequence`, for the contract of one call; `sequence` for how
|
|
25
|
+
calls compose over time.
|
|
26
|
+
|
|
27
|
+
#### `eventcontract` — an async event contract, the twin of endpoint
|
|
28
|
+
One card per event: a producers → consumers strip, delivery facts as chips,
|
|
29
|
+
and the payload table with the partition key marked. Answers: who emits
|
|
30
|
+
this, who consumes it, and what does the payload guarantee?
|
|
31
|
+
Only `name` is required. The card needs no title.
|
|
32
|
+
`eventcontract`, not `endpoint`, when the channel is a topic or queue and the
|
|
33
|
+
caller never waits for a reply.
|
|
34
|
+
|
|
35
|
+
#### `packet` — a wire format, bit by bit
|
|
36
|
+
A bit ruler across the top, then fields whose cell width is their bit count.
|
|
37
|
+
A field that overflows its row wraps and is marked `(cont.)`. The footer
|
|
38
|
+
totals bits and bytes. Answers: what does the wire carry, bit by bit?
|
|
39
|
+
`packet`, not `table`, when position and width on the wire are the point;
|
|
40
|
+
`table` for a field listing.
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Chiltepin blocks — Architecture
|
|
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**: Containment — boundaries and what lives inside them (`c4`,
|
|
8
|
+
`block` + presets, `cluster`, `archmap`) — and Network for module, class,
|
|
9
|
+
and actor graphs (`felogic`, `frontend`, `uml`, `usecase`, `pkg`).
|
|
10
|
+
**Answers**: What lives inside which boundary? What depends on what, at rest?
|
|
11
|
+
**Not this family**: the order of calls → `sequence` (flows.md); branching or
|
|
12
|
+
a lifecycle → `flow` / `state` (flows.md); data shape → `erd` (data-model.md);
|
|
13
|
+
tiers with no arrows → `layers`; area by number → `treemap`; a CI/CD pipeline
|
|
14
|
+
→ `flow` with `variant: dag`.
|
|
15
|
+
|
|
16
|
+
#### `c4` — context / container / component
|
|
17
|
+
Boxes with kind chips inside dashed boundaries; the frame tag shows the
|
|
18
|
+
level. Answers one question per level. `c4`, not `block`, when C4 levels and
|
|
19
|
+
system boundaries carry the message; `sequence` for the order of calls.
|
|
20
|
+
- `level` is required, and one diagram holds one level. Never mix levels.
|
|
21
|
+
- Context: who uses it and what does it talk to. `person`, `system` (usually
|
|
22
|
+
one), and `external` only. 4–8 nodes.
|
|
23
|
+
- Container: the deployable pieces. One `boundary` (or `boundaries[]`) is the
|
|
24
|
+
system; every container carries `tech`; persons and externals sit outside.
|
|
25
|
+
5–9 nodes; past that, split the diagram.
|
|
26
|
+
- Component: inside ONE container, named in the title; `family` codes the layer.
|
|
27
|
+
- Every edge is a sentence: `label` an active verb phrase, `tech` the protocol.
|
|
28
|
+
One arrow from the caller; the reply is implied. Async edges are `dashed`.
|
|
29
|
+
- Externals are things you do not deploy. If your team owns it, it is a container.
|
|
30
|
+
- Omit `col`/`row` on every node for auto-layout; `dir: TB` flips it.
|
|
31
|
+
|
|
32
|
+
#### `block` — grid architecture with optional groups
|
|
33
|
+
Boxes and arrows on a grid. Known `kind`s (db, queue, cache, gateway, cdn,
|
|
34
|
+
and vendor names like postgres, s3, kafka, redis) get a glyph and a shape;
|
|
35
|
+
an unknown kind draws a plain box. Answers: what talks to what, at rest?
|
|
36
|
+
`block`, not `c4`, for free kinds, nested zones, and presets.
|
|
37
|
+
- `gateway`, `lb`, `proxy`, and `ingress` draw as the tall vertical bar of
|
|
38
|
+
system-design diagrams. It spans the rows of the services it fans out to
|
|
39
|
+
on its own; set `h` to choose the span. Put the bar in its own column.
|
|
40
|
+
- `preset` (infra, event, ddd, network, k8s) changes only the framing: the tag,
|
|
41
|
+
the eyebrow, and which kind is the accent entry. The YAML is the same.
|
|
42
|
+
- Omit `col`/`row` on every node for auto-layout. Use coordinates for a
|
|
43
|
+
deliberate shape, and always with `groups`.
|
|
44
|
+
- `layers:` switches to horizontal bands; nodes then use `layer`, not
|
|
45
|
+
`col`/`row`. Do not mix the two modes.
|
|
46
|
+
- `groups` nest by overlap (the larger paints first) or by `parent`. A child's
|
|
47
|
+
cells must lie inside its parent's range (`W_GROUP_NESTING`).
|
|
48
|
+
- `replicas: N` (2 or more) draws a stacked card. For a database replica set
|
|
49
|
+
use two nodes and a dashed `replicates` edge.
|
|
50
|
+
- `preset: k8s`: a namespace is a group and `ingress` is the entry; nest
|
|
51
|
+
namespaces inside a cluster with `parent`.
|
|
52
|
+
```block
|
|
53
|
+
groups:
|
|
54
|
+
- { id: vpc, col: 1, row: 1, cols: 2, rows: 2, label: VPC }
|
|
55
|
+
- { id: pub, parent: vpc, col: 1, row: 1, cols: 2, rows: 1, label: Public subnet }
|
|
56
|
+
- { id: priv, parent: vpc, col: 1, row: 2, cols: 2, rows: 1, label: Private subnet }
|
|
57
|
+
nodes:
|
|
58
|
+
- { id: alb, col: 1, row: 1, kind: gateway, name: ALB }
|
|
59
|
+
- { id: api, col: 1, row: 2, kind: service, name: orders-api, replicas: 3 }
|
|
60
|
+
edges:
|
|
61
|
+
- alb -> api
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
#### `cluster` — k8s-style nested boxes with services
|
|
65
|
+
Namespace boxes holding service cards with replica bars; a single `gateway`
|
|
66
|
+
service takes the accent. Answers: which services run in which namespace?
|
|
67
|
+
`block` with `preset: k8s` for nested namespaces or a mixed cloud + cluster map.
|
|
68
|
+
|
|
69
|
+
#### `archmap` — target-architecture capability map
|
|
70
|
+
A mosaic of tinted domain areas packed with capability tiles. A plain string
|
|
71
|
+
is a current capability; `status` marks target, new, gap, or deprecated.
|
|
72
|
+
Answers: what lives in each domain? `block` when the arrows between systems matter.
|
|
73
|
+
|
|
74
|
+
#### `felogic` — frontend / backend module graph
|
|
75
|
+
Module boxes with UML stereotype banners (interface, controller, service,
|
|
76
|
+
repository) and typed edges. `variant: be` changes only the framing.
|
|
77
|
+
Answers: which module uses or implements which? Omit `col`/`row` and
|
|
78
|
+
`groups` for auto-layout. `felogic`, not `uml`, for a module graph.
|
|
79
|
+
|
|
80
|
+
#### `frontend` — top-down component tree
|
|
81
|
+
Parents above children with link paths, one `root`. Answers: how do the
|
|
82
|
+
components nest? `frontend`, not `tree`, for a UI component tree with kinds
|
|
83
|
+
(layout, page, hook, store).
|
|
84
|
+
|
|
85
|
+
#### `uml` — class diagram
|
|
86
|
+
Class boxes with attributes and methods; the relation `kind` drives the
|
|
87
|
+
arrow marker. Answers: which classes inherit, implement, or depend on which?
|
|
88
|
+
`uml`, not `erd`, for classes with behaviour; `erd` for tables and cardinality.
|
|
89
|
+
#### `usecase` — UML use-case diagram
|
|
90
|
+
Actors outside the `system` boundary, cases (verb phrases, ≤ 12) inside,
|
|
91
|
+
`links` as `actor -> case`, `relations` `kind: include | extend | generalize`. Answers: who uses it for what?
|
|
92
|
+
#### `pkg` — UML package diagram
|
|
93
|
+
Tabbed folders with `contains` members, `parent` to nest, `deps` dashed with
|
|
94
|
+
`kind: import | use | access | merge`. Answers: which module may depend on which?
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Chiltepin blocks — Business, decisions & access
|
|
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 — compare, score, locate (`matrix`, `scorecard`, `harvey`,
|
|
8
|
+
`swot`, `scenarios`); cards for decisions, strategy, and access (the rest).
|
|
9
|
+
**Answers**: How do the options compare, and which won? Who may do what?
|
|
10
|
+
What forces shaped this design? Do the numbers pencil out?
|
|
11
|
+
**Not this family**: measured numbers → `benchmark` (tables-data.md); one
|
|
12
|
+
option's tradeoffs → `proscons` (planning.md); the decision in one line →
|
|
13
|
+
`callout` (narrative.md); day-to-day task state → `statustable` (planning.md).
|
|
14
|
+
|
|
15
|
+
#### `matrix` — a role × resource capability grid
|
|
16
|
+
Rows are roles, columns resources, each cell a permission level tinted by meaning.
|
|
17
|
+
Answers: who may do what? `matrix`, not `table`, when every cell is a permission.
|
|
18
|
+
#### `anatomy` — the parts of a structured string (e.g. a permission)
|
|
19
|
+
The full string with each segment coloured, then one card per segment.
|
|
20
|
+
Answers: what does each part of this identifier mean? One string per block.
|
|
21
|
+
#### `composition` — effective access as intersected gates
|
|
22
|
+
Renders gate ∩ gate ∩ gate = result. Answers: which independent checks must
|
|
23
|
+
all pass? `composition`, not `flow`, when access is an AND of checks rather
|
|
24
|
+
than an ordered sequence.
|
|
25
|
+
#### `drivers` — the forces that shaped a design
|
|
26
|
+
A card grid, one card per driver with an icon and a tag; each is a real requirement
|
|
27
|
+
with its consequence. Answers: why is the design like this? `list` for plain points.
|
|
28
|
+
#### `team` — people cards (who owns what)
|
|
29
|
+
Compact cards: initials avatar, name, role, one-line focus; set `initials` for a group.
|
|
30
|
+
Answers: who owns what? `team` for real people; `persona` for user archetypes.
|
|
31
|
+
#### `options` — approaches explored, with a verdict
|
|
32
|
+
One card per option: how, pros, cons, verdict; `tone: chosen` marks the
|
|
33
|
+
winner. Answers: which approaches did we weigh, and which won?
|
|
34
|
+
`options`, not `proscons`, for several candidates; `proscons` weighs one.
|
|
35
|
+
#### `scorecard` — a weighted decision matrix
|
|
36
|
+
Criteria as rows, options as columns, a weighted TOTAL row; the winner is
|
|
37
|
+
derived. Answers: which option scores highest? `scorecard` when the decision
|
|
38
|
+
was scored; `options` for qualitative verdicts; `harvey` for judgements.
|
|
39
|
+
#### `spec` — a labelled spec sheet
|
|
40
|
+
A fact sheet for one approach or component; a row with `steps` draws a pill flow.
|
|
41
|
+
Answers: what are the facts of this one thing? `spec`, not `table`, for one subject.
|
|
42
|
+
#### `envelope` — back-of-envelope capacity math
|
|
43
|
+
Givens, one derivation row per step, then a highlighted bottom line. Every
|
|
44
|
+
value is a string; write units and `≈` freely. Answers: do the numbers pencil
|
|
45
|
+
out? `envelope` for the estimate that justifies a design; `stats` for KPIs.
|
|
46
|
+
#### `swot` — strengths / weaknesses / opportunities / threats
|
|
47
|
+
The 2×2 draws itself from four string lists; an empty quadrant still draws.
|
|
48
|
+
Answers: where do we stand? `swot` for a position; `quadrant` to plot items.
|
|
49
|
+
#### `okr` — objectives + key results
|
|
50
|
+
One card per objective, a progress bar per key result coloured by status.
|
|
51
|
+
Answers: how far are we on each goal? `slo` for reliability; `statustable` for tasks.
|
|
52
|
+
#### `persona` — user persona cards
|
|
53
|
+
Cards with an avatar, role, quote, goals, frustrations, and tool chips.
|
|
54
|
+
Answers: who do we build for? `persona` for archetypes; `team` for people.
|
|
55
|
+
#### `wardley` — value chain against evolution
|
|
56
|
+
Components plotted by user visibility (up) and evolution (right), both 0–1;
|
|
57
|
+
`movement` draws where one is heading. Answers: what do we build, and what
|
|
58
|
+
do we buy? A position on the map replaces an opinion.
|
|
59
|
+
#### `harvey` — the rated comparison
|
|
60
|
+
Options across, criteria down, a filled ball per judgement (0–4), a weighted
|
|
61
|
+
footer. A short `ratings` row means "not assessed", not zero. Answers: which
|
|
62
|
+
option fits best? `harvey` for judgements; `benchmark` for measured numbers.
|
|
63
|
+
#### `scqa` — the executive summary, in Minto order
|
|
64
|
+
Situation, complication, question as a ladder; the answer as the filled
|
|
65
|
+
card with its support. Answers: what is the recommendation, and why?
|
|
66
|
+
The order is fixed; keeping it is the block's job.
|
|
67
|
+
#### `scenarios` — base, upside and downside
|
|
68
|
+
Cases as columns, drivers as rows, the outcome in its own row; the base case
|
|
69
|
+
is badged. A missing value renders `·`, not zero. Answers: how much of the
|
|
70
|
+
outcome hangs on each assumption?
|