Not in the top 1,000 by GitHub stars
YuniqueUnic/a2ui-ask
Interactive UI for AI agents — turn structured questions into browser forms.
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 2f8c78aea5b1
No earlier version was observed for comparison.
skills/grill-with-docs/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 2f8c78aea5b1
No earlier version was observed for comparison.
Heat
0.3- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
- a2ui-ask
/ - grill-with-docs
skills/grill-with-docs
How it works
a2ui-ask
When your agent uses it
When the user must choose among options or fill in structured config, spawn a browser form (powered by schemaui Web UI, bound to 0.0.0.0), open the user's browser, and write the result to .schemaui/answers/. Never use a terminal/TUI prompt — the agent process has no TTY attachment. Supports rich content: figures on questions and answer options (Mermaid/SVG/Markdown via x-content / x-options) and a live Mermaid editor (x-control: mermaid). Trigger phrases: "give me a form", "ask me via form", "configure", "pick a deploy environment", "I need to choose", "grill me", "a2ui", "给我个表单", "配置一下", "用表单问我", "问我几个问题", "拷问我".
What it loads into context
Frontmatter
203 tokensAlways available to the agent
SKILL.md
5,704 tokensWhen the skill is activated
Reference documents
9,774 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Prerequisite: the schemaui engine
- Non-negotiables
- Asking well (grill-me discipline, form edition)
- Grilling: which interview skill to use
- Question type → schema cheat sheet
- Picking the control: use the gallery
- Figures: when a picture answers faster than prose
- Steps
- Exit codes and fallback
- Theming: make the form match the project
- Raw CLI (when the scripts are unavailable)
- Sensitive input
- Past answers
- Examples
- License
Scripts executed separately
package.jsonscripts/ask.ps1scripts/ask.pyscripts/ask.shscripts/install.ps1scripts/install.shtests/test_ask.py
Files
.github/workflows/ci.ymlasset1,533 bytes.github/workflows/publish.ymlasset845 bytes.gitignoreasset327 bytesLICENSEasset1,068 bytesREADME.ZH.mddoc10,545 bytesREADME.mddoc10,740 bytesSKILL.mdcore25,523 bytesSKILL.mdcore25,523 bytesSKILL.mdcore25,523 bytesSKILL.mdcore25,523 bytesSKILL.mdcore25,523 bytesSKILL.mdcore25,523 bytesSKILL.mdcore25,523 bytesSKILL.mdcore25,523 bytesSKILL.mdcore25,523 bytesSKILL.mdcore25,523 bytesa2ui-ask-site.pngasset886,186 bytesdocs/controls-gallery.pngasset340,805 bytesdocs/mermaid-editor.pngasset188,240 bytesdocs/rich-options.pngasset220,224 bytesdocs/web-ui.pngasset362,846 bytesexamples/deployment-architecture.defaults.jsonasset136 bytesexamples/deployment-architecture.schema.jsonasset6,790 bytesexamples/ecommerce-main-image.defaults.jsonasset554 bytesexamples/ecommerce-main-image.schema.jsonasset7,273 bytesexamples/env-defaults.jsonasset130 bytesexamples/env-schema.jsonasset1,149 bytesexamples/feature-brief.defaults.jsonasset649 bytesexamples/feature-brief.schema.jsonasset8,509 bytesexamples/invoice-reimbursement.defaults.jsonasset489 bytesexamples/invoice-reimbursement.schema.jsonasset5,115 bytesexamples/seo-diagnosis.defaults.jsonasset528 bytesexamples/seo-diagnosis.schema.jsonasset6,172 bytesexamples/web-research-brief.defaults.jsonasset1,421 bytesexamples/web-research-brief.schema.jsonasset16,136 bytesinstall.mddoc4,910 bytespackage.jsonruns693 bytesprompts/ask-user.prompt.mddoc1,638 bytesprompts/ask.prompt.mddoc9,654 bytesscripts/ask.ps1runs10,848 bytesscripts/ask.pyruns19,915 bytesscripts/ask.shruns9,706 bytesscripts/install.ps1runs6,937 bytesscripts/install.shruns6,740 bytestests/test_ask.pyruns35,764 bytes
Read SKILL.md
# a2ui-ask — collect user input via a browser form (file output)
Interactive UI for AI agents: turn structured questions into browser forms. The
rendering engine is the `schemaui` binary (`schemaui web`) from
[YuniqueUnic/schemaui](https://github.com/YuniqueUnic/schemaui); this skill
wraps it with scripts that handle binding, browser wakeup, timeout, and the
file-output contract.
## Prerequisite: the schemaui engine
Check for the binary first: `command -v schemaui` (or just run the ask script —
it exits with code 3 when the engine is missing).
If missing, offer to install it — you can do this yourself, unattended:View the complete source on GitHubgrill-with-docs
When your agent uses it
Interview the user relentlessly about a plan or design until reaching shared understanding — one question at a time, walking each branch of the decision tree, every question carrying a recommended answer, and every answer grounded in the project's own docs and examples rather than guesses. Use when the user asks to be grilled, wants a plan stress-tested, or when a design has to be pinned down before code is written. Built into a2ui-ask so agents that need the discipline have it even when no separate grilling skill is installed.
What it loads into context
Frontmatter
126 tokensAlways available to the agent
SKILL.md
806 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Ground every question in the docs
- Interview discipline
- When the interview becomes a form
Files
SKILL.mdcore3,586 bytes
Read SKILL.md
# grill-with-docs — relentless interviewing, grounded in reference docs
Interview the user relentlessly about every aspect of this plan until you reach
a shared understanding. Walk down each branch of the decision tree, resolving
dependencies between decisions one by one: a choice that constrains later
questions gets asked before the questions it constrains. For every question,
provide your recommended answer — the user should be confirming or correcting,
not starting from a blank page.
Ask the questions **one at a time**, and stop when the answers have converged:
no new branches are opening, and you could write the plan down without inventing
anything.
If a question can be answered by exploring the codebase, git history, existingView the complete source on GitHubSkills included
- a2ui-ask
- grill-with-docs
Repository facts
- License
- MIT
- Created
- Sep 15, 2026
- Last pushed
- Sep 25, 2026
- Forks
- 0
- Open issues
- 1
- Project activity
- Active
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 4, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 9 notes
SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- 6 dangerous shell commandsin 2 files: scripts/ask.sh:197 scripts/install.sh:143
- 189 network referencesin 23 files: scripts/install.sh:15 tests/test_ask.py:140 SKILL.md:17 and 20 more
- No hidden or obfuscated text
- No instruction overrides
- 7 executable scriptsin 7 files: package.json:1 scripts/ask.ps1:1 scripts/ask.py:1 and 4 more
- 13 references to secretsin 3 files: tests/test_ask.py:36 .github/workflows/publish.yml:21 scripts/ask.py:136
- No requests to vote in Hot
Show all 215 signals by file
.github/workflows/publish.yml
README.ZH.md
- Network accessline 17
说明**(`x-content` / `x-options`),答案本身也可以是一张可编辑的 实时预览图(`x-control: "mermaid"`)。完整清单见 [`schemaui` 控件画廊](https://github.com/YuniqueUnic/schemaui/blob/main/examples/controls-gallery.schema.json) - Network accessline 18
实时预览图(`x-control: "mermaid"`)。完整清单见 [`schemaui` 控件画廊](https://github.com/YuniqueUnic/schemaui/blob/main/examples/controls-gallery.schema.json) 与 - Network accessline 19
[`schemaui` 控件画廊](https://github.com/YuniqueUnic/schemaui/blob/main/examples/controls-gallery.schema.json) - Network accessline 20
与 [富内容画廊](https://github.com/YuniqueUnic/schemaui/blob/main/examples/rich-content.schema.json); [`examples/web-research-brief.schema.json`](./examples/web-research-brief.schema.json) - Network accessline 21
[富内容画廊](https://github.com/YuniqueUnic/schemaui/blob/main/examples/rich-content.schema.json); - Network accessline 45
1. **用浏览器表单,不用终端。** Agent 在本地拉起一个 Web UI(以 [schemaui](https://github.com/YuniqueUnic/schemaui) 为引擎),绑定 - Network accessline 46
[schemaui](https://github.com/YuniqueUnic/schemaui) 为引擎),绑定 - Network accessline 69
前置条件:`schemaui` 二进制(表单引擎, [YuniqueUnic/schemaui](https://github.com/YuniqueUnic/schemaui))。自动安装脚 - Network accessline 70
[YuniqueUnic/schemaui](https://github.com/YuniqueUnic/schemaui))。自动安装脚 - Network accessline 78
脚本优先从 GitHub 下载,**在国内访问不了 github.com 时自动回退到 [Gitee 镜像](https://gitee.com/Credhat/schemaui)**(tag 与文件名跟 GitHub 保持一 - Network accessline 79
[Gitee 镜像](https://gitee.com/Credhat/schemaui)**(tag 与文件名跟 GitHub 保持一 - Network accessline 93
**方式一:一行安装 (推荐,走 [skills.sh](https://skills.sh))** - Network accessline 103
> 请帮我查找并自动安装 https://github.com/YuniqueUnic/a2ui-ask 这个 skill,clone - Network accessline 109
# 全局(所有项目可用) git clone https://github.com/YuniqueUnic/a2ui-ask.git ~/.claude/skills/a2ui-ask - Network accessline 110
git clone https://github.com/YuniqueUnic/a2ui-ask.git ~/.claude/skills/a2ui-ask - Network accessline 112
git clone https://github.com/YuniqueUnic/a2ui-ask.git .claude/skills/a2ui-ask - Network accessline 129
1. 脚本打印 `SCHEMAUI_URL=http://127.0.0.1:8787/` 并自动打开浏览器。 - Network accessline 204
- [linux.do](https://linux.do)
README.md
- Network accessline 21
an answer can _be_ a diagram via the live-preview `x-control: "mermaid"` editor. The full set lives in [`schemaui`'s controls gallery](https://github.com/YuniqueUnic/schemaui/blob/main/examples/controls-gallery.schema.json) - Network accessline 22
The full set lives in [`schemaui`'s controls gallery](https://github.com/YuniqueUnic/schemaui/blob/main/examples/controls-gallery.schema.json) and - Network accessline 23
[`schemaui`'s controls gallery](https://github.com/YuniqueUnic/schemaui/blob/main/examples/controls-gallery.schema.json) - Network accessline 24
and [rich-content gallery](https://github.com/YuniqueUnic/schemaui/blob/main/examples/rich-content.schema.json); [`examples/web-research-brief.schema.json`](./examples/web-research-brief.schema.json) - Network accessline 25
[rich-content gallery](https://github.com/YuniqueUnic/schemaui/blob/main/examples/rich-content.schema.json); - Network accessline 49
1. **Browser form, not terminal.** The agent spawns a local Web UI ([schemaui](https://github.com/YuniqueUnic/schemaui) as the engine) bound to - Network accessline 50
([schemaui](https://github.com/YuniqueUnic/schemaui) as the engine) bound to - Network accessline 75
Prerequisite: the `schemaui` binary (the form engine, [YuniqueUnic/schemaui](https://github.com/YuniqueUnic/schemaui)). The - Network accessline 76
[YuniqueUnic/schemaui](https://github.com/YuniqueUnic/schemaui)). The - Network accessline 84
It downloads from GitHub and falls back to the [Gitee mirror](https://gitee.com/Credhat/schemaui) when github.com is - Network accessline 85
[Gitee mirror](https://gitee.com/Credhat/schemaui) when github.com is - Network accessline 98
**Option 1 — one line (recommended, via [skills.sh](https://skills.sh))** - Network accessline 108
> Please find and install the skill at https://github.com/YuniqueUnic/a2ui-ask — - Network accessline 114
# global (all projects) git clone https://github.com/YuniqueUnic/a2ui-ask.git ~/.claude/skills/a2ui-ask - Network accessline 115
git clone https://github.com/YuniqueUnic/a2ui-ask.git ~/.claude/skills/a2ui-ask - Network accessline 117
git clone https://github.com/YuniqueUnic/a2ui-ask.git .claude/skills/a2ui-ask - Network accessline 134
1. The script prints `SCHEMAUI_URL=http://127.0.0.1:8787/` and opens your - Network accessline 218
- [linux.do](https://linux.do)
SKILL.md
- Network accessline 17
Interactive UI for AI agents: turn structured questions into browser forms. The rendering engine is the `schemaui` binary (`schemaui web`) from [YuniqueUnic/schemaui](https://github.com/YuniqueUnic/schemaui); this skill - Network accessline 18
rendering engine is the `schemaui` binary (`schemaui web`) from [YuniqueUnic/schemaui](https://github.com/YuniqueUnic/schemaui); this skill wraps it with scripts that handle binding, browser wakeup, timeout, and the - Network accessline 19
[YuniqueUnic/schemaui](https://github.com/YuniqueUnic/schemaui); this skill - Network accessline 35
Both default to a prebuilt-binary download (no toolchain needed) and support `--dry-run` / `-DryRun` to preview. They fetch from GitHub first and fall back to the [Gitee mirror](https://gitee.com/Credhat/schemaui) — same tags, same - Network accessline 36
`--dry-run` / `-DryRun` to preview. They fetch from GitHub first and fall back to the [Gitee mirror](https://gitee.com/Credhat/schemaui) — same tags, same asset names — which is what makes them work from mainland China. If a user - Network accessline 37
to the [Gitee mirror](https://gitee.com/Credhat/schemaui) — same tags, same - Network accessline 197
read `examples/deployment-architecture.schema.json` (中文 — every option carries a diagram). The engine's own galleries, [`schemaui/examples/controls-gallery.schema.json`](https://github.com/YuniqueUnic/schemaui/blob/main/examples/controls-ga - Network accessline 198
a diagram). The engine's own galleries, [`schemaui/examples/controls-gallery.schema.json`](https://github.com/YuniqueUnic/schemaui/blob/main/examples/controls-gallery.schema.json) and - Network accessline 199
[`schemaui/examples/controls-gallery.schema.json`](https://github.com/YuniqueUnic/schemaui/blob/main/examples/controls-gallery.schema.json) - Network accessline 200
and [`schemaui/examples/rich-content.schema.json`](https://github.com/YuniqueUnic/schemaui/blob/main/examples/rich-content.schema.json), show every hint value and every figure surface side by side. - Network accessline 201
[`schemaui/examples/rich-content.schema.json`](https://github.com/YuniqueUnic/schemaui/blob/main/examples/rich-content.schema.json), - Network accessline 273
> Form ready at http://localhost:8787 — I'll wait for you to fill it in. Your - Network accessline 322
`.dark { … }` too, or dark mode keeps the default accent. schemaui ships a worked example to copy: [`examples/themes/midnight.css`](https://github.com/YuniqueUnic/schemaui/blob/main/examples/themes/midnight.css). - Network accessline 324
[`examples/themes/midnight.css`](https://github.com/YuniqueUnic/schemaui/blob/main/examples/themes/midnight.css). - Network accessline 333
`POST /api/v1/save|exit|validate|preview|render`) and can host any directory containing an `index.html` via `--frontend DIR` — schemaui's [`examples/frontend/`](https://github.com/YuniqueUnic/schemaui/blob/main/examples/frontend/README.md) - Network accessline 334
containing an `index.html` via `--frontend DIR` — schemaui's [`examples/frontend/`](https://github.com/YuniqueUnic/schemaui/blob/main/examples/frontend/README.md) is the minimal scaffold. Reach for that only when CSS genuinely cannot expres - Network accessline 335
[`examples/frontend/`](https://github.com/YuniqueUnic/schemaui/blob/main/examples/frontend/README.md) - Network accessline 354
`--timeout` was given — that second line is how you learn the deadline without parsing the UI. Port 8787 busy → retry once with `--port 0` and parse the `http://…` line from stderr. A session that hits its deadline exits **4** and - Network accessline 355
parsing the UI. Port 8787 busy → retry once with `--port 0` and parse the `http://…` line from stderr. A session that hits its deadline exits **4** and writes nothing; drop `--timeout` (or pass `0`) for no deadline at all. Optional - Network accessline 356
`http://…` line from stderr. A session that hits its deadline exits **4** and - Network accessline 395
MIT — see [LICENSE](https://github.com/YuniqueUnic/a2ui-ask/blob/main/LICENSE).
examples/deployment-architecture.schema.json
examples/ecommerce-main-image.schema.json
examples/env-schema.json
examples/feature-brief.schema.json
examples/invoice-reimbursement.schema.json
examples/seo-diagnosis.defaults.json
examples/seo-diagnosis.schema.json
- Network accessline 1
{ "$schema": "http://json-schema.org/draft-07/schema#", - Network accessline 2
"$schema": "http://json-schema.org/draft-07/schema#", - Network accessline 9
"type": "string", "title": "网站地址", "description": "完整 URL,例如 https://example.com;诊断会以此为准抓取页面。", - Network accessline 11
"description": "完整 URL,例如 https://example.com;诊断会以此为准抓取页面。", - Network accessline 13
"default": "https://example.com"
examples/web-research-brief.defaults.json
- Network accessline 29
"delivery": { "kind": "html", "open_after_done": true }, "watchlist": [ { "name": "比亚迪", "kind": "品牌", "url": "https://www.byd.com" } - Network accessline 30
"watchlist": [ { "name": "比亚迪", "kind": "品牌", "url": "https://www.byd.com" } ], - Network accessline 31
{ "name": "比亚迪", "kind": "品牌", "url": "https://www.byd.com" }
examples/web-research-brief.schema.json
- Network accessline 1
{ "$schema": "http://json-schema.org/draft-07/schema#", - Network accessline 2
"$schema": "http://json-schema.org/draft-07/schema#", - Network accessline 418
"type": "string", "title": "参考链接(可选)", "default": "https://www.byd.com" - Network accessline 419
"title": "参考链接(可选)", "default": "https://www.byd.com" } - Network accessline 420
"default": "https://www.byd.com" - Network accessline 424
}, "default": [ { "name": "比亚迪", "kind": "品牌", "url": "https://www.byd.com" } - Network accessline 425
"default": [ { "name": "比亚迪", "kind": "品牌", "url": "https://www.byd.com" } ] - Network accessline 426
{ "name": "比亚迪", "kind": "品牌", "url": "https://www.byd.com" }
install.md
- Network accessline 3
`a2ui-ask` renders forms through the `schemaui` binary (from [`schemaui-cli`](https://github.com/YuniqueUnic/schemaui)). Everything below - Network accessline 4
[`schemaui-cli`](https://github.com/YuniqueUnic/schemaui)). Everything below - Network accessline 36
GitHub first, then the [Gitee mirror](https://gitee.com/Credhat/schemaui). The - Network accessline 59
# Scoop (Windows) scoop install https://raw.githubusercontent.com/YuniqueUnic/schemaui/main/packaging/scoop/schemaui-cli.json - Network accessline 60
scoop install https://raw.githubusercontent.com/YuniqueUnic/schemaui/main/packaging/scoop/schemaui-cli.json - Network accessline 78
Grab the archive for your platform from the [latest schemaui-cli release](https://github.com/YuniqueUnic/schemaui/releases) - Network accessline 79
[latest schemaui-cli release](https://github.com/YuniqueUnic/schemaui/releases) - Network accessline 80
(assets are named `schemaui-<target-triple>.tar.gz`, Windows also `.zip`). The same file is on the mirror at [gitee.com/Credhat/schemaui](https://gitee.com/Credhat/schemaui/releases) under - Network accessline 81
same file is on the mirror at [gitee.com/Credhat/schemaui](https://gitee.com/Credhat/schemaui/releases) under the same tag and name — swap the host and keep the path: - Network accessline 82
[gitee.com/Credhat/schemaui](https://gitee.com/Credhat/schemaui/releases) under - Network accessline 86
https://github.com/YuniqueUnic/schemaui/releases/download/<tag>/<asset> - Network accessline 87
https://gitee.com/Credhat/schemaui/releases/download/<tag>/<asset>
package.json
- Executable scriptline 1
Executable file - Network accessline 18
"repository": { "type": "git", "url": "https://github.com/YuniqueUnic/a2ui-ask.git" - Network accessline 19
"type": "git", "url": "https://github.com/YuniqueUnic/a2ui-ask.git" }, - Network accessline 20
"url": "https://github.com/YuniqueUnic/a2ui-ask.git" - Network accessline 21
}, "homepage": "https://github.com/YuniqueUnic/a2ui-ask", "files": [ - Network accessline 22
"homepage": "https://github.com/YuniqueUnic/a2ui-ask",
prompts/ask.prompt.md
- Network accessline 97
4. Tell the user in your response text: "I've prepared a form at http://\<host\>:8787 — please open it in your browser. I'll wait. Your - Network accessline 98
http://\<host\>:8787 — please open it in your browser. I'll wait. Your - Network accessline 123
`--timeout` was given — that line is how you learn the deadline without parsing the UI. If port 8787 is busy the command fails fast; retry once with `--port 0`, parse the `http://…` line from stderr, and relay that URL. - Network accessline 125
`--port 0`, parse the `http://…` line from stderr, and relay that URL.
scripts/ask.ps1
- Executable scriptline 1
Executable file - Network accessline 11
Stdout contract: SCHEMAUI_URL=http://127.0.0.1:8787/ - Network accessline 12
SCHEMAUI_URL=http://127.0.0.1:8787/ - Network accessline 13
SCHEMAUI_LAN_URL=http://192.168.1.5:8787/ (only for wildcard hosts) - Network accessline 75
# http://0.0.0.0:8787/ -> http://127.0.0.1:8787/ (browsers need a concrete host) - Network accessline 214
# Wait for the "available at http://..." line (or an early exit).
scripts/ask.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 9
Stdout contract (each line printed flushed, in order): SCHEMAUI_URL=http://127.0.0.1:8787/ URL to open on this machine - Network accessline 10
SCHEMAUI_URL=http://127.0.0.1:8787/ URL to open on this machine - Network accessline 11
SCHEMAUI_LAN_URL=http://192.168.1.5:8787/ LAN URL (only for wildcard hosts) - Network accessline 103
def detect_lan_ip() -> str | None: try: with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as probe: - Network accessline 105
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as probe: - Access to secretsline 136
[Credential-related source omitted]
scripts/ask.sh
- Executable scriptline 1
#!/usr/bin/env bash - Network accessline 8
# # Stdout contract: # SCHEMAUI_URL=http://127.0.0.1:8787/ - Network accessline 9
# Stdout contract: # SCHEMAUI_URL=http://127.0.0.1:8787/ # SCHEMAUI_ANSWER=.schemaui/answers/<topic>-<timestamp>.json - Network accessline 10
# SCHEMAUI_URL=http://127.0.0.1:8787/ - Network accessline 131
localize_url() { case "$1" in http://0.0.0.0:*) echo "http://127.0.0.1:${1#http://0.0.0.0:}" ;; - Network accessline 132
case "$1" in http://0.0.0.0:*) echo "http://127.0.0.1:${1#http://0.0.0.0:}" ;; http://\[::\]:*) echo "http://127.0.0.1:${1#http://[::]:}" ;; - Network accessline 133
http://0.0.0.0:*) echo "http://127.0.0.1:${1#http://0.0.0.0:}" ;; - Network accessline 134
http://\[::\]:*) echo "http://127.0.0.1:${1#http://[::]:}" ;; - Network accessline 186
# Wait for the "available at http://..." line (or an early exit). - Dangerous shell operationline 197
rm -f "$err_log" - Dangerous shell operationline 211
rm -f "$fired" - Dangerous shell operationline 227
rm -f "$err_log" - Dangerous shell operationline 230
rm -f "$fired" - Dangerous shell operationline 238
[ -n "$fired" ] && rm -f "$fired"
scripts/install.ps1
- Executable scriptline 1
Executable file - Network accessline 82
function Get-GitHubUrl { $tag = Get-NewestCliTag "https://api.github.com/repos/$GitHubRepo/releases?per_page=100" - Network accessline 83
$tag = Get-NewestCliTag "https://api.github.com/repos/$GitHubRepo/releases?per_page=100" if ($tag) { return "https://github.com/$GitHubRepo/releases/download/$tag/$asset" - Network accessline 84
if ($tag) { return "https://github.com/$GitHubRepo/releases/download/$tag/$asset" } - Network accessline 85
return "https://github.com/$GitHubRepo/releases/download/$tag/$asset" - Network accessline 88
return "https://github.com/$GitHubRepo/releases/latest/download/$asset" - Network accessline 91
function Get-GiteeUrl { $tag = Get-NewestCliTag "https://gitee.com/api/v5/repos/$GiteeRepo/releases?per_page=100" - Network accessline 92
$tag = Get-NewestCliTag "https://gitee.com/api/v5/repos/$GiteeRepo/releases?per_page=100" - Network accessline 95
if (-not $tag) { return $null } return "https://gitee.com/$GiteeRepo/releases/download/$tag/$asset" - Network accessline 96
return "https://gitee.com/$GiteeRepo/releases/download/$tag/$asset" - Network accessline 144
function Install-Scoop { if (-not (Get-Command scoop -ErrorAction SilentlyContinue)) { return $false } scoop install https://raw.githubusercontent.com/$GitHubRepo/main/packaging/scoop/schemaui-cli.json - Network accessline 145
if (-not (Get-Command scoop -ErrorAction SilentlyContinue)) { return $false } scoop install https://raw.githubusercontent.com/$GitHubRepo/main/packaging/scoop/schemaui-cli.json return ($LASTEXITCODE -eq 0) - Network accessline 146
scoop install https://raw.githubusercontent.com/$GitHubRepo/main/packaging/scoop/schemaui-cli.json
scripts/install.sh
- Executable scriptline 1
#!/usr/bin/env bash - Network accessline 15
# Env overrides: # SCHEMAUI_INSTALL_DIR install directory (default: ~/.local/bin) # http_proxy/https_proxy honored by curl for the download step. - Network accessline 17
# http_proxy/https_proxy honored by curl for the download step. - Network accessline 87
newest_cli_tag() { command -v curl >/dev/null 2>&1 || return 1 - Network accessline 88
command -v curl >/dev/null 2>&1 || return 1 - Network accessline 89
curl -fsL --max-time 20 "$1" 2>/dev/null \ - Network accessline 97
github_url() { local tag tag="$(newest_cli_tag "https://api.github.com/repos/${GITHUB_REPO}/releases?per_page=100")" || true - Network accessline 98
local tag tag="$(newest_cli_tag "https://api.github.com/repos/${GITHUB_REPO}/releases?per_page=100")" || true if [ -n "$tag" ]; then - Network accessline 99
tag="$(newest_cli_tag "https://api.github.com/repos/${GITHUB_REPO}/releases?per_page=100")" || true if [ -n "$tag" ]; then echo "https://github.com/${GITHUB_REPO}/releases/download/${tag}/${ASSET}" - Network accessline 100
if [ -n "$tag" ]; then echo "https://github.com/${GITHUB_REPO}/releases/download/${tag}/${ASSET}" else - Network accessline 101
echo "https://github.com/${GITHUB_REPO}/releases/download/${tag}/${ASSET}" - Network accessline 104
echo "https://github.com/${GITHUB_REPO}/releases/latest/download/${ASSET}" - Network accessline 108
gitee_url() { local tag tag="$(newest_cli_tag "https://gitee.com/api/v5/repos/${GITEE_REPO}/releases?per_page=100")" || true - Network accessline 110
tag="$(newest_cli_tag "https://gitee.com/api/v5/repos/${GITEE_REPO}/releases?per_page=100")" || true - Network accessline 113
[ -n "$tag" ] || return 1 echo "https://gitee.com/${GITEE_REPO}/releases/download/${tag}/${ASSET}" - Network accessline 114
echo "https://gitee.com/${GITEE_REPO}/releases/download/${tag}/${ASSET}" - Network accessline 125
URLS="$(candidate_urls || true)" [ -n "$URLS" ] || fail "could not resolve a download URL for $ASSET (is curl installed?)" - Network accessline 126
[ -n "$URLS" ] || fail "could not resolve a download URL for $ASSET (is curl installed?)" - Network accessline 138
install_download() { command -v curl >/dev/null 2>&1 || return 1 - Network accessline 139
command -v curl >/dev/null 2>&1 || return 1 - Dangerous shell operationline 143
trap 'rm -rf "$tmp"' RETURN - Network accessline 146
for url in $URLS; do say "downloading prebuilt binary from ${url%%/releases/*}…" if curl -fsL --retry 2 --connect-timeout 20 -o "$tmp/$ASSET" "$url" \ - Network accessline 147
say "downloading prebuilt binary from ${url%%/releases/*}…" if curl -fsL --retry 2 --connect-timeout 20 -o "$tmp/$ASSET" "$url" \ && tar -xzf "$tmp/$ASSET" -C "$tmp"; then - Network accessline 148
if curl -fsL --retry 2 --connect-timeout 20 -o "$tmp/$ASSET" "$url" \
skills/grill-with-docs/SKILL.md
- Network accessline 33
feature brief should be shaped by how similar features are scoped in this repo, a UI by the design system, a schema by the engine's own examples. Concretely, for forms built with [schemaui](https://github.com/YuniqueUnic/schemaui): - Network accessline 35
for forms built with [schemaui](https://github.com/YuniqueUnic/schemaui): - Network accessline 40
a good schema look like"; - schemaui's own [controls gallery](https://github.com/YuniqueUnic/schemaui/blob/main/examples/controls-gallery.schema.json) - Network accessline 41
- schemaui's own [controls gallery](https://github.com/YuniqueUnic/schemaui/blob/main/examples/controls-gallery.schema.json) and - Network accessline 42
[controls gallery](https://github.com/YuniqueUnic/schemaui/blob/main/examples/controls-gallery.schema.json) - Network accessline 43
and [rich-content gallery](https://github.com/YuniqueUnic/schemaui/blob/main/examples/rich-content.schema.json) — every hint value and every figure surface side by side. - Network accessline 44
[rich-content gallery](https://github.com/YuniqueUnic/schemaui/blob/main/examples/rich-content.schema.json)
tests/test_ask.py
- Executable scriptline 1
Executable file - Access to secretsline 36
[Credential-related source omitted] - Access to secretsline 37
[Credential-related source omitted] - Network accessline 140
assert ( ask.extract_url("Probe schemaui UI available at http://0.0.0.0:8787/") - Network accessline 141
ask.extract_url("Probe schemaui UI available at http://0.0.0.0:8787/") - Network accessline 142
== "http://0.0.0.0:8787/" - Network accessline 145
assert ( ask.extract_url("schemaui web UI available at http://127.0.0.1:56615/") - Network accessline 146
ask.extract_url("schemaui web UI available at http://127.0.0.1:56615/") - Network accessline 147
== "http://127.0.0.1:56615/" - Network accessline 152
def test_localize_url_rewrites_wildcard_only(): assert ask.localize_url("http://0.0.0.0:8787/") == "http://127.0.0.1:8787/" - Network accessline 153
assert ask.localize_url("http://0.0.0.0:8787/") == "http://127.0.0.1:8787/" - Network accessline 154
assert ask.localize_url("http://[::]:9000/") == "http://127.0.0.1:9000/" - Network accessline 155
assert ask.localize_url("http://192.168.1.5:8787/") == "http://192.168.1.5:8787/" - Network accessline 158
def test_lan_url_only_for_wildcard(): assert ask.lan_url("http://127.0.0.1:8787/") is None - Network accessline 159
assert ask.lan_url("http://127.0.0.1:8787/") is None - Network accessline 160
url = ask.lan_url("http://0.0.0.0:8787/") - Network accessline 335
for path in paths: try: return urllib.request.urlopen(f"{url}{path}", timeout=5) - Network accessline 336
try: return urllib.request.urlopen(f"{url}{path}", timeout=5) except urllib.error.HTTPError as error: - Network accessline 337
return urllib.request.urlopen(f"{url}{path}", timeout=5) - Network accessline 347
last: Exception | None = None for path in paths: req = urllib.request.Request( - Network accessline 348
for path in paths: req = urllib.request.Request( f"{url}{path}", - Network accessline 349
req = urllib.request.Request( - Network accessline 354
) try: return urllib.request.urlopen(req, timeout=5) - Network accessline 355
try: return urllib.request.urlopen(req, timeout=5) except urllib.error.HTTPError as error: - Network accessline 356
return urllib.request.urlopen(req, timeout=5) - Access to secretsline 615
[Credential-related source omitted] - Access to secretsline 842
[Credential-related source omitted] - Access to secretsline 879
[Credential-related source omitted] - Access to secretsline 901
[Credential-related source omitted] - Access to secretsline 926
[Credential-related source omitted] - Access to secretsline 942
[Credential-related source omitted] - Access to secretsline 956
[Credential-related source omitted] - Access to secretsline 977
[Credential-related source omitted]
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Declared and executed: 2 facts
- Contacts 192.168.1.5, which SKILL.md, the README and the plugin manifest do not mentionscripts/ask.ps1:13High confidence
- Contacts raw.githubusercontent.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/install.ps1:146High confidence
Signal confidence: 183 facts
- Network access in prose of documentationREADME.ZH.md:17Low confidence
- Network access in prose of documentationREADME.ZH.md:18Low confidence
- Network access in prose of documentationREADME.ZH.md:19Low confidence
- Network access in prose of documentationREADME.ZH.md:20Low confidence
- Network access in prose of documentationREADME.ZH.md:21Low confidence
- Network access in prose of documentationREADME.ZH.md:45Low confidence
- Network access in prose of documentationREADME.ZH.md:46Low confidence
- Network access in prose of documentationREADME.ZH.md:69Low confidence
- Network access in prose of documentationREADME.ZH.md:70Low confidence
- Network access in prose of documentationREADME.ZH.md:78Low confidence
- Network access in prose of documentationREADME.ZH.md:79Low confidence
- Network access in prose of documentationREADME.ZH.md:93Low confidence
- Network access in prose of documentationREADME.ZH.md:103Low confidence
- Network access in code of documentationREADME.ZH.md:109Low confidence
- Network access in code of documentationREADME.ZH.md:110Low confidence
- Network access in code of documentationREADME.ZH.md:112Low confidence
- Network access in prose of documentationREADME.ZH.md:129Low confidence
- Network access in prose of documentationREADME.ZH.md:204Low confidence
- Network access in prose of documentationREADME.md:21Low confidence
- Network access in prose of documentationREADME.md:22Low confidence
- Network access in prose of documentationREADME.md:23Low confidence
- Network access in prose of documentationREADME.md:24Low confidence
- Network access in prose of documentationREADME.md:25Low confidence
- Network access in prose of documentationREADME.md:49Low confidence
- Network access in prose of documentationREADME.md:50Low confidence
- Network access in prose of documentationREADME.md:75Low confidence
- Network access in prose of documentationREADME.md:76Low confidence
- Network access in prose of documentationREADME.md:84Low confidence
- Network access in prose of documentationREADME.md:85Low confidence
- Network access in prose of documentationREADME.md:98Low confidence
- Network access in prose of documentationREADME.md:108Low confidence
- Network access in code of documentationREADME.md:114Low confidence
- Network access in code of documentationREADME.md:115Low confidence
- Network access in code of documentationREADME.md:117Low confidence
- Network access in prose of documentationREADME.md:134Low confidence
- Network access in prose of documentationREADME.md:218Low confidence
- Network access in prose of the SKILL.mdSKILL.md:17Low confidence
- Network access in prose of the SKILL.mdSKILL.md:18Low confidence
- Network access in prose of the SKILL.mdSKILL.md:19Low confidence
- Network access in prose of the SKILL.mdSKILL.md:35Low confidence
- Network access in prose of the SKILL.mdSKILL.md:36Low confidence
- Network access in prose of the SKILL.mdSKILL.md:37Low confidence
- Network access in prose of the SKILL.mdSKILL.md:197Low confidence
- Network access in prose of the SKILL.mdSKILL.md:198Low confidence
- Network access in prose of the SKILL.mdSKILL.md:199Low confidence
- Network access in prose of the SKILL.mdSKILL.md:200Low confidence
- Network access in prose of the SKILL.mdSKILL.md:201Low confidence
- Network access in prose of the SKILL.mdSKILL.md:273Low confidence
- Network access in prose of the SKILL.mdSKILL.md:322Low confidence
- Network access in prose of the SKILL.mdSKILL.md:324Low confidence
and 133 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Compatible | Standard SKILL.md SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.