specweave 1.0.255 → 1.0.256

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 (92) hide show
  1. package/CLAUDE.md +24 -24
  2. package/README.md +138 -203
  3. package/dist/src/core/ac-checkbox-formatter.d.ts +24 -0
  4. package/dist/src/core/ac-checkbox-formatter.d.ts.map +1 -0
  5. package/dist/src/core/ac-checkbox-formatter.js +35 -0
  6. package/dist/src/core/ac-checkbox-formatter.js.map +1 -0
  7. package/dist/src/core/ac-progress-sync.d.ts +116 -0
  8. package/dist/src/core/ac-progress-sync.d.ts.map +1 -0
  9. package/dist/src/core/ac-progress-sync.js +272 -0
  10. package/dist/src/core/ac-progress-sync.js.map +1 -0
  11. package/dist/src/core/fabric/registry-schema.d.ts +79 -0
  12. package/dist/src/core/fabric/registry-schema.d.ts.map +1 -0
  13. package/dist/src/core/fabric/registry-schema.js +6 -0
  14. package/dist/src/core/fabric/registry-schema.js.map +1 -0
  15. package/dist/src/core/fabric/security-scanner.d.ts +12 -0
  16. package/dist/src/core/fabric/security-scanner.d.ts.map +1 -0
  17. package/dist/src/core/fabric/security-scanner.js +219 -0
  18. package/dist/src/core/fabric/security-scanner.js.map +1 -0
  19. package/dist/src/core/types/sync-profile.d.ts +44 -0
  20. package/dist/src/core/types/sync-profile.d.ts.map +1 -1
  21. package/dist/src/core/types/sync-profile.js.map +1 -1
  22. package/package.json +1 -1
  23. package/plugins/specweave/hooks/v2/dispatchers/post-tool-use.sh +4 -4
  24. package/plugins/{specweave-github/hooks/github-ac-sync-handler.sh → specweave/hooks/v2/handlers/ac-sync-dispatcher.sh} +96 -92
  25. package/plugins/specweave/skills/architect/SKILL.md +1 -1
  26. package/plugins/specweave/skills/auto/SKILL.md +1 -1
  27. package/plugins/specweave/skills/cancel-auto/SKILL.md +1 -1
  28. package/plugins/specweave/skills/code-simplifier/SKILL.md +1 -1
  29. package/plugins/specweave/skills/do/SKILL.md +1 -1
  30. package/plugins/specweave/skills/docs/SKILL.md +1 -1
  31. package/plugins/specweave/skills/docs-updater/SKILL.md +1 -1
  32. package/plugins/specweave/skills/done/SKILL.md +13 -70
  33. package/plugins/specweave/skills/framework/SKILL.md +1 -1
  34. package/plugins/specweave/skills/grill/SKILL.md +1 -1
  35. package/plugins/specweave/skills/increment/SKILL.md +1 -1
  36. package/plugins/specweave/skills/increment-planner/SKILL.md +1 -1
  37. package/plugins/specweave/skills/lsp/SKILL.md +1 -1
  38. package/plugins/specweave/skills/pm/SKILL.md +1 -1
  39. package/plugins/specweave/skills/progress/SKILL.md +1 -1
  40. package/plugins/specweave/skills/save/SKILL.md +1 -1
  41. package/plugins/specweave/skills/security/SKILL.md +1 -1
  42. package/plugins/specweave/skills/security-patterns/SKILL.md +1 -1
  43. package/plugins/specweave/skills/tdd-cycle/SKILL.md +1 -1
  44. package/plugins/specweave/skills/tdd-green/SKILL.md +1 -1
  45. package/plugins/specweave/skills/tdd-orchestrator/SKILL.md +1 -1
  46. package/plugins/specweave/skills/tdd-red/SKILL.md +1 -1
  47. package/plugins/specweave/skills/validate/SKILL.md +1 -1
  48. package/plugins/specweave-github/commands/sync.md +1 -22
  49. package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.d.ts +0 -205
  50. package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.d.ts.map +0 -1
  51. package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.js +0 -685
  52. package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.js.map +0 -1
  53. package/dist/plugins/specweave-github/lib/cli-sync-increment-changes.d.ts +0 -12
  54. package/dist/plugins/specweave-github/lib/cli-sync-increment-changes.d.ts.map +0 -1
  55. package/dist/plugins/specweave-github/lib/cli-sync-increment-changes.js +0 -28
  56. package/dist/plugins/specweave-github/lib/cli-sync-increment-changes.js.map +0 -1
  57. package/dist/plugins/specweave-github/lib/github-increment-sync-cli.d.ts +0 -21
  58. package/dist/plugins/specweave-github/lib/github-increment-sync-cli.d.ts.map +0 -1
  59. package/dist/plugins/specweave-github/lib/github-increment-sync-cli.js +0 -471
  60. package/dist/plugins/specweave-github/lib/github-increment-sync-cli.js.map +0 -1
  61. package/dist/plugins/specweave-github/lib/github-status-sync.d.ts +0 -53
  62. package/dist/plugins/specweave-github/lib/github-status-sync.d.ts.map +0 -1
  63. package/dist/plugins/specweave-github/lib/github-status-sync.js +0 -120
  64. package/dist/plugins/specweave-github/lib/github-status-sync.js.map +0 -1
  65. package/dist/plugins/specweave-github/lib/github-sync-increment-changes.d.ts +0 -18
  66. package/dist/plugins/specweave-github/lib/github-sync-increment-changes.d.ts.map +0 -1
  67. package/dist/plugins/specweave-github/lib/github-sync-increment-changes.js +0 -297
  68. package/dist/plugins/specweave-github/lib/github-sync-increment-changes.js.map +0 -1
  69. package/dist/plugins/specweave-github/lib/increment-issue-builder.d.ts +0 -94
  70. package/dist/plugins/specweave-github/lib/increment-issue-builder.d.ts.map +0 -1
  71. package/dist/plugins/specweave-github/lib/increment-issue-builder.js +0 -385
  72. package/dist/plugins/specweave-github/lib/increment-issue-builder.js.map +0 -1
  73. package/plugins/specweave-github/lib/ThreeLayerSyncManager.js +0 -611
  74. package/plugins/specweave-github/lib/ThreeLayerSyncManager.ts +0 -909
  75. package/plugins/specweave-github/lib/cli-sync-increment-changes.d.js +0 -1
  76. package/plugins/specweave-github/lib/cli-sync-increment-changes.d.ts +0 -12
  77. package/plugins/specweave-github/lib/cli-sync-increment-changes.d.ts.map +0 -1
  78. package/plugins/specweave-github/lib/cli-sync-increment-changes.js +0 -17
  79. package/plugins/specweave-github/lib/cli-sync-increment-changes.js.map +0 -1
  80. package/plugins/specweave-github/lib/cli-sync-increment-changes.ts +0 -33
  81. package/plugins/specweave-github/lib/github-increment-sync-cli.js +0 -474
  82. package/plugins/specweave-github/lib/github-increment-sync-cli.ts +0 -616
  83. package/plugins/specweave-github/lib/github-status-sync.js +0 -107
  84. package/plugins/specweave-github/lib/github-status-sync.ts +0 -163
  85. package/plugins/specweave-github/lib/github-sync-increment-changes.d.js +0 -0
  86. package/plugins/specweave-github/lib/github-sync-increment-changes.d.ts +0 -18
  87. package/plugins/specweave-github/lib/github-sync-increment-changes.d.ts.map +0 -1
  88. package/plugins/specweave-github/lib/github-sync-increment-changes.js +0 -253
  89. package/plugins/specweave-github/lib/github-sync-increment-changes.js.map +0 -1
  90. package/plugins/specweave-github/lib/github-sync-increment-changes.ts +0 -391
  91. package/plugins/specweave-github/lib/increment-issue-builder.js +0 -402
  92. package/plugins/specweave-github/lib/increment-issue-builder.ts +0 -520
