Go Beyond — Claude Projects Registry

Last updated: 2026-05-29 · Source of truth: R2 vault (oblivion/PROJECTS.md) · Read via GET https://api.Go Beyondtravel.workers.dev/vault/read?path=PROJECTS.md

Projects are numbered for easy reference across Cowork and Claude Code sessions. Tell any Claude instance “work on 2026-00X-DAMIEN” and it knows exactly what to do.


Active & Planned

IDProjectStatusOwnerDifficultyPriority
2026-001-DAMIENObsidian → Cloudflare Vault API + Auto-syncCOMPLETEClaude Code4 / 53 / 5
2026-002-DAMIENObsidian Vault MCP ServerCOMPLETEClaude Code4 / 53 / 5
2026-003-DAMIEN2026 Budget Excel Restructure→ Claude in ExcelDamien2 / 54 / 5
2026-004-DAMIENXero → “Ask Go Beyond” IntegrationBLOCKEDDamien3 / 54 / 5
2026-005-DAMIENGo Beyond Shared Vault — Multi-User DeploymentPLANNEDClaude Code + Damien3 / 53 / 5
2026-006-DAMIENMicrosoft Planner MCPREADY TO EXECUTEClaude Code1 / 54 / 5
2026-007-DAMIENGo Beyond Wiki Rebuild (Quartz → Go Beyondwiki.pages.dev)PLANNEDClaude Code2 / 53 / 5

Infrastructure Reference (confirmed 2026-05-29)

ServiceURLNotes
Vault API (REST + MCP)https://api.Go Beyondtravel.workers.devWorker: api in Go Beyond-portal/
Employee Hubhttps://hub.Go Beyondtravel.workers.devProxies to Go Beyond-portal Worker
Wiki (stale)https://oblivion-wiki.pages.devRebuild = 2026-007
Wiki (target)https://Go Beyondwiki.pages.devEmpty — waiting for 2026-007
R2 bucketGo Beyond-vaultPrefix: oblivion/
VAULT_SERVICE_TOKENCloudflare dashboardWorkers → api → Settings → Variables & Secrets

2026-001-DAMIEN

Status: COMPLETE. Obsidian vault API deployed to api.Go Beyondtravel.workers.dev. R2 bucket Go Beyond-vault populated. REST endpoints /vault/index, /vault/read, /vault/list, /vault/search live. Auth via VAULT_SERVICE_TOKEN Bearer token.


2026-002-DAMIEN

Status: COMPLETE. MCP endpoint /mcp added to vault API Worker. Supports vault_index, vault_read, vault_search, vault_list tools. OAuth flow at /oauth/authorize and /oauth/token for Claude.ai integration. /claude-init public endpoint serves CLAUDE.md for SessionStart hooks.


2026-003-DAMIEN · 2026 Budget Excel Restructure

Goal: Add four new structured, filterable sheets to 2026 Budget.xlsx on SharePoint — Revenue, COS, OpEx, and Miscellaneous — each with Excel Tables and slicers.

Source files (SharePoint: Management/Budgets/2026/):

  • 2026 Budget.xlsx — main workbook
  • Go_Beyond_Budget2026_Transactions.xlsx — transaction-level source
  • Rev26B12+0 for budget.xlsx — revenue source
  • Profit-and-Loss A8B4 2025 from Joiin.xlsx — historical P&L reference

Execution environment: Claude in Excel — open 2026 Budget.xlsx, launch Claude in Excel.

Status: PARKED (Claude Code) — continue in Claude in Excel.


2026-004-DAMIEN · Xero → “Ask Go Beyond” Integration

Goal: Connect Go Beyond’s Xero financial data to the Claude Teams interface.

Current state:

  • Xero developer OAuth app configured; xero_setup.py and xero_client.py in Projects/GB Xero/
  • Azure free account expired ~May 3
  • ⚠️ Credentials hardcoded in Python files — move to env vars before deploy

Blocked on:

  1. Confirming integration format Claude Teams supports for external connectors
  2. Locating or re-establishing Azure hosting work

2026-005-DAMIEN · Go Beyond Shared Vault — Multi-User Deployment

Goal: Open the vault to all Go Beyond Claude users (~11–30). Read access for all; per-user write tokens scoped to wiki/users/{username}/.

Architecture decisions (locked):

  • Same R2 bucket and Worker — no forking
  • Shared read token (VAULT_SERVICE_TOKEN) for all users
  • Per-user write tokens scoped to namespace via /vault/write endpoint
  • MCP via Claude.ai Settings → Integrations; Cowork plugin as follow-on

