The bestiary search index (data/bestiary/index.json) is generated offline by scripts/generate-bestiary-index.mjs from a local clone of the 5etools repository. Currently this is a manual process. A scheduled CI job could automate detection of upstream changes and open a PR when the index needs updating.
Context
See ADR-004 (docs/adr/004-on-demand-bestiary-loading.md). The index changes infrequently — new D&D source books release a few times per year — so this is low priority. The manual process works fine at current scale.
Acceptance Criteria
A scheduled Gitea Actions workflow (e.g., weekly) clones the 5etools repo, runs generate-bestiary-index.mjs, and compares the output to the committed index
If the index changed, the job opens a PR with the updated data/bestiary/index.json
The PR includes a summary of what changed (new sources, creature count delta)
The existing manual workflow continues to work as a fallback
Notes
Low priority — the manual process is sufficient for the current release cadence
The 5etools repo is large; the job should use sparse checkout (data/bestiary/ and data/ directories only) to minimize clone time
## Summary
The bestiary search index (`data/bestiary/index.json`) is generated offline by `scripts/generate-bestiary-index.mjs` from a local clone of the 5etools repository. Currently this is a manual process. A scheduled CI job could automate detection of upstream changes and open a PR when the index needs updating.
## Context
See ADR-004 (`docs/adr/004-on-demand-bestiary-loading.md`). The index changes infrequently — new D&D source books release a few times per year — so this is low priority. The manual process works fine at current scale.
## Acceptance Criteria
- [ ] A scheduled Gitea Actions workflow (e.g., weekly) clones the 5etools repo, runs `generate-bestiary-index.mjs`, and compares the output to the committed index
- [ ] If the index changed, the job opens a PR with the updated `data/bestiary/index.json`
- [ ] The PR includes a summary of what changed (new sources, creature count delta)
- [ ] The existing manual workflow continues to work as a fallback
## Notes
- Low priority — the manual process is sufficient for the current release cadence
- The 5etools repo is large; the job should use sparse checkout (`data/bestiary/` and `data/` directories only) to minimize clone time
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
The bestiary search index (
data/bestiary/index.json) is generated offline byscripts/generate-bestiary-index.mjsfrom a local clone of the 5etools repository. Currently this is a manual process. A scheduled CI job could automate detection of upstream changes and open a PR when the index needs updating.Context
See ADR-004 (
docs/adr/004-on-demand-bestiary-loading.md). The index changes infrequently — new D&D source books release a few times per year — so this is low priority. The manual process works fine at current scale.Acceptance Criteria
generate-bestiary-index.mjs, and compares the output to the committed indexdata/bestiary/index.jsonNotes
data/bestiary/anddata/directories only) to minimize clone time