specweave 0.23.18 → 0.24.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 (167) hide show
  1. package/.claude-plugin/marketplace.json +93 -49
  2. package/CLAUDE.md +137 -4
  3. package/dist/src/cli/helpers/ado-area-path-mapper.d.ts +89 -0
  4. package/dist/src/cli/helpers/ado-area-path-mapper.d.ts.map +1 -0
  5. package/dist/src/cli/helpers/ado-area-path-mapper.js +213 -0
  6. package/dist/src/cli/helpers/ado-area-path-mapper.js.map +1 -0
  7. package/dist/src/cli/helpers/issue-tracker/ado-auto-discover.d.ts +29 -0
  8. package/dist/src/cli/helpers/issue-tracker/ado-auto-discover.d.ts.map +1 -0
  9. package/dist/src/cli/helpers/issue-tracker/ado-auto-discover.js +109 -0
  10. package/dist/src/cli/helpers/issue-tracker/ado-auto-discover.js.map +1 -0
  11. package/dist/src/cli/helpers/issue-tracker/ado.d.ts +1 -0
  12. package/dist/src/cli/helpers/issue-tracker/ado.d.ts.map +1 -1
  13. package/dist/src/cli/helpers/issue-tracker/ado.js +2 -0
  14. package/dist/src/cli/helpers/issue-tracker/ado.js.map +1 -1
  15. package/dist/src/cli/helpers/smart-filter.d.ts +83 -0
  16. package/dist/src/cli/helpers/smart-filter.d.ts.map +1 -0
  17. package/dist/src/cli/helpers/smart-filter.js +265 -0
  18. package/dist/src/cli/helpers/smart-filter.js.map +1 -0
  19. package/dist/src/core/qa/quality-gate-decider.d.ts +1 -1
  20. package/dist/src/core/qa/quality-gate-decider.js +2 -2
  21. package/dist/src/core/qa/quality-gate-decider.js.map +1 -1
  22. package/dist/src/core/qa/risk-calculator.d.ts +2 -2
  23. package/dist/src/core/qa/risk-calculator.js +2 -2
  24. package/dist/src/core/validators/ac-presence-validator.d.ts +56 -0
  25. package/dist/src/core/validators/ac-presence-validator.d.ts.map +1 -0
  26. package/dist/src/core/validators/ac-presence-validator.js +149 -0
  27. package/dist/src/core/validators/ac-presence-validator.js.map +1 -0
  28. package/dist/src/integrations/ado/area-path-mapper.d.ts +137 -0
  29. package/dist/src/integrations/ado/area-path-mapper.d.ts.map +1 -0
  30. package/dist/src/integrations/ado/area-path-mapper.js +267 -0
  31. package/dist/src/integrations/ado/area-path-mapper.js.map +1 -0
  32. package/dist/src/integrations/jira/filter-processor.d.ts +126 -0
  33. package/dist/src/integrations/jira/filter-processor.d.ts.map +1 -0
  34. package/dist/src/integrations/jira/filter-processor.js +207 -0
  35. package/dist/src/integrations/jira/filter-processor.js.map +1 -0
  36. package/dist/src/integrations/jira/jira-client.d.ts +13 -0
  37. package/dist/src/integrations/jira/jira-client.d.ts.map +1 -1
  38. package/dist/src/integrations/jira/jira-client.js +33 -0
  39. package/dist/src/integrations/jira/jira-client.js.map +1 -1
  40. package/dist/src/utils/ac-embedder.d.ts +63 -0
  41. package/dist/src/utils/ac-embedder.d.ts.map +1 -0
  42. package/dist/src/utils/ac-embedder.js +217 -0
  43. package/dist/src/utils/ac-embedder.js.map +1 -0
  44. package/dist/src/utils/env-manager.d.ts +86 -0
  45. package/dist/src/utils/env-manager.d.ts.map +1 -0
  46. package/dist/src/utils/env-manager.js +188 -0
  47. package/dist/src/utils/env-manager.js.map +1 -0
  48. package/package.json +1 -1
  49. package/plugins/specweave/.claude-plugin/plugin.json +1 -1
  50. package/plugins/specweave/agents/AGENTS-INDEX.md +1 -1
  51. package/plugins/specweave/agents/increment-quality-judge-v2/AGENT.md +9 -9
  52. package/plugins/specweave/commands/specweave-do.md +37 -0
  53. package/plugins/specweave/commands/specweave-done.md +159 -0
  54. package/plugins/specweave/commands/specweave-embed-acs.md +446 -0
  55. package/plugins/specweave/commands/specweave-next.md +148 -3
  56. package/plugins/specweave/commands/specweave-qa.md +2 -2
  57. package/plugins/specweave/hooks/pre-increment-start.sh +168 -0
  58. package/plugins/specweave/skills/SKILLS-INDEX.md +1 -1
  59. package/plugins/specweave-ado/.claude-plugin/plugin.json +1 -1
  60. package/plugins/specweave-ado/commands/specweave-ado-import-projects.md +331 -0
  61. package/plugins/specweave-alternatives/.claude-plugin/plugin.json +10 -0
  62. package/plugins/specweave-alternatives/commands/alternatives-analyze.md +336 -0
  63. package/plugins/specweave-alternatives/skills/architecture-alternatives/SKILL.md +651 -0
  64. package/plugins/specweave-alternatives/skills/bmad-method/SKILL.md +420 -0
  65. package/plugins/specweave-alternatives/skills/spec-kit-expert/SKILL.md +487 -0
  66. package/plugins/specweave-backend/commands/api-scaffold.md +80 -0
  67. package/plugins/specweave-backend/commands/crud-generate.md +109 -0
  68. package/plugins/specweave-backend/commands/migration-generate.md +139 -0
  69. package/plugins/specweave-confluent/commands/connector-deploy.md +154 -0
  70. package/plugins/specweave-confluent/commands/ksqldb-query.md +179 -0
  71. package/plugins/specweave-confluent/commands/schema-register.md +123 -0
  72. package/plugins/specweave-core/.claude-plugin/plugin.json +21 -0
  73. package/plugins/specweave-core/commands/architecture-review.md +288 -0
  74. package/plugins/specweave-core/commands/code-review.md +213 -0
  75. package/plugins/specweave-core/commands/refactor-plan.md +249 -0
  76. package/plugins/specweave-core/skills/code-quality/SKILL.md +157 -0
  77. package/plugins/specweave-core/skills/design-patterns/SKILL.md +244 -0
  78. package/plugins/specweave-core/skills/software-architecture/SKILL.md +83 -0
  79. package/plugins/specweave-cost-optimizer/.claude-plugin/plugin.json +22 -0
  80. package/plugins/specweave-cost-optimizer/commands/cost-analyze.md +360 -0
  81. package/plugins/specweave-cost-optimizer/commands/cost-optimize.md +480 -0
  82. package/plugins/specweave-cost-optimizer/skills/aws-cost-expert/SKILL.md +416 -0
  83. package/plugins/specweave-cost-optimizer/skills/cloud-pricing/SKILL.md +325 -0
  84. package/plugins/specweave-cost-optimizer/skills/cost-optimization/SKILL.md +337 -0
  85. package/plugins/specweave-diagrams/.claude-plugin/plugin.json +1 -1
  86. package/plugins/specweave-diagrams/commands/diagrams-generate.md +168 -0
  87. package/plugins/specweave-docs/.claude-plugin/plugin.json +10 -0
  88. package/plugins/specweave-docs/commands/docs-generate.md +441 -0
  89. package/plugins/specweave-docs/commands/docs-init.md +334 -0
  90. package/plugins/specweave-docs/skills/docusaurus/SKILL.md +581 -0
  91. package/plugins/specweave-docs/skills/spec-driven-brainstorming/SKILL.md +689 -0
  92. package/plugins/specweave-docs/skills/technical-writing/SKILL.md +1039 -0
  93. package/plugins/specweave-docs-preview/.claude-plugin/plugin.json +1 -1
  94. package/plugins/specweave-figma/.claude-plugin/plugin.json +23 -0
  95. package/plugins/specweave-figma/commands/figma-import.md +690 -0
  96. package/plugins/specweave-figma/commands/figma-to-react.md +834 -0
  97. package/plugins/specweave-figma/commands/figma-tokens.md +815 -0
  98. package/plugins/specweave-frontend/.claude-plugin/plugin.json +21 -0
  99. package/plugins/specweave-frontend/agents/frontend-architect/AGENT.md +387 -0
  100. package/plugins/specweave-frontend/agents/frontend-architect/README.md +385 -0
  101. package/plugins/specweave-frontend/agents/frontend-architect/examples.md +590 -0
  102. package/plugins/specweave-frontend/agents/frontend-architect/templates/component-template.tsx +152 -0
  103. package/plugins/specweave-frontend/agents/frontend-architect/templates/hook-template.ts +311 -0
  104. package/plugins/specweave-frontend/agents/frontend-architect/templates/page-template.tsx +228 -0
  105. package/plugins/specweave-frontend/commands/component-generate.md +510 -0
  106. package/plugins/specweave-frontend/commands/design-system-init.md +494 -0
  107. package/plugins/specweave-frontend/commands/frontend-scaffold.md +207 -0
  108. package/plugins/specweave-frontend/commands/nextjs-setup.md +396 -0
  109. package/plugins/specweave-frontend/skills/design-system-architect/SKILL.md +278 -0
  110. package/plugins/specweave-frontend/skills/frontend/SKILL.md +420 -0
  111. package/plugins/specweave-frontend/skills/nextjs/SKILL.md +546 -0
  112. package/plugins/specweave-github/.claude-plugin/plugin.json +1 -1
  113. package/plugins/specweave-github/hooks/.specweave/logs/hooks-debug.log +194 -0
  114. package/plugins/specweave-infrastructure/.claude-plugin/plugin.json +1 -1
  115. package/plugins/specweave-jira/.claude-plugin/plugin.json +1 -1
  116. package/plugins/specweave-jira/commands/import-projects.js +183 -0
  117. package/plugins/specweave-jira/commands/import-projects.md +97 -0
  118. package/plugins/specweave-jira/commands/import-projects.ts +288 -0
  119. package/plugins/specweave-jira/commands/specweave-jira-import-projects.md +298 -0
  120. package/plugins/specweave-kafka/.claude-plugin/plugin.json +1 -1
  121. package/plugins/specweave-kafka-streams/.claude-plugin/plugin.json +1 -1
  122. package/plugins/specweave-kubernetes/commands/cluster-setup.md +262 -0
  123. package/plugins/specweave-kubernetes/commands/deployment-generate.md +242 -0
  124. package/plugins/specweave-kubernetes/commands/helm-scaffold.md +333 -0
  125. package/plugins/specweave-ml/.claude-plugin/plugin.json +1 -1
  126. package/plugins/specweave-mobile/commands/app-scaffold.md +233 -0
  127. package/plugins/specweave-mobile/commands/build-config.md +256 -0
  128. package/plugins/specweave-mobile/commands/screen-generate.md +289 -0
  129. package/plugins/specweave-n8n/.claude-plugin/plugin.json +1 -1
  130. package/plugins/specweave-plugin-dev/.claude-plugin/plugin.json +13 -12
  131. package/plugins/specweave-plugin-dev/commands/plugin-create.md +333 -0
  132. package/plugins/specweave-plugin-dev/commands/plugin-publish.md +339 -0
  133. package/plugins/specweave-plugin-dev/commands/plugin-test.md +293 -0
  134. package/plugins/specweave-plugin-dev/skills/claude-sdk/SKILL.md +162 -0
  135. package/plugins/specweave-plugin-dev/skills/marketplace-publishing/SKILL.md +263 -0
  136. package/plugins/specweave-plugin-dev/skills/plugin-development/SKILL.md +316 -0
  137. package/plugins/specweave-release/.claude-plugin/plugin.json +1 -1
  138. package/plugins/specweave-release/commands/specweave-release-npm.md +110 -0
  139. package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +168 -0
  140. package/plugins/specweave-testing/.claude-plugin/plugin.json +21 -0
  141. package/plugins/specweave-testing/agents/qa-engineer/AGENT.md +797 -0
  142. package/plugins/specweave-testing/agents/qa-engineer/README.md +443 -0
  143. package/plugins/specweave-testing/agents/qa-engineer/templates/playwright-e2e-test.ts +470 -0
  144. package/plugins/specweave-testing/agents/qa-engineer/templates/test-data-factory.ts +507 -0
  145. package/plugins/specweave-testing/agents/qa-engineer/templates/vitest-unit-test.ts +400 -0
  146. package/plugins/specweave-testing/agents/qa-engineer/test-strategies.md +726 -0
  147. package/plugins/specweave-testing/commands/e2e-setup.md +1081 -0
  148. package/plugins/specweave-testing/commands/test-coverage.md +979 -0
  149. package/plugins/specweave-testing/commands/test-generate.md +1156 -0
  150. package/plugins/specweave-testing/commands/test-init.md +409 -0
  151. package/plugins/specweave-testing/skills/e2e-playwright/SKILL.md +769 -0
  152. package/plugins/specweave-testing/skills/tdd-expert/SKILL.md +934 -0
  153. package/plugins/specweave-testing/skills/unit-testing-expert/SKILL.md +1011 -0
  154. package/plugins/specweave-tooling/.claude-plugin/plugin.json +22 -0
  155. package/plugins/specweave-tooling/commands/specweave-tooling-skill-create.md +691 -0
  156. package/plugins/specweave-tooling/commands/specweave-tooling-skill-package.md +751 -0
  157. package/plugins/specweave-tooling/commands/specweave-tooling-skill-validate.md +858 -0
  158. package/plugins/specweave-ui/.claude-plugin/plugin.json +10 -0
  159. package/plugins/specweave-ui/commands/ui-automate.md +199 -0
  160. package/plugins/specweave-ui/commands/ui-inspect.md +70 -0
  161. package/plugins/specweave-ui/skills/browser-automation/SKILL.md +314 -0
  162. package/plugins/specweave-ui/skills/ui-testing/SKILL.md +716 -0
  163. package/plugins/specweave-ui/skills/visual-regression/SKILL.md +728 -0
  164. package/plugins/specweave/commands/check-hooks.md +0 -257
  165. package/plugins/specweave/commands/specweave-archive-increments.md +0 -82
  166. package/plugins/specweave-plugin-dev/skills/plugin-expert/SKILL.md +0 -1231
  167. /package/plugins/specweave/{agents/code-reviewer.md → skills/code-reviewer/SKILL.md} +0 -0
