Skip to content

ci: DX glue + config/docs lint (.editorconfig, pre-commit, yamllint, markdownlint, lychee)#122

Merged
VijitSingh97 merged 2 commits into
developfrom
claude/tooling-dx-118
Jun 18, 2026
Merged

ci: DX glue + config/docs lint (.editorconfig, pre-commit, yamllint, markdownlint, lychee)#122
VijitSingh97 merged 2 commits into
developfrom
claude/tooling-dx-118

Conversation

@VijitSingh97

Copy link
Copy Markdown
Contributor

Closes #118. Finishes the tooling epic #116 (companion to #117, already merged).

Rounds out the non-shell tooling around RigForge's existing shellcheck/shfmt + kcov core. Mirrors the repo's conventions throughout: Makefile = single source of truth, pinned tool versions, and local == CI.

What's added

.editorconfig

Encodes the whitespace house style (shfmt -i 4, LF, insert_final_newline, and trim_trailing_whitespace — off for *.md so two-space line breaks survive) so editors match CI without per-editor setup.

pre-commit (extends the #117 seed)

.pre-commit-config.yaml now runs, on every commit:

  • make lint (shellcheck + shfmt) as a local hook — reuses the Makefile's SHELL_FILES so there's no duplicated file list.
  • gitleaks (kept from tooling: supply-chain & secrets hardening (gitleaks, Dependabot, zizmor) #117, same pinned version).
  • freebies from pre-commit-hooks: detect-private-key, check-added-large-files, end-of-file-fixer, trailing-whitespace (with --markdown-linebreak-ext=md).

yamllint + markdownlint — new CI gates

  • New Lint (yamllint) and Lint (markdownlint) jobs in ci.yml, plus make lint-yaml / make lint-md for local runs.
  • Tuned configs (.yamllint, .markdownlint-cli2.yaml) that respect the repo's deliberate style (long explanatory lines, *asterisk* emphasis, Keep-a-Changelog duplicate headings, <details> HTML) while keeping the structural rules (blank lines around headings/lists/fences, code-fence languages, heading increments).
  • Pinned via pipx (yamllint 1.38.0) and npx (markdownlint-cli2 0.22.1), same approach as the existing diff-cover/zizmor installs.

lychee — scheduled link check

  • New links.yml workflow + make lint-links. Kept off the PR path (external links are flaky-by-nature, per the issue) — runs weekly + on demand. Pinned + checksum-verified binary, like the gitleaks/shellcheck installs.

Docs

Small fixes so the structural markdown rules pass: blank lines around headings/lists/fences (via markdownlint --fix), code-fence languages in the bug-report template, the README donation address as a fenced block, and the README hero subtitle as <h3> (keeps the look, clears the #### heading jump).

Acceptance (#118)

  • .editorconfig committed
  • pre-commit runs shellcheck/shfmt/gitleaks + freebies locally; CONTRIBUTING.md updated
  • yamllint + markdownlint green in CI; lychee green (scheduled)

Validation (ran locally)

  • yamllint 1.38.0 --strict — clean across all 8 YAML files
  • markdownlint-cli2 0.22.1 — 0 errors across 18 docs
  • lychee 0.24.2 — 198 links, 0 errors
  • zizmor (online) — no findings, incl. the new links.yml + ci.yml jobs
  • pre-commit run --all-files — all six hooks pass; the freebie fixers made no changes (repo already clean)

Note

The two new PR gates (Lint (yamllint), Lint (markdownlint)) should be added to develop's required status checks — I'll do that once they report green here.

🤖 Generated with Claude Code

VijitSingh97 and others added 2 commits June 18, 2026 01:30
…markdownlint, lychee) (#118)

Rounds out the non-shell tooling around RigForge's existing shellcheck/shfmt +
kcov core, finishing the tooling epic (#116).

- .editorconfig: encodes the whitespace house style (shfmt -i 4, LF, final
  newline) so editors match CI.
- pre-commit: .pre-commit-config.yaml now orchestrates `make lint` (shellcheck +
  shfmt via the Makefile's SHELL_FILES — single source of truth, no duplicated
  list), the existing gitleaks hook, and freebie hygiene hooks (detect-private-key,
  check-added-large-files, end-of-file-fixer, trailing-whitespace).
- yamllint + markdownlint: new CI jobs in ci.yml (and `make lint-yaml` /
  `make lint-md`), each with a tuned config (.yamllint, .markdownlint-cli2.yaml)
  matching the repo's house style. Pinned via pipx / npx like diff-cover/zizmor.
- lychee: new scheduled workflow (links.yml) + `make lint-links`, kept off the PR
  path since external links are flaky-by-nature. Pinned + checksum-verified binary.
- docs: small fixes to satisfy the structural markdown rules (blank lines around
  headings/lists/fences via --fix; code-fence languages; fenced donation block;
  README hero subtitle as <h3> to keep the heading hierarchy clean).
- CONTRIBUTING: document the hooks + the config/docs lint targets.

Validated locally: yamllint --strict, markdownlint, zizmor (online), lychee
(198 links OK), and `pre-commit run --all-files` all green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@VijitSingh97 VijitSingh97 merged commit d5d9817 into develop Jun 18, 2026
9 checks passed
@VijitSingh97 VijitSingh97 deleted the claude/tooling-dx-118 branch June 18, 2026 07:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

tooling: DX glue + config/docs lint (.editorconfig, pre-commit, yamllint, markdownlint + lychee)

1 participant