{"id":28524326,"url":"https://github.com/aznashwan/github-autolabeler","last_synced_at":"2025-07-06T08:31:38.319Z","repository":{"id":185835904,"uuid":"670305558","full_name":"aznashwan/github-autolabeler","owner":"aznashwan","description":"All your repo/pr/issue labelling functionality in one crystal-clear config.","archived":false,"fork":false,"pushed_at":"2023-08-25T15:07:49.000Z","size":224,"stargazers_count":3,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-09T10:11:47.089Z","etag":null,"topics":["actions","github-action-labels","github-labels","issue-labels","labels","labels-generator","pull-request-labels","repository-labels"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aznashwan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-07-24T18:46:46.000Z","updated_at":"2024-02-05T05:49:27.000Z","dependencies_parsed_at":null,"dependency_job_id":"5eac0b2c-c890-42f6-99ff-79cc50242d94","html_url":"https://github.com/aznashwan/github-autolabeler","commit_stats":null,"previous_names":["aznashwan/github-autolabeler"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/aznashwan/github-autolabeler","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aznashwan%2Fgithub-autolabeler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aznashwan%2Fgithub-autolabeler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aznashwan%2Fgithub-autolabeler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aznashwan%2Fgithub-autolabeler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aznashwan","download_url":"https://codeload.github.com/aznashwan/github-autolabeler/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aznashwan%2Fgithub-autolabeler/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263870202,"owners_count":23522637,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["actions","github-action-labels","github-labels","issue-labels","labels","labels-generator","pull-request-labels","repository-labels"],"created_at":"2025-06-09T10:11:05.151Z","updated_at":"2025-07-06T08:31:38.313Z","avatar_url":"https://github.com/aznashwan.png","language":"Python","readme":"# Cloudbase GitHub Auto-Labeler\n\nPython-based utility for managing all your repo's labelling needs!\n\nThe autolabeler's main design goals were providing:\n\n* a crystal-clear config file as a single source of truth for all label\n  definitions for your Repo and its Issues and PRs.\n* the ability to compose label definitions and triggers dynamically\n  based on comments, PR filepaths, issue expiry, and more.\n  (see advanced usecases below)\n* a simple CLI interface for both manual use and easy intergration into\n  existing CI/CD infrastructure.\n* an optimized Docker image to allow it to run asynchronously within GitHub\n  actions with no external daemon required.\n\n\n## Contents\n\n- [Prerequisites](#prerequisites)\n    - [Personal Access Token Setup](#personal-access-token-setup)\n    - [GitHub Action Token Setup](#github-action-token-setup)\n- [Quick Setup](#quick-setup)\n    - [Basic Config](#basic-config)\n    - [Direct Execution](#direct-execution)\n    - [GitHub Actions](#github-actions)\n- [Configuration](#configuration)\n    - [Basic Labelers](#basic-labelers)\n    - [Selectors](#selectors)\n        - [Files Selector](#files-selector)\n        - [Comments Regex Selector](#comments-regex-selector)\n        - [Diff Selector](#diff-selector)\n    - [Actions](#actions)\n        - [Closing Action](#closing-action)\n- [Advanced Usage](#advanced-usage)\n\n\n## Prerequisites\n\nWhether used from the CLI directly by an end user, or integrated as a step\nwithin the a repository's usual GitHub Action workflows, the utility will require\na [GitHub API Access Token](\nhttps://docs.github.com/en/rest/guides/getting-started-with-the-rest-api?apiVersion=2022-11-28#about-tokens)\nto perform the querying/labelling/commenting/closing operations it will be making.\n\n### Personal Access Token Setup\n\nIf intending to run the utility directly and having it impersonate our GitHub user in\nits automatic labelling or reply actions, we'll need to create a\n[Personal Access Token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens).\n\nIt is recommended to [create a Fine-Grained Access Token](\nhttps://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-fine-grained-personal-access-token)\nwith the following permissions:\n\nRepository Permissions:\n* Contents: Read-only (used for reading main Repo labels and files)\n* Issues: Read and write (used to read, label, comment, and close issues)\n* Pull Requests: Read and write (used to read, label, comment, and close PRs)\n* Metadata: Read-only (implied by the above Issue/PR permissions)\n\n\n### GitHub Action Token Setup\n\nIf intending to run the utility from GitHub actions, we will need to [update\nsome `$GITHUB_TOKEN` settings](https://docs.github.com/en/enterprise-server@3.6/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#configuring-the-default-github_token-permissions)\non the target Repository to the \"permissive setting\", which will allow\nindividual workflows to have Read/Write access on more scopes as defined by\nthe per-workflow `permissions` option:\n\n```yaml\n# Our workflow files in `.github/workflows/*.yml` will need to have the following\n# permissions for the utility to be able to use the `$GITHUB_TOKEN` for API calls.\npermissions:\n  contents: read\n  issues: write\n  pull-requests: write\n```\n\n## Quick Setup\n\n### Basic Config\n\nThe config is just a YAML file which defines our label colors, descriptions, and\nhirearchy, while also allowing for some more advanced label generation behavior\ndescribed in the [Advanced](#advanced-usage) section.\n\nHere's a simple config showcasing some common patterns to start us off:\n\n```yaml\n# This will define two static \"namespaced labels\" which can be later be manually\n# set on PRs/Issues. (help-wanted/good-first-issue and help-wanted/more-eyes)\nhelp-wanted:\n  good-first-issue:\n    color: green\n    description: This issue is a great starting point for first time contributors.\n  more-eyes:\n    color: yellow\n    description: This issue/PR requires more maintainers to weigh in.\n\n# This will define a label named \"bug\" which will automatically be associated\n# with issues/PRs whose titles/descriptions match the provided regexes.\nbug:\n  color: red\n  description: This label signifies the Issue/PR is about a bug.\n  selectors:\n    title: \"(issue|bug|fix|problem|failure|error)\"\n    description: \"(issue|bug|problem|failure|error)\"\n\n    # This will also make the label be applied to PRs/Issues where a maintainer\n    # comments the given magic string on a single line within a comment.\n    maintainer_comments: \"^(/label-me-as bug)$\"\n\n# This will auto-generate a unique label for any YAML file in the 'samples' directory.\nsample-{ files.name_regex.groups[0] }:  # { $SELECTOR_NAME.$FIELD_NAME.$RESULT_NAME }\n  color: yellow\n  description: This label was created for sample file '{ files.name_regex.full }'.\n  selectors:\n    files:\n      name_regex: \"samples/(.*).yaml\"\n\n# This will automatically label and close all PRs which contain more than 10k lines of code.\nneeds-splitting:\n  color: red\n  description: This PR has more than {diff.min} lines and must be split.\n  selectors:\n    author:\n    diff:\n       type: total  # total = additions + deletions\n       min: 10000\n  if: diff.min != 0\n  # Will only trigger on PRs if the 'diff' selector returns a match.\n  action:\n    perform: close\n    # NOTE: can include markdown directives in reply comment.\n    comment: |\n      Thank you for your contribution to our project! :smile:\n      Unfortunately, this PR is *too large to be reviewed effectively*. :disappointed:\n      Please break down the changes into individual PRs no larger than {diff.min} lines.\n```\n\n### Direct Execution\n\nTo run the executable, either:\n\n#### Install and Run using Python/pip.\n\n```bash\n# Inside a Python dev env with pip available for installation.\n# On Ubuntu, this can be set up using:\n$ apt install -y git gcc python3 python3-dev python3-pip\n\n# Clone repo and pip install its only executable script:\n$ git clone https://github.com/cloudbase/gh-auto-labeler\n$ cd gh-auto-labeler\n$ pip3 install ./\n\n# And call the executable, passing in any relevant arguments:\n$ gh-auto-labeler \\\n    --github-token \"$GITHUB_TOKEN\" \\\n    --label-definitions-file \"/path/to/autolabels.yml\" \\\n    --run-post-labelling-actions \\\n    username/reponame[/pulls/N] \\\n    generate\n\n# You can review the list of available arguments using:\n$ gh-auto-labeler -h\n```\n\n#### Run using Docker\n\n```bash\n# Presuming you've copied your autolabels.yml config to /tmp so it gets mounted.\n$ docker run -v /tmp:/tmp -e GITHUB_TOKEN=\"\u003cyour token\u003e\" \\\n    ghcr.io/cloudbase/gh-auto-labeler:latest \\\n    --label-definitions-file /tmp/autolabels.yml \\\n    --run-post-labelling-actions \\\n    username/reponame[/issues/N] \\\n    generate\n\n# You can review the list of available arguments using:\n$ docker run ghcr.io/cloudbase/gh-auto-labeler:main -h\n```\n\n### GitHub Actions\n\nThe autolabeler can be directly run from within a GitHub action:\n\n```yaml\n# Workflow definition for automatically labelling on various triggers.\nname: Autolabeler Sync\ndescription: Workflow definition for automatically labelling on various triggers.\n\non:\n  workflow_dispatch:                    # manual triggers from Actions menu\n  push:                                 # triggers on pushes to repo branches\n    branches: [main]                    # triggers on pushes to 'main'\n    tags: ['v*.*.*']                    # triggers on certain tags\n  issues:                               # triggers on issue-related operations\n    types: [opened, edited, closed]     # C_UD operations on the issue\n  pull_request:                         # triggers on PR-related operations\n    branches: [main]                    # PRs must have been opened against 'main'\n    types: [opened, edited, reopened]   # triggers on PRs being (re)opened/edited\n  issue_comment:                        # triggers on *both* PR/issue comments\n    types: [created, edited, deleted]   # C_UD operations on any comments\n\npermissions:\n  contents: read\n  issues: write\n  pull-requests: write\n\njobs:\n  autolabel:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v3\n\n      - name: \"Run autolabelling\"\n        uses: cloudbase/gh-auto-labeler@main\n        with:\n          target-from-action-env: ${{ toJSON(github) }}\n          # default is \".github/autolabels.yml\"\n          config-path: \"./autolabels.yml\"\n          command: sync\n```\n\n## Configuration\n\n### Basic labelers\n\nThe autolabeler has a simple YAML-based configuration syntax which is composed\nfrom the following constructs:\n\nLabel names are string keys which map to the definitions of so-called `labelers`.\n\nLabeler properties include:\n\n* `color`: 6-hex-digit color for the label or one one of the pre-defined colors\n  options.\n* `description`: String description of the label.\n* `selectors`: A mapping of pre-defined selectors which match against\n               repository files, Issue/PR titles/descriptions/properties,\n               and more. The matches of the selectors can be used in both\n               the label's name, as well as the `description`.\n* `action`: An action to take based on one or more `selector` matches.\n\n```yaml\n# This will auto-generate a label named 'my-prefix/label-for-XYZ'\n# depending on selector matches.\nmy-prefix:\n  # NOTE: selector results can be referenced in label names too\n  # in this format: \"{ $SELECTOR_NAME.$SELECTOR_FIELD.$SELECTOR_RESULT }\"\n  label-for-{ selector_1.option_1.result_1 }:\n    color: 0e8a16  # green\n    description: |\n        This is an arbitrary label description string.\n        It can also reference selector matches using:\n        - { selector_1.option_1.result_1 }\n        - { selector_2.option_2.result_2 if selector_1 }\n    selector:\n      selector_1:\n        # NOTE: the \"result_N\" part depends on the selector's implementation.\n        option_1: \"\u003csome property to match as 'selector_1.option_1.result_N'\u003e\"\n      selector_2:\n        option_2: \"\u003csome property to match as 'selector_2.option_2.result_N'\u003e\"\n    # This will make the label only be applied if both selectors match.\n    if: selector_1 and selector_2\n    action:\n      perform: close\n      comment: |\n        This PR/Issue will be closed now because both selectors returned \\\n        { selector_1.option_1.result_1 }.\n```\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd\u003e Definition \u003c/td\u003e \u003ctd\u003e Description \u003c/td\u003e \u003ctd\u003e Applied on \u003c/td\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\u003ctd\u003e\n\n```yaml\nexample-static-label:\n  color: green\n  description: Example Description.\n```\n\n\u003c/td\u003e\n\u003ctd\u003e\n\nDefines a *static label* named `example-static-label`.\n\n\u003c/td\u003e\n\u003ctd\u003e\n\nWill get created and managed at the Repo level.\nWill need to be manually set by maintainers on PRs/Issues.\n\n\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\u003ctd\u003e\n\n```yaml\nexample-prefix:\n  example-sublabel-1:\n    color: green\n    description: Example Description 1.\n  example-sublabel-1:\n    color: yellow\n    description: Example Description 2.\n```\n\n\u003c/td\u003e\n\u003ctd\u003e\n\nDefines *two namespaced static labels* named `example-prefix/example-sublabel-{1,2}`.\n\n\u003c/td\u003e\n\u003ctd\u003e\n\nWill get created and managed at the Repo level.\nWill need to be manually set by maintainers on PRs/Issues.\n\n\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\u003ctd\u003e\n\n```yaml\nexample-selector-{ selector_1.option_1.result_N }:\n  color: green\n  description: |\n    This label was automatically generated for \\\n    { selector_1.option_1.result_N }.\n  selector:\n    selector_1:\n      option_1: \"\u003csome match params\u003e\"\n```\n\n\u003c/td\u003e\n\u003ctd\u003e\n\nDefines a *new label for every selector match* with the given format.\n\n\u003c/td\u003e\n\u003ctd\u003e\n\nWill get created and managed at the Repo level IF the selector matches.\nWill get automatically created and set on Issues/PRs IF the selector matches\nIssues/PRs.\n\n\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\u003ctd\u003e\n\n```yaml\nexample-action-label:\n  color: green\n  description: Example Description.\n  selector:\n    s1:\n      o1: \"\u003csome match param\u003e\"\n  if: s1.o1.get(\"result_N\") is not None\n  action:\n    perform: |\n        'close' if s1.o1.get(\"result_N\") == 42 \\\n        else 'open'\n    comment: |\n        This PR/Issue will be \\\n        {'close' if s1.o1.get(\"result_N\") == 42 \\\n        else 're-open'}ed now.\n```\n\n\u003c/td\u003e\n\u003ctd\u003e\n\nDefines a static label that will get applied to PRs/Issue and close them\nIF the selector matches.\n\n\u003c/td\u003e\n\u003ctd\u003e\n\nWill get created and managed at the Repo level IF the selector matches.\nWill get automatically created and set on Issues/PRs IF the selector matches\nIssues/PRs.\nWill close PRs/Issues IF the selector returns any matches.\n\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n### Selectors\n\nSelectors are what determine whether a label will get applied to the given\ntarget or not.\n\nPlease see the [Basic Labelers](#basic-labelers) section on how to use\nselectors within your labelers.\n\n#### Regular Expression-based selectors\n\n**ALL** selectors which accept string arguments for matching (e.g. the \"author\"\nselector which matches the user ID of a PR/Issue's author) actually accept\nRegular Expression(s) as arguments in multiple forms.\n\n```yaml\nregexes-example-label:\n  color: teal\n\n  selectors:\n    # An empty regex selector is an implicit catchall regex. (.*)\n    author:    # equivalent with `author: null`\n\n    # A single string is interpreted as a single regex which *must* match.\n    author: \"^(user123)$\"  # Will only match PRs/Issues from `user123`.\n\n    # A list of strings is interpreted as a list of regexes, *any* of which can match.\n    author:\n      - \"^(user123)$\"\n      - \"^(user456)$\"\n\n    # A mapping *must* contain the 'regexes' key and can define additional properties.\n    author:\n      strategy: all     # options are: [any]/all/none\n      case_insensitive: true\n      regexes: [\"^(user)\", \"([0-9]{3})$\"]\n\n  description: |\n    When a regex selector matches, it will return the following results:\n    - { author.full }: the full string which matched the regex(es)\n    - { author.match }: the exact substring which matched the *first* regex\n    - { author.groups }: list of match groups for the *first* regex\n    # NOTE: regex numbering starts from 0, i.e. `author.match0 == author.match`\n    - { author.matchN }: the exact substring which matched the Nth regex\n    - { author.groupsN }: list of match groups for the Nth regex\n    - { author.strategy }: string containing the regex strategy (all/any/none)\n    - { author.case_insensitive }: bool flag indicating case sensitivity\n```\n\n#### Author Regex Selector\n\nThe `author:` selector is a [Regular Expression-based selector](#regular-expression-based-selectors)\nwhich matches the ID of the author of an Issue/PR.\n\n#### Title Regex Selector\n\nThe `title:` selector is a [Regular Expression-based selector](#regular-expression-based-selectors)\nwhich matches the title of an Issue/PR.\n\n#### Description Regex Selector\n\nThe `description:` selector is a [Regular Expression-based selector](#regular-expression-based-selectors)\nwhich matches the description of an Issue/PR.\n\n#### Comments Regex Selector\n\nThe `comments:` selector is a [Regular Expression-based selector](#regular-expression-based-selectors)\nwhich matches the comments of an Issue/PR.\n\nNote that it returns an individual match for each comment.\n\n#### Maintainer Comments Regex Selector\n\nThe `maintainer_comments:` selector is a [Regular Expression-based selector](#regular-expression-based-selectors)\nwhich matches the comments let of by project mantainers on an Issue/PR.\n\nNote that it returns an individual match for each comment.\n\n#### Files Selector\n\nA selector for matching file paths on Repos/PRs.\n\n```yaml\nunique-label-for-{ files.name_regex.groups[0] }:\n  color: yellow\n  description: |\n      This label was created especially for the file whose repo path is:\n      { files.name_regex.full }\n  selector:\n    files:\n      case_insensitive: false\n      name_regex: \"(.*).txt\"\n```\n\nParams:\n* `name_regex`: regular expression to match against the full filepaths\n                of all files within the Repository/Pull Request.\n* `case_insensitive`: whether or not the regex should be case insensitive.\n\nResult keys:\n* `files.name_regex.full`: full file path which matched the regex.\n* `files.name_regex.match`: the portion of the filename which matched the regex.\n* `files.name_regex.groups[N]`: the zero-indexed Nth capture group of the regex.\n\n\n#### Diff Selector\n\nA selector for matching diff sizes for PRs.\n\n```yaml\npr-size-measure:\n  small:\n    color: 0075ca\n    description: This PR is between {diff.min} and {diff.max} lines of code.\n    selectors:\n      diff:\n        # Can be: additions/deletions/total/net (net = additions - deletions)\n        type: net\n        min: 1\n        max: 1000\n\n  large:\n    color: d73a4a\n    description: This PR is over {diff.min} lines of code.\n    selectors:\n      diff:\n        # NOTE: omitting either the min/max will set them to -/+ Infinity.\n        min: 1000\n```\n\nResult keys:\n* `diff.min`: the inclusive 'min' setting on the diff selector.\n* `diff.max`: the NON-inclusive 'max' setting on the diff selector.\n* `diff.total`: the total diff size (additions + deletions)\n* `diff.addition`: the number of added lines.\n* `diff.deletions`: the number of deleted lines.\n* `diff.net`: the net diff (additions - deletions)\n* `diff.files`: a mapping between full filenames and their diff stats:\n    * `diff.files[NAME].{min,max,total,additions,deletion,net}`: individual\n      diff stats for each changed file.\n\n### Actions\n\n[Labelers](#basic-labelers) can declare a singular `action` to be executed based\non whether one or more [selectors](#selectors) have fired or not.\n\n```yaml\none-liner-only-file:\n    color: d73a4a  # red\n    description: |\n        This file can only ever have PRs created which are at most {diff.min} LoC:\n        { files.name_regex.full }.\n    if: diff.files.get(files.name_regex.full, 0) \u003e diff.min\n    selectors:\n        files:\n            # will match this exact path:\n            name_regex: \"path/to/some/oneliner/file.txt\"\n        diff:\n            # will match any diff with at least 1 changed line of code.\n            min: 1\n    action:\n        perform: close\n        comment: |\n            Unfortunately, we do not currently accept any major contributions to\n            the file: { files.name_regex.full }\n            Please only change the file { diff.min } lines at a time.\n```\n\n## Advanced Usage\n\n### Advanced configs\n\nPlease review the `./samples` folder for more advanced config examples.\n\n### Advanced actions setup\n\n#### Using autolabeler container directly from actions.\n\n```yaml\n# Workflow definition for automatically labelling on various triggers.\nname: Autolabeler Sync\ndescription: Workflow definition for automatically labelling on various triggers.\n\non:\n  workflow_dispatch:                    # manual triggers from Actions menu\n  push:                                 # triggers on pushes to repo branches\n    branches: [main]                    # triggers on pushes to 'main'\n    tags: ['v*.*.*']                    # triggers on certain tags\n  issues:                               # triggers on issue-related operations\n    types: [opened, edited, closed]     # C_UD operations on the issue\n  pull_request:                         # triggers on PR-related operations\n    branches: [main]                    # PRs must have been opened against 'main'\n    types: [opened, edited, reopened]   # triggers on PRs being (re)opened/edited\n  issue_comment:                        # triggers on *both* PR/issue comments\n    types: [created, edited, deleted]   # C_UD operations on any comments\n\npermissions:\n  contents: read\n  issues: write\n  pull-requests: write\n\njobs:\n  autolabel-through-container:\n\n    runs-on: ubuntu-latest\n    # NOTE: replace 'main' with any specific tag you'd need.\n    container: ghcr.io/cloudbase/gh-auto-labeler:main\n\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v3\n\n      - name: \"Run autolabelling\"\n        run: |\n          # This will check whether this action was triggered by a PR/Issue\n          # event and update the target string accordingly.\n          # If your `on:` section only triggers on certain types of resources,\n          # you can safely hardcode the exact target format directly.\n          TARGET=\"${{ github.repository }}\"\n          if [ \"${{ github.event.pull_request.number }}\" ]; then\n            TARGET=\"$TARGET/pull/${{ github.event.pull_request.number }}\"\n          elif [ \"${{ github.event.issue.number }}\" ]; then\n            TARGET=\"$TARGET/issue/${{ github.event.issue.number }}\"\n          fi\n\n          gh-auto-labeler \\\n            --github-token ${{ secrets.GITHUB_TOKEN }} \\\n            --label-definitions-file \"path/to/your/repos/autolabels.yml\" \\\n            --run-post-labelling-actions \\\n            \"$TARGET\" \\\n            sync\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faznashwan%2Fgithub-autolabeler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faznashwan%2Fgithub-autolabeler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faznashwan%2Fgithub-autolabeler/lists"}