Terminal Deck 0.15.0
Terminal Deck

What you can publish

The seven kinds of thing that go on the shelf, what happens after you press Publish, how a price works, and one listing read end to end. The form itself is on Publish.

The seven kinds

Seven kinds of thing, and they all start the same way — a public repository on GitHub with one small file in it. Where these say agent, that means the assistant somebody runs inside Terminal Deck: Claude Code, Codex CLI or Gemini CLI.

Skill

A folder of written instructions an agent opens when a job calls for them.

Installs as a folder, under the skills folder of each agent the person picks.

"kind": "skill"

Instructions

One file of standing rules an agent reads every time — the house style, the things never to touch.

Installs as one markdown file, added to what their agent already reads.

"kind": "instructions"

Hooks

A script that runs at set moments in a session — before a tool runs, when a session ends.

Installs a script in Terminal Deck’s own folder, and an entry in their agent’s hooks.

"kind": "hooks"

MCP server

A small program that hands an agent new tools — a database, a calendar, a search engine. MCP is the usual way an agent picks up tools it did not ship with.

Puts nothing on disk. It adds a line to their agent’s list of MCP servers.

"kind": "mcp"

Browser extension

An add-on for the browser built into Terminal Deck.

Installs as a folder in Terminal Deck’s browser extensions.

"kind": "extension"

Routine

A saved job. Somebody starts it by hand, or leaves it running on a schedule.

Installs as one markdown routine, switched off until they start it.

"kind": "routine"

Open-source tool

A program people install themselves. The store lists it and links to it, and puts nothing on anybody’s machine.

Installs nothing from here.

"kind": "tool"

Installing from the store is not in the app people can download today — that arrives in the next release of Terminal Deck. Publishing works now, and what you get now is a public page: the facts, the licence, what it needs, and the exact commit it was read from.

How it goes live

  1. Put one small file in your repository. terminaldeck.json says what your thing is, who made it, what it needs and what it costs. Fill in a form and it writes the file for you.
  2. Paste the address of the repository here. Public repositories on GitHub, for now — GitHub is the only place a repository can be checked as yours.
  3. We read it. We pin the exact commit, read your file, and work out from the actual files whether it runs anything on the machine it lands on.
  4. You see exactly what would be listed. Every field, the address it would get, and the words an assistant would be handed. Nothing has been submitted at this point — check it as often as you like.
  5. You press Publish, and it joins the queue. The page tells you how many are waiting ahead of you.
  6. A person reads it, and then it appears. Somebody at Terminal Deck reads the files and the manifest, then approves it, or refuses it with a reason you will see on your account page. Nothing lists itself.

After that first read, updates that do not change the risky parts publish themselves. Every version stays pinned to a commit and a checksum, so what a person reviewed is exactly what anybody installs.

Free or paid — no money passes through this site

Any of the seven can be free or paid. What it costs is your business, and the money never comes near this site: a paid listing carries your own price and one button that goes to your own page. There is no checkout here, no licence key and no payout. It works like a card in a shop window.

  • Free — nothing to pay, to anybody. "model": "free"
  • Free, but you need an account somewhere — your thing costs nothing and talks to a service people have to sign up for. "model": "account"
  • You pay somebody per use — it runs against a service that charges per request. "model": "metered"
  • You pay for it — your price, on your own page. "model": "paid"

Anything that is not free has to say the money reality in one sentence, and that sentence is shown before the button. A listing that hides a cost is refused when a person reads it.

"pricing": {
  "model": "paid",
  "note": "USD 19 once, bought on our own site.",
  "url": "https://example.com/buy"
}

The amount and the currency are typed on this page when you publish, because the file carries the sentence and the link and not a number. Both are shown back to you before anything is submitted, as your own claim.

What a good listing looks like

This one is on the shelf now. Nothing about it is clever — a short id, one sentence anybody can read, a real licence, the agents it was actually tested with, and an honest list of what it needs.

Systematic debugging

Find the root cause before proposing a fix, in an order the agent has to finish.

terminaldeck.dev/@obra/systematic-debugging

What it is
Skill
Licence
MIT
Works with
Claude Code, Codex CLI, Gemini CLI
Runs on
macOS, Windows, Linux
Cost
Free
Needs
Runs scripts on this machine

Ships scripts the agent may run — worked out from the files, not from what the file claims

A terminaldeck.json that produces exactly that listing:

{
  "terminaldeck": 1,
  "publisher": "obra",
  "id": "systematic-debugging",
  "kind": "skill",
  "name": "Systematic debugging",
  "summary": "Find the root cause before proposing a fix, in an order the agent has to finish.",
  "version": "1.0.0",
  "licence": "MIT",
  "category": "code",
  "tags": ["debugging", "root-cause", "test-failure", "process"],
  "agents": ["claude", "codex", "gemini"],
  "platforms": ["darwin", "win32", "linux"],
  "delivery": "repo",
  "pricing": { "model": "free", "note": null, "url": null },
  "links": { "repo": "https://github.com/obra/superpowers", "home": null, "docs": null },
  "needs": ["runs-scripts"],
  "install": { "dir": "." }
}

The summary is capped at 120 characters on purpose: it is the line people read on the shelf, and it is the only sentence most of them read at all.

Write yours See the other listings

Ready

Publish something Write your terminaldeck.json