devforgeai 1.0.4 → 1.0.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devforgeai",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "description": "DevForgeAI is a spec-driven development framework designed to enable AI-assisted software development with zero technical debt through automated validation, architectural constraints enforcement, and test-driven development workflows.",
5
5
  "keywords": [
6
6
  "ai",
@@ -364,7 +364,7 @@ Show phase-by-phase completion status with timing and token usage.
364
364
 
365
365
  **6.5: Marker Cleanup (PASSED only)**
366
366
  - Preserve qa-phase-state.json as permanent audit trail
367
- - Delete legacy .qa-phase-N.marker files (superseded)
367
+ - Delete legacy QA marker files if present (superseded by qa-phase-state.json)
368
368
 
369
369
  **CLI gate:**
370
370
  ```
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: researching-market
3
3
  description: Guided market research workflow covering TAM/SAM/SOM market sizing, competitive landscape analysis, and customer interview preparation
4
+ version: "1.0"
4
5
  tools: Read, Write, Edit, Glob, Grep, AskUserQuestion, Agent
5
6
  ---
6
7
 
@@ -334,7 +335,7 @@ After market sizing and competitive analysis (or independently when invoked for
334
335
  Load the customer interview guide reference for methodology guidance:
335
336
 
336
337
  ```
337
- Read(file_path="references/customer-interview-guide.md")
338
+ Read(file_path=".claude/skills/researching-market/references/customer-interview-guide.md")
338
339
  ```
339
340
 
340
341
  For detailed interviewing methodology, see: [customer-interview-guide.md](references/customer-interview-guide.md) (Open-Ended Question Techniques)
@@ -78,7 +78,19 @@ class Copier {
78
78
  // Preserve execute permissions from source (important for .sh scripts)
79
79
  try {
80
80
  const srcStat = await fsp.stat(srcFile);
81
- await fsp.chmod(destFile, srcStat.mode);
81
+ let mode = srcStat.mode;
82
+
83
+ // Ensure .sh files and shebanged scripts are always executable.
84
+ // NTFS/Windows doesn't preserve Unix execute bits, so npm tarballs
85
+ // packed on Windows will contain .sh files with mode 0o644.
86
+ // We force +x on known executable extensions to guarantee they work
87
+ // after installation on Linux/macOS.
88
+ const ext = path.extname(destFile).toLowerCase();
89
+ if (ext === '.sh' || ext === '.py' || destFile.endsWith('/devforgeai-validate')) {
90
+ mode = mode | 0o755;
91
+ }
92
+
93
+ await fsp.chmod(destFile, mode);
82
94
  } catch {
83
95
  // chmod may fail on Windows — non-fatal
84
96
  }