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
|
@@ -25,6 +25,12 @@ Design and implement comprehensive observability systems covering metrics, logs,
|
|
|
25
25
|
- Prevent alert fatigue
|
|
26
26
|
- Debug microservices latency
|
|
27
27
|
|
|
28
|
+
## Scope Boundaries
|
|
29
|
+
|
|
30
|
+
This skill covers **OBSERVABILITY STRATEGY**: SLIs/SLOs, error budgets, dashboards, alerting design.
|
|
31
|
+
|
|
32
|
+
- For OpenTelemetry instrumentation details → use `/sw-infra:opentelemetry`
|
|
33
|
+
|
|
28
34
|
## Core Concepts
|
|
29
35
|
|
|
30
36
|
### Three Pillars of Observability
|
|
@@ -23,6 +23,12 @@ Design and implement comprehensive observability using OpenTelemetry (OTel). Pro
|
|
|
23
23
|
- Kubernetes observability setup
|
|
24
24
|
- Cost optimization for telemetry data
|
|
25
25
|
|
|
26
|
+
## Scope Boundaries
|
|
27
|
+
|
|
28
|
+
This skill covers **OTEL IMPLEMENTATION**: Collector configuration, auto-instrumentation, sampling strategies.
|
|
29
|
+
|
|
30
|
+
- For high-level observability strategy and SLOs → use `/sw-infra:observability`
|
|
31
|
+
|
|
26
32
|
## OTel Architecture Overview
|
|
27
33
|
|
|
28
34
|
```
|
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
import { promises as fs } from "node:fs";
|
|
2
2
|
import * as path from "node:path";
|
|
3
|
+
function resolvePresetPermissions(preset) {
|
|
4
|
+
switch (preset) {
|
|
5
|
+
case "bidirectional":
|
|
6
|
+
return { canUpsert: true, canUpdateStatus: true };
|
|
7
|
+
case "push-only":
|
|
8
|
+
return { canUpsert: true, canUpdateStatus: true };
|
|
9
|
+
case "full-control":
|
|
10
|
+
return { canUpsert: true, canUpdateStatus: true };
|
|
11
|
+
case "read-only":
|
|
12
|
+
return { canUpsert: false, canUpdateStatus: false };
|
|
13
|
+
default:
|
|
14
|
+
return { canUpsert: false, canUpdateStatus: false };
|
|
15
|
+
}
|
|
16
|
+
}
|
|
3
17
|
const DEFAULT_SYNC_SETTINGS = {
|
|
4
18
|
canUpsertInternalItems: false,
|
|
5
19
|
canUpdateExternalItems: false,
|
|
@@ -126,10 +140,12 @@ async function createJiraPermissionGate(projectRoot = process.cwd()) {
|
|
|
126
140
|
try {
|
|
127
141
|
const content = await fs.readFile(configPath, "utf-8");
|
|
128
142
|
const config = JSON.parse(content);
|
|
143
|
+
const preset = config?.sync?.preset;
|
|
144
|
+
const presetDefaults = resolvePresetPermissions(preset);
|
|
129
145
|
const settings = {
|
|
130
146
|
canUpsertInternalItems: config?.sync?.settings?.canUpsertInternalItems ?? false,
|
|
131
|
-
canUpdateExternalItems: config?.sync?.settings?.canUpdateExternalItems ??
|
|
132
|
-
canUpdateStatus: config?.sync?.settings?.canUpdateStatus ??
|
|
147
|
+
canUpdateExternalItems: config?.sync?.settings?.canUpdateExternalItems ?? presetDefaults.canUpsert,
|
|
148
|
+
canUpdateStatus: config?.sync?.settings?.canUpdateStatus ?? presetDefaults.canUpdateStatus
|
|
133
149
|
};
|
|
134
150
|
return new JiraPermissionGate(settings, configPath);
|
|
135
151
|
} catch {
|
|
@@ -55,6 +55,19 @@ export interface SyncSettings {
|
|
|
55
55
|
canUpdateStatus: boolean;
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
+
/**
|
|
59
|
+
* Resolve preset permissions for fallback when explicit settings are absent
|
|
60
|
+
*/
|
|
61
|
+
function resolvePresetPermissions(preset?: string): { canUpsert: boolean; canUpdateStatus: boolean } {
|
|
62
|
+
switch (preset) {
|
|
63
|
+
case 'bidirectional': return { canUpsert: true, canUpdateStatus: true };
|
|
64
|
+
case 'push-only': return { canUpsert: true, canUpdateStatus: true };
|
|
65
|
+
case 'full-control': return { canUpsert: true, canUpdateStatus: true };
|
|
66
|
+
case 'read-only': return { canUpsert: false, canUpdateStatus: false };
|
|
67
|
+
default: return { canUpsert: false, canUpdateStatus: false };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
58
71
|
/**
|
|
59
72
|
* Default settings (all disabled for safety)
|
|
60
73
|
*/
|
|
@@ -219,10 +232,14 @@ export async function createJiraPermissionGate(
|
|
|
219
232
|
const content = await fs.readFile(configPath, 'utf-8');
|
|
220
233
|
const config = JSON.parse(content);
|
|
221
234
|
|
|
235
|
+
// v1.0.240 FIX: Honor preset (e.g., "bidirectional") when explicit settings absent
|
|
236
|
+
const preset = config?.sync?.preset;
|
|
237
|
+
const presetDefaults = resolvePresetPermissions(preset);
|
|
238
|
+
|
|
222
239
|
const settings: SyncSettings = {
|
|
223
240
|
canUpsertInternalItems: config?.sync?.settings?.canUpsertInternalItems ?? false,
|
|
224
|
-
canUpdateExternalItems: config?.sync?.settings?.canUpdateExternalItems ??
|
|
225
|
-
canUpdateStatus: config?.sync?.settings?.canUpdateStatus ??
|
|
241
|
+
canUpdateExternalItems: config?.sync?.settings?.canUpdateExternalItems ?? presetDefaults.canUpsert,
|
|
242
|
+
canUpdateStatus: config?.sync?.settings?.canUpdateStatus ?? presetDefaults.canUpdateStatus,
|
|
226
243
|
};
|
|
227
244
|
|
|
228
245
|
return new JiraPermissionGate(settings, configPath);
|
|
@@ -12,8 +12,7 @@ Comprehensive mobile development plugin covering native iOS (SwiftUI), native An
|
|
|
12
12
|
|
|
13
13
|
| Skill | Description |
|
|
14
14
|
|-------|-------------|
|
|
15
|
-
|
|
|
16
|
-
| react-native-expert | React Native and Expo expert for environment setup, native modules, and performance |
|
|
15
|
+
| react-native-expert | React Native and Expo architect and expert: architecture, setup, native modules, performance, and debugging |
|
|
17
16
|
| swiftui | iOS native development with SwiftUI, Swift 6, SwiftData, and modern Apple frameworks |
|
|
18
17
|
| jetpack-compose | Android native development with Jetpack Compose, Kotlin, Material Design 3, and Hilt |
|
|
19
18
|
| flutter | Cross-platform development with Flutter and Dart 3+, Riverpod, GoRouter |
|
|
@@ -66,15 +66,16 @@ The SpecWeave Mobile plugin provides specialized skills and agents for modern Re
|
|
|
66
66
|
- Monorepo configuration
|
|
67
67
|
- Hermes bytecode optimization
|
|
68
68
|
|
|
69
|
-
###
|
|
69
|
+
### React Native Expert (Architecture + Implementation)
|
|
70
70
|
|
|
71
|
-
The `
|
|
71
|
+
The `react-native-expert` skill covers both architecture and hands-on implementation:
|
|
72
72
|
- Application architecture design for React Native / Expo
|
|
73
73
|
- State management selection (Zustand, TanStack Query, Jotai, Legend State)
|
|
74
74
|
- Navigation with Expo Router and React Navigation
|
|
75
75
|
- Performance architecture with modern React features
|
|
76
76
|
- Platform-specific strategies (iOS design patterns, Android edge-to-edge)
|
|
77
|
-
-
|
|
77
|
+
- Environment setup, Metro bundler, native modules
|
|
78
|
+
- Device testing, debugging, and performance optimization
|
|
78
79
|
- Build and deployment pipelines with EAS
|
|
79
80
|
|
|
80
81
|
## Installation
|
|
@@ -110,15 +111,15 @@ You: "I need to debug network requests in my app"
|
|
|
110
111
|
→ mobile-debugging skill activates
|
|
111
112
|
```
|
|
112
113
|
|
|
113
|
-
### Invoke the
|
|
114
|
+
### Invoke the React Native Expert Skill
|
|
114
115
|
|
|
115
|
-
For architectural decisions
|
|
116
|
+
For architectural decisions, system design, setup, and debugging:
|
|
116
117
|
|
|
117
118
|
```
|
|
118
|
-
Use the Skill tool to invoke the
|
|
119
|
+
Use the Skill tool to invoke the react-native-expert skill:
|
|
119
120
|
|
|
120
121
|
Skill({
|
|
121
|
-
skill: "sw-mobile:
|
|
122
|
+
skill: "sw-mobile:react-native-expert",
|
|
122
123
|
args: "Design a scalable React Native architecture for a social media app with feed, messaging, and profile features. Include state management, navigation, and performance considerations."
|
|
123
124
|
})
|
|
124
125
|
```
|
|
@@ -157,10 +158,10 @@ Skill({
|
|
|
157
158
|
|
|
158
159
|
### 4. Architecture Design
|
|
159
160
|
|
|
160
|
-
**User invokes**:
|
|
161
|
+
**User invokes**: react-native-expert skill
|
|
161
162
|
|
|
162
163
|
**What happens**:
|
|
163
|
-
-
|
|
164
|
+
- Skill analyzes requirements
|
|
164
165
|
- Recommends folder structure
|
|
165
166
|
- Selects state management solution
|
|
166
167
|
- Designs navigation architecture
|
|
@@ -258,11 +259,11 @@ import { FlashList } from "@shopify/flash-list";
|
|
|
258
259
|
### Example 3: Architecture Design
|
|
259
260
|
|
|
260
261
|
```
|
|
261
|
-
User invokes:
|
|
262
|
+
User invokes: react-native-expert skill
|
|
262
263
|
|
|
263
264
|
"Design architecture for a social media app with posts, comments, and real-time chat"
|
|
264
265
|
|
|
265
|
-
|
|
266
|
+
Skill response:
|
|
266
267
|
# Architecture Recommendation: Social Media App
|
|
267
268
|
|
|
268
269
|
## Folder Structure (Feature-Based)
|
|
@@ -312,7 +313,7 @@ React Navigation with:
|
|
|
312
313
|
|
|
313
314
|
- Check the [React Native Setup Guide](.specweave/docs/public/guides/mobile/react-native-setup-guide.md)
|
|
314
315
|
- Review skill documentation in `skills/*/SKILL.md`
|
|
315
|
-
- Invoke the
|
|
316
|
+
- Invoke the react-native-expert skill for architectural questions
|
|
316
317
|
|
|
317
318
|
## Contributing
|
|
318
319
|
|
|
@@ -9,25 +9,11 @@ context: fork
|
|
|
9
9
|
|
|
10
10
|
Comprehensive expertise in **Capacitor 6+** and **Ionic Framework** for building cross-platform mobile applications from web technologies. Covers architecture, native API access, custom plugin development, deployment, and when to choose Capacitor over React Native or Flutter.
|
|
11
11
|
|
|
12
|
-
##
|
|
12
|
+
## Fetching Current Documentation
|
|
13
13
|
|
|
14
|
-
**Before providing version-specific guidance,
|
|
14
|
+
**Before providing version-specific guidance, verify current versions.** Capacitor releases frequently, and plugin APIs evolve. Always verify current APIs before recommending specific patterns.
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
// Capacitor
|
|
18
|
-
mcp__plugin_context7_context7__resolve-library-id({
|
|
19
|
-
libraryName: "@capacitor/core",
|
|
20
|
-
query: "Capacitor latest version features and plugin API"
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
// Ionic Framework
|
|
24
|
-
mcp__plugin_context7_context7__resolve-library-id({
|
|
25
|
-
libraryName: "@ionic/angular",
|
|
26
|
-
query: "Ionic Framework latest version components and features"
|
|
27
|
-
});
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
**Why?** Capacitor releases frequently, and plugin APIs evolve. Always verify current APIs before recommending specific patterns.
|
|
16
|
+
For library documentation, use WebSearch or install Context7 manually: `claude plugin install context7@claude-plugins-official`
|
|
31
17
|
|
|
32
18
|
## Capacitor 6+ Architecture
|
|
33
19
|
|
|
@@ -809,6 +795,6 @@ describe('Product List', () => {
|
|
|
809
795
|
## Related Skills
|
|
810
796
|
|
|
811
797
|
- `expo` - Expo/React Native for comparison
|
|
812
|
-
- `
|
|
798
|
+
- `react-native-expert` - Architecture and RN/Expo expertise
|
|
813
799
|
- `mobile-testing` - Testing Ionic/Capacitor apps
|
|
814
800
|
- `deep-linking-push` - Deep linking and push in Capacitor
|
|
@@ -9,29 +9,11 @@ context: fork
|
|
|
9
9
|
|
|
10
10
|
Comprehensive expertise in **deep linking** (Universal Links, App Links, deferred deep linking) and **push notifications** (APNs, FCM, rich notifications, silent push) across iOS, Android, React Native, and Flutter.
|
|
11
11
|
|
|
12
|
-
##
|
|
12
|
+
## Fetching Current Documentation
|
|
13
13
|
|
|
14
|
-
**Before providing version-specific guidance,
|
|
14
|
+
**Before providing version-specific guidance, verify current versions.** Library APIs for notifications, deep linking, and routing evolve frequently.
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
// expo-notifications
|
|
18
|
-
mcp__plugin_context7_context7__resolve-library-id({
|
|
19
|
-
libraryName: "expo-notifications",
|
|
20
|
-
query: "Expo notifications setup push notification configuration"
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
// Firebase Messaging (Flutter)
|
|
24
|
-
mcp__plugin_context7_context7__resolve-library-id({
|
|
25
|
-
libraryName: "firebase_messaging",
|
|
26
|
-
query: "Firebase Cloud Messaging Flutter setup and configuration"
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
// Expo Router deep linking
|
|
30
|
-
mcp__plugin_context7_context7__resolve-library-id({
|
|
31
|
-
libraryName: "expo-router",
|
|
32
|
-
query: "Deep linking URL handling and navigation"
|
|
33
|
-
});
|
|
34
|
-
```
|
|
16
|
+
For library documentation, use WebSearch or install Context7 manually: `claude plugin install context7@claude-plugins-official`
|
|
35
17
|
|
|
36
18
|
---
|
|
37
19
|
|
|
@@ -808,6 +790,6 @@ function trackNotificationTap(notificationId: string, action: string) {
|
|
|
808
790
|
## Related Skills
|
|
809
791
|
|
|
810
792
|
- `expo` - Expo-specific notification and linking setup
|
|
811
|
-
- `
|
|
793
|
+
- `react-native-expert` - Navigation architecture for deep link routing
|
|
812
794
|
- `mobile-testing` - Testing deep links and notifications
|
|
813
795
|
- `capacitor-ionic` - Capacitor deep linking and push setup
|
|
@@ -9,31 +9,11 @@ context: fork
|
|
|
9
9
|
|
|
10
10
|
Comprehensive expertise in **Expo SDK 52+**, the **managed workflow**, and the **React Native New Architecture** (Fabric, TurboModules, JSI). Covers the full lifecycle from project creation through App Store and Play Store submission using EAS.
|
|
11
11
|
|
|
12
|
-
##
|
|
12
|
+
## Fetching Current Documentation
|
|
13
13
|
|
|
14
|
-
**Before providing version-specific guidance,
|
|
14
|
+
**Before providing version-specific guidance, verify current versions.** Expo SDK releases every ~3 months and React Native every ~8 weeks. Static version numbers go stale quickly.
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
// Expo SDK - get current version info
|
|
18
|
-
mcp__plugin_context7_context7__resolve-library-id({
|
|
19
|
-
libraryName: "expo",
|
|
20
|
-
query: "Expo SDK latest version features and migration guide"
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
// Expo Router - get current routing docs
|
|
24
|
-
mcp__plugin_context7_context7__resolve-library-id({
|
|
25
|
-
libraryName: "expo-router",
|
|
26
|
-
query: "Expo Router file-based routing configuration"
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
// React Native - New Architecture status
|
|
30
|
-
mcp__plugin_context7_context7__resolve-library-id({
|
|
31
|
-
libraryName: "react-native",
|
|
32
|
-
query: "React Native New Architecture Fabric TurboModules"
|
|
33
|
-
});
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
**Why?** Expo SDK releases every ~3 months and React Native every ~8 weeks. Static version numbers go stale quickly. Always verify current versions before recommending specific APIs.
|
|
16
|
+
For library documentation, use WebSearch or install Context7 manually: `claude plugin install context7@claude-plugins-official`
|
|
37
17
|
|
|
38
18
|
## Expo SDK 52+ and the Managed Workflow
|
|
39
19
|
|
|
@@ -655,7 +635,7 @@ eas submit --platform android --latest
|
|
|
655
635
|
|
|
656
636
|
## Related Skills
|
|
657
637
|
|
|
658
|
-
- `
|
|
638
|
+
- `react-native-expert` - Architecture decisions and patterns
|
|
659
639
|
- `react-native-expert` - Bare RN setup, Metro, debugging
|
|
660
640
|
- `mobile-testing` - Comprehensive testing strategies
|
|
661
641
|
- `deep-linking-push` - Deep linking and push notification details
|
|
@@ -9,29 +9,11 @@ context: fork
|
|
|
9
9
|
|
|
10
10
|
Comprehensive mobile testing expertise across **iOS**, **Android**, **React Native**, and **Flutter**. Covers the full testing pyramid from unit tests through E2E, plus CI/CD integration, device farms, performance testing, and accessibility automation.
|
|
11
11
|
|
|
12
|
-
##
|
|
12
|
+
## Fetching Current Documentation
|
|
13
13
|
|
|
14
|
-
**Before providing version-specific guidance,
|
|
14
|
+
**Before providing version-specific guidance, verify current versions.** Testing frameworks like Detox, Testing Library, and Maestro evolve frequently.
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
// Detox - React Native E2E testing
|
|
18
|
-
mcp__plugin_context7_context7__resolve-library-id({
|
|
19
|
-
libraryName: "detox",
|
|
20
|
-
query: "Detox E2E testing setup and configuration"
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
// Testing Library - React Native
|
|
24
|
-
mcp__plugin_context7_context7__resolve-library-id({
|
|
25
|
-
libraryName: "@testing-library/react-native",
|
|
26
|
-
query: "React Native Testing Library component testing"
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
// Maestro - Cross-platform E2E
|
|
30
|
-
mcp__plugin_context7_context7__resolve-library-id({
|
|
31
|
-
libraryName: "maestro",
|
|
32
|
-
query: "Maestro mobile E2E testing framework"
|
|
33
|
-
});
|
|
34
|
-
```
|
|
16
|
+
For library documentation, use WebSearch or install Context7 manually: `claude plugin install context7@claude-plugins-official`
|
|
35
17
|
|
|
36
18
|
## Test Strategy: The Mobile Testing Pyramid
|
|
37
19
|
|
|
@@ -702,5 +684,5 @@ genhtml coverage/lcov.info -o coverage/html
|
|
|
702
684
|
|
|
703
685
|
- `expo` - Expo-specific testing setup
|
|
704
686
|
- `react-native-expert` - React Native debugging tools
|
|
705
|
-
- `
|
|
687
|
+
- `react-native-expert` - Architecture for testability
|
|
706
688
|
- `deep-linking-push` - Testing deep links and notifications
|