Repository navigation
Conversation
Adds a no-secrets build check for PRs, which the drafts opened by the fil-one docs sync workflow rely on, and tells reviewers and agents how those drafts are handled. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
bajtos
reviewed
Oct 22, 2026
bajtos
left a comment
Contributor
There was a problem hiding this comment.
It's a great idea to add a CI!
A few more suggestions to consider as follow-ups:
- Configure Dependabot to automatically update the pinned actions and also npm dependencies. See https://github.com/fil-one/fil-one/blob/main/.github/dependabot.yml for inspiration.
- Change the branch protection ruleset to require passing CI checks before a PR can be merged.
Replaces the docs-sync bot section with checks that need no secrets: - scripts/check-mirrors.mjs: every docs page has an llms.txt link and an llms-full.txt section, and the mirrors link no dead pages - scripts/check-snippets.mjs: Python/JS/Go/Bash/JSON snippets parse, code blocks have a language tag, and nothing looks like a real access key - mirror-impact job: a PR that changes docs/** but neither mirror must tick "No mirror change needed" with a reason - PR template, CONTRIBUTING.md (when docs are required, a product-to-docs map, how to test snippets), Dependabot with a 7-day cooldown Fixes what the new checks found: the Introduction had no entry in either mirror, and one code block had no language tag. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A ticked 'No mirror change needed:' followed only by the template's <!-- why --> comment passed. Strip HTML comments before matching. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Both mirror conflicts take main's text: main already has the Introduction entries this branch added, plus newer wording. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
Author
|
@bajtos could you take another look? I merged main into this, and it now has no conflicts. On your two suggestions:
The Build, mirror and snippet checks pass locally on the merged branch, and this PR is the first time they run on GitHub. |
filipagr
marked this pull request as ready for review
November 13, 2026 15:48
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds CI to this repo, and a docs-impact checklist, with no secrets and no model calls. It now replaces the docs-sync bot section, because that bot (fil-one/fil-one#881) is deferred (see FIL-1579).
Checks (
.github/workflows/build.yaml)Every PR and every push to
mainruns:npm run build: MDX errors and broken internal links (onBrokenLinks: "throw").node scripts/check-mirrors.mjs: every docs page has a link instatic/llms.txtand aSource:section instatic/llms-full.txt, and neither mirror links to a page that no longer exists.node scripts/check-snippets.mjs: Python, JS, Go, Bash and JSON snippets parse (py_compile,node --check,gofmt,bash -n), every code block has a language tag, and nothing looks like a real access key. A deliberate fragment can opt out withnocheckin its fence.mirror-impactjob: a PR that changesdocs/**but neither mirror fails, unless its description ticks No mirror change needed and gives a reason. It reads only the PR body.The workflow keeps its read-only token, its actions pinned by SHA, and
npm ci --ignore-scripts.Process
.github/pull_request_template.md: a verified-facts, restated-facts and warnings checklist, plus the mirror choice.CONTRIBUTING.md: when a product change needs docs, a map from product paths to docs pages, how to test snippets (a local emulator first, then a throwaway scoped key), and what CI can and can't catch.AGENTS.md: the bot section is replaced with "Checks that run on every PR"..github/dependabot.yml: monthly, grouped, with a 7-day cooldown (as bajtos suggested).Fixes found by the new checks
reference/overview.mdxhad one code block with no language tag.Testing
AKIA…key, and a page missing from the mirrors.npm run buildpasses.mirror-impactlogic was checked locally against five cases: no docs change, mirrors changed, a ticked reason, an unticked box, and a ticked box with no reason.Follow-ups
buildandmirror-impactchecks required in themainruleset.AGENTS.md, plus a secret-freedocs-impactcheck. It's a separate PR in fil-one/fil-one.🤖 Generated with Claude Code