aiwg 2026.2.9 → 2026.2.11
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.
package/CLAUDE.md
CHANGED
|
@@ -450,9 +450,9 @@ Before pushing a version tag:
|
|
|
450
450
|
- Migration notes (if applicable)
|
|
451
451
|
- Links to relevant documentation
|
|
452
452
|
4. **Commit and tag** - `git tag -m "vX.X.X" vX.X.X`
|
|
453
|
-
5. **Push to
|
|
454
|
-
6. **
|
|
455
|
-
7. **Create
|
|
453
|
+
5. **Push tag to Gitea** - `git push origin main --tags` (automatically creates Gitea Release)
|
|
454
|
+
6. **Optionally mirror to GitHub** - `git push github main --tags`
|
|
455
|
+
7. **Update/Create GitHub Release manually** - via `gh release create|edit`
|
|
456
456
|
|
|
457
457
|
### Version Format
|
|
458
458
|
|
|
@@ -85,14 +85,24 @@ grep '"version"' package.json | grep -E '\.[0-9]{2}\.' && echo "ERROR: Leading z
|
|
|
85
85
|
### 3. Create and Push Tag
|
|
86
86
|
|
|
87
87
|
```bash
|
|
88
|
+
# Create signed release commit (if not already committed)
|
|
89
|
+
git commit -S -m "release: v2026.1.5 \"Release Name\""
|
|
90
|
+
|
|
88
91
|
# Create annotated tag
|
|
89
|
-
git tag -
|
|
92
|
+
git tag -s v2026.1.5 -m "v2026.1.5 - Release Name"
|
|
90
93
|
|
|
91
|
-
# Push to
|
|
94
|
+
# Push to Gitea (triggers automatic Gitea release + publish workflows)
|
|
92
95
|
git push origin main --tags
|
|
96
|
+
|
|
97
|
+
# Optional: mirror tag/commit to GitHub
|
|
93
98
|
git push github main --tags
|
|
99
|
+
|
|
100
|
+
# GitHub release remains manual
|
|
101
|
+
gh release create v2026.1.5 --repo jmagly/aiwg --title "v2026.1.5 - Release Name" --generate-notes
|
|
94
102
|
```
|
|
95
103
|
|
|
104
|
+
**Sandboxed agent note**: If release operations run inside a filesystem/network sandbox, request **escalated execution** for signed `git commit`/`git tag` commands so GPG can access `~/.gnupg` and the local gpg-agent socket.
|
|
105
|
+
|
|
96
106
|
### 4. Verify Published Version
|
|
97
107
|
|
|
98
108
|
After CI/CD completes:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aiwg",
|
|
3
|
-
"version": "2026.2.
|
|
3
|
+
"version": "2026.2.11",
|
|
4
4
|
"description": "Cognitive architecture for AI-augmented software development with structured memory, ensemble validation, and closed-loop correction. FAIR-aligned artifacts, 84% cost reduction via human-in-the-loop, standards adopted by 100+ organizations.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -56,6 +56,25 @@ function ensureDir(d) {
|
|
|
56
56
|
if (!fs.existsSync(d)) fs.mkdirSync(d, { recursive: true });
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
+
function stripWrappingQuotes(value) {
|
|
60
|
+
const trimmed = String(value ?? '').trim();
|
|
61
|
+
if (
|
|
62
|
+
(trimmed.startsWith('"') && trimmed.endsWith('"')) ||
|
|
63
|
+
(trimmed.startsWith("'") && trimmed.endsWith("'"))
|
|
64
|
+
) {
|
|
65
|
+
return trimmed.slice(1, -1);
|
|
66
|
+
}
|
|
67
|
+
return trimmed;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function yamlDoubleQuoted(value) {
|
|
71
|
+
return String(value ?? '')
|
|
72
|
+
.replace(/\\/g, '\\\\')
|
|
73
|
+
.replace(/"/g, '\\"')
|
|
74
|
+
.replace(/\r?\n/g, ' ')
|
|
75
|
+
.trim();
|
|
76
|
+
}
|
|
77
|
+
|
|
59
78
|
/**
|
|
60
79
|
* Find skill directories containing SKILL.md
|
|
61
80
|
*/
|
|
@@ -93,7 +112,7 @@ function parseSkillContent(content, skillName) {
|
|
|
93
112
|
if (colonIdx > 0) {
|
|
94
113
|
const key = line.slice(0, colonIdx).trim();
|
|
95
114
|
const value = line.slice(colonIdx + 1).trim();
|
|
96
|
-
metadata[key] = value;
|
|
115
|
+
metadata[key] = stripWrappingQuotes(value);
|
|
97
116
|
}
|
|
98
117
|
}
|
|
99
118
|
|
|
@@ -119,7 +138,13 @@ function parseSkillContent(content, skillName) {
|
|
|
119
138
|
// Look for first paragraph as description (skip empty lines)
|
|
120
139
|
for (let i = bodyStartIdx; i < lines.length; i++) {
|
|
121
140
|
const line = lines[i].trim();
|
|
122
|
-
if (
|
|
141
|
+
if (
|
|
142
|
+
line &&
|
|
143
|
+
!line.endsWith(':') &&
|
|
144
|
+
!line.startsWith('#') &&
|
|
145
|
+
!line.startsWith('-') &&
|
|
146
|
+
!line.startsWith('|')
|
|
147
|
+
) {
|
|
123
148
|
description = line;
|
|
124
149
|
break;
|
|
125
150
|
}
|
|
@@ -181,8 +206,8 @@ function transformToCodexSkill(skillDir) {
|
|
|
181
206
|
|
|
182
207
|
// Build Codex skill format
|
|
183
208
|
const codexContent = `---
|
|
184
|
-
name: ${name}
|
|
185
|
-
description: ${description}
|
|
209
|
+
name: "${yamlDoubleQuoted(name)}"
|
|
210
|
+
description: "${yamlDoubleQuoted(description)}"
|
|
186
211
|
---
|
|
187
212
|
|
|
188
213
|
${body.trim()}
|