@@ -6,7 +6,7 @@ description: System architect for scalable, maintainable technical designs and a
6
6
 
7
7
  ## Project Overrides
8
8
 
9
- !`s="architect"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null`
9
+ !`s="architect"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null; true`
10
10
 
11
11
  ## Design Approach
12
12
 
@@ -8,7 +8,7 @@ argument-hint: "[INCREMENT_IDS...] [OPTIONS]"
8
8
 
9
9
  ## Project Overrides
10
10
 
11
- !`s="auto"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null`
11
+ !`s="auto"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null; true`
12
12
 
13
13
  **Start autonomous execution session using Claude Code's Stop Hook.**
14
14
 
@@ -7,7 +7,7 @@ description: EMERGENCY ONLY - Cancel running auto session and generate summary r
7
7
 
8
8
  ## Project Overrides
9
9
 
10
- !`s="cancel-auto"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null`
10
+ !`s="cancel-auto"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null; true`
11
11
 
12
12
  **⚠️ EMERGENCY USE ONLY - Manually cancel the running auto session.**
13
13
 
@@ -6,7 +6,7 @@ description: Simplify and improve code clarity without changing behavior. Use wh
6
6
 
7
7
  ## Project Overrides
8
8
 
9
- !`s="code-simplifier"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null`
9
+ !`s="code-simplifier"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null; true`
10
10
 
