PHPackages                             chancegarcia/release-scribe - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. chancegarcia/release-scribe

ActiveProject[Utility &amp; Helpers](/categories/utility)

chancegarcia/release-scribe
===========================

ReleaseScribe: "What's new", changelog, release notes, and SemVer recommendation tool

v2.0.5(3w ago)01[1 PRs](https://github.com/chancegarcia/release-scribe/pulls)Apache-2.0PHPPHP &gt;=8.4CI passing

Since Feb 25Pushed 1w ago1 watchersCompare

[ Source](https://github.com/chancegarcia/release-scribe)[ Packagist](https://packagist.org/packages/chancegarcia/release-scribe)[ Docs](https://github.com/chancegarcia/release-scribe)[ RSS](/packages/chancegarcia-release-scribe/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (11)Versions (14)Used By (0)

ReleaseScribe
=============

[](#releasescribe)

[![CI](https://github.com/chancegarcia/release-scribe/actions/workflows/ci.yml/badge.svg)](https://github.com/chancegarcia/release-scribe/actions/workflows/ci.yml/badge.svg)[![Latest Stable Version](https://camo.githubusercontent.com/b041d3e37b61c7c317523f4e0094c09c012c3366464e0844de4d67990fa63b2e/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6368616e63656761726369612f72656c656173652d7363726962653f6c6162656c3d737461626c65)](https://packagist.org/packages/chancegarcia/release-scribe)[![GitHub tag (latest SemVer)](https://camo.githubusercontent.com/567f69572387773c142ef46d3f4cad7492b38ab99cad40471ee19b8239a4be85/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f7461672f6368616e63656761726369612f72656c656173652d736372696265)](https://camo.githubusercontent.com/567f69572387773c142ef46d3f4cad7492b38ab99cad40471ee19b8239a4be85/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f7461672f6368616e63656761726369612f72656c656173652d736372696265)[![Total Downloads](https://camo.githubusercontent.com/d65a22d042b7e2dda716f5cc8552448fe79c99bb638ed438a848f690e4319bc5/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6368616e63656761726369612f72656c656173652d736372696265)](https://packagist.org/packages/chancegarcia/release-scribe)[![Latest Unstable Version](https://camo.githubusercontent.com/9a02d824a23dadb6e898feed0d4a3398721d350058b078ad5e4e19d3a719c4bc/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6368616e63656761726369612f72656c656173652d7363726962653f6c6162656c3d756e737461626c6526696e636c7564655f70726572656c6561736573)](https://packagist.org/packages/chancegarcia/release-scribe)[![License](https://camo.githubusercontent.com/f2a8b8850d90cb89890adaf161a3acef9a032ff1cadea8a494b27b3ab8c796ff/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6368616e63656761726369612f72656c656173652d736372696265)](https://packagist.org/packages/chancegarcia/release-scribe)[![PHP](https://camo.githubusercontent.com/f62c1f11a4670c147ff8184677ef9019a86616aaecac58c2625116388539b567/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f6368616e63656761726369612f72656c656173652d736372696265)](https://php.net)

---

ReleaseScribe is a standalone tool and library for creating release communication ("What's new?", changelogs, release notes) and providing deterministic SemVer release recommendations.

ReleaseScribe owns the generation of release communication and authoritative release recommendation based on commit history. Guided release workflow orchestration is out of scope for ReleaseScribe.

Requirements
------------

[](#requirements)

- PHP &gt;= 8.4
- Git

Installation
------------

[](#installation)

```
composer require --dev chancegarcia/release-scribe
```

Usage
-----

[](#usage)

The `release-scribe` binary provides four primary commands.

### `init`

[](#init)

Initializes a changelog for your project.

- **With existing tags**: Generates a complete history changelog from all previous tags.
- **Without tags**: Generates an initial release header. Defaults to `v1.0.0`.

**Options:**

- `--initial-version=`: (or `-iv`) Specify the initial version header if no tags exist (default: `v1.0.0`).
- `--output-dir=`: Directory where the changelog file should be written.
- `--filename=`: Name of the changelog file.

**Example:**

```
vendor/bin/release-scribe init
```

### `whats-new`

[](#whats-new)

Generates release notes for the **current release** (the "What's new?" section) by default. It replaces or creates the changelog file with these changes.

**Options:**

- `--new-tag=`: Adds a section for an upcoming release and uses the provided value as that section heading.
- `--header=`: Main file header in output.

**Example:**

```
vendor/bin/release-scribe whats-new --new-tag=v2.0.0
```

### `changelog`

[](#changelog)

Generates the **full changelog history** from git tags.

**Example:**

```
vendor/bin/release-scribe changelog
```

### `recommend`

[](#recommend)

Recommends a SemVer release level (`major`, `minor`, or `patch`) based on the commits since the last tag.

Note

This command is **analysis-only**. It is deterministic and authoritative based on commit parsing. It does **not** create tags or perform a release.

**How it works:**

- **Major**: Recommended if any breaking changes are detected.
- **Minor**: Recommended if there are feature (`feat`) commits and no breaking changes.
- **Patch**: Recommended if there are fix (`fix`), performance (`perf`), etc., commits.
- **None**: Recommended if only non-release-impacting commits are found.

**Example:**

```
vendor/bin/release-scribe recommend
```

Configuration (optional)
------------------------

[](#configuration-optional)

### Environment variables

[](#environment-variables)

ReleaseScribe supports `.env` files.

- `PROJECT_ROOT`: the directory where the repository resides.
- `PROJECT_NAME`: The main header value.
- `CHANGELOG_USE_CONVENTIONAL_COMMITS`: Whether to use Conventional Commits parsing (default: `true`).
- `OUTPUT_FILENAME`: name of the Markdown file to write out (default: `changelog.md`).
- `OUTPUT_DIRECTORY`: path to where the Markdown file should be written.

### PHP Config file

[](#php-config-file)

Alternatively, use `config/release_scribe.php`.

Example:

```
return [
    'project_name' => "My Project",
    'filename' => "CHANGELOG.md",
];
```

Future Roadmap: Phase 5 AI (post-v2)
------------------------------------

[](#future-roadmap-phase-5-ai-post-v2)

AI-assisted release communication (e.g., summarizing commits into human-readable prose) is planned for **Phase 5**, after the v2.0.0 release. ReleaseScribe's deterministic parsing and recommendation remain the authoritative foundation for these future AI features. Phase 5 is not part of the v2 release.

Migration from GitToolkit
-------------------------

[](#migration-from-gittoolkit)

ReleaseScribe is the successor to `chancegarcia/git-toolkit`.

- Package: `chancegarcia/git-toolkit` → `chancegarcia/release-scribe`
- Namespace: `Chance\GitToolkit` → `Chance\ReleaseScribe`
- Binary: `toolkit` → `release-scribe`
- Commands:
    - `toolkit:init` → `init`
    - `toolkit:changelog` (default) → `whats-new`
    - `toolkit:changelog --mode=full` → `changelog`
    - `toolkit:release:recommend` → `recommend`
- Config: `config/chancegarcia_git_toolkit.php` → `config/release_scribe.php`

No backward compatibility wrappers or aliases are provided for the old identity.

License
-------

[](#license)

ReleaseScribe v2.0.0 and later is licensed under the **Apache License, Version 2.0**. See the [LICENSE](LICENSE) file for the full text.

> **Note:** v1.x releases were distributed under the MIT License. The license changed as part of the v2.0.0 major release and rebrand from `git-toolkit`.

Development
-----------

[](#development)

For our planned future direction, see [docs/roadmap.md](docs/roadmap.md).

### Coding Standards

[](#coding-standards)

This project follows [PSR-12](https://www.php-fig.org/psr/psr-12/) and workspace-default [PHP Coding Standards](../docs/ai-guidelines/php-coding-standards.md).

Additionally, we use `slevomat/coding-standard` to enforce:

- Removal of unused `use` statements.
- Cleanup of unnecessary fully qualified class names.
- **Check standards:** `composer cs:check`
- **Fix standards:** `composer cs:fix`
- **Run all QA:** `composer qa` (includes linting, coding standards, static analysis, and tests)

### Other Composer Scripts

[](#other-composer-scripts)

- `composer test`: Run PHPUnit tests.
- `composer lint`: Run parallel-lint.
- `composer stan`: Run PHPStan static analysis.

###  Health Score

50

—

FairBetter than 95% of packages

Maintenance97

Actively maintained with recent releases

Popularity2

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity78

Established project with proven stability

 Bus Factor1

Top contributor holds 98.7% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~191 days

Recently: every ~0 days

Total

11

Last Release

23d ago

Major Versions

v1.1.2 → v2.0.02026-05-17

PHP version history (2 changes)1.0.0PHP &gt;=7.3

v2.0.0PHP &gt;=8.4

### Community

Maintainers

![](https://www.gravatar.com/avatar/6da225b703a123deac986a29c01b0dbda6d27d036c17ae04cbcffbe0fc2a3294?d=identicon)[chance](/maintainers/chance)

---

Top Contributors

[![chancegarcia](https://avatars.githubusercontent.com/u/348263?v=4)](https://github.com/chancegarcia "chancegarcia (147 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (2 commits)")

---

Tags

semverchangelogrelease noteswhats-newrelease recommendation

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP\_CodeSniffer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/chancegarcia-release-scribe/health.svg)

```
[![Health](https://phpackages.com/badges/chancegarcia-release-scribe/health.svg)](https://phpackages.com/packages/chancegarcia-release-scribe)
```

###  Alternatives

[friendsoftypo3/content-blocks

TYPO3 CMS Content Blocks - Content Types API | Define reusable components via YAML

101466.4k44](/packages/friendsoftypo3-content-blocks)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
