specweave 1.0.511 → 1.0.513

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.
Files changed (90) hide show
  1. package/dist/src/adapters/claude/README.md +2 -2
  2. package/dist/src/adapters/cursor/README.md +2 -2
  3. package/dist/src/adapters/generic/README.md +2 -2
  4. package/dist/src/cli/commands/init.d.ts.map +1 -1
  5. package/dist/src/cli/commands/init.js +49 -50
  6. package/dist/src/cli/commands/init.js.map +1 -1
  7. package/dist/src/cli/commands/resolve-structure.d.ts +4 -13
  8. package/dist/src/cli/commands/resolve-structure.d.ts.map +1 -1
  9. package/dist/src/cli/commands/resolve-structure.js +8 -75
  10. package/dist/src/cli/commands/resolve-structure.js.map +1 -1
  11. package/dist/src/cli/helpers/init/index.d.ts +1 -0
  12. package/dist/src/cli/helpers/init/index.d.ts.map +1 -1
  13. package/dist/src/cli/helpers/init/index.js +2 -0
  14. package/dist/src/cli/helpers/init/index.js.map +1 -1
  15. package/dist/src/cli/helpers/init/next-steps.d.ts.map +1 -1
  16. package/dist/src/cli/helpers/init/next-steps.js +7 -2
  17. package/dist/src/cli/helpers/init/next-steps.js.map +1 -1
  18. package/dist/src/cli/helpers/init/repo-connect.d.ts +1 -1
  19. package/dist/src/cli/helpers/init/repo-connect.d.ts.map +1 -1
  20. package/dist/src/cli/helpers/init/repo-connect.js +7 -0
  21. package/dist/src/cli/helpers/init/repo-connect.js.map +1 -1
  22. package/dist/src/cli/helpers/init/types.d.ts +2 -0
  23. package/dist/src/cli/helpers/init/types.d.ts.map +1 -1
  24. package/dist/src/cli/helpers/init/vskill-init-invoker.d.ts +30 -0
  25. package/dist/src/cli/helpers/init/vskill-init-invoker.d.ts.map +1 -0
  26. package/dist/src/cli/helpers/init/vskill-init-invoker.js +77 -0
  27. package/dist/src/cli/helpers/init/vskill-init-invoker.js.map +1 -0
  28. package/dist/src/config/types.d.ts +2 -2
  29. package/dist/src/init/compliance/types.d.ts +1 -1
  30. package/package.json +1 -1
  31. package/plugins/specweave/hooks/lib/common-setup.sh +1 -1
  32. package/plugins/specweave/hooks/lib/hook-errors.sh +2 -2
  33. package/plugins/specweave/hooks/lib/scheduler-startup.sh +3 -3
  34. package/plugins/specweave/hooks/lib/update-active-increment.sh +4 -4
  35. package/plugins/specweave/hooks/lib/update-status-line.sh +4 -4
  36. package/plugins/specweave/hooks/lib/validate-spec-status.sh +2 -2
  37. package/plugins/specweave/hooks/pre-compact.sh +2 -2
  38. package/plugins/specweave/hooks/startup-health-check.sh +1 -1
  39. package/plugins/specweave/hooks/stop-auto-v5.sh +3 -3
  40. package/plugins/specweave/hooks/stop-reflect.sh +3 -3
  41. package/plugins/specweave/hooks/stop-sync.sh +3 -3
  42. package/plugins/specweave/hooks/universal/fail-fast-wrapper.sh +2 -2
  43. package/plugins/specweave/hooks/user-prompt-submit.sh +1 -1
  44. package/plugins/specweave/hooks/v2/detectors/lifecycle-detector.sh +2 -2
  45. package/plugins/specweave/hooks/v2/detectors/us-completion-detector.sh +2 -2
  46. package/plugins/specweave/hooks/v2/dispatchers/post-tool-use-analytics.sh +2 -2
  47. package/plugins/specweave/hooks/v2/dispatchers/post-tool-use.sh +2 -2
  48. package/plugins/specweave/hooks/v2/dispatchers/pre-tool-use.sh +2 -2
  49. package/plugins/specweave/hooks/v2/dispatchers/session-start.sh +2 -2
  50. package/plugins/specweave/hooks/v2/guards/increment-existence-guard.sh +1 -1
  51. package/plugins/specweave/hooks/v2/guards/status-completion-guard.sh +1 -1
  52. package/plugins/specweave/hooks/v2/guards/task-ac-sync-guard.sh +2 -2
  53. package/plugins/specweave/hooks/v2/handlers/ac-sync-dispatcher.sh +1 -1
  54. package/plugins/specweave/hooks/v2/handlers/ac-validation-handler.sh +2 -2
  55. package/plugins/specweave/hooks/v2/handlers/github-sync-handler.sh +2 -2
  56. package/plugins/specweave/hooks/v2/handlers/living-docs-handler.sh +2 -2
  57. package/plugins/specweave/hooks/v2/handlers/living-specs-handler.sh +2 -2
  58. package/plugins/specweave/hooks/v2/handlers/project-bridge-handler.sh +2 -2
  59. package/plugins/specweave/hooks/v2/handlers/status-line-handler.sh +2 -2
  60. package/plugins/specweave/hooks/v2/handlers/status-update.sh +2 -2
  61. package/plugins/specweave/hooks/v2/handlers/universal-auto-create-dispatcher.sh +1 -1
  62. package/plugins/specweave/hooks/v2/integrations/ado-post-task.sh +1 -1
  63. package/plugins/specweave/hooks/v2/integrations/github-auto-create-handler.sh +2 -2
  64. package/plugins/specweave/hooks/v2/integrations/github-post-task.sh +1 -1
  65. package/plugins/specweave/hooks/v2/integrations/jira-post-task.sh +1 -1
  66. package/plugins/specweave/hooks/v2/queue/enqueue.sh +2 -2
  67. package/plugins/specweave/hooks/v2/session-end.sh +1 -1
  68. package/plugins/specweave/lib/external-sync/hooks-common.sh +2 -2
  69. package/plugins/specweave/scripts/analyze-standards.sh +2 -2
  70. package/plugins/specweave/scripts/cleanup-legacy-state.sh +2 -2
  71. package/plugins/specweave/scripts/cleanup-state.sh +2 -2
  72. package/plugins/specweave/scripts/heartbeat.sh +2 -2
  73. package/plugins/specweave/scripts/lsp-check.sh +1 -1
  74. package/plugins/specweave/scripts/lsp-warmup.sh +1 -1
  75. package/plugins/specweave/scripts/read-analytics.sh +2 -2
  76. package/plugins/specweave/scripts/read-costs.sh +2 -2
  77. package/plugins/specweave/scripts/read-grill-context.sh +2 -2
  78. package/plugins/specweave/scripts/read-jobs.sh +2 -2
  79. package/plugins/specweave/scripts/read-progress.sh +2 -2
  80. package/plugins/specweave/scripts/read-status.sh +2 -2
  81. package/plugins/specweave/scripts/read-workflow.sh +2 -2
  82. package/plugins/specweave/scripts/rebuild-dashboard-cache.sh +2 -2
  83. package/plugins/specweave/scripts/track-analytics.sh +2 -2
  84. package/plugins/specweave/scripts/update-dashboard-cache.sh +2 -2
  85. package/plugins/specweave/skills/increment/SKILL.md +49 -26
  86. package/plugins/specweave/skills/team-lead/SKILL.md +17 -15
  87. package/dist/src/cli/helpers/init/repository-setup.d.ts +0 -104
  88. package/dist/src/cli/helpers/init/repository-setup.d.ts.map +0 -1
  89. package/dist/src/cli/helpers/init/repository-setup.js +0 -1593
  90. package/dist/src/cli/helpers/init/repository-setup.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"repo-connect.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/repo-connect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repo-connect.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/repo-connect.ts"],"names":[],"mappings":"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"}
