Howard Enos 2f35163866 harness: read Syncro keys from vault, stop hardcoding the repo root
Two defects found while running /wiki-compile, both from tooling assuming
a path instead of resolving it.

1. Plaintext Syncro API keys. Mike's and Howard's live PSA keys were
   copy-pasted into three command files, a script, and two catalog docs --
   despite both already being vaulted at msp-tools/syncro and
   msp-tools/syncro-howard. Replaced with reads from the SOPS vault via a
   new sourced helper, .claude/scripts/syncro-env.sh. Write paths fail
   closed; read-only paths degrade to skipped enrichment rather than a
   wrong key. Per-user mapping is unchanged, so Syncro attribution is too.

2. Hardcoded repo root. wiki-compile/wiki-lint/inject-standards and
   gen_b64.py hardcoded D:/claudetools; this machine is C:/claudetools.
   syncro.md also read ~/.claude/identity.json before the repo copy -- the
   same bug that made remediation-tool's consent-audit report a fully
   consented tenant as RED. Root now resolves from the script's own
   location, with identity.json claudetools_root as the override.

get-identity.sh had a chicken-and-egg bug: it read ${CLAUDETOOLS_ROOT:-.}
but never set it, so every caller had to already know the root. It now
self-resolves and exports CLAUDETOOLS_ROOT + VAULT_ROOT.

Verified: all three command setup blocks authenticate against live Syncro;
get-identity.sh works from any cwd and honors a pre-set root; gps-rmm
autoenroll resolves its key from the vault. security-review: no findings.

NOTE: both keys remain valid in git history. Rotation in the Syncro portal
is the required follow-up -- this commit does not resolve that exposure.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 07:56:33 -07:00

ClaudeTools Bootstrap / Reinstall Guide

Complete instructions for backing up and restoring a ClaudeTools development environment on Windows 11.


Pre-Reinstall: Creating the Archive

Before wiping or reinstalling Windows, create a backup archive.

Run the bootstrap script in archive mode:

cd D:\ClaudeTools\bootstrap
.\bootstrap.ps1 -Archive

This creates D:\ClaudeTools-backup.zip containing:

  • The full ClaudeTools repository (excluding node_modules, __pycache__, venv)
  • Claude configuration and memory from C:\Users\<you>\.claude\

To specify a custom output path:

.\bootstrap.ps1 -Archive -ArchivePath "E:\Backups\claudetools-2026-03-17.zip"

Option B: Manual Archive

If the script is unavailable, manually zip these locations:

  1. ClaudeTools repository: D:\ClaudeTools\ (entire directory)
  2. Claude memory and config: C:\Users\<you>\.claude\ (entire directory)

Copy the archive(s) to external storage (USB, NAS, cloud) before proceeding with the Windows reinstall.

What Does NOT Need Archiving

These are restored automatically by the bootstrap script:

  • Git, Node.js, Python, Ollama (reinstalled via winget)
  • npm global packages (reinstalled)
  • Python pip packages (reinstalled)
  • Ollama models (re-pulled)
  • MCP server virtual environments (recreated)

Post-Reinstall: Running the Bootstrap

Step 1: Prepare the D: Drive

If D:\ClaudeTools was on a separate partition that survived the reinstall, skip to Step 2.

Otherwise, extract your archive:

# Extract the ClaudeTools repo to D:\
Expand-Archive -Path "E:\Backups\claudetools-2026-03-17.zip" -DestinationPath "D:\"

# Extract Claude config to your user profile
# (The archive contains a 'claude-config' folder - copy it to the right place)
Copy-Item -Path "D:\claude-config\*" -Destination "$env:USERPROFILE\.claude\" -Recurse -Force

Step 2: Run the Bootstrap Script

Open an elevated PowerShell (Run as Administrator):

Set-ExecutionPolicy Bypass -Scope Process -Force
D:\ClaudeTools\bootstrap\bootstrap.ps1

The script runs 9 phases and takes approximately 15-30 minutes depending on download speeds and Ollama model sizes.

Step 3: Advanced Usage

Run a single phase:

