Commit 8f8b166
authored
chore: release v2.1.0 (#50)
## Summary
Promotes the `[Unreleased]` CHANGELOG section to `[2.1.0] - 2026-05-12`
and opens a new empty `[Unreleased]` block.
Composer plugins read their version from the git tag, so no
`composer.json` bump is needed.
## Changes shipped in v2.1.0
Full detail in [CHANGELOG.md](./CHANGELOG.md). Headlines:
- **Direct skill installation** from Git/local paths without Composer
packages — declare under `extra.ai-agent-skills`, pin in
`composer.skills.lock`, materialize under
`vendor/agent-skills/installed/`
- **`composer skills` command tree**: `skills:add`, `skills:install`,
`skills:update`, `skills:remove`, `skills:list`, `skills:outdated`
- **Semver constraints on git tag refs** (`owner/repo:^1.2`) via
`composer/semver` + `git ls-remote --tags`
- **`composer outdated` integration** for stale direct skills (text +
JSON modes); new `composer skills:outdated --strict` for CI
- **Direct-skills security hardening**: reject symlinks when
copying/hashing, validate `composer.skills.lock` commits as 40-char hex,
validate clone/tag refs, strict project-root prefix
- **`DiscoveredSkills`** helper, **`FilesystemUtil`** helper
## SemVer rationale
**Minor**, not major. Everything in `[Unreleased]` was `Added` or
`Fixed`. No `Breaking changes` section. The new features sit on a
separate config key (`extra.ai-agent-skills`) from the existing trust
config (`extra.ai-agent-skill`); existing package-based users see no
behavior change.
## Test plan
- [x] Pre-release validation (CHANGELOG content, working tree, signing,
semver gate) — passed
- [x] Release infrastructure landed in
[#49](#49)
- [ ] PR CI passes
- [ ] After merge: tag `v2.1.0` (signed) from `main` HEAD, push tag,
watch the release workflow create the GitHub Release
## Post-merge tagging
```bash
git checkout main && git pull
git tag -s v2.1.0 -m "v2.1.0"
git push origin v2.1.0
```1 file changed
Lines changed: 10 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
12 | 20 | | |
13 | 21 | | |
14 | 22 | | |
| |||
170 | 178 | | |
171 | 179 | | |
172 | 180 | | |
173 | | - | |
| 181 | + | |
| 182 | + | |
174 | 183 | | |
175 | 184 | | |
176 | 185 | | |
| |||
0 commit comments