Agent skill
af-making-agentflow-changes
Use when editing AgentFlow framework files — either in the AgentFlow source repository directly or in consumer projects syncing changes back. Covers the contribution workflow, version bumping, CHANGELOG updates, and commit standards. Load this skill before committing any changes to .claude/ files.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/af-making-agentflow-changes
SKILL.md
Making AgentFlow Changes
When to Use This Skill
Load this skill when you need to:
- Edit AgentFlow framework files in the source repository (
/srv/worktrees/agentflow/main/) - Fix or improve AgentFlow framework files (agents, skills, docs, scripts)
- Contribute changes from a consumer project back to AgentFlow
- Update the CHANGELOG and manage versions
- Understand the "edit in client, sync back" workflow
- Commit any changes to
.claude/or.agentflow/directories
Rules (FOLLOW THESE)
Contribution Rules
- MUST make framework changes in the AgentFlow worktree (
/srv/worktrees/agentflow/main/) - MUST update CHANGELOG.md under
[Unreleased]for every change - MUST follow Keep a Changelog format (Added, Changed, Fixed, Removed, Deprecated, Security)
- SHOULD test changes in a consumer project before committing to AgentFlow
- MUST run
/af:pushafter committing to distribute changes to all consumer worktrees
Commit Rules
- MUST use conventional commit format:
type(scope): description - MUST include
framework:oraf:in scope for framework changes - SHOULD reference the consumer project that discovered the issue
- MUST NOT commit directly to consumer projects' framework files
File Location Rules
- AgentFlow source:
/srv/worktrees/agentflow/main/ - Consumer projects:
/srv/worktrees/{project}/main/or/data/worktrees/{project}/{branch}/ - MUST edit in AgentFlow source, then sync to consumers
Version Bump Rules (Periodic, Not Per-Change)
- Version bumps are optional - do them monthly or for breaking changes
- PATCH (x.x.1) - Bug fixes, typo corrections, minor doc updates
- MINOR (x.1.0) - New features, new skills/agents, non-breaking improvements
- MAJOR (1.0.0) - Breaking changes, architecture changes, removed features
What Gets Synced vs Preserved
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.
Synced (Overwritten on Sync)
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 |
Preserved (Safe to Edit Locally)
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) |
Quick Rule
af-prefix = Framework owned = Edit in AgentFlow source Noaf-prefix = Project owned = Edit locally
Workflows
Workflow: Edit in Client, Sync Back
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:
bashcd /srv/worktrees/agentflow/main -
Make the change to the framework file(s)
-
Update CHANGELOG.md under
[Unreleased]:markdown## [Unreleased] ### Fixed - **Stale BDD Guide** - Removed outdated Gherkin documentation that conflicted with V2 Markdown scenario approach -
Commit the change:
bashgit 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:
- Move [Unreleased] entries to new version section in CHANGELOG.md
- Add empty [Unreleased] section
- Update
versionintemplate-manifest.json - Commit:
chore(af:release): v{VERSION} - Tag:
git tag v{VERSION}
If no version bump: Skip to step 9.
-
Push to all consumer worktrees:
bashnpx ts-node .claude/scripts/sync/push-to-projects.tsThis syncs to all worktrees across all projects and auto-commits the changes.
-
Broadcast to Zulip — read
.claude/work/push-notifications.jsonland post one message per project stream on Zulip. The notification includes the CHANGELOG summary (see Zulip Notification section below).
Success criteria:
- Change is in AgentFlow source (not just consumer)
- CHANGELOG updated
- User chose whether to version bump (or not)
- All consumer worktrees synced via
/af:push - Teams notified via Zulip
Note:
/af:syncis still available for ad-hoc use (e.g., syncing a newly created branch that/af:pushhasn't seen yet).
Workflow: Version Bump and Release (Optional/Periodic)
When: Monthly, or when making breaking changes. Not required for every change.
Steps:
- Review [Unreleased] section in CHANGELOG.md
- Determine version bump type:
- Bug fixes only → PATCH (2.1.0 → 2.1.1)
- New features → MINOR (2.1.0 → 2.2.0)
- Breaking changes → MAJOR (2.1.0 → 3.0.0)
- Update CHANGELOG.md:
markdown
## [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 - Update version in template-manifest.json:
json
{ "version": "2.2.0" } - Commit the release:
bash
git add CHANGELOG.md template-manifest.json git commit -m "chore(af:release): v2.2.0" git tag v2.2.0 - Push with tags:
bash
git push && git push --tags
Workflow: Fixing Stale Documentation
When: Documentation doesn't match current implementation
Steps:
- Identify the stale doc (e.g., audit finds outdated guide)
- Determine action:
- Doc still relevant but outdated → Update it
- Doc describes deprecated approach → Delete it
- Doc partially correct → Edit specific sections
- Switch to AgentFlow worktree:
bash
cd /srv/worktrees/agentflow/main - Make the fix:
- If deleting:
git rm .claude/docs/guides/stale-guide.md - If updating: Edit the file with correct information
- If deleting:
- Update parent README if file was deleted (remove from children array)
- Update CHANGELOG:
markdownOR
### Fixed - **Stale {Guide Name}** - {Brief description of fix}markdown### Removed - **{Guide Name}** - Deprecated in V2, replaced by {new approach} - Commit and sync (per Workflow: Edit in Client, Sync Back)
Workflow: Adding New Framework Component
When: Creating a new agent, skill, command, or doc
Steps:
- Switch to AgentFlow worktree
- Load af-agentflow-framework-development skill for templates and standards
- Create the component following namespace rules (
af-prefix) - Update parent README with new child reference
- Update CHANGELOG:
markdown
### Added - **{Component Name}** in `{location}` - {Bullet point describing what it does} - {Another bullet if needed} - Test the component in a consumer project if possible
- Commit with descriptive message:
bash
git commit -m "feat(af:skills): add af-making-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"
Examples
Good CHANGELOG Entry
## [2.2.0] - 2026-01-03
### Added
- **Making AgentFlow Changes Skill** (`af-making-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
Good Commit Messages
# Feature addition
git commit -m "feat(af:skills): add email testing patterns to af-testing-expertise"
# 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 Practices
# 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
Zulip Notification
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).
Essential Reading
Related skills:
- AgentFlow Framework Development - Creating components
Sync documentation:
- Framework Sync Guide - How sync works
- /af:push Command - Push distribution command
- /af:sync Command - Pull sync command (ad-hoc use)
Standards:
- Keep a Changelog - CHANGELOG format
- Semantic Versioning - Version numbering
- Conventional Commits - Commit format
Remember:
- Always edit in AgentFlow source, not consumer projects
- Always update CHANGELOG under [Unreleased]
- After committing, preview the CHANGELOG and ask the user about version bumping before pushing
- Always run
/af:pushafter committing to distribute to all worktrees - Post one Zulip notification per project stream with CHANGELOG summary
- Push works on any branch - feature branches are fine
- Version bumps are optional - do them monthly or for breaking changes
/af:syncstill works for ad-hoc pull (new branches, targeted sync)
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?