Current state: P-01 and P-02 complete. /vault/write endpoint not yet implemented.

Implementation Steps (for Claude Code)

Step 1 — Add /vault/write endpoint to the Worker

Edit C:\Users\DamienGoBeyond\Go Beyond-portal\src\index.ts. Add before the final if (p === '/') return... line:

// POST /vault/write — authenticated write scoped to user namespace
if (p === '/vault/write' && request.method === 'POST') {
  if (!checkAuth(request, env)) return new Response('Unauthorized', { status: 401 });
  const body = await request.json() as { path: string; content: string; writeToken: string };
  const { path, content, writeToken } = body;
  const registryObj = await env.R2.get('oblivion/_admin/users.json');
  if (!registryObj) return new Response('User registry not found', { status: 500 });
  const registry = JSON.parse(await registryObj.text());
  const user = Object.entries(registry.users).find(([, u]: [string, any]) => u.writeToken === writeToken);
  if (!user) return new Response('Invalid write token', { status: 403 });
  const [username] = user as [string, any];
  if (!path.startsWith(`wiki/users/${username}/`)) {
    return new Response(`Forbidden: you can only write to wiki/users/${username}/`, { status: 403 });
  }
  await env.R2.put(`oblivion/${path}`, content, { httpMetadata: { contentType: 'text/plain' } });
  return Response.json({ ok: true, path });
}

Step 2 — Generate user tokens and upload registry

$users = @("anna", "phone", "marc", "martin", "kwan")
$registry = @{ users = @{} }
foreach ($user in $users) {
  $token = [System.Convert]::ToBase64String([System.Security.Cryptography.RandomNumberGenerator]::GetBytes(24))
  $registry.users[$user] = @{ writeToken = $token; namespace = "wiki/users/$user/" }
  Write-Host "$user : $token"
}
$registry | ConvertTo-Json -Depth 4 | Set-Content "C:\Users\DamienGoBeyond\users.json"
wrangler r2 object put "Go Beyond-vault/oblivion/_admin/users.json" --file "C:\Users\DamienGoBeyond\users.json" --cwd "C:\Users\DamienGoBeyond\Go Beyond-portal"

⚠️ Save tokens securely — distribute individually to users.

Step 3 — Deploy

cd C:\Users\DamienGoBeyond\Go Beyond-portal
wrangler deploy

Step 4 — Seed user namespace stubs

For each user, upload a stub index:

foreach ($user in @("anna", "phone", "marc", "martin", "kwan")) {
  $content = "# ${user}'s Vault Pages`n_No pages yet._"
  $tmp = "$env:TEMP\stub.md"
  Set-Content $tmp -Value $content
  wrangler r2 object put "Go Beyond-vault/oblivion/wiki/users/$user/index.md" --file $tmp --cwd "C:\Users\DamienGoBeyond\Go Beyond-portal"
}

Step 5 — Update onboarding doc in vault

Write updated wiki/meta/onboarding.md via vault write API with MCP URL, shared read token, and namespace instructions.

Step 6 — Distribute tokens (manual — Damien)

Send each user their write token privately. Direct them to wiki/meta/onboarding.md.


Blockers: None — fully executable by Claude Code. Verification: Test user calls vault_write to create wiki/users/anna/test.md. Confirm via vault_read.


2026-006-DAMIEN · Microsoft Planner MCP

Goal: Give Claude Code direct access to Microsoft Planner via microsoft-planner-mcp.

Source repo: https://github.com/vyente-ruffin/microsoft-planner-mcp Auth: Azure CLI (az rest) — requires az login with damien@gobeyond.asia Install path: C:\Users\DamienGoBeyond\microsoft-planner-mcp Difficulty: 1 / 5 | Priority: 4 / 5

Implementation Steps (for Claude Code)

Step 1 — Verify Azure CLI auth

az account show

If error, run az login first.

Step 2 — Clone and build

cd C:\Users\DamienGoBeyond
git clone https://github.com/vyente-ruffin/microsoft-planner-mcp.git
cd microsoft-planner-mcp
npm install
npm run build

Step 3 — Register with Claude Code

claude mcp add microsoft-planner-mcp node "C:\Users\DamienGoBeyond\microsoft-planner-mcp\dist\index.js"
claude mcp list

Step 4 — Verify and discover IDs

Start a Claude Code session: ask it to list-plans. Note planId and bucketIds, save to vault at wiki/Go Beyond/planner-ids.md.


