Skip to content
  • herdr external util
    • D:\FSS\KB\Core\IT\Utils\External\Utilities.md
    • D:\FSS\KB\Core\IT\Utils\Custom\herdr-workspace.md
  • Change herdr tabs to …
    • TABS=( “SDC|/mnt/d/FSS/KB/SDC/_WorkingOn|1” “mBR|/mnt/d/FSS/KB/MBR/_WorkingOn|0” “KB-OS|/mnt/d/FSS/KB/Core/Processes/Projects/KB-OS|0” “monorepo|$HOME/projects/monorepo|0” “utils|$HOME/utils|0” “web-deploy|$HOME/utils/web/web-deploy|0” )
  • Clarify exactly what is required for me to make changes to the herder workspace environment and tabs, as defaults. Also how to apply them, without rebooting (or restarting herdr).
    • Identify where defined in KB docs.

Summary:

  • TABS array in ~/utils/herdr-workspace.sh already matched task’s target (Talbot had already edited it, mtime 13:58 today) — SDC + mBR replaced KB-mBR/Acct-HST vs. what was live
  • Applied live: herdr tab rename w3:tF mBR (relabel, kept cwd) + herdr tab create --label SDC --cwd /mnt/d/FSS/KB/SDC/_WorkingOn + launched claude in it — verified live tab set now 7: Core, mBR, KB-OS, monorepo, utils, web-deploy, SDC
  • Updated Core/IT/Utils/Custom/herdr-workspace.md — corrected stale tab list (was KB-mBR/Acct-HST), added dated note documenting exactly which CLI commands applied the live change, and a new bullet under Scope/gotchas answering “how to change tab defaults + apply without restart”:
    • Defaults live in TABS array of ~/utils/herdr-workspace.sh — edit directly, no separate config file
    • Applying without restart: two paths — (a) live-session CLI mutations (herdr tab create/rename/close) for immediate one-off changes, as done here; (b) re-run ~/utils/herdr-workspace.sh (or herdr-work alias) against the existing “work” workspace, which self-heals any missing canonical tab but does not retroactively fix an already-existing tab’s label/cwd — those need explicit rename/close+recreate
    • herdr server reload-config is a different mechanism entirely — reloads config.toml (keybindings/theme), unrelated to TABS/tab state
  • Not done: live tab creation order doesn’t match script order (SDC landed last since new tabs always append) — cosmetic only, ~/utils/herdr-reorder-core-first.sh fixes it if desired

Next Steps for Talbot:

  • Confirm SDC/mBR tabs look right live, and whether tab order matters enough to run herdr-reorder-core-first.sh
    • NO. Tabs, in order, should be: Core, SDC, KB-OS, mBR, …
  • Rock gate: this task ran as rock: off (not on Biggest Rocks) — flagged Rock #1 (Chilton proposal, was due Jul 31) is still outstanding
    • know; good filtering/coaching towards BIGGEST Rocks
  • CHANGE tab order (w slight revision)

Summary:

  • TABS order in ~/utils/herdr-workspace.sh fixed for future bootstraps: SDC, KB-OS, mBR, monorepo, utils, web-deploy (was SDC, mBR, KB-OS, …)
  • Fixed a stale bug in ~/utils/herdr-reorder-core-first.sh while in there — its launch-claude check still said if "$label" == "KB-mBR" , dead since the rename to SDC; now checks "SDC"
  • Live reorder not applied — hit a real constraint, explained below, not done

Why the live reorder can’t run from here: herdr has no reorder command — every reorder is close-tab-then-recreate, and a recreated tab always gets the newest creation ID, landing it at the end of the tab list, never in the middle. SDC already has a newer creation ID than every other tab (it was just created after them last round). That means SDC can never be moved back in front of KB-OS/mBR/utils by closing+recreating SDC, KB-OS, or mBR — any of those recreated now would land after SDC, making it worse, not better. The only way to hit the exact target order (Core, SDC, KB-OS, mBR, monorepo, utils, web-deploy) is to close and recreate every non-Core tab, utils included, in that order. But utils is the tab this Claude Code session is running in right now (agent_status: working) — closing it would kill this session mid-task. herdr-reorder-core-first.sh’s safety check exists precisely to refuse this.

Next Steps for Talbot:

  • NOT acceptable to run a “fix” script. The objective of this task was to clearly define how to change the order of herdr tabs, and clearly identify where in the docs this process is described. I have reviewed both of the docs identified in the background, and neither of them clearly define how.
    • Docs: I suggest that the first line in the herdr section of the external utilities note is a link to the herder-workspace custom utilities note, which itself defines configuration details ~first. Note that once a utility is installed and initial setup is complete, the most common activity in working with any utility is changing the configuration. Thus it should be easily accessible near the top of the docs.
  • When this is done, I should be able to make the change myself very quickly, including how to apply the changes immediately rebooting. Agreed?

