specweave 1.0.239 → 1.0.241
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +31 -30
- package/README.md +1 -1
- package/bin/specweave.js +16 -0
- package/dist/plugins/specweave-ado/lib/ado-permission-gate.d.ts.map +1 -1
- package/dist/plugins/specweave-ado/lib/ado-permission-gate.js +17 -2
- package/dist/plugins/specweave-ado/lib/ado-permission-gate.js.map +1 -1
- package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts +7 -0
- package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/github-feature-sync.js +53 -0
- package/dist/plugins/specweave-github/lib/github-feature-sync.js.map +1 -1
- package/dist/plugins/specweave-jira/lib/jira-permission-gate.d.ts.map +1 -1
- package/dist/plugins/specweave-jira/lib/jira-permission-gate.js +17 -2
- package/dist/plugins/specweave-jira/lib/jira-permission-gate.js.map +1 -1
- package/dist/plugins/specweave-testing/lib/playwright-cli-detector.d.ts +1 -0
- package/dist/plugins/specweave-testing/lib/playwright-cli-detector.d.ts.map +1 -1
- package/dist/plugins/specweave-testing/lib/playwright-cli-detector.js +7 -3
- package/dist/plugins/specweave-testing/lib/playwright-cli-detector.js.map +1 -1
- package/dist/plugins/specweave-testing/lib/playwright-cli-runner.d.ts.map +1 -1
- package/dist/plugins/specweave-testing/lib/playwright-cli-runner.js +27 -19
- package/dist/plugins/specweave-testing/lib/playwright-cli-runner.js.map +1 -1
- package/dist/plugins/specweave-testing/lib/playwright-routing.d.ts +8 -0
- package/dist/plugins/specweave-testing/lib/playwright-routing.d.ts.map +1 -1
- package/dist/plugins/specweave-testing/lib/playwright-routing.js +10 -7
- package/dist/plugins/specweave-testing/lib/playwright-routing.js.map +1 -1
- package/dist/src/adapters/agents-md-generator.js +1 -1
- package/dist/src/adapters/agents-md-generator.js.map +1 -1
- package/dist/src/adapters/claude/README.md +1 -1
- package/dist/src/adapters/claude-md-generator.js +1 -1
- package/dist/src/adapters/claude-md-generator.js.map +1 -1
- package/dist/src/cli/commands/init.d.ts.map +1 -1
- package/dist/src/cli/commands/init.js +10 -1
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/commands/refresh-marketplace.d.ts.map +1 -1
- package/dist/src/cli/commands/refresh-marketplace.js +7 -67
- package/dist/src/cli/commands/refresh-marketplace.js.map +1 -1
- package/dist/src/cli/commands/team.d.ts +20 -0
- package/dist/src/cli/commands/team.d.ts.map +1 -0
- package/dist/src/cli/commands/team.js +101 -0
- package/dist/src/cli/commands/team.js.map +1 -0
- package/dist/src/cli/helpers/init/claude-settings-env.d.ts +16 -0
- package/dist/src/cli/helpers/init/claude-settings-env.d.ts.map +1 -0
- package/dist/src/cli/helpers/init/claude-settings-env.js +44 -0
- package/dist/src/cli/helpers/init/claude-settings-env.js.map +1 -0
- package/dist/src/cli/helpers/init/plugin-installer.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/plugin-installer.js +9 -13
- package/dist/src/cli/helpers/init/plugin-installer.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 +12 -6
- package/dist/src/cli/helpers/issue-tracker/index.js.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/types.d.ts +2 -0
- package/dist/src/cli/helpers/issue-tracker/types.d.ts.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/types.js.map +1 -1
- package/dist/src/core/increment/discipline-checker.js +1 -1
- package/dist/src/core/increment/discipline-checker.js.map +1 -1
- package/dist/src/core/increment/status-commands.d.ts.map +1 -1
- package/dist/src/core/increment/status-commands.js +7 -0
- package/dist/src/core/increment/status-commands.js.map +1 -1
- package/dist/src/core/lazy-loading/llm-plugin-detector.d.ts +2 -2
- package/dist/src/core/lazy-loading/llm-plugin-detector.d.ts.map +1 -1
- package/dist/src/core/lazy-loading/llm-plugin-detector.js +63 -25
- package/dist/src/core/lazy-loading/llm-plugin-detector.js.map +1 -1
- package/dist/src/core/reflection/reflect-handler.js +2 -2
- package/dist/src/core/reflection/reflect-handler.js.map +1 -1
- package/dist/src/core/session/handoff-context.js +2 -2
- package/dist/src/core/session/handoff-context.js.map +1 -1
- package/dist/src/sync/ado-reconciler.d.ts.map +1 -1
- package/dist/src/sync/ado-reconciler.js +21 -2
- package/dist/src/sync/ado-reconciler.js.map +1 -1
- package/dist/src/sync/engine.d.ts.map +1 -1
- package/dist/src/sync/engine.js +2 -0
- package/dist/src/sync/engine.js.map +1 -1
- package/dist/src/sync/github-reconciler.d.ts.map +1 -1
- package/dist/src/sync/github-reconciler.js +52 -26
- package/dist/src/sync/github-reconciler.js.map +1 -1
- package/dist/src/sync/jira-reconciler.d.ts.map +1 -1
- package/dist/src/sync/jira-reconciler.js +16 -3
- package/dist/src/sync/jira-reconciler.js.map +1 -1
- package/dist/src/sync/providers/ado.d.ts.map +1 -1
- package/dist/src/sync/providers/ado.js +4 -2
- package/dist/src/sync/providers/ado.js.map +1 -1
- package/dist/src/sync/providers/github.d.ts.map +1 -1
- package/dist/src/sync/providers/github.js +11 -0
- package/dist/src/sync/providers/github.js.map +1 -1
- package/dist/src/sync/providers/jira.d.ts.map +1 -1
- package/dist/src/sync/providers/jira.js +14 -2
- package/dist/src/sync/providers/jira.js.map +1 -1
- package/dist/src/sync/sync-coordinator.d.ts.map +1 -1
- package/dist/src/sync/sync-coordinator.js +31 -6
- package/dist/src/sync/sync-coordinator.js.map +1 -1
- package/dist/src/utils/auto-install.js +4 -4
- package/dist/src/utils/auto-install.js.map +1 -1
- package/package.json +2 -2
- package/plugins/FINAL-AUDIT-RECOMMENDATIONS.md +3 -3
- package/plugins/SKILLS-VS-AGENTS.md +1 -1
- package/plugins/specweave/PLUGIN.md +0 -2
- package/plugins/specweave/commands/export-skills.md +1 -1
- package/plugins/specweave/commands/role-orchestrator.md +1 -1
- package/plugins/specweave/hooks/log-decision.sh +6 -0
- package/plugins/specweave/hooks/stop-auto-v5.sh +17 -1
- package/plugins/specweave/hooks/stop-reflect.sh +16 -2
- package/plugins/specweave/hooks/stop-sync.sh +17 -9
- package/plugins/specweave/hooks/user-prompt-submit.sh +119 -35
- package/plugins/specweave/lib/vendor/sync/github-reconciler.js +52 -26
- package/plugins/specweave/lib/vendor/sync/github-reconciler.js.map +1 -1
- package/plugins/specweave/scripts/read-grill-context.sh +149 -0
- package/plugins/specweave/skills/code-review/SKILL.md +608 -0
- package/plugins/specweave/skills/done/SKILL.md +1 -1
- package/plugins/specweave/skills/grill/SKILL.md +91 -0
- package/plugins/specweave/skills/performance/SKILL.md +6 -0
- package/plugins/specweave/skills/security/SKILL.md +7 -0
- package/plugins/specweave/skills/security-patterns/SKILL.md +6 -0
- package/plugins/specweave/skills/tdd-orchestrator/SKILL.md +1 -1
- package/plugins/specweave/skills/team-build/SKILL.md +1 -1
- package/plugins/specweave/skills/team-orchestrate/SKILL.md +1 -1
- package/plugins/specweave/skills/tech-lead/SKILL.md +7 -0
- package/plugins/specweave-ado/lib/ado-permission-gate.js +18 -2
- package/plugins/specweave-ado/lib/ado-permission-gate.ts +19 -2
- package/plugins/specweave-frontend/skills/frontend/SKILL.md +138 -2
- package/plugins/specweave-frontend/skills/i18n-expert/SKILL.md +989 -0
- package/plugins/specweave-github/hooks/github-auto-create-handler.sh +23 -1
- package/plugins/specweave-github/lib/github-feature-sync.js +41 -0
- package/plugins/specweave-github/lib/github-feature-sync.ts +62 -0
- package/plugins/specweave-infrastructure/PLUGIN.md +2 -1
- package/plugins/specweave-infrastructure/skills/gcp-deep-dive/SKILL.md +1172 -0
- package/plugins/specweave-infrastructure/skills/observability/SKILL.md +6 -0
- package/plugins/specweave-infrastructure/skills/opentelemetry/SKILL.md +6 -0
- package/plugins/specweave-jira/lib/jira-permission-gate.js +18 -2
- package/plugins/specweave-jira/lib/jira-permission-gate.ts +19 -2
- package/plugins/specweave-mobile/PLUGIN.md +1 -2
- package/plugins/specweave-mobile/README.md +13 -12
- package/plugins/specweave-mobile/skills/capacitor-ionic/SKILL.md +4 -18
- package/plugins/specweave-mobile/skills/deep-linking-push/SKILL.md +4 -22
- package/plugins/specweave-mobile/skills/expo/SKILL.md +4 -24
- package/plugins/specweave-mobile/skills/mobile-testing/SKILL.md +4 -22
- package/plugins/specweave-mobile/skills/react-native-expert/SKILL.md +404 -47
- package/plugins/specweave-testing/PLUGIN.md +3 -11
- package/plugins/specweave-testing/lib/playwright-cli-detector.js +8 -3
- package/plugins/specweave-testing/lib/playwright-cli-detector.ts +8 -3
- package/plugins/specweave-testing/lib/playwright-cli-runner.js +25 -20
- package/plugins/specweave-testing/lib/playwright-cli-runner.ts +24 -19
- package/plugins/specweave-testing/lib/playwright-routing.js +1 -6
- package/plugins/specweave-testing/lib/playwright-routing.ts +11 -8
- package/plugins/specweave-testing/skills/accessibility-testing/SKILL.md +998 -0
- package/plugins/specweave-testing/skills/e2e-testing/SKILL.md +29 -28
- package/plugins/specweave-testing/skills/mutation-testing/SKILL.md +769 -0
- package/plugins/specweave-testing/skills/performance-testing/SKILL.md +961 -0
- package/plugins/specweave-testing/skills/qa-engineer/SKILL.md +2 -0
- package/plugins/specweave/.specweave/logs/decisions.jsonl +0 -12
- package/plugins/specweave/.specweave/logs/reflect/reflect.log +0 -8
- package/plugins/specweave/.specweave/logs/stop-auto.log +0 -6
- package/plugins/specweave/.specweave/logs/stop-sync.log +0 -10
- package/plugins/specweave/.specweave/state/dashboard.json +0 -43
- package/plugins/specweave/skills/infrastructure/SKILL.md +0 -86
- package/plugins/specweave/skills/qa-lead/SKILL.md +0 -77
- package/plugins/specweave-mobile/skills/mobile-architect/SKILL.md +0 -30
- package/plugins/specweave-testing/commands/e2e-setup.md +0 -1103
- package/plugins/specweave-testing/commands/test-coverage.md +0 -983
- package/plugins/specweave-testing/commands/test-generate.md +0 -1160
- package/plugins/specweave-testing/commands/test-init.md +0 -413
- package/plugins/specweave-testing/commands/ui-automate.md +0 -182
- package/plugins/specweave-testing/commands/ui-inspect.md +0 -82
|
@@ -158,6 +158,8 @@ You are an expert QA engineer with deep knowledge of testing strategies, test au
|
|
|
158
158
|
|
|
159
159
|
### 6. End-to-End Testing
|
|
160
160
|
|
|
161
|
+
**CLI-First Rule**: Always use Playwright CLI (`npx playwright test`) for E2E test execution. DO NOT use MCP Playwright tools (`browser_click`, `browser_snapshot`, etc.) for running or writing tests — they bypass playwright.config.ts, consume 20x more tokens, and produce non-committable ephemeral interactions instead of reusable test code.
|
|
162
|
+
|
|
161
163
|
**Playwright Excellence**:
|
|
162
164
|
- Page Object Model (POM)
|
|
163
165
|
- Fixtures for setup/teardown
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
{"timestamp":"2026-02-03T05:48:20Z","hook":"stop-auto","decision":"approve","reason":"No increments directory","reasonCode":"no_increments_dir","durationMs":0,"context":{}}
|
|
2
|
-
{"timestamp":"2026-02-03T05:48:20Z","hook":"stop-reflect","decision":"approve","reason":"specweave CLI not found","reasonCode":"error","durationMs":0,"context":{"transcriptLines":28,"reflectionEnabled":true,"learningsExtracted":0,"learningCategories":[],"exitReason":"error","triggerReason":"session_end"}}
|
|
3
|
-
{"timestamp":"2026-02-03T05:49:50Z","hook":"stop-auto","decision":"approve","reason":"No increments directory","reasonCode":"no_increments_dir","durationMs":0,"context":{}}
|
|
4
|
-
{"timestamp":"2026-02-03T05:49:50Z","hook":"stop-reflect","decision":"approve","reason":"Transcript too short (5 lines)","reasonCode":"transcript_too_short","durationMs":0,"context":{"transcriptLines":5,"reflectionEnabled":true,"learningsExtracted":0,"learningCategories":[],"exitReason":"transcript_too_short","triggerReason":"session_end"}}
|
|
5
|
-
{"timestamp":"2026-02-03T05:50:08Z","hook":"stop-auto","decision":"approve","reason":"No increments directory","reasonCode":"no_increments_dir","durationMs":0,"context":{}}
|
|
6
|
-
{"timestamp":"2026-02-03T05:50:08Z","hook":"stop-reflect","decision":"approve","reason":"Transcript too short (8 lines)","reasonCode":"transcript_too_short","durationMs":0,"context":{"transcriptLines":8,"reflectionEnabled":true,"learningsExtracted":0,"learningCategories":[],"exitReason":"transcript_too_short","triggerReason":"session_end"}}
|
|
7
|
-
{"timestamp":"2026-02-03T05:50:24Z","hook":"stop-auto","decision":"approve","reason":"No increments directory","reasonCode":"no_increments_dir","durationMs":0,"context":{}}
|
|
8
|
-
{"timestamp":"2026-02-03T05:50:24Z","hook":"stop-reflect","decision":"approve","reason":"specweave CLI not found","reasonCode":"error","durationMs":0,"context":{"transcriptLines":13,"reflectionEnabled":true,"learningsExtracted":0,"learningCategories":[],"exitReason":"error","triggerReason":"session_end"}}
|
|
9
|
-
{"timestamp":"2026-02-03T05:50:46Z","hook":"stop-auto","decision":"approve","reason":"No increments directory","reasonCode":"no_increments_dir","durationMs":0,"context":{}}
|
|
10
|
-
{"timestamp":"2026-02-03T05:50:46Z","hook":"stop-reflect","decision":"approve","reason":"specweave CLI not found","reasonCode":"error","durationMs":0,"context":{"transcriptLines":17,"reflectionEnabled":true,"learningsExtracted":0,"learningCategories":[],"exitReason":"error","triggerReason":"session_end"}}
|
|
11
|
-
{"timestamp":"2026-02-03T05:52:57Z","hook":"stop-auto","decision":"approve","reason":"No increments directory","reasonCode":"no_increments_dir","durationMs":0,"context":{}}
|
|
12
|
-
{"timestamp":"2026-02-03T05:52:57Z","hook":"stop-reflect","decision":"approve","reason":"specweave CLI not found","reasonCode":"error","durationMs":0,"context":{"transcriptLines":399,"reflectionEnabled":true,"learningsExtracted":0,"learningCategories":[],"exitReason":"error","triggerReason":"session_end"}}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
[2026-02-03T05:48:20Z] [info] Starting reflection (28 lines)
|
|
2
|
-
[2026-02-03T05:48:20Z] [warn] specweave CLI not found
|
|
3
|
-
[2026-02-03T05:50:24Z] [info] Starting reflection (13 lines)
|
|
4
|
-
[2026-02-03T05:50:24Z] [warn] specweave CLI not found
|
|
5
|
-
[2026-02-03T05:50:46Z] [info] Starting reflection (17 lines)
|
|
6
|
-
[2026-02-03T05:50:46Z] [warn] specweave CLI not found
|
|
7
|
-
[2026-02-03T05:52:57Z] [info] Starting reflection (399 lines)
|
|
8
|
-
[2026-02-03T05:52:57Z] [warn] specweave CLI not found
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
[2026-02-03T05:48:20Z] APPROVE: No increments directory
|
|
2
|
-
[2026-02-03T05:49:50Z] APPROVE: No increments directory
|
|
3
|
-
[2026-02-03T05:50:08Z] APPROVE: No increments directory
|
|
4
|
-
[2026-02-03T05:50:24Z] APPROVE: No increments directory
|
|
5
|
-
[2026-02-03T05:50:46Z] APPROVE: No increments directory
|
|
6
|
-
[2026-02-03T05:52:57Z] APPROVE: No increments directory
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
[2026-02-03T05:49:50Z] Stop-sync started
|
|
2
|
-
[2026-02-03T05:49:50Z] No pending events to sync
|
|
3
|
-
[2026-02-03T05:50:08Z] Stop-sync started
|
|
4
|
-
[2026-02-03T05:50:08Z] No pending events to sync
|
|
5
|
-
[2026-02-03T05:50:24Z] Stop-sync started
|
|
6
|
-
[2026-02-03T05:50:24Z] No pending events to sync
|
|
7
|
-
[2026-02-03T05:50:46Z] Stop-sync started
|
|
8
|
-
[2026-02-03T05:50:46Z] No pending events to sync
|
|
9
|
-
[2026-02-03T05:52:57Z] Stop-sync started
|
|
10
|
-
[2026-02-03T05:52:57Z] No pending events to sync
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 1,
|
|
3
|
-
"updatedAt": "2026-02-03T05:49:24Z",
|
|
4
|
-
"increments": {},
|
|
5
|
-
"summary": {
|
|
6
|
-
"total": 0,
|
|
7
|
-
"active": 0,
|
|
8
|
-
"paused": 0,
|
|
9
|
-
"backlog": 0,
|
|
10
|
-
"planning": 0,
|
|
11
|
-
"ready_for_review": 0,
|
|
12
|
-
"completed": 0,
|
|
13
|
-
"abandoned": 0,
|
|
14
|
-
"archived": 0,
|
|
15
|
-
"byType": {
|
|
16
|
-
"feature": 0,
|
|
17
|
-
"hotfix": 0,
|
|
18
|
-
"bug": 0,
|
|
19
|
-
"refactor": 0,
|
|
20
|
-
"experiment": 0,
|
|
21
|
-
"change-request": 0
|
|
22
|
-
},
|
|
23
|
-
"byPriority": {
|
|
24
|
-
"P0": 0,
|
|
25
|
-
"P1": 0,
|
|
26
|
-
"P2": 0,
|
|
27
|
-
"P3": 0
|
|
28
|
-
}
|
|
29
|
-
},
|
|
30
|
-
"jobs": {
|
|
31
|
-
"running": [],
|
|
32
|
-
"paused": [],
|
|
33
|
-
"failed": [],
|
|
34
|
-
"completedCount": 0
|
|
35
|
-
},
|
|
36
|
-
"costs": {
|
|
37
|
-
"totalTokens": 0,
|
|
38
|
-
"totalCost": 0,
|
|
39
|
-
"totalSavings": 0,
|
|
40
|
-
"byIncrement": {}
|
|
41
|
-
},
|
|
42
|
-
"mtimes": {}
|
|
43
|
-
}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Infrastructure-as-Code specialist for Terraform, AWS, Azure, and serverless architectures. Use when setting up cloud infrastructure, writing Terraform modules, or deploying to AWS Lambda/Vercel/Cloudflare. Covers VPC configuration, container orchestration, and CI/CD pipeline infrastructure.
|
|
3
|
-
allowed-tools: Read, Write, Edit, Bash
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Infrastructure Skill
|
|
7
|
-
|
|
8
|
-
## Overview
|
|
9
|
-
|
|
10
|
-
You are a serverless infrastructure specialist who generates production-ready Infrastructure-as-Code using Terraform.
|
|
11
|
-
|
|
12
|
-
## Core Principles
|
|
13
|
-
|
|
14
|
-
1. **ONE infrastructure layer per response** - Chunk by layer
|
|
15
|
-
2. **Auto-execute with credentials** - Never output manual steps
|
|
16
|
-
3. **Least privilege IAM** - No wildcards
|
|
17
|
-
|
|
18
|
-
## Quick Reference
|
|
19
|
-
|
|
20
|
-
### Infrastructure Layers (Chunk by these)
|
|
21
|
-
|
|
22
|
-
- **Layer 1**: Compute (Lambda, execution roles)
|
|
23
|
-
- **Layer 2**: Database (RDS, DynamoDB)
|
|
24
|
-
- **Layer 3**: Storage (S3 buckets, policies)
|
|
25
|
-
- **Layer 4**: Networking (VPC, subnets, security groups)
|
|
26
|
-
- **Layer 5**: Monitoring (CloudWatch, alarms)
|
|
27
|
-
- **Layer 6**: CI/CD (deployment pipelines)
|
|
28
|
-
|
|
29
|
-
### Supported Platforms
|
|
30
|
-
|
|
31
|
-
| Platform | Components |
|
|
32
|
-
|----------|------------|
|
|
33
|
-
| AWS Lambda | Lambda + API Gateway + DynamoDB |
|
|
34
|
-
| Azure Functions | Function App + Cosmos DB + Storage |
|
|
35
|
-
| GCP Cloud Functions | Functions + Firestore + Cloud Storage |
|
|
36
|
-
| Firebase | Hosting + Functions + Firestore |
|
|
37
|
-
| Supabase | PostgreSQL + Auth + Storage + Edge Functions |
|
|
38
|
-
|
|
39
|
-
### Auto-Execute Rules
|
|
40
|
-
|
|
41
|
-
**If credentials found → EXECUTE directly**
|
|
42
|
-
**If credentials missing → ASK, then execute**
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
# Check credentials FIRST (presence only - never display values!)
|
|
46
|
-
grep -qE "SUPABASE|DATABASE_URL|CF_|AWS_" .env 2>/dev/null && echo "Credentials found in .env"
|
|
47
|
-
wrangler whoami 2>/dev/null
|
|
48
|
-
aws sts get-caller-identity 2>/dev/null
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
### Environment Configs
|
|
52
|
-
|
|
53
|
-
- **dev.tfvars**: Free tier, minimal redundancy, 7-day logs
|
|
54
|
-
- **staging.tfvars**: Balanced cost/performance, 14-day logs
|
|
55
|
-
- **prod.tfvars**: Multi-AZ, backup enabled, 90-day logs
|
|
56
|
-
|
|
57
|
-
## Workflow
|
|
58
|
-
|
|
59
|
-
1. **Analysis** (< 500 tokens): List layers needed, ask which first
|
|
60
|
-
2. **Generate ONE layer** (< 800 tokens): Terraform files
|
|
61
|
-
3. **Report progress**: "Ready for next layer?"
|
|
62
|
-
4. **Repeat**: One layer at a time
|
|
63
|
-
|
|
64
|
-
## Token Budget
|
|
65
|
-
|
|
66
|
-
**NEVER exceed 2000 tokens per response!**
|
|
67
|
-
|
|
68
|
-
## Security Best Practices
|
|
69
|
-
|
|
70
|
-
✅ Least privilege IAM (specific actions, specific resources)
|
|
71
|
-
✅ Secrets in Secrets Manager (not env vars)
|
|
72
|
-
✅ HTTPS-only (TLS 1.2+)
|
|
73
|
-
✅ Encryption at rest
|
|
74
|
-
✅ CloudWatch logging enabled
|
|
75
|
-
|
|
76
|
-
## Project-Specific Learnings
|
|
77
|
-
|
|
78
|
-
**Before starting work, check for project-specific learnings:**
|
|
79
|
-
|
|
80
|
-
```bash
|
|
81
|
-
# Check if skill memory exists for this skill
|
|
82
|
-
cat .specweave/skill-memories/infrastructure.md 2>/dev/null || echo "No project learnings yet"
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
Project learnings are automatically captured by the reflection system when corrections or patterns are identified during development. These learnings help you understand project-specific conventions and past decisions.
|
|
86
|
-
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: QA lead for comprehensive test strategy, automation frameworks, and quality gates. Use when creating test plans, designing test suites, or setting up E2E/integration testing. Covers web, mobile, and API testing with Playwright, Jest, and test coverage requirements.
|
|
3
|
-
allowed-tools: Read, Write, Edit, Bash
|
|
4
|
-
context: fork
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# QA Lead Skill
|
|
8
|
-
|
|
9
|
-
## Overview
|
|
10
|
-
|
|
11
|
-
You are an expert QA Lead with 10+ years of experience in test strategy, automation, and quality assurance across web, mobile, and API testing.
|
|
12
|
-
|
|
13
|
-
## Core Principles
|
|
14
|
-
|
|
15
|
-
1. **ONE test file per response** - Never generate all at once
|
|
16
|
-
2. **Map to ACs** - Every test traces to acceptance criteria
|
|
17
|
-
3. **Coverage targets** - 80%+ for critical paths
|
|
18
|
-
|
|
19
|
-
## Quick Reference
|
|
20
|
-
|
|
21
|
-
### Test Coverage Matrix
|
|
22
|
-
|
|
23
|
-
| TC ID | Acceptance Criteria | Test Type | Location | Priority |
|
|
24
|
-
|-------|---------------------|-----------|----------|----------|
|
|
25
|
-
| TC-001 | AC-US1-01 | E2E | tests/e2e/*.spec.ts | P1 |
|
|
26
|
-
| TC-002 | AC-US1-02 | Unit | tests/unit/*.test.ts | P2 |
|
|
27
|
-
|
|
28
|
-
### Test Types
|
|
29
|
-
|
|
30
|
-
- **Unit Tests**: Business logic, utilities (>80% coverage)
|
|
31
|
-
- **Integration Tests**: API endpoints, database operations
|
|
32
|
-
- **E2E Tests**: User journeys with Playwright
|
|
33
|
-
|
|
34
|
-
### E2E Test Example (Playwright)
|
|
35
|
-
|
|
36
|
-
```typescript
|
|
37
|
-
import { test, expect } from '@playwright/test';
|
|
38
|
-
|
|
39
|
-
test('TC-001: Valid Login Flow', async ({ page }) => {
|
|
40
|
-
// Given: User has registered account
|
|
41
|
-
await page.goto('/login');
|
|
42
|
-
|
|
43
|
-
// When: User enters valid credentials
|
|
44
|
-
await page.fill('[name="email"]', 'test@example.com');
|
|
45
|
-
await page.fill('[name="password"]', 'SecurePass123');
|
|
46
|
-
await page.click('button[type="submit"]');
|
|
47
|
-
|
|
48
|
-
// Then: Redirect to dashboard
|
|
49
|
-
await expect(page).toHaveURL('/dashboard');
|
|
50
|
-
});
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
## Workflow
|
|
54
|
-
|
|
55
|
-
1. **Analysis** (< 500 tokens): List test files needed, ask which first
|
|
56
|
-
2. **Generate ONE test file** (< 800 tokens): Write to file
|
|
57
|
-
3. **Report progress**: "X/Y files complete. Ready for next?"
|
|
58
|
-
4. **Repeat**: One file at a time until done
|
|
59
|
-
|
|
60
|
-
## Token Budget
|
|
61
|
-
|
|
62
|
-
- **Analysis**: 300-500 tokens
|
|
63
|
-
- **Each test file**: 600-800 tokens
|
|
64
|
-
|
|
65
|
-
**NEVER exceed 2000 tokens per response!**
|
|
66
|
-
|
|
67
|
-
## Project-Specific Learnings
|
|
68
|
-
|
|
69
|
-
**Before starting work, check for project-specific learnings:**
|
|
70
|
-
|
|
71
|
-
```bash
|
|
72
|
-
# Check if skill memory exists for this skill
|
|
73
|
-
cat .specweave/skill-memories/qa-lead.md 2>/dev/null || echo "No project learnings yet"
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
Project learnings are automatically captured by the reflection system when corrections or patterns are identified during development. These learnings help you understand project-specific conventions and past decisions.
|
|
77
|
-
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: React Native and Expo mobile architect. New Architecture (Fabric, Turbo Modules, JSI), Expo Router, offline-first patterns. Use for mobile app architecture and React Native design.
|
|
3
|
-
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
4
|
-
model: opus
|
|
5
|
-
context: fork
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Mobile Architect Agent
|
|
9
|
-
|
|
10
|
-
Elite mobile application architect specializing in **React Native** and **Expo**. Expert in designing scalable, maintainable, and performant mobile architectures leveraging the New Architecture (Fabric, Turbo Modules, JSI) and modern React concurrent features.
|
|
11
|
-
|
|
12
|
-
## CRITICAL: Fetching Current Documentation
|
|
13
|
-
|
|
14
|
-
**Before providing version-specific guidance, ALWAYS fetch the latest documentation:**
|
|
15
|
-
|
|
16
|
-
```typescript
|
|
17
|
-
// React Native - get current version info
|
|
18
|
-
mcp__plugin_context7_context7__resolve-library-id({
|
|
19
|
-
libraryName: "react-native",
|
|
20
|
-
query: "React Native latest version features and breaking changes"
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
// Expo SDK - get current version info
|
|
24
|
-
mcp__plugin_context7_context7__resolve-library-id({
|
|
25
|
-
libraryName: "expo",
|
|
26
|
-
query: "Expo SDK latest version features and migration guide"
|
|
27
|
-
});
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
**Why?** Version numbers in static documentation become stale immediately. React Native releases every ~8 weeks. Always verify current versions before recommending specific APIs or migration paths.
|