Skip to content

Commit 584eb22

Browse files
committed
feat: use .documentation/ instead of .specify/ as Spark fork identifier
- Updated all templates, scripts, and documentation to use .documentation/ - Modified CLI to create .documentation/ directory instead of .specify/ - Updated build scripts to output .documentation/ in release packages - This distinguishes Spec Kit Spark from upstream GitHub spec-kit - Consolidates all AI agent output in .documentation/ separate from code
1 parent c333616 commit 584eb22

15 files changed

Lines changed: 49 additions & 45 deletions

.devcontainer/devcontainer.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@
6868
"speckit.implement": true
6969
},
7070
"chat.tools.terminal.autoApprove": {
71-
".specify/scripts/bash/": true,
72-
".specify/scripts/powershell/": true
71+
".documentation/scripts/bash/": true,
72+
".documentation/scripts/powershell/": true
7373
}
7474
}
7575
}

.documentation/installation.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ uvx --from git+https://github.com/MarkHazleton/spec-kit.git specify init --here
3838
uvx --from git+https://github.com/MarkHazleton/spec-kit.git specify init .
3939
```
4040

41-
This adds the Spec Kit structure (`.specify/`, `.documentation/memory/`, templates, scripts) to your existing project without disrupting your current files.
41+
This adds the Spec Kit structure (`.documentation/`, `.documentation/memory/`, templates, scripts) to your existing project without disrupting your current files.
4242

4343
> [!TIP]
4444
> **Brownfield Tip**: After initialization, use the `/speckit.discover-constitution` command to help create a constitution from your existing codebase patterns. This analyzes your code conventions, architecture decisions, and established practices to draft a constitution that reflects how your project already works.
@@ -104,7 +104,7 @@ These commands only need a constitution and work independently on any codebase:
104104
- `/speckit.pr-review` - Review pull requests against constitution
105105
- `/speckit.site-audit` - Comprehensive codebase audit for security, quality, and compliance
106106

107-
The `.specify/scripts` directory will contain both `.sh` and `.ps1` scripts.
107+
The `.documentation/scripts` directory will contain both `.sh` and `.ps1` scripts.
108108

109109
## Troubleshooting
110110

.documentation/upgrade.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ When Spec Kit releases new features (like new slash commands or updated template
5151
Running `specify init --here --force` will update:
5252

5353
-**Slash command files** (`.claude/commands/`, `.github/prompts/`, etc.)
54-
-**Script files** (`.specify/scripts/`)
55-
-**Template files** (`.specify/templates/`)
54+
-**Script files** (`.documentation/scripts/`)
55+
-**Template files** (`.documentation/templates/`)
5656
-**Shared memory files** (`.documentation/memory/`) - **⚠️ See warnings below**
5757

5858
### What stays safe?
@@ -126,11 +126,11 @@ git restore .documentation/memory/constitution.md
126126

127127
### 2. Custom template modifications
128128

129-
If you customized any templates in `.specify/templates/`, the upgrade will overwrite them. Back them up first:
129+
If you customized any templates in `.documentation/templates/`, the upgrade will overwrite them. Back them up first:
130130

131131
```bash
132132
# Back up custom templates
133-
cp -r .specify/templates .specify/templates-backup
133+
cp -r .documentation/templates .documentation/templates-backup
134134

135135
# After upgrade, merge your changes back manually
136136
```
@@ -179,7 +179,7 @@ git restore .documentation/memory/constitution.md
179179
```bash
180180
# 1. Back up customizations
181181
cp .documentation/memory/constitution.md /tmp/constitution-backup.md
182-
cp -r .specify/templates /tmp/templates-backup
182+
cp -r .documentation/templates /tmp/templates-backup
183183

184184
# 2. Upgrade CLI
185185
uv tool install specify-cli --force --from git+https://github.com/MarkHazleton/spec-kit.git
@@ -327,15 +327,15 @@ This warning appears when you run `specify init --here` (or `specify init .`) in
327327

328328
1. **The directory has existing content** - In the example, 25 files/folders
329329
2. **Files will be merged** - New template files will be added alongside your existing files
330-
3. **Some files may be overwritten** - If you already have Spec Kit files (`.claude/`, `.specify/`, etc.), they'll be replaced with the new versions
330+
3. **Some files may be overwritten** - If you already have Spec Kit files (`.claude/`, `.documentation/`, etc.), they'll be replaced with the new versions
331331

332332
**What gets overwritten:**
333333

334334
Only Spec Kit infrastructure files:
335335

336336
- Agent command files (`.claude/commands/`, `.github/prompts/`, etc.)
337-
- Scripts in `.specify/scripts/`
338-
- Templates in `.specify/templates/`
337+
- Scripts in `.documentation/scripts/`
338+
- Templates in `.documentation/templates/`
339339
- Memory files in `.documentation/memory/` (including constitution)
340340

341341
**What stays untouched:**

