Skip to content
Agentmart
Submit a tool

json-render

Generate interactive UI blocks in chat using fenced ```json-render specs.

Skill by camplight

IndexedApache-2.0★ 6
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/camplight-json-render

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Generate interactive UI blocks in chat using fenced ```json-render specs. Supports forms, choices, actions, and secure secret capture via SecretInput or secret.set actions.

Use cases: design, security

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/json-render

What's inside

Skill name
json-render
Description
Generate interactive UI blocks in chat using fenced ```json-render specs. Supports forms, choices, actions, and secure secret capture via SecretInput or secret.set actions.
License
Apache-2.0
Instructions
143 lines in SKILL.md · view on GitHub

Files (1)

  • SKILL.md

SKILL.md (first lines)

# json-render

Use this skill when you want to show an interactive UI in OrgOps User UI instead of plain prose.

## Output format

Return a fenced code block with info string `json-render`:

```json-render
{
  "root": "page",
  "elements": {
    "page": {
      "type": "Page",
      "children": ["section"]
    },
    "section": {
      "type": "Section",
      "title": "Example",
      "description": "Your content here"
    }
  }
}
```

Rules:

- Return only valid JSON inside the fence.
- Keep ids stable and unique inside `elements`.
- Prefer concise UI over very large trees.

## Supported element types

- `Page`
- `Section`
- `Question`
- `ChoiceList`
- `IntegrationPicker`
- `Checklist`
- `Recommendation`
- `BarGraph`
- `LineGraph`
- `ActionButton`
- `SecretInput`

## Chart engine

Charts are rendered in User UI with **Recharts**.

Important:

- Do **not** output raw React/Recharts code.
- Always output OrgOps `json-render` elements (`BarGraph` / `LineGraph`) and provide chart `data`.
- You may use Recharts docs for chart-design intuition (series shape, labels, trend vs comparison), but final output must stay valid `json-render` JSON.

## Chart data format

For `BarGraph` and `LineGraph`, pass `data` as an array. Preferred shape:

```json
[
  { "label": "Mon", "value": 14 },
  { "label": "Tue", "value": 19 }
]
```

Also accepted:

- numeric array, e.g. `[14, 19, 16]` (labels become `1`, `2`, `3`)
- point shape, e.g. `{ "x": "Mon", "y": 14 }`

Tips:

- Keep charts to ~5-12 points for readability in chat.
- Always include a short `title` and `description` for context.
- Prefer `BarGraph` for comparison and `LineGraph` for trends.
- For advanced chart behavior and option patterns, reference [Recharts documentation](https://recharts.org/en-US/guide).

## ActionButton behavior

`ActionButton` can trigger:

1. **Regular action message** (default): posts a hidden `message.created` event tagged as `ui.json-render.action`.
2. **Secret write action** (secure): if action name/type is one of:
   - `secret.set`
   - `secrets.set`
   - `orgops.secret.set`

For secret actions, the UI writes directly to `/api/secrets` and does not emit chat messages with secret values.

Recommended params for secret actions:

- `package` (or `packageId`)
- `key` (or `name`)
- `valueField` (or `valueFrom` / `secretField`) pointing to a `Question` element id
- optional: `scopeType`, `scopeId`

## SecretInput behavior (preferred for secrets)

`SecretInput` is a first-class secure element that writes directly to `/api/secrets`.

Props:

- required: `package` (or `packageId`), `key` (or `name`)
- optional: `title`, `description`, `placeholder`, `submitLabel`, `scopeType`, `scopeId`
- optional: `valueField` / `valueFrom` / `secretField` (if value comes from another question field)

## Secret safety rules

- Never ask users to paste secret values into plain chat text.
- Prefer `SecretInput` or `<orgops-secret-input ...>` over plain text instructions.
- Never echo secret values back in messages.

## Sensitive response pattern

If an agent must return sensitive output (credentials, private keys, reset URLs), do not place that value in plain markdown or inside a `json-render` block.

Use the event contract:

- send `message.created.payload.text` as safe preview only

From camplight/orgops, Apache-2.0.

Signals

Stars
6
Forks
1
Open issues
0
Last commit (this folder)
Oct 9, 2026 (19 days ago)
Last release
Oct 22, 2026 (6 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
Apache-2.0
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from camplight

Cite this page

json-render skill. Agent Mart. https://agentmart.dev/skills/camplight-json-render (last updated 2026-10-24)