Individual skill

make-bot-ui

Use when building a custom UI (page, dashboard, buttons) that should wake an existing bot over its webhook (for example a Grok Bot or Cursor automation routine), when the user must provide a webhook sender key, or when exposing that UI on Tailscale.

t3/overrides/make-bot-ui/SKILL.md

Read pinned source

Source commit 91251ca92b107de606d3958e86454441910f1179

What was checked

Matches the observed repository HEAD
Yes
Scanner rules are current
Yes
Repository scan complete
No
Skill scan complete
No
Observed behavior
Network or broad shell
Last checked
Nov 5, 2026

These are observations at the recorded commit, not a guarantee of safety. Review the source before running it.

Install this skill

Choose an agent in your Stack or copy a command below. Commands fetch the pinned commit and copy only this skill directory. Existing destinations are refused. Copying a command does not install anything.

An install command is unavailable: current rules, complete repository and skill scans, an eligible behavior level and a permitted license are required.

Repository context

Repository stars (not skill ratings)
18
Repository last updated
Nov 4, 2026
License
MIT

Observed agent integration: No specific integration evidence. Standard SKILL.md installation does not imply verified compatibility.

Files and excerpt

File metadata and permitted, redacted excerpts come from the recorded scan. Source links are pinned to that commit.

Browse files
Read excerpt
# How to make a bot UI

Build a page the user clicks. A server on this computer POSTs JSON to a webhook routine. The bot wakes with that JSON. Keep the sender key on the server. Do not put the sender key in the browser, in chat, or in this skill.

The bot is a separate service. T3 runs this agent and cannot create a routine in the bot's service. A T3 webhook trigger is a `schedule_task` run with a `{"type": "webhook"}` schedule, and it wakes a T3 thread, not this bot. The user owns the routine. You build the UI, the local server, and the tailnet exposure.

## Choose the route

Ask whether the bot should be a T3 thread. If yes, read [Webhook schedules](../pstack-runtime/webhooks.md) and offer the native route.

- The user enters the signing key in the `request_secret` card. The one-use `secretRef` goes to `schedule_task`.
- The local server still needs the same key on disk to sign each POST to `webhookUrl`. A `secretRef` cannot be exported, so ask for the key again with `delivery: "file"` and follow the steps in `## Receive the sender key` below. One key that both `schedule_task` and the local server need takes two cards, because one call returns either a `secretRef` or a file path, never both.
- If the user wants the external bot service, follow the external route below unchanged.
- If the `schedule_task` result has no `webhookUrl`, tell the user T3 Connect remote access is off and to enable it, which gives the native route a URL. Offer the external route only when they do not enable it. Read [Webhook schedules](../pstack-runtime/webhooks.md#create-the-schedule) for why the URL is missing.