Skip to content

ci(lint): adopt the org reusable lint workflow - #93

Open
Bryan Fawcett (bryanfawcett) wants to merge 3 commits into
mainfrom
ci/adopt-reusable-lint
Open

Bryan Fawcett (bryanfawcett) wants to merge 3 commits into
mainfrom
ci/adopt-reusable-lint

Conversation

@bryanfawcett

Copy link
Copy Markdown
Contributor

Why

The mukoko-dev org ruleset requires five status checks on the default branch
of every repo:

lint / actionlint
lint / JSON validity
lint / prettier
lint / markdownlint
lint / yamllint

This repo has no lint workflow at all, so none of them ever reported. A
required context that never reports is permanently pending — which is why all
six open dependabot PRs sit BLOCKED.

The fix

One job named lint calling nyuchi/.github's reusable-lint.yml. A
reusable-workflow call publishes its checks as <caller job> / <called job>,
and that reusable's jobs are named actionlint, JSON validity, prettier,
markdownlint, yamllint — producing exactly the five required strings.

nyuchi/.github is public, so a reusable workflow in it can be called from any
repo in any org. Verified in production, not assumed: mzizi-dev/agent-tools is
a private repo in a different org and calls the same workflow successfully.
Nothing is duplicated into this org — see mukoko-dev/.github#1.

Content fixes needed to go green

fix files
3 bare URLs wrapped in <…> (renders identically) web/MIGRATED.md, web/studio/MIGRATED.md
MD036 scope-disabled around the title block and two closing mottos ARCHITECTURE.md
MD029 scope-disabled per file docs/guides/creating-{mini-app,service}.md
prettier reflow 4 × services/*/wrangler.jsonc

On the two scoped disables — both are cases where the rule is wrong about this
content, and each carries a comment saying so:

  • ARCHITECTURE.md's **Version 2.0 | February 2026**, _A Product of The Bundu Family_ and _Ndiri nekuti tiri_ are a title block. Promoting them
    to real headings would put taglines in the document's outline.
  • The guides put a fenced code block at column 0 after each numbered step, which
    splits the ordered list so markdownlint restarts the count at every step. The
    rendered numbering is correct.

The wrangler configs — checked, not assumed

Prettier reflowed 4 wrangler.jsonc files. I verified before/after are
semantically identical by parsing both (comment- and trailing-comma
tolerant) and comparing the objects — all 4 SAME. The changes are array bodies
collapsing onto one line, plus one dangling trailing comma removed from
_template. No binding, id, bucket name or compatibility flag changed.

.prettierrc gains a *.jsonc override setting trailingComma to "none".
Without it, this repo's "trailingComma": "all" made prettier add trailing
commas to wrangler deploy configs. JSONC tolerates them, but quietly rewriting
deployment config to satisfy a formatter is not a trade worth making. The
override keeps those files under the check without changing their shape.

Verification

All five run locally against this branch and pass: actionlint rc=0, JSON
validity rc=0, yamllint -s rc=0, prettier rc=0, markdownlint-cli2
0 error(s) over 22 files. Proof they can still fail is in the PR
conversation.

Unrelated, but it should not go unsaid

Pushing this branch, GitHub reported 282 Dependabot vulnerabilities on main
(5 critical, 100 high, 151 moderate, 26 low). Far outside this PR's scope, and
raised separately in my report — but that number deserves attention.

The mukoko-dev org ruleset requires five status checks on the default
branch of every repo:

  lint / actionlint      lint / markdownlint
  lint / JSON validity   lint / yamllint
  lint / prettier

This repo had no lint workflow at all, so none of them ever reported —
and a required context that never reports is permanently pending, which
is why all six open dependabot PRs are blocked.

The job is named `lint` and calls nyuchi/.github's reusable-lint.yml,
whose jobs are named actionlint, JSON validity, prettier, markdownlint
and yamllint. A reusable-workflow call publishes checks as
"<caller job>/<called job>", so that produces exactly the five required
strings. nyuchi/.github is public, so the cross-org call is permitted;
mzizi-dev/agent-tools (private, different org) already does the same.

Adds the org lint baseline — .editorconfig, .markdownlint.jsonc,
.yamllint.yaml — which the tools auto-discover. This repo's existing
.prettierrc and .prettierignore are kept as they are.

Content fixes needed to go green:

  - 3 bare URLs in web/MIGRATED.md and web/studio/MIGRATED.md wrapped in
    angle brackets (renders identically).
  - ARCHITECTURE.md's title block and two closing mottos are emphasis on
    purpose, not headings — promoting them would put taglines in the
    document outline, so MD036 is scope-disabled around them with a
    comment saying why.
  - The two "creating a ..." guides put a fenced code block at column 0
    after each step, which splits the ordered list and makes markdownlint
    restart the count. Rendered numbering is correct, so MD029 is
    scope-disabled per file with an explanation.
  - Four wrangler.jsonc files reflowed by prettier. Verified semantically
    identical by parsing before and after: array bodies moved onto one
    line, and one dangling trailing comma removed. No binding, id, bucket
    or flag value changed.

One config addition: .prettierrc gains a `*.jsonc` override setting
trailingComma to "none". Without it the repo's "trailingComma": "all"
made prettier ADD trailing commas to wrangler deploy configs. JSONC
tolerates them, but quietly rewriting deployment config to satisfy a
formatter is not a trade worth making — this keeps the files under the
check without changing their shape.

Verified locally, all five: actionlint rc=0, JSON validity rc=0,
yamllint -s rc=0, prettier rc=0, markdownlint 0 errors over 22 files.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

This branch has not been deployed

No deployments
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.

1 participant