specweave 0.9.0 → 0.10.0

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 (72) hide show
  1. package/CLAUDE.md +100 -13
  2. package/README.md +97 -207
  3. package/bin/install-agents.sh +1 -1
  4. package/bin/install-commands.sh +1 -1
  5. package/bin/install-hooks.sh +1 -1
  6. package/bin/install-skills.sh +1 -1
  7. package/bin/specweave.js +32 -0
  8. package/dist/cli/commands/validate-jira.d.ts +35 -0
  9. package/dist/cli/commands/validate-jira.d.ts.map +1 -0
  10. package/dist/cli/commands/validate-jira.js +112 -0
  11. package/dist/cli/commands/validate-jira.js.map +1 -0
  12. package/dist/cli/commands/validate-plugins.d.ts +41 -0
  13. package/dist/cli/commands/validate-plugins.d.ts.map +1 -0
  14. package/dist/cli/commands/validate-plugins.js +171 -0
  15. package/dist/cli/commands/validate-plugins.js.map +1 -0
  16. package/dist/core/types/sync-profile.d.ts +177 -29
  17. package/dist/core/types/sync-profile.d.ts.map +1 -1
  18. package/dist/core/types/sync-profile.js +48 -1
  19. package/dist/core/types/sync-profile.js.map +1 -1
  20. package/dist/hooks/lib/translate-living-docs.d.ts.map +1 -1
  21. package/dist/hooks/lib/translate-living-docs.js +16 -7
  22. package/dist/hooks/lib/translate-living-docs.js.map +1 -1
  23. package/dist/metrics/dora-calculator.d.ts +7 -3
  24. package/dist/metrics/dora-calculator.d.ts.map +1 -1
  25. package/dist/metrics/dora-calculator.js +19 -6
  26. package/dist/metrics/dora-calculator.js.map +1 -1
  27. package/dist/metrics/report-generator.d.ts +17 -0
  28. package/dist/metrics/report-generator.d.ts.map +1 -0
  29. package/dist/metrics/report-generator.js +403 -0
  30. package/dist/metrics/report-generator.js.map +1 -0
  31. package/dist/utils/external-resource-validator.d.ts +102 -0
  32. package/dist/utils/external-resource-validator.d.ts.map +1 -0
  33. package/dist/utils/external-resource-validator.js +381 -0
  34. package/dist/utils/external-resource-validator.js.map +1 -0
  35. package/dist/utils/plugin-validator.d.ts +161 -0
  36. package/dist/utils/plugin-validator.d.ts.map +1 -0
  37. package/dist/utils/plugin-validator.js +565 -0
  38. package/dist/utils/plugin-validator.js.map +1 -0
  39. package/package.json +2 -1
  40. package/plugins/specweave/commands/specweave-do.md +47 -0
  41. package/plugins/specweave/commands/specweave-increment.md +82 -0
  42. package/plugins/specweave/commands/specweave-next.md +47 -0
  43. package/plugins/specweave/hooks/post-increment-planning.sh +117 -38
  44. package/plugins/specweave/hooks/pre-tool-use.sh +133 -0
  45. package/plugins/specweave/plugin.json +22 -0
  46. package/plugins/specweave/skills/SKILLS-INDEX.md +3 -1
  47. package/plugins/specweave/skills/plugin-validator/SKILL.md +427 -0
  48. package/plugins/specweave-ado/.claude-plugin/plugin.json +2 -4
  49. package/plugins/specweave-ado/lib/ado-board-resolver.ts +328 -0
  50. package/plugins/specweave-ado/lib/ado-hierarchical-sync.ts +484 -0
  51. package/plugins/specweave-ado/plugin.json +20 -0
  52. package/plugins/specweave-alternatives/.claude-plugin/plugin.json +15 -2
  53. package/plugins/specweave-backend/.claude-plugin/plugin.json +15 -2
  54. package/plugins/specweave-cost-optimizer/.claude-plugin/plugin.json +14 -2
  55. package/plugins/specweave-diagrams/.claude-plugin/plugin.json +14 -2
  56. package/plugins/specweave-docs/.claude-plugin/plugin.json +13 -2
  57. package/plugins/specweave-figma/.claude-plugin/plugin.json +14 -2
  58. package/plugins/specweave-frontend/.claude-plugin/plugin.json +15 -2
  59. package/plugins/specweave-github/lib/github-board-resolver.ts +164 -0
  60. package/plugins/specweave-github/lib/github-hierarchical-sync.ts +344 -0
  61. package/plugins/specweave-github/plugin.json +19 -0
  62. package/plugins/specweave-infrastructure/.claude-plugin/plugin.json +15 -2
  63. package/plugins/specweave-jira/.claude-plugin/plugin.json +14 -2
  64. package/plugins/specweave-jira/lib/jira-board-resolver.ts +127 -0
  65. package/plugins/specweave-jira/lib/jira-hierarchical-sync.ts +283 -0
  66. package/plugins/specweave-jira/plugin.json +20 -0
  67. package/plugins/specweave-jira/skills/jira-resource-validator/SKILL.md +584 -0
  68. package/plugins/specweave-kubernetes/.claude-plugin/plugin.json +14 -2
  69. package/plugins/specweave-payments/.claude-plugin/plugin.json +14 -2
  70. package/plugins/specweave-testing/.claude-plugin/plugin.json +14 -2
  71. package/plugins/specweave-tooling/.claude-plugin/plugin.json +13 -2
  72. package/src/templates/.env.example +71 -5
