Skip to content

feat(af): clean up legacy AF skill dirs on init#17

Merged
dtoms merged 1 commit into
af-mainfrom
dtoms-skills-cleanup
May 12, 2026
Merged

feat(af): clean up legacy AF skill dirs on init#17
dtoms merged 1 commit into
af-mainfrom
dtoms-skills-cleanup

Conversation

@dtoms
Copy link
Copy Markdown
Collaborator

@dtoms dtoms commented May 12, 2026

The AF fork's --force init overwrites current bundle files but leaves behind skill directories that were shipped in older versions and have since been removed or consolidated. Claude Code auto-discovers these via skill descriptions, which can hijack lifecycle dispatch.

Concrete case: a stale speckit-af-check-version skill (replaced by the inline VERSION_FAIL branch in common.md) intercepts the VERSION_FAIL token from check-version.sh and renders its frozen-in-time "3-step" upgrade message with aggressive find-based cleanup, instead of letting common.md's current re-init prompt run.

Mirror the existing .claude/commands/speckit.*.md cleanup with an explicit list of legacy AF skill directories to prune:

  • speckit-af-check-version — replaced by inline VERSION_FAIL branch
  • speckit-af-after-common — never had a SKILL.md; empty dir leftover

Hardcoded list (not glob-derived) to avoid accidentally removing skills that the current bundle does ship — the install hierarchy names overlap enough that an "anything not in current bundle" heuristic is risky.

Description

Testing

  • Tested locally with uv run specify --help
  • Ran existing tests with uv sync && uv run pytest
  • Tested with a sample project (if applicable)

AI Disclosure

  • I did not use AI assistance for this contribution
  • I did use AI assistance (describe below)

The AF fork's --force init overwrites current bundle files but leaves behind
skill directories that were shipped in older versions and have since been
removed or consolidated. Claude Code auto-discovers these via skill
descriptions, which can hijack lifecycle dispatch.

Concrete case: a stale speckit-af-check-version skill (replaced by the
inline VERSION_FAIL branch in common.md) intercepts the VERSION_FAIL token
from check-version.sh and renders its frozen-in-time "3-step" upgrade
message with aggressive find-based cleanup, instead of letting common.md's
current re-init prompt run.

Mirror the existing .claude/commands/speckit.*.md cleanup with an explicit
list of legacy AF skill directories to prune:

- speckit-af-check-version — replaced by inline VERSION_FAIL branch
- speckit-af-after-common   — never had a SKILL.md; empty dir leftover

Hardcoded list (not glob-derived) to avoid accidentally removing skills
that the current bundle does ship — the install hierarchy names overlap
enough that an "anything not in current bundle" heuristic is risky.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@dtoms dtoms merged commit 0712bca into af-main May 12, 2026
2 of 5 checks passed
@dtoms dtoms deleted the dtoms-skills-cleanup branch May 12, 2026 17:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant