diff --git a/.changelog/adopt-fast-forward-changelog.md b/.changelog/adopt-fast-forward-changelog.md new file mode 100644 index 0000000..68b2609 --- /dev/null +++ b/.changelog/adopt-fast-forward-changelog.md @@ -0,0 +1,6 @@ +--- +category: changed +type: patch +--- + +Automate changelog checks, PR feedback and reviewed releases with Fast Forward Changelog, including the project agent skill. diff --git a/.changelog/composer-dependency-skills.md b/.changelog/composer-dependency-skills.md new file mode 100644 index 0000000..5e53781 --- /dev/null +++ b/.changelog/composer-dependency-skills.md @@ -0,0 +1,6 @@ +--- +category: changed +type: patch +--- + +Synchronize the Config and Container consumer skills from the installed Composer dependencies through an explicit trusted-package list instead of independent GitHub sources. diff --git a/.changelog/composer-managed-changelog-skill.md b/.changelog/composer-managed-changelog-skill.md new file mode 100644 index 0000000..53fe1f5 --- /dev/null +++ b/.changelog/composer-managed-changelog-skill.md @@ -0,0 +1,6 @@ +--- +category: changed +type: patch +--- + +Restore the Changelog contributor skill through the development-only Composer skill manager and its reviewed GitHub source instead of versioning generated skill copies. diff --git a/.changelog/container-1-10.md b/.changelog/container-1-10.md new file mode 100644 index 0000000..d51616f --- /dev/null +++ b/.changelog/container-1-10.md @@ -0,0 +1,6 @@ +--- +category: changed +type: patch +--- + +Require fast-forward/container ^1.10 so installed Composer dependencies supply the supported Container consumer skill alongside the runtime library. diff --git a/.changelog/container-consumer-skill.md b/.changelog/container-consumer-skill.md new file mode 100644 index 0000000..04fe24d --- /dev/null +++ b/.changelog/container-consumer-skill.md @@ -0,0 +1,6 @@ +--- +category: added +type: patch +--- + +Restores the Fast Forward Container consumer skill through the existing development-only Composer skill manager, alongside the configured contributor skills, without changing runtime dependencies. diff --git a/.gitattributes b/.gitattributes index 0a74ce0..d787e0d 100755 --- a/.gitattributes +++ b/.gitattributes @@ -13,4 +13,8 @@ /phpunit.xml export-ignore /docs/ export-ignore /README*.md export-ignore +/.agents/ export-ignore +/.changelog/ export-ignore +/CONTRIBUTING.md export-ignore /composer-dependency-analyser.php export-ignore +/skills.json export-ignore diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml new file mode 100644 index 0000000..b3fd82f --- /dev/null +++ b/.github/workflows/changelog.yml @@ -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 + with: + source: github + version-pr-title: 'chore(release): fast-forward/http v{current_version} → v{next_version}' + base-branch: main diff --git a/.gitignore b/.gitignore index e2856dd..774e249 100755 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ tmp/ vendor/ composer.lock *.cache +/.agents/ diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..af591e0 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,27 @@ +# 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.1.0] - 2026-03-29 + +**Full Changelog**: https://github.com/php-fast-forward/http/compare/v1.0.1...v1.1.0 + +## [1.0.1] - 2025-08-01 + +Release notes are unavailable for this version. + +## [1.0.0] - 2025-08-01 + +Release notes are unavailable for this version. + +## [0.1.0] - 2025-08-01 + +Release notes are unavailable for this version. + +[1.1.0]: https://github.com/php-fast-forward/http/compare/v1.0.1...v1.1.0 +[1.0.1]: https://github.com/php-fast-forward/http/compare/v1.0.0...v1.0.1 +[1.0.0]: https://github.com/php-fast-forward/http/compare/v0.1.0...v1.0.0 +[0.1.0]: https://github.com/php-fast-forward/http/releases/tag/v0.1.0 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..306146a --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,49 @@ +# Contributing + +Include one unique `.changelog/*.md` fragment for each observable change. Use +PHP 8.5+ and [CPX](https://github.com/laravel/cpx) to run the isolated tooling; +the library itself does not gain a runtime dependency: + +```sh +cpx --skip-local fast-forward/changelog add "Describe the change." --category=fixed --type=patch --no-interaction +cpx --skip-local fast-forward/changelog check --no-interaction +# Compare committed changes with the contribution base: +cpx --skip-local fast-forward/changelog check --since=origin/main --no-interaction +``` + +Select the category and semantic impact that describe the change. Keep published +history intact; pending notes belong in fragments rather than an `Unreleased` +section. + +Run `composer install` to restore the project skill into +`.agents/skills/fast-forward-changelog` through the development-only `llm/skills` +plugin and the reviewed GitHub source in `skills.json`. Generated skill files +are ignored by Git. Use `composer skills:show` to inspect the source and +`composer skills:update --from=github` for an explicit refresh within its +configured version range. Review `skills.json` before changing that range. + +The [workflow](.github/workflows/changelog.yml) validates PR notes, +maintains PR feedback and prepares one version PR on `changelog/version`. +Review that PR's version, history and consumed fragments before merging. +After that approved version PR is merged into `main`, automatic publication +creates its version tag and GitHub Release. The workflow never merges PRs. + +`CHANGELOG.md` includes all four published stable versions, backfilled from +GitHub Releases. The workflow preserves that evidence with `source: github`. +Empty release bodies +still need editorial review; no PR attribution is inferred from prose alone. + +## Composer dependency skills + +The development-only manager restores `fast-forward-container` and +`fast-forward-config` from the installed Composer packages, including Config as +a transitive dependency. `skills.json` explicitly trusts only those two Composer +donors; dependency trust does not extend to other installed packages. No separate +GitHub source or version pin is used for either library. + +Inspect donors with `composer skills:show` and refresh their payloads with +`composer skills:update --from=composer`. The existing GitHub source continues +to manage the Changelog contributor skill independently. Generated copies remain +ignored. Synchronization does not upgrade runtime dependencies; an installed +version without a bundled skill contributes no skill. Check installed versions +and the bundled skill's supported contract before using its instructions. diff --git a/README.md b/README.md index bc99f9e..faf6f47 100644 --- a/README.md +++ b/README.md @@ -92,3 +92,7 @@ See the documentation sources in [`docs/`](docs/) for: ## License Fast Forward HTTP is licensed under the [MIT license](LICENSE). + +## Contributing + +See [CONTRIBUTING.md](CONTRIBUTING.md) for changelog fragments, local checks and the release-review flow. diff --git a/composer.json b/composer.json index 3e5a8ad..f200973 100644 --- a/composer.json +++ b/composer.json @@ -16,13 +16,14 @@ }, "require": { "php": "^8.3", - "fast-forward/container": "^1.5", + "fast-forward/container": "^1.10", "fast-forward/http-client": "^1.0", "fast-forward/http-factory": "^1.1", "middlewares/utils": "^4.0" }, "require-dev": { - "fast-forward/dev-tools": "dev-main" + "fast-forward/dev-tools": "dev-main", + "llm/skills": "^1.15" }, "minimum-stability": "stable", "autoload": { @@ -41,7 +42,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" diff --git a/skills.json b/skills.json new file mode 100644 index 0000000..87f8ea0 --- /dev/null +++ b/skills.json @@ -0,0 +1,27 @@ +{ + "$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": { + "trusted": [ + "fast-forward/config", + "fast-forward/container" + ], + "trusted-replace": true + } + }, + "sources": [ + { + "from": "github", + "package": "php-fast-forward/changelog", + "ref": "^0.3.0", + "skills": [ + "fast-forward-changelog" + ] + } + ] +}