11
11
  ## Approach
12
12
 
@@ -17,7 +17,7 @@ hooks:
17
17
 
18
18
  ## Project Overrides
19
19
 
20
- !`s="do"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null`
20
+ !`s="do"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null; true`
21
21
 
22
22
  **Implementation Execution**: Following spec.md and plan.md to execute the increment work.
23
23
 
@@ -7,7 +7,7 @@ argument-hint: "[topic] [--public] [--internal] [--adr] [--list]"
7
7
 
8
8
  ## Project Overrides
9
9
 
10
- !`s="docs"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null`
10
+ !`s="docs"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null; true`
11
11
 
12
12
  Browse, search, and load SpecWeave living documentation into the conversation.
13
13
 
@@ -7,7 +7,7 @@ user-invocable: false
7
7
 
8
8
  ## Project Overrides
9
9
 
10
- !`s="docs-updater"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null`
10
+ !`s="docs-updater"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null; true`
11
11
 
12
12
  Updates product documentation (.specweave/docs/) based on implementation progress.
13
13
 
@@ -12,7 +12,7 @@ hooks:
12
12
 
13
13
  ## Project Overrides
14
14
 
15
- !`s="done"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null`
15
+ !`s="done"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null; true`
16
16
 
17
17
  **Product Manager-Led Closure**: PM validates tasks, tests, and docs before closing.
18
18
 
@@ -933,78 +933,21 @@ const syncEnabled = config.hooks?.post_increment_done?.sync_to_github_project ==
933
933
 
934
934
  **If status sync enabled AND external links exist**:
935
935
 
936
- 1. **GitHub Status Sync** (if GitHub issue linked):
937
- ```typescript
938
- // Use StatusSyncEngine to sync status
939
- import { StatusSyncEngine } from '../../../src/core/sync/status-sync-engine.js';
940
- import { GitHubStatusSync } from '../../../plugins/specweave-github/lib/github-status-sync.js';
941
-
942
- const engine = new StatusSyncEngine(config);
943
- const githubSync = new GitHubStatusSync(token, owner, repo);
944
-
945
- // Prompt user
946
- const shouldSync = await promptUser("Update GitHub issue #42 to 'closed'?");
947
-
948
- if (shouldSync) {
949
- const result = await engine.syncToExternal({
950
- incrementId: '0001-user-authentication',
951
- tool: 'github',
952
- localStatus: 'completed',
953
- localTimestamp: new Date().toISOString()
954
- });
955
-
956
- if (result.success) {
957
- await githubSync.updateStatus(42, result.externalMapping);
958
- await githubSync.postStatusComment(42, 'active', 'completed');
959
- }
960
- }
961
- ```
962
-
963
- 2. **JIRA Status Sync** (if JIRA issue linked):
964
- ```typescript
965
- import { JiraStatusSync } from '../../../plugins/specweave-jira/lib/jira-status-sync.js';
936
+ Uses provider-agnostic AC sync to post final progress to all enabled providers:
966
937
 
967
- const jiraSync = new JiraStatusSync(domain, email, apiToken, projectKey);
968
-
969
- const shouldSync = await promptUser("Update JIRA issue PROJ-123 to 'Done'?");
970
-
971
- if (shouldSync) {
972
- const result = await engine.syncToExternal({
973
- incrementId: '0001-user-authentication',
974
- tool: 'jira',
975
- localStatus: 'completed',
976
- localTimestamp: new Date().toISOString()
977
- });
978
-
979
- if (result.success) {
980
- await jiraSync.updateStatus('PROJ-123', result.externalMapping);
981
- await jiraSync.postStatusComment('PROJ-123', 'In Progress', 'completed');
982
- }
983
- }
984
- ```
985
-
986
- 3. **Azure DevOps Status Sync** (if ADO work item linked):
987
- ```typescript
988
- import { AdoStatusSync } from '../../../plugins/specweave-ado/lib/ado-status-sync.js';
989
-
990
- const adoSync = new AdoStatusSync(organization, project, pat);
991
-
992
- const shouldSync = await promptUser("Update ADO work item #456 to 'Closed'?");
938
+ ```typescript
939
+ import { syncACProgressToProviders } from '../../../src/core/ac-progress-sync.js';
993
940
 