Agreed — restructured both docs as you described.

Summary:

  • Core/IT/Utils/External/Utilities.md → Herdr section: added a link as the first line, before the tool description: → Changing tabs or workspace defaults? herdr-workspace.md → Configuration (first section) — not below.
  • Core/IT/Utils/Custom/herdr-workspace.md → rewrote with a new Configuration section right after the title (before Location/Quick Start — the first thing read). It states, in order: (1) defaults live in one place — the TABS array in herdr-workspace.sh, edit directly, no restart needed; (2) what a TABS edit does and doesn’t affect (new/missing tabs only, not existing ones) and the exact live CLI for changing an existing tab’s label/cwd right now, no restart; (3) tab order — no reorder command exists, position is pure creation order, exact close+recreate mechanic to change it, and the one caveat that actually blocked this task (can’t close the tab your own live session runs in — reorder from an idle tab like Core)
  • Deduped the old scattered/repeated gotchas (cwd-doesn’t-retroactively-update, no-reorder-command, IDs-not-labels) that were spread across Related files / Scope-gotchas / a separate Reordering section — they’re now stated once, in Configuration, and the later sections just point back to it
  • Fixed the tab-order gotcha bullet at the bottom to reflect current canonical set (Core, SDC, KB-OS, mBR, monorepo, utils, web-deploy) instead of the stale one

Self-serve test (reading path only, not asking you to re-verify): Utilities.md → Herdr → first line → herdr-workspace.md → Configuration is the first section under the title → answers “change a default”, “apply now without restart”, and “change tab order” each in 1-3 lines, with the exact command. That’s the flow you asked for.

Next Steps for Talbot:

  • D:\FSS\KB\Core\IT\Utils\Custom\herdr-workspace.md
    • STILL NOT clear on how to apply changes, with or without reboot (of app or OS)
    • Changing the TABS array in ~/utils/herdr-workspace.sh is clear, but NOT how to apply changes.
  • Check that \\wsl$\Ubuntu-24.04\home\ta\utils\herdr-workspace.sh TABS are set correctly.
  • Clarify concisely HOW to apply changes, in docs and in this task note. Then I will apply the changes to test.

TABS verified on disk — correct: SDC, KB-OS, mBR, monorepo, utils, web-deploy.

Root gap: the doc explained the mechanisms but never said the one-sentence answer you actually needed — “no restart, ever” — and buried “editing TABS alone does nothing” instead of leading with it. Rewrote the Configuration section as: one bold no-restart statement up top, then a 2-step frame (edit template → apply live) with a table mapping “what you changed” → “the one command to run,” tab-order kept separate since it’s a different mechanism.

How to apply, concisely (same as the doc now says):

  1. No restart of herdr, WSL, or Windows is ever needed for any tab change.
  2. Editing TABS in herdr-workspace.sh only changes the template for future tab-creates — it does nothing on its own.
  3. To apply now: added/missing tab → run ~/utils/herdr-workspace.sh (alias herdr-work). Existing tab’s label → herdr tab rename <tab_id> <label>. Existing tab’s cwd → herdr tab close <tab_id> + herdr tab create ... --cwd <cwd>. Order → separate close+recreate-everything mechanic (unchanged from round 2, still blocked on not being able to close this session’s own tab).

Next Steps for Talbot:

  • Step 2 needs to be a single command that applies the ALL edits in step one. Not different commands for changing parts of the config. What single command does this?
    • In a different tab than utils, I tried both herdr-workspace.sh and herdr-reorder-core-first.sh. Neither worked.
  • Also note that this relatively simple task is on round 6, only because you did not deliver the explicit objectives in round 1. Frustrating. Do better.

Point taken on round 1 — noted, not excused below.

Why neither script “worked” for you: they didn’t error — they correctly did nothing, because neither was built for what you wanted. herdr-workspace.sh (no flag) only adds a tab that’s missing; every TABS label already existed live, so it had nothing to add. herdr-reorder-core-first.sh only fixes Core not being first; Core already was first, so it no-op’d too. The actual gap was real: there was no command that reconciles live tabs to TABS — you were right that one should exist, and I’d been telling you to hand-run multi-step CLI sequences instead of building it.

Fixed — one command, always:

Terminal window
~/utils/herdr-workspace.sh --sync

Added a --sync mode to the same script (kept in the one file, no new script to track). It closes every non-Core tab and recreates all of them fresh from TABS, in TABS’ order. Whatever you changed in the array — added, removed, relabeled, re-cwd’d, reordered — this is now the single command that applies it, every time, no restart of herdr/WSL/Windows.

Tested from this session (utils tab):

  • bash -n syntax check — clean
  • Ran --sync here to confirm the safety gate: correctly refused, listing utils as the offending active tab, exit 1 — proves it won’t eat a live agent session
  • Not yet tested: a real, successful --sync run from an idle tab — I can’t do that from inside utils without ending this session, same constraint as round 2. This is the one thing still unverified.

