diff --git a/README.md b/README.md index 2ef55cb99..92aac48d7 100644 --- a/README.md +++ b/README.md @@ -297,7 +297,7 @@ delete any comments that you made, but you can't delete comments anybody else ma After this prompt is entered, you should see Claude Code kick off the planning and spec drafting process. Claude Code will also trigger some of the built-in scripts to set up the repository. -Once this step is completed, you should have a new branch created (e.g., `001-create-taskify`), as well as a new specification in the `specs/001-create-taskify` directory. +Once this step is completed, you should have a new branch created (e.g., `001-create-taskify`), as well as a new specification in the `docs/specs/001-create-taskify` directory. The produced specification should contain a set of user stories and functional requirements, as defined in the template. @@ -314,9 +314,10 @@ At this stage, your project folder contents should resemble the following: │ ├── get-feature-paths.sh │ ├── setup-plan.sh │ └── update-claude-md.sh -├── specs -│ └── 001-create-taskify -│ └── spec.md +├── docs +│ └── specs +│ └── 001-create-taskify +│ └── spec.md └── templates ├── plan-template.md ├── spec-template.md @@ -366,16 +367,17 @@ The output of this step will include a number of implementation detail documents │ ├── get-feature-paths.sh │ ├── setup-plan.sh │ └── update-claude-md.sh -├── specs -│ └── 001-create-taskify -│ ├── contracts -│ │ ├── api-spec.json -│ │ └── signalr-spec.md -│ ├── data-model.md -│ ├── plan.md -│ ├── quickstart.md -│ ├── research.md -│ └── spec.md +├── docs +│ └── specs +│ └── 001-create-taskify +│ ├── contracts +│ │ ├── api-spec.json +│ │ └── signalr-spec.md +│ ├── data-model.md +│ ├── plan.md +│ ├── quickstart.md +│ ├── research.md +│ └── spec.md └── templates ├── CLAUDE-template.md ├── plan-template.md diff --git a/docs/quickstart.md b/docs/quickstart.md index 11d5c1e94..d0c008f83 100644 --- a/docs/quickstart.md +++ b/docs/quickstart.md @@ -104,7 +104,7 @@ to be doing that are obvious from reading this. Because I don't know if there's Finally, implement the solution: ```text -implement specs/002-create-taskify/plan.md +implement docs/specs/002-create-taskify/plan.md ``` ## Key Principles diff --git a/scripts/bash/common.sh b/scripts/bash/common.sh index 582d940de..82a5db0e4 100644 --- a/scripts/bash/common.sh +++ b/scripts/bash/common.sh @@ -13,7 +13,7 @@ check_feature_branch() { fi; return 0 } -get_feature_dir() { echo "$1/specs/$2"; } +get_feature_dir() { echo "$1/docs/specs/$2"; } get_feature_paths() { local repo_root=$(get_repo_root) diff --git a/scripts/bash/create-new-feature.sh b/scripts/bash/create-new-feature.sh index bc4b4067a..8fb781cfe 100644 --- a/scripts/bash/create-new-feature.sh +++ b/scripts/bash/create-new-feature.sh @@ -19,7 +19,7 @@ if [ -z "$FEATURE_DESCRIPTION" ]; then fi REPO_ROOT=$(git rev-parse --show-toplevel) -SPECS_DIR="$REPO_ROOT/specs" +SPECS_DIR="$REPO_ROOT/docs/specs" mkdir -p "$SPECS_DIR" HIGHEST=0 diff --git a/scripts/bash/update-agent-context.sh b/scripts/bash/update-agent-context.sh index a79edd9e3..163e5d6ed 100644 --- a/scripts/bash/update-agent-context.sh +++ b/scripts/bash/update-agent-context.sh @@ -2,7 +2,7 @@ set -e REPO_ROOT=$(git rev-parse --show-toplevel) CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD) -FEATURE_DIR="$REPO_ROOT/specs/$CURRENT_BRANCH" +FEATURE_DIR="$REPO_ROOT/docs/specs/$CURRENT_BRANCH" NEW_PLAN="$FEATURE_DIR/plan.md" CLAUDE_FILE="$REPO_ROOT/CLAUDE.md"; GEMINI_FILE="$REPO_ROOT/GEMINI.md"; COPILOT_FILE="$REPO_ROOT/.github/copilot-instructions.md"; CURSOR_FILE="$REPO_ROOT/.cursor/rules/specify-rules.mdc"; QWEN_FILE="$REPO_ROOT/QWEN.md"; AGENTS_FILE="$REPO_ROOT/AGENTS.md" AGENT_TYPE="$1" diff --git a/scripts/powershell/common.ps1 b/scripts/powershell/common.ps1 index 3e04a1ece..c561679b1 100644 --- a/scripts/powershell/common.ps1 +++ b/scripts/powershell/common.ps1 @@ -21,7 +21,7 @@ function Test-FeatureBranch { function Get-FeatureDir { param([string]$RepoRoot, [string]$Branch) - Join-Path $RepoRoot "specs/$Branch" + Join-Path $RepoRoot "docs/specs/$Branch" } function Get-FeaturePathsEnv { diff --git a/scripts/powershell/create-new-feature.ps1 b/scripts/powershell/create-new-feature.ps1 index b99f08898..7af639afe 100644 --- a/scripts/powershell/create-new-feature.ps1 +++ b/scripts/powershell/create-new-feature.ps1 @@ -14,7 +14,7 @@ if (-not $FeatureDescription -or $FeatureDescription.Count -eq 0) { $featureDesc = ($FeatureDescription -join ' ').Trim() $repoRoot = git rev-parse --show-toplevel -$specsDir = Join-Path $repoRoot 'specs' +$specsDir = Join-Path $repoRoot 'docs/specs' New-Item -ItemType Directory -Path $specsDir -Force | Out-Null $highest = 0 diff --git a/scripts/powershell/update-agent-context.ps1 b/scripts/powershell/update-agent-context.ps1 index e9f345508..b65831bed 100644 --- a/scripts/powershell/update-agent-context.ps1 +++ b/scripts/powershell/update-agent-context.ps1 @@ -5,7 +5,7 @@ $ErrorActionPreference = 'Stop' $repoRoot = git rev-parse --show-toplevel $currentBranch = git rev-parse --abbrev-ref HEAD -$featureDir = Join-Path $repoRoot "specs/$currentBranch" +$featureDir = Join-Path $repoRoot "docs/specs/$currentBranch" $newPlan = Join-Path $featureDir 'plan.md' if (-not (Test-Path $newPlan)) { Write-Error "ERROR: No plan.md found at $newPlan"; exit 1 } diff --git a/spec-driven.md b/spec-driven.md index a932c2eb1..45005de6a 100644 --- a/spec-driven.md +++ b/spec-driven.md @@ -81,7 +81,7 @@ This command transforms a simple feature description (the user-prompt) into a co 1. **Automatic Feature Numbering**: Scans existing specs to determine the next feature number (e.g., 001, 002, 003) 2. **Branch Creation**: Generates a semantic branch name from your description and creates it automatically 3. **Template-Based Generation**: Copies and customizes the feature specification template with your requirements -4. **Directory Structure**: Creates the proper `specs/[branch-name]/` structure for all related documents +4. **Directory Structure**: Creates the proper `docs/specs/[branch-name]/` structure for all related documents ### The `/plan` Command @@ -125,7 +125,7 @@ Total: ~12 hours of documentation work # This automatically: # - Creates branch "003-chat-system" -# - Generates specs/003-chat-system/spec.md +# - Generates docs/specs/003-chat-system/spec.md # - Populates it with structured requirements # Step 2: Generate implementation plan (5 minutes) @@ -135,12 +135,12 @@ Total: ~12 hours of documentation work /tasks # This automatically creates: -# - specs/003-chat-system/plan.md -# - specs/003-chat-system/research.md (WebSocket library comparisons) -# - specs/003-chat-system/data-model.md (Message and User schemas) -# - specs/003-chat-system/contracts/ (WebSocket events, REST endpoints) -# - specs/003-chat-system/quickstart.md (Key validation scenarios) -# - specs/003-chat-system/tasks.md (Task list derived from the plan) +# - docs/specs/003-chat-system/plan.md +# - docs/specs/003-chat-system/research.md (WebSocket library comparisons) +# - docs/specs/003-chat-system/data-model.md (Message and User schemas) +# - docs/specs/003-chat-system/contracts/ (WebSocket events, REST endpoints) +# - docs/specs/003-chat-system/quickstart.md (Key validation scenarios) +# - docs/specs/003-chat-system/tasks.md (Task list derived from the plan) ``` In 15 minutes, you have: diff --git a/templates/plan-template.md b/templates/plan-template.md index cb3eca1f9..1f7ff066d 100644 --- a/templates/plan-template.md +++ b/templates/plan-template.md @@ -8,7 +8,7 @@ scripts: # Implementation Plan: [FEATURE] **Branch**: `[###-feature-name]` | **Date**: [DATE] | **Spec**: [link] -**Input**: Feature specification from `/specs/[###-feature-name]/spec.md` +**Input**: Feature specification from `/docs/specs/[###-feature-name]/spec.md` ## Execution Flow (/plan command scope) ``` @@ -59,7 +59,7 @@ scripts: ### Documentation (this feature) ``` -specs/[###-feature]/ +docs/specs/[###-feature]/ ├── plan.md # This file (/plan command output) ├── research.md # Phase 0 output (/plan command) ├── data-model.md # Phase 1 output (/plan command) @@ -214,4 +214,4 @@ ios/ or android/ - [ ] Complexity deviations documented --- -*Based on Constitution v2.1.1 - See `/memory/constitution.md`* +*Based on Constitution v2.1.1 - See `.specify/memory/constitution.md`* \ No newline at end of file diff --git a/templates/tasks-template.md b/templates/tasks-template.md index b8a28fafd..ad53837ea 100644 --- a/templates/tasks-template.md +++ b/templates/tasks-template.md @@ -1,6 +1,6 @@ # Tasks: [FEATURE NAME] -**Input**: Design documents from `/specs/[###-feature-name]/` +**Input**: Design documents from `/docs/specs/[###-feature-name]/` **Prerequisites**: plan.md (required), research.md, data-model.md, contracts/ ## Execution Flow (main)