994
- if (shouldSync) {
995
- const result = await engine.syncToExternal({
996
- incrementId: '0001-user-authentication',
997
- tool: 'ado',
998
- localStatus: 'completed',
999
- localTimestamp: new Date().toISOString()
1000
- });
941
+ // Builds config from .specweave/config.json + metadata.json externalLinks
942
+ // Syncs to ALL enabled providers (GitHub, JIRA, ADO) in a single call
943
+ const result = await syncACProgressToProviders(
944
+ incrementId, affectedUSIds, specPath, config,
945
+ );
1001
946
 
1002
- if (result.success) {
1003
- await adoSync.updateStatus(456, result.externalMapping);
1004
- await adoSync.postStatusComment(456, 'Active', 'completed');
1005
- }
1006
- }
1007
- ```
947
+ // result.github — posted comments, auto-closed issues
948
+ // result.jira — posted comments, transitioned to Done
949
+ // result.ado — posted comments, transitioned to Closed
950
+ ```
1008
951
 
1009
952
  **Report results**:
1010
953
  ```
@@ -8,7 +8,7 @@ user-invocable: false
8
8
 
9
9
  ## Project Overrides
10
10
 
11
- !`s="framework"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null`
11
+ !`s="framework"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null; true`
12
12
 
13
13
  I am an expert on the SpecWeave framework - a spec-driven development framework for Claude Code (and other AI coding assistants). I have deep knowledge of its structure, rules, conventions, and best practices.
14
14
 
@@ -9,7 +9,7 @@ context: fork
9
9
 
10
10
  ## Project Overrides
11
11
 
12
- !`s="grill"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null`
12
+ !`s="grill"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null; true`
13
13
 
14
14
  I'm a demanding senior engineer who stress-tests your implementation before it ships. My job is to find issues NOW, before users do. I'm not here to validate - I'm here to CHALLENGE.
15
15
 
@@ -21,7 +21,7 @@ hooks:
21
21
 
22
22
  ## Project Overrides
23
23
 
24
- !`s="increment"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null`
24
+ !`s="increment"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null; true`
25
25
 
26
26
  **Orchestrator for increment planning** - handles pre-flight checks, then delegates to `sw:increment-planner` skill.
27
27
 
@@ -21,7 +21,7 @@ hooks:
21
21
 
22
22
  ## Project Overrides
23
23
 
24
- !`s="increment-planner"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null`
24
+ !`s="increment-planner"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null; true`
25
25
 
26
26
  **Self-contained increment planning for ANY user project after `specweave init`.**
27
27
 
@@ -10,7 +10,7 @@ user-invocable: false
10
10
 
11
11
  ## Project Overrides
12
12
 
13
- !`s="lsp"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null`
13
+ !`s="lsp"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null; true`
14
14
 
15
15
  Semantic code navigation and analysis.
16
16
 
@@ -10,7 +10,7 @@ model: opus
10
10
 
11
11
  ## Project Overrides
12
12
 
13
- !`s="pm"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null`
13
+ !`s="pm"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null; true`
14
14
 
15
15
  ## Overview
16
16
 
@@ -7,7 +7,7 @@ argument-hint: "[incrementId]"
7
7
 
8
8
  ## Project Overrides
9
9
 
10
- !`s="progress"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null`
10
+ !`s="progress"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null; true`
11
11
 
12
12
  Shows detailed progress information for active increments including:
13
13
  - **Task completion** with progress bars
@@ -8,7 +8,7 @@ argument-hint: "[message]"
8
8
 
9
9
  ## Project Overrides
10
10
 
11
- !`s="save"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null`
11
+ !`s="save"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null; true`
12
12
 
13
13
  **SMART SAVE** - Handles everything automatically: commit message generation, remote sync (pull/rebase), branch setup, and push. Just run `/sw:save` and it figures out what to do!
14
14
 
@@ -6,7 +6,7 @@ description: Security engineer for vulnerability assessment, penetration testing
6
6
 
7
7
  ## Project Overrides
8
8
 
9
- !`s="security"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null`
9
+ !`s="security"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null; true`
10
10
 
11
11
  ## Security Assessment
12
12
 
@@ -8,7 +8,7 @@ user-invocable: false
8
8
 
9
9
  ## Project Overrides
10
10
 
11
- !`s="security-patterns"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null`
11
+ !`s="security-patterns"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null; true`
12
12
 
13
13
  ## Overview
14
14
 
@@ -6,7 +6,7 @@ description: Execute full TDD red-green-refactor cycle with validation gates. Us
6
6
 
7
7
  ## Project Overrides
8
8
 
9
- !`s="tdd-cycle"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null`
9
+ !`s="tdd-cycle"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null; true`
10
10
 
11
11
  Execute a comprehensive Test-Driven Development (TDD) workflow with strict red-green-refactor discipline:
12
12
 
@@ -6,7 +6,7 @@ description: Write minimal code to make failing tests pass. Use when saying "TDD
6
6
 
7
7
  ## Project Overrides
8
8
 
9
- !`s="tdd-green"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null`
9
+ !`s="tdd-green"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null; true`
10
10
 
11
11
  Implement minimal code to make failing tests pass in TDD green phase:
12
12
 
@@ -8,7 +8,7 @@ user-invocable: false
8
8
 
9
9
  ## Project Overrides
10
10
 
11
- !`s="tdd-orchestrator"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null`
11
+ !`s="tdd-orchestrator"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null; true`
12
12
 
13
13
  ## Overview
14
14
 
@@ -6,7 +6,7 @@ description: Write failing tests that define expected behavior. Use when saying
6
6
 
7
7
  ## Project Overrides
8
8
 
9
- !`s="tdd-red"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null`
9
+ !`s="tdd-red"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null; true`
10
10
 
11
11
  Write comprehensive failing tests following TDD red phase principles.
12
12
 
@@ -12,7 +12,7 @@ hooks:
12
12
 
13
13
  ## Project Overrides
14
14
 
15
- !`s="validate"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null`
15
+ !`s="validate"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null; true`
16
16
 
17
17
  You are helping the user validate a SpecWeave increment with optional AI-powered quality assessment.
18
18
 
@@ -59,28 +59,7 @@ fi
59
59
  | Structure | Command | Issue Format |
60
60
  |-----------|---------|--------------|
61
61
  | **Living docs exist** (`.specweave/docs/internal/specs/FS-XXX/`) | Use `github-feature-sync-cli.ts` | `[FS-XXX][US-YYY] Title` |
62
- | **Increment only** (brownfield, no living docs) | Use `github-increment-sync-cli.ts` | `[FS-XXX] Title` with ACs |
63
-
64
- ### For Brownfield Projects (No Living Docs):
65
-
66
- Use the Increment Sync CLI directly:
67
-
68
- ```bash
69
- # Set token (read from .env without displaying value)
70
- export GITHUB_TOKEN=$(grep -oP '(?<=^GITHUB_TOKEN=).+' .env 2>/dev/null || grep '^GITHUB_TOKEN=' .env | cut -d'=' -f2-)
71
-
72
- # Run increment sync
73
- node dist/plugins/specweave-github/lib/github-increment-sync-cli.js <increment-id>
74
-
75
- # Example
76
- node dist/plugins/specweave-github/lib/github-increment-sync-cli.js 0002
77
- ```
78
-
79
- This creates issues with:
80
- - ✅ Proper format: `[FS-002] Increment Title`
81
- - ✅ User Stories listed with checkbox headers
82
- - ✅ All ACs as checkable items
83
- - ✅ Links to increment files
62
+ | **Increment only** (brownfield, no living docs) | Use `github-feature-sync-cli.ts` | `[FS-XXX] Title` with ACs |
84
63
 
85
64
  ### For Projects with Living Docs:
86
65
 
@@ -1,205 +0,0 @@
1
- /**
2
- * Three-Layer Full Sync Manager (All Permissions Enabled)
3
- *
4
- * Handles synchronization across three layers:
5
- * - Layer 1: GitHub Issue (stakeholder UI)
6
- * - Layer 2: Living Docs User Story files (intermediate representation)
7
- * - Layer 3: Increment spec.md + tasks.md (source of truth)
8
- *
9
- * Supports two sync flows:
10
- * 1. GitHub → Living Docs → Increment (stakeholder checks checkbox)
11
- * 2. Increment → Living Docs → GitHub (developer completes work)
12
- *
13
- * Features:
14
- * - Code validation (reopen tasks if code doesn't exist)
15
- * - Completion propagation (Tasks → ACs → User Stories)
16
- * - Conflict resolution (Increment always wins)
17
- *
18
- * @module ThreeLayerSyncManager
19
- */
20
- /**
21
- * Acceptance Criterion with completion state
22
- */
23
- export interface AcceptanceCriterion {
24
- id: string;
25
- userStoryId: string;
26
- description: string;
27
- completed: boolean;
28
- projects: string[];
29
- rawLine: string;
30
- }
31
- /**
32
- * Task with completion state and AC references
33
- */
34
- export interface Task {
35
- id: string;
36
- title: string;
37
- completed: boolean;
38
- completedDate?: string;
39
- acIds: string[];
40
- filePaths?: string[];
41
- }
42
- /**
43
- * Change detected during sync
44
- */
45
- export interface SyncChange {
46
- type: 'ac' | 'task';
47
- id: string;
48
- completed: boolean;
49
- layer: 'github' | 'living-docs' | 'increment';
50
- userStoryPath?: string;
51
- incrementPath?: string;
52
- }
53
- /**
54
- * Sync result
55
- */
56
- export interface SyncResult {
57
- acsUpdated: number;
58
- tasksUpdated: number;
59
- tasksReopened: number;
60
- conflicts: string[];
61
- errors: string[];
62
- }
63
- export declare class ThreeLayerSyncManager {
64
- private codeValidator;
65
- private userStoryFileCache;
66
- private projectRoot;
67
- private token?;
68
- constructor(projectRoot?: string);
69
- /**
70
- * Get environment object with GH_TOKEN for gh CLI commands.
71
- */
72
- private getGhEnv;
73
- /**
74
- * Clear User Story file cache
75
- * Call this when file structure changes or for testing
76
- */
77
- clearCache(): void;
78
- /**
79
- * Sync from GitHub to Increment (Flow 1: GitHub → Living Docs → Increment)
80
- *
81
- * Triggered when stakeholder checks AC/Task checkbox in GitHub issue.
82
- */
83
- syncGitHubToIncrement(issueNumber: number, incrementPath: string, livingDocsPath: string): Promise<SyncResult>;
84
- /**
85
- * Sync from Increment to GitHub (Flow 2: Increment → Living Docs → GitHub)
86
- *
87
- * Triggered when developer completes work and updates increment files.
88
- */
89
- syncIncrementToGitHub(incrementPath: string, livingDocsPath: string, issueNumber: number): Promise<SyncResult>;
90
- /**
91
- * Validate that code exists for completed task
92
- * Uses CodeValidator for comprehensive validation
93
- */
94
- private validateCodeExists;
95
- /**
96
- * Reopen task if code validation fails
97
- */
98
- private reopenTask;
99
- /**
100
- * Propagate completion from Tasks → ACs → User Stories (bottom-up)
101
- */
102
- propagateCompletion(incrementPath: string, livingDocsPath: string): Promise<void>;
103
- /**
104
- * Fetch GitHub issue state
105
- */
106
- private fetchGitHubIssueState;
107
- /**
108
- * Extract ACs from GitHub issue body
109
- *
110
- * CRITICAL FIX (v1.0.59): Handle multiple checkbox formats:
111
- * - Bold format: `- [ ] **AC-US5-01**: Description` (SpecWeave standard)
112
- * - Plain format: `- [ ] AC-US5-01: Description` (legacy/external)
113
- */
114
- private extractAcsFromIssue;
115
- /**
116
- * Extract Tasks from GitHub issue body
117
- *
118
- * CRITICAL FIX (v1.0.59): Handle multiple checkbox formats:
119
- * - Bold format: `- [ ] **T-001**: Description` (SpecWeave standard)
120
- * - Plain format: `- [ ] T-001: Description` (legacy/external)
121
- */
122
- private extractTasksFromIssue;
123
- /**
124
- * Parse ACs from spec.md
125
- *
126
- * CRITICAL FIX (v1.0.59): Handle multiple checkbox formats in spec.md:
127
- * - Bold format: `- [x] **AC-US5-01**: Description` (SpecWeave standard)
128
- * - Plain format: `- [x] AC-US5-01: Description` (legacy)
129
- */
130
- private parseAcceptanceCriteria;
131
- /**
132
- * Parse Tasks from tasks.md
133
- */
134
- private parseTasks;
135
- /**
136
- * Group ACs by User Story ID
137
- */
138
- private groupAcsByUserStory;
139
- /**
140
- * Filter tasks by AC IDs
141
- */
142
- private filterTasksByAcIds;
143
- /**
144
- * Find User Story file by ID (with caching for performance)
145
- */
146
- private findUserStoryFile;
147
- /**
148
- * Find User Story file that contains specific task
149
- */
150
- private findUserStoryFileForTask;
151
- /**
152
- * Update AC in User Story file
153
- */
154
- private updateUserStoryAc;
155
- /**
156
- * Update Task in User Story file
157
- */
158
- private updateUserStoryTask;
159
- /**
160
- * Update multiple ACs in User Story file
161
- */
162
- private updateUserStoryAcs;
163
- /**
164
- * Update multiple Tasks in User Story file
165
- */
166
- private updateUserStoryTasks;
167
- /**
168
- * Update AC in increment spec.md
169
- */
170
- private updateIncrementAc;
171
- /**
172
- * Update multiple ACs in increment spec.md
173
- */
174
- private updateIncrementAcs;
175
- /**
176
- * Update multiple Tasks in increment tasks.md
177
- */
178
- private updateIncrementTasks;
179
- /**
180
- * Update ACs in increment with conflict resolution (Increment wins)
181
- *
182
- * If GitHub and Increment disagree, Increment state wins as it's the source of truth.
183
- * Conflicts are logged for transparency.
184
- */
185
- private updateIncrementAcsWithConflictResolution;
186
- /**
187
- * Update Tasks in increment with conflict resolution (Increment wins)
188
- */
189
- private updateIncrementTasksWithConflictResolution;
190
- /**
191
- * Update GitHub issue with ACs and Tasks
192
- *
193
- * CRITICAL FIX (v1.0.59): Handle multiple checkbox formats in GitHub issues:
194
- * - Bold format: `- [ ] **AC-US5-01**: Description` (SpecWeave standard)
195
- * - Plain format: `- [ ] AC-US5-01: Description` (legacy/external)
196
- *
197
- * The regex must match BOTH formats to correctly sync checkboxes.
198
- */
199
- private updateGitHubIssue;
200
- /**
201
- * Add comment to GitHub issue
202
- */
203
- private addGitHubComment;
204
- }
205
- //# sourceMappingURL=ThreeLayerSyncManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ThreeLayerSyncManager.d.ts","sourceRoot":"","sources":["../../../../plugins/specweave-github/lib/ThreeLayerSyncManager.ts"],"names":[],"mappings":"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"}