Home / Ops / Housekeeping and Process
Updated Jun 26, 2026 · Affirmology_ResourceHub_BuildBrief_v1.md
For: a Claude Code session running on the Mac (has filesystem access to the AFFIRMOLOGY folder, the Cloudflare token, and can run shell + wrangler). How to use: paste this whole file as the kickoff. Read the reference file in section 9 before building.
A gated, internal HTML resource hub at resources.affirmology.ai for Jeff, Sol, and Colin. It renders the project's key documents as clean, navigable HTML (house style matching the reference playbook), organized by category, with the Project State front and center. A cron job on the Mac refreshes it every 1 to 2 hours: it notices new or changed docs in the folder, extracts a title, summary, category, and related docs from each, and regenerates and redeploys the site. Only the team (allowlisted by Cloudflare Access) can reach it.
.env, .studio_token, any token or key file, and anything under /Volumes.CLAUDE.md, MEMORY.md, and Affirmology_PROJECT_STATE.md at the repo root. Do not move them./Users/jeffreyparker/CLAUDE/AFFIRMOLOGY.md and curated .html documents in the root and in the doc taxonomy folders.affirmology-agent/, affirmology-studio/, affirmology-app/, affirmology-atlas/, affirmology-demo-site/, affirmology-site/, affirmology-shared/), node_modules/, .git/, corpus/, baselines/, any binaries, build artifacts, and the secret files in section 1.Map every doc to exactly one. Mirror the CLAUDE.md taxonomy plus Gamification and a Start bucket:
Start here / Project State · Strategy · Product · Engine · Council · Video · Readings · Audio · Ops · Gamification · Archive
Classification: use filename and content heuristics first; for ambiguous docs, run a cheap LLM classify (Haiku) against this exact list.
/Users/jeffreyparker/CLAUDE/AFFIRMOLOGY/resource-hub/ with a dist/ output, an assets/style.css (extracted from the reference), a manifest.json (state), and the generator script.index.html (home): categories grid, a prominent Project State link at the top, and a "Recently updated" list (last 10 by timestamp).assets/style.css. No external dependencies except a markdown library.Write it in Python and reuse the agent venv and Anthropic key (/Users/jeffreyparker/CLAUDE/AFFIRMOLOGY/affirmology-agent/.venv, key in affirmology-agent/.env). On each run it:
resource-hub/manifest.json. For each doc it stores: relative path, content hash, title, category, summary, topics, related (list of paths), last-built timestamp.related.
- Render: convert the markdown body to HTML (a markdown lib), wrap it in the shared template (top nav, breadcrumb, title, summary, body, related, timestamp). For docs that are already curated .html (like the reference playbook), link or embed them as-is rather than re-styling.
- Update the manifest entry.index.html and every category page from the manifest (pure templating, so cross-links, "recently updated," and counts always reflect the current set).dist/.dist/ to Cloudflare Pages (section 6).Cost control: only changed docs hit the LLM. Index and category regeneration is free templating. Log how many docs were reprocessed each run.
manifest.json entry shape:
{
"path": "Affirmology_LaunchCRM_Playbook_v1.html",
"hash": "sha256...",
"title": "Launch Outreach + CRM Playbook",
"category": "Strategy",
"summary": "Operating plan for the June 28 warm outreach wave and the Airtable CRM...",
"topics": ["launch", "crm", "airtable", "beta", "investors"],
"related": ["Affirmology_LaunchTimeline_v1.md", "Affirmology_FundingStrategy_Memo_v1.md"],
"last_built": "2026-06-26T18:00:00Z"
}
affirmology-resources. Add the custom domain resources.affirmology.ai (DNS is in the same Cloudflare account as affirmology.ai). Create a Cloudflare Access application on resources.affirmology.ai with an allowlist policy for these emails only:jeff@jeffparker.lovesolballard@gmail.com (Sol)cjacobsandassoc@gmail.com (Colin)CLOUDFLARE_API_TOKEN (held in affirmology-studio/.env) has Zone Settings, Cache Purge, DNS, Workers, and R2, but probably not Pages or Access scopes. Either add Pages + Access permissions to the token, or do the Pages-project and Access-policy creation once in the dashboard, then automate only the deploy with a Pages-scoped token.wrangler pages deploy /Users/jeffreyparker/CLAUDE/AFFIRMOLOGY/resource-hub/dist --project-name affirmology-resourcesUse launchd (preferred on macOS). Build three things:
resource-hub/rebuild.sh that: cd's to the folder, activates the venv, runs the generator, runs the wrangler deploy, and appends to resource-hub/rebuild.log.~/Library/LaunchAgents/ai.affirmology.resourcehub.plist with StartInterval of 7200 seconds (2 hours), pointing at rebuild.sh, with stdout/stderr to the log.launchctl load ~/Library/LaunchAgents/ai.affirmology.resourcehub.plistNote it only runs while the Mac is awake and online, which is acceptable (same constraint as the render heartbeat). Provide the exact plist contents and the rebuild.sh contents in your build.
resources.affirmology.ai is reachable only behind Cloudflare Access. Incognito test: blocked until login; an allowlisted email gets in; a random email does not./Users/jeffreyparker/CLAUDE/AFFIRMOLOGY/Affirmology_LaunchCRM_Playbook_v1.html
This is the visual and quality bar. Open it, read its <style> block, and extract it to resource-hub/assets/style.css. Match its layout language: emerald/gold/cream palette, rounded cards, left-border callouts (ok/warn/stop variants), header tables, the two-column table of contents, the pill tags. Every generated page should feel like it came from the same hand as this file.
resource-hub/; extract the stylesheet from the reference file.dist/index.html in a browser to check the feel.wrangler pages deploy; confirm the gate in incognito.Keep the first version lean. Hand-curated category mapping for the few docs that matter is fine for v1 if the LLM classify is flaky; the incremental cron and the Access gate are the parts that must be solid.