Handbook Site
handbook.rycolston.com — multi-tenant static site hosting setter handbooks, the shared agent script book, and the shared agent workbook. One Cloudflare Pages project, three audiences.
Why
The site serves three audiences from one stack: per-setter 30-day workbooks, the agent script book (the words), and the agent workbook (the practice). Same Cloudflare Pages project, same Cloudflare Access pool, zero new infra to host any of them. Reuses build, deploy, and partials resolver.
Script book and workbook move together. Same section numbers. When a script changes, the workbook chapter for that script changes in the same MR. That coupling is the whole point — agents don't get scripts they can't practice.
Current state
Site is live. Setter handbooks at /<agent-slug>/<setter-slug>/. Agent script book at /agent-scripts/. Agent workbook at /workbook/ (added 2026-04-28 via MRs !591 / !592 in the 8-section format: goal, beats, words, blank-page drill, cloze drills, objection branches, self-scoring rubric, Loom submission). Sales Operational Playbook decision tree at /playbook/ (added 2026-05-17, MR !109 — interactive flowchart generated from the _recording/ SOPs).
Pending migration designed but not yet executed: /agent/ namespace + Sales Playbook. Spec and plan reviewed by plan-reviewer 3 times, approved. 5 phases, 22 tasks, ~4 MRs. Source of truth for playbook content moves out of Obsidian into shared/partials/agent/playbook/*.md.
Recruiting-call audio clips shipped 2026-05-21. Inline ▶ buttons next to each beat in the §12.3 + §12.5 script (Anthony Lee's handbook first). Authoring is a {{AUDIO: name}} shortcode that expands at build time to a <button> referencing MP3s hosted at audio.handbook.rycolston.com (R2 bucket handbook-audio). Strict known-clip allowlist makes typos fail the build. One shared <audio> element per page so only one clip plays at a time; reset on 404 so unrecorded clips don't get stuck. §12.3 (11 clips) live; §12.5 (6 clips) names reserved but recording pending. Reusable pattern documented in domains/handbook-rycolston-com/CLAUDE.md; new R2 entry logged in Reference/Web Properties.md.
- Status: in-flight
- Last update: 2026-05-21
- Blocked on: nothing —
/agent/migration ready to execute when prioritized
Next 3 actions
- Resume
/agent/migration from Phase 0 (Permissions Pre-Approval), then start Phase 1 / Task 1 per the plan. - Verify
_drafts/build-fail behavior still works as expected after recent template changes. - Audit deploy commands —
python deploy.py --skip-accessfor content iteration, fulldeploy.pyafter registry change.
Decisions log
- Portfolio organization framework
Open issues
- GitLab: rylobasic/ccpj#179 —
/agent/namespace + Sales Playbook migration - Execute Phase 1 / Task 1 of the migration plan
- Decide on project rename (current folder name
setter-workbook-siteis now too narrow) - Migrate source into the monorepo — done 2026-05-17, MR !108 →
~/rylobasic/domains/handbook-rycolston-com/ - Follow-up: switch
deploy.pyCloudflare creds from macOS Keychain (security find-generic-password) to 1Password (op item get), matchingcustomer-journey+feedback_local_runners_read_sm - Follow-up: pre-existing test rot —
tests/test_build.py(6 failed) +test_tally_mapping.py(8 errors) fail on missing tmp-fixtureshared/agent-script-template.md; baseline-confirmed identical in the archived original, NOT a migration regression. Fix fixtures. - Follow-up RESOLVED 2026-05-17: live Cloudflare Pages project name verified via
wrangler pages project list— project name ishandbook(serveshandbook-a44.pages.dev+handbook.rycolston.com).handbook-a44is only the auto-assigned.pages.devhost, not the project name.deploy.py --project-name=handbookis correct; no change needed. - Build the interactive SOP decision-tree page (Sales Operational Playbooks) as a new gated route — SHIPPED 2026-05-17, MR !109, live at
/playbook/; see Sales Operational Playbooks - Follow-up (next session): verified only against the byte-identical build artifact via headless Chrome — NOT the live gated URL.
playwright-personalMCP is now global (2026-05-17); after a session restart, run a real Playwright pass onhttps://handbook.rycolston.com/playbook/to confirm the Cloudflare Access sign-in + interactive behavior end-to-end. See reference_mcp_servers.
References
- Memory:
~/.claude/projects/-Users-rycolston/memory/project_handbook_site.md - Code home:
~/rylobasic/domains/handbook-rycolston-com/(migrated into the monorepo 2026-05-17, MR !108; old~/CCPJ/projects/setter-workbook-site/archived/frozen — never edit_source/) - Project CLAUDE.md (read first before editing):
~/rylobasic/domains/handbook-rycolston-com/CLAUDE.md - Migration spec:
~/CCPJ/projects/Idea-Inbox/design/2026-04-28-sales-playbook-migration-design.md - Migration plan:
~/CCPJ/projects/Idea-Inbox/implementation-ready/2026-04-28-sales-playbook-migration-plan.md - Setter Workbook System (parent template flow): Setter Workbook System
- Live URL: https://handbook.rycolston.com