doorloop/DocLoop AI
Maintain documentation files using AI. One step = one mapping intent. Compose more by adding more steps.
View on GitHubTrust Signals
- Scorecard Score
- not yet scored
- Maintenance Recency
- Stale
- License
- None
Inputs
| name | description | required | default |
|---|---|---|---|
| openai_api_key | OpenAI API key (should come from GitHub secrets). | yes | — |
| openai_model | OpenAI model identifier (e.g. gpt-4o-mini, gpt-4o, gpt-4-turbo). | no | gpt-4o-mini |
| github_token | GitHub token used to read PR files and to push commits / open PRs / post comments. Defaults to the workflow-provided token. | no | ${{ github.token }} |
| watch | One or more glob patterns (newline- or comma-separated) describing the source files this mapping watches. May contain `<PLACEHOLDER>` segments (e.g. `apps/server/features/<FEATURE_NAME>/**`); placeholders fan-out one step into N target READMEs. | yes | — |
| readme | Target documentation file path. Any `<PLACEHOLDER>` used here must be declared in `watch`. Mutually exclusive with `readme_candidates`; exactly one must be set. | no | — |
| readme_candidates | Glob pattern matching the candidate documentation files (e.g. `docs/wiki/insights/*-feature.md`). Each matched file must declare its owned source paths in YAML frontmatter under `paths:`. The action routes each changed source file to every candidate whose `paths:` covers it. Mutually exclusive with `readme`; exactly one must be set. | no | — |
| prompt_file | Optional path to a Markdown file used as the model's primary directive. The action's operational boundaries (return JSON / Markdown / how to signal "no update") are appended after. | no | — |
| detail_level | Controls how detailed the generated content should be. One of: low, medium, high. | no | medium |
| format | Output format. `structured` returns JSON with `should_update`/`update_reason`. `freeform` returns Markdown; the model signals "no update" with the literal `<!-- docloop:no-update -->` sentinel. | no | structured |
| on_missing_readme | What to do when the target file does not exist. One of: create, skip. | no | create |
| exclude | Glob patterns to exclude from the watch set (newline- or comma-separated). | no | — |
| delivery | How to deliver the generated content. One of: direct_commit, pr, pr_comment, pr_branch_commit. Default is event-derived: closed+merged → direct_commit; opened/synchronize/reopened → pr_comment; workflow_dispatch → pr; schedule / mode=window → pr. On windowed runs `pr` maintains ONE standing roll-up PR on a stable branch containing every pending doc update — force-rebuilt each cycle (never conflicts), auto-closed when nothing is pending. | no | — |
| mode | Set to `window` to run windowed regeneration under `workflow_dispatch` (a `schedule` trigger implies it). In windowed mode each `readme_candidates` doc is regenerated from the diff accumulated since its own `docloop_baseline` frontmatter, and the action manages that baseline. Leave unset for the default per-event behavior. | no | — |
| initial_window_days | Windowed mode only. When a candidate doc has no valid `docloop_baseline` yet, look back this many days to seed its first window. | no | 7 |
| max_diff_bytes | Windowed mode only. Upper bound on the source diff sent to the model per candidate. Larger diffs are truncated per-file (with the omitted paths named) so a huge feature degrades to a paths-only signal instead of failing. | no | 262144 |
| commit_message | Commit message used when delivery is direct_commit, pr, or pr_branch_commit. | no | docs: update [skip ci] |
| format_command | Optional shell command to run on each generated file before commit (e.g. `bunx --no-install prettier --write` or `bun run format -- `). The generated file path is appended as the final argument. Failure is logged as a warning and does not fail the action — the unformatted file is still committed. | no | — |
| pr_title | Title for the docs PR opened when delivery is `pr`. Defaults to "📚 docs: update READMEs via DocLoop AI". | no | — |
| request_review_from_pr_author | When delivery is `pr` and the action is triggered by a merged PR, request a review on the docs PR from the source PR author. Set to "false" to disable. | no | true |
| name | Mapping name used to key PR-preview comments so multiple docloop steps in one workflow each maintain their own idempotent comment. Defaults to a value derived from `watch` and `readme`. | no | — |
Outputs
no outputs