@@ -0,0 +1,584 @@
1
+ ---
2
+ name: jira-resource-validator
3
+ description: Validates Jira projects and boards exist, creates missing resources automatically. Smart enough to prompt user to select existing or create new projects. For boards, accepts either IDs (validates existence) or names (creates boards and updates .env with IDs). Activates for jira setup, jira validation, jira configuration, missing jira project, missing jira boards, jira .env setup.
4
+ allowed-tools: Read, Bash, Write, Edit
5
+ ---
6
+
7
+ # Jira Resource Validator Skill
8
+
9
+ **Purpose**: Validate and auto-create Jira projects and boards, ensuring .env configuration is correct.
10
+
11
+ **Auto-Activation**: Triggers when Jira setup or validation is needed.
12
+
13
+ ## What This Skill Does
14
+
15
+ This skill ensures your Jira configuration in `.env` is valid and all resources exist. It's **smart enough** to:
16
+
17
+ 1. **Validate Jira projects** - Check if `JIRA_PROJECT` exists
18
+ 2. **Prompt for action** - Select existing project or create new one
19
+ 3. **Validate Jira boards** - Check if boards exist (by ID or name)
20
+ 4. **Create missing boards** - If board names provided, create them automatically
21
+ 5. **Update .env with IDs** - Replace board names with actual board IDs after creation
22
+
23
+ ## When This Skill Activates
24
+
25
+ ✅ **Automatically activates when**:
26
+ - You set up Jira integration for the first time
27
+ - You run `/specweave-jira:sync` and resources are missing
28
+ - Your `.env` has invalid Jira configuration
29
+ - You mention "jira setup" or "jira validation"
30
+
31
+ ## Jira Configuration Structure
32
+
33
+ ### Required .env Variables
34
+
35
+ ```bash
36
+ JIRA_API_TOKEN=your_token_here
37
+ JIRA_EMAIL=your_email@company.com
38
+ JIRA_DOMAIN=yourcompany.atlassian.net
39
+ JIRA_STRATEGY=board-based
40
+ JIRA_PROJECT=PROJECTKEY
41
+ JIRA_BOARDS=1,2,3 # IDs (if exist) OR names (if creating)
42
+ ```
43
+
44
+ ### Two Modes for JIRA_BOARDS
45
+
46
+ **Mode 1: Board IDs** (boards already exist):
47
+ ```bash
48
+ JIRA_BOARDS=1,2,3
49
+ ```
50
+ - System validates these IDs exist in Jira
51
+ - If any ID doesn't exist, prompts to fix configuration
52
+
53
+ **Mode 2: Board Names** (boards need to be created):
54
+ ```bash
55
+ JIRA_BOARDS=Frontend,Backend,Mobile
56
+ ```
57
+ - System detects names (non-numeric)
58
+ - Creates boards automatically
59
+ - Updates .env with actual IDs: `JIRA_BOARDS=101,102,103`
60
+
61
+ ## Validation Flow
62
+
63
+ ### Step 1: Project Validation
64
+
65
+ **Check if project exists**:
66
+ ```bash
67
+ # API call to Jira
68
+ GET /rest/api/3/project/PROJECTKEY
69
+ ```
70
+
71
+ **If project exists**:
72
+ ```
73
+ ✅ Project "PROJECTKEY" exists
74
+ ID: 10001
75
+ Name: My Project
76
+ ```
77
+
78
+ **If project doesn't exist**:
79
+ ```
80
+ ⚠️ Project "PROJECTKEY" not found
81
+
82
+ What would you like to do?
83
+ 1. Select an existing project
84
+ 2. Create a new project
85
+ 3. Cancel
86
+
87
+ Your choice [1]:
88
+ ```
89
+
90
+ **Option 1: Select Existing**:
91
+ ```
92
+ Available projects:
93
+ 1. PROJ1 - Project One
94
+ 2. PROJ2 - Project Two
95
+ 3. PROJ3 - Project Three
96
+
97
+ Select a project [1]:
98
+
99
+ ✅ Updated .env: JIRA_PROJECT=PROJ1
100
+ ```
101
+
102
+ **Option 2: Create New**:
103
+ ```
104
+ Enter project name: My New Project
105
+
106
+ 📦 Creating Jira project: PROJECTKEY (My New Project)...
107
+ ✅ Project created: PROJECTKEY (ID: 10005)
108
+ ```
109
+
110
+ ### Step 2: Board Validation
111
+
112
+ **Scenario A: Board IDs Provided** (numeric values):
113
+ ```bash
114
+ JIRA_BOARDS=1,2,3
115
+ ```
116
+
117
+ **Validation**:
118
+ ```
119
+ Checking boards: 1,2,3...
120
+
121
+ Board 1: ✅ Exists (Frontend Board)
122
+ Board 2: ✅ Exists (Backend Board)
123
+ Board 3: ❌ Not found
124
+
125
+ ⚠️ Boards not found: 3
126
+
127
+ Options:
128
+ 1. Remove board 3 from configuration
129
+ 2. Replace with correct board ID
130
+ 3. Create new board
131
+
132
+ Your choice [1]:
133
+ ```
134
+
135
+ **Scenario B: Board Names Provided** (non-numeric):
136
+ ```bash
137
+ JIRA_BOARDS=Frontend,Backend,Mobile
138
+ ```
139
+
140
+ **Auto-creation**:
141
+ ```
142
+ 📦 Creating boards from names...
143
+
144
+ Creating board: Frontend in project PROJECTKEY...
145
+ ✅ Board created: Frontend (ID: 101)
146
+
147
+ Creating board: Backend in project PROJECTKEY...
148
+ ✅ Board created: Backend (ID: 102)
149
+
150
+ Creating board: Mobile in project PROJECTKEY...
151
+ ✅ Board created: Mobile (ID: 103)
152
+
153
+ ✅ Updated .env: JIRA_BOARDS=101,102,103
154
+ ```
155
+
156
+ ## Usage Examples
157
+
158
+ ### Example 1: Fresh Jira Setup
159
+
160
+ **Scenario**: New project, no Jira resources exist yet
161
+
162
+ **Action**: Run `/specweave-jira:sync`
163
+
164
+ **What Happens**:
165
+ ```bash
166
+ 🔍 Validating Jira configuration...
167
+
168
+ Checking project: MINIDOOM...
169
+ ⚠️ Project "MINIDOOM" not found
170
+
171
+ What would you like to do?
172
+ 1. Select an existing project
173
+ 2. Create a new project
174
+ 3. Cancel
175
+
176
+ Your choice [2]: 2
177
+
178
+ Enter project name: Mini DOOM Tournament
179
+
180
+ 📦 Creating Jira project: MINIDOOM (Mini DOOM Tournament)...
181
+ ✅ Project created: MINIDOOM (ID: 10005)
182
+
183
+ Checking boards: Frontend,Backend,Mobile...
184
+ 📦 Creating boards from names...
185
+
186
+ Creating board: Frontend in project MINIDOOM...
187
+ ✅ Board created: Frontend (ID: 101)
188
+
189
+ Creating board: Backend in project MINIDOOM...
190
+ ✅ Board created: Backend (ID: 102)
191
+
192
+ Creating board: Mobile in project MINIDOOM...
193
+ ✅ Board created: Mobile (ID: 103)
194
+
195
+ ✅ Updated .env: JIRA_BOARDS=101,102,103
196
+
197
+ 🎉 Jira configuration complete! All resources ready.
198
+ ```
199
+
200
+ **Result**: `.env` now has correct project and board IDs
201
+
202
+ ### Example 2: Select Existing Project
203
+
204
+ **Scenario**: Project already exists in Jira
205
+
206
+ **Action**: Run validation
207
+
208
+ **What Happens**:
209
+ ```bash
210
+ 🔍 Validating Jira configuration...
211
+
212
+ Checking project: PROJ...
213
+ ⚠️ Project "PROJ" not found
214
+
215
+ What would you like to do?
216
+ 1. Select an existing project
217
+ 2. Create a new project
218
+ 3. Cancel
219
+
220
+ Your choice [1]: 1
221
+
222
+ Available projects:
223
+ 1. FRONTEND - Frontend Team
224
+ 2. BACKEND - Backend Team
225
+ 3. MOBILE - Mobile Team
226
+
227
+ Select a project [1]: 2
228
+
229
+ ✅ Updated .env: JIRA_PROJECT=BACKEND
230
+ ✅ Project "BACKEND" exists
231
+
232
+ Checking boards: 45,46...
233
+ ✅ All boards exist
234
+ ```
235
+
236
+ ### Example 3: Mixed Board IDs (Some Exist, Some Don't)
237
+
238
+ **Scenario**: Some board IDs are invalid
239
+
240
+ **Action**: Run validation
241
+
242
+ **What Happens**:
243
+ ```bash
244
+ 🔍 Validating Jira configuration...
245
+
246
+ Checking project: PROJECTKEY...
247
+ ✅ Project "PROJECTKEY" exists
248
+
249
+ Checking boards: 1,2,999...
250
+
251
+ Board 1: ✅ Exists (Frontend Board)
252
+ Board 2: ✅ Exists (Backend Board)
253
+ Board 999: ❌ Not found
254
+
255
+ ⚠️ Boards not found: 999
256
+
257
+ Available boards in project PROJECTKEY:
258
+ 1. Frontend Board (ID: 1)
259
+ 2. Backend Board (ID: 2)
260
+ 3. QA Board (ID: 3)
261
+ 4. DevOps Board (ID: 4)
262
+
263
+ Would you like to:
264
+ 1. Remove invalid board (999) from configuration
265
+ 2. Replace with correct board ID
266
+ 3. Create new board
267
+
268
+ Your choice [2]: 2
269
+
270
+ Enter correct board ID or name: 3
271
+
272
+ ✅ Updated .env: JIRA_BOARDS=1,2,3
273
+ ```
274
+
275
+ ## CLI Command
276
+
277
+ **Manual validation**:
278
+ ```bash
279
+ # From TypeScript
280
+ npx tsx src/utils/external-resource-validator.ts
281
+
282
+ # Or via skill activation
283
+ "Can you validate my Jira configuration?"
284
+ ```
285
+
286
+ **Validation output**:
287
+ ```typescript
288
+ {
289
+ valid: true,
290
+ project: {
291
+ exists: true,
292
+ key: 'PROJECTKEY',
293
+ id: '10001',
294
+ name: 'My Project'
295
+ },
296
+ boards: {
297
+ valid: true,
298
+ existing: [1, 2, 3],
299
+ missing: [],
300
+ created: []
301
+ },
302
+ envUpdated: false
303
+ }
304
+ ```
305
+
306
+ ## Smart Board Creation Logic
307
+
308
+ ### Detection Algorithm
309
+
310
+ ```typescript
311
+ // Parse JIRA_BOARDS from .env
312
+ const boardsConfig = "Frontend,Backend,Mobile";
313
+ const boardIds = boardsConfig.split(',').map(b => b.trim());
314
+
315
+ // Check if all values are numeric
316
+ const isNumeric = boardIds.every(b => /^\d+$/.test(b));
317
+
318
+ if (isNumeric) {
319
+ // Mode 1: Board IDs - validate existence
320
+ for (const boardId of boardIds) {
321
+ const exists = await checkBoard(parseInt(boardId));
322
+ if (!exists) {
323
+ console.error(`Board ${boardId} not found`);
324
+ }
325
+ }
326
+ } else {
327
+ // Mode 2: Board names - create boards
328
+ const createdBoardIds = [];
329
+ for (const boardName of boardIds) {
330
+ const board = await createBoard(boardName, projectKey);
331
+ createdBoardIds.push(board.id);
332
+ }
333
+
334
+ // Update .env with actual IDs
335
+ updateEnv({ JIRA_BOARDS: createdBoardIds.join(',') });
336
+ }
337
+ ```
338
+
339
+ ### Board Creation API
340
+
341
+ **Jira REST API** (v3):
342
+ ```bash
343
+ POST /rest/api/3/board
344
+ Content-Type: application/json
345
+
346
+ {
347
+ "name": "Frontend Board",
348
+ "type": "scrum",
349
+ "filterId": 10000 # Filter for project issues
350
+ }
351
+
352
+ Response:
353
+ {
354
+ "id": 101,
355
+ "name": "Frontend Board",
356
+ "type": "scrum"
357
+ }
358
+ ```
359
+
360
+ **Filter creation** (required for board):
361
+ ```bash
362
+ POST /rest/api/3/filter
363
+ Content-Type: application/json
364
+
365
+ {
366
+ "name": "PROJECTKEY Issues",
367
+ "jql": "project = PROJECTKEY"
368
+ }
369
+
370
+ Response:
371
+ {
372
+ "id": 10000
373
+ }
374
+ ```
375
+
376
+ ## Configuration Examples
377
+
378
+ ### Example 1: Create Boards by Name
379
+
380
+ **Before** (`.env`):
381
+ ```bash
382
+ JIRA_PROJECT=PROJ
383
+ JIRA_BOARDS=Frontend,Backend,QA,DevOps
384
+ ```
385
+
386
+ **After validation**:
387
+ ```bash
388
+ JIRA_PROJECT=PROJ
389
+ JIRA_BOARDS=101,102,103,104
390
+ ```
391
+
392
+ **What happened**:
393
+ - Detected non-numeric values (names)
394
+ - Created 4 boards in Jira
395
+ - Updated .env with actual board IDs
396
+
397
+ ### Example 2: Validate Existing Board IDs
398
+
399
+ **Before** (`.env`):
400
+ ```bash
401
+ JIRA_PROJECT=PROJ
402
+ JIRA_BOARDS=1,2,3
403
+ ```
404
+
405
+ **After validation**:
406
+ ```bash
407
+ JIRA_PROJECT=PROJ
408
+ JIRA_BOARDS=1,2,3
409
+ ```
410
+
411
+ **What happened**:
412
+ - Detected numeric values (IDs)
413
+ - Validated all boards exist
414
+ - No changes needed
415
+
416
+ ### Example 3: Fix Invalid Project
417
+
418
+ **Before** (`.env`):
419
+ ```bash
420
+ JIRA_PROJECT=NONEXISTENT
421
+ JIRA_BOARDS=1,2
422
+ ```
423
+
424
+ **After validation** (user selected existing project):
425
+ ```bash
426
+ JIRA_PROJECT=EXISTINGPROJ
427
+ JIRA_BOARDS=1,2
428
+ ```
429
+
430
+ **What happened**:
431
+ - Project NONEXISTENT not found
432
+ - User selected EXISTINGPROJ from list
433
+ - Updated .env with correct project key
434
+
435
+ ## Error Handling
436
+
437
+ ### Error 1: Invalid Credentials
438
+
439
+ **Symptom**: API calls fail with 401 Unauthorized
440
+
441
+ **Solution**:
442
+ ```
443
+ ❌ Jira API authentication failed
444
+
445
+ Please check:
446
+ 1. JIRA_API_TOKEN is correct
447
+ 2. JIRA_EMAIL matches your Jira account
448
+ 3. JIRA_DOMAIN is correct (yourcompany.atlassian.net)
449
+
450
+ Generate new token at:
451
+ https://id.atlassian.com/manage-profile/security/api-tokens
452
+ ```
453
+
454
+ ### Error 2: Insufficient Permissions
455
+
456
+ **Symptom**: Cannot create projects/boards (403 Forbidden)
457
+
458
+ **Solution**:
459
+ ```
460
+ ❌ Insufficient permissions to create resources
461
+
462
+ You need:
463
+ - Project Creator permission (for projects)
464
+ - Board Creator permission (for boards)
465
+
466
+ Contact your Jira administrator to request permissions.
467
+ ```
468
+
469
+ ### Error 3: Project Key Already Taken
470
+
471
+ **Symptom**: Project creation fails (key exists)
472
+
473
+ **Solution**:
474
+ ```
475
+ ❌ Project key "PROJ" already exists
476
+
477
+ Options:
478
+ 1. Use a different project key
479
+ 2. Select the existing project
480
+ 3. Cancel
481
+
482
+ Your choice [2]:
483
+ ```
484
+
485
+ ### Error 4: Network/API Errors
486
+
487
+ **Symptom**: API calls timeout or fail
488
+
489
+ **Solution**:
490
+ ```
491
+ ❌ Jira API error: Request timeout
492
+
493
+ Please check:
494
+ 1. Internet connection
495
+ 2. Jira domain is correct
496
+ 3. Jira is not down (check status.atlassian.com)
497
+
498
+ Retry? [Y/n]:
499
+ ```
500
+
501
+ ## Integration with SpecWeave Workflow
502
+
503
+ ### Automatic Validation
504
+
505
+ When using `/specweave-jira:sync`, validation runs automatically:
506
+
507
+ ```bash
508
+ /specweave-jira:sync 0014
509
+
510
+ # Internally calls:
511
+ 1. validateJiraResources()
512
+ 2. Fix missing project/boards
513
+ 3. Proceed with sync
514
+ ```
515
+
516
+ ### Manual Validation
517
+
518
+ Run validation independently:
519
+
520
+ ```bash
521
+ # Via skill
522
+ "Validate my Jira configuration"
523
+
524
+ # Via TypeScript
525
+ npx tsx src/utils/external-resource-validator.ts
526
+
527
+ # Via CLI (future)
528
+ specweave validate-jira
529
+ ```
530
+
531
+ ## Best Practices
532
+
533
+ ✅ **Use board names for initial setup**:
534
+ ```bash
535
+ JIRA_BOARDS=Sprint-1,Sprint-2,Backlog
536
+ ```
537
+ - System creates boards automatically
538
+ - Updates .env with IDs
539
+ - One-time setup, then use IDs
540
+
541
+ ✅ **Use board IDs after creation**:
542
+ ```bash
543
+ JIRA_BOARDS=101,102,103
544
+ ```
545
+ - Faster validation (no creation needed)
546
+ - More reliable (IDs don't change)
547
+
548
+ ✅ **Keep .env in version control** (gitignored tokens):
549
+ ```bash
550
+ # Commit project/board structure
551
+ JIRA_PROJECT=PROJ
552
+ JIRA_BOARDS=101,102,103
553
+
554
+ # Don't commit sensitive data
555
+ JIRA_API_TOKEN=<redacted>
556
+ JIRA_EMAIL=<redacted>
557
+ ```
558
+
559
+ ✅ **Document board mapping** (in README):
560
+ ```markdown
561
+ ## Jira Boards
562
+
563
+ - Board 101: Frontend Team
564
+ - Board 102: Backend Team
565
+ - Board 103: QA Team
566
+ ```
567
+
568
+ ## Summary
569
+
570
+ This skill ensures your Jira configuration is **always valid** by:
571
+
572
+ 1. ✅ **Validating projects** - Check if project exists, prompt to select or create
573
+ 2. ✅ **Validating boards** - Check if boards exist (IDs) or create them (names)
574
+ 3. ✅ **Auto-updating .env** - Replace board names with IDs after creation
575
+ 4. ✅ **Clear error messages** - Actionable guidance for all failures
576
+ 5. ✅ **Non-blocking** - Graceful degradation with manual fallback
577
+
578
+ **Result**: Zero manual Jira setup - system handles everything!
579
+
580
+ ---
581
+
582
+ **Skill Version**: 1.0.0
583
+ **Introduced**: SpecWeave v0.9.5
584
+ **Last Updated**: 2025-11-09
@@ -3,6 +3,18 @@
3
3
  "description": "Kubernetes deployment and management for SpecWeave projects. Generate K8s manifests, Helm charts, and GitOps workflows. Includes security policies (NetworkPolicy, RBAC) and best practices for production deployments.",
4
4
  "version": "1.0.0",
5
5
  "author": {
6
- "name": "SpecWeave Team"
7
- }
6
+ "name": "SpecWeave Team",
7
+ "url": "https://spec-weave.com"
8
+ },
9
+ "homepage": "https://spec-weave.com",
10
+ "repository": "https://github.com/anton-abyzov/specweave",
11
+ "license": "MIT",
12
+ "keywords": [
13
+ "kubernetes",
14
+ "k8s",
15
+ "helm",
16
+ "deployment",
17
+ "gitops",
18
+ "specweave"
19
+ ]
8
20
  }
