TASKS.md — scaffolder v0.7.0 file structure migration
TASKS.md — scaffolder v0.7.0 file structure migration
Section titled “TASKS.md — scaffolder v0.7.0 file structure migration”Rules for Code
Section titled “Rules for Code”- Always work on a feature branch, never directly on dev or main
- Read BUILDER-INSTRUCTIONS.md and STANDARDS.md before starting any work
- Complete each task fully before moving to the next
- Do not add features not listed here
- Follow Conventional Commits format on every commit
- Update SESSION-NOTES.md at the end of every session
- This is a BREAKING CHANGE release — file structure changes, placeholder names change
Branch
Section titled “Branch”Create one branch for all tasks: feature/v0.7.0-file-restructure
All tasks committed to that branch.
Final PR: feature/v0.7.0-file-restructure → dev → main
Version target
Section titled “Version target”v0.7.0
Context
Section titled “Context”This release migrates the scaffolder’s project file structure to support the new session-based workflow. Key changes:
- New
sessions/folder consolidates all session state - BUILDER-INSTRUCTIONS.md → CLAUDE.md (native Claude Code loading)
- CONTEXT.md + SESSION-NOTES.md → sessions/CURRENT.md (single source of truth)
- CHAT-LOG.md removed (replaced by session logs)
- docs/handoffs/ removed (replaced by session logs)
- Placeholder names change: [ARCHITECT_NAME]/[BUILDER_NAME] → [CHAT_AI_NAME]/[CODE_AI_NAME]
- Always-nested docs/ with docs/features/ subfolder
- .claude/rules/ added for modular rules
- Optional GitHub Action for PR review as .disabled file
Reference: MASTER-PLAN-v0.7.0-2026-03-15.md in docs/ for full architectural context.
Definition of done
Section titled “Definition of done”A task is only complete when:
- File edited or created correctly
- No hardcoded personal values in any template
- All placeholder names use new format ([CHAT_AI_NAME]/[CODE_AI_NAME])
-
npm run buildpasses - Committed with correct message format
- No unintended changes to other files
Release checklist (before dev → main PR)
Section titled “Release checklist (before dev → main PR)”- All tasks below complete and committed
- CHANGELOG.md updated for v0.7.0
- Version bumped in package.json
- versions.json updated (latest: “0.7.0”, new version entry, breaking: true)
- README.md badge updated to v0.7.0
-
npm run buildpasses clean - Dry run output (
create --dry-run "test") matches new structure
Build order
Section titled “Build order”Task 1 — Create new template files
Section titled “Task 1 — Create new template files”Branch: feature/v0.7.0-file-restructure
Commit: feat: add sessions/CURRENT.md and CLAUDE.md templates
Create templates/CURRENT.md:
# CURRENT.md — [project-name]
## Current state_What is the current state of the project in plain English?_
## Versionv0.0.0
## Active branchdev
## What was done last session_Summary of what was completed, by whom (chat or code), and when._
## What is in progress_What is actively being worked on?_
## What is not started_What is queued but not yet begun?_
## What is working_What is stable and complete?_
## What is not working_What is broken or incomplete?_
## Decisions made_Key decisions from recent sessions._
## Next steps_What should happen next?_
## Watch out for_Any gotchas, risks, or things to be careful about._Create templates/CLAUDE.md:
# CLAUDE.md — Standing instructions for [CODE_AI_NAME]
This file is read automatically by Claude Code at the start of every session.Do not rename this file.
## Who does what- [CHAT_AI_NAME] — planning, specs, architecture decisions, documentation- [CODE_AI_NAME] — execution only, builds against the docs in this repo
## Project stateRead `sessions/CURRENT.md` before starting any work. It contains the currentproject state, what was done last session, and what to do next.
## Planning rules- For any task touching 3+ files or adding new functionality: suggest plan mode first, produce a plan, get operator approval before coding- For single-file bug fixes or minor changes: proceed directly- When in doubt: plan first
## Folder structure[project-name]/├── docs/ ← planning artifacts│ ├── features/ ← feature-specific docs│ ├── DISCOVERY.md│ ├── SPEC.md│ ├── ARCHITECTURE.md│ ├── SCHEMA.md│ ├── TASKS.md│ ├── PLANNING.md│ ├── DECISIONS.md│ ├── TESTING.md│ ├── API.md│ ├── NAMING-CONVENTIONS.md│ └── RETRO.md├── sessions/ ← all session state│ ├── CURRENT.md ← single source of truth for project state│ └── logs/ ← immutable session records├── src/ ← all code├── .claude/│ ├── settings.local.json│ └── rules/ ← modular path-scoped rules├── .github/├── CLAUDE.md ← this file (you are reading it)├── STANDARDS.md├── START-HERE.md├── STATUS.md├── TIME-LOG.md├── README.md└── CHANGELOG.md
## Branch strategy- main — stable, production-ready only- dev — integration branch, all features merge here first- feature/[name] — one per feature, branched from dev, deleted after merge- fix/[name] — for bug fixes, branched from dev- hotfix/[name] — critical fixes, branched from main only- [CODE_AI_NAME] always works on a feature or fix branch unless explicitly told otherwise
## Rules for [CODE_AI_NAME]1. Read this file before starting any work2. Read STANDARDS.md for commit, PR, and versioning rules3. Read sessions/CURRENT.md for project state4. Read all docs in docs/ before writing any code5. Always create a feature branch before starting a task6. Never modify main or dev directly7. Never add features not listed in docs/TASKS.md8. Never improvise folder structure or architecture9. Ask before making any decision not covered in the docs10. Follow Conventional Commits format (see STANDARDS.md)
## Session managementAt the end of every session, [CODE_AI_NAME] must:1. Ensure all work is committed on the current branch2. Update sessions/CURRENT.md with: what was completed, what is in progress, decisions made, next steps, and current branch/status3. Report current branch and status to operator
## GitHub- Username: [github-username]- All repos are private by default
## Tech stackDefined per project in docs/DISCOVERY.md — never assume defaults.
## [CHAT_AI_NAME] handoff checklistBefore [CODE_AI_NAME] starts any project, confirm:- [ ] docs/DISCOVERY.md complete and confirmed- [ ] docs/SPEC.md complete with user stories and acceptance criteria- [ ] docs/ARCHITECTURE.md complete- [ ] docs/TASKS.md complete with definition of done per task- [ ] docs/TESTING.md complete- [ ] docs/DECISIONS.md present- [ ] docs/SCHEMA.md complete (if database required)- [ ] .scaffolder metadata file present- [ ] GitHub repo created and accessible
## Mid-project check-inAfter every 3 tasks completed, [CODE_AI_NAME] must:1. Report progress to operator2. Confirm next 3 tasks before continuing3. Flag any decisions that [CHAT_AI_NAME] should know about
## Definition of complete planningPlanning is complete when ALL of the following exist and are confirmed:- docs/DISCOVERY.md- docs/SPEC.md (with user stories and acceptance criteria)- docs/ARCHITECTURE.md- docs/TASKS.md- docs/TESTING.md- docs/DECISIONS.md- docs/SCHEMA.md (if database required)- CLAUDE.md (this file)- SCAFFOLDER-ANSWERS.mdDefinition of done: Both template files created. Content matches the above exactly. No personal values.
Task 2 — Update createFolders.ts for new directory structure
Section titled “Task 2 — Update createFolders.ts for new directory structure”Branch: feature/v0.7.0-file-restructure
Commit: feat: add sessions/, docs/features/, .claude/rules/ to project structure
File: src/createFolders.ts
Add these directories to the dirs array:
path.join(projectPath, "sessions"),path.join(projectPath, "sessions", "logs"),path.join(projectPath, "docs", "features"),path.join(projectPath, ".claude", "rules"),Remove this directory from the dirs array:
path.join(projectPath, "docs", "handoffs"),Definition of done: New directories created. docs/handoffs/ no longer created. Build passes.
Task 3 — Update createDocs.ts for new file structure
Section titled “Task 3 — Update createDocs.ts for new file structure”Branch: feature/v0.7.0-file-restructure
Commit: refactor: migrate to new file structure in createDocs
File: src/createDocs.ts
This is the largest task. Make these changes carefully:
1. Update the replaceAiNames function:
Change placeholder names from [ARCHITECT_NAME]/[BUILDER_NAME] to [CHAT_AI_NAME]/[CODE_AI_NAME]:
function replaceAiNames(content: string): string { const globalConfig = getConfig(); const chatAiName = globalConfig.chatAiName || "Chat"; const codeAiName = globalConfig.codeAiName || "Code"; content = content.replace(/\[CHAT_AI_NAME\]/g, chatAiName); content = content.replace(/\[CODE_AI_NAME\]/g, codeAiName); // Keep backward compatibility during transition content = content.replace(/\[ARCHITECT_NAME\]/g, chatAiName); content = content.replace(/\[BUILDER_NAME\]/g, codeAiName); return content;}2. Replace BUILDER-INSTRUCTIONS.md with CLAUDE.md: Find the block that copies BUILDER-INSTRUCTIONS.md to project root (around line 28-33). Change:
- Read from
templates/CLAUDE.mdinstead oftemplates/BUILDER-INSTRUCTIONS.md - Write to
path.join(projectPath, "CLAUDE.md")instead ofBUILDER-INSTRUCTIONS.md
Remove the line that also copies BUILDER-INSTRUCTIONS.md to docs/. (The dual-copy to docs/ is eliminated.)
3. Remove ARCHITECT-REFERENCE.md copy: Find and remove the entire block that copies ARCHITECT-REFERENCE.md to docs/ AND project root (around line 35-42). This file no longer lives per-project.
4. Replace CONTEXT.md and SESSION-NOTES.md with sessions/CURRENT.md: Find and remove the block that writes CONTEXT.md to project root. Find and remove the block that generates SESSION-NOTES.md to project root. Find and remove the block that copies CHAT-LOG.md to project root.
Add new block to write sessions/CURRENT.md:
// Copy CURRENT.md template to sessions/const currentTemplatePath = path.join(TEMPLATES_DIR, "CURRENT.md");let currentContent = fs.readFileSync(currentTemplatePath, "utf-8");currentContent = currentContent.replace(/\[project-name\]/g, projectName);currentContent = replaceAiNames(currentContent);fs.writeFileSync(path.join(projectPath, "sessions", "CURRENT.md"), currentContent);5. Remove PROJECT-INSTRUCTIONS.md from per-project output: Find and remove the block that copies PROJECT-INSTRUCTIONS.md to project root (around line 130-136). This file stays in _system/ only — not per-project.
6. Update BUILDER-INSTRUCTIONS.md from TEMPLATE_FILES array:
The TEMPLATE_FILES array at the top of the file lists files copied to docs/.
Remove "BUILDER-INSTRUCTIONS.md" from this array.
7. Keep STANDARDS.md copy from templates/ (already fixed in v0.6.4). No change needed — just verify it reads from TEMPLATES_DIR.
Definition of done: createDocs.ts generates the new file structure. No CONTEXT.md, SESSION-NOTES.md, CHAT-LOG.md, ARCHITECT-REFERENCE.md, or PROJECT-INSTRUCTIONS.md at project root. CLAUDE.md replaces BUILDER-INSTRUCTIONS.md at root. sessions/CURRENT.md created. Build passes.
Task 4 — Update all templates to use new placeholder names
Section titled “Task 4 — Update all templates to use new placeholder names”Branch: feature/v0.7.0-file-restructure
Commit: refactor: replace ARCHITECT_NAME/BUILDER_NAME with CHAT_AI_NAME/CODE_AI_NAME in all templates
Files: Every file in templates/ that contains [ARCHITECT_NAME] or [BUILDER_NAME]
Run a search across all templates:
grep -rl "ARCHITECT_NAME\|BUILDER_NAME" templates/For every match, replace:
[ARCHITECT_NAME]→[CHAT_AI_NAME][BUILDER_NAME]→[CODE_AI_NAME]
Also check and update templates/STANDARDS.md — it references these names in session handoff, decision log, and escalation sections.
Do NOT edit:
templates/CLAUDE.md(created in Task 1, already uses new names)templates/CURRENT.md(created in Task 1, no AI name references)
Definition of done: Zero occurrences of [ARCHITECT_NAME] or [BUILDER_NAME] in any template file. All replaced with [CHAT_AI_NAME] / [CODE_AI_NAME].
Task 5 — Rewrite templates/START-HERE.md
Section titled “Task 5 — Rewrite templates/START-HERE.md”Branch: feature/v0.7.0-file-restructure
Commit: docs: rewrite START-HERE.md for simplified session flow
File: templates/START-HERE.md
Replace entire contents with:
# START-HERE.md — [project-name]
## Starting a Chat session1. Open your Claude Chat project2. Upload `sessions/CURRENT.md` to Project Files (replace the old one if present)3. Start a new conversation:
Hey [CHAT_AI_NAME]. Picking up [project-name].Goal today: [what are we doing]
## Starting a Code session1. Open terminal2. Run:/sc build [project-name]
3. Code reads CLAUDE.md and sessions/CURRENT.md automatically — no paste needed
## After running /sc create "[project-name]"Copy your planning docs from Downloads:cp /mnt/c/Users/[WINDOWS_USERNAME]/Downloads/[project-name]/*.md [DEFAULT_DRIVE]/projects/[project-name]/docs/
If you have a prototype:cp /mnt/c/Users/[WINDOWS_USERNAME]/Downloads/[project-name]/*.html [DEFAULT_DRIVE]/projects/[project-name]/docs/
## End of session
### Code sessionRun `/sc end` — this automatically:- Updates sessions/CURRENT.md- Writes a session log to sessions/logs/- Commits and pushes
### Chat sessionChat produces a session log file. Download it and run:cp ~/Downloads/[log-filename].md [DEFAULT_DRIVE]/projects/[project-name]/sessions/logs/
Then re-upload the updated sessions/CURRENT.md to your Chat Project Files.
## Running a QA session1. Test against acceptance criteria in docs/SPEC.md2. Log every bug as a GitHub issue:gh issue create —title “bug: description” —label “bug,high” —milestone “v0.1.0”
3. Update STATUS.md with open issue count4. No PR to main until QA checklist in docs/TESTING.md passes
## GitHub Issues quick referencegh issue create —title “bug: description” —label “bug” —milestone “v0.1.0” gh issue create —title “chore: description” —label “chore” —milestone “v0.1.0” gh issue list gh issue close [number]
## Deployment checklist- [ ] All env vars added to hosting platform- [ ] .env.example up to date- [ ] Tests passing- [ ] PR merged to main and tagged- [ ] Verify app works after deploymentDefinition of done: START-HERE.md reflects the new simplified flow. No boot sequence paste. References sessions/CURRENT.md and CLAUDE.md. Uses new placeholder names.
Task 6 — Create GitHub Action PR review template
Section titled “Task 6 — Create GitHub Action PR review template”Branch: feature/v0.7.0-file-restructure
Commit: feat: add optional GitHub Action for Claude PR review
Create templates/claude-review.yml.disabled:
# OPTIONAL: Automated PR review with Claude Code## To enable:# 1. Add your ANTHROPIC_API_KEY to GitHub repo secrets# 2. Run /install-github-app in Claude Code# 3. Rename this file to claude-review.yml (remove .disabled)## Cost: Usage is billed per API call. Review current pricing at:# https://www.anthropic.com/pricing## name: Claude PR Review# on:# pull_request:# types: [opened, synchronize]# issue_comment:# types: [created]## permissions:# contents: read# pull-requests: write# issues: write## jobs:# review:# if: |# github.event_name == 'pull_request' ||# (github.event_name == 'issue_comment' &&# github.event.issue.pull_request &&# contains(github.event.comment.body, '@claude'))# runs-on: ubuntu-latest# steps:# - uses: anthropics/claude-code-action@v1# with:# anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}Update src/createDocs.ts: Add a block to copy this file to .github/workflows/:
// Copy optional Claude PR review workflow (disabled by default)const reviewTemplatePath = path.join(TEMPLATES_DIR, "claude-review.yml.disabled");if (fs.existsSync(reviewTemplatePath)) { const reviewContent = fs.readFileSync(reviewTemplatePath, "utf-8"); fs.writeFileSync(path.join(projectPath, ".github", "workflows", "claude-review.yml.disabled"), reviewContent);}Definition of done: Template created. Copied to .github/workflows/ on project create. Entirely commented out. Links to Anthropic pricing, no hardcoded dollar amount.
Task 7 — Remove deprecated template files
Section titled “Task 7 — Remove deprecated template files”Branch: feature/v0.7.0-file-restructure
Commit: refactor: remove deprecated template files replaced by new structure
Delete these files from templates/:
templates/CONTEXT.md(replaced by templates/CURRENT.md)templates/CHAT-LOG.md(replaced by session logs)templates/HANDOFF.md(replaced by session logs)
Do NOT delete:
templates/BUILDER-INSTRUCTIONS.md— keep this file for now. It’s still referenced by the migration system and existing projects may need it for the v0.6.4→v0.7.0 migration path. Add a comment at the top:
<!-- DEPRECATED: This file is kept for migration compatibility only. New projects use CLAUDE.md instead. -->Definition of done: Three files deleted. BUILDER-INSTRUCTIONS.md marked deprecated but retained. No references to deleted files remain in createDocs.ts (verify against Task 3).
Task 8 — Update printDryRun() for new structure
Section titled “Task 8 — Update printDryRun() for new structure”Branch: feature/v0.7.0-file-restructure
Commit: refactor: update dry run output to reflect v0.7.0 structure
File: src/index.ts
Find the printDryRun function and replace the entire output tree with:
function printDryRun(name: string): void { const config = getConfig(); const baseDir = config.defaultDrive ? `${config.defaultDrive}/projects` : "/mnt/d/Claude/projects"; const githubUser = config.githubUsername || config.defaultGitHub || "purlshq";
console.log(`\nDry run — here's what would be created:\n`); console.log(`Project folder: ${baseDir}/${name}/`); console.log(`├── .claude/`); console.log(`│ ├── rules/`); console.log(`│ └── settings.local.json`); console.log(`├── .github/`); console.log(`│ ├── ISSUE_TEMPLATE/`); console.log(`│ │ ├── bug_report.md`); console.log(`│ │ ├── feature_request.md`); console.log(`│ │ └── chore.md`); console.log(`│ └── workflows/`); console.log(`│ ├── ci.yml`); console.log(`│ └── claude-review.yml.disabled`); console.log(`├── docs/`); console.log(`│ ├── features/`); console.log(`│ ├── SPEC.md`); console.log(`│ ├── ARCHITECTURE.md`); console.log(`│ ├── SCHEMA.md`); console.log(`│ ├── TASKS.md`); console.log(`│ ├── PLANNING.md`); console.log(`│ ├── DECISIONS.md`); console.log(`│ ├── DISCOVERY.md`); console.log(`│ ├── TESTING.md`); console.log(`│ ├── API.md`); console.log(`│ ├── NAMING-CONVENTIONS.md`); console.log(`│ └── RETRO.md`); console.log(`├── sessions/`); console.log(`│ ├── logs/`); console.log(`│ └── CURRENT.md`); console.log(`├── src/`); console.log(`├── .env.example`); console.log(`├── .gitattributes`); console.log(`├── .gitignore`); console.log(`├── .nvmrc`); console.log(`├── .scaffolder`); console.log(`├── CHANGELOG.md`); console.log(`├── CLAUDE.md`); console.log(`├── README.md`); console.log(`├── STANDARDS.md`); console.log(`├── START-HERE.md`); console.log(`├── STATUS.md`); console.log(`└── TIME-LOG.md`); console.log(`\nGitHub repo: ${githubUser}/${name} (private)`); console.log(`\nRun /sc create "${name}" to create this project.`);}Note: Dry run now uses config-derived paths and usernames. Also updated the final message to use /sc create (future command name — doesn’t break anything to show it now).
Definition of done: Dry run output matches v0.7.0 structure exactly. No hardcoded paths or usernames.
Task 9 — Update sc.ts handleDone() for new session log location
Section titled “Task 9 — Update sc.ts handleDone() for new session log location”Branch: feature/v0.7.0-file-restructure
Commit: refactor: update handleDone to write session logs to sessions/logs/
File: src/sc.ts
Find the handleDone function. Update the handoff file generation:
1. Change the output path from docs/handoffs/ to sessions/logs/: Replace:
const handoffDir = path.join(basePath, sessionProject, "docs", "handoffs");With:
const handoffDir = path.join(basePath, sessionProject, "sessions", "logs");2. Change the filename format to use the new log naming convention: Replace the handoffName construction with:
const config = getConfig();const operator = config.operatorAlias || config.yourName?.substring(0, 5).toLowerCase() || "user";const version = getProjectVersion(basePath, sessionProject);const timestamp = new Date().toISOString().replace(/[-:]/g, "").substring(0, 13).replace("T", "-");const logName = `${version}-${date}-${timestamp.split("-")[1]}-code-${operator}.md`;Add a helper function before handleDone:
function getProjectVersion(basePath: string, project: string): string { const metaPath = path.join(basePath, project, ".scaffolder"); try { const meta = JSON.parse(fs.readFileSync(metaPath, "utf-8")); const v = meta.scaffolderVersion || "0.0.0"; const parts = v.split("."); return `v${parts[0].padStart(2, "0")}.${parts[1].padStart(2, "0")}.${parts[2].padStart(2, "0")}`; } catch { return "v00.00.00"; }}3. Update the copy command output to reference the new location:
console.log(` cp /mnt/c/Users/${winUser}/Downloads/${logName} ${basePath}/${sessionProject}/sessions/logs/`);4. Update the content template — replace the HANDOFF format with a session log format:
const logContent = `---version: ${version}date: ${date}time: ${new Date().toISOString().split("T")[1].substring(0, 5)}type: codeoperator: ${operator}duration: ${duration}project: ${sessionProject}---
# Code session — ${sessionProject} — ${date}
## What was completed_Key work done this session._
## Decisions made_Any decisions that Chat needs to know about._
## Current state_Where things stand right now._
## Next steps_What should happen next._`;Definition of done: /sc done writes to sessions/logs/ with the new naming convention and log format. Build passes.
Task 10 — Update sc.ts handleEnd() to update sessions/CURRENT.md
Section titled “Task 10 — Update sc.ts handleEnd() to update sessions/CURRENT.md”Branch: feature/v0.7.0-file-restructure
Commit: feat: auto-update sessions/CURRENT.md on /sc end
File: src/sc.ts
Find the handleEnd function. After logging time, add a block to update sessions/CURRENT.md:
// Update sessions/CURRENT.mdconst config = getConfig();const basePath = config.defaultDrive ? `${config.defaultDrive}/projects` : "/mnt/d/Claude/projects";const currentPath = path.join(basePath, result.session.project, "sessions", "CURRENT.md");
if (fs.existsSync(currentPath)) { let current = fs.readFileSync(currentPath, "utf-8"); const date = new Date().toISOString().split("T")[0];
// Update "What was done last session" section const lastSessionMarker = "## What was done last session"; if (current.includes(lastSessionMarker)) { const nextSection = current.indexOf("\n## ", current.indexOf(lastSessionMarker) + lastSessionMarker.length); const before = current.substring(0, current.indexOf(lastSessionMarker) + lastSessionMarker.length); const after = nextSection > -1 ? current.substring(nextSection) : ""; current = `${before}\n${capitalize(result.session.type)} session completed on ${date}. Duration: ${result.formattedDuration}.\n${after}`; }
fs.writeFileSync(currentPath, current); console.log(`Updated sessions/CURRENT.md`);}Note: This is a minimal auto-update. Code should also manually update CURRENT.md with more detail as part of session closing. This just ensures the timestamp and duration are always captured.
Definition of done: /sc end writes a session summary line to sessions/CURRENT.md. Graceful if file doesn’t exist. Build passes.
Task 11 — Add migration definition for v0.6.4 → v0.7.0
Section titled “Task 11 — Add migration definition for v0.6.4 → v0.7.0”Branch: feature/v0.7.0-file-restructure
Commit: feat: add v0.6.4 to v0.7.0 migration definition
Create src/migrations/v0.6.4-to-v0.7.0.ts:
export const migration = { fromVersion: "0.6.4", toVersion: "0.7.0", breaking: true, filesAdded: [ "CLAUDE.md", "sessions/CURRENT.md", ".github/workflows/claude-review.yml.disabled", ], filesChanged: [ "START-HERE.md", "STANDARDS.md", ".gitignore", ], filesRemoved: [ "BUILDER-INSTRUCTIONS.md", "ARCHITECT-REFERENCE.md", "CONTEXT.md", "SESSION-NOTES.md", "CHAT-LOG.md", "PROJECT-INSTRUCTIONS.md", "docs/BUILDER-INSTRUCTIONS.md", "docs/ARCHITECT-REFERENCE.md", ], instructions: "BREAKING: File structure changed. BUILDER-INSTRUCTIONS.md → CLAUDE.md. CONTEXT.md + SESSION-NOTES.md → sessions/CURRENT.md. CHAT-LOG.md removed. Run /sc init to update config with operatorAlias field.",};Update src/migrations/index.ts:
Add import and register the new migration in the array.
Definition of done: Migration chain is complete from v0.6.4 → v0.7.0. Breaking flag is true.
Task 12 — Update scaffolder’s own project files
Section titled “Task 12 — Update scaffolder’s own project files”Branch: feature/v0.7.0-file-restructure
Commit: docs: update scaffolder project files for v0.7.0
The scaffolder itself needs its structure updated to match what it generates.
- Create
sessions/directory andsessions/logs/in the scaffolder project root - Create
sessions/CURRENT.mdby combining content from current CONTEXT.md and SESSION-NOTES.md - Create
docs/features/directory (empty) - Create
.claude/rules/directory (empty) - Rename
BUILDER-INSTRUCTIONS.mdat scaffolder root →CLAUDE.md - Update
docs/ARCHITECTURE.mdto reflect new file structure
Do NOT delete the old files yet — they’ll be cleaned up after the release is tagged and confirmed working.
Definition of done: Scaffolder’s own structure includes sessions/, docs/features/, .claude/rules/, and CLAUDE.md at root.
Task 13 — Rename _system/ARCHITECT-REFERENCE.md
Section titled “Task 13 — Rename _system/ARCHITECT-REFERENCE.md”Branch: feature/v0.7.0-file-restructure
Commit: refactor: rename ARCHITECT-REFERENCE.md to CHAT-REFERENCE.md in _system
File: /mnt/d/Claude/_system/ARCHITECT-REFERENCE.md
Rename to: /mnt/d/Claude/_system/CHAT-REFERENCE.md
Update the header inside the file:
# CHAT-REFERENCE.md — Full reference for [CHAT_AI_NAME]Replace all [ARCHITECT_NAME] with [CHAT_AI_NAME] and [BUILDER_NAME] with [CODE_AI_NAME] throughout.
Note: This file is outside the git repo. It’s the operator’s personal system file. This is a filesystem operation, not a committed change. Code should do this and confirm.
Definition of done: File renamed. All placeholder names updated. Old filename no longer exists.
Task 14 — Version bump, CHANGELOG, and PR
Section titled “Task 14 — Version bump, CHANGELOG, and PR”Branch: feature/v0.7.0-file-restructure
Commit: chore: bump version to 0.7.0
Commit: docs: update CHANGELOG for v0.7.0
-
Bump version in
package.jsonto0.7.0 -
Update
versions.json:- Set
"latest": "0.7.0" - Add entry:
"0.7.0": { "breaking": true, "changes": ["BREAKING: File structure migration — sessions/ folder, CLAUDE.md replaces BUILDER-INSTRUCTIONS.md, CURRENT.md replaces CONTEXT.md + SESSION-NOTES.md, CHAT-LOG.md removed, docs/handoffs/ removed, placeholder names changed to CHAT_AI_NAME/CODE_AI_NAME, always-nested docs/ with features/ subfolder, .claude/rules/ added, optional GitHub Action PR review template"] } - Set
-
Update
CHANGELOG.md:
## [0.7.0] — 2026-03-15### Added- feat: sessions/ folder with CURRENT.md and logs/ for all session state- feat: CLAUDE.md template — native Claude Code loading, replaces BUILDER-INSTRUCTIONS.md- feat: docs/features/ subfolder for feature-specific docs- feat: .claude/rules/ for modular path-scoped rules- feat: optional GitHub Action PR review template (claude-review.yml.disabled)- feat: auto-update sessions/CURRENT.md on /sc end- feat: session log naming convention with version, date, type, and operator
### Changed- BREAKING: BUILDER-INSTRUCTIONS.md → CLAUDE.md at project root- BREAKING: CONTEXT.md + SESSION-NOTES.md → sessions/CURRENT.md- BREAKING: placeholder names [ARCHITECT_NAME]/[BUILDER_NAME] → [CHAT_AI_NAME]/[CODE_AI_NAME]- refactor: START-HERE.md rewritten for simplified session flow- refactor: /sc done writes to sessions/logs/ instead of docs/handoffs/- refactor: _system/ARCHITECT-REFERENCE.md renamed to CHAT-REFERENCE.md
### Removed- CHAT-LOG.md (replaced by session logs)- docs/handoffs/ (replaced by sessions/logs/)- PROJECT-INSTRUCTIONS.md from per-project output (system doc only)- ARCHITECT-REFERENCE.md from per-project output (system doc only)- Dual-copy of BUILDER-INSTRUCTIONS.md to docs/ (CLAUDE.md at root only)-
Update README.md badge to v0.7.0
-
Open PR: feature/v0.7.0-file-restructure → dev
-
Merge to dev
-
Verify:
npm run buildpasses,create --dry-run "test"shows correct structure -
Open PR: dev → main
-
Report PR URL to operator for review and merge
-
After merge: tag v0.7.0
-
Update sessions/CURRENT.md (using the new file!)
-
Push all changes
Definition of done: v0.7.0 tagged on main. New file structure in place. All templates use new placeholder names. Dry run output matches. Build passes clean.