smith-migrate-specs
SkillDev toolsOne-time migration of existing flat spec folders into the system-based hierarchy under .specify/systems/.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the smith-migrate-specs skill
What this skill tells your AI
The instructions your AI receives, as published by attckdigital/smith in skills/smith-migrate-specs/SKILL.md and read by ahel’s review.
Workflow requirement (Smith 20+): This skill must be invoked from inside an active top-level workflow (
/smith-new,/smith-bugfix,/smith-debug,/smith-build). The workflow-gate hook will block standalone invocation. To use this skill standalone, start a top-level workflow first.
Smith Spec Migration
Migrate existing feature spec folders from specs/<NNN-feature>/ into the system-based hierarchy at .specify/systems/<system>/features/<NNN-feature>/.
Arguments: $ARGUMENTS
Prerequisites
.specify/systems/must exist with system spec folders (created by Phase 1B setup or/smith)- System spec files must be present at
.specify/systems/system-*/spec.mdfor system detection to work
Behavior
Step 1: Scan for Migratable Features
Scan specs/ for all feature spec folders. Exclude the following (they are not feature specs):
specs/system-*(system specs — these are the source of truth)specs/questions/(global questions directory)specs/screenshots/(visual reference)specs/sentiment-engine/(legacy non-numbered spec)specs/init-intake.md(not a folder)
A valid feature folder must:
- Be a directory
- Contain at least a
spec.mdfile - Match the pattern
NNN-*(numbered feature)
List all candidates with their folder name and a one-line summary from the first heading in their spec.md.
Step 2: System Detection (per feature)
For each feature folder, determine the primary system:
- Read the feature's
spec.md— extract what the feature does, which services it touches, what data it modifies - Read all
.specify/systems/system-*/spec.md— understand each system's scope - Determine primary_system — the system most directly impacted by the feature
- Determine also_affects — other systems the feature touches
Use these heuristics for mapping:
- Features touching
services/command-center/→system-15-command-center - Features touching
services/email-pipeline/→system-03-email-archive-contact-graph - Features touching
services/sentiment-engine/→system-05-communication-triageor system-03 depending on scope - Features touching
services/content-strategy/orservices/content-engine/→system-12-content-social-engine - Features touching
services/social-listening/→system-10-social-listening - Features touching
services/trend-intelligence/→system-13-trend-intelligence - Features touching
services/voice-training/→system-04-personal-voice - Features touching
services/meeting-intelligence/→system-09-meeting-intelligence - Features touching
docker-compose.ymlor infrastructure →system-01-infrastructure - Features touching Neo4j/contacts/graph →
system-03-email-archive-contact-graph - Features touching N8N workflows →
system-01-infrastructure - Features that are genuinely cross-cutting →
cross-system
Also check git history and the feature's plan.md (if it exists) for additional context.
Step 3: Present & Confirm (One at a Time)
For each feature, present the proposed mapping:
Feature: 024-triage-review-actions
Summary: Add review actions (approve/reject/archive) to the triage log
Primary: system-05-communication-triage
Also affects: system-15-command-center
Files to move: spec.md, plan.md, tasks.md, checklists/, questions.md (5 items)
Move to: .specify/systems/system-05-communication-triage/features/024-triage-review-actions/
Confirm? [y/n/skip/quit]
- y — Move this feature
- n — Let the user specify a different system
- skip — Skip this feature, move to the next
- quit — Stop migration entirely
IMPORTANT: Process ONE feature at a time. Do NOT batch-move all features without individual confirmation.
Step 4: Execute Migration
For each confirmed feature:
- Create the target directory:
mkdir -p .specify/systems/<primary-system>/features/<feature-name>/ - Copy all files from
specs/<feature-name>/to the new location (copy, not move — we preserve originals until verified) - Add frontmatter to the migrated
spec.mdif not already present:--- feature: <feature-name> primary_system: <system-folder-name> also_affects: - <other-system> branch: <branch-name if detectable from git> created: <date from spec or git> status: complete --- - Log the migration to
.smith/vault/sessions/(current session log if active)
Step 5: Summary
After processing all features (or quitting), display:
## Migration Summary
Migrated: 15 features
Skipped: 3 features
Remaining: 37 features (not yet processed)
### Migrated Features
| Feature | System | Path |
|---------|--------|------|
| 024-triage-review-actions | system-05-communication-triage | .specify/systems/system-05-communication-triage/features/024-triage-review-actions/ |
| ... | ... | ... |
### Skipped Features
| Feature | Reason |
|---------|--------|
| 025-nav-label-rename | User skipped |
Note: Original folders in specs/ are preserved. Once verified, you can remove them manually.
Flags
--dry-run— Show proposed mappings for all features without moving anything--all— Skip individual confirmations and move all features using auto-detected systems (use with caution)
Important Notes
- This action copies files rather than moving them. The originals in
specs/remain untouched as a safety measure. - After verifying the migration is correct, the user can manually remove the originals from
specs/. - Features that already exist in
.specify/systems/are skipped automatically. - The vault infrastructure (Phase 1A) must be in place for session logging to work.
- Do NOT modify the constitution.md or any vault hooks during migration.
Signals
- GitHub stars
- 52
- Forks
- 8
- Last commit
- Jul 2026
Advanced
- Catalog kind
- skill
- Gateway key
smith-migrate-specs- Source
- github.com/attckdigital/smith