@@ -0,0 +1,256 @@
1
+ # Build Configuration
2
+
3
+ Generate build configurations for iOS and Android.
4
+
5
+ ## Task
6
+
7
+ You are a React Native build expert. Generate complete build configurations for production releases.
8
+
9
+ ### Steps:
10
+
11
+ 1. **Ask for Requirements**:
12
+ - App identifier/bundle ID
13
+ - Environment (dev, staging, prod)
14
+ - Code signing details
15
+ - Push notification setup
16
+
17
+ 2. **Generate app.json** (Expo):
18
+
19
+ ```json
20
+ {
21
+ "expo": {
22
+ "name": "My App",
23
+ "slug": "my-app",
24
+ "version": "1.0.0",
25
+ "orientation": "portrait",
26
+ "icon": "./assets/icon.png",
27
+ "userInterfaceStyle": "automatic",
28
+ "splash": {
29
+ "image": "./assets/splash.png",
30
+ "resizeMode": "contain",
31
+ "backgroundColor": "#ffffff"
32
+ },
33
+ "assetBundlePatterns": [
34
+ "**/*"
35
+ ],
36
+ "ios": {
37
+ "supportsTablet": true,
38
+ "bundleIdentifier": "com.company.myapp",
39
+ "buildNumber": "1",
40
+ "infoPlist": {
41
+ "NSCameraUsageDescription": "This app uses the camera to...",
42
+ "NSPhotoLibraryUsageDescription": "This app accesses photos to...",
43
+ "NSLocationWhenInUseUsageDescription": "This app uses location to..."
44
+ },
45
+ "config": {
46
+ "googleMapsApiKey": "YOUR_KEY_HERE"
47
+ }
48
+ },
49
+ "android": {
50
+ "adaptiveIcon": {
51
+ "foregroundImage": "./assets/adaptive-icon.png",
52
+ "backgroundColor": "#ffffff"
53
+ },
54
+ "package": "com.company.myapp",
55
+ "versionCode": 1,
56
+ "permissions": [
57
+ "CAMERA",
58
+ "READ_EXTERNAL_STORAGE",
59
+ "WRITE_EXTERNAL_STORAGE",
60
+ "ACCESS_FINE_LOCATION"
61
+ ],
62
+ "config": {
63
+ "googleMaps": {
64
+ "apiKey": "YOUR_KEY_HERE"
65
+ }
66
+ }
67
+ },
68
+ "plugins": [
69
+ "expo-camera",
70
+ "expo-location",
71
+ [
72
+ "expo-notifications",
73
+ {
74
+ "icon": "./assets/notification-icon.png",
75
+ "color": "#ffffff"
76
+ }
77
+ ]
78
+ ],
79
+ "extra": {
80
+ "eas": {
81
+ "projectId": "your-project-id"
82
+ }
83
+ }
84
+ }
85
+ }
86
+ ```
87
+
88
+ 3. **Generate eas.json** (Expo EAS Build):
89
+
90
+ ```json
91
+ {
92
+ "cli": {
93
+ "version": ">= 5.0.0"
94
+ },
95
+ "build": {
96
+ "development": {
97
+ "developmentClient": true,
98
+ "distribution": "internal",
99
+ "ios": {
100
+ "simulator": true
101
+ }
102
+ },
103
+ "preview": {
104
+ "distribution": "internal",
105
+ "ios": {
106
+ "simulator": false,
107
+ "resourceClass": "m-medium"
108
+ },
109
+ "android": {
110
+ "buildType": "apk",
111
+ "gradleCommand": ":app:assembleRelease"
112
+ }
113
+ },
114
+ "production": {
115
+ "ios": {
116
+ "resourceClass": "m-medium",
117
+ "autoIncrement BuildNumber": true
118
+ },
119
+ "android": {
120
+ "buildType": "app-bundle",
121
+ "autoIncrement VersionCode": true
122
+ }
123
+ }
124
+ },
125
+ "submit": {
126
+ "production": {
127
+ "ios": {
128
+ "appleId": "your@email.com",
129
+ "ascAppId": "1234567890",
130
+ "appleTeamId": "ABCD1234"
131
+ },
132
+ "android": {
133
+ "serviceAccountKeyPath": "./service-account.json",
134
+ "track": "production"
135
+ }
136
+ }
137
+ }
138
+ }
139
+ ```
140
+
141
+ 4. **Generate Environment Variables**:
142
+
143
+ ```typescript
144
+ // config/env.ts
145
+ import Constants from 'expo-constants';
146
+
147
+ const ENV = {
148
+ dev: {
149
+ apiUrl: 'http://localhost:3000',
150
+ environment: 'development',
151
+ },
152
+ staging: {
153
+ apiUrl: 'https://staging-api.example.com',
154
+ environment: 'staging',
155
+ },
156
+ prod: {
157
+ apiUrl: 'https://api.example.com',
158
+ environment: 'production',
159
+ },
160
+ };
161
+
162
+ const getEnvVars = (env = Constants.manifest?.releaseChannel) => {
163
+ if (__DEV__) return ENV.dev;
164
+ if (env === 'staging') return ENV.staging;
165
+ return ENV.prod;
166
+ };
167
+
168
+ export default getEnvVars();
169
+ ```
170
+
171
+ 5. **Generate Build Scripts**:
172
+
173
+ ```json
174
+ // package.json scripts
175
+ {
176
+ "scripts": {
177
+ "build:dev:ios": "eas build --profile development --platform ios",
178
+ "build:dev:android": "eas build --profile development --platform android",
179
+ "build:preview:ios": "eas build --profile preview --platform ios",
180
+ "build:preview:android": "eas build --profile preview --platform android",
181
+ "build:prod:ios": "eas build --profile production --platform ios",
182
+ "build:prod:android": "eas build --profile production --platform android",
183
+ "build:prod:all": "eas build --profile production --platform all",
184
+ "submit:ios": "eas submit --platform ios",
185
+ "submit:android": "eas submit --platform android"
186
+ }
187
+ }
188
+ ```
189
+
190
+ 6. **Generate CI/CD Configuration** (GitHub Actions):
191
+
192
+ ```yaml
193
+ name: EAS Build
194
+
195
+ on:
196
+ push:
197
+ branches: [main, develop]
198
+ pull_request:
199
+ branches: [main]
200
+
201
+ jobs:
202
+ build:
203
+ runs-on: ubuntu-latest
204
+ steps:
205
+ - uses: actions/checkout@v3
206
+
207
+ - name: Setup Node
208
+ uses: actions/setup-node@v3
209
+ with:
210
+ node-version: 18
211
+ cache: 'npm'
212
+
213
+ - name: Setup Expo
214
+ uses: expo/expo-github-action@v8
215
+ with:
216
+ expo-version: latest
217
+ eas-version: latest
218
+ token: ${{ secrets.EXPO_TOKEN }}
219
+
220
+ - name: Install dependencies
221
+ run: npm ci
222
+
223
+ - name: Run tests
224
+ run: npm test
225
+
226
+ - name: Build iOS
227
+ run: eas build --profile production --platform ios --non-interactive
228
+ if: github.ref == 'refs/heads/main'
229
+
230
+ - name: Build Android
231
+ run: eas build --profile production --platform android --non-interactive
232
+ if: github.ref == 'refs/heads/main'
233
+
234
+ - name: Submit to stores
235
+ run: |
236
+ eas submit --platform ios --non-interactive
237
+ eas submit --platform android --non-interactive
238
+ if: github.ref == 'refs/heads/main'
239
+ ```
240
+
241
+ ### Best Practices Included:
242
+
243
+ - Multi-environment configuration
244
+ - Proper permissions setup
245
+ - Code signing automation
246
+ - CI/CD integration
247
+ - Auto-increment version numbers
248
+ - Proper asset management
249
+ - Push notification setup
250
+
251
+ ### Example Usage:
252
+
253
+ ```
254
+ User: "Set up production build for iOS and Android"
255
+ Result: Complete build configuration with EAS, CI/CD, environment management
256
+ ```
@@ -0,0 +1,289 @@
1
+ # Screen Generator
2
+
3
+ Generate React Native screens with navigation integration.
4
+
5
+ ## Task
6
+
7
+ You are a React Native expert. Generate complete, production-ready screens with proper typing and navigation.
8
+
9
+ ### Steps:
10
+
11
+ 1. **Ask for Requirements**:
12
+ - Screen name and purpose
13
+ - Required data/API calls
14
+ - Form inputs (if any)
15
+ - Navigation params
16
+
17
+ 2. **Generate Screen Component**:
18
+
19
+ ```typescript
20
+ import React, { useEffect, useState } from 'react';
21
+ import {
22
+ View,
23
+ Text,
24
+ StyleSheet,
25
+ FlatList,
26
+ RefreshControl,
27
+ ActivityIndicator,
28
+ } from 'react-native';
29
+ import { NativeStackScreenProps } from '@react-navigation/native-stack';
30
+ import { useQuery, useMutation } from '@tanstack/react-query';
31
+
32
+ import { api } from '../../services/api';
33
+ import { Product } from '../../types';
34
+ import { ProductCard } from '../../components/ProductCard';
35
+ import { RootStackParamList } from '../../navigation/types';
36
+
37
+ type Props = NativeStackScreenProps<RootStackParamList, 'ProductList'>;
38
+
39
+ export function ProductListScreen({ navigation, route }: Props) {
40
+ const { category } = route.params;
41
+
42
+ // Fetch data with React Query
43
+ const {
44
+ data: products,
45
+ isLoading,
46
+ error,
47
+ refetch,
48
+ isRefetching,
49
+ } = useQuery({
50
+ queryKey: ['products', category],
51
+ queryFn: () => api.getProducts({ category }),
52
+ });
53
+
54
+ // Handle item press
55
+ const handleProductPress = (productId: string) => {
56
+ navigation.navigate('ProductDetail', { productId });
57
+ };
58
+
59
+ // Render loading state
60
+ if (isLoading) {
61
+ return (
62
+ <View style={styles.centerContainer}>
63
+ <ActivityIndicator size="large" />
64
+ </View>
65
+ );
66
+ }
67
+
68
+ // Render error state
69
+ if (error) {
70
+ return (
71
+ <View style={styles.centerContainer}>
72
+ <Text style={styles.errorText}>
73
+ Failed to load products
74
+ </Text>
75
+ </View>
76
+ );
77
+ }
78
+
79
+ // Render list
80
+ return (
81
+ <View style={styles.container}>
82
+ <FlatList
83
+ data={products}
84
+ keyExtractor={(item) => item.id}
85
+ renderItem={({ item }) => (
86
+ <ProductCard
87
+ product={item}
88
+ onPress={() => handleProductPress(item.id)}
89
+ />
90
+ )}
91
+ contentContainerStyle={styles.listContent}
92
+ refreshControl={
93
+ <RefreshControl
94
+ refreshing={isRefetching}
95
+ onRefresh={refetch}
96
+ />
97
+ }
98
+ ListEmptyComponent={
99
+ <Text style={styles.emptyText}>
100
+ No products found
101
+ </Text>
102
+ }
103
+ />
104
+ </View>
105
+ );
106
+ }
107
+
108
+ const styles = StyleSheet.create({
109
+ container: {
110
+ flex: 1,
111
+ backgroundColor: '#fff',
112
+ },
113
+ centerContainer: {
114
+ flex: 1,
115
+ justifyContent: 'center',
116
+ alignItems: 'center',
117
+ },
118
+ listContent: {
119
+ padding: 16,
120
+ },
121
+ errorText: {
122
+ fontSize: 16,
123
+ color: 'red',
124
+ },
125
+ emptyText: {
126
+ fontSize: 16,
127
+ textAlign: 'center',
128
+ marginTop: 32,
129
+ },
130
+ });
131
+ ```
132
+
133
+ 3. **Generate Form Screen**:
134
+
135
+ ```typescript
136
+ import React from 'react';
137
+ import {
138
+ View,
139
+ StyleSheet,
140
+ ScrollView,
141
+ KeyboardAvoidingView,
142
+ Platform,
143
+ } from 'react-native';
144
+ import { useForm, Controller } from 'react-hook-form';
145
+ import { zodResolver } from '@hookform/resolvers/zod';
146
+ import * as z from 'zod';
147
+
148
+ import { Input } from '../../components/Input';
149
+ import { Button } from '../../components/Button';
150
+ import { api } from '../../services/api';
151
+
152
+ const schema = z.object({
153
+ name: z.string().min(1, 'Name is required'),
154
+ email: z.string().email('Invalid email'),
155
+ phone: z.string().regex(/^\d{10}$/, 'Invalid phone number'),
156
+ });
157
+
158
+ type FormData = z.infer<typeof schema>;
159
+
160
+ export function ProfileEditScreen({ navigation }: Props) {
161
+ const {
162
+ control,
163
+ handleSubmit,
164
+ formState: { errors, isSubmitting },
165
+ } = useForm<FormData>({
166
+ resolver: zodResolver(schema),
167
+ defaultValues: {
168
+ name: '',
169
+ email: '',
170
+ phone: '',
171
+ },
172
+ });
173
+
174
+ const onSubmit = async (data: FormData) => {
175
+ try {
176
+ await api.updateProfile(data);
177
+ navigation.goBack();
178
+ } catch (error) {
179
+ console.error('Failed to update profile', error);
180
+ }
181
+ };
182
+
183
+ return (
184
+ <KeyboardAvoidingView
185
+ style={styles.container}
186
+ behavior={Platform.OS === 'ios' ? 'padding' : undefined}
187
+ >
188
+ <ScrollView
189
+ contentContainerStyle={styles.content}
190
+ keyboardShouldPersistTaps="handled"
191
+ >
192
+ <Controller
193
+ control={control}
194
+ name="name"
195
+ render={({ field: { onChange, value } }) => (
196
+ <Input
197
+ label="Name"
198
+ value={value}
199
+ onChangeText={onChange}
200
+ error={errors.name?.message}
201
+ />
202
+ )}
203
+ />
204
+
205
+ <Controller
206
+ control={control}
207
+ name="email"
208
+ render={({ field: { onChange, value } }) => (
209
+ <Input
210
+ label="Email"
211
+ value={value}
212
+ onChangeText={onChange}
213
+ keyboardType="email-address"
214
+ autoCapitalize="none"
215
+ error={errors.email?.message}
216
+ />
217
+ )}
218
+ />
219
+
220
+ <Controller
221
+ control={control}
222
+ name="phone"
223
+ render={({ field: { onChange, value } }) => (
224
+ <Input
225
+ label="Phone"
226
+ value={value}
227
+ onChangeText={onChange}
228
+ keyboardType="phone-pad"
229
+ error={errors.phone?.message}
230
+ />
231
+ )}
232
+ />
233
+
234
+ <Button
235
+ title="Save"
236
+ onPress={handleSubmit(onSubmit)}
237
+ loading={isSubmitting}
238
+ />
239
+ </ScrollView>
240
+ </KeyboardAvoidingView>
241
+ );
242
+ }
243
+
244
+ const styles = StyleSheet.create({
245
+ container: {
246
+ flex: 1,
247
+ backgroundColor: '#fff',
248
+ },
249
+ content: {
250
+ padding: 16,
251
+ },
252
+ });
253
+ ```
254
+
255
+ 4. **Generate Navigation Types**:
256
+
257
+ ```typescript
258
+ // navigation/types.ts
259
+ export type RootStackParamList = {
260
+ ProductList: { category: string };
261
+ ProductDetail: { productId: string };
262
+ ProfileEdit: undefined;
263
+ };
264
+
265
+ declare global {
266
+ namespace ReactNavigation {
267
+ interface RootParamList extends RootStackParamList {}
268
+ }
269
+ }
270
+ ```
271
+
272
+ ### Best Practices Included:
273
+
274
+ - TypeScript types
275
+ - React Query for data fetching
276
+ - React Hook Form for forms
277
+ - Zod validation
278
+ - Proper error handling
279
+ - Loading states
280
+ - Pull-to-refresh
281
+ - Keyboard handling
282
+ - Responsive styling
283
+
284
+ ### Example Usage:
285
+
286
+ ```
287
+ User: "Generate product list screen with pull-to-refresh"
288
+ Result: Complete screen with navigation, data fetching, error handling
289
+ ```
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "specweave-n8n",
3
3
  "description": "n8n workflow automation integration with Kafka - Event-driven workflows, Kafka triggers, producers, consumers, and workflow patterns for no-code/low-code event processing",
