Kristin's Vault/The punch list

The punch list

Your list from 20-People/Andy Carlson.md, with the cause and the owner for each. Ordered by what unblocks the most.

Issue 1 · the one that unblocks two others

Cloud scheduling returns 403 on your repo

What you reported. RemoteTrigger and the cloud schedule mechanism both come back 403 on kristin-vault specifically. You fell back to local scheduled tasks.

What I told you on 12 August. That the cause was your vault sitting under my personal GitHub account, where collaborators cap at write access permanently. I moved it into the RemixSystems organization and made you an admin.

What I found this morning. That fix landed. You are admin on RemixSystems/kristin-vault, confirmed today. So the permission half is solved and you were still hitting the 403 on 30 August, which means my explanation was incomplete.

The lead suspect

Your note and your 11 August email both point at github.com/remixrevco/kristin-vault. That is the pre-move address. GitHub redirects old addresses, so your backups kept syncing and nothing looked broken.

A cloud routine authorizes against a specific repo, and a redirect is not that repo. I think your Mac is still pointed at the old address. I hit the same thing on two other client vaults this morning, which is what put me onto it.

The test, five minutes. Run this, then retry a cloud routine.

Change my vault's GitHub address from the old remixrevco one to the RemixSystems organization, confirm it worked, then show me the new address.
What we found on 1 September

Your Mac was already pointed at the RemixSystems address, so that half was clean before we started. The wall is the Claude GitHub app. Installing it on a GitHub organization asks for a Claude Team or Enterprise plan, and neither of us is on one.

The fix is to move the repo into your own GitHub account so there is no organization involved. Full sequence, and what it means for you, is in runbook 1.

Issue 2 · falls out of issue 1

Local tasks only fire when the app is open

What you reported. The 6:30 morning brief only runs if the Mac is awake and Claude is open. Asleep, and it fires whenever you next launch the app, so the morning brief has landed in the evening.

Why. Not a separate bug. Local tasks live on your Mac and cannot wake a sleeping machine. It is the 403 downstream.

Fix. Issue 1 solves it. Cloud routines run on a server that never sleeps. Interim, set a scheduled wake in your energy settings five minutes before the brief.

Your duplicate firing at 11:53 and 11:55 on 11 August is probably the same story, a task deferred by sleep and then fired twice on wake. If it recurs after cloud scheduling is live, it is a real bug and I will chase it.

Issue 3 · the daily irritant

The same safe command asks permission every time

You logged this three times, on 27, 30 and 31 August, and called it as one problem with three faces. You were right.

What you sawThe actual cause
Captures prompt when called by full path but not by bash .claude/scripts/...The allow-list is a literal text prefix match, not "this script, however it is invoked"
Approving it once does not stop it asking againEach approval is saved as the full command including that day's log message, and your message text is different every time by design
Ordinary lookups like grep and find prompt constantlyRead-only shell tools were never on the allow-list at all. Only git, your own scripts, and the file tools were

Fix. One edit to .claude/settings.json, plus clearing the one-off approvals piled up in settings.local.json. Trusts your logging script however it is invoked, and read-only tools inside the vault. I push it today, it arrives on your next sync.

It got worse because of your new habit. A fresh thread each morning means nothing is masking it. The habit is right, the settings were wrong.

Issue 4 · ten minutes, together

Python 3.9.6, no LibreOffice, no pandoc

What you reported. The document validation script needs Python 3.10 or newer and your Mac ships 3.9.6. LibreOffice and pandoc are not installed, so a Word document edit could be checked for structural validity but never actually previewed.

Why it matters now. You are writing SOWs with legal boilerplate in Word. The document is the deliverable.

Fix. Three installs, ten minutes, done together.

Install a current Python, LibreOffice and pandoc with Homebrew, then confirm the docx skill's validation script runs clean.
Issue 5 · answered

The docx tool reinstalls itself every conversation

What you reported. Node was missing entirely and had to be installed via Homebrew, which is a normal one-time thing. But the docx skill's own dependencies live under a folder named with a per-session ID, so they look like they get rebuilt for every new conversation, prompting for permission each time.

The cause. Your reading of the path was right. The desktop app unpacks a fresh copy of the Word skill into a session-named folder under ~/Library/Application Support/Claude/local-agent-mode-sessions/skills-plugin/, and that folder is disposable. The skill says to install docx globally, but the code then loads it with a plain require('docx'), and Node does not look in the global folder unless it is told to. So the global install worked and the load still failed. Claude did the obvious workaround and installed docx beside the skill, inside the disposable folder. It vanishes with the session, the next load fails, and because the folder name changes every time, yesterday's permission rule never matches today's command.

The fix. Two lines, once, in Terminal rather than inside Claude. Then quit and reopen the Claude app so it picks up the new shell setting.

npm install -g docx echo 'export NODE_PATH="$(npm root -g)"' >> ~/.zshrc

To check it took. Open any new conversation and paste this. If it prints docx ok, you are done.

Run `node -e "require('docx'); console.log('docx ok')"` and tell me what it prints. Do not install anything.

Already done in your vault. Your CLAUDE.md now carries a Word Documents section telling the assistant the package is global, that the skill folder is per session and must never be the install target, and that if require('docx') fails it should say so and stop rather than reinstall. That is what keeps the loop from coming back when a future session forgets. Pushed 11 September with the lanes documentation.

Done 20 October. Bash(node:*) and Bash(npm root -g) are now on the allow list in .claude/settings.json, which removes the last permission prompt. Nothing for you to do.

If the check prints an error instead, send me the error plus the output of npm root -g and echo $NODE_PATH. That says whether the profile line loaded or whether the app is reading a different shell.

Issue 6 · not mine to fix

Klugo Microsoft, Outlook and Teams

Status. Blocked on your IT granting delegated Graph scopes, Calendars.ReadWrite and Mail.ReadWrite. This is the one item on the list I cannot solve from my side, and it has been open since July.

What exists already. The written request is in the doc I sent on 12 August, "2026-07-14 Kristin Steele, Before Our First Session," with a comment tagging you. It is copy and paste ready for whoever owns identity at Klugo.

Meanwhile. Your brief reads the hand-maintained rhythm note in 40-Work/Klugo Group.md instead of real meetings. It works, and it is the one place the system runs on memory rather than truth.

Issue 7 · what you asked for on 30 August

More accounts, and different hats

Your words. "I would like to integrate at least a couple of additional email accounts. I think I may need agents for each like you had, sorta like being at work and putting on different hats. I think I need something like that for personal as I realize I'm not having it help me keep up as well as I could, esp with simple stuff like PTO."

Both doable, both the main build rather than a punch list item.

See the roadmap

On me

On me

The invoice. It is on the billing page now, along with today. You should not have had to ask twice.

Issue 5. On 1 September I said I did not have the answer yet and would tell you either way. That took ten days. It is answered above.

The 403. On 12 August I told you it was sorted. It was not. I fixed the permission half and stopped checking. That cost you two and a half weeks of workarounds.