.github/workflows/pr_lint.yml YAML 129 lines View on github.com → Search inside
1# PR title linting.2#3# FORMAT (Conventional Commits 1.0.0):4#5#   <type>[optional scope]: <description>6#   [optional body]7#   [optional footer(s)]8#9# Examples:10#     feat(core): add multitenant support11#     fix(langchain): resolve error12#     docs: update API usage examples13#     docs(openai): update API usage examples14#15# Allowed Types:16#   * feat        a new feature (MINOR)17#   * fix         a bug fix (PATCH)18#   * docs        documentation only changes19#   * style       formatting, linting, etc.; no code change or typing refactors20#   * refactor    code change that neither fixes a bug nor adds a feature21#   * perf        code change that improves performance22#   * test        adding tests or correcting existing23#   * build       changes that affect the build system/external dependencies24#   * ci          continuous integration/configuration changes25#   * chore       other changes that don't modify source or test files26#   * revert      reverts a previous commit27#   * release     prepare a new release28#   * hotfix      urgent fix29#30# Allowed Scope(s) (optional):31#   core, langchain, langchain-classic, model-profiles,32#   standard-tests, text-splitters, docs, anthropic, chroma, deepseek, exa,33#   fireworks, groq, huggingface, mistralai, nomic, ollama, openai,34#   perplexity, qdrant, xai, infra, deps, partners35#36# Multiple scopes can be used by separating them with a comma. For example:37#38#   feat(core,langchain): add multitenant support to core and langchain39#40# Note: PRs touching the langchain package should use the 'langchain' scope. It is not41#   acceptable to omit the scope for changes to the langchain package, despite it being42#   the main package & name of the repo.43#44# Rules:45#   1. The 'Type' must start with a lowercase letter.46#   2. Breaking changes: append "!" after type/scope (e.g., feat!: drop x support)47#   3. When releasing (updating the pyproject.toml and uv.lock), the commit message48#      should be: `release(scope): x.y.z` (e.g., `release(core): 1.2.0` with no49#      body, footer, or preceeding/proceeding text).50#51# Enforces Conventional Commits format for pull request titles to maintain a clear and52# machine-readable change history.5354name: "🏷️ PR Title Lint"5556permissions:57  pull-requests: read5859on:60  pull_request:61    types: [opened, edited, synchronize]6263jobs:64  # Validates that PR title follows Conventional Commits 1.0.0 specification65  lint-pr-title:66    name: "validate format"67    runs-on: ubuntu-latest68    steps:69      - name: "🚫 Reject empty scope"70        env:71          PR_TITLE: ${{ github.event.pull_request.title }}72        run: |73          if [[ "$PR_TITLE" =~ ^[a-z]+\(\)[!]?: ]]; then74            echo "::error::PR title has empty scope parentheses: '$PR_TITLE'"75            echo "Either remove the parentheses or provide a scope (e.g., 'fix(core): ...')."76            exit 177          fi78      - name: "✅ Validate Conventional Commits Format"79        uses: amannn/action-semantic-pull-request@48f256284bd46cdaab1048c3721360e808335d50 # v680        env:81          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}82        with:83          types: |84            feat85            fix86            docs87            style88            refactor89            perf90            test91            build92            ci93            chore94            revert95            release96            hotfix97          scopes: |98            core99            langchain100            langchain-classic101            model-profiles102            standard-tests103            text-splitters104            docs105            anthropic106            chroma107            deepseek108            exa109            fireworks110            groq111            huggingface112            mistralai113            nomic114            ollama115            openai116            openrouter117            perplexity118            qdrant119            xai120            infra121            deps122            partners123          requireScope: false124          disallowScopes: |125            release126            [A-Z]+127          ignoreLabels: |128            ignore-lint-pr-title

Findings

✓ No findings reported for this file.

Get this view in your editor

Same data, no extra tab — call code_get_file + code_get_findings over MCP from Claude/Cursor/Copilot.