rt skills blocks
rt › skills › blocks
Show one skill as its tree of blocks, with each layer's text
Usage
rt skills blocks [flags]
Arguments & flags
| Flag / Arg | Type | Default | Description |
|---|---|---|---|
--pack | text | Pack name (--team still accepted); omit to pick from the discovered packs, or run from inside a pack tree to act on that tree | |
--skill | text | Skill or stage name | |
--manifest | text | Manifest path; omit to read ~/.mattstack/repos/<repo>/packs/<pack>/skills.jsonc | |
--repo | text | Which repo's bindings file to read when this pack binds several; omit for the first repo the team declares | |
--json | boolean | false | Machine-readable result |
See code: commands/skills.ts › skillsBlocks
Examples & notes
Every mattstack engine is a tree of blocks: an index.block.md root and one *.block.md file per section. Blocks prints a verb's tree with each block's title, the root first:
rt skills blocks --skill ship --pack widgets
ship
- ▤ Run
- ○ Gate resume offer
...
- ▤ Flow
- ○ Domain steps before gate
- ○ Gate ship
- ○ Commit named files
- ○ Stash them
- ○ Domain fast checks
...
- ▤ Domain rules
--skill takes a roster verb (ship) or a pipeline stage (stage-evidence).
--json carries each block's id, its props and the text each layer adds. A prop lists its merge, contract and default, and under values each layer that binds it. To list the blocks rt skills bind can fill, with their props:
rt skills blocks --skill ship --pack widgets --json \
| jq -r '.blocks[] | select(.props | length > 0) | "\(.id) \(.props | map("\(.name) (\(.merge))") | join(", "))"'
ship/flow/domain-steps-before-gate rules (add)
ship/flow/gate-ship rules (add)
ship/flow/commit-named-files rules (add)
ship/flow/domain-fast-checks rules (add)
ship/flow/fix-test-first rules (add)
ship/flow/resolve-conflict-files rules (add)
ship/flow/capture-after-case rules (add)
ship/flow/write-title-description rules (add)
ship/flow/run-watch-ci rules (add)
ship/domain-rules rules (add)
The id is what bind takes as its <block> argument. A prop with merge: add inlines every layer's value, the org base pack's first and then the team's. A prop with merge: replace takes the last layer's value only.
Once the widgets pack binds widgets:lint-changed to ship/flow/domain-fast-checks, that block's prop in --json reads:
{"name":"rules","merge":"add","default":"","contract":null,"values":[{"layer":"pack","binding":"widgets:lint-changed"}]}
The entry is trimmed here: the full one also carries marker and fromDefault, and each value carries the fill's path, color and lines.