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.
- package/CLAUDE.md +24 -24
- package/README.md +138 -203
- package/dist/src/core/ac-checkbox-formatter.d.ts +24 -0
- package/dist/src/core/ac-checkbox-formatter.d.ts.map +1 -0
- package/dist/src/core/ac-checkbox-formatter.js +35 -0
- package/dist/src/core/ac-checkbox-formatter.js.map +1 -0
- package/dist/src/core/ac-progress-sync.d.ts +116 -0
- package/dist/src/core/ac-progress-sync.d.ts.map +1 -0
- package/dist/src/core/ac-progress-sync.js +272 -0
- package/dist/src/core/ac-progress-sync.js.map +1 -0
- package/dist/src/core/fabric/registry-schema.d.ts +79 -0
- package/dist/src/core/fabric/registry-schema.d.ts.map +1 -0
- package/dist/src/core/fabric/registry-schema.js +6 -0
- package/dist/src/core/fabric/registry-schema.js.map +1 -0
- package/dist/src/core/fabric/security-scanner.d.ts +12 -0
- package/dist/src/core/fabric/security-scanner.d.ts.map +1 -0
- package/dist/src/core/fabric/security-scanner.js +219 -0
- package/dist/src/core/fabric/security-scanner.js.map +1 -0
- package/dist/src/core/types/sync-profile.d.ts +44 -0
- package/dist/src/core/types/sync-profile.d.ts.map +1 -1
- package/dist/src/core/types/sync-profile.js.map +1 -1
- package/package.json +1 -1
- package/plugins/specweave/hooks/v2/dispatchers/post-tool-use.sh +4 -4
- package/plugins/{specweave-github/hooks/github-ac-sync-handler.sh → specweave/hooks/v2/handlers/ac-sync-dispatcher.sh} +96 -92
- package/plugins/specweave/skills/architect/SKILL.md +1 -1
- package/plugins/specweave/skills/auto/SKILL.md +1 -1
- package/plugins/specweave/skills/cancel-auto/SKILL.md +1 -1
- package/plugins/specweave/skills/code-simplifier/SKILL.md +1 -1
- package/plugins/specweave/skills/do/SKILL.md +1 -1
- package/plugins/specweave/skills/docs/SKILL.md +1 -1
- package/plugins/specweave/skills/docs-updater/SKILL.md +1 -1
- package/plugins/specweave/skills/done/SKILL.md +13 -70
- package/plugins/specweave/skills/framework/SKILL.md +1 -1
- package/plugins/specweave/skills/grill/SKILL.md +1 -1
- package/plugins/specweave/skills/increment/SKILL.md +1 -1
- package/plugins/specweave/skills/increment-planner/SKILL.md +1 -1
- package/plugins/specweave/skills/lsp/SKILL.md +1 -1
- package/plugins/specweave/skills/pm/SKILL.md +1 -1
- package/plugins/specweave/skills/progress/SKILL.md +1 -1
- package/plugins/specweave/skills/save/SKILL.md +1 -1
- package/plugins/specweave/skills/security/SKILL.md +1 -1
- package/plugins/specweave/skills/security-patterns/SKILL.md +1 -1
- package/plugins/specweave/skills/tdd-cycle/SKILL.md +1 -1
- package/plugins/specweave/skills/tdd-green/SKILL.md +1 -1
- package/plugins/specweave/skills/tdd-orchestrator/SKILL.md +1 -1
- package/plugins/specweave/skills/tdd-red/SKILL.md +1 -1
- package/plugins/specweave/skills/validate/SKILL.md +1 -1
- package/plugins/specweave-github/commands/sync.md +1 -22
- package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.d.ts +0 -205
- package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.d.ts.map +0 -1
- package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.js +0 -685
- package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.js.map +0 -1
- package/dist/plugins/specweave-github/lib/cli-sync-increment-changes.d.ts +0 -12
- package/dist/plugins/specweave-github/lib/cli-sync-increment-changes.d.ts.map +0 -1
- package/dist/plugins/specweave-github/lib/cli-sync-increment-changes.js +0 -28
- package/dist/plugins/specweave-github/lib/cli-sync-increment-changes.js.map +0 -1
- package/dist/plugins/specweave-github/lib/github-increment-sync-cli.d.ts +0 -21
- package/dist/plugins/specweave-github/lib/github-increment-sync-cli.d.ts.map +0 -1
- package/dist/plugins/specweave-github/lib/github-increment-sync-cli.js +0 -471
- package/dist/plugins/specweave-github/lib/github-increment-sync-cli.js.map +0 -1
- package/dist/plugins/specweave-github/lib/github-status-sync.d.ts +0 -53
- package/dist/plugins/specweave-github/lib/github-status-sync.d.ts.map +0 -1
- package/dist/plugins/specweave-github/lib/github-status-sync.js +0 -120
- package/dist/plugins/specweave-github/lib/github-status-sync.js.map +0 -1
- package/dist/plugins/specweave-github/lib/github-sync-increment-changes.d.ts +0 -18
- package/dist/plugins/specweave-github/lib/github-sync-increment-changes.d.ts.map +0 -1
- package/dist/plugins/specweave-github/lib/github-sync-increment-changes.js +0 -297
- package/dist/plugins/specweave-github/lib/github-sync-increment-changes.js.map +0 -1
- package/dist/plugins/specweave-github/lib/increment-issue-builder.d.ts +0 -94
- package/dist/plugins/specweave-github/lib/increment-issue-builder.d.ts.map +0 -1
- package/dist/plugins/specweave-github/lib/increment-issue-builder.js +0 -385
- package/dist/plugins/specweave-github/lib/increment-issue-builder.js.map +0 -1
- package/plugins/specweave-github/lib/ThreeLayerSyncManager.js +0 -611
- package/plugins/specweave-github/lib/ThreeLayerSyncManager.ts +0 -909
- package/plugins/specweave-github/lib/cli-sync-increment-changes.d.js +0 -1
- package/plugins/specweave-github/lib/cli-sync-increment-changes.d.ts +0 -12
- package/plugins/specweave-github/lib/cli-sync-increment-changes.d.ts.map +0 -1
- package/plugins/specweave-github/lib/cli-sync-increment-changes.js +0 -17
- package/plugins/specweave-github/lib/cli-sync-increment-changes.js.map +0 -1
- package/plugins/specweave-github/lib/cli-sync-increment-changes.ts +0 -33
- package/plugins/specweave-github/lib/github-increment-sync-cli.js +0 -474
- package/plugins/specweave-github/lib/github-increment-sync-cli.ts +0 -616
- package/plugins/specweave-github/lib/github-status-sync.js +0 -107
- package/plugins/specweave-github/lib/github-status-sync.ts +0 -163
- package/plugins/specweave-github/lib/github-sync-increment-changes.d.js +0 -0
- package/plugins/specweave-github/lib/github-sync-increment-changes.d.ts +0 -18
- package/plugins/specweave-github/lib/github-sync-increment-changes.d.ts.map +0 -1
- package/plugins/specweave-github/lib/github-sync-increment-changes.js +0 -253
- package/plugins/specweave-github/lib/github-sync-increment-changes.js.map +0 -1
- package/plugins/specweave-github/lib/github-sync-increment-changes.ts +0 -391
- package/plugins/specweave-github/lib/increment-issue-builder.js +0 -402
- 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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
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
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
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-
|
|
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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"}
|