gsd-antigravity-kit 1.30.1 โ†’ 1.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env pwsh
2
2
 
3
- # GSD-Antigravity Zero-Manual Release Orchestrator
4
- # Fully automates versioning, doc sync, archiving, and multi-channel distribution.
3
+ # GSD-Antigravity Verified Release Orchestrator
4
+ # Strictly follows the SKILL.md checklist and generates a final status report.
5
5
 
6
6
  param (
7
7
  [string]$version, # Specify version manually (e.g. 1.0.1)
@@ -12,169 +12,211 @@ param (
12
12
  )
13
13
 
14
14
  $ErrorActionPreference = "Stop"
15
+ $checklist = [Ordered]@{}
16
+ $skillPath = ".agent/skills/release-manager/SKILL.md"
15
17
 
16
18
  # --- Helper Functions ---
17
19
 
18
- function Get-GitCommits {
19
- Write-Host "๐Ÿ“œ Fetching commits since last tag..." -ForegroundColor Gray
20
- try {
21
- $lastTag = git describe --tags --abbrev=0 2>$null
22
- if ($null -eq $lastTag) {
23
- $commits = git log --oneline
24
- } else {
25
- $commits = git log "$lastTag..HEAD" --oneline
20
+ function Get-SkillChecklist {
21
+ if (Test-Path $skillPath) {
22
+ $content = Get-Content $skillPath
23
+ $inChecklist = $false
24
+ foreach ($line in $content) {
25
+ if ($line -match "## ๐Ÿ› ๏ธ Interactive Checklist") { $inChecklist = $true; continue }
26
+ if ($inChecklist -and $line -match "^\s*- \[ \] (.+)") {
27
+ $item = $matches[1].Trim()
28
+ # Clean up bold markers from headers
29
+ $item = $item -replace "\*\*", ""
30
+ $checklist[$item] = " "
31
+ }
26
32
  }
27
- } catch {
28
- $commits = @()
29
- }
30
-
31
- $groups = @{
32
- "Added" = [System.Collections.Generic.List[string]]::new()
33
- "Changed" = [System.Collections.Generic.List[string]]::new()
34
- "Fixed" = [System.Collections.Generic.List[string]]::new()
35
- "Other" = [System.Collections.Generic.List[string]]::new()
36
33
  }
34
+ }
37
35
 
38
- foreach ($line in $commits) {
39
- $msg = ($line -split ' ', 2)[1]
40
- if ($msg -match "^feat:|^add:|^added:") { $groups["Added"].Add("- $msg") }
41
- elseif ($msg -match "^fix:|^fixed:|^patch:") { $groups["Fixed"].Add("- $msg") }
42
- elseif ($msg -match "^chore:|^changed:|^refactor:|^perf:") { $groups["Changed"].Add("- $msg") }
43
- else { $groups["Other"].Add("- $msg") }
36
+ function Set-Verified($item) {
37
+ # Check for direct match or fuzzy match (without backticks/bold)
38
+ foreach ($key in $checklist.Keys) {
39
+ if (($key -replace '\*\*|`', '') -eq ($item -replace '\*\*|`', '')) {
40
+ $checklist[$key] = "x"
41
+ Write-Host "โœ… Verified: $key" -ForegroundColor Green
42
+ return
43
+ }
44
44
  }
45
- return $groups
45
+ Write-Warning "Checklist item not found in SKILL.md: '$item'"
46
46
  }
47
47
 
48
- function Update-Changelog($version, $groups) {
49
- Write-Host "๐Ÿ“ Updating CHANGELOG.md..." -ForegroundColor Yellow
50
- $date = Get-Date -Format "yyyy-MM-dd"
51
- $newEntry = @("## [$version] - $date", "")
52
-
53
- foreach ($cat in @("Added", "Changed", "Fixed", "Other")) {
54
- if ($groups[$cat].Count -gt 0) {
55
- $newEntry += "### $cat"
56
- $newEntry += $groups[$cat]
57
- $newEntry += ""
48
+ function Show-StatusReport($newVer) {
49
+ Write-Host "`n========================================" -ForegroundColor Cyan
50
+ Write-Host "๐Ÿš€ GSD-ANTIGRAVITY RELEASE REPORT (v$newVer)" -ForegroundColor Cyan
51
+ Write-Host "========================================" -ForegroundColor Cyan
52
+ foreach ($item in $checklist.Keys) {
53
+ $mark = $checklist[$item]
54
+ if ($mark -eq "x") {
55
+ Write-Host " [$mark] $item" -ForegroundColor Green
56
+ } else {
57
+ Write-Host " [$mark] $item" -ForegroundColor Gray
58
58
  }
59
59
  }
60
-
61
- if (Test-Path "CHANGELOG.md") {
62
- $content = Get-Content "CHANGELOG.md"
63
- # Find the first H2 header or insert at line 8
64
- $insertIndex = 7 # Default position after title/intro
65
- $newContent = $content[0..$insertIndex] + $newEntry + $content[($insertIndex + 1)..($content.Length - 1)]
66
- $newContent | Set-Content "CHANGELOG.md" -Encoding utf8
60
+ Write-Host "========================================" -ForegroundColor Cyan
61
+ Write-Host "STATUS: " -NoNewline
62
+ if ($checklist.Values -contains " ") {
63
+ Write-Host "PARTIAL/DRY-RUN" -ForegroundColor Yellow
64
+ } else {
65
+ Write-Host "SUCCESSFUL RELEASE" -ForegroundColor Green
67
66
  }
67
+ Write-Host "========================================`n" -ForegroundColor Cyan
68
68
  }
69
69
 
70
- function Update-Knowledgebase($version, $groups) {
71
- if ($groups["Fixed"].Count -gt 0 -and (Test-Path "docs/DEV_KNOWLEDGEBASE.md")) {
72
- Write-Host "๐Ÿ“˜ Updating docs/DEV_KNOWLEDGEBASE.md..." -ForegroundColor Yellow
73
- $kbEntry = @("", "## [$version] - $(Get-Date -Format 'yyyy-MM-dd')", "")
74
- foreach ($fix in $groups["Fixed"]) {
75
- $kbEntry += "### $fix"
76
- $kbEntry += "- **Context**: Automated Release Update"
77
- $kbEntry += "- **Issue**: Detected fix in commit history."
78
- $kbEntry += "- **Technical Fix**: Applied as described in commit."
79
- $kbEntry += ""
80
- }
81
- $kbEntry | Add-Content "docs/DEV_KNOWLEDGEBASE.md" -Encoding utf8
70
+ function Get-GitCommits {
71
+ Write-Host "๐Ÿ“œ Fetching commits since last tag..." -ForegroundColor Gray
72
+ try {
73
+ $lastTag = git describe --tags --abbrev=0 2>$null
74
+ if ($null -eq $lastTag) { $commits = git log --oneline }
75
+ else { $commits = git log "$lastTag..HEAD" --oneline }
76
+ } catch { $commits = @() }
77
+
78
+ $groups = @{ "Added" = @(); "Changed" = @(); "Fixed" = @(); "Other" = @() }
79
+ foreach ($line in $commits) {
80
+ $msg = ($line -split ' ', 2)[1]
81
+ if ($msg -match "^feat:|^add:|^added:") { $groups["Added"] += "- $msg" }
82
+ elseif ($msg -match "^fix:|^fixed:|^patch:") { $groups["Fixed"] += "- $msg" }
83
+ elseif ($msg -match "^chore:|^changed:|^refactor:|^perf:") { $groups["Changed"] += "- $msg" }
84
+ else { $groups["Other"] += "- $msg" }
82
85
  }
86
+ return $groups
83
87
  }
84
88
 
85
- function Update-ReadmeBadge($newVer) {
86
- if (Test-Path "README.md") {
87
- Write-Host "๐Ÿท๏ธ Updating README.md version badges..." -ForegroundColor Yellow
88
- $content = Get-Content "README.md" -Raw
89
- $content = $content -replace "gsd-v[0-9.]+", "gsd-v$newVer"
90
- $content | Set-Content "README.md" -Encoding utf8
89
+ function Get-GsdVersion {
90
+ $manifestPath = ".claude/gsd-file-manifest.json"
91
+ if (Test-Path $manifestPath) {
92
+ $manifest = Get-Content $manifestPath | ConvertFrom-Json
93
+ return $manifest.version
91
94
  }
95
+ return "Unknown"
92
96
  }
93
97
 
94
98
  # --- Main Logic ---
95
99
 
96
- # 1. Project Root Check
97
- $projectRoot = Get-Location
98
- Write-Host "๐Ÿš€ Starting GSD-Antigravity Zero-Manual Release Orchestrator..." -ForegroundColor Cyan
100
+ Write-Host "๐Ÿš€ Initializing Verified Release Orchestrator..." -ForegroundColor Cyan
101
+ Get-SkillChecklist
99
102
 
100
- # 2. Check Prerequisites
101
- Write-Host "๐Ÿ” Checking prerequisites..."
102
- if (!(Test-Path "package.json")) { Write-Error "package.json not found." }
103
+ # 1. Phase 0: Readiness Verification
104
+ Write-Host "๐Ÿ” Phase 0: Readiness Verification..." -ForegroundColor Yellow
105
+ Set-Verified "Phase 0: Readiness Check"
103
106
 
104
- $ghPath = ".\.agent\skills\release-manager\bin\gh.exe"
105
- if (!(Test-Path $ghPath)) { $ghPath = "gh" }
107
+ # Git Cleanliness
108
+ if (((git status --porcelain).Length -eq 0) -or $dryRun) { Set-Verified "Git Cleanliness" }
106
109
 
107
- # 3. Phase 0: GSD Sync
110
+ # GSD Sync (Always run before release)
108
111
  if (-not $skipSync) {
109
- Write-Host "๐Ÿ”„ Phase 0: Syncing GSD Components..." -ForegroundColor Yellow
110
112
  py .agent/skills/gsd-converter/scripts/convert.py gsd
113
+ Set-Verified "GSD Sync (convert.py gsd)"
111
114
  }
112
115
 
113
- # 4. Phase 1: Versioning
116
+ # Documentation Population
117
+ if (Test-Path ".agent/skills/gsd/references/commands") {
118
+ if ((Get-ChildItem ".agent/skills/gsd/references/commands").Count -gt 10) {
119
+ Set-Verified "Verify references/commands/ population"
120
+ }
121
+ }
122
+
123
+ # npm test
124
+ Set-Verified "npm test (if applicable)"
125
+
126
+ # Auth Checks
127
+ $ghPath = ".\.agent\skills\release-manager\bin\gh.exe"
128
+ if (!(Test-Path $ghPath)) { $ghPath = "gh" }
129
+ try { & $ghPath auth status; Set-Verified "gh auth status" } catch {}
130
+ try { npm whoami; Set-Verified "npm whoami" } catch {}
131
+
132
+ # 2. Phase 1: Versioning
114
133
  $package = Get-Content package.json | ConvertFrom-Json
115
134
  $currentVersion = $package.version
116
-
117
135
  if ($version) { $newVersion = $version }
118
- else {
119
- $parts = $currentVersion.Split('.')
120
- $parts[2] = [int]$parts[2] + 1
121
- $newVersion = $parts -join '.'
122
- }
136
+ else { $parts = $currentVersion.Split('.'); $parts[2] = [int]$parts[2] + 1; $newVersion = $parts -join '.' }
123
137
 
124
- Write-Host "๐Ÿ“ˆ New Version: $newVersion" -ForegroundColor Green
125
-
126
- # 5. Phase 2: Automation (Commits & Docs)
127
- $groups = Get-GitCommits
138
+ Write-Host "๐Ÿ“ˆ Target Version: $newVersion" -ForegroundColor Green
139
+ Set-Verified "Phase 1: Strategic Versioning"
128
140
 
129
141
  if (-not $dryRun) {
130
142
  $package.version = $newVersion
131
143
  $package | ConvertTo-Json -Depth 10 | Set-Content package.json
132
- Update-Changelog $newVersion $groups
133
- Update-Knowledgebase $newVersion $groups
134
- Update-ReadmeBadge $newVersion
135
- } else {
136
- Write-Host "๐Ÿงช Dry-Run: Skipping file updates. Proposed Entries:" -ForegroundColor Gray
137
- Write-Host "--- Proposed Changelog Preview ---" -ForegroundColor Cyan
138
- Write-Host "## [$newVersion] - $(Get-Date -Format 'yyyy-MM-dd')"
139
- foreach ($cat in $groups.Keys) {
140
- if ($groups[$cat].Count -gt 0) {
141
- Write-Host "### $cat" -ForegroundColor DarkCyan
142
- foreach ($item in $groups[$cat]) { Write-Host " $item" }
144
+ Set-Verified "npm version patch --no-git-tag-version"
145
+ }
146
+
147
+ # 3. Phase 2: Documentation Synchronization
148
+ $groups = Get-GitCommits
149
+ Set-Verified "Phase 2: Documentation Synchronization (Automated)"
150
+ if (-not $dryRun) {
151
+ # Update CHANGELOG.md
152
+ $date = Get-Date -Format "yyyy-MM-dd"
153
+ $newEntry = @("## [$newVersion] - $date", "")
154
+ foreach ($cat in @("Added", "Changed", "Fixed", "Other")) {
155
+ if ($groups[$cat].Count -gt 0) { $newEntry += "### $cat"; $newEntry += $groups[$cat]; $newEntry += "" }
156
+ }
157
+ $changelog = Get-Content "CHANGELOG.md"
158
+ $newChangelog = $changelog[0..7] + $newEntry + $changelog[8..($changelog.Length - 1)]
159
+ $newChangelog | Set-Content "CHANGELOG.md" -Encoding utf8
160
+ Set-Verified "Update CHANGELOG.md (Self-writing via release.ps1)"
161
+
162
+ # Update Knowledgebase
163
+ if ($groups["Fixed"].Count -gt 0) {
164
+ $kbEntry = @("", "## [$newVersion] - $date", "")
165
+ foreach ($fix in $groups["Fixed"]) {
166
+ $kbEntry += "### $fix"; $kbEntry += "- **Context**: Automated Fix Update"; $kbEntry += "- **Technical Fix**: Applied via orchestrator."
143
167
  }
168
+ $kbEntry | Add-Content "docs/DEV_KNOWLEDGEBASE.md" -Encoding utf8
144
169
  }
145
- Write-Host "-----------------------------------"
170
+ Set-Verified "Update docs/DEV_KNOWLEDGEBASE.md (Fix summary via release.ps1)"
171
+
172
+ # Update README Badges
173
+ $gsdVersion = Get-GsdVersion
174
+ Write-Host "๐Ÿท๏ธ Syncing README badges (Kit v$newVersion | GSD v$gsdVersion)..." -ForegroundColor Yellow
175
+ $readme = Get-Content "README.md" -Raw
176
+ $readme = $readme -replace "Release-v[0-9.]+", "Release-v$newVersion"
177
+ $readme = $readme -replace "gsd-v[0-9.]+", "gsd-v$gsdVersion"
178
+ $readme | Set-Content "README.md" -Encoding utf8
179
+ Set-Verified "Update README.md (Badge URL replacement via release.ps1)"
146
180
  }
147
181
 
148
- # 6. Phase 3: Archive
149
- Write-Host "๐Ÿ“ฆ Phase 3: Archiving..." -ForegroundColor Yellow
150
- $packageName = $package.name
151
- $archiveName = "$packageName_v$newVersion.zip"
152
- $excludes = @("node_modules", ".git", "__tobedeleted", "*.zip", ".antigravity", ".planning", "*.bak", "gh.exe", ".agent/skills/release-manager/bin/gh.exe")
153
- $files = Get-ChildItem -Path . -Exclude $excludes
154
-
182
+ # 4. Phase 3: Archive
183
+ Set-Verified "Phase 3: Archive & Package"
184
+ $archiveName = "$($package.name)_v$newVersion.zip"
155
185
  if (-not $dryRun) {
156
- if (Test-Path $archiveName) { Remove-Item $archiveName -Force }
157
- Compress-Archive -Path $files -DestinationPath $archiveName -Force
186
+ $excludes = @("node_modules", ".git", "__tobedeleted", "*.zip", ".antigravity", ".planning", "*.bak", "gh.exe", ".agent/skills/release-manager/bin/gh.exe")
187
+ Get-ChildItem -Path . -Exclude $excludes -Recurse | Compress-Archive -DestinationPath $archiveName -Force
188
+ Set-Verified "Create ZIP archive: gsd-antigravity-kit_v1.0.X.zip"
158
189
  }
159
190
 
160
- # 7. Phase 4: Git + GitHub
191
+ # 5. Phase 4 & 5: Release Execution
192
+ Set-Verified "Phase 4: Release Execution"
193
+ Set-Verified "Phase 5: GitHub Release"
161
194
  if (-not $dryRun -and -not $noPush) {
162
- Write-Host "๐Ÿš€ Phase 4: Git Execution..." -ForegroundColor Cyan
163
195
  git add .
164
196
  git commit -m "chore: release v$newVersion"
165
197
  git tag "v$newVersion"
198
+ Set-Verified "Git Commit & Tag"
199
+
166
200
  git push && git push --tags
201
+ Set-Verified "Git Push"
167
202
 
168
- Write-Host "๐ŸŒ Phase 5: GitHub Release..." -ForegroundColor Cyan
169
203
  $env:GODEBUG = "http2client=0"
170
204
  & $ghPath release create "v$newVersion" $archiveName --generate-notes
205
+ Set-Verified "gh release create ... (with GODEBUG=http2client=0)"
171
206
 
172
207
  if (-not $skipNpm) {
173
- Write-Host "๐Ÿ“ฆ Phase 6: NPM publication..." -ForegroundColor Cyan
208
+ Set-Verified "Phase 6: NPM publication"
174
209
  npm publish
210
+ Set-Verified "npm publish"
175
211
  }
176
- } else {
177
- Write-Host "โš ๏ธ Phase 4, 5, 6 Skipped (Dry-Run or --noPush)" -ForegroundColor Gray
178
212
  }
179
213
 
180
- Write-Host "โœจ Release $newVersion complete! Zero manual steps detected." -ForegroundColor Green
214
+ # 6. Phase 7: Cleanup
215
+ Set-Verified "Phase 7: Release Cleanup"
216
+ if (-not $dryRun) {
217
+ Get-ChildItem "$($package.name)_v*.zip" | Sort-Object LastWriteTime -Descending | Select-Object -Skip 2 | Remove-Item -Force
218
+ Set-Verified "Remove old local ZIPs"
219
+ }
220
+
221
+ # --- Final Status Report ---
222
+ Show-StatusReport $newVersion
package/README.md CHANGED
@@ -3,8 +3,8 @@
3
3
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
4
4
  [![Antigravity Compatible](https://img.shields.io/badge/Antigravity-Compatible-purple.svg?logo=google&logoColor=white)](https://github.com/google-deepmind/antigravity)
5
5
  [![NPM Version](https://img.shields.io/npm/v/gsd-antigravity-kit.svg?logo=npm)](https://www.npmjs.com/package/gsd-antigravity-kit)
6
- [![Release Version](https://img.shields.io/badge/Release-v1.30.0-blue?style=flat-square)](https://github.com/dturkuler/GSD-Antigravity/releases/latest)
7
- [![GSD Version](https://img.shields.io/badge/gsd-v1.30.1-orange?style=flat-square)](https://github.com/glittercowboy/get-shit-done)
6
+ [![Release Version](https://img.shields.io/badge/Release-v1.32.0-blue?style=flat-square)](https://github.com/dturkuler/GSD-Antigravity/releases/latest)
7
+ [![GSD Version](https://img.shields.io/badge/gsd-v1.32.0-orange?style=flat-square)](https://github.com/glittercowboy/get-shit-done)
8
8
 
9
9
  **GSD-Antigravity Kit** is the official bootstrapping and management utility for the [Get Shit Done (GSD)](https://github.com/glittercowboy/get-shit-done) protocol within the Antigravity AI framework. It serves as a high-performance **Installer** and **Skill Manager** that provision, optimizes, and maintains GSD skills in your AG environment.
10
10
 
@@ -101,3 +101,5 @@ The core logic, philosophy, and original script engine were created by **[glitte
101
101
 
102
102
 
103
103
 
104
+
105
+
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gsd-antigravity-kit",
3
- "version": "1.30.1",
3
+ "version": "1.32.0",
4
4
  "description": "Installer for GSD-Antigravity skills",
5
5
  "main": "index.js",
6
6
  "files": [