Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 35 additions & 18 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -1,37 +1,54 @@
# Lint CI for mukoko-dev/.github.
# The org-wide lint gate. Drop this file in as
# .github/workflows/lint.yml and change nothing else.
#
# Calls the shared lint workflow in nyuchi/.github. That repository is
# public, so a reusable workflow in it can be called from any repository
# in any organisation — including private ones. This is the same wiring
# bundu-labs and mzizi-dev already use, and it is deliberate: the org's
# lint policy lives in exactly one place and is not copied per org.
# The five checks it publishes are exactly the five contexts the
# org ruleset requires:
#
# The job MUST be called `lint`. A reusable-workflow call publishes its
# checks as "<caller job>/<called job>", which is what produces the five
# contexts the mukoko-dev org ruleset requires:
#
# lint / actionlint lint / markdownlint
# lint / JSON validity lint / yamllint
# lint / actionlint
# lint / JSON validity
# lint / prettier
# lint / markdownlint
# lint / yamllint
#
# Those strings come from the job being called `lint` and calling a
# reusable workflow - a check publishes as "<caller job> / <called job>".
# Do NOT convert this to a matrix: a matrix publishes
# "lint (actionlint)" instead and will not satisfy the ruleset.
#
# Every repository in this org needs a file exactly like this one, or its
# PRs can never merge.
# Also copy .prettierrc, .prettierignore, .markdownlint.jsonc and
# .yamllint.yaml from nyuchi/.github into your repo root.

name: Lint

on:
pull_request:
push:
branches: [main]
# Every default-branch name in the estate: `main` covers 68 repos,
# `master` covers siafudb-kuzu, `scaffold` covers shamwari-core,
# shamwari-gateway and shamwari-web. Drop a name and merging to that
# repo's default branch fires nothing, so the five contexts never
# land on the default-branch head - which is how `lint / prettier`
# stayed red in bundu-labs/.github from 2026-05-02 unnoticed.
#
# A list rather than a bare `push:`, because unfiltered push would
# run the gate on every feature-branch push in 74 repos and bill it
# twice per PR. Add a name here if a repo ever adopts a fourth.
branches: [main, master, scaffold]
# Required for repos whose ruleset uses a MERGE QUEUE: required checks
# must report on the gh-readonly-queue/** ref, and only merge_group
# produces that. Without it a queued PR stalls for the full
# check_response_timeout and nothing can ever land. Harmless where
# there is no queue, so it stays in the one identical caller.
merge_group:
workflow_dispatch:

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

permissions:
contents: read

jobs:
lint:
uses: nyuchi/.github/.github/workflows/reusable-lint.yml@main
2 changes: 1 addition & 1 deletion .markdownlint.jsonc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// markdownlint-cli2 config for mukoko-dev/.github.
// markdownlint-cli2 config for nyuchi/.github.
//
// Relaxed defaults that accommodate:
// - Long prose lines in docs (we format for readability, not width)
Expand Down
10 changes: 9 additions & 1 deletion .prettierignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Prettier ignore for mukoko-dev/.github.
# Prettier ignore for nyuchi/.github.

# Standard ignores
node_modules/
Expand All @@ -7,6 +7,7 @@ node_modules/
# Files with structural meaning that Prettier would harm
LICENSE
CODEOWNERS
CODEOWNERS.example
.github/CODEOWNERS

# YAML is handled by yamllint and actionlint, not Prettier — they have
Expand All @@ -15,6 +16,13 @@ CODEOWNERS
*.yml
*.yaml

# Governance documents are authored by the Founder as legal / formal
# documents. Prettier's markdown formatter reflows numbered paragraphs
# ("2.2 The company pursues...") after a list as loose list-item
# continuations, which corrupts the document's structure. Hand-format
# these files.
profile/governance/

# Lockfiles, generated output
*-lock.json
*-lock.yaml
Expand Down
14 changes: 13 additions & 1 deletion .yamllint.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# yamllint config for mukoko-dev/.github.
# yamllint config for nyuchi/.github.
#
# Relaxed defaults that accommodate:
# - GitHub Actions workflows (which use `on:` — a YAML 1.1 boolean)
Expand All @@ -11,6 +11,18 @@ extends: default

ignore: |
node_modules/
# Lockfiles are generated, not authored. .prettierignore already
# exempts them under "Lockfiles, generated output"; yamllint not doing
# the same was an oversight that only stayed hidden because this repo
# has no lockfile. pnpm writes registry deprecation notices verbatim
# into pnpm-lock.yaml, which routinely exceeds the 140-char limit and
# cannot be rewrapped without invalidating the lockfile.
pnpm-lock.yaml
package-lock.json
yarn.lock
**/pnpm-lock.yaml
**/package-lock.json
**/yarn.lock

rules:
# 140-char limit. Workflow files have legitimately long shell URLs
Expand Down
Loading