@@ -3,6 +3,18 @@
3
3
  "description": "Payment processing integration for Stripe, PayPal, and billing automation. Includes checkout flows, subscription lifecycle management, PCI DSS compliance guidance, and recurring billing. Focus on production-ready payment systems.",
4
4
  "version": "1.0.0",
5
5
  "author": {
6
- "name": "SpecWeave Team"
7
- }
6
+ "name": "SpecWeave Team",
7
+ "url": "https://spec-weave.com"
8
+ },
9
+ "homepage": "https://spec-weave.com",
10
+ "repository": "https://github.com/anton-abyzov/specweave",
11
+ "license": "MIT",
12
+ "keywords": [
13
+ "payments",
14
+ "stripe",
15
+ "paypal",
16
+ "billing",
17
+ "pci-compliance",
18
+ "specweave"
19
+ ]
8
20
  }
@@ -3,6 +3,18 @@
3
3
  "description": "End-to-end browser testing with Playwright. Validates user flows, captures screenshots, checks accessibility, and visual regression. Test execution infrastructure for SpecWeave increments.",
4
4
  "version": "1.0.0",
5
5
  "author": {
6
- "name": "SpecWeave Team"
7
- }
6
+ "name": "SpecWeave Team",
7
+ "url": "https://spec-weave.com"
8
+ },
9
+ "homepage": "https://spec-weave.com",
10
+ "repository": "https://github.com/anton-abyzov/specweave",
11
+ "license": "MIT",
12
+ "keywords": [
13
+ "testing",
14
+ "playwright",
15
+ "e2e",
16
+ "browser-automation",
17
+ "visual-regression",
18
+ "specweave"
19
+ ]
8
20
  }
@@ -3,6 +3,17 @@
3
3
  "description": "SpecWeave skill development and orchestration tools. Create new skills with proper structure, test cases, and activation triggers. Includes skill router for intelligent skill activation based on context. Meta-tooling for extending SpecWeave.",
4
4
  "version": "1.0.0",
5
5
  "author": {
6
- "name": "SpecWeave Team"
7
- }
6
+ "name": "SpecWeave Team",
7
+ "url": "https://spec-weave.com"
8
+ },
9
+ "homepage": "https://spec-weave.com",
10
+ "repository": "https://github.com/anton-abyzov/specweave",
11
+ "license": "MIT",
12
+ "keywords": [
13
+ "tooling",
14
+ "skills",
15
+ "skill-creation",
16
+ "development",
17
+ "specweave"
18
+ ]
8
19
  }