Commit AgentFlow framework changes with proper CHANGELOG updates and version bumping. Use when editing framework files in the source repository or consumer projects, syncing changes, or pushing updates.
Load this skill when you need to:
/srv/worktrees/agentflow/main/).claude/ or .agentflow/ directories/srv/worktrees/agentflow/main/)[Unreleased] for every change/af:push after committing to distribute changes to all consumer worktreestype(scope): descriptionframework: or af: in scope for framework changes/srv/worktrees/agentflow/main//srv/worktrees/{project}/main/ or /data/worktrees/{project}/{branch}/Understanding which files are synced from AgentFlow is critical. Synced files will be overwritten on the next /af:sync - any local changes will be lost.
These files come from AgentFlow and MUST be edited in /srv/worktrees/agentflow/main/:
| Path Pattern | Description |
|---|---|
.claude/agents/af-*.md | Framework agents (af- prefix) |
.claude/skills/af-*/ | Framework skills (af- prefix, includes orchestration) |
.claude/commands/**/*.md | All command documentation |
.claude/docs/**/*.md | Framework documentation |
.claude/scripts/**/* | All scripts (sync, validation, etc.) |
.claude/templates/**/* | Setup and hook templates |
.claude/hooks/**/* | Hook scripts |
.claude/lib/**/* | Shared libraries |
.claude/settings.json | Framework settings (hooks merged) |
.claude/CLAUDE-agentflow.md | Framework instructions |
.claude/README.md | Framework README |
These files are never touched by sync - edit them directly in your project:
| Path Pattern | Description |
|---|---|
CLAUDE.md | Project root instructions |
.claude/work/** | Session work files |
.claude/plans/** | Planning documents |
.claude/logs/** | Agent logs |
.claude/reports/** | Generated reports |
.claude/.sync/** | Sync state tracking |
.claude/settings.local.json | Project setting overrides |
.claude/**/*.local.* | Any .local. suffixed files |
.claude/**/current-*.md | Current session files |
.claude/agents/{project}-*.md | Project agents (no af- prefix) |
.claude/skills/{project}-*/ | Project skills (no af- prefix) |
af-prefix = Framework owned = Edit in AgentFlow source Noaf-prefix = Project owned = Edit locally
When: You discover a framework issue or improvement while working in a consumer project
Steps:
Identify the change in the consumer project (e.g., stale doc, bug, missing feature)
Switch to AgentFlow worktree:
cd /srv/worktrees/agentflow/main
Make the change to the framework file(s)
Update CHANGELOG.md under [Unreleased]:
## [Unreleased]
### Fixed
- **Stale BDD Guide** - Removed outdated Gherkin documentation that conflicted with V2 Markdown scenario approach
Commit the change:
git add .
git commit -m "fix(af:docs): remove stale bdd-guide.md
Gherkin was deprecated in V2 in favor of Markdown scenarios.
The old guide was causing confusion in docs audits.
Discovered in: XTL project"
Push to AgentFlow remote (if applicable)
Preview broadcast — read CHANGELOG.md [Unreleased] section and present to the user:
These changes will be broadcast to all projects:
Fixed:
- Stale BDD Guide
Changed:
- BDD Agent output format
Added:
- Making AgentFlow Changes Skill
Last release: v3.1.0 (2026-01-26)
Suggestion: v3.2.0 (minor — new features added)
Bump version before pushing? [yes / no / custom version]
STOP and wait for the user's decision.
If version bump approved:
version in template-manifest.jsonchore(af:release): v{VERSION}git tag v{VERSION}If no version bump: Skip to step 9.
Push to all consumer worktrees:
npx ts-node .claude/scripts/sync/push-to-projects.ts
This syncs to all worktrees across all projects and auto-commits the changes.
Broadcast to Zulip — read .claude/work/push-notifications.jsonl and post one message per project stream on Zulip. The notification includes the CHANGELOG summary (see Zulip Notification section below).
Success criteria:
/af:pushNote:
/af:syncis still available for ad-hoc use (e.g., syncing a newly created branch that/af:pushhasn't seen yet).
When: Monthly, or when making breaking changes. Not required for every change.
Steps:
## [Unreleased]
_No unreleased changes_
---
## [2.2.0] - 2026-01-03
### Added
- **Making AgentFlow Changes Skill** - Documents contribution workflow
### Fixed
- **Stale BDD Guide** - Removed outdated Gherkin documentation
{
"version": "2.2.0"
}
git add CHANGELOG.md template-manifest.json
git commit -m "chore(af:release): v2.2.0"
git tag v2.2.0
git push && git push --tags
When: Documentation doesn't match current implementation
Steps:
cd /srv/worktrees/agentflow/main
git rm .claude/docs/guides/stale-guide.md### Fixed
- **Stale {Guide Name}** - {Brief description of fix}
OR
### Removed
- **{Guide Name}** - Deprecated in V2, replaced by {new approach}
When: Creating a new agent, skill, command, or doc
Steps:
af- prefix)### Added
- **{Component Name}** in `{location}`
- {Bullet point describing what it does}
- {Another bullet if needed}
git commit -m "feat(af:skills): add af-commit-agentflow-changes skill
Documents the contribution workflow for editing framework
files in consumer projects and syncing back.
- Covers version bumping rules
- Covers CHANGELOG format
- Covers commit standards"
## [2.2.0] - 2026-01-03
### Added
- **Making AgentFlow Changes Skill** (`af-commit-agentflow-changes`)
- Documents "edit in client, sync back" workflow
- Covers version bumping and CHANGELOG standards
- Includes commit message conventions
### Fixed
- **Stale BDD Guide** - Removed `.claude/docs/guides/bdd-guide.md` which documented deprecated Gherkin approach (V2 uses Markdown scenarios)
### Changed
- **BDD Agent** - Updated to clarify V2 Markdown scenario output format
# Feature addition
git commit -m "feat(af:skills): add email testing patterns to af-configure-test-frameworks"
# Bug fix
git commit -m "fix(af:docs): remove stale bdd-guide.md
Gherkin deprecated in V2, guide was causing audit confusion.
Discovered in: XTL project"
# Documentation update
git commit -m "docs(af:guides): update framework-sync with contribution workflow"
# Breaking change
git commit -m "feat(af:agents)!: rename af-search-agent to af-web-search-agent
BREAKING CHANGE: Agent name changed, update Task tool invocations"
# Bad: No context
### Fixed
- Fixed a bug
# Bad: Not using Keep a Changelog categories
### Updates
- Made some changes to the BDD stuff
# Bad: Mixing concerns
### Added
- New skill and also fixed that doc and changed some things
After running /af:push, the push script generates notification entries in .claude/work/push-notifications.jsonl. Post one message per project stream on Zulip using the bot credentials.
Notification format (one per project channel):
:arrows_counterclockwise: AgentFlow v{VERSION} pushed to {PROJECT}
What changed:
- {Bold headline from each CHANGELOG entry}
- {Another entry}
Changes auto-committed. Run `git log -1` in any worktree to review.
The push script automatically extracts the CHANGELOG summary. Read the entries from .claude/work/push-notifications.jsonl and post each one to its channelId.
For breaking changes, also announce to #engineering-team on Zulip:
:warning: AgentFlow v{VERSION} pushed - BREAKING CHANGE
{description of breaking change and required action}
All worktrees have been updated automatically.
Note:
/af:syncis still available for projects to manually pull updates (e.g., for newly created branches).
Related skills:
Sync documentation:
Standards:
Remember:
/af:push after committing to distribute to all worktrees/af:sync still works for ad-hoc pull (new branches, targeted sync)