This is AppFolio's fork of github/spec-kit. It bundles AppFolio-specific extensions into the CLI for zero-config developer setup.
| Area | Change |
|---|---|
| Package name | specify-cli → specify-af-cli |
| Binary name | specify → specify-af |
| Catalog URL | Points at appfolio/spec-kit af-main branch |
| Init flow | Auto-installs bundled AF extensions after scaffold |
| New command | specify-af upgrade — syncs AF extensions to bundled versions |
| Version resolution | Uses packages_distributions() instead of hardcoded package name |
| Release workflow | release-please with af-v* tags on af-main |
When merging upstream releases, expect conflicts in these files:
pyproject.toml— keep AF name, console script, and force-include entriessrc/specify_cli/__init__.py— keep version fix (_get_distribution_name), init hook (install_af_extensions), upgrade command, panel titlesrc/specify_cli/extensions.py— keep AF catalog URLsrc/specify_cli/presets.py— keep AF package name in error messageextensions/catalog.json— keep AF entries and catalog URL.github/workflows/release.yml— keepaf-v*tag filter, AF install URL, extension ZIP step
git clone git@github.com:appfolio/spec-kit.git
cd spec-kit
git checkout af-main
uv tool install . --force
specify-af versiongit checkout -b feat/my-feature af-main
# Make changes (use Conventional Commits: feat:, fix:, chore:, etc.)
uv tool install . --force --reinstall
cd /path/to/test-project && specify-af init --here --ai claude
git push -u origin feat/my-feature
# Open PR targeting af-main- Create
extensions/af-<name>/withextension.yml,README.md,commands/ - Add
"af-<name>"toAF_EXTENSION_IDSinsrc/specify_cli/af_init.py - Add
"extensions/af-<name>" = "specify_cli/core_pack/extensions/af-<name>"toforce-includeinpyproject.toml - Add entry to
extensions/catalog.json
git fetch upstream --tags
git checkout af-main
git merge v<upstream-version>
# Resolve conflicts (see Conflict-Prone Files above)
# Test: uv tool install . --force --reinstall && specify-af init --hereIf integration work is needed:
git checkout -b feat/integrate-v<version>
# Fix, test, open PR to af-main- chore: release af-v0.6.1.2
- docs: add CLAUDE.md with fork strategy and git rules
- feat: AppFolio spec-kit fork — specify-af-cli with bundled extensions
- docs: add CLAUDE.md with fork strategy and git rules
- feat: AppFolio spec-kit fork — specify-af-cli with bundled extensions
- feat: AppFolio spec-kit fork — specify-af-cli with bundled extensions