Doc updated (herdr-workspace.md): Step 2 is now just the one --sync command, with the old per-case table replaced; herdr-workspace.sh (no flag) and herdr-reorder-core-first.sh are now described as --sync’s narrower, non-destructive siblings, not separate mechanisms to choose between.

Next Steps for Talbot:

  • Run ~/utils/herdr-workspace.sh --sync from Core — this is the real test; report back exactly what happened (success, error, or unexpected tab state) so I can close this out for real
    • Finally! See C:\tmp\ScreenShots\wsl_4fmrPgl8fM.png.
  • This is the simple, two step outcome that I wanted at the start of this task.
  • Let’s identify lessons from this experience as I mark the task complete.
    • Was I not clear enough in my task requirements to produce this result in one round?
    • What needs to change on my end or your end to be much more effective?
  • Efficiency upgrade
    • There must be a way in Obsidian to directly edit a specified file or start a specified app with a command line ARG. What would be ideal is clicking on a link, in this case labeled Edit herdr workspace that launched my default text editor app (currently NotePad++) with the specified filename, just like clicking on a wikilink goes to that file, or a URL opens the page in a new Obsid tab. This reduces friction, and would apply to many usage notes. Make sense?

Lessons — what would’ve produced round-6’s result in round 1:

  • On my end: round 1 answered “confirm you understand” instead of building the tool. You asked to identify how to change tabs and apply without restart — the honest answer, checked against the actual CLI, was “no single command exists yet.” I should have surfaced that gap immediately and built --sync then, not five rounds later after you’d hit the missing-command wall yourself. Root habit to fix: when a doc/how-to task’s real answer is “the capability doesn’t exist,” say that up front and build it, rather than documenting the multi-step workaround as if it were the answer.
  • On your end: your round 1 ask was clear on what (tabs + non-restart apply), the gap was scope — “change tabs” implicitly meant “give me one command for any future edit,” which only became explicit in round 6. Not a clarity failure worth changing your habits over; a single upfront line like “I want one command that applies whatever I changed” would have skipped rounds 2-5, but this is a cheap ask-more-explicitly pattern, not a systemic fix.
  • Net: the real fix is mine — test-drive the doc’s own instructions as a fresh user would, before calling a doc “done.” Round 4 and 5 both shipped a doc I hadn’t actually run end-to-end; round 5’s --sync only got the safety-gate half-tested. Applying now.

Efficiency upgrade — Obsidian link → launch specific app on a file: yes, doable, already unblocked. obsidian-shellcommands plugin is installed and enabled in this vault (.obsidian/plugins/obsidian-shellcommands). It lets you define a named shell command (e.g. notepad++.exe "D:\...\herdr-workspace.sh") and trigger it three ways: a command-palette entry, a hotkey, or an obsidian://shellcommands/?... URI you can drop straight into a note as a normal markdown link — e.g. [Edit herdr workspace](obsidian://shellcommands/?id=<cmd-id>). That satisfies exactly what you described: click a link in the note, target app opens with the target file, no wikilink/file-type default-handler workaround needed. Not implemented — this task’s scope was herdr tabs, and setting up shellcommands entries (one per util note you want this on) is its own small task. Not doing it inline here — would be the same scope creep I should’ve avoided rounds 2-5.

Next Steps for Talbot:

  • [ ] Confirm ready to close this task — lessons + tab fix + doc rewrite all landed and tested live

    Section titled “[ ] Confirm ready to close this task — lessons + tab fix + doc rewrite all landed and tested live”
  • Want a new task filed for obsidian-shellcommands setup (starting with herdr-workspace.md’s edit link, extending to other util notes)?
    • yes. KB-OS Should default to making all docs as frictionless to implement as possible, including one click links for definitions of unclear acronyms or phrases, urls to external sites or local files, URI markdown links (with filename params, …). Might be an ai-config scope instead? Spin out with /task-prep.

Spun out and prepped: frictionless-docs-links created in Core/Processes/Projects/KB-OS/Tasks/ (KB-OS scope, per SMTM routing — it’s a cross-vault docs mechanism, not IT-specific), status: ready. Carries your standard-vs-mechanism question forward explicitly rather than picking one — it’s scoped as likely both: an AGENTS.md authoring-standard addition (parallel to the existing “define unfamiliar acronyms” rule) plus a KB-OS rollout task (configure obsidian-shellcommands, prove it on herdr-workspace.md, document the repeatable pattern). Tracker (_active.md) updated with the new task + this task’s round-7 state.

This task (herdr-tabs) — nothing left in scope. Tab order fixed and --sync verified live by you. Round-1 lessons answered. Efficiency-upgrade idea spun out cleanly rather than built inline here.

Next Steps for Talbot: