{"id":19237320,"url":"https://github.com/seantrane/github-label-presets","last_synced_at":"2025-08-07T01:04:58.134Z","repository":{"id":42032174,"uuid":"145221566","full_name":"seantrane/github-label-presets","owner":"seantrane","description":":octocat: GitHub Labels that are logical, colorful and sensible.","archived":false,"fork":false,"pushed_at":"2023-04-13T08:53:04.000Z","size":200,"stargazers_count":18,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-04T08:42:00.152Z","etag":null,"topics":["github-labels","issue-management","issues","pull-requests"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/seantrane.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-08-18T13:19:15.000Z","updated_at":"2024-11-20T09:45:39.000Z","dependencies_parsed_at":"2024-11-09T16:29:05.938Z","dependency_job_id":"4bb253e3-f84f-4742-9aa6-ca72d07daa4b","html_url":"https://github.com/seantrane/github-label-presets","commit_stats":{"total_commits":45,"total_committers":4,"mean_commits":11.25,"dds":0.2666666666666667,"last_synced_commit":"732222d9e116c36edb0f2affd1910ba5ae841686"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/seantrane/github-label-presets","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seantrane%2Fgithub-label-presets","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seantrane%2Fgithub-label-presets/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seantrane%2Fgithub-label-presets/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seantrane%2Fgithub-label-presets/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/seantrane","download_url":"https://codeload.github.com/seantrane/github-label-presets/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seantrane%2Fgithub-label-presets/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267046199,"owners_count":24026899,"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","status":"online","status_checked_at":"2025-07-25T02:00:09.625Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["github-labels","issue-management","issues","pull-requests"],"created_at":"2024-11-09T16:26:08.193Z","updated_at":"2025-07-25T18:34:08.201Z","avatar_url":"https://github.com/seantrane.png","language":"Shell","readme":"# @seantrane/github-label-presets\n\n\u003e :octocat: GitHub Labels that are logical, colorful and sensible.\n\n[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/) [![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release) [![Continuous Integration](https://github.com/seantrane/github-label-presets/actions/workflows/integration.yml/badge.svg)](https://github.com/seantrane/github-label-presets/actions/workflows/integration.yml) [![Continuous Delivery](https://github.com/seantrane/github-label-presets/actions/workflows/delivery.yml/badge.svg)](https://github.com/seantrane/github-label-presets/actions/workflows/delivery.yml)\n\n## About \u003ca id=\"about\"\u003e\u003c/a\u003e\n\n**TL;DR:** _Want [beautiful GitHub Labels like these](https://github.com/seantrane/github-label-presets/labels)?_ Want to have them unobtrusively synced with your repos? Want to persist them indefinitely? Want to maintain your own labels? If the answers have been yes, this is definitely not _too long_, please read on.\n\n1. Run `npm install -g github-label-sync`\n2. Provide environment variable: `GITHUB_ACCESS_TOKEN`\n3. Run `github-label-sync -l 'https://raw.githubusercontent.com/seantrane/github-label-presets/main/labels.json' myname/myrepo`\n\n\u003e :robot: :rocket: [Use GitHub Actions to keep your labels just how you like them!](#github-actions)\n\n### Details\n\nThe default GitHub Labels are... not ideal. This has been described many times:\n\n- [Sane GitHub Labels](https://medium.com/@dave_lunny/sane-github-labels-c5d2e6004b63)\n- [How we organize GitHub issues: A simple styleguide for tagging](https://robinpowered.com/blog/best-practice-system-for-organizing-and-tagging-github-issues/)\n\nThere are many very good examples of GitHub Label strategies. Almost all of them are an improvement over the default. But for several reasons or another few, in practice, none of them have felt truly great or sustainable.\n\n#### Principles\n\n`@seantrane/github-label-presets` were designed according to the following thoughts and principles:\n\n- GitHub Labels are used for both Issues and Pull Requests (PR), therefore the label context should be agnostic.\n- An Issue/PR without labels should not require labels to solicit attention, therefore the default state should be label-less.\n- Issue/PR labels should only provide important context; priority, effort and the state of solution and/or decision-making.\n- _\"High Priority\"_, sure, but _\"Low Priority\"_ is a joke; go label-less instead.\n- Labels and their associated colors should have a logical connection that is intuitive at-a-glance.\n- Labels should be lowercase. It's easier to type and less competitive with Label-names.\n- Prefixes matter. Labels get chaotic without them. The chosen are;\n  - `effort` = relative effort involved, fibonacci from `1` to `13`\n  - `priority` = designate immediacy; `now`, `2day` or `soon`\n  - `state` = describe decision; `approved`, `blocked`, `inactive` or `pending`\n  - `type` = describe type; `bug`, `chore`, `discussion`, `docs`, `feature`, `fix`, `security`, `testing`\n  - `work` = describe situation; `chaotic`, `complex`, `complicated` or `obvious`\n- The only labels without prefixes are; `breaking`, `good first issue`, `greenkeeper`, `help` and `semantic-release`\n\n#### Label Groups\n\n| Standard | Effort | Priority | State | Type | Work |\n| -------- | ------ | -------- | ----- | ---- | ---- |\n| Standard labels commonly used in most repositories. | Describes the relative effort to complete an issue or pull request. | Priority labels, but focused on describing the immediacy of attention required. | Describes the _decision_ state of the issue or pull request. | Describes the _type_ of issue or pull request. | Describes the kind of work involved in resolving the issue, using the [Cynefin framework](https://en.wikipedia.org/wiki/Cynefin_framework). |\n| ![Standard Labels](https://github.com/seantrane/github-label-presets/raw/main/docs/images/github-labels-standard.png) | ![Effort Labels](https://github.com/seantrane/github-label-presets/raw/main/docs/images/github-labels-effort.png) | ![Priority Labels](https://github.com/seantrane/github-label-presets/raw/main/docs/images/github-labels-priority.png) | ![State Labels](https://github.com/seantrane/github-label-presets/raw/main/docs/images/github-labels-state.png) | ![Type Labels](https://github.com/seantrane/github-label-presets/raw/main/docs/images/github-labels-type.png) | ![Work Labels](https://github.com/seantrane/github-label-presets/raw/main/docs/images/github-labels-work.png) |\n\n#### How It Works\n\n- [`github-label-sync`](https://github.com/Financial-Times/github-label-sync) is used to _synchronize your GitHub labels with as few destructive operations as possible - similar labels get renamed_.\n- The [label config](https://github.com/Financial-Times/github-label-sync#label-json) is loaded via path or URL, or more specifically; the config file supplied by [`@seantrane/github-label-presets`](https://github.com/seantrane/github-label-presets).\n- The `github-label-sync -l 'https://raw.githubusercontent.com/seantrane/github-label-presets/main/labels.json' myname/myrepo` command is run to have the label config applied to _your_ `profile/repo`.\n- The command can be run anywhere and anytime, but it's recommended during a CI plan. This will automatically keep your labels clean and synchronized with your chosen configuration - depending on how often your plan is run, of course.\n\n## Usage \u003ca id=\"usage\"\u003e\u003c/a\u003e\n\n**Required:** [Generate a GitHub Access Token](https://github.com/settings/tokens), provide it via `GITHUB_ACCESS_TOKEN` environment variable. _If you cannot provide token as an environment variable, you may also pass it via CLI._\n\n1. Install `npm install -g github-label-sync`\n2. Dry-run `github-label-sync -d -l 'https://raw.githubusercontent.com/seantrane/github-label-presets/main/labels.json' \u003cgithub_profile\u003e/\u003cgithub_repo\u003e`\n3. Run `github-label-sync -l 'https://raw.githubusercontent.com/seantrane/github-label-presets/main/labels.json' \u003cgithub_profile\u003e/\u003cgithub_repo\u003e`\n4. [Optional] Provide token via CLI param: `github-label-sync -a \u003cgithub_access_token\u003e -l ...`\n\n### CI/CD \u003ca id=\"cicd\"\u003e\u003c/a\u003e\n\nYou can use your CI/CD process to automate the periodic syncing of your repository labels. This can help persist order automatically.\n\n#### GitHub Actions \u003ca id=\"github-actions\"\u003e\u003c/a\u003e\n\n1. Create a `.github/workflows/labels.yml` file in your repository.\n2. Copy/paste the following code block in that file.\n3. [Optional] Change `branches` to match your repository preferences.\n\n```yaml\n---\nname: \"Maintain Repository Labels\"\n\non:\n  label:\n    types: [created, edited, deleted]\n  push:\n    branches: [master, main]\n    paths:\n      - .github/labels.json\n      - .github/labels.yml\n      - .github/workflows/labels.yml\n  workflow_dispatch:\n\npermissions:\n  issues: write\n  pull-requests: write\n  repository-projects: write\n\njobs:\n  labelsync:\n    # https://github.com/seantrane/github-label-presets\n    name: GitHub Label Presets, Sync\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v3\n      - uses: actions/setup-node@v3\n        with:\n          node-version: lts\n      - run: |\n          npm i -g github-label-sync\n          github-label-sync -l \"$LABEL_CONFIG_PATH\" \"$LABEL_REPOSITORY\"\n        env:\n          GITHUB_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n          LABEL_REPOSITORY: ${{ github.repository }}\n          # Use github-label-presets:\n          LABEL_CONFIG_PATH: https://raw.githubusercontent.com/seantrane/github-label-presets/main/labels.json\n          # Use your own labels:\n          # LABEL_CONFIG_PATH: .github/labels.json\n```\n\n### Config your own...\n\nYou can provide your own `labels.json` via the `[ -l, --lables ]` argument.\n\n## Contribute \u003ca id=\"contribute\"\u003e\u003c/a\u003e\n\nContributions are always appreciated. Read [CONTRIBUTING.md](https://github.com/seantrane/github-label-presets/blob/main/CONTRIBUTING.md) documentation to learn more.\n\n## Changelog \u003ca id=\"changelog\"\u003e\u003c/a\u003e\n\nRelease details are documented in the [CHANGELOG.md](https://github.com/seantrane/github-label-presets/blob/main/CHANGELOG.md) file, and on the [GitHub Releases page](https://github.com/seantrane/github-label-presets/releases).\n\n---\n\n## License \u003ca id=\"license\"\u003e\u003c/a\u003e\n\n[ISC License](https://github.com/seantrane/github-label-presets/blob/main/LICENSE)\n\nCopyright (c) 2018 [Sean Trane Sciarrone](https://github.com/seantrane)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseantrane%2Fgithub-label-presets","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseantrane%2Fgithub-label-presets","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseantrane%2Fgithub-label-presets/lists"}