Portal Guide
Portal is a one-click launcher grid inside Treasure Work, for people who do the same
handful of things every week and don't want to type a prompt each time — or don't want
to talk to a chat box at all. This skill teaches the concept, coaches a user through
their first portal, and troubleshoots the common dead ends. It does not build or edit
portal files — coaching only.
Language
Respond in whatever language the user is writing in — this skill's source is English
purely for maintainability, and that shouldn't leak into the reply.
Keep the following in their original English even when replying in another language,
with a short gloss the first time you use each — the app's interface is English-only, so
a translated label sends the user hunting for a button that doesn't exist:
- On-screen labels:
New portal, Load sample portals, Add group, Add button,
Import, Save, Cancel, Settings
- Guided tour names in the
? menu (see Hand off to the built-in tours)
- Schema keywords:
send-message, run-skill, run-agent, open-app, groups,
department
Route the question
| Question shape |
Do this |
| Conceptual ("what is X", "what's the difference between…") |
Answer directly. Load references/concepts.md if it's below the summary in this file. |
| "Where is X" and a built-in tour covers it |
1–2 sentences of orientation, then name the tour. Never re-narrate a tour click by click. |
| "Where is X" and no tour covers it |
Give the minimal click path yourself. |
| "Help me build my first portal" |
Go to Coaching a first Portal. |
| "What should mine contain" |
Load references/coaching-playbooks.md. |
| Symptom language (empty, blank, disabled, not installed, reverted…) |
Load references/troubleshooting.md. |
| Share / export / import / sync / team rollout |
Load references/sharing-and-sync.md. |
| "Build/write the portal file for me" |
Not supported yet — say so, and walk them through the UI instead. There is no Portal tool or command; only the click path exists. |
What Portal is (and is not)
Portal is a launcher, not a dashboard. One screen of large clickable cards; each card
fires one pre-written action.
Three nested things, and that is the entire model:
| What the user sees |
Name |
What it is |
| a tab in the tab bar |
a Portal — one page |
a name, a department, an optional icon, and an ordered list of groups |
| a titled section on the page |
a group |
a title plus an ordered list of cards — nothing else |
| a card they click |
a card (a panel/button) |
an icon, a label, a description, and exactly one action |
Say the negative out loud — almost everyone arrives expecting a BI tool. Portal has
no widgets, charts, numbers, queries, SQL, data sources, resizable layout grid,
scheduled data refresh, or per-user variables. A card cannot display anything; it can
only do one of four things (below). If they want numbers on a screen, they want either
an open-app card pointing at an existing BI page, or a different skill entirely
(grid-dashboard, react-dashboard).
Users bring different vocabulary for the same three things regardless of language they
speak — "page" or "tab" for a Portal, "panel" or "button" for a card, "section" for a
group. Map whatever word they use back to the three rows above.
The four things a card can do
The card editor calls these Prompt / Skill / Agent / App:
| UI label |
Behind the scenes |
Fires when |
Prompt |
send-message — seeds a new chat with a fixed prompt (max 4096 chars) |
the task is "ask a question / produce a summary" |
Skill |
run-skill — runs an installed skill, with no args, fixed args, or ask-at-run args |
the task is something a skill already does |
Agent |
run-agent — runs a scheduled/background agent, optionally opening its chat |
the task is recurring/automated, not a one-off ask |
App |
open-app — embeds a web page (Superset, Google Workspace, Looker, or generic Web) in-app |
the task is "look at that existing dashboard/sheet/doc" |
Coaching a first Portal
Propose first, interview second. A non-engineer can't answer "how should we
structure your portal?" — but can react to a concrete draft in five seconds. Ask at
most one question before showing something.
Step 0 — read the room, don't ask
Check whether the working directory has a .claude/portals/ folder with files in it.
Files present → the user already owns portals and most likely wants to change one, not
create one — don't read the file contents unless they ask; card prompts routinely
mention customer names. Nothing there, or no workspace at all → they need an active
workspace before anything in Portal works (every control is disabled and tooltipped
Open a workspace first) — send them to open one before anything else.
Step 1 — one question
Ask this much, and no more: "What are the 3–5 tasks you do most often that you'd like to
get down to one click? Or just tell me your role (CSM / CRE / PM / Sales / Support) and
I'll draft something to react to."
A vague answer is enough — "I'm a CSM and I check account health a lot" is plenty. Load
references/coaching-playbooks.md and use the matching role blueprint.
Step 2 — propose the whole portal in one table
| Group |
Card |
Action |
What one click does |
| My accounts |
ACME weekly check |
Prompt |
Pulls ACME's last 7 days and flags anomalies |
| My accounts |
Renewals ≤ 90 days |
Prompt |
Lists my accounts renewing this quarter |
| Reports |
CS overview |
App |
Opens the team's Superset dashboard in-app |
| Reports |
Weekly summary |
Skill |
Runs an installed reporting skill over this week |
Then one confirming question: "Does this look right? Tell me what you'd swap out."
Two groups, four to six cards. Bigger than that and people never finish setting it up.
Step 3 — get it on screen: start from a sample, not from blank
This is the single most important piece of advice in this skill.
If they have zero portals of their own:
- On the Portal page, click
Load sample portals in the "Build your own portal"
box. Three editable portals appear. Nothing existing is ever overwritten.
- Open the tab closest to their job, then click the Pencil icon (top right) to enter
edit mode.
- Click
Settings (gear) to change Name and Department to theirs.
- Replace cards one at a time with the ones from your table.
- Click
Save.
Why not New portal? It only asks for Name and Department, then drops the user on
a page with zero groups — Add button isn't even visible until a group exists. That
blank page is where most people give up. Only route someone there if they explicitly want
to start clean, and if you do, say the very next click before they ask: "a blank page will
open — click Add group first."
If they already have at least one portal, New portal and Import live in the
toolbar and only appear after the Pencil icon — mention the Pencil first, or they'll
report that the button doesn't exist.
Step 4 — build exactly one card together, then hand off
- In edit mode, click
Add group and name it (e.g. My accounts).
- Click
Add button inside that group.
- In the dialog, top to bottom: pick an icon →
Label (2–4 words — it has to
fit on a card) → Description (one line; this is what explains the card to
them in three months, don't skip it) → the lock checkbox → the action type
(Prompt / Skill / Agent / App) → that type's fields. Leave Advanced alone.
- Click
Save in the top toolbar. Nothing reaches disk until then — edit mode is a
draft, the panel is tinted, and an "Editing" badge shows. Leaving mid-edit prompts to
confirm.
- Step back: "the rest of the cards follow the same steps — if you'd like a click-by-click
guide for the remaining ones, check the
Editing a portal tour from the ? menu."
Step 5 — the part they'll get wrong
For a Prompt card, prompt quality is card quality — and this is the one place a
coach adds value no tour can. Offer to write every prompt. A good one is self-contained
(no "as we discussed"), names the data it wants, and states the output shape.
- Weak:
ACME status
- Good:
Summarize ACME Corp's last 7 days: workflow runs, support tickets, and ingestion volume. Call out anything anomalous, then list up to 3 follow-ups.
Hard limit: 4096 characters. Needing more than a paragraph is a sign the card should be a
Skill card instead.
Hand off to the built-in tours
Portal ships seven guided walkthroughs, opened from the ? icon on the Portal page.
They run in view mode only — tell the user to leave edit mode first. There's no way
to launch a tour on someone's behalf; only name the one to pick.
? menu label |
Steps |
Point here when |
Portal basics |
8 |
"what is this screen" · first-ever visit |
Portal action types |
7 |
"what's the difference between the four actions" |
Editing a portal |
13 |
"how do I add/rename/reorder/delete groups and cards" |
Building a card |
6 |
"walk me through the card dialog" |
Sharing & export |
5 |
"how do I give this to my team" |
Importing a portal |
4 |
"someone sent me a portal file" |
Portal icons |
3 |
"can I use our own icon" |
Never re-narrate a tour click by click — orient in a sentence or two, name the tour, then
offer to stay for the judgement calls it can't make (what to build, what a prompt should
say). When replying in a language other than English, still give the tour's label in
English with a short gloss, since the ? menu itself is English-only.
Fast troubleshooting
The five most common dead ends — see references/troubleshooting.md for the rest:
- Everything disabled, tooltip
Open a workspace first → no active workspace. Always
check this first.
- Brand-new portal is blank, no
Add button in sight → New portal creates zero
groups → Add group first.
New portal / Import / Share / Duplicate / Settings "don't exist" → not in
edit mode → click the Pencil. (Exception: with zero portals, the getting-started box
offers New portal / Import without edit mode.)
- A card shows a setup note instead of running → its
Skill or Agent dependency isn't
installed (or is installed but disabled) → open the card's detail view for the exact
plugin/marketplace name and a link to the Skills panel.
- "My edits disappeared" → either the edit-mode draft was never
Saved, or the portal
is synced and got overwritten by its source on the next Portal open.
Sharing, in one paragraph
There are four distinct ways to move a portal: export to a .portal.json file for one
person; share to Google Drive with a scope for a team; Advanced Export to a
.portalx.json/.portalx.zip when the portal depends on custom skills, agents, or
icons; or import, which always asks per-dependency before installing anything. A
"synced" portal re-fetches and can overwrite local edits on every Portal open; a
"managed" portal is read-only. Load references/sharing-and-sync.md for the decision
table and the details.
Never do this
- Never call Portal a dashboard, or promise widgets, charts, KPIs, variables,
auto-refresh, or drag-to-resize layout. It has none of them.
- Never claim you can click for the user, start a tour for them, or that a Portal tool or
command exists to build one. None of that exists — say so plainly.
- Never send a user hunting for a settings toggle to "turn Portal on." If the Portal icon
isn't in their sidebar at all, tell them to ask their CSM or admin — don't guess at a
setting.
- Never invent an action type, icon name, or app provider. All three are closed sets —
see
references/concepts.md.
- Never write, generate, or edit a portal file. Coach through the UI only.
- Never claim a card's Advanced model/backend setting travels with a share — it's
local-only and stripped from every export.
- Never tell someone to fix a stale managed portal by editing it (read-only), or a
synced one by editing the local copy (it's overwritten from its source).
- Never read a user's portal contents aloud unless they ask — card prompts often mention
customer names.
References
references/concepts.md — exact field-by-field model, the four action types in full,
icon names, managed vs. synced vs. plain.
references/coaching-playbooks.md — five role blueprints (CSM/CRE/PM/Sales/Support)
with ready-to-paste cards and prompts, plus prompt-writing guidance and sizing rules.
references/troubleshooting.md — the full symptom → cause → fix list.
references/sharing-and-sync.md — export/share/import mechanics, "keep in sync," and
what to warn about before sharing.
1---2name: portal-guide3description: Teach, explain, and coach a Treasure Work user through the Portal feature — the department portal of one-click action cards (a tab = one portal page, groups = titled sections, cards = panels that each fire one Prompt / Skill / Agent / App action). Use when the user asks what Portal is, how it works, how to get started, how to create or build their first portal, how to add a tab, group, card, or button, how to pick an action type or icon, whether to lock a card, how to export, share, or import a portal, the difference between managed and synced portals, or when a portal is empty, blank, missing, greyed out, disabled, or a card says a skill or agent isn't installed. This also covers requests phrased in other languages (e.g. Japanese) about the same concept — 'portal' — since Treasure Work's UI itself is English-only. NOT for BI dashboards, charts, KPI tiles, or data widgets — Portal has no widgets, queries, or data sources; use grid-dashboard or react-dashboard for those.4---56# Portal Guide78Portal is a one-click launcher grid inside Treasure Work, for people who do the same9handful of things every week and don't want to type a prompt each time — or don't want10to talk to a chat box at all. This skill teaches the concept, coaches a user through11their first portal, and troubleshoots the common dead ends. It does not build or edit12portal files — coaching only.1314## Language1516Respond in whatever language the user is writing in — this skill's source is English17purely for maintainability, and that shouldn't leak into the reply.1819Keep the following in their original English even when replying in another language,20with a short gloss the first time you use each — the app's interface is English-only, so21a translated label sends the user hunting for a button that doesn't exist:2223- **On-screen labels**: `New portal`, `Load sample portals`, `Add group`, `Add button`,24 `Import`, `Save`, `Cancel`, `Settings`25- **Guided tour names** in the `?` menu (see [Hand off to the built-in tours](#hand-off-to-the-built-in-tours))26- **Schema keywords**: `send-message`, `run-skill`, `run-agent`, `open-app`, `groups`,27 `department`2829## Route the question3031| Question shape | Do this |32|---|---|33| Conceptual ("what is X", "what's the difference between…") | Answer directly. Load `references/concepts.md` if it's below the summary in this file. |34| "Where is X" and a built-in tour covers it | 1–2 sentences of orientation, then name the tour. Never re-narrate a tour click by click. |35| "Where is X" and no tour covers it | Give the minimal click path yourself. |36| "Help me build my first portal" | Go to [Coaching a first Portal](#coaching-a-first-portal). |37| "What should mine contain" | Load `references/coaching-playbooks.md`. |38| Symptom language (empty, blank, disabled, not installed, reverted…) | Load `references/troubleshooting.md`. |39| Share / export / import / sync / team rollout | Load `references/sharing-and-sync.md`. |40| "Build/write the portal file for me" | Not supported yet — say so, and walk them through the UI instead. There is no Portal tool or command; only the click path exists. |4142## What Portal is (and is not)4344Portal is a **launcher**, not a dashboard. One screen of large clickable cards; each card45fires one pre-written action.4647Three nested things, and that is the entire model:4849| What the user sees | Name | What it is |50|---|---|---|51| a tab in the tab bar | a **Portal** — one page | a name, a department, an optional icon, and an ordered list of groups |52| a titled section on the page | a **group** | a title plus an ordered list of cards — nothing else |53| a card they click | a **card** (a panel/button) | an icon, a label, a description, and **exactly one** action |5455Say the negative out loud — almost everyone arrives expecting a BI tool. Portal has56**no** widgets, charts, numbers, queries, SQL, data sources, resizable layout grid,57scheduled data refresh, or per-user variables. A card cannot *display* anything; it can58only *do* one of four things (below). If they want numbers on a screen, they want either59an `open-app` card pointing at an existing BI page, or a different skill entirely60(`grid-dashboard`, `react-dashboard`).6162Users bring different vocabulary for the same three things regardless of language they63speak — "page" or "tab" for a Portal, "panel" or "button" for a card, "section" for a64group. Map whatever word they use back to the three rows above.6566## The four things a card can do6768The card editor calls these `Prompt` / `Skill` / `Agent` / `App`:6970| UI label | Behind the scenes | Fires when |71|---|---|---|72| `Prompt` | `send-message` — seeds a new chat with a fixed prompt (max 4096 chars) | the task is "ask a question / produce a summary" |73| `Skill` | `run-skill` — runs an installed skill, with no args, fixed args, or ask-at-run args | the task is something a skill already does |74| `Agent` | `run-agent` — runs a scheduled/background agent, optionally opening its chat | the task is recurring/automated, not a one-off ask |75| `App` | `open-app` — embeds a web page (Superset, Google Workspace, Looker, or generic Web) in-app | the task is "look at that existing dashboard/sheet/doc" |7677## Coaching a first Portal7879**Propose first, interview second.** A non-engineer can't answer "how should we80structure your portal?" — but can react to a concrete draft in five seconds. Ask **at81most one** question before showing something.8283### Step 0 — read the room, don't ask8485Check whether the working directory has a `.claude/portals/` folder with files in it.86Files present → the user already owns portals and most likely wants to *change* one, not87create one — don't read the file contents unless they ask; card prompts routinely88mention customer names. Nothing there, or no workspace at all → they need an active89workspace before anything in Portal works (every control is disabled and tooltipped90`Open a workspace first`) — send them to open one before anything else.9192### Step 1 — one question9394Ask this much, and no more: "What are the 3–5 tasks you do most often that you'd like to95get down to one click? Or just tell me your role (CSM / CRE / PM / Sales / Support) and96I'll draft something to react to."9798A vague answer is enough — "I'm a CSM and I check account health a lot" is plenty. Load99`references/coaching-playbooks.md` and use the matching role blueprint.100101### Step 2 — propose the whole portal in one table102103| Group | Card | Action | What one click does |104|---|---|---|---|105| My accounts | ACME weekly check | `Prompt` | Pulls ACME's last 7 days and flags anomalies |106| My accounts | Renewals ≤ 90 days | `Prompt` | Lists my accounts renewing this quarter |107| Reports | CS overview | `App` | Opens the team's Superset dashboard in-app |108| Reports | Weekly summary | `Skill` | Runs an installed reporting skill over this week |109110Then one confirming question: "Does this look right? Tell me what you'd swap out."111**Two groups, four to six cards.** Bigger than that and people never finish setting it up.112113### Step 3 — get it on screen: start from a sample, not from blank114115This is the single most important piece of advice in this skill.116117If they have **zero** portals of their own:1181. On the Portal page, click **`Load sample portals`** in the "Build your own portal"119 box. Three editable portals appear. Nothing existing is ever overwritten.1202. Open the tab closest to their job, then click the **Pencil** icon (top right) to enter121 edit mode.1223. Click **`Settings`** (gear) to change `Name` and `Department` to theirs.1234. Replace cards one at a time with the ones from your table.1245. Click **`Save`**.125126**Why not `New portal`?** It only asks for `Name` and `Department`, then drops the user on127a page with **zero groups** — `Add button` isn't even visible until a group exists. That128blank page is where most people give up. Only route someone there if they explicitly want129to start clean, and if you do, say the very next click before they ask: "a blank page will130open — click `Add group` first."131132If they already have **at least one** portal, `New portal` and `Import` live in the133toolbar and only appear **after** the Pencil icon — mention the Pencil first, or they'll134report that the button doesn't exist.135136### Step 4 — build exactly one card together, then hand off1371381. In edit mode, click **`Add group`** and name it (e.g. `My accounts`).1392. Click **`Add button`** inside that group.1403. In the dialog, top to bottom: pick an **icon** → **`Label`** (2–4 words — it has to141 fit on a card) → **`Description`** (one line; this is what explains the card to142 *them* in three months, don't skip it) → the lock checkbox → the action type143 (`Prompt` / `Skill` / `Agent` / `App`) → that type's fields. Leave `Advanced` alone.1444. Click **`Save`** in the top toolbar. Nothing reaches disk until then — edit mode is a145 draft, the panel is tinted, and an "Editing" badge shows. Leaving mid-edit prompts to146 confirm.1475. Step back: "the rest of the cards follow the same steps — if you'd like a click-by-click148 guide for the remaining ones, check the `Editing a portal` tour from the `?` menu."149150### Step 5 — the part they'll get wrong151152For a `Prompt` card, prompt quality **is** card quality — and this is the one place a153coach adds value no tour can. Offer to write every prompt. A good one is self-contained154(no "as we discussed"), names the data it wants, and states the output shape.155156- Weak: `ACME status`157- Good: `Summarize ACME Corp's last 7 days: workflow runs, support tickets, and ingestion158 volume. Call out anything anomalous, then list up to 3 follow-ups.`159160Hard limit: 4096 characters. Needing more than a paragraph is a sign the card should be a161`Skill` card instead.162163## Hand off to the built-in tours164165Portal ships seven guided walkthroughs, opened from the **`?`** icon on the Portal page.166They run in **view mode only** — tell the user to leave edit mode first. There's no way167to launch a tour on someone's behalf; only name the one to pick.168169| `?` menu label | Steps | Point here when |170|---|---|---|171| `Portal basics` | 8 | "what is this screen" · first-ever visit |172| `Portal action types` | 7 | "what's the difference between the four actions" |173| `Editing a portal` | 13 | "how do I add/rename/reorder/delete groups and cards" |174| `Building a card` | 6 | "walk me through the card dialog" |175| `Sharing & export` | 5 | "how do I give this to my team" |176| `Importing a portal` | 4 | "someone sent me a portal file" |177| `Portal icons` | 3 | "can I use our own icon" |178179Never re-narrate a tour click by click — orient in a sentence or two, name the tour, then180offer to stay for the judgement calls it can't make (what to build, what a prompt should181say). When replying in a language other than English, still give the tour's label in182English with a short gloss, since the `?` menu itself is English-only.183184## Fast troubleshooting185186The five most common dead ends — see `references/troubleshooting.md` for the rest:1871881. Everything disabled, tooltip `Open a workspace first` → no active workspace. Always189 check this first.1902. Brand-new portal is blank, no `Add button` in sight → `New portal` creates zero191 groups → `Add group` first.1923. `New portal` / `Import` / `Share` / `Duplicate` / `Settings` "don't exist" → not in193 edit mode → click the Pencil. (Exception: with zero portals, the getting-started box194 offers `New portal` / `Import` without edit mode.)1954. A card shows a setup note instead of running → its `Skill` or `Agent` dependency isn't196 installed (or is installed but disabled) → open the card's detail view for the exact197 plugin/marketplace name and a link to the Skills panel.1985. "My edits disappeared" → either the edit-mode draft was never `Save`d, or the portal199 is **synced** and got overwritten by its source on the next Portal open.200201## Sharing, in one paragraph202203There are four distinct ways to move a portal: export to a `.portal.json` file for one204person; share to Google Drive with a scope for a team; Advanced Export to a205`.portalx.json`/`.portalx.zip` when the portal depends on custom skills, agents, or206icons; or import, which always asks per-dependency before installing anything. A207"synced" portal re-fetches and can overwrite local edits on every Portal open; a208"managed" portal is read-only. Load `references/sharing-and-sync.md` for the decision209table and the details.210211## Never do this212213- Never call Portal a dashboard, or promise widgets, charts, KPIs, variables,214 auto-refresh, or drag-to-resize layout. It has none of them.215- Never claim you can click for the user, start a tour for them, or that a Portal tool or216 command exists to build one. None of that exists — say so plainly.217- Never send a user hunting for a settings toggle to "turn Portal on." If the Portal icon218 isn't in their sidebar at all, tell them to ask their CSM or admin — don't guess at a219 setting.220- Never invent an action type, icon name, or app provider. All three are closed sets —221 see `references/concepts.md`.222- Never write, generate, or edit a portal file. Coach through the UI only.223- Never claim a card's Advanced model/backend setting travels with a share — it's224 local-only and stripped from every export.225- Never tell someone to fix a stale **managed** portal by editing it (read-only), or a226 **synced** one by editing the local copy (it's overwritten from its source).227- Never read a user's portal contents aloud unless they ask — card prompts often mention228 customer names.229230## References231232- `references/concepts.md` — exact field-by-field model, the four action types in full,233 icon names, managed vs. synced vs. plain.234- `references/coaching-playbooks.md` — five role blueprints (CSM/CRE/PM/Sales/Support)235 with ready-to-paste cards and prompts, plus prompt-writing guidance and sizing rules.236- `references/troubleshooting.md` — the full symptom → cause → fix list.237- `references/sharing-and-sync.md` — export/share/import mechanics, "keep in sync," and238 what to warn about before sharing.