specweave 0.3.13 → 0.4.1

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 (168) hide show
  1. package/CLAUDE.md +506 -17
  2. package/README.md +100 -58
  3. package/bin/install-all.sh +9 -2
  4. package/bin/install-hooks.sh +57 -0
  5. package/bin/specweave.js +16 -0
  6. package/dist/adapters/adapter-base.d.ts +21 -0
  7. package/dist/adapters/adapter-base.d.ts.map +1 -1
  8. package/dist/adapters/adapter-base.js +28 -0
  9. package/dist/adapters/adapter-base.js.map +1 -1
  10. package/dist/adapters/adapter-interface.d.ts +41 -0
  11. package/dist/adapters/adapter-interface.d.ts.map +1 -1
  12. package/dist/adapters/claude/adapter.d.ts +36 -0
  13. package/dist/adapters/claude/adapter.d.ts.map +1 -1
  14. package/dist/adapters/claude/adapter.js +135 -0
  15. package/dist/adapters/claude/adapter.js.map +1 -1
  16. package/dist/adapters/copilot/adapter.d.ts +25 -0
  17. package/dist/adapters/copilot/adapter.d.ts.map +1 -1
  18. package/dist/adapters/copilot/adapter.js +112 -0
  19. package/dist/adapters/copilot/adapter.js.map +1 -1
  20. package/dist/adapters/cursor/adapter.d.ts +36 -0
  21. package/dist/adapters/cursor/adapter.d.ts.map +1 -1
  22. package/dist/adapters/cursor/adapter.js +140 -0
  23. package/dist/adapters/cursor/adapter.js.map +1 -1
  24. package/dist/adapters/generic/adapter.d.ts +25 -0
  25. package/dist/adapters/generic/adapter.d.ts.map +1 -1
  26. package/dist/adapters/generic/adapter.js +111 -0
  27. package/dist/adapters/generic/adapter.js.map +1 -1
  28. package/dist/cli/commands/init.d.ts.map +1 -1
  29. package/dist/cli/commands/init.js +103 -1
  30. package/dist/cli/commands/init.js.map +1 -1
  31. package/dist/cli/commands/plugin.d.ts +37 -0
  32. package/dist/cli/commands/plugin.d.ts.map +1 -0
  33. package/dist/cli/commands/plugin.js +296 -0
  34. package/dist/cli/commands/plugin.js.map +1 -0
  35. package/dist/core/agent-model-manager.d.ts +52 -0
  36. package/dist/core/agent-model-manager.d.ts.map +1 -0
  37. package/dist/core/agent-model-manager.js +120 -0
  38. package/dist/core/agent-model-manager.js.map +1 -0
  39. package/dist/core/cost-tracker.d.ts +108 -0
  40. package/dist/core/cost-tracker.d.ts.map +1 -0
  41. package/dist/core/cost-tracker.js +281 -0
  42. package/dist/core/cost-tracker.js.map +1 -0
  43. package/dist/core/model-selector.d.ts +57 -0
  44. package/dist/core/model-selector.d.ts.map +1 -0
  45. package/dist/core/model-selector.js +115 -0
  46. package/dist/core/model-selector.js.map +1 -0
  47. package/dist/core/phase-detector.d.ts +62 -0
  48. package/dist/core/phase-detector.d.ts.map +1 -0
  49. package/dist/core/phase-detector.js +229 -0
  50. package/dist/core/phase-detector.js.map +1 -0
  51. package/dist/core/plugin-detector.d.ts +96 -0
  52. package/dist/core/plugin-detector.d.ts.map +1 -0
  53. package/dist/core/plugin-detector.js +349 -0
  54. package/dist/core/plugin-detector.js.map +1 -0
  55. package/dist/core/plugin-loader.d.ts +111 -0
  56. package/dist/core/plugin-loader.d.ts.map +1 -0
  57. package/dist/core/plugin-loader.js +319 -0
  58. package/dist/core/plugin-loader.js.map +1 -0
  59. package/dist/core/plugin-manager.d.ts +144 -0
  60. package/dist/core/plugin-manager.d.ts.map +1 -0
  61. package/dist/core/plugin-manager.js +393 -0
  62. package/dist/core/plugin-manager.js.map +1 -0
  63. package/dist/core/schemas/plugin-manifest.schema.json +253 -0
  64. package/dist/core/types/plugin.d.ts +252 -0
  65. package/dist/core/types/plugin.d.ts.map +1 -0
  66. package/dist/core/types/plugin.js +48 -0
  67. package/dist/core/types/plugin.js.map +1 -0
  68. package/dist/integrations/jira/jira-mapper.d.ts +2 -2
  69. package/dist/integrations/jira/jira-mapper.js +2 -2
  70. package/dist/types/cost-tracking.d.ts +43 -0
  71. package/dist/types/cost-tracking.d.ts.map +1 -0
  72. package/dist/types/cost-tracking.js +8 -0
  73. package/dist/types/cost-tracking.js.map +1 -0
  74. package/dist/types/model-selection.d.ts +53 -0
  75. package/dist/types/model-selection.d.ts.map +1 -0
  76. package/dist/types/model-selection.js +12 -0
  77. package/dist/types/model-selection.js.map +1 -0
  78. package/dist/utils/cost-reporter.d.ts +58 -0
  79. package/dist/utils/cost-reporter.d.ts.map +1 -0
  80. package/dist/utils/cost-reporter.js +224 -0
  81. package/dist/utils/cost-reporter.js.map +1 -0
  82. package/dist/utils/pricing-constants.d.ts +70 -0
  83. package/dist/utils/pricing-constants.d.ts.map +1 -0
  84. package/dist/utils/pricing-constants.js +71 -0
  85. package/dist/utils/pricing-constants.js.map +1 -0
  86. package/package.json +13 -9
  87. package/src/adapters/adapter-base.ts +33 -0
  88. package/src/adapters/adapter-interface.ts +46 -0
  89. package/src/adapters/claude/adapter.ts +164 -0
  90. package/src/adapters/copilot/adapter.ts +138 -0
  91. package/src/adapters/cursor/adapter.ts +170 -0
  92. package/src/adapters/generic/adapter.ts +137 -0
  93. package/src/agents/architect/AGENT.md +3 -0
  94. package/src/agents/code-reviewer.md +156 -0
  95. package/src/agents/data-scientist/AGENT.md +181 -0
  96. package/src/agents/database-optimizer/AGENT.md +147 -0
  97. package/src/agents/devops/AGENT.md +3 -0
  98. package/src/agents/diagrams-architect/AGENT.md +3 -0
  99. package/src/agents/docs-writer/AGENT.md +3 -0
  100. package/src/agents/kubernetes-architect/AGENT.md +142 -0
  101. package/src/agents/ml-engineer/AGENT.md +150 -0
  102. package/src/agents/mlops-engineer/AGENT.md +201 -0
  103. package/src/agents/network-engineer/AGENT.md +149 -0
  104. package/src/agents/observability-engineer/AGENT.md +213 -0
  105. package/src/agents/payment-integration/AGENT.md +35 -0
  106. package/src/agents/performance/AGENT.md +3 -0
  107. package/src/agents/performance-engineer/AGENT.md +153 -0
  108. package/src/agents/pm/AGENT.md +3 -0
  109. package/src/agents/qa-lead/AGENT.md +3 -0
  110. package/src/agents/security/AGENT.md +3 -0
  111. package/src/agents/sre/AGENT.md +3 -0
  112. package/src/agents/tdd-orchestrator/AGENT.md +169 -0
  113. package/src/agents/tech-lead/AGENT.md +3 -0
  114. package/src/commands/specweave.costs.md +261 -0
  115. package/src/commands/specweave.increment.md +48 -4
  116. package/src/commands/specweave.ml-pipeline.md +292 -0
  117. package/src/commands/specweave.monitor-setup.md +501 -0
  118. package/src/commands/specweave.slo-implement.md +1055 -0
  119. package/src/commands/specweave.sync-github.md +1 -1
  120. package/src/commands/specweave.tdd-cycle.md +199 -0
  121. package/src/commands/specweave.tdd-green.md +842 -0
  122. package/src/commands/specweave.tdd-red.md +135 -0
  123. package/src/commands/specweave.tdd-refactor.md +165 -0
  124. package/src/hooks/post-increment-plugin-detect.sh +142 -0
  125. package/src/hooks/post-task-completion.sh +53 -11
  126. package/src/hooks/pre-task-plugin-detect.sh +96 -0
  127. package/src/skills/SKILLS-INDEX.md +18 -10
  128. package/src/skills/billing-automation/SKILL.md +559 -0
  129. package/src/skills/distributed-tracing/SKILL.md +438 -0
  130. package/src/skills/e2e-playwright/README.md +1 -1
  131. package/src/skills/e2e-playwright/package.json +1 -1
  132. package/src/skills/gitops-workflow/SKILL.md +285 -0
  133. package/src/skills/gitops-workflow/references/argocd-setup.md +134 -0
  134. package/src/skills/gitops-workflow/references/sync-policies.md +131 -0
  135. package/src/skills/grafana-dashboards/SKILL.md +369 -0
  136. package/src/skills/helm-chart-scaffolding/SKILL.md +544 -0
  137. package/src/skills/helm-chart-scaffolding/assets/Chart.yaml.template +42 -0
  138. package/src/skills/helm-chart-scaffolding/assets/values.yaml.template +185 -0
  139. package/src/skills/helm-chart-scaffolding/references/chart-structure.md +500 -0
  140. package/src/skills/helm-chart-scaffolding/scripts/validate-chart.sh +244 -0
  141. package/src/skills/k8s-manifest-generator/SKILL.md +511 -0
  142. package/src/skills/k8s-manifest-generator/assets/configmap-template.yaml +296 -0
  143. package/src/skills/k8s-manifest-generator/assets/deployment-template.yaml +203 -0
  144. package/src/skills/k8s-manifest-generator/assets/service-template.yaml +171 -0
  145. package/src/skills/k8s-manifest-generator/references/deployment-spec.md +753 -0
  146. package/src/skills/k8s-manifest-generator/references/service-spec.md +724 -0
  147. package/src/skills/k8s-security-policies/SKILL.md +334 -0
  148. package/src/skills/k8s-security-policies/assets/network-policy-template.yaml +177 -0
  149. package/src/skills/k8s-security-policies/references/rbac-patterns.md +187 -0
  150. package/src/skills/ml-pipeline-workflow/SKILL.md +245 -0
  151. package/src/skills/paypal-integration/SKILL.md +467 -0
  152. package/src/skills/pci-compliance/SKILL.md +466 -0
  153. package/src/skills/prometheus-configuration/SKILL.md +392 -0
  154. package/src/skills/slo-implementation/SKILL.md +329 -0
  155. package/src/skills/stripe-integration/SKILL.md +442 -0
  156. package/src/skills/tdd-workflow/SKILL.md +378 -0
  157. package/src/templates/README.md.template +1 -1
  158. package/src/skills/bmad-method-expert/SKILL.md +0 -626
  159. package/src/skills/bmad-method-expert/scripts/analyze-project.js +0 -318
  160. package/src/skills/bmad-method-expert/scripts/check-setup.js +0 -208
  161. package/src/skills/bmad-method-expert/scripts/generate-template.js +0 -1149
  162. package/src/skills/bmad-method-expert/scripts/validate-documents.js +0 -340
  163. package/src/skills/context-optimizer/SKILL.md +0 -588
  164. package/src/skills/figma-designer/SKILL.md +0 -149
  165. package/src/skills/figma-implementer/SKILL.md +0 -148
  166. package/src/skills/figma-mcp-connector/SKILL.md +0 -136
  167. package/src/skills/figma-to-code/SKILL.md +0 -128
  168. package/src/skills/spec-kit-expert/SKILL.md +0 -1010
