{"id":23171146,"url":"https://github.com/octue/generate-pull-request-description","last_synced_at":"2025-08-18T07:32:00.978Z","repository":{"id":65155618,"uuid":"544950818","full_name":"octue/generate-pull-request-description","owner":"octue","description":"A GitHub action that updates PR descriptions from Conventional Commits","archived":false,"fork":false,"pushed_at":"2024-12-03T19:54:59.000Z","size":44,"stargazers_count":13,"open_issues_count":4,"forks_count":9,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-11T08:59:05.409Z","etag":null,"topics":["commits","conventional","github-actions"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/octue.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-10-03T14:19:33.000Z","updated_at":"2025-07-01T17:12:41.000Z","dependencies_parsed_at":"2023-01-05T05:03:08.031Z","dependency_job_id":null,"html_url":"https://github.com/octue/generate-pull-request-description","commit_stats":{"total_commits":32,"total_committers":1,"mean_commits":32.0,"dds":0.0,"last_synced_commit":"b5257de511dfdd6e1de7adee90b62b6279ce40a0"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/octue/generate-pull-request-description","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octue%2Fgenerate-pull-request-description","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octue%2Fgenerate-pull-request-description/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octue%2Fgenerate-pull-request-description/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octue%2Fgenerate-pull-request-description/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/octue","download_url":"https://codeload.github.com/octue/generate-pull-request-description/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octue%2Fgenerate-pull-request-description/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270961660,"owners_count":24675914,"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-08-18T02:00:08.743Z","response_time":89,"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":["commits","conventional","github-actions"],"created_at":"2024-12-18T04:16:27.421Z","updated_at":"2025-08-18T07:32:00.599Z","avatar_url":"https://github.com/octue.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Release](https://github.com/octue/generate-pull-request-description/actions/workflows/release.yml/badge.svg)](https://github.com/octue/generate-pull-request-description/actions/workflows/release.yml)\n[![codecov](https://codecov.io/gh/octue/generate-pull-request-description/branch/main/graph/badge.svg?token=J3NFSPZJHW)](https://codecov.io/gh/octue/generate-pull-request-description)\n[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit\u0026logoColor=white)](https://github.com/pre-commit/pre-commit)\n[![black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)\n\n# Pull request description generator\nA GitHub action that generates pull request descriptions from\n[Conventional Commit messages](https://www.conventionalcommits.org/en/v1.0.0/) on a branch. These descriptions can be\nused with other GitHub actions to automate release notes.\n\n**Features summary**\n- Automatic breaking change highlighting and upgrade instructions\n- Automatic categorisation of all commit messages in the pull request branch\n- Choosing which part of the description to generate, enabling descriptions containing a generated section alongside\n  static/user-written sections\n- Easy skipping of description updating when you're ready to fine-tune and edit the description\n\n## Usage\nAdd the action to pull request workflows alongside the\n[`riskledger/update-pr-description`](https://github.com/riskledger/update-pr-description) action to dynamically update\nthe description each time you push:\n\n```yaml\nsteps:\n- uses: actions/checkout@v3\n\n- uses: octue/generate-pull-request-description@1.0.0.beta-2\n  id: pr-description\n  with:\n    pull_request_url: ${{ github.event.pull_request.url }}\n    api_token: ${{ secrets.GITHUB_TOKEN }}\n\n- name: Update pull request body\n  uses: riskledger/update-pr-description@v2\n  with:\n    body: ${{ steps.pr-description.outputs.pull_request_description }}\n    token: ${{ secrets.GITHUB_TOKEN }}\n```\n\n## Features\n\n### Breaking change highlighting\nIf breaking changes are indicated in any of the commit messages' bodies via `BREAKING CHANGE:` or `BREAKING-CHANGE:`,\nthese commits are marked and a warning is added to the top of the release notes. Any other text in these sections is\ntreated as upgrade instructions and added to the end of the pull request description.\n\n### Choosing which section of the description to update\nThe only part of the pull request description that is updated by the action is the section bounded by:\n- `\u003c!--- START AUTOGENERATED NOTES ---\u003e`\n- `\u003c!--- END AUTOGENERATED NOTES ---\u003e`\n\nThis section will always be replaced with a summary of all the commit messages in the pull request so far. The markers\n(invisible in rendered markdown) are added in automatically when the action first runs, but you can move them manually.\nAny text you add outside of these will remain untouched so you can add, for example, your own static summary of the\npull request while having a dynamic summary of the commits.\n\n### Skipping description updates\nUpdating the description is skipped if the `\u003c!--- SKIP AUTOGENERATED NOTES ---\u003e` marker is present anywhere in the pull\nrequest description. This allows commits to be documented in the description until you're ready to fine-tune or\ncherry-pick commit descriptions when your pull request is ready for review.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foctue%2Fgenerate-pull-request-description","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foctue%2Fgenerate-pull-request-description","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foctue%2Fgenerate-pull-request-description/lists"}