.github/workflows/scripts/create-release-packages.ps1

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,11 @@ New-Item -ItemType Directory -Path $GenReleasesDir -Force | Out-Null
6161
function Rewrite-Paths {
6262
param([string]$Content)
6363

64-
$Content = $Content -replace '(/?)\bmemory/', '.specify/memory/'
65-
$Content = $Content -replace '(/?)\bscripts/', '.specify/scripts/'
66-
$Content = $Content -replace '(/?)\btemplates/', '.specify/templates/'
64+
# Spec Kit Spark uses .documentation/ instead of .specify/ to distinguish from upstream
65+
$Content = $Content -replace '(/?)\.specify/', '.documentation/'
66+
$Content = $Content -replace '(/?)\bmemory/', '.documentation/memory/'
67+
$Content = $Content -replace '(/?)\bscripts/', '.documentation/scripts/'
68+
$Content = $Content -replace '(/?)\btemplates/', '.documentation/templates/'
6769
return $Content
6870
}
6971

@@ -212,13 +214,13 @@ function Build-Variant {
212214
New-Item -ItemType Directory -Path $baseDir -Force | Out-Null
213215

214216
# Copy base structure but filter scripts by variant
215-
$specDir = Join-Path $baseDir ".specify"
217+
$specDir = Join-Path $baseDir ".documentation"
216218
New-Item -ItemType Directory -Path $specDir -Force | Out-Null
217219

218220
# Copy memory directory
219221
if (Test-Path "memory") {
220222
Copy-Item -Path "memory" -Destination $specDir -Recurse -Force
221-
Write-Host "Copied memory -> .specify"
223+
Write-Host "Copied memory -> .documentation"
222224
}
223225

224226
# Only copy the relevant script variant directory
@@ -230,13 +232,13 @@ function Build-Variant {
230232
'sh' {
231233
if (Test-Path "scripts/bash") {
232234
Copy-Item -Path "scripts/bash" -Destination $scriptsDestDir -Recurse -Force
233-
Write-Host "Copied scripts/bash -> .specify/scripts"
235+
Write-Host "Copied scripts/bash -> .documentation/scripts"
234236
}
235237
}
236238
'ps' {
237239
if (Test-Path "scripts/powershell") {
238240
Copy-Item -Path "scripts/powershell" -Destination $scriptsDestDir -Recurse -Force
239-
Write-Host "Copied scripts/powershell -> .specify/scripts"
241+
Write-Host "Copied scripts/powershell -> .documentation/scripts"
240242
}
241243
}
242244
}
@@ -261,7 +263,7 @@ function Build-Variant {
261263
New-Item -ItemType Directory -Path $destFileDir -Force | Out-Null
262264
Copy-Item -Path $_.FullName -Destination $destFile -Force
263265
}
264-
Write-Host "Copied templates -> .specify/templates"
266+
Write-Host "Copied templates -> .documentation/templates"
265267
}
266268

267269
# Generate agent-specific command files

