Skip to main content

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 user suvera. 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 to suvera.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-doctrine
    • suvera/winter-eureka
    • suvera/winter-memdb

Goals

  1. On push to main or tag push in any source repo, detect if doc-relevant files changed, and open (or update) a PR in suvera/docs describing the change.
  2. Nightly cron job in suvera/docs compares each source repo’s main HEAD against a recorded SHA and opens catch-up PRs for any drift.
  3. Never auto-merge. Never overwrite files under core/, web/, data/, async/, ops/, building/, advanced/, modules/, reference/, sources/, or docs.json in suvera/docs. The sync PR only edits sync-state.json and appends a report file under sync-reports/.
  4. Keep Mintlify’s existing deployment (push-to-main auto-deploy) untouched.

Constraints

  • Use only GitHub Actions, actions/checkout, actions/github-script, and peter-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 directories core/, web/, data/, async/, ops/, building/, advanced/, modules/, reference/, sources/, plus docs.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 with contents: 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:
For winter-modules, use always_relevant/never_relevant as above and this docs_pages:
For winter-doctrinedocs_pages: [{"README.md": modules/doctrine.mdx}]. For winter-eurekamodules/eureka.mdx. For winter-memdbmodules/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:
  1. Push a trivial edit to README.md in suvera/winter-boot. Within ~1 minute a PR titled sync: suvera/winter-boot → <sha> appears in suvera/docs with a report file under sync-reports/.
  2. Manually run the nightly workflow (gh workflow run sync-nightly.yml -R suvera/docs). If any source repo has drifted, drift PRs appear.
  3. Confirm no PR modifies files outside sync-reports/ and sync-state.json.
  4. Confirm the Mintlify deploy is unaffected (existing main deploy 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.