Raw answer
The map below covers the 21 top-level areas, each opened by `workstation <area>`, plus sub-screens for the ones with several parts. Most of it comes from the READMEs in the dump. Some rows are inferred from file names where the README was cut off or missing (team-park, the third dashboard tab, parts of the Deskflow recovery notes, and some hooks). The questions cover the decisions I could not make for you.
```json
{"screens": [
{"path": [], "sentence": "Everything this machine's workstation kit lets you reach, grouped by what you want to do. Opened by workstation, ws, or setup.", "rows": [
{"name": "Shell helpers", "form": "workstation shell", "what": "Commands loaded in every terminal: git safety, Docker and Postgres, terminal helpers, API keys, review opening."},
{"name": "Git", "form": "workstation git", "what": "Git settings and the hooks that gate pushes and commits in every repo."},
{"name": "Machine", "form": "workstation machine", "what": "Linux power, display, internet, Tailscale, laptop lid, repairs and background services."},
{"name": "Browser", "form": "workstation browser", "what": "Drive one persistent Chrome window from the command line, and record proof of a feature."},
{"name": "Chrome", "form": "workstation chrome", "what": "Start Chrome the one approved way, so recordings run without a prompt."},
{"name": "Agents", "form": "workstation agents", "what": "Check agent records and test them in the Agent Sandbox page."},
{"name": "Claude", "form": "workstation claude", "what": "Claude Code setup: global rules, settings, hooks, skills, sessions, plugins, team park, usage guard."},
{"name": "Review", "form": "workstation review", "what": "Open a review of changes in the review pane."},
{"name": "Codex", "form": "workstation codex", "what": "Codex config and the Chrome bridge that keeps its plugin working."},
{"name": "Dashboard", "form": "workstation dashboard", "what": "One screen of what waits for you: cases, rule changes, and calls agents made alone."},
{"name": "Deskflow", "form": "workstation deskflow", "what": "Share the laptop trackpad and keyboard with the Windows PC over Tailscale."},
{"name": "Clipboard", "form": "workstation clipboard", "what": "Clipboard history shared between Linux and Windows, with a picker."},
{"name": "Audio", "form": "workstation audio", "what": "Send Linux audio to the Windows machine and restore the speakers."},
{"name": "CVs", "form": "workstation cv", "what": "The three CV versions, their PDFs, and how to rebuild them."},
{"name": "Windows", "form": "workstation windows", "what": "Rebuild the Windows dev environment, clone work repos, and sync skills."},
{"name": "Rules", "form": "workstation rules", "what": "The rules every agent follows, printed for a folder."},
{"name": "Hermes", "form": "workstation hermes", "what": "The source-installed Hermes agent, its config, and its restore runbook."},
{"name": "Jev", "form": "workstation jev", "what": "Browser smoke checks, and asking Jev for a decision."},
{"name": "OpenCode", "form": "workstation opencode", "what": "Switch, inspect, and edit OpenCode profiles."},
{"name": "Install", "form": "workstation install", "what": "Where each repo file goes on this machine."},
{"name": "Records", "form": "workstation records", "what": "Case studies, incidents, plans, research, and behavior specs. Read only."}
]},
{"path": ["shell"], "sentence": "Helpers sourced from zsh.d into every terminal. Each row is a group; exact names are read from the file.", "rows": [
{"name": "Git safety", "form": "git checkout (wrapped in zsh.d/git-safety.zsh)", "what": "Lists the files and asks [y/N] before discarding unstaged changes."},
{"name": "Infrastructure", "form": "functions in zsh.d/infra.zsh", "what": "Docker and Compose shortcuts, Prisma and Postgres helpers, nginx and VPN commands."},
{"name": "Terminal and utilities", "form": "functions in zsh.d/utils.zsh", "what": "set-title, killport, IP aliases, lazy-loaded nvm, node, npm, npx, Android, Java, and Bun setup."},
{"name": "API keys", "form": "api-keys-edit", "what": "Opens the general-use API keys file, which is kept out of Git."},
{"name": "Review open", "form": "review-open", "what": "Opens a review from bash and agents, via ~/.local/bin/review-open."}
]},
{"path": ["git"], "sentence": "Git settings and the gates that run in every repo.", "rows": [
{"name": "Git settings", "form": "~/.gitconfig", "what": "Author identity, Git LFS, credential store, large HTTP buffer, and the hooks path."},
{"name": "Git hooks", "form": "workstation git hooks", "what": "The Lefthook shims and the gates they enforce."}
]},
{"path": ["git", "hooks"], "sentence": "Lefthook shims in ~/.git-hooks that run in every repo. They need lefthook on PATH.", "rows": [
{"name": "Push gate", "form": "~/.git-hooks/pre-push", "what": "Blocks pushes that lack an approval note, and direct pushes to main in repos marked pull-request."},
{"name": "Commit gate", "form": "~/.git-hooks/commit-msg", "what": "Blocks commits on main in repos marked pull-request."},
{"name": "Other shims", "form": "~/.git-hooks/pre-commit and prepare-commit-msg", "what": "Generated by Lefthook."},
{"name": "Scenario gate", "form": "~/.git-hooks/scenario-gate.py", "what": "Gate script the hooks call; see the file."},
{"name": "Restore gates after reinstall", "form": "~/.git-hooks/", "what": "Running lefthook install overwrites the gate lines; add them back by hand."}
]},
{"path": ["machine"], "sentence": "Linux machine helpers: power, display, internet, Tailscale, lid, repairs, and background services.", "rows": [
{"name": "Battery saver", "form": "cpu-min-power.sh", "what": "Power-saver profile, turbo off, CPU capped at 8 percent. Intel P-state only; asks for sudo."},
{"name": "Normal power", "form": "cpu-normal-power.sh", "what": "Balanced profile, turbo on, cap back to 100 percent."},
{"name": "External monitor", "form": "fix_old_monitor_hdmi.sh", "what": "Sets mode and refresh rate on the HDMI or DP output. Options: --output, --mode, --rate, --quiet."},
{"name": "Internet recovery", "form": "linux-internet-recovery.sh", "what": "Resets DNS and cycles networking. Re-runs itself with sudo."},
{"name": "Remote terminal recovery", "form": "recover-tailscale-remote-terminal.sh", "what": "Repairs DNS, restarts tailscaled, waits for reconnect, starts remote-terminal, checks port 3500."},
{"name": "Laptop lid", "form": "workstation machine lid", "what": "Keep the laptop running with the lid closed, or restore the default."},
{"name": "Repairs", "form": "workstation machine repair", "what": "Repair helpers for keyboard, mouse, disk, and WhatsApp."},
{"name": "Background services", "form": "workstation machine services", "what": "Services and timers that run without you."}
]},
{"path": ["machine", "lid"], "sentence": "Lid behavior. Both changes apply after a reboot.", "rows": [
{"name": "Keep running with lid closed", "form": "laptop-utilities/keep-running-with-lid-closed.sh", "what": "Writes a logind drop-in so closing the lid does nothing. Keep the laptop ventilated."},
{"name": "Restore default lid behavior", "form": "laptop-utilities/restore-default-lid-behavior.sh", "what": "Removes that drop-in."},
{"name": "Closed-lid incident", "form": "reference/incidents/2026-10-01-codebot-lid-closed.md", "what": "The test record: passed for 1 minute 46 seconds."}
]},
{"path": ["machine", "repair"], "sentence": "Repair helpers in zsh.d/utils.zsh. Run the one for the device that misbehaves.", "rows": [
{"name": "fix-keyboard", "form": "function in zsh.d/utils.zsh", "what": "Repairs the keyboard."},
{"name": "fix-mouse", "form": "function in zsh.d/utils.zsh", "what": "Repairs the mouse."},
{"name": "fix-disk", "form": "function in zsh.d/utils.zsh", "what": "Repairs disk trouble."},
{"name": "fix-whatsapp", "form": "function in zsh.d/utils.zsh", "what": "Repairs WhatsApp; see the function for the steps."}
]},
{"path": ["machine", "services"], "sentence": "Services and timers that run in the background. Nothing here needs you to start it, except where noted.", "rows": [
{"name": "Clipstack server", "form": "clipstack/units/clipstack-server.service (user unit)", "what": "Runs the clipboard history server."},
{"name": "Clipstack watcher", "form": "clipstack/units/clipstack-watcher.service (user unit)", "what": "Watches the clipboard for changes."},
{"name": "Supabase keepalive", "form": "supabase-keepalive/supabase-keepalive.timer", "what": "Keeps the Supabase project awake; installed by supabase-keepalive/install.sh."},
{"name": "Codex Chrome bridge timer", "form": "codex/chrome-bridge/codex-chrome-bridge.timer", "what": "Repairs the Chrome plugin's latest link and patch."},
{"name": "Deskflow server", "form": "deskflow/deskflow.service (user unit)", "what": "Shares the keyboard and mouse; starts with the graphical session."},
{"name": "Answer sync", "form": "~/.config/systemd/user/ data-pull timer", "what": "Pulls case answers every 5 minutes."},
{"name": "Dashboard server", "form": "python3 ~/projects/workstation/dashboard/server.py", "what": "Not a service. Starts only when you run it by hand."}
]},
{"path": ["browser"], "sentence": "The browser command: one real Chrome window kept open across calls, so login and page state survive.", "rows": [
{"name": "Run steps", "form": "browser '<json array of steps>'", "what": "Runs the actions in order on the one page; prints results as JSON."},
{"name": "Status", "form": "browser status", "what": "Shows whether the background server and browser are up."},
{"name": "Close", "form": "browser close", "what": "Closes Chrome and stops the server."},
{"name": "Record proof", "form": "workstation browser record", "what": "The one supported way to record a tab as proof of a feature."},
{"name": "Install", "form": "cd browser && npm install && npm link", "what": "Once per machine."},
{"name": "Actions and login notes", "form": "browser/README.md", "what": "Full action list, viewport presets, annotating, network capture, login gotchas."},
{"name": "Start Chrome", "form": "workstation chrome", "what": "Chrome must be started through chrome.sh for recordings to run without a prompt."}
]},
{"path": ["browser", "record"], "sentence": "Record proof that a feature works. Requires Chrome started through chrome.sh, so the tab titled REC-TARGET is picked with no prompt.", "rows": [
{"name": "Start recording", "form": "recordStart step in the browser steps", "what": "Begins recording the tab."},
{"name": "Stop recording", "form": "recordStop step in the browser steps", "what": "Ends the recording."},
{"name": "Still image", "form": "screenshot step with a path", "what": "For stills, not recordings."},
{"name": "Step by step", "form": "browser/README.md, Recording proof", "what": "The full how-to."}
]},
{"path": ["chrome"], "sentence": "Chrome starts only through chrome.sh, which adds the recording flag.", "rows": [
{"name": "Start Chrome", "form": "chrome/chrome.sh", "what": "The one way to start Chrome. Menu entries and app shortcuts use it too."},
{"name": "Install the launcher", "form": "chrome/install.sh", "what": "Links the google-chrome commands and menu entry to chrome.sh. Then quit and restart Chrome."},
{"name": "Flags", "form": "chrome/flags", "what": "The one list of Chrome flags. Edit only here."},
{"name": "Check the flag", "form": "pgrep -af chrome | grep -o 'auto-select-desktop-capture-source=[A-Z-]*'", "what": "Confirms a running Chrome has the flag."},
{"name": "Full notes", "form": "chrome/README.md", "what": "Why it exists, and its limits."}
]},
{"path": ["agents"], "sentence": "Agent records, checked before any session starts, and the Agent Sandbox page for testing them.", "rows": [
{"name": "Check records", "form": "~/projects/workstation/agent-framework/agent check", "what": "Refuses broken records; exits 1 when one is broken."},
{"name": "List agents", "form": "~/projects/workstation/agent-framework/agent list", "what": "Agents, with tier, model, and number of tests."},
{"name": "Agent Sandbox page", "form": "~/projects/workstation/agent-framework/agent serve, then http://127.0.0.1:8790", "what": "Pick an agent, change its setup, type a message, press Ask."},
{"name": "Sandbox page parts", "form": "workstation agents sandbox", "what": "What each part of the page does."},
{"name": "Roles and teams", "form": "/spawn-team <team> (Claude) or $spawn-team <team> (Codex)", "what": "Starts a team from my-skills spawn-team team files."},
{"name": "Agent intent", "form": ".idd/modules/agent-framework/INTENT.md", "what": "Intent and rules for the agent framework."},
{"name": "Sandbox PRD", "form": "docs/plans/2026-10-22-agent-sandbox/prd.html", "what": "Product requirements and mockups."},
{"name": "Agent rules", "form": "workstation rules", "what": "The rules every agent follows."}
]},
{"path": ["agents", "sandbox"], "sentence": "The Agent Sandbox page at http://127.0.0.1:8790: one conversation, with the setup in one line at the top.", "rows": [
{"name": "Setup line", "form": "header of the page", "what": "Click to change agent, model, effort, folder, rules, memory, skill versions, or tools. The next message uses it."},
{"name": "Ask", "form": "Ask button", "what": "Sends the typed message."},
{"name": "Expectations", "form": "left column, Expectations", "what": "What every next answer must or must not do, such as must call Read."},
{"name": "Did it react right", "form": "right panel", "what": "For the clicked message: which expectations passed or failed, what it did, which calls failed."},
{"name": "Every step", "form": "closed section, Every step in order", "what": "The raw steps."},
{"name": "Answer again", "form": "Answer again with another setup", "what": "Answers the same message with a changed setup, side by side."},
{"name": "Reply from here", "form": "Reply from here", "what": "Continues from that answer, as if later turns never happened."},
{"name": "Save as test", "form": "Save as test", "what": "Asks the same message again later from the same point."},
{"name": "Start from", "form": "Start from, before the first message", "what": "Optional ready-made first message and folder of files."}
]},
{"path": ["claude"], "sentence": "Claude Code setup for this machine and the Windows desktop. These are copies; see install for where they go.", "rows": [
{"name": "Global rules", "form": "claude/CLAUDE.md", "what": "Browser automation, communication style, research protocol, how to present work."},
{"name": "Short agent notes", "form": "claude/AGENTS.md", "what": "The shorter global agent notes."},
{"name": "Settings", "form": "claude/settings.json", "what": "Claude Code settings."},
{"name": "Linux global mirror", "form": "claude/linux-global/", "what": "Copy of the installed Linux instruction files. Machine settings stay local."},
{"name": "Windows global mirror", "form": "claude/windows-global/", "what": "Copy of the Windows user .claude instruction files and their four docs."},
{"name": "Hooks", "form": "workstation claude hooks", "what": "Hooks that run by themselves."},
{"name": "Sessions", "form": "workstation claude sessions", "what": "Continue or resume main sessions."},
{"name": "Skills", "form": "workstation claude skills", "what": "Skills kept here and how to install them."},
{"name": "Plugins", "form": "workstation claude mods", "what": "Review pane, changelog pane, scratchpad, and team board plugins."},
{"name": "Team park", "form": "workstation claude team-park", "what": "The team-park command."},
{"name": "Usage guard", "form": "workstation claude usage-guard", "what": "The claude command wrapper that guards usage."},
{"name": "Backups", "form": "claude/backups/", "what": "Portable snapshots of the desktop instruction packages. Not loaded automatically."},
{"name": "Communication framework draft", "form": "claude/communication-framework.md", "what": "Design notes. Not enforced anywhere yet."},
{"name": "Skill shortlist", "form": "claude/skills-shortlist.md", "what": "Skills researched on skills.sh."}
]},
{"path": ["claude", "hooks"], "sentence": "Hooks that run by themselves on sessions and tool calls. Nothing to type; wired in ~/.claude/settings.json.", "rows": [
{"name": "Core rules", "form": "~/.claude/hooks/core-rules.sh", "what": "Rule hook on SessionStart and on Bash calls."},
{"name": "Machine history", "form": "~/.claude/hooks/machine-history.sh", "what": "Machine history hook; see the file."},
{"name": "Team activity", "form": "~/.claude/hooks/team-activity.sh", "what": "Team activity hook; see the file."},
{"name": "Local server guard", "form": "~/.claude/hooks/local-server-guard.py", "what": "Checks Bash calls before they run (PreToolUse on Bash)."},
{"name": "Proof reminder", "form": "~/.claude/hooks/proof-reminder.sh", "what": "Reminds to prove the work after Edit, MultiEdit, Write, and Bash."},
{"name": "Session types", "form": "~/.claude/hooks/session-types.sh", "what": "SessionStart hook for session types."},
{"name": "Core rules tests", "form": "claude/hooks/test_core_rules.sh", "what": "Tests the core rules hook."}
]},
{"path": ["claude", "sessions"], "sentence": "Named main sessions, run through the claude wrapper.", "rows": [
{"name": "Continue main session", "form": "claude --main -c", "what": "Continues the latest main session."},
{"name": "Resume a main session", "form": "claude --main -r", "what": "Chooses one to resume."},
{"name": "Main sessions script", "form": "~/.claude/hooks/main-sessions.py", "what": "Run by the wrapper for -c and -r."},
{"name": "Session types tests", "form": "claude/session-types/tests/run.sh", "what": "Runs the session types tests."},
{"name": "Session types design", "form": "claude/session-types/docs/design/", "what": "Design notes for the changelog timeline and picker views."}
]},
{"path": ["claude", "skills"], "sentence": "Skills kept here as backups. Global skills live in the my-skills repo and are linked by its install.sh.", "rows": [
{"name": "Kept skills", "form": "workstation claude skills kept", "what": "Every skill kept here, and what each one does."},
{"name": "Install a kept skill", "form": "copy into ~/.claude/skills/", "what": "Copy in by hand the ones you want installed."},
{"name": "Global skills", "form": "~/projects/my-skills (install.sh)", "what": "Links into ~/.claude/skills, ~/.codex/skills, and ~/.config/opencode/skills."},
{"name": "Skill shortlist", "form": "claude/skills-shortlist.md", "what": "Skills researched on skills.sh."},
{"name": "Skill design rule", "form": "volatility-based-skill-design (my-skills; claude/linux-global/skills/)", "what": "Skills must declare metadata.usage-tier."}
]},
{"path": ["claude", "skills", "kept"], "sentence": "Skills kept under claude/skills, plus the two Linux global skills. Each is a folder with SKILL.md.", "rows": [
{"name": "tech-ledger", "form": "claude/skills/tech-ledger/", "what": "Read and write the betec Tech Ledger of evaluated tech."},
{"name": "api-key-creation", "form": "claude/skills/api-key-creation/", "what": "Get a missing API key with browser tools (admin tier)."},
{"name": "clone-website", "form": "claude/skills/clone-website/", "what": "Reverse-engineer and clone websites with parallel builders."},
{"name": "contextual-value-product-thinking", "form": "claude/skills/contextual-value-product-thinking/", "what": "Analyze products and startup ideas through human values."},
{"name": "web-research-assistant", "form": "claude/skills/elad12390--web-research-assistant/", "what": "Web research MCP server hosted on liel-windows; setup in SETUP-NOTES.md."},
{"name": "epic-fanout-planning", "form": "claude/skills/epic-fanout-planning/", "what": "Ten-step pattern for QA-gap epics with parallel fan-out."},
{"name": "impeccable", "form": "claude/skills/impeccable/", "what": "Frontend design: shape, critique, audit, polish."},
{"name": "iterative-action-review", "form": "claude/skills/iterative-action-review/", "what": "Review a completed real-world action as one iteration."},
{"name": "lab-experiment", "form": "claude/skills/lab-experiment/", "what": "How to run an experiment in the ai-lab project."},
{"name": "mentor-mode", "form": "claude/skills/mentor-mode/scripts/serve_mentor.py", "what": "Teaching page; prepare_mentor_page.py builds it, serve_mentor.py serves it."},
{"name": "post-feature-cleanup", "form": "claude/skills/post-feature-cleanup/", "what": "Pass after writing code: UI defects, leftovers, repo hygiene."},
{"name": "powershell-launching", "form": "claude/skills/powershell-launching/", "what": "Launch PowerShell or a new terminal on Windows."},
{"name": "reboot-resume", "form": "claude/skills/reboot-resume/", "what": "Preserve and resume work across a reboot or restart."},
{"name": "resume-project", "form": "claude/skills/resume-project/scripts/resume_project.py", "what": "Resume a project; CLI notes in references/cli.md."},
{"name": "solaraai skills (four)", "form": "claude/skills/solaraai-*/", "what": "SolaraAI content calendar, deployment, design system, and forms."},
{"name": "supabase skills (two)", "form": "claude/skills/supabase/ and supabase-postgres-best-practices/", "what": "Supabase's skill, and its Postgres performance rules."},
{"name": "tank--communication-engineering", "form": "claude/skills/tank--communication-engineering/", "what": "Engineering discipline for what an agent says and how much."},
{"name": "tank--skill-creator", "form": "claude/skills/tank--skill-creator/", "what": "Create new skills; scripts/quick_validate.py checks them."},
{"name": "tech-cv-writer", "form": "claude/skills/tech-cv-writer/", "what": "CV writing: ATS architecture, bullet formulas, templates."},
{"name": "Linux global skills (two)", "form": "claude/linux-global/skills/tank--bulletproof/ and volatility-based-skill-design/", "what": "Behavior protocol and skill design, as installed on Linux."}
]},
{"path": ["claude", "mods"], "sentence": "Plugins for the Claude Code interface. Each is a folder with hooks, types, and tests.", "rows": [
{"name": "Review pane", "form": "claude/mods/review-pane/", "what": "The plugin behind workstation review."},
{"name": "Changelog pane", "form": "claude/mods/changelog-pane/", "what": "Changelog pane plugin."},
{"name": "Scratchpad playground", "form": "claude/mods/scratchpad-playground/", "what": "Scratchpad plugin."},
{"name": "Team board", "form": "claude/mods/team-board/", "what": "Team board plugin."}
]},
{"path": ["claude", "team-park"], "sentence": "Team park: the team-park command, from claude/team-park/.", "rows": [
{"name": "Run team park", "form": "team-park (~/.local/bin/team-park)", "what": "Runs the team park tool. Details: claude/team-park/README.md."},
{"name": "Tests", "form": "claude/team-park/test_team_park.py", "what": "Tests for team park."}
]},
{"path": ["claude", "usage-guard"], "sentence": "Usage guard: the claude command wrapper, with its installers and tests.", "rows": [
{"name": "Claude wrapper", "form": "claude (~/bin/claude, ahead of ~/.local/bin/claude)", "what": "Runs the usage guard before Claude Code."},
{"name": "Install on Linux", "form": "claude/usage-guard/install.sh", "what": "Installs the wrapper beside the native claude."},
{"name": "Install on Windows", "form": "claude/usage-guard/Install-Windows.cmd", "what": "Windows install, with Install-Windows.ps1 and Launcher.cs."},
{"name": "Request budget tests", "form": "claude/usage-guard/tests/test_request_budget.py", "what": "Tests the request budget."},
{"name": "Live refresh check", "form": "claude/usage-guard/tests/live-refresh.py", "what": "Checks usage refresh against live data."},
{"name": "Plugin hooks", "form": "claude/usage-guard/plugin/hooks/", "what": "Plugin hooks, including shared-usage.py."},
{"name": "Resolved findings", "form": "claude/usage-guard/.bdd/qa/resolutions/", "what": "Resolved stale-usage and request-budget findings."}
]},
{"path": ["codex"], "sentence": "Codex CLI config and its Chrome helpers.", "rows": [
{"name": "Codex config", "form": "codex/config.toml", "what": "Codex CLI config; deployed to the Windows user .codex folder by init-windows."},
{"name": "Chrome bridge", "form": "workstation codex chrome-bridge", "what": "Keeps the Chrome plugin's latest link and its navigation patch working."},
{"name": "Direct Chrome path", "form": "codex/browser/README.md", "what": "Codex's direct Chrome command path. Its recorder is superseded by workstation browser record."}
]},
{"path": ["codex", "chrome-bridge"], "sentence": "Keeps Codex's Chrome plugin working. Each machine patches its own local cache.", "rows": [
{"name": "Install on Linux", "form": "codex/chrome-bridge/install.sh", "what": "Installs the systemd user watcher and timer."},
{"name": "Install on Windows", "form": "codex/chrome-bridge/Install-CodexChromeBridge.cmd", "what": "Installs a current-user Scheduled Task. PowerShell script beside it."},
{"name": "Repair now", "form": "codex/chrome-bridge/repair.mjs", "what": "Fixes the latest link and the patch by hand."},
{"name": "Watcher unit", "form": "codex/chrome-bridge/codex-chrome-bridge.path", "what": "Watches the Codex plugin folder."},
{"name": "Setup notes", "form": "codex/chrome-bridge/README.md", "what": "Restart requirements and details."}
]},
{"path": ["review"], "sentence": "Review pane: open a review of changes.", "rows": [
{"name": "Open a review", "form": "review-open (~/.local/bin/review-open)", "what": "Opens a review; the same command works from bash and agents."},
{"name": "Review pane plugin", "form": "claude/mods/review-pane/", "what": "The plugin behind the pane."},
{"name": "Chosen design", "form": "claude/mods/review-pane/docs/design/2026-10-18-review-pane/recommendation.md", "what": "The recommended design, with pitches and research beside it."},
{"name": "Flow card", "form": "claude/mods/review-pane/docs/flows/2026-10-18/flow-card.md", "what": "How the review flow goes."}
]},
{"path": ["dashboard"], "sentence": "The dashboard: one screen for its owner, read at a glance. It runs only when you start it.", "rows": [
{"name": "Start the dashboard", "form": "python3 ~/projects/workstation/dashboard/server.py", "what": "Opens at http://127.0.0.1:8780, or another port you pass. Listens on this machine only."},
{"name": "Waiting tab", "form": "workstation dashboard waiting", "what": "The default tab: cases asked, rule changes proposed, calls made alone."},
{"name": "Overview tab", "form": "Overview tab on the dashboard page", "what": "Counts of cases and rule changes, the running team as lanes, and counts by kind."},
{"name": "Third tab", "form": "tab on the dashboard page, named in dashboard/README.md", "what": "Cut off in the dump; confirm the name before building this row."},
{"name": "Concepts version", "form": "workstation dashboard concepts", "what": "Second version at http://127.0.0.1:8781 with a Projects panel."},
{"name": "Reader", "form": "reader panel over the right column", "what": "Opens the rows and the open item's file."},
{"name": "Tests", "form": "python3 -I -m unittest discover -s ~/projects/workstation/dashboard", "what": "Checks against the real data and a real server."},
{"name": "Design rounds", "form": "docs/design/2026-10-17-dashboard/", "what": "Pitches and recommendation behind the look."}
]},
{"path": ["dashboard", "waiting"], "sentence": "Three groups: Decisions, Rule changes, Decided alone. Newest day first; older days sit behind Show.", "rows": [
{"name": "Answer a case", "form": "answer box on a Decisions row", "what": "Posts your answer as a comment on the case's GitHub issue."},
{"name": "Accept or reject a rule change", "form": "Accept or Reject on a Rule changes row", "what": "Sets status in the proposal file under ~/projects/data/global/rule-proposals/ and adds a Decision line."},
{"name": "Review a call decided alone", "form": "Justified, Should have asked, Wrong call, and a note", "what": "Sets review in the case file and writes the note under Final feedback. No GitHub call."},
{"name": "Open an item's file", "form": "/api/file?path=...&as=html", "what": "Shows the rendered file; raw HTML shows as text."},
{"name": "Show older days", "form": "Show button", "what": "Opens the older rows."},
{"name": "Data refresh", "form": "page refreshes every 30 seconds", "what": "Keeps the groups current."},
{"name": "Saved answers", "form": "data timer, within 5 minutes", "what": "Your answers are committed by the data timer."}
]},
{"path": ["dashboard", "concepts"], "sentence": "Concepts version: same server as the dashboard, with a Projects panel in the bottom-right corner.", "rows": [
{"name": "Start", "form": "python3 ~/projects/workstation/dashboard-concepts/server.py", "what": "Opens at http://127.0.0.1:8781, or another port you pass."},
{"name": "Projects panel", "form": "Projects panel, bottom right", "what": "One cell per project, grouped by org, with Agent system and This machine buttons."},
{"name": "Tests", "form": "python3 -I -m unittest discover -s ~/projects/workstation/dashboard-concepts", "what": "17 checks against the real data and a real server."},
{"name": "Data model", "form": "docs/flows/2026-10-17/data-model.md", "what": "What contains what."}
]},
{"path": ["deskflow"], "sentence": "Deskflow shares the laptop trackpad and keyboard with the Windows PC over Tailscale. Installed 2026-10-05.", "rows": [
{"name": "Everyday use", "form": "move past the laptop's right edge", "what": "Controls Windows; move past Windows' left edge to return. Each machine keeps its own display."},
{"name": "Keyboard follows the mouse", "form": "workstation deskflow usb-mouse", "what": "How the keyboard follows the mouse you pick up, and the forwarding that is off."},
{"name": "Recovery", "form": "workstation deskflow recovery", "what": "What to do when Deskflow stops."},
{"name": "Settings files", "form": "workstation deskflow settings", "what": "Config copies and where each lands on this machine."},
{"name": "Network audit", "form": "deskflow/NETWORK-AUDIT.md", "what": "Network audit notes."},
{"name": "Firewall rules", "form": "deskflow/deskflow-lockdown.nft", "what": "Firewall rules for Deskflow."},
{"name": "Full guide", "form": "deskflow/README.md", "what": "Everything, including the GNOME input-capture prompt."}
]},
{"path": ["deskflow", "usb-mouse"], "sentence": "Forwarding the Windows USB mouse to Linux has been off since 2026-10-20 because it felt slow.", "rows": [
{"name": "Forwarding service", "form": "deskflow-usb-mouse.service (disabled)", "what": "Turn it back on by the steps in its README."},
{"name": "Keyboard follows the mouse", "form": "deskflow/usb-mouse/README.md, Keyboard follows the mouse", "what": "How it works and how to stop it."},
{"name": "Verification notes", "form": "deskflow/usb-mouse/VERIFICATION.md", "what": "Verification record."},
{"name": "Focus rule", "form": "deskflow/usb-mouse/70-deskflow-focus.rules", "what": "Focus rule file in the usb-mouse folder."}
]},
{"path": ["deskflow", "recovery"], "sentence": "Steps when Deskflow stops. GNOME asks to allow input capture on each server start.", "rows": [
{"name": "Start again and ask", "form": "resume-kvm", "what": "Starts Deskflow and asks for input capture again."},
{"name": "Input capture prompt", "form": "GNOME prompt", "what": "Click Allow. Cancel stops Deskflow with exit code 0, so systemd does not restart it."},
{"name": "Full recovery notes", "form": "deskflow/README.md, If it", "what": "The full recovery steps."}
]},
{"path": ["deskflow", "settings"], "sentence": "Config files for Deskflow and where each one lands.", "rows": [
{"name": "Linux client config", "form": "deskflow/linux.conf to ~/.config/Deskflow/Deskflow.conf", "what": "Linux settings."},
{"name": "Linux server config", "form": "deskflow/server.conf to ~/.config/Deskflow/server.conf", "what": "Server settings."},
{"name": "Service unit", "form": "deskflow/deskflow.service to ~/.config/systemd/user/deskflow.service", "what": "The user service."},
{"name": "Keyboard layout drop-in", "form": "deskflow/deskflow.service.d/keyboard-layout.conf", "what": "Keyboard layout for the service."},
{"name": "Windows settings", "form": "deskflow/windows.conf and windows-service.conf", "what": "Separate client and service settings. See deskflow/README.md, repository copies."}
]},
{"path": ["clipboard"], "sentence": "Clipstack: clipboard history shared between Linux and Windows, with a picker.", "rows": [
{"name": "Picker", "form": "python3 ~/projects/workstation/clipstack/picker.py", "what": "Opens the picker to choose an earlier clipboard item."},
{"name": "Server", "form": "clipstack/server.py (service clipstack-server)", "what": "Keeps the history."},
{"name": "Watcher", "form": "clipstack/watcher.py (service clipstack-watcher)", "what": "Watches the clipboard for changes."},
{"name": "Install on Linux", "form": "clipstack/install.sh", "what": "Installs the services."},
{"name": "Windows side", "form": "clipstack/windows/", "what": "clipstack.ahk, plus install.ps1, uninstall.ps1, and verify.ps1."},
{"name": "Tests", "form": "clipstack/test_server.py and clipstack/windows/tests/run-tests.ps1", "what": "Automated tests for the server and Windows side."},
{"name": "Shared clipboard plan", "form": "docs/plans/2026-10-26-shared-clipboard/plan.md", "what": "The plan behind it."}
]},
{"path": ["audio"], "sentence": "Send all Linux audio to the Windows machine over Tailscale, then restore the speakers.", "rows": [
{"name": "Start sending", "form": "audio-start", "what": "Sends Linux audio to the Windows machine."},
{"name": "Pause", "form": "audio-pause", "what": "Restores the speakers."},
{"name": "On, off, status, tone", "form": "audio-share on, off, status, tone", "what": "Same as start and pause, plus status and a tone option."},
{"name": "Sink and port", "form": "null sink windows_share; tcp port 4953", "what": "The virtual output and the port its audio is served on."},
{"name": "Windows player", "form": "windows-audio-share agent", "what": "Runs the Windows ffplay reconnect loop."},
{"name": "Source files", "form": "audio-share/ and zsh.d/audio-share.zsh", "what": "Not in the file list given; confirm they exist before building this screen."}
]},
{"path": ["cv"], "sentence": "The three CVs: sources, PDFs, and how to rebuild them.", "rows": [
{"name": "Full Stack Developer", "form": "cv/cv-full-stack.pdf (source cv/cv-full-stack.tex)", "what": "The full stack CV."},
{"name": "AI Full Stack Engineer", "form": "cv/cv-ai-full-stack.pdf (source cv/cv-ai-full-stack.tex)", "what": "The AI full stack version."},
{"name": "AI Integrations", "form": "cv/cv-ai-integrations.pdf (source cv/cv-ai-integrations.tex)", "what": "The AI integrations version."},
{"name": "Rebuild", "form": "pdflatex -interaction=nonstopmode -halt-on-error cv-full-stack.tex", "what": "Run from cv/. Repeat for each version."},
{"name": "Text versions", "form": "cv/text/build-full.sh", "what": "Plain text versions."},
{"name": "Design HTML", "form": "cv/design/build-design.py", "what": "Builds the design HTML and PDF."},
{"name": "Dated versions", "form": "cv/versions/", "what": "Snapshots from 2026-10-04 and 2026-10-04-v2."},
{"name": "Workflow", "form": "cv/WORKFLOW.md", "what": "How to update and publish."},
{"name": "CV writing help", "form": "claude/skills/tech-cv-writer/", "what": "Bullet formulas, ATS, and templates."},
{"name": "Compatibility links", "form": "/home/liel/projects/tech-cv-workspace/", "what": "Symlinks to cv/ that Hermes uses."}
]},
{"path": ["windows"], "sentence": "The Windows side: rebuild a dev machine, clone work repos, sync skills. These run on Windows; this screen describes them.", "rows": [
{"name": "Install the environment", "form": "init-windows/Start-Install.cmd", "what": "Installs programs, Node, VS Code, Git config, user scripts, and opens Chrome sign-in."},
{"name": "Check the install", "form": "init-windows/Smoke-Test-Windows.ps1 and Verify-Windows.ps1", "what": "Checks what was installed."},
{"name": "Roll back", "form": "init-windows/Remove-WindowsPack.ps1", "what": "Rolls back using the install journal."},
{"name": "Export", "form": "init-windows/Export-Windows.ps1", "what": "Export script; see init-windows/README.md."},
{"name": "What was captured", "form": "init-windows/inventory.md", "what": "Inventory of what the install captures."},
{"name": "Sign-ins to redo", "form": "init-windows/secrets-checklist.md", "what": "Sign-ins to redo by hand."},
{"name": "Clone work repos", "form": "repos/Clone-BetecRepos.ps1", "what": "Clones missing repos; safe to re-run."},
{"name": "Skill sync", "form": "workstation windows skills-sync", "what": "Keeps Windows skill links current from my-skills."},
{"name": "Full guide", "form": "init-windows/README.md", "what": "The full install guide."},
{"name": "Windows global mirror", "form": "claude/windows-global/", "what": "Copy of the desktop's global instruction files."}
]},
{"path": ["windows", "skills-sync"], "sentence": "Skill sync on Windows: a self-hosted runner updates my-skills on each trusted push to master.", "rows": [
{"name": "Runner service", "form": "actions.runner.Lebnor-my-skills.my-skills-liel-windows", "what": "Runs the sync; starts automatically."},
{"name": "Sync script", "form": "skills-sync-windows/Sync-Skills.ps1", "what": "Verifies the checkout, fetches, fast-forwards, and re-runs install.ps1."},
{"name": "Catch-up task", "form": "MySkillsSync-CatchUp scheduled task", "what": "Runs once after startup, with three retries."},
{"name": "Last success", "form": "last-success.json in the MySkillsSync state folder", "what": "Record of the latest successful sync."},
{"name": "Tests", "form": "skills-sync-windows/Test-Sync.ps1 and Test-Account.ps1", "what": "Checks the sync and the runner account."},
{"name": "Details", "form": "skills-sync-windows/README.md", "what": "Components, permissions, and trust boundaries."},
{"name": "Verification notes", "form": "skills-sync-windows/verification.md", "what": "Verification record."}
]},
{"path": ["rules"], "sentence": "Rules every agent follows, from workboard/rules.yaml. Changed only by you or by an accepted rule proposal.", "rows": [
{"name": "Print rules", "form": "rules [folder]", "what": "Prints the rules for a folder (~/.local/bin/rules)."},
{"name": "Rules file", "form": "workboard/rules.yaml", "what": "The rules themselves."},
{"name": "Rule metadata", "form": "workboard/rules-meta.yaml", "what": "Metadata for each rule."},
{"name": "Generated copy", "form": "~/.claude/references/rules.md", "what": "Generated from the rules file; sessions are told to read it on start."},
{"name": "Propose a change", "form": "rule proposal file in ~/projects/data/global/rule-proposals/", "what": "Accept or reject it on the dashboard waiting screen."},
{"name": "Tests", "form": "workboard/test_rules.py and workboard/test_org_folder.py", "what": "Checks the rules and org folder."},
{"name": "Rules per role plan", "form": "docs/plans/2026-10-24-rules-per-role/plan.md", "what": "Plan for rules per role. The reminder timer is in its reminder folder."}
]},
{"path": ["hermes"], "sentence": "Hermes: the source-installed agent. Two profiles, default and jobs, and one gateway for two Telegram bots.", "rows": [
{"name": "Run", "form": "hermes (~/.local/bin/hermes)", "what": "Launcher. The checkout is at ~/projects/hermes-agent."},
{"name": "Example settings", "form": "hermes/default.config.example.yaml and jobs.config.example.yaml", "what": "Secret-free example settings."},
{"name": "Restore", "form": "hermes/RESTORE.md", "what": "Restore runbook."},
{"name": "Backup record", "form": "hermes/BACKUP-2026-10-02.md", "what": "Record of the 2026-10-02 backup."},
{"name": "Shell PATH addition", "form": "hermes/zprofile-path.zsh", "what": "The PATH addition for ~/.zprofile."},
{"name": "Secrets and state", "form": "~/.hermes", "what": "Not in Git. Secrets sit in mode 600 files."},
{"name": "Full status", "form": "hermes/README.md", "what": "Current configuration and install history."}
]},
{"path": ["jev"], "sentence": "Jev: browser smoke checks, and asking Jev for decisions. Reports only the text and URL you assert.", "rows": [
{"name": "Run a browser check", "form": "jev-browser-test (~/.local/bin/jev-browser-test)", "what": "Gives a URL and a goal, then checks the visible text and final URL."},
{"name": "Ask Jev", "form": "jev '<context>' -c '<question>' <options>,other_none -j", "what": "Gets a choice. Confidence at 0.85 or more may count as approved; lower is guidance only."},
{"name": "Install", "form": "jev-browser-test/install.sh", "what": "Clones and pins the upstream tool, then installs the CLI."},
{"name": "Secrets", "form": "~/.config/jev-browser-test/env", "what": "API keys, mode 600. Not in Git."},
{"name": "Instructions", "form": "jev-browser-test/instructions.md", "what": "Instructions for agents using the tool."},
{"name": "Full guide", "form": "jev-browser-test/README.md", "what": "Shared profile, exit codes, privacy boundary."}
]},
{"path": ["opencode"], "sentence": "OpenCode profiles: each profile loads its own files. These commands work in every shell.", "rows": [
{"name": "Current profile", "form": "opencode-profile", "what": "Names the current profile."},
{"name": "All profiles", "form": "opencode-profiles", "what": "Shows what each profile loads."},
{"name": "Switch", "form": "opencode-switch <name>", "what": "Switches new runs in every shell to that profile."},
{"name": "Sign in Claude Code", "form": "opencode-login", "what": "Signs a profile's Claude Code in."},
{"name": "Profile files", "form": "opencode-files", "what": "Lists the current profile's files."},
{"name": "Edit a file", "form": "opencode-edit <file>", "what": "Opens one profile file."},
{"name": "Help", "form": "opencode help (also oc help, opencode-help, oc-help)", "what": "One column per profile. With more than 3 profiles, writes ~/.opencode-profiles/help.md and opens it."},
{"name": "Run", "form": "opencode or oc", "what": "Runs OpenCode with the current profile."},
{"name": "Profile tool and tests", "form": "opencode-profiles/profiles.py and test_profiles.py", "what": "The profile tool and its tests."}
]},
{"path": ["install"], "sentence": "Where each repo file goes on this machine. Files are copies; compare a pair with diff before deciding which side wins.", "rows": [
{"name": "Git config", "form": ".gitconfig to ~/.gitconfig", "what": "Git settings."},
{"name": "Shell helpers", "form": "zsh.d/*.zsh to ~/.zsh.d/", "what": "Sourced by ~/.zshrc."},
{"name": "Git hooks", "form": "git-hooks/* to ~/.git-hooks/", "what": "Lefthook shims."},
{"name": "Claude hook scripts", "form": "claude/hooks/* to ~/.claude/hooks/", "what": "Wired in ~/.claude/settings.json."},
{"name": "Session scripts", "form": "claude/session-types/ scripts to ~/.claude/hooks/", "what": "Session types hook and main-sessions.py."},
{"name": "Claude wrapper", "form": "claude/usage-guard/claude to ~/bin/claude", "what": "The usage-guard wrapper."},
{"name": "Team park", "form": "claude/team-park/team_park.py to ~/.local/bin/team-park", "what": "The team-park command."},
{"name": "Rules", "form": "workboard/rules.yaml", "what": "Read by the rules command."},
{"name": "Skills", "form": "claude/skills/* to ~/.claude/skills/", "what": "Copy in the ones you want."},
{"name": "Windows instruction files", "form": "claude/CLAUDE.md and claude/settings.json to the Windows user .claude folder; codex/config.toml to the .codex folder", "what": "Deployed by init-windows."},
{"name": "Keep in place", "form": "claude/CLAUDE.md, claude/AGENTS.md, claude/settings.json, codex/config.toml", "what": "init-windows reads these by relative path. Do not move them."},
{"name": "Deskflow and user scripts", "form": "workstation deskflow settings; init-windows/user-scripts/*", "what": "Deskflow config copies, and Windows user scripts."}
]},
{"path": ["records"], "sentence": "Dated records: case studies, incidents, plans, research, and behavior specs. Read only.", "rows": [
{"name": "Case studies", "form": "workstation records case-studies", "what": "Archived, human-reviewed experiments."},
{"name": "Incidents", "form": "reference/incidents/ (index: reference/README.md)", "what": "Dated machine failures and repairs."},
{"name": "Plans and design", "form": "workstation records plans", "what": "Dated plans, design rounds, research, changelog, and flows."},
{"name": "Module intent", "form": ".idd/modules/*/INTENT.md", "what": "Intent and behavior for each module."},
{"name": "Behavior scenarios", "form": ".bdd/features/*/", "what": "Behavior scenarios per feature, plus QA findings in .bdd/qa/findings/."}
]},
{"path": ["records", "case-studies"], "sentence": "Three archived experiments, one folder each, each with its own README.", "rows": [
{"name": "Codebot return", "form": "case-studies/conceptual-modeling/2026-09-15-codebot-return/", "what": "The same design request with and without the conceptual-modeling skill. The skill-guided run was judged better."},
{"name": "Signal garden", "form": "case-studies/blume-astryx/2026-09-16-signal-garden/", "what": "A documentation exhibit that separates the explanation from the live interface."},
{"name": "Kernel cloud browsers", "form": "/home/liel/projects/ai-lab/experiments/2026-10-08-kernel-use-cases/insights/RESULTS.md", "what": "Cloud browsers tested live: use cases, speed against local Chrome, and session recording."}
]},
{"path": ["records", "plans"], "sentence": "Dated plans, design rounds, research, and changelog. Read them; nothing runs from here.", "rows": [
{"name": "Plans", "form": "docs/plans/", "what": "Dated plans, such as opencode profiles, the rule list, Claude personas, shared clipboard, and workstation projects."},
{"name": "Design rounds", "form": "docs/design/", "what": "Pitches and recommendations for the dashboard, waiting, and agent sandbox."},
{"name": "Research", "form": "docs/research/ and docs/functional-research/", "what": "Phase checks, proven methods, and functional research."},
{"name": "Changelog", "form": "docs/changelog/", "what": "Patch notes."},
{"name": "Flows", "form": "docs/flows/", "what": "Flow cards and data models."}
]}
],
"questions": [
"Credentials in zsh.d: infra.zsh (git_pull_with_creds, Prisma init) and utils.zsh (update-gitlab-token) embed a credential in git URLs. Should the help screens list those helpers? Recommendation: leave them out of the map until the credential is rotated and moved to a credential manager, since the secrets checklist already says to treat it as compromised.",
"Retired and superseded tools: lan-mouse (retired 2026-10-05), codex/playwright-mcp (retired), and the codex/browser recorder (superseded by browser recordStart and recordStop). Should they appear? Recommendation: leave them off the top-level and sub-screens, and mention them only in Records, since the README keeps some of them as rollback files.",
"Command names: the README gives one command three names, workstation, ws, and setup. setup is generic and may clash with other tools. Recommendation: keep workstation and ws, and drop setup from the help text.",
"Files missing from the dump: workstation-cli/ and zsh.d/workstation.zsh, audio-share/ and zsh.d/audio-share.zsh, and Verify-Windows.ps1 are described in READMEs but absent from the file list. I planned those screens from the READMEs. Recommendation: confirm they exist before building the workstation, audio, and Windows screens.",
"Windows items on a Linux help screen (init-windows, skill sync, Windows clipstack, Windows Codex bridge): should they be listed or left out? Recommendation: list them, marked as Windows, with their file path as the form, since this CLI cannot run them.",
"Dashboard concepts: a separate top-level item, or a version under dashboard? Recommendation: keep it under dashboard, since it shares the same server code.",
"Dashboard start: it is not a service and runs only when started by hand. Should the help offer a service command? Recommendation: keep it manual; the README leaves service setup to you.",
"Hooks: show the hooks that run by themselves under Claude, or hide them? Recommendation: show them with their wiring path, since they change what an agent sees.",
"Records: list the dated folders only, or make each openable? Recommendation: list them with their folder path, since they are read by hand."
]}
```