specweave 0.30.12 → 0.30.14
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-plugin/marketplace.json +0 -11
- package/CLAUDE.md +1 -1
- package/bin/fix-marketplace-errors.sh +1 -1
- package/dist/src/cli/commands/init.d.ts.map +1 -1
- package/dist/src/cli/commands/init.js +13 -0
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/helpers/ado-area-selector.d.ts.map +1 -1
- package/dist/src/cli/helpers/ado-area-selector.js +13 -0
- package/dist/src/cli/helpers/ado-area-selector.js.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/index.d.ts.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/index.js +7 -2
- package/dist/src/cli/helpers/issue-tracker/index.js.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/sync-config-writer.d.ts +7 -0
- package/dist/src/cli/helpers/issue-tracker/sync-config-writer.d.ts.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/sync-config-writer.js +33 -2
- package/dist/src/cli/helpers/issue-tracker/sync-config-writer.js.map +1 -1
- package/dist/src/cli/workers/clone-worker.js +19 -3
- package/dist/src/cli/workers/clone-worker.js.map +1 -1
- package/dist/src/core/living-docs/board-matcher.d.ts +120 -0
- package/dist/src/core/living-docs/board-matcher.d.ts.map +1 -0
- package/dist/src/core/living-docs/board-matcher.js +466 -0
- package/dist/src/core/living-docs/board-matcher.js.map +1 -0
- package/dist/src/core/living-docs/foundation-builder.js +1 -1
- package/dist/src/core/living-docs/foundation-builder.js.map +1 -1
- package/dist/src/core/living-docs/living-docs-sync.d.ts +19 -8
- package/dist/src/core/living-docs/living-docs-sync.d.ts.map +1 -1
- package/dist/src/core/living-docs/living-docs-sync.js +148 -52
- package/dist/src/core/living-docs/living-docs-sync.js.map +1 -1
- package/dist/src/core/living-docs/suggestions-generator.js +1 -1
- package/dist/src/core/living-docs/suggestions-generator.js.map +1 -1
- package/dist/src/core/living-docs/umbrella-detector.d.ts +4 -0
- package/dist/src/core/living-docs/umbrella-detector.d.ts.map +1 -1
- package/dist/src/core/living-docs/umbrella-detector.js +20 -1
- package/dist/src/core/living-docs/umbrella-detector.js.map +1 -1
- package/dist/src/core/living-docs/workitem-matcher.js +5 -5
- package/dist/src/core/living-docs/workitem-matcher.js.map +1 -1
- package/dist/src/importers/item-converter.d.ts +4 -0
- package/dist/src/importers/item-converter.d.ts.map +1 -1
- package/dist/src/importers/item-converter.js +4 -0
- package/dist/src/importers/item-converter.js.map +1 -1
- package/dist/src/init/repo/types.d.ts +1 -1
- package/dist/src/living-docs/enterprise-analyzer.d.ts.map +1 -1
- package/dist/src/living-docs/enterprise-analyzer.js +70 -19
- package/dist/src/living-docs/enterprise-analyzer.js.map +1 -1
- package/dist/src/living-docs/epic-id-allocator.d.ts +4 -0
- package/dist/src/living-docs/epic-id-allocator.d.ts.map +1 -1
- package/dist/src/living-docs/epic-id-allocator.js +4 -0
- package/dist/src/living-docs/epic-id-allocator.js.map +1 -1
- package/dist/src/living-docs/fs-id-allocator.d.ts +4 -0
- package/dist/src/living-docs/fs-id-allocator.d.ts.map +1 -1
- package/dist/src/living-docs/fs-id-allocator.js +4 -0
- package/dist/src/living-docs/fs-id-allocator.js.map +1 -1
- package/dist/src/living-docs/smart-doc-organizer.d.ts +114 -0
- package/dist/src/living-docs/smart-doc-organizer.d.ts.map +1 -0
- package/dist/src/living-docs/smart-doc-organizer.js +535 -0
- package/dist/src/living-docs/smart-doc-organizer.js.map +1 -0
- package/package.json +13 -13
- package/plugins/PLUGINS-INDEX.md +2 -3
- package/plugins/specweave/commands/specweave-judge.md +265 -0
- package/plugins/specweave/commands/specweave-organize-docs.md +185 -0
- package/plugins/specweave/hooks/hooks.json +3 -3
- package/plugins/specweave/hooks/universal/hook-wrapper.cmd +26 -0
- package/plugins/specweave/hooks/universal/hook-wrapper.sh +67 -0
- package/plugins/specweave-ado/commands/{specweave-ado-close-workitem.md → close.md} +9 -5
- package/plugins/specweave-ado/commands/{specweave-ado-create-workitem.md → create.md} +9 -5
- package/plugins/specweave-ado/commands/pull.md +459 -0
- package/plugins/specweave-ado/commands/push.md +361 -0
- package/plugins/specweave-ado/commands/{specweave-ado-status.md → status.md} +12 -0
- package/plugins/specweave-ado/commands/{specweave-ado-sync.md → sync.md} +64 -3
- package/plugins/specweave-ado/hooks/README.md +1 -1
- package/plugins/specweave-docs/commands/build.md +158 -0
- package/plugins/specweave-docs/commands/{docs-generate.md → generate.md} +10 -5
- package/plugins/specweave-docs/commands/health.md +268 -0
- package/plugins/specweave-docs/commands/{docs-init.md → init.md} +11 -6
- package/plugins/specweave-docs/commands/organize.md +184 -0
- package/plugins/specweave-docs/commands/preview.md +138 -0
- package/plugins/specweave-docs/skills/preview/SKILL.md +105 -0
- package/plugins/specweave-github/agents/user-story-updater/AGENT.md +1 -1
- package/plugins/specweave-github/commands/{specweave-github-close-issue.md → close.md} +2 -2
- package/plugins/specweave-github/commands/{specweave-github-create-issue.md → create.md} +2 -2
- package/plugins/specweave-github/commands/pull.md +142 -0
- package/plugins/specweave-github/commands/push.md +154 -0
- package/plugins/specweave-github/commands/{specweave-github-sync.md → sync.md} +19 -5
- package/plugins/specweave-github/commands/{specweave-github-update-user-story.md → update-user-story.md} +1 -1
- package/plugins/specweave-github/hooks/README.md +1 -1
- package/plugins/specweave-jira/commands/pull.md +164 -0
- package/plugins/specweave-jira/commands/push.md +170 -0
- package/plugins/specweave-jira/commands/{specweave-jira-sync.md → sync.md} +18 -3
- package/plugins/specweave-jira/hooks/README.md +1 -1
- package/plugins/specweave-kafka/README.md +20 -0
- package/plugins/specweave-kafka/benchmarks/kafka-throughput.benchmark.ts +551 -0
- package/plugins/specweave-kafka/examples/README.md +191 -0
- package/plugins/specweave-kafka/examples/avro-schema-registry/.env.example +8 -0
- package/plugins/specweave-kafka/examples/avro-schema-registry/README.md +69 -0
- package/plugins/specweave-kafka/examples/avro-schema-registry/consumer.js +37 -0
- package/plugins/specweave-kafka/examples/avro-schema-registry/package.json +14 -0
- package/plugins/specweave-kafka/examples/avro-schema-registry/producer.js +57 -0
- package/plugins/specweave-kafka/examples/exactly-once-semantics/.env.example +5 -0
- package/plugins/specweave-kafka/examples/exactly-once-semantics/README.md +30 -0
- package/plugins/specweave-kafka/examples/exactly-once-semantics/eos-pipeline.js +79 -0
- package/plugins/specweave-kafka/examples/exactly-once-semantics/package.json +11 -0
- package/plugins/specweave-kafka/examples/kafka-streams-app/.env.example +4 -0
- package/plugins/specweave-kafka/examples/kafka-streams-app/README.md +30 -0
- package/plugins/specweave-kafka/examples/kafka-streams-app/package.json +11 -0
- package/plugins/specweave-kafka/examples/kafka-streams-app/windowed-aggregation.js +66 -0
- package/plugins/specweave-kafka/examples/n8n-workflow/README.md +54 -0
- package/plugins/specweave-kafka/examples/n8n-workflow/docker-compose.yml +19 -0
- package/plugins/specweave-kafka/examples/n8n-workflow/kafka-to-slack.json +50 -0
- package/plugins/specweave-kafka/examples/simple-producer-consumer/.env.example +15 -0
- package/plugins/specweave-kafka/examples/simple-producer-consumer/README.md +183 -0
- package/plugins/specweave-kafka/examples/simple-producer-consumer/consumer.js +60 -0
- package/plugins/specweave-kafka/examples/simple-producer-consumer/docker-compose.yml +30 -0
- package/plugins/specweave-kafka/examples/simple-producer-consumer/package.json +18 -0
- package/plugins/specweave-kafka/examples/simple-producer-consumer/producer.js +52 -0
- package/plugins/specweave-release/commands/specweave-release-npm.md +26 -239
- package/plugins/specweave-docs-preview/.claude-plugin/plugin.json +0 -21
- package/plugins/specweave-docs-preview/commands/build.md +0 -489
- package/plugins/specweave-docs-preview/commands/preview.md +0 -355
- package/plugins/specweave-docs-preview/skills/docs-preview/SKILL.md +0 -386
- /package/plugins/specweave-ado/commands/{specweave-ado-clone-repos.md → clone.md} +0 -0
- /package/plugins/specweave-ado/commands/{specweave-ado-import-areas.md → import-areas.md} +0 -0
- /package/plugins/specweave-ado/commands/{specweave-ado-import-projects.md → import-projects.md} +0 -0
- /package/plugins/specweave-github/commands/{specweave-github-cleanup-duplicates.md → cleanup-duplicates.md} +0 -0
- /package/plugins/specweave-github/commands/{specweave-github-reconcile.md → reconcile.md} +0 -0
- /package/plugins/specweave-github/commands/{specweave-github-status.md → status.md} +0 -0
- /package/plugins/specweave-jira/commands/{specweave-jira-import-boards.md → import-boards.md} +0 -0
- /package/plugins/specweave-jira/commands/{specweave-jira-import-projects.md → import-projects-full.md} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smart-doc-organizer.js","sourceRoot":"","sources":["../../../src/living-docs/smart-doc-organizer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specweave",
|
|
3
|
-
"version": "0.30.
|
|
3
|
+
"version": "0.30.14",
|
|
4
4
|
"description": "Spec-driven development framework for Claude Code. AI-native workflow with living documentation, intelligent agents, and multilingual support (9 languages). Enterprise-grade traceability with permanent specs and temporary increments.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
"clean": "rm -rf dist/",
|
|
12
12
|
"build": "tsc && npm run copy:locales && npm run copy:plugins && npm run copy:hook-deps",
|
|
13
13
|
"rebuild": "npm run clean && npm run build",
|
|
14
|
-
"copy:locales": "node scripts/copy-locales.js",
|
|
15
|
-
"copy:plugins": "node scripts/copy-plugin-js.js",
|
|
16
|
-
"copy:hook-deps": "node scripts/copy-hook-dependencies.js",
|
|
14
|
+
"copy:locales": "node scripts/build/copy-locales.js",
|
|
15
|
+
"copy:plugins": "node scripts/build/copy-plugin-js.js",
|
|
16
|
+
"copy:hook-deps": "node scripts/build/copy-hook-dependencies.js",
|
|
17
17
|
"dev": "tsc --watch",
|
|
18
18
|
"prepare": "npm run build",
|
|
19
19
|
"prepublishOnly": "npm run rebuild",
|
|
@@ -25,21 +25,21 @@
|
|
|
25
25
|
"test:coverage": "vitest run --coverage",
|
|
26
26
|
"test": "npm run test:smoke",
|
|
27
27
|
"benchmark": "ts-node tests/performance/run-all-benchmarks.ts",
|
|
28
|
-
"validate:plugins": "node scripts/validate-plugin-manifests.cjs",
|
|
29
|
-
"validate:platforms": "npx ts-node scripts/validate-platforms.ts",
|
|
28
|
+
"validate:plugins": "node scripts/validation/validate-plugin-manifests.cjs",
|
|
29
|
+
"validate:platforms": "npx ts-node scripts/validation/validate-platforms.ts",
|
|
30
30
|
"metrics:dora": "node dist/src/metrics/dora-calculator.js",
|
|
31
|
-
"migrate:copy-sync": "node scripts/migrate-to-copy-based-sync.js",
|
|
32
|
-
"generate:diagrams": "bash scripts/generate-diagram-svgs.sh",
|
|
31
|
+
"migrate:copy-sync": "node scripts/migrations/migrate-to-copy-based-sync.js",
|
|
32
|
+
"generate:diagrams": "bash scripts/generation/generate-diagram-svgs.sh",
|
|
33
33
|
"docs:dev": "cd docs-site && npm start",
|
|
34
34
|
"docs:build": "cd docs-site && npm run build",
|
|
35
35
|
"docs:install": "cd docs-site && npm install --legacy-peer-deps",
|
|
36
36
|
"docs:internal": "cd docs-site && npm run start:internal",
|
|
37
37
|
"docs:internal:build": "cd docs-site && npm run build:internal",
|
|
38
|
-
"release:patch": "bash scripts/bump-version.sh patch",
|
|
39
|
-
"release:minor": "bash scripts/bump-version.sh minor",
|
|
40
|
-
"release:major": "bash scripts/bump-version.sh major",
|
|
41
|
-
"release": "bash scripts/bump-version.sh",
|
|
42
|
-
"setup:hooks": "bash scripts/install-git-hooks.sh"
|
|
38
|
+
"release:patch": "bash scripts/build/bump-version.sh patch",
|
|
39
|
+
"release:minor": "bash scripts/build/bump-version.sh minor",
|
|
40
|
+
"release:major": "bash scripts/build/bump-version.sh major",
|
|
41
|
+
"release": "bash scripts/build/bump-version.sh",
|
|
42
|
+
"setup:hooks": "bash scripts/hooks/install-git-hooks.sh"
|
|
43
43
|
},
|
|
44
44
|
"keywords": [
|
|
45
45
|
"specweave",
|
package/plugins/PLUGINS-INDEX.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**Purpose**: Lightweight plugin manifest for progressive disclosure. Load plugin content only when triggers match.
|
|
4
4
|
|
|
5
|
-
**Total Plugins**:
|
|
5
|
+
**Total Plugins**: 26 | **Last Updated**: 2025-12-04
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -71,8 +71,7 @@
|
|
|
71
71
|
|
|
72
72
|
| Plugin | Triggers | Description |
|
|
73
73
|
|--------|----------|-------------|
|
|
74
|
-
| **specweave-docs** | documentation, README, API docs, technical writing | Documentation generation |
|
|
75
|
-
| **specweave-docs-preview** | docs site, Docusaurus, preview, build docs | Documentation preview server |
|
|
74
|
+
| **specweave-docs** | documentation, README, API docs, technical writing, docs site, Docusaurus, preview, build docs | Documentation generation and preview |
|
|
76
75
|
| **specweave-release** | release, version, npm publish, changelog, RC | Release management |
|
|
77
76
|
|
|
78
77
|
## Specialized Plugins
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: specweave:judge
|
|
3
|
+
description: Validate completed work using LLM-as-Judge pattern. Works on any files, not just increments.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /specweave:judge - Work Validation via Judge LLM
|
|
7
|
+
|
|
8
|
+
Validate any completed work using the LLM-as-Judge pattern with deep reasoning.
|
|
9
|
+
|
|
10
|
+
## Purpose
|
|
11
|
+
|
|
12
|
+
Use when you've completed work (files, git changes, any code) and want AI-powered validation:
|
|
13
|
+
- Works on **any files** (not just SpecWeave increments)
|
|
14
|
+
- Uses **chain-of-thought reasoning** for thorough analysis
|
|
15
|
+
- Returns **clear verdict** with detailed reasoning
|
|
16
|
+
|
|
17
|
+
## Usage
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# Validate specific files
|
|
21
|
+
/specweave:judge src/file.ts
|
|
22
|
+
/specweave:judge "src/**/*.ts"
|
|
23
|
+
|
|
24
|
+
# Validate git changes
|
|
25
|
+
/specweave:judge --staged # Staged changes
|
|
26
|
+
/specweave:judge --last-commit # Last commit
|
|
27
|
+
/specweave:judge --diff main # Diff vs branch
|
|
28
|
+
|
|
29
|
+
# Validation modes
|
|
30
|
+
/specweave:judge src/file.ts --quick # Fast (~10s)
|
|
31
|
+
/specweave:judge src/file.ts --deep # Thorough (~60s)
|
|
32
|
+
/specweave:judge src/file.ts --strict # Fail on any concern
|
|
33
|
+
|
|
34
|
+
# Additional options
|
|
35
|
+
/specweave:judge src/file.ts --fix # Include fix suggestions
|
|
36
|
+
/specweave:judge src/file.ts --export # Export report to markdown
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## How It Works
|
|
40
|
+
|
|
41
|
+
When you invoke `/specweave:judge`, Claude will:
|
|
42
|
+
|
|
43
|
+
### Step 1: Gather Input
|
|
44
|
+
|
|
45
|
+
Determine what to validate:
|
|
46
|
+
- If file paths provided → read those files
|
|
47
|
+
- If `--staged` → get staged git changes
|
|
48
|
+
- If `--last-commit` → get files from last commit
|
|
49
|
+
- If `--diff <branch>` → get diff against branch
|
|
50
|
+
|
|
51
|
+
### Step 2: Analyze with Judge LLM Pattern
|
|
52
|
+
|
|
53
|
+
Use chain-of-thought reasoning to evaluate:
|
|
54
|
+
|
|
55
|
+
```markdown
|
|
56
|
+
<thinking>
|
|
57
|
+
1. **Read**: Understand what the code does
|
|
58
|
+
2. **Analyze**: Check for issues across dimensions:
|
|
59
|
+
- Correctness: Does it work as intended?
|
|
60
|
+
- Completeness: Are edge cases handled?
|
|
61
|
+
- Security: Any vulnerabilities?
|
|
62
|
+
- Performance: Any obvious issues?
|
|
63
|
+
- Maintainability: Is it clean and clear?
|
|
64
|
+
3. **Evaluate**: Weigh findings by severity
|
|
65
|
+
4. **Decide**: Form verdict based on analysis
|
|
66
|
+
</thinking>
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Step 3: Return Verdict
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
73
|
+
JUDGE VERDICT: APPROVED | CONCERNS | REJECTED
|
|
74
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
75
|
+
|
|
76
|
+
Confidence: 0.XX
|
|
77
|
+
Files Analyzed: N
|
|
78
|
+
|
|
79
|
+
REASONING:
|
|
80
|
+
[Chain-of-thought explanation of findings]
|
|
81
|
+
|
|
82
|
+
ISSUES (if any):
|
|
83
|
+
🔴 CRITICAL: [title]
|
|
84
|
+
[description]
|
|
85
|
+
📍 [file:line]
|
|
86
|
+
💡 [suggestion]
|
|
87
|
+
|
|
88
|
+
🟡 HIGH: [title]
|
|
89
|
+
...
|
|
90
|
+
|
|
91
|
+
🟢 LOW: [title]
|
|
92
|
+
...
|
|
93
|
+
|
|
94
|
+
VERDICT: [summary sentence]
|
|
95
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Verdict Meanings
|
|
99
|
+
|
|
100
|
+
| Verdict | Meaning | Action |
|
|
101
|
+
|---------|---------|--------|
|
|
102
|
+
| **APPROVED** | Work looks good, no significant issues | Safe to proceed |
|
|
103
|
+
| **CONCERNS** | Some issues found, worth addressing | Review and fix if time permits |
|
|
104
|
+
| **REJECTED** | Critical issues found | Must fix before proceeding |
|
|
105
|
+
|
|
106
|
+
## Validation Modes
|
|
107
|
+
|
|
108
|
+
### Quick Mode (`--quick`)
|
|
109
|
+
- Fast validation (~10 seconds)
|
|
110
|
+
- Focuses on obvious issues
|
|
111
|
+
- Good for frequent checks during development
|
|
112
|
+
- Cost: ~$0.02-0.05
|
|
113
|
+
|
|
114
|
+
### Default Mode
|
|
115
|
+
- Balanced validation (~30 seconds)
|
|
116
|
+
- Thorough analysis of all dimensions
|
|
117
|
+
- Good for pre-commit validation
|
|
118
|
+
- Cost: ~$0.05-0.10
|
|
119
|
+
|
|
120
|
+
### Deep Mode (`--deep`)
|
|
121
|
+
- Most thorough validation (~60 seconds)
|
|
122
|
+
- Extended thinking for complex reasoning
|
|
123
|
+
- Good for critical code or security review
|
|
124
|
+
- Cost: ~$0.10-0.20
|
|
125
|
+
|
|
126
|
+
### Strict Mode (`--strict`)
|
|
127
|
+
- Any concern results in REJECTED
|
|
128
|
+
- Use for critical paths, security code, or CI gates
|
|
129
|
+
|
|
130
|
+
## Examples
|
|
131
|
+
|
|
132
|
+
### Example 1: Validate a new feature
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
User: /specweave:judge src/core/auth/login.ts
|
|
136
|
+
|
|
137
|
+
Claude:
|
|
138
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
139
|
+
JUDGE VERDICT: APPROVED
|
|
140
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
141
|
+
|
|
142
|
+
Confidence: 0.85
|
|
143
|
+
Files Analyzed: 1
|
|
144
|
+
|
|
145
|
+
REASONING:
|
|
146
|
+
The login implementation follows security best practices:
|
|
147
|
+
- Password hashing uses bcrypt with appropriate cost factor
|
|
148
|
+
- Rate limiting is implemented (5 attempts, 15 min lockout)
|
|
149
|
+
- Input validation prevents injection attacks
|
|
150
|
+
- Error messages don't leak user existence
|
|
151
|
+
|
|
152
|
+
No critical or high-severity issues found.
|
|
153
|
+
|
|
154
|
+
VERDICT: Implementation is solid and ready for use.
|
|
155
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Example 2: Validate staged changes
|
|
159
|
+
|
|
160
|
+
```
|
|
161
|
+
User: /specweave:judge --staged
|
|
162
|
+
|
|
163
|
+
Claude:
|
|
164
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
165
|
+
JUDGE VERDICT: CONCERNS
|
|
166
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
167
|
+
|
|
168
|
+
Confidence: 0.78
|
|
169
|
+
Files Analyzed: 3
|
|
170
|
+
|
|
171
|
+
REASONING:
|
|
172
|
+
Changes add new API endpoint but have some issues:
|
|
173
|
+
- Missing input validation on user-provided data
|
|
174
|
+
- Error messages could leak internal paths
|
|
175
|
+
- No rate limiting on new endpoint
|
|
176
|
+
|
|
177
|
+
🟡 HIGH: Missing Input Validation
|
|
178
|
+
User input passed directly to database query
|
|
179
|
+
📍 src/api/users.ts:45
|
|
180
|
+
💡 Add Zod schema validation before processing
|
|
181
|
+
|
|
182
|
+
🟡 HIGH: Information Disclosure
|
|
183
|
+
Stack traces exposed in error responses
|
|
184
|
+
📍 src/api/users.ts:62
|
|
185
|
+
💡 Use production error handler that sanitizes output
|
|
186
|
+
|
|
187
|
+
VERDICT: Address the input validation before merging.
|
|
188
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Example 3: Deep validation with fixes
|
|
192
|
+
|
|
193
|
+
```
|
|
194
|
+
User: /specweave:judge src/payments/checkout.ts --deep --fix
|
|
195
|
+
|
|
196
|
+
Claude:
|
|
197
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
198
|
+
JUDGE VERDICT: REJECTED
|
|
199
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
200
|
+
|
|
201
|
+
Confidence: 0.92
|
|
202
|
+
Files Analyzed: 1
|
|
203
|
+
|
|
204
|
+
REASONING:
|
|
205
|
+
Critical security issue found in payment processing:
|
|
206
|
+
- API key hardcoded in source file
|
|
207
|
+
- No HTTPS enforcement for payment requests
|
|
208
|
+
- Missing idempotency key handling
|
|
209
|
+
|
|
210
|
+
🔴 CRITICAL: Hardcoded API Key
|
|
211
|
+
Stripe API key exposed in source code
|
|
212
|
+
📍 src/payments/checkout.ts:12
|
|
213
|
+
💡 Move to environment variable:
|
|
214
|
+
```typescript
|
|
215
|
+
// Before (INSECURE)
|
|
216
|
+
const stripe = new Stripe('sk_live_xxx...');
|
|
217
|
+
|
|
218
|
+
// After (SECURE)
|
|
219
|
+
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!);
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
🔴 CRITICAL: No HTTPS Enforcement
|
|
223
|
+
Payment requests may go over HTTP
|
|
224
|
+
📍 src/payments/checkout.ts:34
|
|
225
|
+
💡 Add protocol check:
|
|
226
|
+
```typescript
|
|
227
|
+
if (process.env.NODE_ENV === 'production' && !req.secure) {
|
|
228
|
+
return res.status(403).json({ error: 'HTTPS required' });
|
|
229
|
+
}
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
VERDICT: MUST FIX before deployment - security critical.
|
|
233
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## Difference from /specweave:qa
|
|
237
|
+
|
|
238
|
+
| Aspect | `/specweave:qa` | `/specweave:judge` |
|
|
239
|
+
|--------|-----------------|-------------------|
|
|
240
|
+
| **Scope** | Increments only | Any files |
|
|
241
|
+
| **Input** | Increment ID | Files, git diff |
|
|
242
|
+
| **Pattern** | 7-dimension scoring | Judge LLM reasoning |
|
|
243
|
+
| **Focus** | Spec quality, risks | Code correctness |
|
|
244
|
+
| **When** | Before increment close | After any work |
|
|
245
|
+
|
|
246
|
+
## Best Practices
|
|
247
|
+
|
|
248
|
+
1. **Use frequently**: Run during development, not just at the end
|
|
249
|
+
2. **Use `--staged`**: Validate before committing
|
|
250
|
+
3. **Use `--strict` for critical code**: Payment, auth, security
|
|
251
|
+
4. **Fix CRITICAL issues immediately**: Never ignore these
|
|
252
|
+
5. **Address CONCERNS before release**: They matter
|
|
253
|
+
|
|
254
|
+
## Limitations
|
|
255
|
+
|
|
256
|
+
- ❌ Doesn't execute tests (use test runners)
|
|
257
|
+
- ❌ Doesn't auto-apply fixes (only suggests)
|
|
258
|
+
- ❌ May miss domain-specific issues
|
|
259
|
+
- ❌ Not a replacement for human review
|
|
260
|
+
|
|
261
|
+
## Related
|
|
262
|
+
|
|
263
|
+
- `/specweave:qa` - Increment-bound quality assessment
|
|
264
|
+
- `/specweave-core:code-review` - Prompt-based code review
|
|
265
|
+
- `ado-sync-judge` agent - Uses judge pattern for sync validation
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: specweave:organize-docs
|
|
3
|
+
description: Smart documentation organization - generates themed navigation indexes for large folders. Works seamlessly with Docusaurus preview.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Smart Documentation Organizer
|
|
7
|
+
|
|
8
|
+
Automatically organize large documentation folders by detecting themes and generating navigable category indexes.
|
|
9
|
+
|
|
10
|
+
## Why Organize?
|
|
11
|
+
|
|
12
|
+
When folders grow beyond 30+ files, navigation becomes painful:
|
|
13
|
+
- ADRs (147 files) - hard to find sync vs hooks vs testing decisions
|
|
14
|
+
- Specs - many features across different domains
|
|
15
|
+
- Guides - mixed topics without clear structure
|
|
16
|
+
|
|
17
|
+
**Solution**: Generate themed category indexes WITHOUT moving files (preserves URLs).
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# Analyze and organize all internal docs
|
|
23
|
+
/specweave:organize-docs
|
|
24
|
+
|
|
25
|
+
# Analyze specific folder only
|
|
26
|
+
/specweave:organize-docs --folder architecture/adr
|
|
27
|
+
|
|
28
|
+
# Preview without generating files
|
|
29
|
+
/specweave:organize-docs --dry-run
|
|
30
|
+
|
|
31
|
+
# Force regeneration even if under threshold
|
|
32
|
+
/specweave:organize-docs --force
|
|
33
|
+
|
|
34
|
+
# Set custom threshold (default: 30)
|
|
35
|
+
/specweave:organize-docs --threshold 20
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Your Task
|
|
39
|
+
|
|
40
|
+
Execute the smart documentation organizer:
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
import { SmartDocOrganizer, organizeDocumentation } from '../../src/living-docs/smart-doc-organizer.js';
|
|
44
|
+
import * as path from 'path';
|
|
45
|
+
|
|
46
|
+
const projectPath = process.cwd();
|
|
47
|
+
|
|
48
|
+
// Option 1: Quick organize all internal docs
|
|
49
|
+
const result = await organizeDocumentation(projectPath, {
|
|
50
|
+
dryRun: false, // Set true to preview
|
|
51
|
+
thresholdForOrganization: 30,
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
console.log(result.summary);
|
|
55
|
+
|
|
56
|
+
// Option 2: Analyze specific folder
|
|
57
|
+
const organizer = new SmartDocOrganizer({
|
|
58
|
+
projectPath,
|
|
59
|
+
thresholdForOrganization: 30,
|
|
60
|
+
generateIndexes: true,
|
|
61
|
+
dryRun: false,
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
const adrPath = path.join(projectPath, '.specweave/docs/internal/architecture/adr');
|
|
65
|
+
const plan = await organizer.analyzeFolder(adrPath);
|
|
66
|
+
|
|
67
|
+
console.log(`
|
|
68
|
+
📊 DOCUMENTATION ANALYSIS
|
|
69
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
70
|
+
|
|
71
|
+
Folder: ${plan.folder}
|
|
72
|
+
Total Files: ${plan.totalFiles}
|
|
73
|
+
Needs Organization: ${plan.needsOrganization ? '✅ Yes' : '❌ No'}
|
|
74
|
+
|
|
75
|
+
Theme Categories:
|
|
76
|
+
${plan.themeCategories
|
|
77
|
+
.filter(c => c.count >= 3)
|
|
78
|
+
.map(c => ` ${c.theme.icon} ${c.theme.name}: ${c.count} files`)
|
|
79
|
+
.join('\n')}
|
|
80
|
+
|
|
81
|
+
Uncategorized: ${plan.uncategorized.length} files
|
|
82
|
+
`);
|
|
83
|
+
|
|
84
|
+
// Generate indexes if needed
|
|
85
|
+
if (plan.needsOrganization) {
|
|
86
|
+
const generatedFiles = await organizer.generateCategoryIndexes(plan);
|
|
87
|
+
console.log(`\n✅ Generated ${generatedFiles.length} index files`);
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## What Gets Generated
|
|
92
|
+
|
|
93
|
+
### 1. Category Index (`_categories.md`)
|
|
94
|
+
|
|
95
|
+
Main navigation hub with:
|
|
96
|
+
- Links to all theme categories
|
|
97
|
+
- Quick stats (total docs, categorized count)
|
|
98
|
+
- Recently updated documents
|
|
99
|
+
|
|
100
|
+
### 2. Theme Indexes (`_index-{theme}.md`)
|
|
101
|
+
|
|
102
|
+
Per-theme navigation with:
|
|
103
|
+
- All files in that category
|
|
104
|
+
- Sub-grouping for large themes (15+ files)
|
|
105
|
+
- Sorted alphabetically
|
|
106
|
+
|
|
107
|
+
### Theme Detection
|
|
108
|
+
|
|
109
|
+
The organizer automatically detects these themes:
|
|
110
|
+
|
|
111
|
+
| Theme | Keywords | Icon |
|
|
112
|
+
|-------|----------|------|
|
|
113
|
+
| Synchronization | sync, integration, bidirectional | 🔄 |
|
|
114
|
+
| Hooks & Events | hook, event, trigger, callback | 🪝 |
|
|
115
|
+
| GitHub | github, issue, pull-request, actions | 🐙 |
|
|
116
|
+
| External Tools | jira, ado, azure-devops, area-path | 🔌 |
|
|
117
|
+
| Testing | test, fixture, mock, coverage, tdd | 🧪 |
|
|
118
|
+
| Brownfield | brownfield, migration, legacy | 🏗️ |
|
|
119
|
+
| Architecture | pattern, factory, abstraction | 🏛️ |
|
|
120
|
+
| Performance | cache, pagination, batch, lazy | ⚡ |
|
|
121
|
+
| Security | permission, auth, token, secret | 🔒 |
|
|
122
|
+
| Increments | increment, status, lifecycle | 📦 |
|
|
123
|
+
| Configuration | config, env, setup, init | ⚙️ |
|
|
124
|
+
| Documentation | doc, living, spec, naming | 📚 |
|
|
125
|
+
|
|
126
|
+
## Output Example
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
📊 DOCUMENTATION ANALYSIS
|
|
130
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
131
|
+
|
|
132
|
+
Folder: architecture/adr
|
|
133
|
+
Total Files: 147
|
|
134
|
+
Needs Organization: ✅ Yes
|
|
135
|
+
|
|
136
|
+
Theme Categories:
|
|
137
|
+
🔄 Synchronization & Integration: 23 files
|
|
138
|
+
🐙 GitHub Integration: 18 files
|
|
139
|
+
🪝 Hooks & Events: 15 files
|
|
140
|
+
🧪 Testing & Quality: 12 files
|
|
141
|
+
🔌 External Tools (ADO, JIRA): 11 files
|
|
142
|
+
📦 Increment Lifecycle: 10 files
|
|
143
|
+
⚡ Performance & Optimization: 9 files
|
|
144
|
+
⚙️ Configuration & Setup: 8 files
|
|
145
|
+
|
|
146
|
+
Uncategorized: 14 files
|
|
147
|
+
|
|
148
|
+
✅ Generated 9 index files:
|
|
149
|
+
- _categories.md
|
|
150
|
+
- _index-sync.md
|
|
151
|
+
- _index-github.md
|
|
152
|
+
- _index-hooks.md
|
|
153
|
+
- _index-testing.md
|
|
154
|
+
- _index-external-tools.md
|
|
155
|
+
- _index-increments.md
|
|
156
|
+
- _index-performance.md
|
|
157
|
+
- _index-config.md
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## Docusaurus Integration
|
|
161
|
+
|
|
162
|
+
After running this command, use:
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
/specweave-docs:preview
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
The generated indexes will appear in the sidebar:
|
|
169
|
+
- **📚 Browse by Category** - main hub
|
|
170
|
+
- **🔄 Synchronization & Integration** - themed section
|
|
171
|
+
- **🐙 GitHub Integration** - themed section
|
|
172
|
+
- etc.
|
|
173
|
+
|
|
174
|
+
## Best Practices
|
|
175
|
+
|
|
176
|
+
1. **Run periodically** - As docs grow, re-run to update indexes
|
|
177
|
+
2. **Review uncategorized** - Files without themes may need better naming
|
|
178
|
+
3. **Check Docusaurus** - Preview after organizing to verify navigation
|
|
179
|
+
4. **Don't move files** - Indexes are virtual, original URLs preserved
|
|
180
|
+
|
|
181
|
+
## Related Commands
|
|
182
|
+
|
|
183
|
+
- `/specweave-docs:preview` - Preview documentation with Docusaurus
|
|
184
|
+
- `/specweave-docs:build` - Build static documentation site
|
|
185
|
+
- Enterprise health report - Includes organization recommendations
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"hooks": [
|
|
6
6
|
{
|
|
7
7
|
"type": "command",
|
|
8
|
-
"command": "
|
|
8
|
+
"command": "bash -c 'F=\"${CLAUDE_PLUGIN_ROOT}/hooks/universal/dispatcher.mjs\"; [ -f \"$F\" ] && node \"$F\" session-start || printf \"{\\\"continue\\\":true}\"' 2>/dev/null || printf '{\"continue\":true}'"
|
|
9
9
|
}
|
|
10
10
|
]
|
|
11
11
|
}
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"hooks": [
|
|
18
18
|
{
|
|
19
19
|
"type": "command",
|
|
20
|
-
"command": "
|
|
20
|
+
"command": "bash -c 'F=\"${CLAUDE_PLUGIN_ROOT}/hooks/universal/dispatcher.mjs\"; [ -f \"$F\" ] && node \"$F\" completion-guard || printf \"{\\\"continue\\\":true}\"' 2>/dev/null || printf '{\"continue\":true}'"
|
|
21
21
|
}
|
|
22
22
|
]
|
|
23
23
|
}
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"hooks": [
|
|
30
30
|
{
|
|
31
31
|
"type": "command",
|
|
32
|
-
"command": "
|
|
32
|
+
"command": "bash -c 'F=\"${CLAUDE_PLUGIN_ROOT}/hooks/universal/dispatcher.mjs\"; [ -f \"$F\" ] && node \"$F\" post-tool-use || printf \"{\\\"continue\\\":true}\"' 2>/dev/null || printf '{\"continue\":true}'"
|
|
33
33
|
}
|
|
34
34
|
]
|
|
35
35
|
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
@echo off
|
|
2
|
+
REM hook-wrapper.cmd - Windows resilient hook launcher
|
|
3
|
+
REM Prevents crashes when dispatcher.mjs is temporarily unavailable
|
|
4
|
+
|
|
5
|
+
setlocal enabledelayedexpansion
|
|
6
|
+
|
|
7
|
+
set "HOOK_TYPE=%~1"
|
|
8
|
+
if "%HOOK_TYPE%"=="" set "HOOK_TYPE=unknown"
|
|
9
|
+
|
|
10
|
+
set "SCRIPT_DIR=%~dp0"
|
|
11
|
+
set "DISPATCHER=%SCRIPT_DIR%dispatcher.mjs"
|
|
12
|
+
|
|
13
|
+
REM Check if dispatcher exists
|
|
14
|
+
if not exist "%DISPATCHER%" (
|
|
15
|
+
echo {"continue":true,"systemMessage":"Hook skipped: dispatcher.mjs not found"}
|
|
16
|
+
exit /b 0
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
REM Run dispatcher with error suppression
|
|
20
|
+
node "%DISPATCHER%" "%HOOK_TYPE%" 2>nul
|
|
21
|
+
if errorlevel 1 (
|
|
22
|
+
echo {"continue":true,"systemMessage":"Hook error, continuing"}
|
|
23
|
+
exit /b 0
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
exit /b 0
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# hook-wrapper.sh - Resilient hook launcher that prevents crashes
|
|
3
|
+
#
|
|
4
|
+
# Problem: Node.js crashes with "Cannot find module" BEFORE any error handling
|
|
5
|
+
# when dispatcher.mjs is temporarily unavailable (e.g., during marketplace refresh)
|
|
6
|
+
#
|
|
7
|
+
# Solution: Pre-check file existence, retry with delay, output valid JSON on failure
|
|
8
|
+
#
|
|
9
|
+
# Usage: bash hook-wrapper.sh <hook-type>
|
|
10
|
+
# Where hook-type is: session-start, post-tool-use, completion-guard
|
|
11
|
+
|
|
12
|
+
set -e
|
|
13
|
+
|
|
14
|
+
HOOK_TYPE="${1:-unknown}"
|
|
15
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
16
|
+
DISPATCHER="$SCRIPT_DIR/dispatcher.mjs"
|
|
17
|
+
|
|
18
|
+
# Maximum retry attempts for transient failures
|
|
19
|
+
MAX_RETRIES=3
|
|
20
|
+
RETRY_DELAY_MS=50
|
|
21
|
+
|
|
22
|
+
# Function to output valid JSON and exit gracefully
|
|
23
|
+
safe_exit() {
|
|
24
|
+
local msg="${1:-}"
|
|
25
|
+
if [[ -n "$msg" ]]; then
|
|
26
|
+
echo "{\"continue\":true,\"systemMessage\":\"Hook skipped: $msg\"}"
|
|
27
|
+
else
|
|
28
|
+
echo '{"continue":true}'
|
|
29
|
+
fi
|
|
30
|
+
exit 0
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
# Check if dispatcher exists with retry for transient failures
|
|
34
|
+
check_dispatcher() {
|
|
35
|
+
local attempt=1
|
|
36
|
+
while [[ $attempt -le $MAX_RETRIES ]]; do
|
|
37
|
+
if [[ -f "$DISPATCHER" ]]; then
|
|
38
|
+
return 0
|
|
39
|
+
fi
|
|
40
|
+
|
|
41
|
+
# Wait before retry (convert ms to seconds for sleep)
|
|
42
|
+
if [[ $attempt -lt $MAX_RETRIES ]]; then
|
|
43
|
+
sleep 0.$(printf '%03d' $RETRY_DELAY_MS)
|
|
44
|
+
fi
|
|
45
|
+
|
|
46
|
+
((attempt++))
|
|
47
|
+
done
|
|
48
|
+
|
|
49
|
+
return 1
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
# Main execution
|
|
53
|
+
if ! check_dispatcher; then
|
|
54
|
+
safe_exit "dispatcher.mjs not found (marketplace may be refreshing)"
|
|
55
|
+
fi
|
|
56
|
+
|
|
57
|
+
# Execute dispatcher with timeout protection
|
|
58
|
+
if command -v timeout &>/dev/null; then
|
|
59
|
+
# GNU timeout available (Linux)
|
|
60
|
+
timeout 5s node "$DISPATCHER" "$HOOK_TYPE" 2>/dev/null || safe_exit "dispatcher timeout or error"
|
|
61
|
+
elif command -v gtimeout &>/dev/null; then
|
|
62
|
+
# GNU timeout via coreutils (macOS with brew)
|
|
63
|
+
gtimeout 5s node "$DISPATCHER" "$HOOK_TYPE" 2>/dev/null || safe_exit "dispatcher timeout or error"
|
|
64
|
+
else
|
|
65
|
+
# No timeout available, run directly
|
|
66
|
+
node "$DISPATCHER" "$HOOK_TYPE" 2>/dev/null || safe_exit "dispatcher error"
|
|
67
|
+
fi
|