# Talk and Moves Workflows Laptop Handoff This note records what needs to be present on another Mac for the talk split-view and moves split-view workflows to work after the Obsidian vault syncs. ## What syncs through the vault These files live inside the Obsidian vault, so they should arrive on the laptop when the vault sync completes: - `Attachments/tools/talk-split-view.html` - `Attachments/tools/talk-split-view-launch.command` - `Attachments/tools/talk-speaker-on-ipad.command` - `Attachments/tools/moves-split-view.html` - talk audience/speaker deck HTML files under `Attachments/` - moves deck/map HTML files under `Attachments/` - notes such as `Notes/Talk Split View App.md` and any `Notes/* — Argument Moves.md` files The split-view HTML files are designed to resolve local vault files rather than depending on machine-specific state files. The talk launcher also resolves `talk-split-view.html` relative to its own location in `Attachments/tools/`. ## What does not sync automatically These are machine-local or config-repo-local and need setup on the laptop: - Claude config is Git-backed at `~/.claude` from `https://github.com/nickneek/claude-config.git`. The skills `talk-deck`, `moves`, and `moves-deck` are tracked there, so a fresh laptop can get them with `git clone` or `git pull`. - Codex live config is not itself a Git repo. The sync-safe subset lives at `~/.codex-config` from `https://github.com/nickneek/codex-config.git`; after pulling on the laptop, run `~/.codex-config/scripts/apply-to-live.sh` to copy skills, rules, and config into live `~/.codex`. - GitHub CLI authentication for gist publishing and editing. Run `gh auth status` and make sure the account has `gist` scope. - Codex/Claude app or CLI setup, including whatever sync mechanism normally mirrors `~/.claude` and `~/.codex` config. - macOS permissions for `.command` launchers, Safari automation, and Sidecar window movement. - Executable bits on `.command` files if the sync provider drops them. ## First laptop setup checklist 1. Let the Obsidian vault finish syncing. 2. Confirm these vault files exist: - `Attachments/tools/talk-split-view.html` - `Attachments/tools/moves-split-view.html` - `Attachments/tools/talk-split-view-launch.command` - `Attachments/tools/talk-speaker-on-ipad.command` 3. If double-clicking a `.command` file gives an access or privilege error, run: ```bash chmod +x "/path/to/My Obsidian Vault/Attachments/tools/talk-split-view-launch.command" chmod +x "/path/to/My Obsidian Vault/Attachments/tools/talk-speaker-on-ipad.command" ``` 4. Set up Claude config from Git if it is not already present: ```bash git clone https://github.com/nickneek/claude-config.git ~/.claude # or, if already cloned: cd ~/.claude && git pull ``` This supplies `~/.claude/skills/talk-deck`, `~/.claude/skills/moves`, and `~/.claude/skills/moves-deck`. 5. Set up Codex config from Git if it is not already present: ```bash git clone https://github.com/nickneek/codex-config.git ~/.codex-config cd ~/.codex-config && git pull ~/.codex-config/scripts/apply-to-live.sh ``` This copies the synced Codex skills into live `~/.codex/skills/`. 6. Restart Claude/Codex after adding skills so their metadata is picked up. 7. Check GitHub CLI auth: ```bash gh auth status ``` The moves-deck and talk-deck publishing workflows need gist access. 8. Open `Attachments/tools/talk-split-view.html` directly in Safari. It should load the current vault-local audience and speaker decks without needing URL parameters. 9. Open `Attachments/tools/moves-split-view.html`. It should load its default moves deck/map, or a specific moves workspace if opened from a note link with `deck=`, `map=`, and `topic=` parameters. 10. If using iPad/Sidecar, grant the shell/Terminal app Accessibility permission when macOS asks. The speaker-on-iPad launcher depends on Safari automation and window movement. ## Working model Talk workflow: audience deck, speaker deck, and speaker note stay in lockstep. The split viewer gives the delivery/rehearsal surface. Local split view uses `sync=off`; separate device delivery uses the shared `sync=<topic>` channel. Moves workflow: the Obsidian moves note, slide deck, map, and split viewer are synchronized views of one moves workspace. Nick can refer to either the note or the slide/map view, and Claude/Codex should update the note first, regenerate deck and map, then publish/refresh any live viewer if the workspace uses gist/ntfy. ## Quick verification commands From the laptop: ```bash gh auth status ls -l "/path/to/My Obsidian Vault/Attachments/tools/"*.command ``` Inside Claude/Codex, ask after pulling/applying config: - `Do you have the moves and moves-deck skills available?` - `Open the talk split-view app.` - `Open the moves split-view app.` ## If something fails - Blank talk split-view: check that the local audience/speaker deck files exist under `Attachments/generating-philosophy-talk/`. - `.command` will not run: re-run `chmod +x` on the launcher. - Sidecar window does not move: check macOS Accessibility permissions for the app running the command. - Live gist does not update: check `gh auth status`, then confirm the token has `gist` scope. - Split-view does not auto-refresh: check the note frontmatter for `refresh-topic`, then verify that the deck/map link includes the same `topic=` value.