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
9 changes: 9 additions & 0 deletions .github/workflows/squad-preview.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,15 @@ jobs:
with:
node-version: 22

- name: Validate version consistency
run: |
VERSION=$(node -e "console.log(require('./package.json').version)")
if ! grep -q "## \[$VERSION\]" CHANGELOG.md 2>/dev/null; then
echo "::error::Version $VERSION not found in CHANGELOG.md — update CHANGELOG.md before release"
exit 1
fi
echo "✅ Version $VERSION validated in CHANGELOG.md"

- name: Run tests
run: node --test test/*.test.js

Expand Down
9 changes: 9 additions & 0 deletions .github/workflows/squad-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,15 @@ jobs:
- name: Run tests
run: node --test test/*.test.js

- name: Validate version consistency
run: |
VERSION=$(node -e "console.log(require('./package.json').version)")
if ! grep -q "## \[$VERSION\]" CHANGELOG.md 2>/dev/null; then
echo "::error::Version $VERSION not found in CHANGELOG.md — update CHANGELOG.md before release"
exit 1
fi
echo "✅ Version $VERSION validated in CHANGELOG.md"

- name: Read version from package.json
id: version
run: |
Expand Down
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,17 @@
# Changelog

## [0.5.0] — Unreleased

### Added

- **`.ai-team/` renamed to `.squad/`** — Full directory rename with backward-compatible migration utilities for existing installations
- **Decision lifecycle management** — Archival and versioning support for design decisions across the agent lifecycle
- **Identity layer** — New `wisdom.md` and `now.md` files for agent context and temporal awareness
- **ISO 8601 UTC timestamps** — Standardized timestamp format throughout (decision dates, agent updates, metadata)
- **Cold-path extraction** — Refactored `squad.agent.md` to separate active decision paths from historical logic
- **Skills export/import verification** — Enhanced import/export validation and documentation for agent skill extension
- **Email scrubbing** — Automatic email removal during migration to prevent accidental PII commits

## [0.4.2] — 2026-02-20

### Fixed
Expand Down
123 changes: 123 additions & 0 deletions docs/release-checklist.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
# Release Checklist

This document outlines the steps for preparing and shipping Squad releases. Follow the appropriate checklist based on the release type.

## Pre-Release Steps (All Releases)

- [ ] Ensure all PRs targeting the release branch are merged and reviewed
- [ ] Pull latest `dev` branch: `git pull origin dev`
- [ ] Run full test suite: `npm test`
- [ ] All tests pass (53+ tests for current version)
- [ ] Review CHANGELOG.md for accuracy and completeness
- [ ] Verify package.json version matches intended release version

## Patch Release (e.g., 0.4.2 → 0.4.3)

**Purpose:** Bug fixes and patches with no new features or breaking changes.

### Steps

1. Create patch branch: `git checkout -b squad/patch-{version}`
2. Update `package.json` version: increment patch number (e.g., 0.4.2 → 0.4.3)
3. Add `CHANGELOG.md` entry with date:
```markdown
## [0.4.3] — YYYY-MM-DD

### Fixed
- Description of fix
```
4. Commit: `git commit -m "chore: v0.4.3 patch release"`
5. Push and create PR: `git push origin squad/patch-{version}`
6. Get review and merge to `dev`
7. Merge `dev` → `main`
8. CI automatically creates GitHub release

## Minor Release (e.g., 0.4.2 → 0.5.0)

**Purpose:** New features with backward compatibility. Commonly used for feature cadence releases.

### Steps

1. Create release branch: `git checkout -b squad/{issue}-release-hardening`
2. Update `package.json` version: increment minor number (e.g., 0.4.2 → 0.5.0)
3. Update all affected workflow files and templates:
- `.github/workflows/squad-preview.yml`
- `.github/workflows/squad-release.yml`
- `templates/workflows/squad-preview.yml`
- `templates/workflows/squad-release.yml`
4. Add `CHANGELOG.md` entry with new features:
```markdown
## [0.5.0] — Unreleased

### Added
- Feature description
- Another feature
```
5. Test all changes locally and in CI
6. Commit: `git commit -m "chore: v0.5.0 release hardening — version bump, CI validation, docs"`
7. Push and create PR: `git push origin squad/{issue}-release-hardening`
8. Get review and merge to `dev`
9. Merge `dev` → `main`
10. CI automatically creates GitHub release

## Major Release (e.g., 0.4.2 → 1.0.0)

**Purpose:** Breaking changes, significant refactors, or major feature releases.

### Steps

1. Create release branch: `git checkout -b squad/major-{version}-release`
2. Update `package.json` version: increment major number (e.g., 0.4.2 → 1.0.0)
3. Add migration guide if needed (breaking changes documentation)
4. Update all affected files (same as minor release)
5. Update `CHANGELOG.md` with detailed breaking changes section:
```markdown
## [1.0.0] — Unreleased

### Breaking Changes
- Clear description of breaking change
- Migration guidance

### Added
- New feature
```
6. Comprehensive testing and validation
7. Commit and push with clear messaging
8. Create PR with detailed description of breaking changes
9. Get thorough review and merge to `dev`
10. Merge `dev` → `main`
11. CI automatically creates GitHub release

## CI Validation Steps

The following checks run automatically in CI (no manual action required):

### In `squad-preview.yml` (Preview Branch)

- Runs full test suite
- Validates no `.ai-team/` or `.squad/` files are tracked
- Validates package.json contains a version
- **NEW:** Validates version consistency with CHANGELOG.md

### In `squad-release.yml` (Main Branch)

- Runs full test suite
- Reads version from package.json
- Checks if tag already exists (prevents duplicate releases)
- **NEW:** Validates version consistency with CHANGELOG.md
- Creates git tag (e.g., `v0.5.0`)
- Creates GitHub Release with auto-generated notes
- Verifies release was created successfully

## Key Requirements

- **CHANGELOG.md must have entry** for every release version (validated in CI)
- **Version consistency** between `package.json` and CHANGELOG.md is enforced
- **All tests must pass** before release can proceed
- **No `.ai-team/` or `.squad/` files** on preview or main branches

## References

- [GitHub Actions Workflows](.github/workflows/)
- [Package Configuration](package.json)
- [Changelog](CHANGELOG.md)
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bradygaster/create-squad",
"version": "0.4.2",
"version": "0.5.0",
"description": "Add an AI agent team to any project",
"bin": {
"create-squad": "./index.js"
Expand Down
9 changes: 9 additions & 0 deletions templates/workflows/squad-preview.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,15 @@ jobs:
with:
node-version: 22

- name: Validate version consistency
run: |
VERSION=$(node -e "console.log(require('./package.json').version)")
if ! grep -q "## \[$VERSION\]" CHANGELOG.md 2>/dev/null; then
echo "::error::Version $VERSION not found in CHANGELOG.md — update CHANGELOG.md before release"
exit 1
fi
echo "✅ Version $VERSION validated in CHANGELOG.md"

- name: Run tests
run: node --test test/*.test.js

Expand Down
9 changes: 9 additions & 0 deletions templates/workflows/squad-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,15 @@ jobs:
- name: Run tests
run: node --test test/*.test.js

- name: Validate version consistency
run: |
VERSION=$(node -e "console.log(require('./package.json').version)")
if ! grep -q "## \[$VERSION\]" CHANGELOG.md 2>/dev/null; then
echo "::error::Version $VERSION not found in CHANGELOG.md — update CHANGELOG.md before release"
exit 1
fi
echo "✅ Version $VERSION validated in CHANGELOG.md"

- name: Read version from package.json
id: version
run: |
Expand Down
Loading