4
- "version": "0.22.14",
4
+ "version": "0.24.0",
5
5
  "author": {
6
6
  "name": "SpecWeave Team",
7
7
  "url": "https://spec-weave.com"
@@ -1,19 +1,20 @@
1
1
  {
2
2
  "name": "specweave-plugin-dev",
3
- "description": "Expert guidance for developing custom Claude Code plugins, skills, agents, hooks, and MCP servers. Essential for SpecWeave contributors and plugin developers.",
4
- "version": "1.0.0",
3
+ "description": "Claude Code plugin development tools including plugin creation, testing, marketplace publishing, skill authoring, agent development, and CLI command integration.",
4
+ "version": "0.24.0",
5
5
  "author": {
6
6
  "name": "Anton Abyzov",
7
- "email": "anton.abyzov@gmail.com",
8
- "url": "https://spec-weave.com"
9
- },
10
- "homepage": "https://spec-weave.com/docs/plugin-development",
11
- "repository": {
12
- "type": "git",
13
- "url": "https://github.com/anton-abyzov/specweave.git"
7
+ "email": "anton.abyzov@gmail.com"
14
8
  },
9
+ "homepage": "https://spec-weave.com",
10
+ "repository": "https://github.com/anton-abyzov/specweave",
15
11
  "license": "MIT",
16
- "keywords": ["plugin-development", "skills", "agents", "hooks", "claude-code-plugins"],
17
- "category": "development-tools",
18
- "tags": ["plugin-dev", "skill-authoring", "agent-creation", "hook-configuration"]
12
+ "keywords": [
13
+ "plugin-development",
14
+ "claude-sdk",
15
+ "marketplace",
16
+ "skills",
17
+ "agents",
18
+ "specweave"
19
+ ]
19
20
  }