Phase 1 — Documentation sync workflow for the Winter ecosystem
Copy everything below into your coding agent (Claude Code, Cursor, Aider, etc.) after cloning all six repos locally.Task
You are configuring a documentation synchronization workflow between five source repositories and one docs repository. All six repos are owned by the GitHub usersuvera. Do NOT modify source code, READMEs, or documentation content in any repo. Only add the workflow/config files listed below.
Repositories
- Docs repo (target of PRs):
suvera/docs— Mintlify site, deployed tosuvera.mintlify.app - Source repos (open PRs against docs):
suvera/winter-boot(parent framework)suvera/winter-modules(submodules: kafka, sqs, s3, opensearch, dtce, data-redis, data-memcache, security)suvera/winter-doctrinesuvera/winter-eurekasuvera/winter-memdb
Goals
- On push to
mainor tag push in any source repo, detect if doc-relevant files changed, and open (or update) a PR insuvera/docsdescribing the change. - Nightly cron job in
suvera/docscompares each source repo’smainHEAD against a recorded SHA and opens catch-up PRs for any drift. - Never auto-merge. Never overwrite files under
core/,web/,data/,async/,ops/,building/,advanced/,modules/,reference/,sources/, ordocs.jsoninsuvera/docs. The sync PR only editssync-state.jsonand appends a report file undersync-reports/. - Keep Mintlify’s existing deployment (push-to-main auto-deploy) untouched.
Constraints
- Use only GitHub Actions,
actions/checkout,actions/github-script, andpeter-evans/create-pull-request. No third-party sync services. - The docs repo already exists with this structure:
index.mdx,quickstart.mdx,introduction.mdx,configuration.mdx, and directoriescore/,web/,data/,async/,ops/,building/,advanced/,modules/,reference/,sources/, plusdocs.json. Do not touch any of these. - Do not add code generators, symbol scanners, generated-block markers, or MDX linters yet. Those are Phase 2.
PAT / auth
Create a fine-grained GitHub PAT withcontents: write and pull-requests: write on suvera/docs. Store it as secret DOCS_SYNC_PAT in each of the five source repos. The docs repo’s own workflows use the default GITHUB_TOKEN.
Files to create
1. In each source repo (5 repos)
docs-relevant-paths.yml (repo root)
For winter-boot:
winter-modules, use always_relevant/never_relevant as above and this docs_pages:
winter-doctrine → docs_pages: [{"README.md": modules/doctrine.mdx}].
For winter-eureka → modules/eureka.mdx.
For winter-memdb → modules/memdb.mdx.
Same always_relevant / never_relevant structure for all five.
.github/workflows/notify-docs.yml
2. In suvera/docs
sync-state.json (repo root, initial content)
sync-reports/.gitkeep (empty file)
.github/CODEOWNERS
.github/workflows/sync-nightly.yml
3. Branch protection on suvera/docs
Configure via GitHub UI or gh CLI:
- Require pull-request review before merging
main. - Disallow force-pushes to
main. - Do NOT require CI status checks yet (Phase 2 will add MDX/link validation).
Acceptance test
After all commits land:- Push a trivial edit to
README.mdinsuvera/winter-boot. Within ~1 minute a PR titledsync: suvera/winter-boot → <sha>appears insuvera/docswith a report file undersync-reports/. - Manually run the nightly workflow (
gh workflow run sync-nightly.yml -R suvera/docs). If any source repo has drifted, drift PRs appear. - Confirm no PR modifies files outside
sync-reports/andsync-state.json. - Confirm the Mintlify deploy is unaffected (existing
maindeploy behavior).
Deliverables to report back
Reply with:- Commit URL for each of the 6 repos.
- Whether the acceptance test PR appeared.
- Any repo where the workflow could not be added and why.
- Confirmation that no source code, README, or docs page was modified.