odd-studio 3.3.4 → 3.3.5
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/bin/odd-studio.js +1 -1
- package/hooks/odd-studio.sh +21 -4
- package/package.json +1 -1
- package/skill/SKILL.md +3 -3
package/bin/odd-studio.js
CHANGED
|
@@ -15,7 +15,7 @@ import { registerUninstall } from './commands/uninstall.js';
|
|
|
15
15
|
const __filename = fileURLToPath(import.meta.url);
|
|
16
16
|
const __dirname = path.dirname(__filename);
|
|
17
17
|
const require = createRequire(import.meta.url);
|
|
18
|
-
const pkg = require('../package.json'); // v3.3.
|
|
18
|
+
const pkg = require('../package.json'); // v3.3.5
|
|
19
19
|
|
|
20
20
|
const PACKAGE_ROOT = path.resolve(__dirname, '..');
|
|
21
21
|
const deps = { PACKAGE_ROOT, print };
|
package/hooks/odd-studio.sh
CHANGED
|
@@ -184,13 +184,30 @@ verify-gate)
|
|
|
184
184
|
# Only intercept writes to state.json
|
|
185
185
|
echo "$FILE_PATH" | grep -q 'state\.json' || exit 0
|
|
186
186
|
|
|
187
|
-
#
|
|
188
|
-
|
|
189
|
-
|
|
187
|
+
# Count verified statuses: only block if NEW outcomes are being marked verified
|
|
188
|
+
# (not when existing verified outcomes are preserved in a full file write)
|
|
189
|
+
if [ "$TOOL_NAME" = "Write" ]; then
|
|
190
|
+
# Full file write — compare verified count against existing file
|
|
191
|
+
NEW_CONTENT=$(echo "$INPUT" | jq -r '.tool_input.content // empty')
|
|
192
|
+
NEW_VERIFIED=$(echo "$NEW_CONTENT" | grep -c '"buildStatus"[[:space:]]*:[[:space:]]*"verified"' || echo 0)
|
|
193
|
+
if [ -f "$FILE_PATH" ]; then
|
|
194
|
+
OLD_VERIFIED=$(grep -c '"buildStatus"[[:space:]]*:[[:space:]]*"verified"' "$FILE_PATH" || echo 0)
|
|
195
|
+
else
|
|
196
|
+
OLD_VERIFIED=0
|
|
197
|
+
fi
|
|
198
|
+
[ "$NEW_VERIFIED" -gt "$OLD_VERIFIED" ] || exit 0
|
|
199
|
+
else
|
|
200
|
+
# Edit — check if new_string introduces "verified" that old_string didn't have
|
|
201
|
+
OLD_STRING=$(echo "$INPUT" | jq -r '.tool_input.old_string // empty')
|
|
202
|
+
NEW_STRING=$(echo "$INPUT" | jq -r '.tool_input.new_string // empty')
|
|
203
|
+
OLD_HAS=$(echo "$OLD_STRING" | grep -c '"verified"' || echo 0)
|
|
204
|
+
NEW_HAS=$(echo "$NEW_STRING" | grep -c '"verified"' || echo 0)
|
|
205
|
+
[ "$NEW_HAS" -gt "$OLD_HAS" ] || exit 0
|
|
206
|
+
fi
|
|
190
207
|
|
|
191
208
|
VERIFIED_CONFIRMED=$(get_state_field "verificationConfirmed")
|
|
192
209
|
if [ "$VERIFIED_CONFIRMED" != "true" ]; then
|
|
193
|
-
echo "ODD STUDIO [verify-gate]: Cannot mark outcomes as verified." >&2
|
|
210
|
+
echo "ODD STUDIO [verify-gate]: Cannot mark NEW outcomes as verified." >&2
|
|
194
211
|
echo "Walk through the verification checklist first. Set verificationConfirmed: true after all steps pass." >&2
|
|
195
212
|
exit 2
|
|
196
213
|
fi
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "odd-studio",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.5",
|
|
4
4
|
"description": "Outcome-Driven Development for AI coding agents — a planning and build harness for domain experts building serious software with AI. Works with Claude Code, OpenCode, and Codex.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"claude-code",
|
package/skill/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: "odd"
|
|
3
|
-
version: "3.3.
|
|
3
|
+
version: "3.3.5"
|
|
4
4
|
description: "Outcome-Driven Development planning and build coach. Use /odd to start or resume an ODD project — building personas, writing outcomes, mapping contracts, creating a Master Implementation Plan, and directing a odd-flow-powered build. Designed for domain experts who are not developers. Works with Claude Code, OpenCode, and Codex."
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -35,7 +35,7 @@ Display this when no existing state is found:
|
|
|
35
35
|
|
|
36
36
|
---
|
|
37
37
|
|
|
38
|
-
Welcome to ODD Studio v3.3.
|
|
38
|
+
Welcome to ODD Studio v3.3.5.
|
|
39
39
|
|
|
40
40
|
You are about to plan and build something real — using a methodology called Outcome-Driven Development. Before we write a single line of code, we are going to get precise about three things:
|
|
41
41
|
|
|
@@ -59,7 +59,7 @@ Display this when existing state is found. Replace the bracketed values with act
|
|
|
59
59
|
|
|
60
60
|
---
|
|
61
61
|
|
|
62
|
-
Welcome back to ODD Studio v3.3.
|
|
62
|
+
Welcome back to ODD Studio v3.3.5.
|
|
63
63
|
|
|
64
64
|
**Project:** [project.name]
|
|
65
65
|
**Current Phase:** [state.currentPhase]
|