Blockers: az login required if session expired (manual — Damien). Status: READY TO EXECUTE.


2026-007-DAMIEN · Go Beyond Wiki Rebuild

Goal: Rebuild the Quartz HTML wiki from R2 and deploy to https://Go Beyondwiki.pages.dev.

Confirmed URLs:

  • Vault API: https://api.Go Beyondtravel.workers.dev — live, verified
  • Wiki target: https://Go Beyondwiki.pages.dev — Pages project created, empty
  • Old wiki (stale): https://oblivion-wiki.pages.dev

Current state:

  • Go Beyondwiki Pages project exists but is empty
  • Old wiki last built 2026-05-20 from deleted local vault
  • Vault source of truth: R2 bucket Go Beyond-vault, prefix obsidian/
  • Quartz source not on disk — needs fresh clone

Portal quick-link note: The obsidian:// quick link is in the Go Beyond-portal Worker (separate from the vault API — has D1/KV/R2 bindings). Source not on disk. Updating the link is out of scope here; handle in P-05.

Quartz note: related: frontmatter arrays are not rendered as links by Quartz (only [[wikilinks]] in body text are). No build failure expected.

Architecture:

GET /vault/list  ->  file list
    |
    loop: wrangler r2 object get --remote for each file  ->  wiki-build\content\
    |
    npx quartz build  ->  wiki-build\public\
    |
    wrangler pages deploy  ->  Go Beyondwiki.pages.dev

Implementation Steps (for Claude Code)

Step 1 — Get VAULT_SERVICE_TOKEN

Token is stored locally at C:\Users\DamienGoBeyond\.claude\vault-token.

$token = Get-Content "C:\Users\DamienGoBeyond\.claude\vault-token" -Raw

Step 2 — Clone Quartz and install (do this FIRST, before downloading files)

cd "C:\Users\DamienGoBeyond"
git clone https://github.com/jackyzha0/quartz.git wiki-build
cd wiki-build
npm install

Step 3 — Download all vault files from R2 into wiki-build\content\

The R2 prefix is obsidian/ (not oblivion/). Use --remote flag.

$token    = Get-Content "C:\Users\DamienGoBeyond\.claude\vault-token" -Raw
$vaultApi = "https://api.Go Beyondtravel.workers.dev"
$r2Bucket = "Go Beyond-vault"
$outDir   = "C:\Users\DamienGoBeyond\wiki-build\content"
$wDir     = "C:\Users\DamienGoBeyond\Go Beyond-portal"
 
$response = Invoke-RestMethod -Uri "$vaultApi/vault/list" -Headers @{ Authorization = "Bearer $token" }
$files = $response.files
Write-Output "Found $($files.Count) files"
 
foreach ($rel in $files) {
  $key     = "obsidian/$rel"
  $outFile = Join-Path $outDir ($rel.Replace('/', '\'))
  New-Item -ItemType Directory -Force -Path (Split-Path $outFile -Parent) | Out-Null
  wrangler r2 object get "$r2Bucket/$key" --file "$outFile" --remote --cwd "$wDir" 2>&1 | Out-Null
  Write-Output "Downloaded: $rel"
}
Write-Output "Done. $($files.Count) files in $outDir"

Step 4 — Configure Quartz

Edit C:\Users\DamienGoBeyond\wiki-build\quartz.config.ts:

  • pageTitle: "Go Beyond Wiki"
  • baseUrl: "Go Beyondwiki.pages.dev"

Step 5 — Build

cd "C:\Users\DamienGoBeyond\wiki-build"
npx quartz build

Step 6 — Deploy

wrangler pages deploy "C:\Users\DamienGoBeyond\wiki-build\public" `
  --project-name Go Beyondwiki --branch main `
  --cwd "C:\Users\DamienGoBeyond\Go Beyond-portal"

Step 7 — Verify

  1. Check count: (Invoke-RestMethod "$vaultApi/vault/list" -Headers @{Authorization="Bearer $token"}).files.Count
  2. Visit https://Go Beyondwiki.pages.dev — index should show that many pages

Step 8 — Clean up (optional)

Delete oblivion-wiki Pages project via Cloudflare dashboard after confirming Go Beyondwiki works.


Blockers: None — token is at ~/.claude/vault-token, fully automated. Verification: https://Go Beyondwiki.pages.dev loads with current vault content.


Add new projects below. Format: YYYY-NNN-DAMIEN · Title