@@ -200,6 +200,8 @@ export interface UmbrellaDiscoveryResult {
200
200
  */
201
201
  export interface NextStepsContext {
202
202
  isUmbrella?: boolean;
203
+ /** True when user selected multi-repo during init (deferred or clone) */
204
+ isMultiRepo?: boolean;
203
205
  /** Repo names found at repositories/{name}/.git (1-level, missing org subfolder) */
204
206
  misplacedRepos?: string[];
205
207
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Auto-invoke `vskill init` to sync skills to non-Claude agents.
3
+ *
4
+ * Called during `specweave init` after plugin installation.
5
+ * Non-blocking: never throws, never prevents init from completing.
6
+ *
7
+ * Install strategy (3-tier fallback):
8
+ * 1. `vskill init --yes` — globally installed vskill CLI
9
+ * 2. `npx --registry https://registry.npmjs.org vskill init --yes` — bypasses
10
+ * corporate .npmrc that may redirect to a private registry
11
+ * 3. Graceful skip — log dim hint, do not fail
12
+ *
13
+ * @since 1.0.569
14
+ */
15
+ export interface VskillInitResult {
16
+ invoked: boolean;
17
+ skipped: boolean;
18
+ error?: string;
19
+ }
20
+ /**
21
+ * Ensure `vskill init` runs in the project to sync skills to non-Claude agents.
22
+ *
23
+ * 1. Try `vskill init --yes` (globally installed)
24
+ * 2. Try `npx --registry <public> vskill init --yes` (handles missing global + .npmrc issues)
25
+ * 3. Skip gracefully with hint message (no failure)
26
+ *
27
+ * All errors are caught — this function never throws.
28
+ */
29
+ export declare function ensureVskillInit(projectRoot: string): Promise<VskillInitResult>;
30
+ //# sourceMappingURL=vskill-init-invoker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vskill-init-invoker.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/vskill-init-invoker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAWH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAoDrF"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Auto-invoke `vskill init` to sync skills to non-Claude agents.
3
+ *
4
+ * Called during `specweave init` after plugin installation.
5
+ * Non-blocking: never throws, never prevents init from completing.
6
+ *
7
+ * Install strategy (3-tier fallback):
8
+ * 1. `vskill init --yes` — globally installed vskill CLI
9
+ * 2. `npx --registry https://registry.npmjs.org vskill init --yes` — bypasses
10
+ * corporate .npmrc that may redirect to a private registry
11
+ * 3. Graceful skip — log dim hint, do not fail
12
+ *
13
+ * @since 1.0.569
14
+ */
15
+ import { execFileNoThrow, isCommandAvailable } from '../../../utils/execFileNoThrow.js';
16
+ /** Public npm registry — bypasses .npmrc redirects in corporate environments */
17
+ const NPM_PUBLIC_REGISTRY = 'https://registry.npmjs.org';
18
+ /** Pinned version range for npx --package */
19
+ const VSKILL_VERSION_RANGE = '^0.5.0';
20
+ const VSKILL_INIT_ARGS = ['init', '--yes'];
21
+ /**
22
+ * Ensure `vskill init` runs in the project to sync skills to non-Claude agents.
23
+ *
24
+ * 1. Try `vskill init --yes` (globally installed)
25
+ * 2. Try `npx --registry <public> vskill init --yes` (handles missing global + .npmrc issues)
26
+ * 3. Skip gracefully with hint message (no failure)
27
+ *
28
+ * All errors are caught — this function never throws.
29
+ */
30
+ export async function ensureVskillInit(projectRoot) {
31
+ try {
32
+ const errors = [];
33
+ // Tier 1: Try global vskill init (preferred method)
34
+ const vskillAvailable = await isCommandAvailable('vskill');
35
+ if (vskillAvailable) {
36
+ const result = await execFileNoThrow('vskill', VSKILL_INIT_ARGS, {
37
+ cwd: projectRoot,
38
+ timeout: 30000,
39
+ });
40
+ if (result.success) {
41
+ return { invoked: true, skipped: false };
42
+ }
43
+ const vskillErr = result.stderr?.trim() || result.error?.message || 'unknown error';
44
+ errors.push(`vskill: ${vskillErr}`);
45
+ console.warn(`[vskill-init] vskill init failed: ${vskillErr} -- trying npx fallback`);
46
+ }
47
+ // Tier 2: Try npx with explicit public registry (bypasses .npmrc redirects)
48
+ const npxAvailable = await isCommandAvailable('npx');
49
+ if (npxAvailable) {
50
+ const result = await execFileNoThrow('npx', [
51
+ '--yes', '--registry', NPM_PUBLIC_REGISTRY, '--userconfig', '/dev/null', '--ignore-scripts',
52
+ '--package', `vskill@${VSKILL_VERSION_RANGE}`,
53
+ 'vskill', ...VSKILL_INIT_ARGS,
54
+ ], {
55
+ cwd: projectRoot,
56
+ timeout: 60000, // npx may need to download vskill first
57
+ });
58
+ if (result.success) {
59
+ return { invoked: true, skipped: false };
60
+ }
61
+ const npxErr = result.stderr?.trim() || result.error?.message || 'unknown error';
62
+ errors.push(`npx: ${npxErr}`);
63
+ console.warn(`[vskill-init] npx vskill init failed: ${npxErr}`);
64
+ }
65
+ // Tier 3: Graceful skip
66
+ if (errors.length === 0) {
67
+ console.warn(`[vskill-init] vskill not available -- run 'npx --registry ${NPM_PUBLIC_REGISTRY} vskill init' manually to sync skills to non-Claude agents`);
68
+ }
69
+ return { invoked: false, skipped: true, error: errors.length > 0 ? errors.join('; ') : undefined };
70
+ }
71
+ catch (error) {
72
+ const msg = error instanceof Error ? error.message : String(error);
73
+ console.warn(`[vskill-init] unexpected error: ${msg}`);
74
+ return { invoked: false, skipped: true, error: msg };
75
+ }
76
+ }
77
+ //# sourceMappingURL=vskill-init-invoker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vskill-init-invoker.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/vskill-init-invoker.ts"],"names":[],"mappings":"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"}
@@ -55,8 +55,8 @@ export declare const ResearchConfigSchema: z.ZodObject<{
55
55
  dataTypes: z.ZodArray<z.ZodEnum<{
56
56
  healthcare: "healthcare";
57
57
  children: "children";
58
- location: "location";
59
58
  personal: "personal";
59
+ location: "location";
60
60
  payment: "payment";
61
61
  financial: "financial";
62
62
  government: "government";
@@ -226,8 +226,8 @@ export declare const SpecWeaveConfigSchema: z.ZodObject<{
226
226
  dataTypes: z.ZodArray<z.ZodEnum<{
227
227
  healthcare: "healthcare";
228
228
  children: "children";
229
- location: "location";
230
229
  personal: "personal";
230
+ location: "location";
231
231
  payment: "payment";
232
232
  financial: "financial";
233
233
  government: "government";
@@ -60,8 +60,8 @@ export declare const ComplianceStandardSchema: z.ZodObject<{
60
60
  dataTypes: z.ZodArray<z.ZodEnum<{
61
61
  healthcare: "healthcare";
62
62
  children: "children";
63
- location: "location";
64
63
  personal: "personal";
64
+ location: "location";
65
65
  payment: "payment";
66
66
  financial: "financial";
67
67
  government: "government";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "specweave",
3
- "version": "1.0.511",
3
+ "version": "1.0.513",
4
4
  "description": "100+ domain-expert AI skills — PM, Architect, Frontend, QA, Security and more. Skills learn your team's patterns permanently. Spec-first planning, autonomous execution, multi-agent teams, synced to GitHub/JIRA. Claude Code, Cursor, Copilot & more.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -17,7 +17,7 @@ set +e # NEVER use set -e in hooks
17
17
  find_project_root() {
18
18
  local dir="${1:-$(pwd)}"
19
19
  while [[ "$dir" != "/" ]]; do
20
- if [[ -d "$dir/.specweave" ]]; then
20
+ if [[ -f "$dir/.specweave/config.json" ]]; then
21
21
  echo "$dir"
22
22
  return 0
23
23
  fi
@@ -26,7 +26,7 @@ HOOK_ERRORS_VERSION="1.0.0"
26
26
  _find_hook_project_root() {
27
27
  local dir="${1:-$PWD}"
28
28
  while [[ "$dir" != "/" ]]; do
29
- if [[ -d "$dir/.specweave" ]]; then
29
+ if [[ -f "$dir/.specweave/config.json" ]]; then
30
30
  echo "$dir"
31
31
  return 0
32
32
  fi
@@ -39,7 +39,7 @@ _find_hook_project_root() {
39
39
  _HOOK_PROJECT_ROOT=$(_find_hook_project_root)
40
40
 
41
41
  # Exit early if not a SpecWeave project (prevents .specweave pollution)
42
- if [[ -z "$_HOOK_PROJECT_ROOT" ]] || [[ ! -d "$_HOOK_PROJECT_ROOT/.specweave" ]]; then
42
+ if [[ -z "$_HOOK_PROJECT_ROOT" ]] || [[ ! -f "$_HOOK_PROJECT_ROOT/.specweave/config.json" ]]; then
43
43
  # Define no-op functions so sourcing scripts don't fail
44
44
  log_hook_warning() { :; }
45
45
  log_hook_error() { :; }
@@ -15,12 +15,12 @@ set +e
15
15
 
16
16
  # Find project root
17
17
  PROJECT_ROOT="$PWD"
18
- while [[ "$PROJECT_ROOT" != "/" ]] && [[ ! -d "$PROJECT_ROOT/.specweave" ]]; do
18
+ while [[ "$PROJECT_ROOT" != "/" ]] && [[ ! -f "$PROJECT_ROOT/.specweave/config.json" ]]; do
19
19
  PROJECT_ROOT=$(dirname "$PROJECT_ROOT")
20
20
  done
21
21
 
22
- # Exit if no .specweave directory
23
- [[ ! -d "$PROJECT_ROOT/.specweave" ]] && exit 0
22
+ # Exit if no .specweave/config.json
23
+ [[ ! -f "$PROJECT_ROOT/.specweave/config.json" ]] && exit 0
24
24
 
25
25
  # Source resolve-package.sh for dynamic specweave path resolution
26
26
  SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
@@ -14,17 +14,17 @@ set +e
14
14
  # ============================================================================
15
15
  # PROJECT ROOT DETECTION (CRITICAL - must NOT fallback to pwd!)
16
16
  # ============================================================================
17
- if [[ -n "$SPECWEAVE_PROJECT_ROOT" ]] && [[ -d "$SPECWEAVE_PROJECT_ROOT/.specweave" ]]; then
17
+ if [[ -n "$SPECWEAVE_PROJECT_ROOT" ]] && [[ -f "$SPECWEAVE_PROJECT_ROOT/.specweave/config.json" ]]; then
18
18
  PROJECT_ROOT="$SPECWEAVE_PROJECT_ROOT"
19
19
  else
20
20
  PROJECT_ROOT="$PWD"
21
- while [[ "$PROJECT_ROOT" != "/" ]] && [[ ! -d "$PROJECT_ROOT/.specweave" ]]; do
21
+ while [[ "$PROJECT_ROOT" != "/" ]] && [[ ! -f "$PROJECT_ROOT/.specweave/config.json" ]]; do
22
22
  PROJECT_ROOT=$(dirname "$PROJECT_ROOT")
23
23
  done
24
24
  fi
25
25
 
26
- # No .specweave? Exit BEFORE any mkdir (prevents .specweave pollution)
27
- [[ ! -d "$PROJECT_ROOT/.specweave" ]] && exit 0
26
+ # No .specweave/config.json? Exit BEFORE any mkdir (prevents .specweave pollution)
27
+ [[ ! -f "$PROJECT_ROOT/.specweave/config.json" ]] && exit 0
28
28
 
29
29
  STATE_DIR="$PROJECT_ROOT/.specweave/state"
30
30
  ACTIVE_FILE="$STATE_DIR/active-increment.json"
@@ -21,17 +21,17 @@ set +e
21
21
  # PROJECT ROOT (FAST - cached in env if available)
22
22
  # CRITICAL: Must NOT fallback to pwd (prevents .specweave pollution)
23
23
  # ============================================================================
24
- if [[ -n "$SPECWEAVE_PROJECT_ROOT" ]] && [[ -d "$SPECWEAVE_PROJECT_ROOT/.specweave" ]]; then
24
+ if [[ -n "$SPECWEAVE_PROJECT_ROOT" ]] && [[ -f "$SPECWEAVE_PROJECT_ROOT/.specweave/config.json" ]]; then
25
25
  PROJECT_ROOT="$SPECWEAVE_PROJECT_ROOT"
26
26
  else
27
27
  PROJECT_ROOT="$PWD"
28
- while [[ "$PROJECT_ROOT" != "/" ]] && [[ ! -d "$PROJECT_ROOT/.specweave" ]]; do
28
+ while [[ "$PROJECT_ROOT" != "/" ]] && [[ ! -f "$PROJECT_ROOT/.specweave/config.json" ]]; do
29
29
  PROJECT_ROOT=$(dirname "$PROJECT_ROOT")
30
30
  done
31
31
  fi
32
32
 
33
- # No .specweave? Exit immediately BEFORE any variable init (prevents pollution)
34
- [[ ! -d "$PROJECT_ROOT/.specweave" ]] && exit 0
33
+ # No .specweave/config.json? Exit immediately BEFORE any variable init (prevents pollution)
34
+ [[ ! -f "$PROJECT_ROOT/.specweave/config.json" ]] && exit 0
35
35
 
36
36
  # ============================================================================
37
37
  # ULTRA-FAST EXITS
@@ -22,7 +22,7 @@ set +e # EMERGENCY FIX: Changed from set -euo pipefail to prevent Claude Code c
22
22
  find_project_root() {
23
23
  local dir="$PWD"
24
24
  while [[ "$dir" != "/" ]]; do
25
- if [[ -d "$dir/.specweave" ]]; then
25
+ if [[ -f "$dir/.specweave/config.json" ]]; then
26
26
  echo "$dir"
27
27
  return 0
28
28
  fi
@@ -35,7 +35,7 @@ find_project_root() {
35
35
  PROJECT_ROOT=$(find_project_root)
36
36
 
37
37
  # Exit early if not a SpecWeave project (prevents .specweave pollution)
38
- if [[ -z "$PROJECT_ROOT" ]] || [[ ! -d "$PROJECT_ROOT/.specweave" ]]; then
38
+ if [[ -z "$PROJECT_ROOT" ]] || [[ ! -f "$PROJECT_ROOT/.specweave/config.json" ]]; then
39
39
  echo "Not a SpecWeave project - skipping validation"
40
40
  exit 0
41
41
  fi
@@ -11,10 +11,10 @@ set +e
11
11
 
12
12
  # Find project root
13
13
  PROJECT_ROOT="$PWD"
14
- while [[ "$PROJECT_ROOT" != "/" ]] && [[ ! -d "$PROJECT_ROOT/.specweave" ]]; do
14
+ while [[ "$PROJECT_ROOT" != "/" ]] && [[ ! -f "$PROJECT_ROOT/.specweave/config.json" ]]; do
15
15
  PROJECT_ROOT=$(dirname "$PROJECT_ROOT")
16
16
  done
17
- [[ ! -d "$PROJECT_ROOT/.specweave" ]] && echo '{"continue":true}' && exit 0
17
+ [[ ! -f "$PROJECT_ROOT/.specweave/config.json" ]] && echo '{"continue":true}' && exit 0
18
18
 
19
19
  STATE_DIR="$PROJECT_ROOT/.specweave/state"
20
20
  PRESSURE_FILE="$STATE_DIR/context-pressure.json"
@@ -9,7 +9,7 @@
9
9
  # Detect project root via walk-up
10
10
  _DIR="$PWD"
11
11
  _LIMIT=0
12
- while [ "$_DIR" != "/" ] && [ ! -d "$_DIR/.specweave" ] && [ $_LIMIT -lt 50 ]; do
12
+ while [ "$_DIR" != "/" ] && [ ! -f "$_DIR/.specweave/config.json" ] && [ $_LIMIT -lt 50 ]; do
13
13
  _DIR=$(dirname "$_DIR")
14
14
  _LIMIT=$((_LIMIT + 1))
15
15
  done
@@ -18,17 +18,17 @@ _get_duration_ms() {
18
18
  [ -z "${__STOP_AUTO_V5_SOURCED:-}" ] && cat > /dev/null
19
19
 
20
20
  # Project root detection (walk up to find .specweave/ — prevents pollution of subdirectories)
21
- if [[ -n "${PROJECT_ROOT:-}" ]] && [[ -d "$PROJECT_ROOT/.specweave" ]]; then
21
+ if [[ -n "${PROJECT_ROOT:-}" ]] && [[ -f "$PROJECT_ROOT/.specweave/config.json" ]]; then
22
22
  : # env var already set and valid
23
23
  else
24
24
  PROJECT_ROOT="$PWD"
25
- while [[ "$PROJECT_ROOT" != "/" ]] && [[ ! -d "$PROJECT_ROOT/.specweave" ]]; do
25
+ while [[ "$PROJECT_ROOT" != "/" ]] && [[ ! -f "$PROJECT_ROOT/.specweave/config.json" ]]; do
26
26
  PROJECT_ROOT=$(dirname "$PROJECT_ROOT")
27
27
  done
28
28
  fi
29
29
 
30
30
  # Not a SpecWeave project — approve and exit (MUST be before any mkdir)
31
- if [[ ! -d "$PROJECT_ROOT/.specweave" ]]; then
31
+ if [[ ! -f "$PROJECT_ROOT/.specweave/config.json" ]]; then
32
32
  echo '{"decision":"approve"}'
33
33
  exit 0
34
34
  fi
@@ -26,17 +26,17 @@ INPUT=$(cat)
26
26
  TRANSCRIPT_PATH=$(echo "$INPUT" | jq -r '.transcript_path // ""' 2>/dev/null)
27
27
 
28
28
  # Project root detection (walk up to find .specweave/ — prevents pollution of subdirectories)
29
- if [[ -n "${PROJECT_ROOT:-}" ]] && [[ -d "$PROJECT_ROOT/.specweave" ]]; then
29
+ if [[ -n "${PROJECT_ROOT:-}" ]] && [[ -f "$PROJECT_ROOT/.specweave/config.json" ]]; then
30
30
  : # env var already set and valid
31
31
  else
32
32
  PROJECT_ROOT="$PWD"
33
- while [[ "$PROJECT_ROOT" != "/" ]] && [[ ! -d "$PROJECT_ROOT/.specweave" ]]; do
33
+ while [[ "$PROJECT_ROOT" != "/" ]] && [[ ! -f "$PROJECT_ROOT/.specweave/config.json" ]]; do
34
34
  PROJECT_ROOT=$(dirname "$PROJECT_ROOT")
35
35
  done
36
36
  fi
37
37
 
38
38
  # Not a SpecWeave project — approve and exit (MUST be before any mkdir)
39
- if [[ ! -d "$PROJECT_ROOT/.specweave" ]]; then
39
+ if [[ ! -f "$PROJECT_ROOT/.specweave/config.json" ]]; then
40
40
  echo '{"decision":"approve"}'
41
41
  exit 0
42
42
  fi
@@ -22,11 +22,11 @@ set +e # Never fail
22
22
  INPUT=$(cat)
23
23
 
24
24
  # Project root detection (walk up to find .specweave/ — prevents pollution of subdirectories)
25
- if [[ -n "${PROJECT_ROOT:-}" ]] && [[ -d "$PROJECT_ROOT/.specweave" ]]; then
25
+ if [[ -n "${PROJECT_ROOT:-}" ]] && [[ -f "$PROJECT_ROOT/.specweave/config.json" ]]; then
26
26
  : # env var already set and valid
27
27
  else
28
28
  PROJECT_ROOT="$PWD"
29
- while [[ "$PROJECT_ROOT" != "/" ]] && [[ ! -d "$PROJECT_ROOT/.specweave" ]]; do
29
+ while [[ "$PROJECT_ROOT" != "/" ]] && [[ ! -f "$PROJECT_ROOT/.specweave/config.json" ]]; do
30
30
  PROJECT_ROOT=$(dirname "$PROJECT_ROOT")
31
31
  done
32
32
  fi
@@ -38,7 +38,7 @@ silent_approve() {
38
38
  }
39
39
 
40
40
  # Not a SpecWeave project — approve and exit (MUST be before any mkdir)
41
- [ ! -d "$PROJECT_ROOT/.specweave" ] && silent_approve
41
+ [ ! -f "$PROJECT_ROOT/.specweave/config.json" ] && silent_approve
42
42
 
43
43
  STATE_DIR="$PROJECT_ROOT/.specweave/state"
44
44
  QUEUE_DIR="$STATE_DIR/event-queue"
@@ -71,7 +71,7 @@ esac
71
71
  find_project_root() {
72
72
  local dir="$PWD"
73
73
  while [[ "$dir" != "/" ]]; do
74
- if [[ -d "$dir/.specweave" ]]; then
74
+ if [[ -f "$dir/.specweave/config.json" ]]; then
75
75
  echo "$dir"
76
76
  return 0
77
77
  fi
@@ -84,7 +84,7 @@ find_project_root() {
84
84
  PROJECT_ROOT=$(find_project_root)
85
85
 
86
86
  # Exit early if not a SpecWeave project (prevents .specweave pollution)
87
- if [[ -z "$PROJECT_ROOT" ]] || [[ ! -d "$PROJECT_ROOT/.specweave" ]]; then
87
+ if [[ -z "$PROJECT_ROOT" ]] || [[ ! -f "$PROJECT_ROOT/.specweave/config.json" ]]; then
88
88
  # Not a SpecWeave project - output success JSON and exit
89
89
  # UserPromptSubmit and Stop hooks need {"decision":"approve"}, others need {"continue":true}
90
90
  if [[ "$script_name" == stop-* ]] || [[ "$script_name" == user-prompt-submit* ]]; then
@@ -1675,7 +1675,7 @@ TDD_SOURCE=""
1675
1675
  TDD_MSG=""
1676
1676
 
1677
1677
  # Only check TDD if we're in a SpecWeave project (use resolved project root)
1678
- if [[ -n "$SW_PROJECT_ROOT" ]] && [[ -d "$SW_PROJECT_ROOT/.specweave" ]]; then
1678
+ if [[ -n "$SW_PROJECT_ROOT" ]] && [[ -f "$SW_PROJECT_ROOT/.specweave/config.json" ]]; then
1679
1679
 
1680
1680
  # Step 1: Check global config (LOWEST priority)
1681
1681
  if [[ -f "$SW_PROJECT_ROOT/.specweave/config.json" ]] && command -v jq >/dev/null 2>&1; then
@@ -15,10 +15,10 @@ INC_ID="${1:-}"
15
15
 
16
16
  # Find project root
17
17
  PROJECT_ROOT="$PWD"
18
- while [[ "$PROJECT_ROOT" != "/" ]] && [[ ! -d "$PROJECT_ROOT/.specweave" ]]; do
18
+ while [[ "$PROJECT_ROOT" != "/" ]] && [[ ! -f "$PROJECT_ROOT/.specweave/config.json" ]]; do
19
19
  PROJECT_ROOT=$(dirname "$PROJECT_ROOT")
20
20
  done
21
- [[ ! -d "$PROJECT_ROOT/.specweave" ]] && exit 0
21
+ [[ ! -f "$PROJECT_ROOT/.specweave/config.json" ]] && exit 0
22
22
 
23
23
  STATE_DIR="$PROJECT_ROOT/.specweave/state"
24
24
  PREV_STATUS_FILE="$STATE_DIR/.prev-status-$INC_ID"
@@ -33,10 +33,10 @@ INC_ID="${1:-}"
33
33
 
34
34
  # Find project root
35
35
  PROJECT_ROOT="$PWD"
36
- while [[ "$PROJECT_ROOT" != "/" ]] && [[ ! -d "$PROJECT_ROOT/.specweave" ]]; do
36
+ while [[ "$PROJECT_ROOT" != "/" ]] && [[ ! -f "$PROJECT_ROOT/.specweave/config.json" ]]; do
37
37
  PROJECT_ROOT=$(dirname "$PROJECT_ROOT")
38
38
  done
39
- [[ ! -d "$PROJECT_ROOT/.specweave" ]] && exit 0
39
+ [[ ! -f "$PROJECT_ROOT/.specweave/config.json" ]] && exit 0
40
40
 
41
41
  STATE_DIR="$PROJECT_ROOT/.specweave/state"
42
42
  TASKS_FILE="$PROJECT_ROOT/.specweave/increments/$INC_ID/tasks.md"
@@ -12,10 +12,10 @@ set +e
12
12
 
13
13
  # Project root detection
14
14
  PROJECT_ROOT="$PWD"
15
- while [[ "$PROJECT_ROOT" != "/" ]] && [[ ! -d "$PROJECT_ROOT/.specweave" ]]; do
15
+ while [[ "$PROJECT_ROOT" != "/" ]] && [[ ! -f "$PROJECT_ROOT/.specweave/config.json" ]]; do
16
16
  PROJECT_ROOT=$(dirname "$PROJECT_ROOT")
17
17
  done
18
- [[ ! -d "$PROJECT_ROOT/.specweave" ]] && exit 0
18
+ [[ ! -f "$PROJECT_ROOT/.specweave/config.json" ]] && exit 0
19
19
 
20
20
  # Read stdin (tool result JSON)
21
21
  INPUT=""
@@ -39,10 +39,10 @@ HOOK_VERSION="1.0.148"
39
39
  # ============================================================================
40
40
 
41
41
  PROJECT_ROOT="$PWD"
42
- while [[ "$PROJECT_ROOT" != "/" ]] && [[ ! -d "$PROJECT_ROOT/.specweave" ]]; do
42
+ while [[ "$PROJECT_ROOT" != "/" ]] && [[ ! -f "$PROJECT_ROOT/.specweave/config.json" ]]; do
43
43
  PROJECT_ROOT=$(dirname "$PROJECT_ROOT")
44
44
  done
45
- [[ ! -d "$PROJECT_ROOT/.specweave" ]] && exit 0
45
+ [[ ! -f "$PROJECT_ROOT/.specweave/config.json" ]] && exit 0
46
46
 
47
47
  STATE_DIR="$PROJECT_ROOT/.specweave/state"
48
48
 
@@ -22,11 +22,11 @@ INPUT=$(cat)
22
22
  # Detect project root via walk-up (cwd may not be root)
23
23
  _DIR="$PWD"
24
24
  _LIMIT=0
25
- while [[ "$_DIR" != "/" ]] && [[ ! -d "$_DIR/.specweave" ]] && [[ $_LIMIT -lt 50 ]]; do
25
+ while [[ "$_DIR" != "/" ]] && [[ ! -f "$_DIR/.specweave/config.json" ]] && [[ $_LIMIT -lt 50 ]]; do
26
26
  _DIR=$(dirname "$_DIR")
27
27
  _LIMIT=$((_LIMIT + 1))
28
28
  done
29
- [[ ! -d "$_DIR/.specweave" ]] && echo '{"decision":"allow"}' && exit 0
29
+ [[ ! -f "$_DIR/.specweave/config.json" ]] && echo '{"decision":"allow"}' && exit 0
30
30
 
31
31
  # Fast file_path check: skip non-increment files before jq (< 5ms)
32
32
  if ! echo "$INPUT" | grep -q '"file_path".*\.specweave/increments/'; then
@@ -16,10 +16,10 @@ set +e
16
16
 
17
17
  # Find project root
18
18
  PROJECT_ROOT="$PWD"
19
- while [[ "$PROJECT_ROOT" != "/" ]] && [[ ! -d "$PROJECT_ROOT/.specweave" ]]; do
19
+ while [[ "$PROJECT_ROOT" != "/" ]] && [[ ! -f "$PROJECT_ROOT/.specweave/config.json" ]]; do
20
20
  PROJECT_ROOT=$(dirname "$PROJECT_ROOT")
21
21
  done
22
- [[ ! -d "$PROJECT_ROOT/.specweave" ]] && exit 0
22
+ [[ ! -f "$PROJECT_ROOT/.specweave/config.json" ]] && exit 0
23
23
 
24
24
  # ============================================================================
25
25
  # SESSION CLEANUP: ALWAYS clear auto-mode.json (CRITICAL for session-scoped auto)
@@ -175,7 +175,7 @@ FOUND=false
175
175
  # Detect project root via walk-up
176
176
  _DIR="$PWD"
177
177
  _LIMIT=0
178
- while [[ "$_DIR" != "/" ]] && [[ ! -d "$_DIR/.specweave" ]] && [[ $_LIMIT -lt 50 ]]; do
178
+ while [[ "$_DIR" != "/" ]] && [[ ! -f "$_DIR/.specweave/config.json" ]] && [[ $_LIMIT -lt 50 ]]; do
179
179
  _DIR=$(dirname "$_DIR")
180
180
  _LIMIT=$((_LIMIT + 1))
181
181
  done
@@ -40,7 +40,7 @@ if echo "$NEW_STRING" | grep -qE '"status":\s*"completed"'; then
40
40
  # Detect project root via walk-up
41
41
  _DIR="$PWD"
42
42
  _LIMIT=0
43
- while [[ "$_DIR" != "/" ]] && [[ ! -d "$_DIR/.specweave" ]] && [[ $_LIMIT -lt 50 ]]; do
43
+ while [[ "$_DIR" != "/" ]] && [[ ! -f "$_DIR/.specweave/config.json" ]] && [[ $_LIMIT -lt 50 ]]; do
44
44
  _DIR=$(dirname "$_DIR")
45
45
  _LIMIT=$((_LIMIT + 1))
46
46
  done
@@ -37,7 +37,7 @@ HOOK_VERSION="1.0.43"
37
37
  find_project_root() {
38
38
  local dir="$PWD"
39
39
  while [[ "$dir" != "/" ]]; do
40
- if [[ -d "$dir/.specweave" ]]; then
40
+ if [[ -f "$dir/.specweave/config.json" ]]; then
41
41
  echo "$dir"
42
42
  return 0
43
43
  fi
@@ -49,7 +49,7 @@ find_project_root() {
49
49
 
50
50
  PROJECT_ROOT=$(find_project_root)
51
51
  [[ -z "$PROJECT_ROOT" ]] && exit 0
52
- [[ ! -d "$PROJECT_ROOT/.specweave" ]] && exit 0
52
+ [[ ! -f "$PROJECT_ROOT/.specweave/config.json" ]] && exit 0
53
53
 
54
54
  # ============================================================================
55
55
  # LOGGING INFRASTRUCTURE
@@ -32,7 +32,7 @@ fi
32
32
  find_project_root() {
33
33
  local dir="$1"
34
34
  while [ "$dir" != "/" ]; do
35
- if [ -d "$dir/.specweave" ]; then
35
+ if [ -f "$dir/.specweave/config.json" ]; then
36
36
  echo "$dir"
37
37
  return 0
38
38
  fi
@@ -13,10 +13,10 @@ INC_ID="${1:-}"
13
13
 
14
14
  # Find project root
15
15
  PROJECT_ROOT="$PWD"
16
- while [[ "$PROJECT_ROOT" != "/" ]] && [[ ! -d "$PROJECT_ROOT/.specweave" ]]; do
16
+ while [[ "$PROJECT_ROOT" != "/" ]] && [[ ! -f "$PROJECT_ROOT/.specweave/config.json" ]]; do
17
17
  PROJECT_ROOT=$(dirname "$PROJECT_ROOT")
18
18
  done
19
- [[ ! -d "$PROJECT_ROOT/.specweave" ]] && exit 0
19
+ [[ ! -f "$PROJECT_ROOT/.specweave/config.json" ]] && exit 0
20
20
 
21
21
  INC_DIR="$PROJECT_ROOT/.specweave/increments/$INC_ID"
22
22
  TASKS_FILE="$INC_DIR/tasks.md"
@@ -42,10 +42,10 @@ fi
42
42
 
43
43
  # Find project root
44
44
  PROJECT_ROOT="$PWD"
45
- while [[ "$PROJECT_ROOT" != "/" ]] && [[ ! -d "$PROJECT_ROOT/.specweave" ]]; do
45
+ while [[ "$PROJECT_ROOT" != "/" ]] && [[ ! -f "$PROJECT_ROOT/.specweave/config.json" ]]; do
46
46
  PROJECT_ROOT=$(dirname "$PROJECT_ROOT")
47
47
  done
48
- [[ ! -d "$PROJECT_ROOT/.specweave" ]] && exit 0
48
+ [[ ! -f "$PROJECT_ROOT/.specweave/config.json" ]] && exit 0
49
49
 
50
50
  CONFIG_FILE="$PROJECT_ROOT/.specweave/config.json"
51
51
  [[ ! -f "$CONFIG_FILE" ]] && exit 0