.\bootstrap.ps1 -OnlyPhase 4    # Only install Python packages

Skip specific phases:

.\bootstrap.ps1 -SkipPhase 5    # Skip Ollama model pulls (slow)
.\bootstrap.ps1 -SkipPhase 4,5  # Skip Python packages and Ollama models

Phase Reference

Phase What It Does Duration
1 Install Git, Node.js, Python 3.13, Ollama via winget 2-5 min
2 Install Claude Code CLI + global npm packages 1-2 min
3 Clone or configure ClaudeTools git repository <1 min
4 Install all Python pip packages globally 3-5 min
5 Pull Ollama models (nomic-embed-text, llama3.1:8b, qwen2.5-coder:7b) 5-15 min
6 Create MCP server venv and install dependencies 1-2 min
7 Write Claude Code settings.json, copy commands, create directories <1 min
8 Initialize GrepAI <1 min
9 Verify all components are installed and working <1 min

Manual Steps (Cannot Be Automated)

These steps require interactive authentication or browser actions:

1. Authenticate Claude Code

claude

Follow the prompts to enter your Anthropic API key or log in via browser.

2. GitHub Personal Access Token

Edit D:\ClaudeTools\.mcp.json and set the GITHUB_PERSONAL_ACCESS_TOKEN value:

"env": {
    "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_your_token_here"
}

Generate a new token at: https://github.com/settings/tokens

3. Claude-in-Chrome Extension

Install the Chrome extension manually:

  • Open Chrome and navigate to the Chrome Web Store
  • Search for "Claude in Chrome" (or install from the MCP extension source)
  • Configure the extension to connect to your local MCP server

4. Restore Memory Files (If Needed)

If the bootstrap reports memory files are missing:

# Copy from your archive
Copy-Item -Path "E:\Backups\claude-config\projects\D--ClaudeTools\memory\*" `
          -Destination "$env:USERPROFILE\.claude\projects\D--ClaudeTools\memory\" `
          -Recurse -Force

5. Git Credentials

When you first git pull or git push to Gitea, you will be prompted for credentials. Use the Gitea username and password from credentials.md.


Verification Checklist

After bootstrap completes, verify manually:

  • git --version returns a version
  • node --version returns v24.x or later
  • python --version returns 3.13.x
  • claude --version returns a version
  • ollama list shows all 3 models
  • D:\ClaudeTools exists and has .git directory
  • D:\ClaudeTools\.mcp.json exists
  • D:\ClaudeTools\grepai.exe exists
  • C:\Users\<you>\.claude\settings.json exists
  • C:\Users\<you>\.claude\commands\ has command files
  • Run claude from D:\ClaudeTools and confirm MCP servers connect
  • Claude-in-Chrome extension is installed and responsive

Troubleshooting

winget not found

Install "App Installer" from the Microsoft Store. It ships with Windows 11 but may need updating.

Node.js/Python not on PATH after install

Close and reopen your terminal, or run:

$env:Path = [System.Environment]::GetEnvironmentVariable("Path", "Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path", "User")

Ollama models fail to pull

Ensure the Ollama service is running:

ollama serve

Then retry:

.\bootstrap.ps1 -OnlyPhase 5

pip install fails for specific packages

Some packages (pywin32, opencv-python, pyzbar) require Visual C++ Build Tools. Install if needed:

winget install Microsoft.VisualStudio.2022.BuildTools

Then re-run Phase 4:

.\bootstrap.ps1 -OnlyPhase 4

GrepAI init requires interaction

Run manually:

cd D:\ClaudeTools
.\grepai.exe init

Select Ollama as the provider and nomic-embed-text as the embedding model.

SSL certificate errors with Gitea

The bootstrap configures http.sslVerify false automatically. If you still see errors:

cd D:\ClaudeTools
git config http.sslVerify false
Description
Custom Claude Code behaviors and workflows - Multi-mode operation system
Readme 3 GiB
Languages
Python 31.4%
QuickBASIC 14%
PowerShell 14%
JavaScript 11.3%
Shell 10.9%
Other 18.3%