Tithe, Stewardship & Hermeneutical Distance — Knowledge Graph Research assistant
← All nodes

CLAUDE

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

What this repository is

A theological research project on tithe, stewardship, and ecclesiastical authority (Seventh-day Adventist context), organized as an Obsidian-/wiki-style Markdown knowledge graph. It is not a software project — there is no build, lint, or test tooling. The only "commands" are the data-sync scripts for the local EGW Writings database (below).

Entry point: 00_README.md — lists the primary source nodes, comparative nodes, and the working principle ("Hermeneutical Distance") the research is organized around.

Source of truth

For paper content, ~/Downloads/Tithe_Hermeneutical_Comparison_REVISED_CONDITIONAL_2026-08-07.docx is authoritative — not the live Google Doc and not Tithe, Stewardship, and Hermeneutical Distance — Paper.md. Confirmed 2026-08-15: the live Google Doc (fileId 1PUfLA2C1wBtqPSwV1BsikkfE4NC0Kogd9SOPGY8vC4U, published via ChatGPT) had drifted from the Word doc in several places — a missing "Accuracy note" paragraph, a subtly reworded "Plain-English note," an added "Conditional" qualifier not in the source, and an unverifiable Ellen White citation detail. Reconcile content differences toward the Word doc, not the Google Doc.

For publishing/distribution, the live Google Doc is still the doc people are actually reading — don't push local-only edits to it without explicit sign-off; use a test doc first (a patched gdocs_update MCP tool converts markdown → native Docs formatting; see its dedicated notes below). The local .md file tracks both: it should match the Word doc's content and the Google Doc's YouTube-link formatting. Read/write the Google Doc via the gdrive MCP server (gdocs_update, gdrive_read_file, gdrive_search).

Video citations (e.g. Vine's Entropy talk) are timestamped YouTube deep-links (https://www.youtube.com/watch?v=<id>&t=<seconds>s), built by pulling the transcript with yt-dlp and converting its timestamps into links — never cite a bare timestamp string.

Knowledge graph structure

Files link to each other with Wiki Link syntax and carry YAML frontmatter (title, type, status). title should match the filename (minus .md) — Obsidian resolves Links by filename regardless, but a mismatch breaks title-text search/linking; four files had drifted from this and were fixed 2026-08-15. The actual type values in use as of 2026-08-15 (broader than this list historically was — keep both loosely in sync, but don't force every node into one of these categories if it genuinely doesn't fit; prefer a single hyphenated token like the others over a multi-word free-text value):

index, concept, comparison, source, transcript, methodology, concept-cluster, exegetical-note, primary-analysis, primary-document, bibliography, background, research-agenda, proposal

proposal (added 2026-08-15) is for non-theological project/tooling documents like AWS Deployment Proposal — infrastructure planning for the project's own tools, not part of the tithe/stewardship research itself. Keep these out of the theological node-type categories above.

Node types, by frontmatter type:

EGW Writings local database

data/egw-writings.db (SQLite, WAL mode) is a local mirror of the EGW Writings API, queried through the egw-research-server MCP server (search_local, get_local_content, browse_by_reference, etc.). Two Node scripts populate it, both must be run from the repo root and both need Node 22 (not the machine's default) because the downloader's native better-sqlite3 build breaks on Node 24:

# full recursive catalog sync (the bundled `books` CLI caps at 100/folder, one level deep — these don't)
.claude/skills/egw-book/egw-downloader.sh books --lang en   # or use catalog-sync.js directly:
node data/catalog-sync.js [lang]        # default lang: en

# pull actual paragraph content for specific books (bypasses the broken /chapter/{id} endpoint
# by downloading each book's ZIP export instead)
node data/zip-sync.js <bookId> [<bookId> ...]
node data/zip-sync.js --all-downloaded  # re-sync every book already catalogued

egw-downloader.sh is a thin wrapper that puts Node 22 on PATH and exports the OAuth client credentials the EGW API requires (the official EGW mobile app's published credentials, not personal ones) — use it instead of calling egw-downloader directly. data/tokens.json holds the resulting access token that catalog-sync.js/zip-sync.js read directly via curl.

MCP servers in use

Together, egw-research-server and study-bible (or logos-bible-software, once/if it's set up) are the primary research tools for this project: EGW writings quotes and Bible text/cross-references should be pulled through these MCP servers rather than quoted from memory or re-typed from the PDFs at the repo root.

Knowledge graph maintenance

Multiple sessions/agents sometimes work on this repo concurrently and don't see each other's edits (this happened 2026-08-15: two separate Claude sessions built out nodes in parallel with no coordination). Because the graph is just plain Markdown files with no build/lint/test step to catch drift, run a reconciliation pass after any period of multi-session or heavily-parallel (e.g. multiple forked-subagent) work touches the graph, and periodically otherwise. A pass should check:

  1. Cross-link integrity — every Wiki Link resolves to a file that actually exists.
  2. Overlap/contradiction between nodes — two nodes covering similar ground (e.g. two storehouse-themed files) making different claims or reaching different conclusions.
  3. Citation consistency — the same Bible passage or Ellen White quote cited with different references, wording, or interpretation across nodes.
  4. Frontmatter consistencytitle/type/status fields present and matching the node-type conventions above.

Prefer running this as a read-heavy audit (a forked subagent, or Explore) that reports findings back rather than one that edits directly — resolving a genuine contradiction between two nodes is an editorial judgment call for the primary session (or the user) to make, not something to silently auto-resolve.