Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Convert Chinese or mixed-language text, iMandalArt cards, Obsidian 九宮, 表格, Mandala notes, or eight-domain outlines into a Markdown 3x3 nine-grid table with an ◎ center, then copy, save, append, or hand it to apps that render Markdown tables such as Obsidian and AIDA. Use when the user asks for Markdown 九宮格, Obsidian 九宮, Markdown table 九宮, 曼陀羅表格, nine-grid clipboard, AIDA table output, or conversion between Markdown 九宮, iMandalArt, and 81-grid workflows.
.claude/skills/twhsi-markdown-nine-grid-clipboard/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 123% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 104% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 144% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 47% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 56% | 0% |
Create a copyable Markdown 3x3 nine-grid table for apps that render Markdown tables.
Markdown 九宮 is:
It is not:
Keep these formats connected but distinct:
| Format | Role | Use | |---|---|---| | Markdown 九宮 | structured Markdown table | Obsidian/AIDA/table apps | | iMandalArt | square phone-readable card | Hermes/Discord visual card | | 81 宮 | 9x9 expansion | full Mandala expansion |
Markdown 九宮 can take an existing iMandalArt with eight fields and turn it into a table. It can also become the first-layer input for iMandalArt or 81 宮 expansion.
◎.<br>.title<br>content.Example:
markdown| 權威訊號<br>原詞命名者 | 時代轉折<br>語言正換代 | 代理工程<br>新主戰場起 | |---|---|---| | 創業痛點<br>更快做產品 | ◎交付新核心 | 示範能力<br>測修再部署 | | 一人公司<br>能力被放大 | 工具名稱冷<br>流程才主角 | 交付風險<br>驗收更重要 |
◎ to the center if the source center lacks it.<= 6 Chinese characters: one line.> 6 Chinese characters: title/content or two-line split.scripts/copy_grid.py to validate, format, copy, and optionally save/append the table.Run from the skill directory:
bashpython3 scripts/copy_grid.py --cells cells.json
Useful options:
bashpython3 scripts/copy_grid.py --cells cells.json --out grid.md --no-copy python3 scripts/copy_grid.py --cells cells.json --append-to ObsidianNote.md --target obsidian python3 scripts/copy_grid.py --cells cells.json --target aida
cells.json accepts either strings or title/content objects:
json{ "top_left": {"title": "權威訊號", "content": "原詞命名者"}, "top_center": "時代轉折換代", "top_right": "代理工程主場", "middle_left": "創業痛點加速", "center": "交付成新核心", "middle_right": {"title": "示範能力", "content": "測修再部署"}, "bottom_left": "一人公司放大", "bottom_center": "工具名稱冷流程主角", "bottom_right": "交付風險驗收更要" }
The script:
◎ to the center when missing.<br> lines.--no-copy is set.--out or --append-to is provided.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 10,385 | 11,469 | +10% | 1 | 1 | 0% | 1,730 | 3,055 | +77% | 0 | 0 | — |
case-02 | fail→pass | 5,742 | 6,384 | +11% | 1 | 1 | 0% | 1,045 | 2,333 | +123% | 0 | 0 | — |
case-03 | fail→pass | 5,461 | 5,782 | +6% | 1 | 1 | 0% | 1,024 | 2,092 | +104% | 0 | 0 | — |
case-04 | pass→fail | 13,804 | 9,091 | -34% | 1 | 1 | 0% | 2,478 | 2,763 | +12% | 0 | 0 | — |
case-05 | fail→fail | 23,661 | 17,727 | -25% | 1 | 1 | 0% | 4,173 | 4,464 | +7% | 0 | 0 | — |
case-06 | pass→pass | 12,410 | 8,152 | -34% | 1 | 1 | 0% | 2,198 | 2,563 | +17% | 0 | 0 | — |
case-07 | pass→pass | 5,154 | 3,903 | -24% | 1 | 1 | 0% | 1,020 | 1,812 | +78% | 0 | 0 | — |
case-08 | fail→pass | 5,237 | 7,797 | +49% | 1 | 1 | 0% | 1,121 | 2,733 | +144% | 0 | 0 | — |
case-09 | pass→pass | 6,414 | 5,724 | -11% | 1 | 1 | 0% | 1,246 | 2,193 | +76% | 0 | 0 | — |
case-14 | pass→pass | 8,861 | 2,416 | -73% | 1 | 1 | 0% | 1,307 | 1,496 | +14% | 0 | 0 | — |
case-10 | pass→pass | 3,695 | 3,227 | -13% | 1 | 1 | 0% | 673 | 1,602 | +138% | 0 | 0 | — |
case-11 | fail→pass | 6,444 | 3,420 | -47% | 1 | 1 | 0% | 1,117 | 1,644 | +47% | 0 | 0 | — |
case-12 | fail→pass | 6,942 | 6,398 | -8% | 1 | 1 | 0% | 1,408 | 2,192 | +56% | 0 | 0 | — |
case-13 | fail→pass | 19,893 | 2,270 | -89% | 1 | 1 | 0% | 1,612 | 1,449 | -10% | 0 | 0 | — |
case-15 | fail→pass | 10,767 | 3,286 | -69% | 1 | 1 | 0% | 1,799 | 1,626 | -10% | 0 | 0 | — |
case-16 | pass→pass | 7,685 | 1,906 | -75% | 1 | 1 | 0% | 1,169 | 1,377 | +18% | 0 | 0 | — |
case-17 | fail→pass | 6,437 | 2,030 | -68% | 1 | 1 | 0% | 1,092 | 1,415 | +30% | 0 | 0 | — |
case-18 | fail→pass | 7,335 | 2,140 | -71% | 1 | 1 | 0% | 1,147 | 1,438 | +25% | 0 | 0 | — |
case-19 | fail→pass | 11,454 | 4,251 | -63% | 1 | 1 | 0% | 1,714 | 1,763 | +3% | 0 | 0 | — |
case-20 | pass→pass | 13,050 | 8,755 | -33% | 1 | 1 | 0% | 2,156 | 2,406 | +12% | 0 | 0 | — |
case-21 | fail→pass | 7,519 | 6,339 | -16% | 1 | 1 | 0% | 1,211 | 2,119 | +75% | 0 | 0 | — |
case-22 | pass→fail | 14,210 | 5,807 | -59% | 1 | 1 | 0% | 2,486 | 2,022 | -19% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +41 percentage points is the difference between those two pass rates over the 22 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.