This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
A markdown-only Bible study scaffold. There is no build system, no tests, no lint, no package manifest. Every "file" is a README.md in a folder. Don't look for npm/pip/make commands — they don't exist. Tasks here are content edits, folder reorganization, and documentation.
A refactor (commits 55df16f and 02835da) established this top-level layout, and the published docs (README.md, STRUCTURE.md, CONTRIBUTING.md, CHANGELOG.md) were reconciled to match it. Disk is canonical.
scripture/ # the 66 books (formerly "books-of-bible/" in older docs)
topics/ # cross-cutting themes (formerly "topics-of-study/")
commentary/ # stub
people/ # stub
places/ # stub
resources/ # stub
theology/ # stub
words/ # stub (Hebrew/Greek word studies)
.personal/ # public kit only (README/setup.sh/_template); each user's folder is their OWN private repo
.ai-chats/ # AI session logs (see protocol below)
The stub content folders each contain a one-line # Read Me placeholder. The 12-folder vision behind this layout is in ____bible-study-top-level-folders.md (and its byte-identical duplicate repo-planning.md, plus docs/top-level-folders.md) — those are aspirational planning docs and deliberately retain the original long names (word-studies/, topics-of-study/) and folders not on disk (_home/, timeline/, context/, teaching/, templates/). Don't treat them as describing the current layout, and don't rewrite them to match disk — they're a record of the original plan.
The earlier docs-vs-disk inconsistency has been resolved (the published docs now use scripture/ and topics/). The only files that still reference the old books-of-bible/ / topics-of-study/ names are: the planning/vision docs above (intentional), .ai-chats/ session logs (verbatim history — never rewrite), and graphify-out/ (generated; regenerate, don't hand-edit).
The repo is designed for small-group / church use. Two layers:
- Shared layer — everything outside
.personal/(scripture/,topics/,words/,people/,places/,theology/, etc.). Factual reference material that benefits everyone, lives in this public repo, changed via PR. - Personal layer (each user's OWN private repo) —
.personal/<user-email>/: each user has a folder named by their email address. Personal reflections, journals, prayer notes, teaching prep. Each user's folder is its own separate, private git repo — the public repo's.personal/.gitignoreignores every email-named subfolder, so no personal content and no email address is ever tracked in the public repo. Users host their own folder wherever they choose (e.g., a private Forgejo), and generate it withbash .personal/setup.sh, which copies.personal/_template/andgit inits it. Inside a user's folder, book studies nest underscripture/(e.g.,.personal/<email>/scripture/23-Isaiah/Isaiah-06/notes.md, raw inputs inscripture/<book>/sources/), mirroring the repo root layout. The only things the public repo tracks under.personal/are the kit:README.md,setup.sh,_template/, and.gitignore.
CONTRIBUTING.md rule: fact = shared (PR to the public repo); your thought = your own private .personal/<your-email>/ repo. Never write inside another user's folder — it's not even yours to clone.
Historical-record exception: the CHANGELOG.md 1.2.0 entry still describes .personal/ as gitignored and the layout as books-of-bible/. That's an accurate record of what those releases shipped — left intact on purpose. The current state is captured in the CHANGELOG [Unreleased] section. Note the model has come full circle on tracking: .personal/.gitignore now does ignore every email-named subfolder again — but for a new reason. It's no longer a single-user gitignore; each folder is now a separate private repo so personal notes and emails stay off the public GitHub repo entirely.
- Book folders:
NN-BookName, zero-padded —01-Genesis,46-1-Corinthians,66-Revelation. Full list inSTRUCTURE.md. - Chapter folders:
BookName-NN, zero-padded —Genesis-01,Psalms-119,Revelation-22. - Every folder has exactly one
README.md. Additional files (images, attachments) may sit alongside. - Counts to preserve: 66 books, 1,189 chapter folders.
Defined in README-TEMPLATE.md: # [Book] [Chapter] heading, then sections Key Verses, Summary, Notes, Cross References, Questions. Most chapter READMEs in scripture/ are still stub # Read Me placeholders waiting to be filled in. Book-level READMEs (e.g., scripture/01-Genesis/README.md) follow a different format with Overview / Author / Date Written / Chapters / Key Themes.
When filling chapter content: factual, reference-quality, study-Bible-margin tone. CONTRIBUTING.md explicitly excludes denominational/doctrinal commentary and content from copyrighted translations from the shared layer.
This is the standard for what earns a place in the shared layer. It exists to keep scripture/, topics/, words/, etc. valuable and uncluttered — an honest stub beats a padded margin. When a study (devotional, reflection, word study) produces material, route it study once, deposit twice:
- Personal half — reflection, application, teacher-voice, what stirred you, speculative connections →
.personal/<email>/scripture/.... The personal layer is lossless; everything is welcome there. - Factual half — what the text says, means, and connects to → the shared chapter/topic README, but only the lines that clear the gate below. The shared layer is curated, not a dumping ground.
A candidate line is admitted to the shared layer only if it passes all six:
- Factual, not personal — a verifiable claim about the text, language, history, or structure; not your reflection or application. ("
chaqaqmeans to inscribe/decree" passes; "this convicted me about my own decrees" does not.) - Margin-worthy — it tells the reader something the verse alone doesn't (a word meaning, a structure, a background fact, a connection). If it only restates the verse in other words, it's clutter — cut it.
- Durable — true regardless of who reads it or when. Not tied to a moment, a sermon, or your circumstances.
- Sourceable — grounded in the text or in mainstream scholarship you could cite. Where scholarship genuinely disagrees (Job's date, Daniel's date, the Pastorals' authorship), name the views; don't pick a side or assert it as settled.
- Non-sectarian — no denominational corner-painting on contested passages (election, perseverance, baptism, eucharist, end-times schemes). Name the traditions, move on.
- License-clean — no extended copyrighted-translation text. KJV / ASV / WEB or paraphrase, ≤25 words at a stretch.
Fail any one → it stays in the personal layer, or gets reworked until it passes. When in doubt, leave it out.
Chapter-promotion rule: fill a stub chapter README only when the study yielded enough gate-passing substance for a genuine Key Verses / Summary / Notes / Cross References / Questions set. Don't manufacture four thin sections around one good cross-reference to make a chapter "look complete" — leave the stub, or add the single good item to a chapter that's already rich. The default state of a chapter README is empty; content earns its way in.
_chapter_readme_fill is the skill that applies this gate; CONTRIBUTING.md carries the human-facing summary. Both defer to this section as the source of truth.
Three tiers of subagents are committed under .claude/agents/ and load automatically. Use them via the Agent tool when work matches their specialization.
Research / theology agents (output for the shared repo):
exegete— single-passage close reading; chapter-README contenttheologian— systematic / biblical theology; topical studieslinguist— Hebrew / Greek word studieshistorian— ANE / Second Temple / Greco-Roman backgroundgeographer— places, regions, routesbiographer— biblical figures, church history, modern scholarscross-references— citations, allusions, parallels, typology
Teacher-voice agents (devotional output, usually for .personal/) — apply a specific teacher's hermeneutical lens without impersonating them:
teacher-perry-stone— Hebrew roots, festival typology, prophetic patternsteacher-chuck-missler— integrated message system, typology, Christ-typesteacher-john-barnett— verse-by-verse, dispensational, pre-tribteacher-jonathan-cahn— Hebrew word studies, prophetic parallels, Shemitahteacher-john-bevere— fear of the Lord, Day of the Lord, wrath vs tribulationteacher-bill-creasy— Bible as unified literary work, genre, geographyteacher-oswald-chambers— abandonment to Jesus, Cross-centered devotion, sanctification as union with Christteacher-jamie-winship— true identity in Christ, false self vs. God-given name, fear as the root of conflict, hearing God's voice
Design agent (builds the HTML study page; output for .personal/):
devotional-designer— fills and iterates the devotional HTML pages in "The Branch" design system. Pairs with the_branch_devotional_designskill (the look + tokens + template) and the teacher-voice agents (the voice). Produces a self-containeddevotional.htmlin the user's personal layer.
The teacher-voice agents pair with the _deep_bible_study_devotional skill in .claude/skills/, which provides the devotional output structure.
See .claude/agents/README.md for how the agents divide labor and .claude/agents/TEACHERS.md for teacher-pairing suggestions. Each agent is told to read this CLAUDE.md before producing output, so updates here propagate.
A coordinated battery of skills under .claude/skills/ covers the four phases of small-group Bible study. Skills are model-invoked (Claude decides when to fire based on the user's message); user-typed shortcuts go in .claude/commands/ (not yet present).
- Heavyweight chapter walk:
_deep_bible_study_devotional - Research:
_word_study,_cross_reference_map,_character_study,_place_study,_topic_trace - Group:
_group_discussion_prep,_compare_notes(multi-user — reads across.personal/*/) - Personal:
_personal_reflection,_prayer_from_passage(write to.personal/<email>/only) - Maintenance:
_chapter_readme_fill(writes to sharedscripture/),_new_teacher_agent(scaffolds a teacher agent + updates the registries) - Assimilation (visual):
_visualize_this(turns any content into a Mermaid/text diagram; inline by default, saveable to either layer) - Design (visual look):
_branch_devotional_design("The Branch" — the warm "scriptorium" design system for devotional HTML pages: color/type/spacing tokens, a voice + visual guide, a ready-to-fill template, and a worked Isaiah 11 example; thedevotional-designeragent fills it) - Delivery:
_email_study_guide(re-renders a generateddevotional.htmlas email-safe HTML — table layout, inline styles, parchment theme — and sends it to a group via Mailgun, attaching the full browser version; writesemail.htmlbeside the source in the personal layer)
See .claude/skills/README.md for how skills compose with each other and with the agents. Skills enforce the two-layer discipline: shared output goes to top-level folders; personal output stays inside the user's email folder.
Two conventions, applied strictly:
- Custom skills and slash commands:
_snake_case— underscore prefix, then snake_case (e.g.,_word_study,_chapter_readme_fill,_new_teacher_agent). The underscore distinguishes our work from third-party skill bundles (GSD and similar); the snake_case differentiates skill identifiers from agent identifiers at a glance. - Agents:
kebab-case, no prefix (e.g.,exegete,theologian,teacher-perry-stone,teacher-oswald-chambers).
When adding a new skill or command:
- Folder/file name:
.claude/skills/_<snake_case_name>/SKILL.mdor.claude/commands/_<snake_case_name>.md. name:frontmatter field must match exactly (name: _<snake_case_name>).- No hyphens anywhere in custom skill names — convert each hyphen to an underscore.
- Update references in this
CLAUDE.md,.claude/skills/README.md, and any cross-references between skills.
When adding a new agent:
- Folder/file name:
.claude/agents/<kebab-case-name>.md. name:frontmatter field must match (name: <kebab-case-name>).- No underscore prefix on agents — the prefix is reserved for skills/commands.
.ai-chats/README.md documents a self-imposed session-logging protocol (v3.2) the user actively maintains. Key rules:
- Each session is a folder
YYYY-MM-DD-NN-kebab-description/(e.g.,2026-01-31-04-template-completion/). - Files inside follow
[Model-Version]--NN.md— no spaces, double-dash before sequence. Example for this Claude Code session:Opus-4.7--00.md. --00.mdis the main doc (summary, tech, lessons).--01,--02, ... are verbatim exchanges..ai-chats/INDEX.mdis the master index and must be updated when sessions are added.- Only create/update these files when explicitly asked, or when the user is clearly continuing an existing session — don't auto-spawn them on every interaction.
- Never write inside another user's
.personal/<email>/folder. Each user's folder is their own private repo — it isn't yours to edit, and on a fresh clone it won't even be present. - Don't
git add -Afrom the public repo expecting to capture personal notes — the public repo ignores every.personal/<email>/folder. Personal content is committed from within that folder's own private repo, never from the public repo. - Never commit a real
.personal/<email>/folder to the public repo. It would leak personal content and an email address. Only the kit (README.md,setup.sh,_template/,.gitignore) belongs there. - Don't invent build/test/lint commands. There is no toolchain here.
- Don't fill chapter content with sermon-style or denominational commentary — that belongs in
.personal/<your-email>/, not the shared repo. - Don't reconcile the docs-vs-disk inconsistency without asking which side is canonical.