.github/workflows/scripts/create-release-packages.sh

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,12 @@ mkdir -p "$GENRELEASES_DIR"
3131
rm -rf "$GENRELEASES_DIR"/* || true
3232

3333
rewrite_paths() {
34+
# Spec Kit Spark uses .documentation/ instead of .specify/ to distinguish from upstream
3435
sed -E \
35-
-e 's@(/?)memory/@.specify/memory/@g' \
36-
-e 's@(/?)scripts/@.specify/scripts/@g' \
37-
-e 's@(/?)templates/@.specify/templates/@g'
36+
-e 's@(/?)\.specify/@.documentation/@g' \
37+
-e 's@(/?)memory/@.documentation/memory/@g' \
38+
-e 's@(/?)scripts/@.documentation/scripts/@g' \
39+
-e 's@(/?)templates/@.documentation/templates/@g'
3840
}
3941

4042
generate_commands() {
@@ -128,29 +130,29 @@ build_variant() {
128130
mkdir -p "$base_dir"
129131

130132
# Copy base structure but filter scripts by variant
131-
SPEC_DIR="$base_dir/.specify"
133+
SPEC_DIR="$base_dir/.documentation"
132134
mkdir -p "$SPEC_DIR"
133-
134-
[[ -d memory ]] && { cp -r memory "$SPEC_DIR/"; echo "Copied memory -> .specify"; }
135+
136+
[[ -d memory ]] && { cp -r memory "$SPEC_DIR/"; echo "Copied memory -> .documentation"; }
135137

136138
# Only copy the relevant script variant directory
137139
if [[ -d scripts ]]; then
138140
mkdir -p "$SPEC_DIR/scripts"
139141
case $script in
140142
sh)
141-
[[ -d scripts/bash ]] && { cp -r scripts/bash "$SPEC_DIR/scripts/"; echo "Copied scripts/bash -> .specify/scripts"; }
143+
[[ -d scripts/bash ]] && { cp -r scripts/bash "$SPEC_DIR/scripts/"; echo "Copied scripts/bash -> .documentation/scripts"; }
142144
# Copy any script files that aren't in variant-specific directories
143145
find scripts -maxdepth 1 -type f -exec cp {} "$SPEC_DIR/scripts/" \; 2>/dev/null || true
144146
;;
145147
ps)
146-
[[ -d scripts/powershell ]] && { cp -r scripts/powershell "$SPEC_DIR/scripts/"; echo "Copied scripts/powershell -> .specify/scripts"; }
148+
[[ -d scripts/powershell ]] && { cp -r scripts/powershell "$SPEC_DIR/scripts/"; echo "Copied scripts/powershell -> .documentation/scripts"; }
147149
# Copy any script files that aren't in variant-specific directories
148150
find scripts -maxdepth 1 -type f -exec cp {} "$SPEC_DIR/scripts/" \; 2>/dev/null || true
149151
;;
150152
esac
151153
fi
152154

153-
[[ -d templates ]] && { mkdir -p "$SPEC_DIR/templates"; find templates -type f -not -path "templates/commands/*" -not -name "vscode-settings.json" -exec cp --parents {} "$SPEC_DIR"/ \; ; echo "Copied templates -> .specify/templates"; }
155+
[[ -d templates ]] && { mkdir -p "$SPEC_DIR/templates"; find templates -type f -not -path "templates/commands/*" -not -name "vscode-settings.json" -exec cp --parents {} "$SPEC_DIR"/ \; ; echo "Copied templates -> .documentation/templates"; }
154156

155157
# NOTE: We substitute {ARGS} internally. Outward tokens differ intentionally:
156158
# * Markdown/prompt (claude, copilot, cursor-agent, opencode): $ARGUMENTS

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -797,7 +797,7 @@ At this stage, your project folder contents should resemble the following:
797797
│ └── specs
798798
│ └── 001-create-taskify
799799
│ └── spec.md
800-
└── .specify
800+
└── .documentation
801801
├── scripts
802802
│ ├── check-prerequisites.sh
803803
│ ├── common.sh
@@ -867,7 +867,7 @@ The output of this step will include a number of implementation detail documents
867867
│ ├── quickstart.md
868868
│ ├── research.md
869869
│ └── spec.md
870-
└── .specify
870+
└── .documentation
871871
├── scripts
872872
│ ├── check-prerequisites.sh
873873
│ ├── common.sh

scripts/bash/create-new-feature.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ fi
7171
find_repo_root() {
7272
local dir="$1"
7373
while [ "$dir" != "/" ]; do
74-
if [ -d "$dir/.git" ] || [ -d "$dir/.specify" ]; then
74+
if [ -d "$dir/.git" ] || [ -d "$dir/.documentation" ]; then
7575
echo "$dir"
7676
return 0
7777
fi
@@ -280,7 +280,7 @@ fi
280280
FEATURE_DIR="$SPECS_DIR/$BRANCH_NAME"
281281
mkdir -p "$FEATURE_DIR"
282282

283-
TEMPLATE="$REPO_ROOT/.specify/templates/spec-template.md"
283+
TEMPLATE="$REPO_ROOT/.documentation/templates/spec-template.md"
284284
SPEC_FILE="$FEATURE_DIR/spec.md"
285285
if [ -f "$TEMPLATE" ]; then cp "$TEMPLATE" "$SPEC_FILE"; else touch "$SPEC_FILE"; fi
286286

scripts/bash/setup-plan.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ check_feature_branch "$CURRENT_BRANCH" "$HAS_GIT" || exit 1
3737
mkdir -p "$FEATURE_DIR"
3838

3939
# Copy plan template if it exists
40-
TEMPLATE="$REPO_ROOT/.specify/templates/plan-template.md"
40+
TEMPLATE="$REPO_ROOT/.documentation/templates/plan-template.md"
4141
if [[ -f "$TEMPLATE" ]]; then
4242
cp "$TEMPLATE" "$IMPL_PLAN"
4343
echo "Copied plan template to $IMPL_PLAN"

scripts/bash/update-agent-context.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ Q_FILE="$REPO_ROOT/AGENTS.md"
7777
BOB_FILE="$REPO_ROOT/AGENTS.md"
7878

7979
# Template file
80-
TEMPLATE_FILE="$REPO_ROOT/.specify/templates/agent-file-template.md"
80+
TEMPLATE_FILE="$REPO_ROOT/.documentation/templates/agent-file-template.md"
8181

8282
# Global variables for parsed plan data
8383
NEW_LANG=""

scripts/powershell/create-new-feature.ps1

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ $featureDesc = ($FeatureDescription -join ' ').Trim()
4141
function Find-RepositoryRoot {
4242
param(
4343
[string]$StartDir,
44-
[string[]]$Markers = @('.git', '.specify')
44+
[string[]]$Markers = @('.git', '.documentation')
4545
)
4646
$current = Resolve-Path $StartDir
4747
while ($true) {
@@ -254,7 +254,7 @@ if ($hasGit) {
254254
$featureDir = Join-Path $specsDir $branchName
255255
New-Item -ItemType Directory -Path $featureDir -Force | Out-Null
256256

257-
$template = Join-Path $repoRoot '.specify/templates/spec-template.md'
257+
$template = Join-Path $repoRoot '.documentation/templates/spec-template.md'
258258
$specFile = Join-Path $featureDir 'spec.md'
259259
if (Test-Path $template) {
260260
Copy-Item $template $specFile -Force

0 commit comments

Comments
 (0)