specweave 0.23.14 → 0.23.18
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 +11 -0
- package/CLAUDE.md +77 -7
- package/dist/plugins/specweave-github/lib/github-spec-content-sync.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/github-spec-content-sync.js +57 -0
- package/dist/plugins/specweave-github/lib/github-spec-content-sync.js.map +1 -1
- package/dist/src/cli/commands/sync-spec-content.js +3 -0
- package/dist/src/cli/commands/sync-spec-content.js.map +1 -1
- package/dist/src/core/progress/progress-tracker.d.ts +4 -1
- package/dist/src/core/progress/progress-tracker.d.ts.map +1 -1
- package/dist/src/core/progress/progress-tracker.js +33 -4
- package/dist/src/core/progress/progress-tracker.js.map +1 -1
- package/dist/src/core/spec-content-sync.d.ts +1 -1
- package/dist/src/core/spec-content-sync.d.ts.map +1 -1
- package/dist/src/core/spec-detector.d.ts +5 -0
- package/dist/src/core/spec-detector.d.ts.map +1 -1
- package/dist/src/core/spec-detector.js +91 -33
- package/dist/src/core/spec-detector.js.map +1 -1
- package/dist/src/integrations/ado/ado-dependency-loader.d.ts +1 -1
- package/dist/src/integrations/ado/ado-dependency-loader.d.ts.map +1 -1
- package/dist/src/integrations/ado/ado-dependency-loader.js +39 -7
- package/dist/src/integrations/ado/ado-dependency-loader.js.map +1 -1
- package/package.json +1 -1
- package/plugins/specweave/hooks/lib/migrate-increment-work.sh +1 -1
- package/plugins/specweave/hooks/lib/migrate-increment-work.sh.bak +245 -0
- package/plugins/specweave/hooks/lib/sync-spec-content.sh +2 -2
- package/plugins/specweave/hooks/lib/sync-spec-content.sh.bak +149 -0
- package/plugins/specweave/hooks/lib/update-status-line.sh +34 -4
- package/plugins/specweave/hooks/lib/validate-spec-status.sh +1 -1
- package/plugins/specweave/hooks/lib/validate-spec-status.sh.bak +163 -0
- package/plugins/specweave/hooks/post-first-increment.sh +1 -1
- package/plugins/specweave/hooks/post-first-increment.sh.bak +61 -0
- package/plugins/specweave/hooks/post-spec-update.sh +1 -1
- package/plugins/specweave/hooks/post-spec-update.sh.bak +158 -0
- package/plugins/specweave/hooks/post-user-story-complete.sh +1 -1
- package/plugins/specweave/hooks/post-user-story-complete.sh.bak +179 -0
- package/plugins/specweave/hooks/pre-command-deduplication.sh +1 -1
- package/plugins/specweave/hooks/pre-command-deduplication.sh.bak +83 -0
- package/plugins/specweave/hooks/user-prompt-submit.sh +1 -1
- package/plugins/specweave/hooks/user-prompt-submit.sh.bak +386 -0
- package/plugins/specweave/skills/specweave-framework/SKILL.md +1 -1
- package/plugins/specweave-ado/agents/ado-manager/AGENT.md +23 -0
- package/plugins/specweave-ado/agents/ado-multi-project-mapper/AGENT.md +23 -0
- package/plugins/specweave-ado/agents/ado-sync-judge/AGENT.md +23 -0
- package/plugins/specweave-backend/agents/database-optimizer/AGENT.md +23 -0
- package/plugins/specweave-confluent/agents/confluent-architect/AGENT.md +23 -0
- package/plugins/specweave-diagrams/agents/diagrams-architect/AGENT.md +23 -0
- package/plugins/specweave-github/.claude-plugin/plugin.json +15 -1
- package/plugins/specweave-github/agents/github-manager/AGENT.md +23 -0
- package/plugins/specweave-github/agents/github-task-splitter/AGENT.md +25 -0
- package/plugins/specweave-github/agents/user-story-updater/AGENT.md +25 -0
- package/plugins/specweave-github/hooks/.specweave/logs/hooks-debug.log +16 -0
- package/plugins/specweave-github/hooks/post-task-completion.sh +53 -0
- package/plugins/specweave-github/lib/github-spec-content-sync.js +49 -0
- package/plugins/specweave-github/lib/github-spec-content-sync.ts +67 -0
- package/plugins/specweave-infrastructure/agents/devops/AGENT.md +26 -0
- package/plugins/specweave-infrastructure/agents/network-engineer/AGENT.md +26 -0
- package/plugins/specweave-infrastructure/agents/observability-engineer/AGENT.md +26 -0
- package/plugins/specweave-infrastructure/agents/performance-engineer/AGENT.md +26 -0
- package/plugins/specweave-infrastructure/agents/sre/AGENT.md +26 -0
- package/plugins/specweave-jira/agents/jira-manager/AGENT.md +26 -0
- package/plugins/specweave-kafka/agents/kafka-architect/AGENT.md +26 -0
- package/plugins/specweave-kafka/agents/kafka-devops/AGENT.md +26 -0
- package/plugins/specweave-kafka/agents/kafka-observability/AGENT.md +26 -0
- package/plugins/specweave-kubernetes/agents/kubernetes-architect/AGENT.md +26 -0
- package/plugins/specweave-ml/.claude-plugin/plugin.json +2 -2
- package/plugins/specweave-ml/agents/data-scientist/AGENT.md +26 -0
- package/plugins/specweave-ml/agents/ml-engineer/AGENT.md +26 -0
- package/plugins/specweave-ml/agents/mlops-engineer/AGENT.md +26 -0
- package/plugins/specweave-mobile/agents/mobile-architect/AGENT.md +26 -0
- package/plugins/specweave-payments/agents/payment-integration/AGENT.md +26 -0
- package/plugins/specweave-plugin-dev/.claude-plugin/plugin.json +19 -0
- package/plugins/specweave-plugin-dev/skills/plugin-expert/SKILL.md +1231 -0
- package/plugins/specweave-release/agents/release-manager/AGENT.md +27 -0
- package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +24 -0
- package/plugins/specweave/skills/plugin-expert/SKILL.md +0 -340
- package/plugins/specweave-alternatives/.claude-plugin/plugin.json +0 -21
- package/plugins/specweave-alternatives/skills/bmad-method-expert/SKILL.md +0 -626
- package/plugins/specweave-alternatives/skills/bmad-method-expert/scripts/analyze-project.js +0 -318
- package/plugins/specweave-alternatives/skills/bmad-method-expert/scripts/check-setup.js +0 -208
- package/plugins/specweave-alternatives/skills/bmad-method-expert/scripts/generate-template.js +0 -1149
- package/plugins/specweave-alternatives/skills/bmad-method-expert/scripts/validate-documents.js +0 -340
- package/plugins/specweave-alternatives/skills/spec-kit-expert/SKILL.md +0 -1010
- package/plugins/specweave-cost-optimizer/.claude-plugin/plugin.json +0 -20
- package/plugins/specweave-cost-optimizer/skills/cost-optimizer/SKILL.md +0 -190
- package/plugins/specweave-docs/.claude-plugin/plugin.json +0 -19
- package/plugins/specweave-docs/skills/docusaurus/SKILL.md +0 -613
- package/plugins/specweave-docs/skills/spec-driven-brainstorming/README.md +0 -264
- package/plugins/specweave-docs/skills/spec-driven-brainstorming/SKILL.md +0 -439
- package/plugins/specweave-docs/skills/spec-driven-debugging/README.md +0 -479
- package/plugins/specweave-docs/skills/spec-driven-debugging/SKILL.md +0 -652
- package/plugins/specweave-figma/.claude-plugin/.mcp.json +0 -12
- package/plugins/specweave-figma/.claude-plugin/plugin.json +0 -20
- package/plugins/specweave-figma/ARCHITECTURE.md +0 -453
- package/plugins/specweave-figma/README.md +0 -728
- package/plugins/specweave-figma/skills/figma-to-code/SKILL.md +0 -632
- package/plugins/specweave-figma/skills/figma-to-code/test-1-token-generation.yaml +0 -29
- package/plugins/specweave-figma/skills/figma-to-code/test-2-component-generation.yaml +0 -27
- package/plugins/specweave-figma/skills/figma-to-code/test-3-typescript-generation.yaml +0 -28
- package/plugins/specweave-frontend/.claude-plugin/plugin.json +0 -21
- package/plugins/specweave-frontend/skills/design-system-architect/SKILL.md +0 -107
- package/plugins/specweave-frontend/skills/frontend/SKILL.md +0 -177
- package/plugins/specweave-frontend/skills/nextjs/SKILL.md +0 -176
- package/plugins/specweave-testing/.claude-plugin/plugin.json +0 -20
- package/plugins/specweave-testing/skills/e2e-playwright/README.md +0 -506
- package/plugins/specweave-testing/skills/e2e-playwright/SKILL.md +0 -457
- package/plugins/specweave-testing/skills/e2e-playwright/execute.js +0 -373
- package/plugins/specweave-testing/skills/e2e-playwright/lib/utils.js +0 -514
- package/plugins/specweave-testing/skills/e2e-playwright/package.json +0 -33
- package/plugins/specweave-tooling/.claude-plugin/plugin.json +0 -19
- package/plugins/specweave-tooling/skills/skill-creator/LICENSE.txt +0 -202
- package/plugins/specweave-tooling/skills/skill-creator/SKILL.md +0 -209
- package/plugins/specweave-tooling/skills/skill-creator/scripts/init_skill.py +0 -303
- package/plugins/specweave-tooling/skills/skill-creator/scripts/package_skill.py +0 -110
- package/plugins/specweave-tooling/skills/skill-creator/scripts/quick_validate.py +0 -65
- package/plugins/specweave-tooling/skills/skill-router/SKILL.md +0 -479
- package/plugins/specweave-ui/.claude-plugin/plugin.json +0 -26
- package/plugins/specweave-ui/.mcp.json +0 -10
- package/plugins/specweave-ui/README.md +0 -492
- package/plugins/specweave-ui/skills/browser-automation/SKILL.md +0 -676
|
@@ -7,6 +7,31 @@ description: Updates GitHub issues for user stories with proper ACs and tasks. A
|
|
|
7
7
|
|
|
8
8
|
**Role**: Updates GitHub issues for individual user stories to include checkable acceptance criteria and task connections.
|
|
9
9
|
|
|
10
|
+
## 🚀 How to Invoke This Agent
|
|
11
|
+
|
|
12
|
+
**Subagent Type**: `specweave-github:user-story-updater:user-story-updater`
|
|
13
|
+
|
|
14
|
+
**Usage Example**:
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
Task({
|
|
18
|
+
subagent_type: "specweave-github:user-story-updater:user-story-updater",
|
|
19
|
+
prompt: "Update GitHub issue #501 for user story FS-031/US-004 with checkable ACs and task connections",
|
|
20
|
+
model: "haiku" // optional: haiku, sonnet, opus
|
|
21
|
+
});
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**Naming Convention**: `{plugin}:{directory}:{yaml-name-or-directory-name}`
|
|
25
|
+
- **Plugin**: specweave-github
|
|
26
|
+
- **Directory**: user-story-updater
|
|
27
|
+
- **Agent Name**: user-story-updater
|
|
28
|
+
|
|
29
|
+
**When to Use**:
|
|
30
|
+
- You need to sync user story details from SpecWeave to GitHub issues
|
|
31
|
+
- You want to add checkable acceptance criteria checkboxes to GitHub issues
|
|
32
|
+
- You need to link tasks in SpecWeave tasks.md to GitHub issues
|
|
33
|
+
- You're updating GitHub issue content with the latest user story information and progress
|
|
34
|
+
|
|
10
35
|
**Activates For**:
|
|
11
36
|
- "Update user story issue"
|
|
12
37
|
- "Fix GitHub issue format for US-004"
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
[Sat Nov 22 02:20:23 EST 2025] [GitHub] 🔗 GitHub sync hook fired
|
|
2
|
+
[Sat Nov 22 02:20:23 EST 2025] [GitHub] ⚠️ sync-spec-content CLI not found at /Users/antonabyzov/Projects/github/specweave/plugins/specweave-github/hooks/dist/src/cli/commands/sync-spec-content.js, skipping sync
|
|
3
|
+
[Sat Nov 22 02:20:26 EST 2025] [GitHub] 🔗 GitHub sync hook fired
|
|
4
|
+
[Sat Nov 22 02:20:26 EST 2025] [GitHub] ⚠️ sync-spec-content CLI not found at /Users/antonabyzov/Projects/github/specweave/plugins/specweave-github/hooks/dist/src/cli/commands/sync-spec-content.js, skipping sync
|
|
5
|
+
[Sat Nov 22 02:20:26 EST 2025] [GitHub] 🔗 GitHub sync hook fired
|
|
6
|
+
[Sat Nov 22 02:20:26 EST 2025] [GitHub] ⚠️ sync-spec-content CLI not found at /Users/antonabyzov/Projects/github/specweave/plugins/specweave-github/hooks/dist/src/cli/commands/sync-spec-content.js, skipping sync
|
|
7
|
+
[Sat Nov 22 02:20:28 EST 2025] [GitHub] 🔗 GitHub sync hook fired
|
|
8
|
+
[Sat Nov 22 02:20:28 EST 2025] [GitHub] ⚠️ sync-spec-content CLI not found at /Users/antonabyzov/Projects/github/specweave/plugins/specweave-github/hooks/dist/src/cli/commands/sync-spec-content.js, skipping sync
|
|
9
|
+
[Sat Nov 22 02:20:31 EST 2025] [GitHub] 🔗 GitHub sync hook fired
|
|
10
|
+
[Sat Nov 22 02:20:31 EST 2025] [GitHub] ⚠️ sync-spec-content CLI not found at /Users/antonabyzov/Projects/github/specweave/plugins/specweave-github/hooks/dist/src/cli/commands/sync-spec-content.js, skipping sync
|
|
11
|
+
[Sat Nov 22 02:20:31 EST 2025] [GitHub] 🔗 GitHub sync hook fired
|
|
12
|
+
[Sat Nov 22 02:20:31 EST 2025] [GitHub] ⚠️ sync-spec-content CLI not found at /Users/antonabyzov/Projects/github/specweave/plugins/specweave-github/hooks/dist/src/cli/commands/sync-spec-content.js, skipping sync
|
|
13
|
+
[Sat Nov 22 02:20:33 EST 2025] [GitHub] 🔗 GitHub sync hook fired
|
|
14
|
+
[Sat Nov 22 02:20:33 EST 2025] [GitHub] ⚠️ sync-spec-content CLI not found at /Users/antonabyzov/Projects/github/specweave/plugins/specweave-github/hooks/dist/src/cli/commands/sync-spec-content.js, skipping sync
|
|
15
|
+
[Sat Nov 22 02:20:36 EST 2025] [GitHub] 🔗 GitHub sync hook fired
|
|
16
|
+
[Sat Nov 22 02:20:36 EST 2025] [GitHub] ⚠️ sync-spec-content CLI not found at /Users/antonabyzov/Projects/github/specweave/plugins/specweave-github/hooks/dist/src/cli/commands/sync-spec-content.js, skipping sync
|
|
@@ -26,6 +26,53 @@ if [[ "${SPECWEAVE_DISABLE_HOOKS:-0}" == "1" ]]; then
|
|
|
26
26
|
exit 0
|
|
27
27
|
fi
|
|
28
28
|
|
|
29
|
+
# ============================================================================
|
|
30
|
+
# CIRCUIT BREAKER & FILE LOCKING
|
|
31
|
+
# ============================================================================
|
|
32
|
+
|
|
33
|
+
# CIRCUIT BREAKER: Auto-disable after consecutive failures
|
|
34
|
+
CIRCUIT_BREAKER_FILE=".specweave/state/.hook-circuit-breaker-github"
|
|
35
|
+
CIRCUIT_BREAKER_THRESHOLD=3
|
|
36
|
+
|
|
37
|
+
mkdir -p ".specweave/state" 2>/dev/null || true
|
|
38
|
+
|
|
39
|
+
if [[ -f "$CIRCUIT_BREAKER_FILE" ]]; then
|
|
40
|
+
FAILURE_COUNT=$(cat "$CIRCUIT_BREAKER_FILE" 2>/dev/null || echo 0)
|
|
41
|
+
if (( FAILURE_COUNT >= CIRCUIT_BREAKER_THRESHOLD )); then
|
|
42
|
+
# Circuit breaker is OPEN - hooks are disabled
|
|
43
|
+
exit 0
|
|
44
|
+
fi
|
|
45
|
+
fi
|
|
46
|
+
|
|
47
|
+
# FILE LOCK: Only allow 1 GitHub sync hook at a time
|
|
48
|
+
LOCK_FILE=".specweave/state/.hook-github-sync.lock"
|
|
49
|
+
LOCK_TIMEOUT=15 # seconds (GitHub sync can take longer)
|
|
50
|
+
|
|
51
|
+
LOCK_ACQUIRED=false
|
|
52
|
+
for i in {1..15}; do
|
|
53
|
+
if mkdir "$LOCK_FILE" 2>/dev/null; then
|
|
54
|
+
LOCK_ACQUIRED=true
|
|
55
|
+
trap 'rmdir "$LOCK_FILE" 2>/dev/null || true' EXIT
|
|
56
|
+
break
|
|
57
|
+
fi
|
|
58
|
+
|
|
59
|
+
# Check for stale lock
|
|
60
|
+
if [[ -d "$LOCK_FILE" ]]; then
|
|
61
|
+
LOCK_AGE=$(($(date +%s) - $(stat -f "%m" "$LOCK_FILE" 2>/dev/null || echo 0)))
|
|
62
|
+
if (( LOCK_AGE > LOCK_TIMEOUT )); then
|
|
63
|
+
rmdir "$LOCK_FILE" 2>/dev/null || true
|
|
64
|
+
continue
|
|
65
|
+
fi
|
|
66
|
+
fi
|
|
67
|
+
|
|
68
|
+
sleep 0.2
|
|
69
|
+
done
|
|
70
|
+
|
|
71
|
+
if [[ "$LOCK_ACQUIRED" == "false" ]]; then
|
|
72
|
+
# Another instance is running, skip
|
|
73
|
+
exit 0
|
|
74
|
+
fi
|
|
75
|
+
|
|
29
76
|
# ============================================================================
|
|
30
77
|
# PROJECT ROOT DETECTION
|
|
31
78
|
# ============================================================================
|
|
@@ -252,6 +299,12 @@ else
|
|
|
252
299
|
echo "[$(date)] [GitHub] ℹ️ Epic sync disabled (sync at User Story level only)" >> "$DEBUG_LOG" 2>/dev/null || true
|
|
253
300
|
fi
|
|
254
301
|
|
|
302
|
+
# ============================================================================
|
|
303
|
+
# CIRCUIT BREAKER UPDATE
|
|
304
|
+
# ============================================================================
|
|
305
|
+
# Reset circuit breaker on successful completion (all errors are caught above)
|
|
306
|
+
echo "0" > "$CIRCUIT_BREAKER_FILE" 2>/dev/null || true
|
|
307
|
+
|
|
255
308
|
# ============================================================================
|
|
256
309
|
# OUTPUT TO CLAUDE
|
|
257
310
|
# ============================================================================
|
|
@@ -85,6 +85,17 @@ async function syncSpecContentToGitHub(options) {
|
|
|
85
85
|
async function createGitHubIssue(client, spec, options) {
|
|
86
86
|
const { specPath, dryRun, verbose } = options;
|
|
87
87
|
try {
|
|
88
|
+
const permissions = await loadSyncPermissions(specPath);
|
|
89
|
+
if (!permissions.canCreate) {
|
|
90
|
+
if (verbose) {
|
|
91
|
+
console.log(" \u26A0\uFE0F Skipping create - canUpsertInternalItems is disabled in config");
|
|
92
|
+
}
|
|
93
|
+
return {
|
|
94
|
+
success: false,
|
|
95
|
+
action: "skipped",
|
|
96
|
+
error: "canUpsertInternalItems is disabled in .specweave/config.json"
|
|
97
|
+
};
|
|
98
|
+
}
|
|
88
99
|
const titleId = spec.project === "_features" ? spec.identifier.display : spec.identifier.compact;
|
|
89
100
|
const title = `[${titleId}] ${spec.title}`;
|
|
90
101
|
const body = buildExternalDescription(spec);
|
|
@@ -141,6 +152,17 @@ ${body}`);
|
|
|
141
152
|
async function updateGitHubIssue(client, spec, issueNumber, options) {
|
|
142
153
|
const { specPath, dryRun, verbose } = options;
|
|
143
154
|
try {
|
|
155
|
+
const permissions = await loadSyncPermissions(specPath);
|
|
156
|
+
if (!permissions.canUpdate) {
|
|
157
|
+
if (verbose) {
|
|
158
|
+
console.log(" \u26A0\uFE0F Skipping update - canUpdateExternalItems is disabled in config");
|
|
159
|
+
}
|
|
160
|
+
return {
|
|
161
|
+
success: false,
|
|
162
|
+
action: "skipped",
|
|
163
|
+
error: "canUpdateExternalItems is disabled in .specweave/config.json"
|
|
164
|
+
};
|
|
165
|
+
}
|
|
144
166
|
const issue = await client.getIssue(issueNumber);
|
|
145
167
|
if (verbose) {
|
|
146
168
|
console.log(`
|
|
@@ -234,6 +256,33 @@ function countUserStoriesInBody(body) {
|
|
|
234
256
|
const matches = body.match(/###\s+US-\d+:/g);
|
|
235
257
|
return matches ? matches.length : 0;
|
|
236
258
|
}
|
|
259
|
+
async function loadSyncPermissions(specPath) {
|
|
260
|
+
try {
|
|
261
|
+
let currentDir = path.dirname(specPath);
|
|
262
|
+
let configPath = path.join(currentDir, ".specweave", "config.json");
|
|
263
|
+
while (!await fs.access(configPath).then(() => true).catch(() => false)) {
|
|
264
|
+
const parentDir = path.dirname(currentDir);
|
|
265
|
+
if (parentDir === currentDir) {
|
|
266
|
+
return { canCreate: true, canUpdate: true, canUpdateStatus: true };
|
|
267
|
+
}
|
|
268
|
+
currentDir = parentDir;
|
|
269
|
+
configPath = path.join(currentDir, ".specweave", "config.json");
|
|
270
|
+
}
|
|
271
|
+
const configContent = await fs.readFile(configPath, "utf-8");
|
|
272
|
+
const config = JSON.parse(configContent);
|
|
273
|
+
const settings = config.sync?.settings || {};
|
|
274
|
+
return {
|
|
275
|
+
canCreate: settings.canUpsertInternalItems !== false,
|
|
276
|
+
// Default: true
|
|
277
|
+
canUpdate: settings.canUpdateExternalItems !== false,
|
|
278
|
+
// Default: true
|
|
279
|
+
canUpdateStatus: settings.canUpdateStatus !== false
|
|
280
|
+
// Default: true
|
|
281
|
+
};
|
|
282
|
+
} catch {
|
|
283
|
+
return { canCreate: true, canUpdate: true, canUpdateStatus: true };
|
|
284
|
+
}
|
|
285
|
+
}
|
|
237
286
|
async function isContentSyncEnabled(projectRoot) {
|
|
238
287
|
try {
|
|
239
288
|
const configPath = path.join(projectRoot, ".specweave", "config.json");
|
|
@@ -153,6 +153,19 @@ async function createGitHubIssue(
|
|
|
153
153
|
const { specPath, dryRun, verbose } = options;
|
|
154
154
|
|
|
155
155
|
try {
|
|
156
|
+
// Check permission: canUpsertInternalItems (CREATE permission)
|
|
157
|
+
const permissions = await loadSyncPermissions(specPath);
|
|
158
|
+
if (!permissions.canCreate) {
|
|
159
|
+
if (verbose) {
|
|
160
|
+
console.log(' ⚠️ Skipping create - canUpsertInternalItems is disabled in config');
|
|
161
|
+
}
|
|
162
|
+
return {
|
|
163
|
+
success: false,
|
|
164
|
+
action: 'skipped',
|
|
165
|
+
error: 'canUpsertInternalItems is disabled in .specweave/config.json',
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
|
|
156
169
|
// Build issue title and body using compact format
|
|
157
170
|
// Examples: [BE-JIRA-AUTH-123] User Authentication, [FE-user-login-ui] Login UI
|
|
158
171
|
// Use display ID for cleaner titles (FS-043 instead of _F-FS-043)
|
|
@@ -234,6 +247,19 @@ async function updateGitHubIssue(
|
|
|
234
247
|
const { specPath, dryRun, verbose } = options;
|
|
235
248
|
|
|
236
249
|
try {
|
|
250
|
+
// Check permission: canUpdateExternalItems (UPDATE permission)
|
|
251
|
+
const permissions = await loadSyncPermissions(specPath);
|
|
252
|
+
if (!permissions.canUpdate) {
|
|
253
|
+
if (verbose) {
|
|
254
|
+
console.log(' ⚠️ Skipping update - canUpdateExternalItems is disabled in config');
|
|
255
|
+
}
|
|
256
|
+
return {
|
|
257
|
+
success: false,
|
|
258
|
+
action: 'skipped',
|
|
259
|
+
error: 'canUpdateExternalItems is disabled in .specweave/config.json',
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
|
|
237
263
|
// Get current issue
|
|
238
264
|
const issue = await client.getIssue(issueNumber);
|
|
239
265
|
|
|
@@ -383,6 +409,47 @@ function countUserStoriesInBody(body: string): number {
|
|
|
383
409
|
return matches ? matches.length : 0;
|
|
384
410
|
}
|
|
385
411
|
|
|
412
|
+
/**
|
|
413
|
+
* Load sync permissions from config
|
|
414
|
+
*/
|
|
415
|
+
async function loadSyncPermissions(specPath: string): Promise<{
|
|
416
|
+
canCreate: boolean;
|
|
417
|
+
canUpdate: boolean;
|
|
418
|
+
canUpdateStatus: boolean;
|
|
419
|
+
}> {
|
|
420
|
+
try {
|
|
421
|
+
// Find project root
|
|
422
|
+
let currentDir = path.dirname(specPath);
|
|
423
|
+
let configPath = path.join(currentDir, '.specweave', 'config.json');
|
|
424
|
+
|
|
425
|
+
// Search upward for .specweave/config.json
|
|
426
|
+
while (!await fs.access(configPath).then(() => true).catch(() => false)) {
|
|
427
|
+
const parentDir = path.dirname(currentDir);
|
|
428
|
+
if (parentDir === currentDir) {
|
|
429
|
+
// Default: all enabled
|
|
430
|
+
return { canCreate: true, canUpdate: true, canUpdateStatus: true };
|
|
431
|
+
}
|
|
432
|
+
currentDir = parentDir;
|
|
433
|
+
configPath = path.join(currentDir, '.specweave', 'config.json');
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
// Read config
|
|
437
|
+
const configContent = await fs.readFile(configPath, 'utf-8');
|
|
438
|
+
const config = JSON.parse(configContent);
|
|
439
|
+
|
|
440
|
+
const settings = config.sync?.settings || {};
|
|
441
|
+
|
|
442
|
+
return {
|
|
443
|
+
canCreate: settings.canUpsertInternalItems !== false, // Default: true
|
|
444
|
+
canUpdate: settings.canUpdateExternalItems !== false, // Default: true
|
|
445
|
+
canUpdateStatus: settings.canUpdateStatus !== false // Default: true
|
|
446
|
+
};
|
|
447
|
+
} catch {
|
|
448
|
+
// Default: all enabled
|
|
449
|
+
return { canCreate: true, canUpdate: true, canUpdateStatus: true };
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
|
|
386
453
|
/**
|
|
387
454
|
* Check if spec content sync is enabled
|
|
388
455
|
*/
|
|
@@ -10,6 +10,32 @@ fallback_behavior: flexible
|
|
|
10
10
|
|
|
11
11
|
# DevOps Agent - Infrastructure & Deployment Expert
|
|
12
12
|
|
|
13
|
+
## 🚀 How to Invoke This Agent
|
|
14
|
+
|
|
15
|
+
**Subagent Type**: `specweave-infrastructure:devops:devops`
|
|
16
|
+
|
|
17
|
+
**Usage Example**:
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
Task({
|
|
21
|
+
subagent_type: "specweave-infrastructure:devops:devops",
|
|
22
|
+
prompt: "Deploy application to AWS ECS Fargate with Terraform and configure CI/CD pipeline with GitHub Actions",
|
|
23
|
+
model: "haiku" // optional: haiku, sonnet, opus
|
|
24
|
+
});
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Naming Convention**: `{plugin}:{directory}:{yaml-name-or-directory-name}`
|
|
28
|
+
- **Plugin**: specweave-infrastructure
|
|
29
|
+
- **Directory**: devops
|
|
30
|
+
- **Agent Name**: devops
|
|
31
|
+
|
|
32
|
+
**When to Use**:
|
|
33
|
+
- You need to design and implement cloud infrastructure (AWS, Azure, GCP)
|
|
34
|
+
- You want to create Infrastructure as Code with Terraform or CloudFormation
|
|
35
|
+
- You need to set up CI/CD pipelines for automated deployment
|
|
36
|
+
- You're deploying containerized applications to Kubernetes or Docker Compose
|
|
37
|
+
- You need to implement monitoring, logging, and observability infrastructure
|
|
38
|
+
|
|
13
39
|
## Purpose
|
|
14
40
|
|
|
15
41
|
The devops-agent is SpecWeave's **infrastructure and deployment specialist** that:
|
|
@@ -9,6 +9,32 @@ fallback_behavior: flexible
|
|
|
9
9
|
|
|
10
10
|
You are a network engineer specializing in modern cloud networking, security, and performance optimization.
|
|
11
11
|
|
|
12
|
+
## 🚀 How to Invoke This Agent
|
|
13
|
+
|
|
14
|
+
**Subagent Type**: `specweave-infrastructure:network-engineer:network-engineer`
|
|
15
|
+
|
|
16
|
+
**Usage Example**:
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
Task({
|
|
20
|
+
subagent_type: "specweave-infrastructure:network-engineer:network-engineer",
|
|
21
|
+
prompt: "Design secure multi-cloud network architecture with zero-trust connectivity and service mesh",
|
|
22
|
+
model: "haiku" // optional: haiku, sonnet, opus
|
|
23
|
+
});
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**Naming Convention**: `{plugin}:{directory}:{yaml-name-or-directory-name}`
|
|
27
|
+
- **Plugin**: specweave-infrastructure
|
|
28
|
+
- **Directory**: network-engineer
|
|
29
|
+
- **Agent Name**: network-engineer
|
|
30
|
+
|
|
31
|
+
**When to Use**:
|
|
32
|
+
- You need to design cloud networking architectures (VPCs, subnets, routing)
|
|
33
|
+
- You want to implement zero-trust security and network policies
|
|
34
|
+
- You need to configure load balancing, DNS, and SSL/TLS
|
|
35
|
+
- You're troubleshooting connectivity issues or performance problems
|
|
36
|
+
- You need to set up service mesh or advanced networking topologies
|
|
37
|
+
|
|
12
38
|
## Purpose
|
|
13
39
|
Expert network engineer with comprehensive knowledge of cloud networking, modern protocols, security architectures, and performance optimization. Masters multi-cloud networking, service mesh technologies, zero-trust architectures, and advanced troubleshooting. Specializes in scalable, secure, and high-performance network solutions.
|
|
14
40
|
|
|
@@ -9,6 +9,32 @@ fallback_behavior: flexible
|
|
|
9
9
|
|
|
10
10
|
You are an observability engineer specializing in production-grade monitoring, logging, tracing, and reliability systems for enterprise-scale applications.
|
|
11
11
|
|
|
12
|
+
## 🚀 How to Invoke This Agent
|
|
13
|
+
|
|
14
|
+
**Subagent Type**: `specweave-infrastructure:observability-engineer:observability-engineer`
|
|
15
|
+
|
|
16
|
+
**Usage Example**:
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
Task({
|
|
20
|
+
subagent_type: "specweave-infrastructure:observability-engineer:observability-engineer",
|
|
21
|
+
prompt: "Design comprehensive monitoring stack with Prometheus, Grafana, and OpenTelemetry for microservices with SLI/SLO tracking",
|
|
22
|
+
model: "haiku" // optional: haiku, sonnet, opus
|
|
23
|
+
});
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**Naming Convention**: `{plugin}:{directory}:{yaml-name-or-directory-name}`
|
|
27
|
+
- **Plugin**: specweave-infrastructure
|
|
28
|
+
- **Directory**: observability-engineer
|
|
29
|
+
- **Agent Name**: observability-engineer
|
|
30
|
+
|
|
31
|
+
**When to Use**:
|
|
32
|
+
- You need to design monitoring and observability architecture
|
|
33
|
+
- You want to set up distributed tracing for microservices
|
|
34
|
+
- You need to configure alerting and SLO tracking
|
|
35
|
+
- You're troubleshooting performance issues or anomalies
|
|
36
|
+
- You want to implement comprehensive log aggregation and analysis
|
|
37
|
+
|
|
12
38
|
## Purpose
|
|
13
39
|
Expert observability engineer specializing in comprehensive monitoring strategies, distributed tracing, and production reliability systems. Masters both traditional monitoring approaches and cutting-edge observability patterns, with deep knowledge of modern observability stacks, SRE practices, and enterprise-scale monitoring architectures.
|
|
14
40
|
|
|
@@ -9,6 +9,32 @@ fallback_behavior: flexible
|
|
|
9
9
|
|
|
10
10
|
You are a performance engineer specializing in modern application optimization, observability, and scalable system performance.
|
|
11
11
|
|
|
12
|
+
## 🚀 How to Invoke This Agent
|
|
13
|
+
|
|
14
|
+
**Subagent Type**: `specweave-infrastructure:performance-engineer:performance-engineer`
|
|
15
|
+
|
|
16
|
+
**Usage Example**:
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
Task({
|
|
20
|
+
subagent_type: "specweave-infrastructure:performance-engineer:performance-engineer",
|
|
21
|
+
prompt: "Analyze and optimize API performance with distributed tracing, implement multi-tier caching, and load testing",
|
|
22
|
+
model: "haiku" // optional: haiku, sonnet, opus
|
|
23
|
+
});
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**Naming Convention**: `{plugin}:{directory}:{yaml-name-or-directory-name}`
|
|
27
|
+
- **Plugin**: specweave-infrastructure
|
|
28
|
+
- **Directory**: performance-engineer
|
|
29
|
+
- **Agent Name**: performance-engineer
|
|
30
|
+
|
|
31
|
+
**When to Use**:
|
|
32
|
+
- You need to profile and optimize application performance
|
|
33
|
+
- You want to implement caching strategies across layers
|
|
34
|
+
- You need to conduct load testing and capacity planning
|
|
35
|
+
- You're optimizing database queries or API response times
|
|
36
|
+
- You want to improve Core Web Vitals or frontend performance
|
|
37
|
+
|
|
12
38
|
## Purpose
|
|
13
39
|
Expert performance engineer with comprehensive knowledge of modern observability, application profiling, and system optimization. Masters performance testing, distributed tracing, caching architectures, and scalability patterns. Specializes in end-to-end performance optimization, real user monitoring, and building performant, scalable systems.
|
|
14
40
|
|
|
@@ -10,6 +10,32 @@ fallback_behavior: auto
|
|
|
10
10
|
|
|
11
11
|
# SRE Agent - Site Reliability Engineering Expert
|
|
12
12
|
|
|
13
|
+
## 🚀 How to Invoke This Agent
|
|
14
|
+
|
|
15
|
+
**Subagent Type**: `specweave-infrastructure:sre:sre`
|
|
16
|
+
|
|
17
|
+
**Usage Example**:
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
Task({
|
|
21
|
+
subagent_type: "specweave-infrastructure:sre:sre",
|
|
22
|
+
prompt: "Diagnose why dashboard loading is slow (10 seconds) and provide immediate and long-term mitigation plans",
|
|
23
|
+
model: "haiku" // optional: haiku, sonnet, opus
|
|
24
|
+
});
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Naming Convention**: `{plugin}:{directory}:{yaml-name-or-directory-name}`
|
|
28
|
+
- **Plugin**: specweave-infrastructure
|
|
29
|
+
- **Directory**: sre
|
|
30
|
+
- **Agent Name**: sre
|
|
31
|
+
|
|
32
|
+
**When to Use**:
|
|
33
|
+
- You have an active production incident and need rapid diagnosis
|
|
34
|
+
- You need to analyze root causes of system failures
|
|
35
|
+
- You want to create runbooks for recurring issues
|
|
36
|
+
- You need to write post-mortems after incidents
|
|
37
|
+
- You're troubleshooting performance, availability, or reliability issues
|
|
38
|
+
|
|
13
39
|
**Purpose**: Holistic incident response, root cause analysis, and production system reliability.
|
|
14
40
|
|
|
15
41
|
## Core Capabilities
|
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
# Jira Manager Agent
|
|
2
2
|
|
|
3
|
+
## 🚀 How to Invoke This Agent
|
|
4
|
+
|
|
5
|
+
**Subagent Type**: `specweave-jira:jira-manager:jira-manager`
|
|
6
|
+
|
|
7
|
+
**Usage Example**:
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
Task({
|
|
11
|
+
subagent_type: "specweave-jira:jira-manager:jira-manager",
|
|
12
|
+
prompt: "Create Jira epic for increment 0005 and sync all tasks from spec.md and tasks.md",
|
|
13
|
+
model: "haiku" // optional: haiku, sonnet, opus
|
|
14
|
+
});
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
**Naming Convention**: `{plugin}:{directory}:{yaml-name-or-directory-name}`
|
|
18
|
+
- **Plugin**: specweave-jira
|
|
19
|
+
- **Directory**: jira-manager
|
|
20
|
+
- **Agent Name**: jira-manager
|
|
21
|
+
|
|
22
|
+
**When to Use**:
|
|
23
|
+
- You need to sync SpecWeave increments to Jira epics
|
|
24
|
+
- You want bidirectional synchronization between SpecWeave and Jira
|
|
25
|
+
- You need to update Jira issues with task completion status
|
|
26
|
+
- You're creating Jira stories from SpecWeave specifications
|
|
27
|
+
- You need to manage cross-system consistency between SpecWeave and Jira
|
|
28
|
+
|
|
3
29
|
**Role**: Jira integration specialist for SpecWeave increments
|
|
4
30
|
|
|
5
31
|
**Expertise**: Jira REST API, Epic/Story/Task management, JQL, automation, webhooks, custom fields
|
|
@@ -5,6 +5,32 @@ description: Kafka architecture and design specialist. Expert in system design,
|
|
|
5
5
|
|
|
6
6
|
# Kafka Architect Agent
|
|
7
7
|
|
|
8
|
+
## 🚀 How to Invoke This Agent
|
|
9
|
+
|
|
10
|
+
**Subagent Type**: `specweave-kafka:kafka-architect:kafka-architect`
|
|
11
|
+
|
|
12
|
+
**Usage Example**:
|
|
13
|
+
|
|
14
|
+
```typescript
|
|
15
|
+
Task({
|
|
16
|
+
subagent_type: "specweave-kafka:kafka-architect:kafka-architect",
|
|
17
|
+
prompt: "Design event-driven architecture for e-commerce with Kafka microservices and CQRS pattern",
|
|
18
|
+
model: "haiku" // optional: haiku, sonnet, opus
|
|
19
|
+
});
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**Naming Convention**: `{plugin}:{directory}:{yaml-name-or-directory-name}`
|
|
23
|
+
- **Plugin**: specweave-kafka
|
|
24
|
+
- **Directory**: kafka-architect
|
|
25
|
+
- **Agent Name**: kafka-architect
|
|
26
|
+
|
|
27
|
+
**When to Use**:
|
|
28
|
+
- You're designing Kafka infrastructure for event-driven systems
|
|
29
|
+
- You need guidance on partition strategy and topic design
|
|
30
|
+
- You want to implement event sourcing or CQRS patterns
|
|
31
|
+
- You're planning capacity for a Kafka cluster
|
|
32
|
+
- You need to design scalable real-time data pipelines
|
|
33
|
+
|
|
8
34
|
I'm a specialized architecture agent with deep expertise in designing scalable, reliable, and performant Apache Kafka systems.
|
|
9
35
|
|
|
10
36
|
## My Expertise
|
|
@@ -5,6 +5,32 @@ description: Kafka DevOps and SRE specialist. Expert in infrastructure deploymen
|
|
|
5
5
|
|
|
6
6
|
# Kafka DevOps Agent
|
|
7
7
|
|
|
8
|
+
## 🚀 How to Invoke This Agent
|
|
9
|
+
|
|
10
|
+
**Subagent Type**: `specweave-kafka:kafka-devops:kafka-devops`
|
|
11
|
+
|
|
12
|
+
**Usage Example**:
|
|
13
|
+
|
|
14
|
+
```typescript
|
|
15
|
+
Task({
|
|
16
|
+
subagent_type: "specweave-kafka:kafka-devops:kafka-devops",
|
|
17
|
+
prompt: "Deploy production Kafka cluster on AWS with Terraform, configure monitoring with Prometheus and Grafana",
|
|
18
|
+
model: "haiku" // optional: haiku, sonnet, opus
|
|
19
|
+
});
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**Naming Convention**: `{plugin}:{directory}:{yaml-name-or-directory-name}`
|
|
23
|
+
- **Plugin**: specweave-kafka
|
|
24
|
+
- **Directory**: kafka-devops
|
|
25
|
+
- **Agent Name**: kafka-devops
|
|
26
|
+
|
|
27
|
+
**When to Use**:
|
|
28
|
+
- You need to deploy and manage Kafka infrastructure
|
|
29
|
+
- You want to set up CI/CD pipelines for Kafka upgrades
|
|
30
|
+
- You're configuring Kafka cluster monitoring and alerting
|
|
31
|
+
- You have operational issues or need incident response
|
|
32
|
+
- You need to implement disaster recovery and backup strategies
|
|
33
|
+
|
|
8
34
|
I'm a specialized DevOps/SRE agent with deep expertise in Apache Kafka operations, deployment automation, and production reliability.
|
|
9
35
|
|
|
10
36
|
## My Expertise
|
|
@@ -5,6 +5,32 @@ description: Kafka observability and monitoring specialist. Expert in Prometheus
|
|
|
5
5
|
|
|
6
6
|
# Kafka Observability Agent
|
|
7
7
|
|
|
8
|
+
## 🚀 How to Invoke This Agent
|
|
9
|
+
|
|
10
|
+
**Subagent Type**: `specweave-kafka:kafka-observability:kafka-observability`
|
|
11
|
+
|
|
12
|
+
**Usage Example**:
|
|
13
|
+
|
|
14
|
+
```typescript
|
|
15
|
+
Task({
|
|
16
|
+
subagent_type: "specweave-kafka:kafka-observability:kafka-observability",
|
|
17
|
+
prompt: "Set up Kafka monitoring with Prometheus JMX exporter and create Grafana dashboards with alerting rules",
|
|
18
|
+
model: "haiku" // optional: haiku, sonnet, opus
|
|
19
|
+
});
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**Naming Convention**: `{plugin}:{directory}:{yaml-name-or-directory-name}`
|
|
23
|
+
- **Plugin**: specweave-kafka
|
|
24
|
+
- **Directory**: kafka-observability
|
|
25
|
+
- **Agent Name**: kafka-observability
|
|
26
|
+
|
|
27
|
+
**When to Use**:
|
|
28
|
+
- You need to set up monitoring for Kafka clusters
|
|
29
|
+
- You want to configure alerting for critical Kafka metrics
|
|
30
|
+
- You're troubleshooting high latency, consumer lag, or performance issues
|
|
31
|
+
- You need to analyze Kafka performance bottlenecks
|
|
32
|
+
- You're implementing SLOs for Kafka availability and latency
|
|
33
|
+
|
|
8
34
|
I'm a specialized observability agent with deep expertise in monitoring, alerting, and troubleshooting Apache Kafka in production.
|
|
9
35
|
|
|
10
36
|
## My Expertise
|
|
@@ -9,6 +9,32 @@ fallback_behavior: strict
|
|
|
9
9
|
|
|
10
10
|
You are a Kubernetes architect specializing in cloud-native infrastructure, modern GitOps workflows, and enterprise container orchestration at scale.
|
|
11
11
|
|
|
12
|
+
## 🚀 How to Invoke This Agent
|
|
13
|
+
|
|
14
|
+
**Subagent Type**: `specweave-kubernetes:kubernetes-architect:kubernetes-architect`
|
|
15
|
+
|
|
16
|
+
**Usage Example**:
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
Task({
|
|
20
|
+
subagent_type: "specweave-kubernetes:kubernetes-architect:kubernetes-architect",
|
|
21
|
+
prompt: "Design multi-cluster Kubernetes platform with GitOps using ArgoCD and progressive delivery with Argo Rollouts",
|
|
22
|
+
model: "haiku" // optional: haiku, sonnet, opus
|
|
23
|
+
});
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**Naming Convention**: `{plugin}:{directory}:{yaml-name-or-directory-name}`
|
|
27
|
+
- **Plugin**: specweave-kubernetes
|
|
28
|
+
- **Directory**: kubernetes-architect
|
|
29
|
+
- **Agent Name**: kubernetes-architect
|
|
30
|
+
|
|
31
|
+
**When to Use**:
|
|
32
|
+
- You're designing Kubernetes clusters and container orchestration platforms
|
|
33
|
+
- You need to implement GitOps workflows with ArgoCD or Flux
|
|
34
|
+
- You want to set up service mesh (Istio, Linkerd) for microservices
|
|
35
|
+
- You're planning progressive delivery and canary deployments
|
|
36
|
+
- You need to design multi-tenancy and resource isolation strategies
|
|
37
|
+
|
|
12
38
|
## Purpose
|
|
13
39
|
Expert Kubernetes architect with comprehensive knowledge of container orchestration, cloud-native technologies, and modern GitOps practices. Masters Kubernetes across all major providers (EKS, AKS, GKE) and on-premises deployments. Specializes in building scalable, secure, and cost-effective platform engineering solutions that enhance developer productivity.
|
|
14
40
|
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
"version": "0.22.14",
|
|
4
4
|
"description": "Complete ML/AI workflow integration for SpecWeave - from experiment tracking to production deployment. Includes 13 comprehensive skills covering the full ML lifecycle: pipeline orchestration, experiment tracking, model evaluation, explainability, deployment, feature engineering, AutoML, computer vision, NLP, time series forecasting, anomaly detection, data visualization, and model registry.",
|
|
5
5
|
"author": {
|
|
6
|
-
"name": "
|
|
7
|
-
"email": "
|
|
6
|
+
"name": "Anton Abyzov",
|
|
7
|
+
"email": "anton.abyzov@gmail.com",
|
|
8
8
|
"url": "https://spec-weave.com"
|
|
9
9
|
},
|
|
10
10
|
"homepage": "https://spec-weave.com",
|
|
@@ -9,6 +9,32 @@ fallback_behavior: strict
|
|
|
9
9
|
|
|
10
10
|
You are a data scientist specializing in advanced analytics, machine learning, statistical modeling, and data-driven business insights.
|
|
11
11
|
|
|
12
|
+
## 🚀 How to Invoke This Agent
|
|
13
|
+
|
|
14
|
+
**Subagent Type**: `specweave-ml:data-scientist:data-scientist`
|
|
15
|
+
|
|
16
|
+
**Usage Example**:
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
Task({
|
|
20
|
+
subagent_type: "specweave-ml:data-scientist:data-scientist",
|
|
21
|
+
prompt: "Analyze customer churn patterns and build predictive model to identify at-risk customers",
|
|
22
|
+
model: "haiku" // optional: haiku, sonnet, opus
|
|
23
|
+
});
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**Naming Convention**: `{plugin}:{directory}:{yaml-name-or-directory-name}`
|
|
27
|
+
- **Plugin**: specweave-ml
|
|
28
|
+
- **Directory**: data-scientist
|
|
29
|
+
- **Agent Name**: data-scientist
|
|
30
|
+
|
|
31
|
+
**When to Use**:
|
|
32
|
+
- You need to perform exploratory data analysis and statistical analysis
|
|
33
|
+
- You want to build machine learning models for prediction or classification
|
|
34
|
+
- You need to design A/B tests or experiments
|
|
35
|
+
- You want to create data visualizations and dashboards
|
|
36
|
+
- You need actionable insights from complex data
|
|
37
|
+
|
|
12
38
|
## Purpose
|
|
13
39
|
Expert data scientist combining strong statistical foundations with modern machine learning techniques and business acumen. Masters the complete data science workflow from exploratory data analysis to production model deployment, with deep expertise in statistical methods, ML algorithms, and data visualization for actionable business insights.
|
|
14
40
|
|