Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .changelog/adopt-fast-forward-changelog.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
category: changed
type: patch
---

Automate changelog checks, version pull requests and approved releases with Fast Forward Changelog, with the project skill available to contributors.
6 changes: 6 additions & 0 deletions .changelog/manage-changelog-skill-through-composer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
category: changed
type: patch
---

Restore the Changelog skill from its GitHub source during Composer installation instead of committing a generated copy and separate installation receipt.
4 changes: 4 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
* text=auto
/.agents/ export-ignore
/.changelog/ export-ignore
/CONTRIBUTING.md export-ignore
/.github/ export-ignore
/tests/ export-ignore
/.docheader export-ignore
Expand All @@ -13,3 +16,4 @@
/phpunit.xml export-ignore
/docs/ export-ignore
/README*.md export-ignore
/skills.json export-ignore
43 changes: 43 additions & 0 deletions .github/workflows/changelog.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Changelog

on:
pull_request:
branches:
- main
types:
- opened
- synchronize
- reopened
- ready_for_review
- labeled
- unlabeled
pull_request_target:
branches:
- main
types:
- opened
- synchronize
- reopened
- ready_for_review
- labeled
- unlabeled
- closed
push:
branches:
- main
workflow_dispatch: null

permissions: {}

jobs:
changelog:
permissions:
contents: write
pull-requests: write
issues: read
statuses: write
uses: php-fast-forward/changelog/.github/workflows/changelog.yml@v0
Comment thread
coisa marked this conversation as resolved.
with:
source: github
version-pr-title: 'chore(release): fast-forward/http-message v{current_version} → v{next_version}'
base-branch: main
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ tmp/
vendor/
composer.lock
*.cache
TO-DO.md
TO-DO.md
/.agents/
32 changes: 32 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [1.4.0] - 2026-03-29

**Full Changelog**: https://github.com/php-fast-forward/http-message/compare/v1.3.0...v1.4.0

## [1.3.0] - 2025-11-17

Release notes are unavailable for this version.

## [1.2.0] - 2025-06-30

**Full Changelog**: https://github.com/php-fast-forward/http-message/compare/v1.1.0...v1.2.0

## [1.1.0] - 2025-06-30

Release notes are unavailable for this version.

## [1.0.0] - 2025-06-30

Release notes are unavailable for this version.

[1.4.0]: https://github.com/php-fast-forward/http-message/compare/v1.3.0...v1.4.0
[1.3.0]: https://github.com/php-fast-forward/http-message/compare/v1.2.0...v1.3.0
[1.2.0]: https://github.com/php-fast-forward/http-message/compare/v1.1.0...v1.2.0
[1.1.0]: https://github.com/php-fast-forward/http-message/compare/v1.0.0...v1.1.0
[1.0.0]: https://github.com/php-fast-forward/http-message/releases/tag/v1.0.0
49 changes: 49 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Contributing

Add one independent `.changelog/*.md` fragment for each observable change.
Use [Fast Forward Changelog](https://github.com/php-fast-forward/changelog)
through CPX with PHP 8.5 or newer; the package's PHP requirements stay unchanged.

```sh
cpx --skip-local fast-forward/changelog help add
cpx --skip-local fast-forward/changelog add "Describe the change." --category=fixed --no-interaction
cpx --skip-local fast-forward/changelog check --no-interaction
```

Choose the category and semantic impact that describe the change. Commit the
fragment with the contribution; leave published history intact and do not add
an `Unreleased` section to `CHANGELOG.md`. After committing, validate the PR delta
with `check --since=origin/main --source=github --no-interaction` using the same CLI.

Run `composer install` to fetch the project skill into
`.agents/skills/fast-forward-changelog`. The committed `skills.json` selects its
GitHub source through `llm/skills`; generated `.agents` files stay out of Git.
This does not install Changelog's runtime dependencies into the library.
Inspect the copy with `composer skills:show` and refresh compatible versions with
`composer skills:update --from=github`. Keep the skill under this manager's
ownership; do not run the legacy Changelog skill installer on it.
Its PHP integration example currently shows a CLI check outside the disposable
target directory. Run that check with `--cwd=/absolute/project` to validate the
same project. The bundled payload remains intact so native integrity checks and
future updates remain reliable; the example correction belongs upstream.

The GitHub workflow checks fragments, maintains PR feedback and prepares a
version PR from stable ancestral tags and committed history. Review that PR's
version, history and fragment deletions before merging it. It never merges itself;
its approved merge publishes the version tag and GitHub Release. Installing the
Comment thread
coisa marked this conversation as resolved.
workflow or merging an ordinary contribution does not publish a release.

With the default `GITHUB_TOKEN`, a generated version PR's `pull_request` runs
can require approval. Select **Approve workflows to run**, then inspect the
results before merging. A GitHub App installation token is optional when CI
must start without that approval; follow the selected release's
[App configuration guide](https://github.com/php-fast-forward/changelog/blob/v0/docs/github-app.md).

There was no central changelog before this integration. Its historical backfill
preserves existing GitHub Release text and links verified ancestral versions in
Keep a Changelog format. Releases `v1.4.0` and `v1.2.0` contain only comparison
links; `v1.3.0`, `v1.1.0` and `v1.0.0` have empty bodies. These gaps cannot supply
change descriptions or origin PRs, so do not invent them. New fragments resolve
their origin PR during consolidation when GitHub can prove the association;
leave optional PR metadata absent until that evidence exists. The GitHub Release
body for each new version uses the same consolidated notes as `CHANGELOG.md`.
6 changes: 4 additions & 2 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@
"psr/http-message": "^2.0"
},
"require-dev": {
"fast-forward/dev-tools": "dev-main"
"fast-forward/dev-tools": "dev-main",
"llm/skills": "^1.15"
},
"minimum-stability": "stable",
"autoload": {
Expand All @@ -39,7 +40,8 @@
"fast-forward/dev-tools": true,
"phpdocumentor/shim": true,
"phpro/grumphp": true,
"pyrech/composer-changelogs": true
"pyrech/composer-changelogs": true,
"llm/skills": true
},
"platform": {
"php": "8.3.0"
Expand Down
21 changes: 21 additions & 0 deletions skills.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"$schema": "https://raw.githubusercontent.com/roxblnfk/skills/master/resources/skills.schema.json",
"target": ".agents/skills",
"aliases": [],
"discovery": false,
"auto-sync": true,
"vendor-sources": false,
"dependencies": {
"composer": false
},
"sources": [
{
"from": "github",
"package": "php-fast-forward/changelog",
"ref": "^0.3.0",
"skills": [
"fast-forward-changelog"
]
}
]
}
Loading