---
name: rodney
description: >-
  Rodney builds self-contained static HTML micro-apps from a conversation and
  deploys each to its own live URL. Use this skill whenever the user mentions
  Rodney or wants to build, create, deploy, update, view, list, or delete a
  micro-app — e.g. "ask Rodney to build me a dashboard", "have Rodney make a
  mockup", "make me an app", "update my app".
---

# Rodney — personal micro-app builder

Rodney deploys a self-contained **static HTML app** to a live URL. You describe
what you want; you build the HTML and call Rodney's MCP tools to deploy it. No
local setup, build step or hosting is needed.

> **Status: early.** Anyone with a Google account can sign in, and the service may change or be
> shut down without notice.

## Configuration

- **Site URL:** `https://ptkinvent.com`
- **Sign-in:** the user signs in with Google when they connect Rodney. Every tool call
  then acts as that person, who becomes the author of the apps they create. Authors
  appear as an anonymous handle (like `u-3f9a1c2b7e`), never an email address. Tools take
  no password or identity argument. Each person can have up to 50 apps. If a call fails with an authorization error, ask the
  user to reconnect the Rodney connector (Customize → Connectors).

An app named `team-standup` lives at:

- App: `https://ptkinvent.com/team-standup/`
- Admin: `https://ptkinvent.com/team-standup/admin/`

The tools return these full URLs; show them to the user as given.

## If the Rodney tools are not available

If the Rodney connector isn't connected, don't attempt tool calls. Tell the user
Rodney isn't connected, and offer to build the app as a Claude artifact instead
(no shareable URL, lives only in the chat).

## Tools

| Tool                    | What it does                                                                                        |
| ----------------------- | --------------------------------------------------------------------------------------------------- |
| `create-app`            | Deploy a **new** app. Takes `name`, optional `description`, and `html` **or** `files`.              |
| `get-app`               | Metadata (author, timestamps) and the list of file paths. Does not return file contents.            |
| `read-file`             | Read one file's content. **Always do this before modifying a file.**                                |
| `create-or-update-file` | Create or overwrite a single file in an existing app. Other files are untouched.                    |
| `delete-app`            | Permanently delete an app. Cannot be undone — confirm with the user first.                          |
| `list-apps`             | List all apps with their authors and paths.                                                         |

Every tool except `list-apps` takes the app's `name`.

### `create-app`

- **`name`** — a slug: 1–40 chars, lowercase letters, numbers and dashes, not
  starting or ending with a dash (e.g. `budget-tracker`). Names are unique;
  reusing one returns an error, so pick another. Reserved: `mcp`, `admin`,
  `assets`, `api`, `static`, `privacy`, `terms`.
- **`html`** — the complete `index.html`, for single-file apps.
- **`files`** — `[{path, content}, ...]` for multi-file apps; must include
  `index.html`. Use **either** `html` **or** `files`, never both.

File paths are relative (`css/style.css`): no leading slash, no `..`, no
dotfiles, only letters, numbers, `.`, `-`, `_`, `/`. Max 4 MB per file.
**Text files only** — there is no binary upload, so use inline SVG or `data:`
URIs for images.

### Updating an app

1. `get-app` to see the file list.
2. `read-file` for each file you'll change.
3. `create-or-update-file` once per changed file.

Only the app's **author** can update or delete it. Others can list and read it
(and can only change an app by creating their own copy under a new name).

## Admin page

Every app automatically gets `/<name>/admin/` — a static page showing the app's
name and author. It is generated by Rodney. **Do not write to the `admin/` path**;
it is reserved and the tool will refuse.

## Building good apps

- Make each app fully self-contained: inline CSS/JS or relative multi-file
  assets. External CDN scripts/fonts are fine but add an outside dependency.
- Use **relative** URLs for assets (`css/style.css`, not `/css/style.css`) —
  the app lives under `/<name>/`, not at the site root.
- Apps are static. There is no backend, database or server-side code. State
  lives in the user's browser (`localStorage`) and is **not shared** between
  viewers or devices. Say so if the user asks for shared data.
- Make apps responsive and usable on a phone.

## Intake

Don't over-ask. If the user's request is clear enough to build something
sensible, pick a slug, confirm in one line what you're building, and deploy. Ask
a single follow-up question only when the request is too vague to build
anything meaningful ("What should it do?").

## After deploying

Share both links from the tool result: the **live app** and the **admin
page**. Mention how to change it later ("just ask me to update it").

## Responsible use

Apps are not connected to any real financial, pricing or compliance systems.
For anything that looks like financial calculations, personal data collection
or advice, build it as asked, then add one short note after deploying that the
numbers are illustrative and the app shouldn't store sensitive personal data
(SSN, account numbers, etc.).

## Current limitations

- **Anyone with an app's URL can view it** — there is no viewer auth. Don't put
  secrets in an app. (Sign-in only protects the tools that create, change and
  delete apps.)
- Static only; no backend or shared persistence.
- Text files only; 4 MB per file.
- Names are unique and are first-come-first-served.
