bunjs:tui
Build, review, or debug OpenTUI terminal UIs — React JSX or core constructs, Yoga flexbox, gradient meters, colour screenshots. Any Bun/TypeScript TUI. Only Bun is tested;
Part of bunjs.
30 reference documents, about 1,753 lines.
The skill itself does not contain them. It reads your question and names the one or two worth opening — which is the point, because loading everything below to answer one question would cost more than the answer is worth.
Overviews
| Document | Covers | Lines |
|---|---|---|
aesthetics-and-color.md | Aesthetics & Colour — dense, colourful OpenTUI dashboards | 211 |
app-architecture.md | App architecture | 121 |
components-and-charts.md | Components & Charts | 151 |
core-api.md | OpenTUI core API | 76 |
react-patterns.md | React patterns | 216 |
screenshot-workflow.md | Screenshot Workflow — see your TUI in colour | 138 |
testing.md | Testing OpenTUI TUIs | 111 |
versions-and-builds.md | Versions and builds — MEASURED, not remembered | 120 |
Scripts · fixtures
| Document | Covers | Lines |
|---|---|---|
bypass-1-blockquoted-fence.md | Bypass 1 — a mixed snippet hiding inside a blockquoted fence | 23 |
bypass-13-tilde-fence.md | Bypass 13 — a tilde fence | 21 |
bypass-14-fence-info-string.md | Bypass 14 — an info string after the language | 26 |
bypass-15-blockquoted-tilde-and-info.md | Bypass 15 — blockquoting the other two fence forms | 25 |
bypass-17-indirect-calls.md | Bypass 17 (found here, not reported) — reaching the construct without naming it in call position | 61 |
bypass-19-unterminated-fence.md | Bypass 19 (found here, not reported) — a fence with no closing fence | 14 |
bypass-20-cross-block.md | Bypass 20 (found here, not reported) — the two surfaces split across two fences of one file | 24 |
bypass-21-indented-block.md | Bypass 21 (found here, not reported) — markdown's other code block | 20 |
bypass-22-dynamic-import.md | Bypass 22 (found here, not reported) — the binding arrives at runtime | 32 |
bypass-23-unlabelled-fence.md | Bypass 23 (found here, not reported) — dropping the language tag | 24 |
bypass-24-list-nested-fence.md | Bypass 24 (found here, not reported) — a fence indented under a list item | 27 |
bypass-25-lexical-obfuscation.md | Bypass 25 (found here, not reported) — the name and the tag are not spelled the way they read | 41 |
bypass-26-gate-boundary.md | Bypass 26 (found here, not reported) — the gate must exempt what is below it and nothing above | 28 |
bypass-27-crlf-markdown.md | Bypass 27 (found here, not reported) — a markdown file with CRLF line endings | 16 |
bypass-28-conditional-alias.md | Bypass 28 (found here, not reported) — one expression naming two values | 29 |
bypass-8-plain-mixed-block.md | Bypass 8 — baseline rule 4, must not regress | 27 |
clean-consumer-readme.md | CLEAN — an ordinary app README, which must not set off the extraction alarm | 31 |
clean-surface-banner.md | CLEAN — the mandated surface banner must not self-trigger | 30 |
README.md | check-surface fixtures — negative controls | 43 |
warn-unpaired-fence.md | WARN — a fence that opens a tsx block and yields nothing | 18 |
Scripts · fixtures · references
| Document | Covers | Lines |
|---|---|---|
components-and-charts.md | Bypass 30 (reported as a disclosure, closed here) — a fixture, not the real reference | 30 |
core-api.md | CLEAN — a fixture, not the real reference | 19 |
Reading these
You do not open these yourself in normal use — /bunjs:tui picks for you. Read them
directly when you want the reference rather than the answer, or to check what the advice
is actually based on.