@@ -0,0 +1,244 @@
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ CHART_DIR="${1:-.}"
5
+ RELEASE_NAME="test-release"
6
+
7
+ echo "═══════════════════════════════════════════════════════"
8
+ echo " Helm Chart Validation"
9
+ echo "═══════════════════════════════════════════════════════"
10
+ echo ""
11
+
12
+ # Colors
13
+ GREEN='\033[0;32m'
14
+ YELLOW='\033[1;33m'
15
+ RED='\033[0;31m'
16
+ NC='\033[0m' # No Color
17
+
18
+ success() {
19
+ echo -e "${GREEN}✓${NC} $1"
20
+ }
21
+
22
+ warning() {
23
+ echo -e "${YELLOW}⚠${NC} $1"
24
+ }
25
+
26
+ error() {
27
+ echo -e "${RED}✗${NC} $1"
28
+ }
29
+
30
+ # Check if Helm is installed
31
+ if ! command -v helm &> /dev/null; then
32
+ error "Helm is not installed"
33
+ exit 1
34
+ fi
35
+
36
+ echo "📦 Chart directory: $CHART_DIR"
37
+ echo ""
38
+
39
+ # 1. Check chart structure
40
+ echo "1️⃣ Checking chart structure..."
41
+ if [ ! -f "$CHART_DIR/Chart.yaml" ]; then
42
+ error "Chart.yaml not found"
43
+ exit 1
44
+ fi
45
+ success "Chart.yaml exists"
46
+
47
+ if [ ! -f "$CHART_DIR/values.yaml" ]; then
48
+ error "values.yaml not found"
49
+ exit 1
50
+ fi
51
+ success "values.yaml exists"
52
+
53
+ if [ ! -d "$CHART_DIR/templates" ]; then
54
+ error "templates/ directory not found"
55
+ exit 1
56
+ fi
57
+ success "templates/ directory exists"
58
+ echo ""
59
+
60
+ # 2. Lint the chart
61
+ echo "2️⃣ Linting chart..."
62
+ if helm lint "$CHART_DIR"; then
63
+ success "Chart passed lint"
64
+ else
65
+ error "Chart failed lint"
66
+ exit 1
67
+ fi
68
+ echo ""
69
+
70
+ # 3. Check Chart.yaml
71
+ echo "3️⃣ Validating Chart.yaml..."
72
+ CHART_NAME=$(grep "^name:" "$CHART_DIR/Chart.yaml" | awk '{print $2}')
73
+ CHART_VERSION=$(grep "^version:" "$CHART_DIR/Chart.yaml" | awk '{print $2}')
74
+ APP_VERSION=$(grep "^appVersion:" "$CHART_DIR/Chart.yaml" | awk '{print $2}' | tr -d '"')
75
+
76
+ if [ -z "$CHART_NAME" ]; then
77
+ error "Chart name not found"
78
+ exit 1
79
+ fi
80
+ success "Chart name: $CHART_NAME"
81
+
82
+ if [ -z "$CHART_VERSION" ]; then
83
+ error "Chart version not found"
84
+ exit 1
85
+ fi
86
+ success "Chart version: $CHART_VERSION"
87
+
88
+ if [ -z "$APP_VERSION" ]; then
89
+ warning "App version not specified"
90
+ else
91
+ success "App version: $APP_VERSION"
92
+ fi
93
+ echo ""
94
+
95
+ # 4. Test template rendering
96
+ echo "4️⃣ Testing template rendering..."
97
+ if helm template "$RELEASE_NAME" "$CHART_DIR" > /dev/null 2>&1; then
98
+ success "Templates rendered successfully"
99
+ else
100
+ error "Template rendering failed"
101
+ helm template "$RELEASE_NAME" "$CHART_DIR"
102
+ exit 1
103
+ fi
104
+ echo ""
105
+
106
+ # 5. Dry-run installation
107
+ echo "5️⃣ Testing dry-run installation..."
108
+ if helm install "$RELEASE_NAME" "$CHART_DIR" --dry-run --debug > /dev/null 2>&1; then
109
+ success "Dry-run installation successful"
110
+ else
111
+ error "Dry-run installation failed"
112
+ exit 1
113
+ fi
114
+ echo ""
115
+
116
+ # 6. Check for required Kubernetes resources
117
+ echo "6️⃣ Checking generated resources..."
118
+ MANIFESTS=$(helm template "$RELEASE_NAME" "$CHART_DIR")
119
+
120
+ if echo "$MANIFESTS" | grep -q "kind: Deployment"; then
121
+ success "Deployment found"
122
+ else
123
+ warning "No Deployment found"
124
+ fi
125
+
126
+ if echo "$MANIFESTS" | grep -q "kind: Service"; then
127
+ success "Service found"
128
+ else
129
+ warning "No Service found"
130
+ fi
131
+
132
+ if echo "$MANIFESTS" | grep -q "kind: ServiceAccount"; then
133
+ success "ServiceAccount found"
134
+ else
135
+ warning "No ServiceAccount found"
136
+ fi
137
+ echo ""
138
+
139
+ # 7. Check for security best practices
140
+ echo "7️⃣ Checking security best practices..."
141
+ if echo "$MANIFESTS" | grep -q "runAsNonRoot: true"; then
142
+ success "Running as non-root user"
143
+ else
144
+ warning "Not explicitly running as non-root"
145
+ fi
146
+
147
+ if echo "$MANIFESTS" | grep -q "readOnlyRootFilesystem: true"; then
148
+ success "Using read-only root filesystem"
149
+ else
150
+ warning "Not using read-only root filesystem"
151
+ fi
152
+
153
+ if echo "$MANIFESTS" | grep -q "allowPrivilegeEscalation: false"; then
154
+ success "Privilege escalation disabled"
155
+ else
156
+ warning "Privilege escalation not explicitly disabled"
157
+ fi
158
+ echo ""
159
+
160
+ # 8. Check for resource limits
161
+ echo "8️⃣ Checking resource configuration..."
162
+ if echo "$MANIFESTS" | grep -q "resources:"; then
163
+ if echo "$MANIFESTS" | grep -q "limits:"; then
164
+ success "Resource limits defined"
165
+ else
166
+ warning "No resource limits defined"
167
+ fi
168
+ if echo "$MANIFESTS" | grep -q "requests:"; then
169
+ success "Resource requests defined"
170
+ else
171
+ warning "No resource requests defined"
172
+ fi
173
+ else
174
+ warning "No resources defined"
175
+ fi
176
+ echo ""
177
+
178
+ # 9. Check for health probes
179
+ echo "9️⃣ Checking health probes..."
180
+ if echo "$MANIFESTS" | grep -q "livenessProbe:"; then
181
+ success "Liveness probe configured"
182
+ else
183
+ warning "No liveness probe found"
184
+ fi
185
+
186
+ if echo "$MANIFESTS" | grep -q "readinessProbe:"; then
187
+ success "Readiness probe configured"
188
+ else
189
+ warning "No readiness probe found"
190
+ fi
191
+ echo ""
192
+
193
+ # 10. Check dependencies
194
+ if [ -f "$CHART_DIR/Chart.yaml" ] && grep -q "^dependencies:" "$CHART_DIR/Chart.yaml"; then
195
+ echo "🔟 Checking dependencies..."
196
+ if helm dependency list "$CHART_DIR" > /dev/null 2>&1; then
197
+ success "Dependencies valid"
198
+
199
+ if [ -f "$CHART_DIR/Chart.lock" ]; then
200
+ success "Chart.lock file present"
201
+ else
202
+ warning "Chart.lock file missing (run 'helm dependency update')"
203
+ fi
204
+ else
205
+ error "Dependencies check failed"
206
+ fi
207
+ echo ""
208
+ fi
209
+
210
+ # 11. Check for values schema
211
+ if [ -f "$CHART_DIR/values.schema.json" ]; then
212
+ echo "1️⃣1️⃣ Validating values schema..."
213
+ success "values.schema.json present"
214
+
215
+ # Validate schema if jq is available
216
+ if command -v jq &> /dev/null; then
217
+ if jq empty "$CHART_DIR/values.schema.json" 2>/dev/null; then
218
+ success "values.schema.json is valid JSON"
219
+ else
220
+ error "values.schema.json contains invalid JSON"
221
+ exit 1
222
+ fi
223
+ fi
224
+ echo ""
225
+ fi
226
+
227
+ # Summary
228
+ echo "═══════════════════════════════════════════════════════"
229
+ echo " Validation Complete!"
230
+ echo "═══════════════════════════════════════════════════════"
231
+ echo ""
232
+ echo "Chart: $CHART_NAME"
233
+ echo "Version: $CHART_VERSION"
234
+ if [ -n "$APP_VERSION" ]; then
235
+ echo "App Version: $APP_VERSION"
236
+ fi
237
+ echo ""
238
+ success "All validations passed!"
239
+ echo ""
240
+ echo "Next steps:"
241
+ echo " • helm package $CHART_DIR"
242
+ echo " • helm install my-release $CHART_DIR"
243
+ echo " • helm test my-release"
244
+ echo ""