studio (site b / m5).
# SUB-001 — Studio site
> Paste SUB-001 into chat to context-shift here.
What it is
Studio is Ishai's personal hub. A single-user website that surfaces every durable artifact in the Sett UX vault (subjects, actions, activity log, milestones, mobile inbox, errands, slash commands) so chat scrollback stops being the read surface. Replaces folder-spelunking with an editorial-grade tool.
Lives at sites/studio/. Static Astro build. Reads vault directly at build time. Deployed under Cloudflare Access (ishairevach@sett.ai only).
Sister site = Showcase (SUB-008 / Site A / M4) which is teammate-facing. Don't merge. Two distinct audiences = two sites. (See SUB-006 for the two-site decision.)
Why
- ADHD blows out chat. Substantive Claude responses get buried in scrollback and are functionally lost.
- Single-session work is preferred (cross-session context loss > silo isolation), but single-session amplifies the scrollback problem.
- Vault is the durable layer. Studio is the navigation layer for the vault.
- Going into folders is a bummer. The work tool should look like a tool, not a directory tree.
Audience
Single user: Ishai. Cloudflare Access SSO restricted to ishairevach@sett.ai. No other access.
Features (v1 scope)
| # | Feature | Source | Status |
|---|---------|--------|--------|
| F1 | Home dashboard — KPIs + milestone cards + open subjects + activity strip | aggregated | shipped v0 |
| F2 | Subjects shelf — gallery + detail per SUB-NNN w/ copy-id button | vault/11-Subjects/ | shipped v0 |
| F3 | Action board mirror — Active Board grouped by milestone | vault/00-Action-Items.md | shipped v0 |
| F4 | Activity log live view — last 14 days timeline | vault/10-Activity-Log/ | shipped v0 |
| F5 | Milestones — cards w/ days-remaining countdown | vault/00-Milestones.md | shipped v0 |
| F6 | Mobile inbox — count + capture instructions | vault/09-Notes/raw/ | shipped v0 |
| F7 | Errands queue — copy-paste prompts for AFK work | vault/00-Errands.md | shipped v0 |
| F8 | Commands launcher — slash command gallery + shortcuts | .claude/skills/*.md | shipped v0 |
| F9 | Prototypes hub — tile per prototype, cloud + local + Figma + push-status links | cosmo-design/screens/prototypes/ | not started |
| F10 | Comms gap meter — pulled from stakeholder map | personal/stakeholder-comms.md | not started |
| F11 | Observability graphs — 6 Recharts views | derived | not started |
| F12 | Glossary — terms + keyboard shortcuts | vault/98-References/ | not started |
| F13 | Search (Pagefind) | static index | not started |
| F14 | Cloudflare Access auth + deploy | infra | not started |
Detailed feature specs
F2 · Subjects shelf
- Storage:
vault/11-Subjects/SUB-NNN-.md - File shape: frontmatter (id/title/status/opened/last_touched/related_*/tags) + body (What it is / Why / Features / Decisions / Open threads / Status / Raw refs)
- Auto-create rule: Claude opens a subject file when topic spans >3 turns OR new initiative is introduced OR a decision is made that doesn't fit existing subject. Live-updated, not session-end-batch.
- ID-paste workflow: Ishai pastes
SUB-NNNinto chat → Claude reads that one file → cheap context shift, no scrolling. - Site rendering: list view (grouped by status: open / resolved / archived), detail view (full doc + copy-id button at top + bottom).
F9 · Prototypes hub (deferred)
Per-tile data:
- Thumbnail (auto-screenshot from Cloudflare Pages deploy)
- Title + status pill (active / superseded / snapshot / production)
- Last updated (from git log)
- Cloud link (
cosmo-design.pages.dev/screens/prototypes/).html - Local link (
file:///Users/.../).html - Figma link (if set in metadata)
- Production status (if linked to V2: branch ahead-count, last deploy)
- Spec link (matching
vault/08-Design-specs/).md - Tags: concept (A/B/C), surface (Cosmo/Apollo)
F11 · Observability graphs (deferred)
| Graph | Source | Tells me | |-------|--------|----------| | Subjects opened vs resolved/wk | frontmatter | are threads piling or closing | | Decisions/wk | activity log decisions | throughput | | Time-to-first-decision | opened vs first Decisions entry | how long open threads sit | | Activity by surface (stacked bar) | git log of cosmo-design/, cosmo-prod/, apollo/, vault/ | surface mix | | Comms cadence heatmap | stakeholder map + Slack timestamps | who's overdue | | Milestone burndown | Milestones + Active Board | days remaining vs work remaining |
Architecture
- Framework: Astro 4 (static, MDX support)
- Visual identity: Variant B handoff (
design_handoff_sett_ux_docs_B/) — warm dark + amber accent + Bricolage Grotesque single-family + square corners + 280px sidebar - Tokens:
sites/studio/src/styles/tokens.css(synced from B handoff) - Vault loader:
sites/studio/src/lib/vault.tsreads markdown + parses frontmatter viagray-matter - Build: static, rebuilds on push to main; daily rebuild for time-derived data (days remaining, last activity)
- Deploy: Cloudflare Pages, separate project from Showcase
- Auth: Cloudflare Access, single-user
- Charts: Recharts (per workspace standard)
- Search: Pagefind (deferred to v1)
Scope
v0 (shipped 2026-05-06)
- F1-F8: home + subjects + actions + log + milestones + inbox + errands + commands
- Variant B styling
- Local dev only (port 4321)
v1 (target 2026-06-15, M5 milestone)
- F9: prototypes hub
- F10: comms gap meter
- F11: 6 observability graphs
- F12: glossary
- F13: Pagefind search
- F14: Cloudflare Access deploy
- Decide subdomain (candidate:
studio.sett.ai)
v2 (deferred)
- Run-action buttons that execute slash commands directly (need execution layer: GitHub Actions vs local agent endpoint)
- Multi-author / per-subject @-mentions (single-user for now)
- Mobile-first layout (laptop primary)
- Light theme toggle (warm-dark locked for now)
Decisions made
- 2026-05-06. Studio name (over: cockpit, command-center, bridge, atlas, helm, forge, atelier, desk, console, den, shelf). Ishai is a designer, fits the brand.
- 2026-05-06. Variant B chosen over Variant A. (See SUB-005.)
- 2026-05-06. Subjects auto-created proactive + live-updated. (See SUB-002, SUB-007.)
- 2026-05-06. Substantive output goes to subject files, not chat. (See SUB-002.)
- 2026-05-06. Errands separate from Actions. (See SUB-004.)
- 2026-05-06. Studio uses its own visual identity, NOT Cosmo DS. CLAUDE.md "Cosmo visuals always use Cosmo DS" rule does not apply (Studio is separate product).
- 2026-05-06. v0 scope = F1-F8 (read-only views). v1 adds production-status spike + observability + auth.
Open threads
- Decide subdomain —
studio.sett.aivsme.sett.aivsdesk.sett.ai(AB-037) - Auto-pull
mobile-capturebranch on session start (hook idea, not built) — see SUB-003 - Backfill subjects retroactively from recent activity log, or only forward-going — see SUB-007
- Hero size
clamp(56px, 8vw, 96px)may feel too big at 280px-sidebar narrow main; review on real screen — see SUB-005 - Recurring errands concept (weekly DS sync, daily ingest) — separate file or
recurring: weeklyfield — see SUB-004 - Run-action execution layer (v2) — GitHub Actions trigger via PAT, local Express endpoint, or punt
- Prototypes hub Figma metadata format — per-prototype
sidecar vs frontmatter on matching spec.meta.json - Subjects-shelf placement on Studio home — top-N open vs recently-touched vs both views
Status
| Date | What shipped | |------|--------------| | 2026-05-06 | v0 scaffold: 8 features (F1-F8). Variant A styling first, then re-skinned to Variant B after review. Backfilled SUB-003..007 after shelf was sparse. Spec restructured to product-spec shape. |
Next milestone: M5 v1 target 2026-06-15. Before then: M1 (Cosmo V2 + Apollo) ships 2026-05-11; M2 (Cosmo pages) targets 2026-05-25; M4 (Showcase, SUB-008) targets 2026-06-01.Raw refs
- Concept doc:
vault/04-Concepts/personal-studio-site.md - Original car-voice paste:
vault/09-Notes/raw/2026-05-06-cockpit-thoughts.md - Site code:
sites/studio/ - Variant B handoff:
design_handoff_sett_ux_docs_B/ - Action items: AB-035 (brief), AB-036 (subjects bootstrap), AB-037 (subdomain), AB-038 (Figma metadata), AB-039 (prod-status spike), AB-040 (run-action layer)
- Sister site: SUB-008 — Showcase (Site A / M4)
- Two-site decision rationale: SUB-006