Installs into .claude/skills of the current project.
Sponsors
SSkills DirectorySkills Directory
Know which skills are safe — weekly.
SSkills DirectorySkills Directory
Is that skill safe to install?
Are you the author of Agentj Reply Components?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/preangelleo-agentj-reply-components)
---
name: agentj-reply-components
description: Stable inline reply components, diagrams and draft-only forms. 回复内嵌组件、流程图与草稿表单。
---
# Reply components / 回复内嵌组件
Generated from web/reply-components.json. Use ordinary Markdown first. Do not use HTML, JavaScript, external scripts or tool callbacks. A malformed or incomplete component stays source text; never rely on it for approvals.
优先用普通 Markdown。不要输出 HTML、JS、外部脚本或工具回调。组件写错或未写完只显示原文,不能拿它代替权限审批。
For structured components use one complete JSON object per fenced `agentj` block. No secrets in forms. Form buttons only append a draft; confirm choices and existing reply: links send ordinary owner replies on one tap. Hold a confirm choice to put it into the draft for editing. Confirm never grants tool permission. Persistent to-dos remain the owner's official card, not a form.
结构化组件每个 `agentj` 围栏只放一个完整 JSON 对象。表单不收密码、密钥或其他秘密。表单按钮只填草稿;确认卡选项和 reply: 选项单击发送普通回复,长按确认卡选项则填草稿编辑。确认卡不能批准工具权限。持久待办继续用官方待办卡。
Local files / 本地文件:Write a complete Markdown link or image reference; absolute paths and ~/ both work. For a deterministic current-page attachment, run `agentj file show PATH --label LABEL --json` in the admitted owner phone turn. It reuses host path/type/secret checks and cannot select a device, group or friend. No live owner turn returns failure (including standalone desktop turns). `queued` is pending; wait for FILE_SHOW_RESULT with `attached_to_page` or `failure`. All carry client_downloaded:false: never claim the owner saw it. Do not use owner-only notify/send as a fallback. `PATH` accepts absolute paths and `~/`; it still must stay within the admitted working root. Failure reasons: `broker_unavailable` means the local attachment service cannot be reached; `no_owner_session` means the current owner turn or its context could not be confirmed; `native_admission_missing` means this exact request has not been admitted by the AI tool; `native_admission_expired` means its admission is no longer valid; `native_admission_ambiguous` means more than one valid admission matches. These failures do not attach a file. Keep the current owner turn and report the reason; do not change the target page or bypass the checks.
写完整的 Markdown 本地链接或图片引用,绝对路径和 ~/ 都支持。需要明确附到当前页时,在获准的主人手机回合运行 `agentj file show PATH --label 说明 --json`;沿用主机路径、类型和秘密检查,不能指定设备、群或好友。无有效主人回合(包括独立桌面回合)即失败。queued 只是排队,等 FILE_SHOW_RESULT 返回 attached_to_page 或 failure;client_downloaded 始终为 false,不能声称主人已看到。不要借主人专用 notify/send 绕过。`PATH` 支持绝对路径和 `~/`,文件仍须位于本轮获准的工作目录内。失败说明:`broker_unavailable` 表示无法连接本机附图服务;`no_owner_session` 表示无法确认当前主人回合或其上下文;`native_admission_missing` 表示 AI 工具尚未准入这条具体请求;`native_admission_expired` 表示准入已失效;`native_admission_ambiguous` 表示匹配到多条有效准入。这些失败都没有附上文件。保留当前主人回合并说明原因,不换目标页、不绕过检查。
Terminal commands / 终端命令:Run what you can yourself; never hand the owner a command you could run. Put a command in a reply only when you cannot run it: you are disconnected, it needs the owner in person (a sudo password, an interactive login, a QR scan) or it must run on another computer. Write it as a one-line ```sh fence with no `!` prefix; the phone shows Run left of Copy (sudo or interactive: Open in terminal), and the host still classifies it and asks for approval as usual.
能自己跑的命令自己跑,不把命令甩给主人。只有你跑不了时才写进回复:你断线了、需要主人本人在场(sudo 密码、交互式登录、扫码),或要在另一台电脑上跑。写成单行 ```sh 围栏,不加 `!`;手机在拷贝左边显示「执行」(sudo 或交互式显示「在终端里打开」),主机照常判定和审批。
Limits: 16000 characters per block, 20 components per reply. Unknown properties/types, oversized data, dangling flowchart edges and duplicate IDs fall back to text. Numbers must be finite. Links keep the existing URL filter and host-authorized local media path.
## link
External URL / 外部网址
Renderer: safeHref / shownTarget.
Parameters / 参数: {"label":"Visible text","href":"http:, https:, mailto: only; shows real host"}
Example / 示例:
```text
[label](https://example.com)
```
## internal-link
Internal navigation / 内部导航
Renderer: five-pages.linkify.
Parameters / 参数: {"address":"Known card/<id>[#anchor], /installed-skill, workflow mentions; no invented URL scheme"}
Example / 示例:
```text
card/cards
```
## quote
Quotation / 引用
Renderer: md blockquote.
Parameters / 参数: {"text":"Markdown > block; actions stay inert"}
Example / 示例:
```text
> quoted words
```
## file
Host-authorized Markdown, PDF, audio, video / 主机授权文件
Renderer: media / localRef.
Parameters / 参数: {"ref":"Host-authorized local path","mid":"Host media id","mime":"Markdown / PDF / audio / video; metadata comes from host"}
Example / 示例:
```text
[report.pdf](out/report.pdf)
```
## table
Markdown table / 表格
Renderer: md table.
Parameters / 参数: {"columns":"≤32","rows":"≤300","cells":"≤4000"}
Example / 示例:
```text
| Item | Count |
|---|---|
| Mug | 60 |
```
## reply
Existing one-tap reply / 原有单击发送选项
Renderer: replybtn / replyRef.
Parameters / 参数: {"label":"Visible choice","say":"One-line bounded reply: text; existing one-tap send"}
Example / 示例:
```text
[A](reply:A)
```
## todo
Owner-managed persistent checklist / 持久待办卡
Renderer: jcards.
Parameters / 参数: {"card":"Owner official To-do card; not an inline permission card"}
Example / 示例:
```text
Ask Agent J to update the To-do card / 请 Agent J 更新待办卡
```
## mermaid
Local strict Mermaid / 本地严格流程图
Renderer: render.diagram.
Parameters / 参数: {"source":"≤10000 chars; local strict rendering; text fallback"}
Example / 示例:
```text
```mermaid
flowchart LR
A[Start] --> B[Done]
```
```
## flowchart
Named nodes and directed edges / 节点与有向连线
Renderer: flowchart.
Parameters / 参数:
{"type":"object","properties":{"component":{"enum":["flowchart"]},"title":{"type":"string","maxLength":200},"nodes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":24},"label":{"type":"string","maxLength":120}},"required":["id","label"],"additionalProperties":false},"maxItems":24,"minItems":1},"edges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","maxLength":24},"to":{"type":"string","maxLength":24}},"required":["from","to"],"additionalProperties":false},"maxItems":40,"minItems":1}},"required":["component","title","nodes","edges"],"additionalProperties":false}
Example / 示例:
```agentj
{"component":"flowchart","title":"Flowchart","nodes":[{"id":"a","label":"Review"},{"id":"b","label":"Done"}],"edges":[{"from":"a","to":"b"}]}
```
## chart
Finite numeric bar or line chart / 有限数值柱图或折线图
Renderer: chart.
Parameters / 参数:
{"type":"object","properties":{"component":{"enum":["chart"]},"title":{"type":"string","maxLength":200},"kind":{"enum":["bar","line"]},"items":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","maxLength":60},"value":{"type":"number","minimum":-1000000000,"maximum":1000000000}},"required":["label","value"],"additionalProperties":false},"maxItems":30,"minItems":1}},"required":["component","title","kind","items"],"additionalProperties":false}
Example / 示例:
```agentj
{"component":"chart","title":"Chart","kind":"bar","items":[{"label":"Mug","value":60},{"label":"Cap","value":40}]}
```
## steps
Read-only progress / 只读步骤条
Renderer: steps.
Parameters / 参数:
{"type":"object","properties":{"component":{"enum":["steps"]},"title":{"type":"string","maxLength":200},"items":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","maxLength":120},"status":{"enum":["pending","active","done"]}},"required":["label","status"],"additionalProperties":false},"maxItems":12,"minItems":1}},"required":["component","title","items"],"additionalProperties":false}
Example / 示例:
```agentj
{"component":"steps","title":"Steps","items":[{"label":"Review","status":"active"},{"label":"Deliver","status":"pending"}]}
```
## confirm
Tap sends an ordinary reply; hold drafts for editing, never a permission approval / 单击发送普通回复,长按编辑草稿,不是权限批准
Renderer: confirm.
Parameters / 参数:
{"type":"object","properties":{"component":{"enum":["confirm"]},"title":{"type":"string","maxLength":200},"message":{"type":"string","maxLength":1000},"choices":{"type":"array","items":{"type":"string","maxLength":100},"maxItems":4,"minItems":1}},"required":["component","title","message","choices"],"additionalProperties":false}
Example / 示例:
```agentj
{"component":"confirm","title":"Confirm","message":"Review the proposed restock order.","choices":["Prepare order","Keep draft"]}
```
## form
Non-secret inputs → draft / 非秘密表单只生成草稿
Renderer: form.
Parameters / 参数:
{"type":"object","properties":{"component":{"enum":["form"]},"title":{"type":"string","maxLength":200},"fields":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":24},"label":{"type":"string","maxLength":100},"type":{"enum":["text","select","checkbox","date"]},"options":{"type":"array","items":{"type":"string","maxLength":100},"maxItems":12,"minItems":1}},"required":["id","label","type"],"additionalProperties":false},"maxItems":8,"minItems":1}},"required":["component","title","fields"],"additionalProperties":false}
Example / 示例:
```agentj
{"component":"form","title":"Form","fields":[{"id":"note","label":"Notes","type":"text"}]}
```