Scope
Two responsibilities in one PR:
/own:migrate — new slash command for users with existing Markdown-based SDD projects (anyone who installed OwnYourCode before v2.4.0). Opt-in conversion with backup + --revert.
- The release PR — bump versions everywhere, promote
[Unreleased] to ## [2.4.0] - YYYY-MM-DD, sweep README, cut git tag, create GitHub release.
Dependencies
Before you scope further — read these
#9 — locked architecture decisions. Decision 6 (migration model) is the spec.
- All 4 prior PRs merged on main — read what shipped to understand the target format you're converting INTO.
- Memory:
project_html_migration_v240.md — full v2.4.0 release-PR checklist (version bumps, CHANGELOG promotion, README sweep, git tag, GitHub release).
- Memory:
feedback_pr1_runtime_lessons.md — fallback-first principle. Migration writes HTML directly from MD content. Don't try to "improve" via plugin during migration.
/own:migrate design (from #9)
- Opt-in only. Never auto-run.
- Backup-first. Every conversion copies
.md files to ownyourcode/.md-backup-[ISO-timestamp]/ BEFORE writing HTML.
- Reversible.
/own:migrate --revert restores the most recent backup (with user selection if multiple).
- Validation gate. Run a dry-run scan first; report "Found N MD files across M spec phases" and ask user to confirm before writing anything.
- No coexistence. Project is either MD or HTML, not both. Migration moves
.md to backup, leaves .html in place.
- Scope: SDD files only (mission, stack, roadmap, spec, design, tasks). Don't touch retro logs, learning registry, career stories — those stay Markdown.
Migration flow
/own:migrate → scan ownyourcode/product/*.md and ownyourcode/specs/active/*/*.md (and specs/completed/).
- Report findings: file count, phase count, estimated time.
- AskUserQuestion: confirm migration.
- Create
ownyourcode/.md-backup-{ISO}/ mirroring the source structure.
- Copy all
.md files to backup.
- For each
.md, generate equivalent .html using PR 1's templates + content extracted from the MD source.
- Delete the original
.md files (they're safely in the backup folder).
- Run
/own:theme flow to ensure .theme/ exists (if not — soft seed fallback CSS).
- Confirm success per file; show user the backup location.
/own:migrate --revert flow
- List
.md-backup-{ISO}/ directories sorted newest-first.
- AskUserQuestion: pick which backup to revert to.
- Backup current HTML state to
.md-backup-{ISO}-pre-revert/ so revert is itself reversible.
- Restore
.md files from selected backup.
- Delete the corresponding
.html files.
- Confirm.
Release PR responsibilities (the second half)
After /own:migrate is implemented, this PR also does the release ceremony. Pull the full release checklist from memory project_html_migration_v240.md — every item must be done before this PR can merge. Highlights:
- Bump
2.3.0 → 2.4.0 in: scripts/project-install.sh (header + banner), scripts/project-install.ps1 (header + banner), scripts/base-install.sh, scripts/base-install.ps1, .claude/commands/own/init.md manifest examples.
- Promote
## [Unreleased] → ## [2.4.0] - YYYY-MM-DD in CHANGELOG; move HTML Migration block under the new heading.
- README substantial updates: drop "(v2.4.0+)" version markers from command rows; add
/own:migrate row; add HTML SDD workflow section explaining the 6 file types + Option D contract; add Theme system section; sweep intro for any Markdown-implying language; optional "What's new in v2.4.0" callout near the top.
- After PR merges: cut git tag
v2.4.0 + create GitHub release with link to CHANGELOG section.
Hard constraints
- Backup is non-negotiable. Every write path backs up first. No "trust me bro" overwrites.
- Revert is non-negotiable. Users must be able to undo migration cleanly.
- No coexistence mode. Don't implement "both MD and HTML supported simultaneously" — it doubles the surface area of every command in the toolchain.
- Existing users not on v2.4.0 should be able to keep using MD-only OwnYourCode (
v2.3.x branch) indefinitely. Migration is opt-in; users who don't migrate get no degraded experience.
Open this issue's PR with title
feat(v2.4.0): /own:migrate opt-in MD→HTML + v2.4.0 release ceremony (PR 5/5)
Refs #9 · Completes the migration train (#10, #11, #12, #13)
Scope
Two responsibilities in one PR:
/own:migrate— new slash command for users with existing Markdown-based SDD projects (anyone who installed OwnYourCode before v2.4.0). Opt-in conversion with backup +--revert.[Unreleased]to## [2.4.0] - YYYY-MM-DD, sweep README, cut git tag, create GitHub release.Dependencies
mainBEFORE this PR scopes.Before you scope further — read these
#9— locked architecture decisions. Decision 6 (migration model) is the spec.project_html_migration_v240.md— full v2.4.0 release-PR checklist (version bumps, CHANGELOG promotion, README sweep, git tag, GitHub release).feedback_pr1_runtime_lessons.md— fallback-first principle. Migration writes HTML directly from MD content. Don't try to "improve" via plugin during migration./own:migratedesign (from #9).mdfiles toownyourcode/.md-backup-[ISO-timestamp]/BEFORE writing HTML./own:migrate --revertrestores the most recent backup (with user selection if multiple)..mdto backup, leaves.htmlin place.Migration flow
/own:migrate→ scanownyourcode/product/*.mdandownyourcode/specs/active/*/*.md(andspecs/completed/).ownyourcode/.md-backup-{ISO}/mirroring the source structure..mdfiles to backup..md, generate equivalent.htmlusing PR 1's templates + content extracted from the MD source..mdfiles (they're safely in the backup folder)./own:themeflow to ensure.theme/exists (if not — soft seed fallback CSS)./own:migrate --revertflow.md-backup-{ISO}/directories sorted newest-first..md-backup-{ISO}-pre-revert/so revert is itself reversible..mdfiles from selected backup..htmlfiles.Release PR responsibilities (the second half)
After
/own:migrateis implemented, this PR also does the release ceremony. Pull the full release checklist from memoryproject_html_migration_v240.md— every item must be done before this PR can merge. Highlights:2.3.0→2.4.0in:scripts/project-install.sh(header + banner),scripts/project-install.ps1(header + banner),scripts/base-install.sh,scripts/base-install.ps1,.claude/commands/own/init.mdmanifest examples.## [Unreleased]→## [2.4.0] - YYYY-MM-DDin CHANGELOG; move HTML Migration block under the new heading./own:migraterow; add HTML SDD workflow section explaining the 6 file types + Option D contract; add Theme system section; sweep intro for any Markdown-implying language; optional "What's new in v2.4.0" callout near the top.v2.4.0+ create GitHub release with link to CHANGELOG section.Hard constraints
v2.3.xbranch) indefinitely. Migration is opt-in; users who don't migrate get no degraded experience.Open this issue's PR with title
feat(v2.4.0): /own:migrate opt-in MD→HTML + v2.4.0 release ceremony (PR 5/5)Refs #9 · Completes the migration train (#10, #11, #12, #13)