kpritam/Grimoire AI Docs Sync
AI-powered docs sync. Runs Grimoire CLI and opens a PR (or commits) with generated docs from your codebase.
View on GitHubTrust Signals
- Scorecard Score
- not yet scored
- Maintenance Recency
- Activelast commit Jul 7, 2026
- License
- MIT
Pinned Snippet
uses: kpritam/grimoire@966065fd8dd7fa568b58b8de2ec86b6e7afdaaa4 # v0tags can be moved; commit SHAs can't. why a SHA?
Inputs
| name | description | required | default |
|---|---|---|---|
| provider | Agent provider id. Any agent supported by `spawn-agent`: claude, codex, copilot, cursor, gemini, opencode, droid, pi. | — | claude |
| mode | cast (full), sync (delta), or auto (cast on first run, sync after). | — | auto |
| provider-version | Version/tag override for the selected provider's CLI (e.g. "^1", "1.2.3", "latest"). Empty = registry default. | — | "" |
| skip-cli-install | Skip the action's automatic CLI install step. Set true on self-hosted runners that already have the provider CLI baked into the image, or fully airgapped runners. | — | false |
| output | Documentation output directory. | — | ./tome |
| config | Path to the Grimoire config YAML. Empty = auto-detect `.grimoire/config.yml`, falling back to `.grimoire.yml`. | — | "" |
| log-level | CLI log level (debug, info, warn, error). | — | info |
| behavior | What to do with Grimoire's output: `pr` (open or update a Pull Request), `commit` (commit directly to the current branch), or `report-only` (skip PR creation and commit — Grimoire still runs cast/sync against the working tree; the runner discards those changes after the job). Combine `report-only` with `dry-run: true` for a true no-write run, or with `pr-comment: true` / `fail-on-drift: true` to surface results. | — | pr |
| pr-title-prefix | Fixed prefix for the PR title, used to identify Grimoire PRs at a glance. The summary that follows is drafted by the configured agent from the generated diff (with a deterministic fallback if the agent fails). Override with a plain `docs(grimoire):` (no glyph) if your team's PR-title checks reject emojis. | — | 📖 docs(grimoire): |
| pr-branch | Head branch name for the PR. | — | grimoire/docs-sync |
| pr-base | Base branch for the PR. Empty = repository default branch. | — | "" |
| pr-labels | Comma- or newline-separated labels to apply to the PR. | — | documentation automated grimoire |
| pr-draft | Open the PR as a draft. | — | false |
| commit-message | Commit message. Empty = auto-generated from the run metadata. | — | "" |
| commit-author | `Name <email>` used for commits on the PR branch or main. | — | grimoire[bot] <grimoire[bot]@users.noreply.github.com> |
| pr-comment | Post or update a sticky PR comment summarizing the run. | — | true |
| comment-tag | HTML comment marker used to find/update the sticky comment. | — | grimoire:report |
| fail-on-drift | After the run, re-run `grimoire status` and fail the job if docs are still out of sync. Useful for `report-only` gates on PRs. | — | false |
| dry-run | Run Grimoire without writing files or the seal. | — | false |
| token | Token with `contents:write` + `pull-requests:write`. Defaults to `GITHUB_TOKEN`. Use a PAT or GitHub App token to trigger downstream workflows on the opened PR. | — | ${{ github.token }} |
Outputs
| name | description |
|---|---|
| behavior | Behavior executed: `pr`, `commit`, `report-only`, or `skipped`. |
| mode-used | What Grimoire did: `cast`, `sync`, `synced-noop` (sync short-circuited because nothing in `tracking.sources` changed — agent NOT invoked, seal NOT bumped), or `skipped` (seal already matched HEAD in `auto` mode, so grimoire was never invoked). |
| cast-sha | For `cast` / `sync`: the new seal SHA. For `synced-noop` / `skipped`: the existing seal SHA (which was deliberately not bumped). |
| sections-changed | JSON array of section IDs touched (sync only). |
| changes-detected | `true` when Grimoire produced tracked changes. |
| pull-request-number | PR number when behavior=pr (empty otherwise). |
| pull-request-url | PR URL when behavior=pr (empty otherwise). |
| pull-request-operation | `created`, `updated`, or `none` when behavior=pr. |