devendra-skill-package 1.0.2
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/.github/skills/boiler-project-generator/SKILL.md +103 -0
- package/.github/skills/boiler-project-generator/assets/templates/android/README.md +3 -0
- package/.github/skills/boiler-project-generator/assets/templates/angular/README.md +3 -0
- package/.github/skills/boiler-project-generator/assets/templates/flutter/README.md +3 -0
- package/.github/skills/boiler-project-generator/assets/templates/ios/README.md +3 -0
- package/.github/skills/boiler-project-generator/assets/templates/react/README.md +3 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/README.md +3 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/api-setup.ts +76 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/component-primary-button.tsx +29 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/env-config.env +4 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/feature-auth-screen.tsx +45 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/feature-dashboard-screen.tsx +45 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/feature-profile-screen.tsx +45 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/hook-use-app-boot.ts +11 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/navigation-setup.tsx +25 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/project-structure.md +24 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/redux-hooks.ts +5 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/redux-session-slice.ts +29 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/redux-store.ts +15 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/theme-index.ts +23 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/utils-helpers.ts +7 -0
- package/.github/skills/boiler-project-generator/metadata.yaml +29 -0
- package/.github/skills/boiler-project-generator/references/android.md +19 -0
- package/.github/skills/boiler-project-generator/references/angular.md +14 -0
- package/.github/skills/boiler-project-generator/references/flutter.md +17 -0
- package/.github/skills/boiler-project-generator/references/ios.md +17 -0
- package/.github/skills/boiler-project-generator/references/react-native.md +103 -0
- package/.github/skills/boiler-project-generator/references/react.md +17 -0
- package/.github/skills/boiler-project-generator/scripts/angular.js +43 -0
- package/.github/skills/boiler-project-generator/scripts/generate-project.mjs +107 -0
- package/.github/skills/boiler-project-generator/scripts/init.js +105 -0
- package/.github/skills/boiler-project-generator/scripts/react-native.js +1041 -0
- package/.github/skills/boiler-project-generator/scripts/react.js +32 -0
- package/.github/skills/clean-architecture-generator/SKILL.md +235 -0
- package/.github/skills/clean-architecture-generator/references/architecture-core.md +126 -0
- package/.github/skills/clean-architecture-generator/references/platform-angular.md +374 -0
- package/.github/skills/clean-architecture-generator/references/platform-flutter.md +366 -0
- package/.github/skills/clean-architecture-generator/references/platform-react-native.md +590 -0
- package/.github/skills/clean-architecture-generator/references/platform-react.md +261 -0
- package/.github/skills/code-test-coverage-analyzer/SKILL.md +1358 -0
- package/.github/skills/code-test-coverage-analyzer/assets/config-questionnaire.md +118 -0
- package/.github/skills/code-test-coverage-analyzer/assets/conflict-resolution-protocol.md +99 -0
- package/.github/skills/code-test-coverage-analyzer/assets/coverage-calculation-rules.md +294 -0
- package/.github/skills/code-test-coverage-analyzer/assets/multi-strategy-search.md +145 -0
- package/.github/skills/code-test-coverage-analyzer/assets/output-file-contracts.md +651 -0
- package/.github/skills/code-test-coverage-analyzer/assets/status-definitions.md +273 -0
- package/.github/skills/code-test-coverage-analyzer/examples/example-invocation.md +208 -0
- package/.github/skills/code-test-coverage-analyzer/references/android-patterns.md +229 -0
- package/.github/skills/code-test-coverage-analyzer/references/angular-patterns.md +177 -0
- package/.github/skills/code-test-coverage-analyzer/references/backend-patterns.md +383 -0
- package/.github/skills/code-test-coverage-analyzer/references/flutter-patterns.md +254 -0
- package/.github/skills/code-test-coverage-analyzer/references/ios-patterns.md +228 -0
- package/.github/skills/code-test-coverage-analyzer/references/react-native-patterns.md +431 -0
- package/.github/skills/code-test-coverage-analyzer/references/react-patterns.md +206 -0
- package/.github/skills/code-test-coverage-analyzer/scripts/detect-platform.ps1 +261 -0
- package/.github/skills/code-test-coverage-analyzer/scripts/scan-repository.ps1 +242 -0
- package/.github/skills/code-test-coverage-analyzer/templates/brd-compliance-row.md +107 -0
- package/.github/skills/code-test-coverage-analyzer/templates/test-case-row.md +130 -0
- package/.github/skills/code-test-coverage-analyzer/templates/user-story-compliance-row.md +170 -0
- package/.github/skills/custom-font-integrator/SKILL.md +373 -0
- package/.github/skills/custom-font-integrator/assets/FontTestScreen.js +150 -0
- package/.github/skills/custom-font-integrator/references/example-info-plist.xml +21 -0
- package/.github/skills/custom-font-integrator/scripts/setup-fonts.sh +99 -0
- package/.github/skills/encryption-decryption-utility/Instructions.md +282 -0
- package/.github/skills/encryption-decryption-utility/README.md +222 -0
- package/.github/skills/encryption-decryption-utility/SKILL.md +645 -0
- package/.github/skills/encryption-decryption-utility/assets/encryption-config-template.json +13 -0
- package/.github/skills/encryption-decryption-utility/assets/platform-matrix.json +180 -0
- package/.github/skills/encryption-decryption-utility/metadata.yaml +51 -0
- package/.github/skills/encryption-decryption-utility/references/android-crypto.md +157 -0
- package/.github/skills/encryption-decryption-utility/references/angular-crypto.md +130 -0
- package/.github/skills/encryption-decryption-utility/references/approach-1-webcrypto.md +95 -0
- package/.github/skills/encryption-decryption-utility/references/approach-2-rsa-aes-cbc.md +111 -0
- package/.github/skills/encryption-decryption-utility/references/approach-3-aes-sharedkey.md +114 -0
- package/.github/skills/encryption-decryption-utility/references/architecture.md +233 -0
- package/.github/skills/encryption-decryption-utility/references/backend-alignment.md +506 -0
- package/.github/skills/encryption-decryption-utility/references/dependency-guidance.md +234 -0
- package/.github/skills/encryption-decryption-utility/references/ec-implementation.md +832 -0
- package/.github/skills/encryption-decryption-utility/references/error-handling-playbook.md +234 -0
- package/.github/skills/encryption-decryption-utility/references/flutter-crypto.md +105 -0
- package/.github/skills/encryption-decryption-utility/references/ios-crypto.md +338 -0
- package/.github/skills/encryption-decryption-utility/references/native-rsa-implementation.md +373 -0
- package/.github/skills/encryption-decryption-utility/references/node-crypto.md +86 -0
- package/.github/skills/encryption-decryption-utility/references/react-crypto.md +105 -0
- package/.github/skills/encryption-decryption-utility/references/react-native-crypto.md +1001 -0
- package/.github/skills/encryption-decryption-utility/references/react-web-crypto.md +668 -0
- package/.github/skills/encryption-decryption-utility/references/security-checklist.md +176 -0
- package/.github/skills/encryption-decryption-utility/references/web-crypto.md +74 -0
- package/.github/skills/encryption-decryption-utility/scripts/detect.js +128 -0
- package/.github/skills/encryption-decryption-utility/scripts/install.js +1713 -0
- package/.github/skills/encryption-decryption-utility/scripts/setup.js +800 -0
- package/.github/skills/encryption-decryption-utility/template.md +241 -0
- package/.github/skills/encryption-decryption-utility/templates/config-questionnaire.md +467 -0
- package/.github/skills/encryption-decryption-utility/templates/delivery-checklist.md +206 -0
- package/.github/skills/encryption-decryption-utility/templates/implementation-plan.md +304 -0
- package/.github/skills/feature-generator/SKILL.MD +2741 -0
- package/.github/skills/feature-generator/assets/fingerprint-schema.json +385 -0
- package/.github/skills/feature-generator/assets/spec-template.md +172 -0
- package/.github/skills/feature-generator/assets/transform-rules.json +82 -0
- package/.github/skills/feature-generator/references/api-envelope-patterns.md +327 -0
- package/.github/skills/feature-generator/references/screen-logic-patterns.md +399 -0
- package/.github/skills/feature-generator/references/state-library-patterns.md +464 -0
- package/.github/skills/figma-ui-mapper/README.md +34 -0
- package/.github/skills/figma-ui-mapper/SKILL.md +101 -0
- package/.github/skills/figma-ui-mapper/assets/templates/component-map-template.md +30 -0
- package/.github/skills/figma-ui-mapper/assets/templates/generation-report-template.md +49 -0
- package/.github/skills/figma-ui-mapper/metadata.yaml +22 -0
- package/.github/skills/figma-ui-mapper/references/android.md +11 -0
- package/.github/skills/figma-ui-mapper/references/angular.md +18 -0
- package/.github/skills/figma-ui-mapper/references/capacitor.md +18 -0
- package/.github/skills/figma-ui-mapper/references/common.md +23 -0
- package/.github/skills/figma-ui-mapper/references/expo.md +18 -0
- package/.github/skills/figma-ui-mapper/references/flutter.md +18 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/angular/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/capacitor/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/expo/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/flutter/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/ionic/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/kotlin-multiplatform/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/native-android/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/native-ios/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/next/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/nuxt/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/react/rules.md +19 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/react-native/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/svelte/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/vue/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/ionic.md +18 -0
- package/.github/skills/figma-ui-mapper/references/ios.md +11 -0
- package/.github/skills/figma-ui-mapper/references/kotlin-multiplatform.md +18 -0
- package/.github/skills/figma-ui-mapper/references/native-android.md +18 -0
- package/.github/skills/figma-ui-mapper/references/native-ios.md +18 -0
- package/.github/skills/figma-ui-mapper/references/next.md +18 -0
- package/.github/skills/figma-ui-mapper/references/nuxt.md +18 -0
- package/.github/skills/figma-ui-mapper/references/react-figma-guideline.md +21 -0
- package/.github/skills/figma-ui-mapper/references/react-native.md +18 -0
- package/.github/skills/figma-ui-mapper/references/react.md +18 -0
- package/.github/skills/figma-ui-mapper/references/script-usage.md +46 -0
- package/.github/skills/figma-ui-mapper/references/svelte.md +18 -0
- package/.github/skills/figma-ui-mapper/references/vue.md +18 -0
- package/.github/skills/figma-ui-mapper/references/workflow.md +74 -0
- package/.github/skills/figma-ui-mapper/scripts/generate-page-through-figma.js +635 -0
- package/.github/skills/figma-ui-mapper/scripts/generate-react-page-through-figma.js +4 -0
- package/.github/skills/frontend-task-breakdown/SKILL.md +734 -0
- package/.github/skills/md-file-converter/SKILL.md +291 -0
- package/.github/skills/md-file-converter/config/formats.json +114 -0
- package/.github/skills/md-file-converter/extractors/extract-docx.sh +120 -0
- package/.github/skills/md-file-converter/extractors/extract-eml.py +108 -0
- package/.github/skills/md-file-converter/extractors/extract-pdf.sh +97 -0
- package/.github/skills/md-file-converter/extractors/extract-pptx.py +143 -0
- package/.github/skills/md-file-converter/extractors/extract-xlsx.py +175 -0
- package/.github/skills/md-file-converter/scripts/check-tools.sh +47 -0
- package/.github/skills/md-file-converter/scripts/extract-archive.sh +83 -0
- package/.github/skills/md-file-converter/scripts/extract-ocr.sh +77 -0
- package/.github/skills/md-file-converter/scripts/get-metadata.sh +57 -0
- package/.github/skills/md-file-converter/templates/output.md +73 -0
- package/.github/skills/md-file-converter/templates/unsupported-object.md +6 -0
- package/.github/skills/mockAPI-contract-generator/SKILL.md +607 -0
- package/.github/skills/test-case-validator/CHANGELOG.md +155 -0
- package/.github/skills/test-case-validator/CONFIGURATION.md +130 -0
- package/.github/skills/test-case-validator/EXAMPLES.md +50 -0
- package/.github/skills/test-case-validator/QUALITY_SCORING.md +98 -0
- package/.github/skills/test-case-validator/README.md +111 -0
- package/.github/skills/test-case-validator/REPORT_TEMPLATE.md +116 -0
- package/.github/skills/test-case-validator/SKILL.md +209 -0
- package/.github/skills/test-case-validator/SYSTEM_PROMPT.md +127 -0
- package/.github/skills/test-case-validator/TRACEABILITY_ENGINE.md +152 -0
- package/.github/skills/test-case-validator/VALIDATION_RULES.md +411 -0
- package/.github/skills/test-case-validator/config/default.config.yaml +62 -0
- package/.github/skills/test-case-validator/docs/ARCHITECTURE.md +66 -0
- package/.github/skills/test-case-validator/docs/EXTENDING.md +85 -0
- package/.github/skills/test-case-validator/docs/FAQ.md +88 -0
- package/.github/skills/test-case-validator/docs/VERSIONING.md +55 -0
- package/.github/skills/test-case-validator/examples/example-1-manual-qa-ecommerce/input-brd.md +43 -0
- package/.github/skills/test-case-validator/examples/example-1-manual-qa-ecommerce/input-test-cases.csv +9 -0
- package/.github/skills/test-case-validator/examples/example-1-manual-qa-ecommerce/input-user-story.md +29 -0
- package/.github/skills/test-case-validator/examples/example-1-manual-qa-ecommerce/output-report.md +303 -0
- package/.github/skills/test-case-validator/examples/example-2-automated-frontend-suite/input-spec.md +43 -0
- package/.github/skills/test-case-validator/examples/example-2-automated-frontend-suite/input-test-files-index.md +56 -0
- package/.github/skills/test-case-validator/examples/example-2-automated-frontend-suite/output-report.md +274 -0
- package/.github/skills/test-case-validator/prompts/00-applicability-resolution.md +61 -0
- package/.github/skills/test-case-validator/prompts/01-extraction-user-story.md +58 -0
- package/.github/skills/test-case-validator/prompts/02-extraction-brd.md +64 -0
- package/.github/skills/test-case-validator/prompts/03-extraction-test-cases.md +92 -0
- package/.github/skills/test-case-validator/prompts/04-traceability-matrix.md +41 -0
- package/.github/skills/test-case-validator/prompts/05-coverage-analysis.md +46 -0
- package/.github/skills/test-case-validator/prompts/06-missing-scenario-detection.md +32 -0
- package/.github/skills/test-case-validator/prompts/07-duplicate-detection.md +36 -0
- package/.github/skills/test-case-validator/prompts/08-risk-analysis.md +39 -0
- package/.github/skills/test-case-validator/prompts/09-gated-wiring-validation.md +53 -0
- package/.github/skills/test-case-validator/prompts/10-observation-report.md +56 -0
- package/.github/skills/test-case-validator/prompts/11-final-report-assembly.md +57 -0
- package/.github/skills/test-case-validator/templates/coverage-table.md +25 -0
- package/.github/skills/test-case-validator/templates/executive-summary.md +38 -0
- package/.github/skills/test-case-validator/templates/final-summary-block.md +87 -0
- package/.github/skills/test-case-validator/templates/observation-entry.md +41 -0
- package/.github/skills/test-case-validator/templates/rtm-row.md +25 -0
- package/.github/skills/validation-engine-builder/README.md +50 -0
- package/.github/skills/validation-engine-builder/SKILL.md +241 -0
- package/.github/skills/validation-engine-builder/references/core.md +158 -0
- package/.github/skills/validation-engine-builder/references/platform-angular.md +166 -0
- package/.github/skills/validation-engine-builder/references/platform-flutter.md +118 -0
- package/.github/skills/validation-engine-builder/references/platform-react-native.md +170 -0
- package/.github/skills/validation-engine-builder/references/platform-react.md +94 -0
- package/.github/skills/validation-engine-builder/scripts/apply-to-project.js +80 -0
- package/.github/skills/validation-engine-builder/scripts/generate-angular.js +271 -0
- package/.github/skills/validation-engine-builder/scripts/generate-flutter.js +298 -0
- package/.github/skills/validation-engine-builder/scripts/generate-react-native.js +217 -0
- package/.github/skills/validation-engine-builder/scripts/generate-react.js +163 -0
- package/.github/skills/validation-engine-builder/scripts/install-deps.js +53 -0
- package/.github/skills/validation-engine-builder/scripts/shared/detect-platform.js +68 -0
- package/.github/skills/validation-engine-builder/scripts/shared/npm-deps.js +103 -0
- package/.github/skills/validation-engine-builder/scripts/shared/rhf-hook.js +43 -0
- package/.github/skills/validation-engine-builder/scripts/shared/ts-messages-regex.js +62 -0
- package/.github/skills/validation-engine-builder/scripts/shared/util.js +44 -0
- package/.github/skills/validation-engine-builder/scripts/shared/yup-schemas.js +80 -0
- package/.github/skills/validation-engine-builder/template.md +73 -0
- package/.github/skills/validation-engine-builder/templates/messages.json +22 -0
- package/.github/skills/validation-engine-builder/templates/regex.json +16 -0
- package/.github/skills/validation-engine-builder/templates/schemas.json +48 -0
- package/bin/index.js +145 -0
- package/package.json +22 -0
- package/readme.md +0 -0
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { View, Text, ScrollView, StyleSheet, Switch } from 'react-native';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* FontTestScreen Component
|
|
6
|
+
*
|
|
7
|
+
* A utility component to verify custom fonts are properly loaded
|
|
8
|
+
* in your React Native app for both Android and iOS
|
|
9
|
+
*
|
|
10
|
+
* Usage:
|
|
11
|
+
* <FontTestScreen fonts={['Poppins-Regular', 'Poppins-Bold', 'Montserrat-Regular']} />
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
const FontTestScreen = ({
|
|
15
|
+
fonts = [
|
|
16
|
+
'Poppins-Regular',
|
|
17
|
+
'Poppins-Bold',
|
|
18
|
+
'Poppins-SemiBold',
|
|
19
|
+
'Montserrat-Regular',
|
|
20
|
+
'Montserrat-Bold',
|
|
21
|
+
'Montserrat-Light',
|
|
22
|
+
],
|
|
23
|
+
customText = 'The quick brown fox jumps over the lazy dog'
|
|
24
|
+
}) => {
|
|
25
|
+
const [showFontName, setShowFontName] = useState(true);
|
|
26
|
+
|
|
27
|
+
return (
|
|
28
|
+
<ScrollView style={styles.container}>
|
|
29
|
+
<View style={styles.header}>
|
|
30
|
+
<Text style={styles.title}>Font Test Screen</Text>
|
|
31
|
+
<Text style={styles.subtitle}>
|
|
32
|
+
Verify your custom fonts are loaded correctly
|
|
33
|
+
</Text>
|
|
34
|
+
</View>
|
|
35
|
+
|
|
36
|
+
<View style={styles.controlPanel}>
|
|
37
|
+
<Text style={styles.controlLabel}>Show Font Names</Text>
|
|
38
|
+
<Switch
|
|
39
|
+
value={showFontName}
|
|
40
|
+
onValueChange={setShowFontName}
|
|
41
|
+
style={styles.switch}
|
|
42
|
+
/>
|
|
43
|
+
</View>
|
|
44
|
+
|
|
45
|
+
<View style={styles.fontsList}>
|
|
46
|
+
{fonts.map((font, index) => (
|
|
47
|
+
<View key={index} style={styles.fontItem}>
|
|
48
|
+
{showFontName && (
|
|
49
|
+
<Text style={styles.fontLabel}>{font}</Text>
|
|
50
|
+
)}
|
|
51
|
+
<Text style={[styles.sampleText, { fontFamily: font }]}>
|
|
52
|
+
{customText}
|
|
53
|
+
</Text>
|
|
54
|
+
</View>
|
|
55
|
+
))}
|
|
56
|
+
</View>
|
|
57
|
+
|
|
58
|
+
<View style={styles.footer}>
|
|
59
|
+
<Text style={styles.footerText}>
|
|
60
|
+
If fonts appear in your custom font above, your setup is working! ✓
|
|
61
|
+
</Text>
|
|
62
|
+
</View>
|
|
63
|
+
</ScrollView>
|
|
64
|
+
);
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
const styles = StyleSheet.create({
|
|
68
|
+
container: {
|
|
69
|
+
flex: 1,
|
|
70
|
+
backgroundColor: '#f5f5f5',
|
|
71
|
+
},
|
|
72
|
+
header: {
|
|
73
|
+
backgroundColor: '#2196F3',
|
|
74
|
+
padding: 20,
|
|
75
|
+
paddingTop: 40,
|
|
76
|
+
},
|
|
77
|
+
title: {
|
|
78
|
+
fontSize: 24,
|
|
79
|
+
fontWeight: 'bold',
|
|
80
|
+
color: '#fff',
|
|
81
|
+
marginBottom: 8,
|
|
82
|
+
},
|
|
83
|
+
subtitle: {
|
|
84
|
+
fontSize: 14,
|
|
85
|
+
color: 'rgba(255,255,255,0.8)',
|
|
86
|
+
},
|
|
87
|
+
controlPanel: {
|
|
88
|
+
flexDirection: 'row',
|
|
89
|
+
justifyContent: 'space-between',
|
|
90
|
+
alignItems: 'center',
|
|
91
|
+
backgroundColor: '#fff',
|
|
92
|
+
paddingHorizontal: 16,
|
|
93
|
+
paddingVertical: 12,
|
|
94
|
+
borderBottomWidth: 1,
|
|
95
|
+
borderBottomColor: '#e0e0e0',
|
|
96
|
+
},
|
|
97
|
+
controlLabel: {
|
|
98
|
+
fontSize: 14,
|
|
99
|
+
fontWeight: '600',
|
|
100
|
+
color: '#333',
|
|
101
|
+
},
|
|
102
|
+
switch: {
|
|
103
|
+
marginRight: 0,
|
|
104
|
+
},
|
|
105
|
+
fontsList: {
|
|
106
|
+
paddingHorizontal: 16,
|
|
107
|
+
paddingVertical: 12,
|
|
108
|
+
},
|
|
109
|
+
fontItem: {
|
|
110
|
+
backgroundColor: '#fff',
|
|
111
|
+
borderRadius: 8,
|
|
112
|
+
padding: 16,
|
|
113
|
+
marginBottom: 12,
|
|
114
|
+
borderLeftWidth: 4,
|
|
115
|
+
borderLeftColor: '#2196F3',
|
|
116
|
+
shadowColor: '#000',
|
|
117
|
+
shadowOffset: { width: 0, height: 2 },
|
|
118
|
+
shadowOpacity: 0.1,
|
|
119
|
+
shadowRadius: 3,
|
|
120
|
+
elevation: 3,
|
|
121
|
+
},
|
|
122
|
+
fontLabel: {
|
|
123
|
+
fontSize: 12,
|
|
124
|
+
fontWeight: '600',
|
|
125
|
+
color: '#666',
|
|
126
|
+
textTransform: 'uppercase',
|
|
127
|
+
letterSpacing: 0.5,
|
|
128
|
+
marginBottom: 8,
|
|
129
|
+
},
|
|
130
|
+
sampleText: {
|
|
131
|
+
fontSize: 16,
|
|
132
|
+
lineHeight: 24,
|
|
133
|
+
color: '#333',
|
|
134
|
+
},
|
|
135
|
+
footer: {
|
|
136
|
+
padding: 16,
|
|
137
|
+
backgroundColor: '#e8f5e9',
|
|
138
|
+
margin: 16,
|
|
139
|
+
borderRadius: 8,
|
|
140
|
+
borderLeftWidth: 4,
|
|
141
|
+
borderLeftColor: '#4caf50',
|
|
142
|
+
},
|
|
143
|
+
footerText: {
|
|
144
|
+
fontSize: 13,
|
|
145
|
+
color: '#2e7d32',
|
|
146
|
+
lineHeight: 18,
|
|
147
|
+
},
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
export default FontTestScreen;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
+
<plist version="1.0">
|
|
4
|
+
<dict>
|
|
5
|
+
<!-- ... other configuration keys ... -->
|
|
6
|
+
|
|
7
|
+
<!-- Add this array for custom fonts -->
|
|
8
|
+
<key>UIAppFonts</key>
|
|
9
|
+
<array>
|
|
10
|
+
<string>Poppins-Regular.ttf</string>
|
|
11
|
+
<string>Poppins-Bold.ttf</string>
|
|
12
|
+
<string>Poppins-SemiBold.ttf</string>
|
|
13
|
+
<string>Montserrat-Regular.ttf</string>
|
|
14
|
+
<string>Montserrat-Bold.ttf</string>
|
|
15
|
+
<string>Montserrat-Light.ttf</string>
|
|
16
|
+
<!-- Add more fonts as needed -->
|
|
17
|
+
</array>
|
|
18
|
+
|
|
19
|
+
<!-- ... rest of your Info.plist ... -->
|
|
20
|
+
</dict>
|
|
21
|
+
</plist>
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# React Native Custom Fonts Setup Script
|
|
4
|
+
# This script automates font file organization for both Android and iOS
|
|
5
|
+
|
|
6
|
+
set -e
|
|
7
|
+
|
|
8
|
+
# Colors for output
|
|
9
|
+
RED='\033[0;31m'
|
|
10
|
+
GREEN='\033[0;32m'
|
|
11
|
+
YELLOW='\033[1;33m'
|
|
12
|
+
NC='\033[0m' # No Color
|
|
13
|
+
|
|
14
|
+
# Function to print colored output
|
|
15
|
+
print_success() {
|
|
16
|
+
echo -e "${GREEN}✓ $1${NC}"
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
print_error() {
|
|
20
|
+
echo -e "${RED}✗ $1${NC}"
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
print_warning() {
|
|
24
|
+
echo -e "${YELLOW}⚠ $1${NC}"
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
# Check if we're in a React Native project
|
|
28
|
+
if [ ! -f "package.json" ] || ! grep -q "react-native" package.json; then
|
|
29
|
+
print_error "Not in a React Native project directory"
|
|
30
|
+
exit 1
|
|
31
|
+
fi
|
|
32
|
+
|
|
33
|
+
# Get project name from package.json
|
|
34
|
+
PROJECT_NAME=$(grep '"name"' package.json | head -1 | sed 's/.*"name": "\(.*\)".*/\1/')
|
|
35
|
+
|
|
36
|
+
echo "Setting up fonts for React Native project: $PROJECT_NAME"
|
|
37
|
+
echo ""
|
|
38
|
+
|
|
39
|
+
# Resolve fonts path: use first argument if provided, else scan for .ttf files, else default
|
|
40
|
+
if [ -n "$1" ]; then
|
|
41
|
+
FONTS_PATH="$1"
|
|
42
|
+
print_success "Using user-provided fonts path: $FONTS_PATH"
|
|
43
|
+
else
|
|
44
|
+
SCANNED=$(find . -name "*.ttf" -not -path "./android/*" -not -path "./ios/*" -not -path "./node_modules/*" | head -1)
|
|
45
|
+
if [ -n "$SCANNED" ]; then
|
|
46
|
+
FONTS_PATH=$(dirname "$SCANNED")
|
|
47
|
+
FONTS_PATH="${FONTS_PATH#./}"
|
|
48
|
+
print_success "Fonts path detected by scan: $FONTS_PATH"
|
|
49
|
+
else
|
|
50
|
+
FONTS_PATH="assets/fonts"
|
|
51
|
+
print_warning "No .ttf files found. Using default path: $FONTS_PATH"
|
|
52
|
+
fi
|
|
53
|
+
fi
|
|
54
|
+
|
|
55
|
+
echo "INFO: fontsPath resolved to '$FONTS_PATH'"
|
|
56
|
+
echo ""
|
|
57
|
+
|
|
58
|
+
# Step 1: Create fonts directory
|
|
59
|
+
print_warning "Step 1: Creating fonts directory structure..."
|
|
60
|
+
mkdir -p "$FONTS_PATH"
|
|
61
|
+
print_success "Created $FONTS_PATH/"
|
|
62
|
+
|
|
63
|
+
# Step 2: Setup Android
|
|
64
|
+
print_warning "Step 2: Setting up Android fonts..."
|
|
65
|
+
mkdir -p android/app/src/main/assets/fonts
|
|
66
|
+
print_success "Created android/app/src/main/assets/fonts/"
|
|
67
|
+
|
|
68
|
+
# Copy any existing fonts
|
|
69
|
+
if [ -n "$(ls "$FONTS_PATH"/*.ttf 2>/dev/null)" ]; then
|
|
70
|
+
cp "$FONTS_PATH"/*.ttf android/app/src/main/assets/fonts/ 2>/dev/null || true
|
|
71
|
+
print_success "Copied fonts to Android"
|
|
72
|
+
else
|
|
73
|
+
print_warning "No .ttf files found in $FONTS_PATH/ yet. Remember to add your fonts!"
|
|
74
|
+
fi
|
|
75
|
+
|
|
76
|
+
# Step 3: Setup iOS — copy into app target folder (not ios/Fonts)
|
|
77
|
+
print_warning "Step 3: Setting up iOS fonts..."
|
|
78
|
+
IOS_TARGET_DIR="ios/${PROJECT_NAME}"
|
|
79
|
+
mkdir -p "$IOS_TARGET_DIR"
|
|
80
|
+
print_success "Created $IOS_TARGET_DIR/"
|
|
81
|
+
|
|
82
|
+
# Copy any existing fonts
|
|
83
|
+
if [ -n "$(ls "$FONTS_PATH"/*.ttf 2>/dev/null)" ]; then
|
|
84
|
+
cp "$FONTS_PATH"/*.ttf "$IOS_TARGET_DIR"/ 2>/dev/null || true
|
|
85
|
+
print_success "Copied fonts to iOS ($IOS_TARGET_DIR/)"
|
|
86
|
+
fi
|
|
87
|
+
|
|
88
|
+
echo ""
|
|
89
|
+
print_success "Font setup complete!"
|
|
90
|
+
echo ""
|
|
91
|
+
echo "Next steps:"
|
|
92
|
+
echo "1. Add your .ttf files to $FONTS_PATH/"
|
|
93
|
+
echo "2. Run this script again to copy them to both platforms"
|
|
94
|
+
echo " (or pass the path directly: bash setup-fonts.sh <fontsPath>)"
|
|
95
|
+
echo "3. For iOS: Open ios/${PROJECT_NAME}.xcworkspace in Xcode and:"
|
|
96
|
+
echo " - Add fonts to 'Copy Bundle Resources' in Build Phases"
|
|
97
|
+
echo " - Update Info.plist with the UIAppFonts array"
|
|
98
|
+
echo "4. Rebuild with: npx react-native run-android && npx react-native run-ios"
|
|
99
|
+
echo ""
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
# Instructions — How to Use the rn-encryption-decryption Skill in Another Project
|
|
2
|
+
|
|
3
|
+
This guide explains how to copy the `rn-encryption-decryption` skill into a different React Native CLI project and run it end-to-end.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Prerequisites
|
|
8
|
+
|
|
9
|
+
| Requirement | Minimum version / Note |
|
|
10
|
+
|-------------|------------------------|
|
|
11
|
+
| Node.js | 18.x |
|
|
12
|
+
| React Native CLI | 0.71+ |
|
|
13
|
+
| TypeScript | 4.9+ |
|
|
14
|
+
| Axios | Any version (for interceptor integration) |
|
|
15
|
+
| `react-native-keychain` | ^8.0 (secure storage) |
|
|
16
|
+
| `react-native-quick-crypto` | ^1.0 (JS crypto layer, requires Nitro Modules peer deps) |
|
|
17
|
+
| AI assistant | GitHub Copilot, Claude, or any LLM with file-context support |
|
|
18
|
+
|
|
19
|
+
This skill is for **React Native CLI** projects only. It does **not** support Expo managed workflow.
|
|
20
|
+
|
|
21
|
+
> **No automation script exists for this skill.** All implementation is LLM-generated, guided by the reference files and your questionnaire answers. Estimated effort: 2–4 hours depending on model + layer choice.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Skill Execution Breakdown
|
|
26
|
+
|
|
27
|
+
| What | Who does it | % |
|
|
28
|
+
|------|------------|---|
|
|
29
|
+
| Reading RN version and installed packages | Developer (manual check) | — |
|
|
30
|
+
| Architecture decision (RSA vs EC, JS vs Native) | Developer + LLM | LLM |
|
|
31
|
+
| Questionnaire completion | Developer | — |
|
|
32
|
+
| Dependency installation | Developer (manual `npm install`) | — |
|
|
33
|
+
| Key service generation (`RsaKeyService` / `EcKeyService`) | LLM | LLM |
|
|
34
|
+
| Crypto utility generation (`crypto.util.ts`, `hmac.util.ts`) | LLM | LLM |
|
|
35
|
+
| Axios interceptor wiring | LLM | LLM |
|
|
36
|
+
| Native bridge (Kotlin + Swift), if Native layer | LLM | LLM |
|
|
37
|
+
| Backend alignment documentation | LLM | LLM |
|
|
38
|
+
| Security review | LLM + developer | LLM |
|
|
39
|
+
| TypeScript verification | Developer (`npx tsc --noEmit`) | — |
|
|
40
|
+
| **Script total** | | **~0%** |
|
|
41
|
+
| **LLM total** | | **~100%** |
|
|
42
|
+
|
|
43
|
+
The 0/100 split reflects that encryption is entirely project-specific. The key exchange model, nonce format, envelope shape, excluded API paths, and backend contract cannot be determined without developer input — so nothing can be automated. The reference files guide the LLM to produce correct, production-ready output on the first pass.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Step 1 — Copy the Skill Folder
|
|
48
|
+
|
|
49
|
+
Copy the entire `.github/skills/rn-encryption-decryption/` folder into the target project:
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
<target-project>/
|
|
53
|
+
.github/
|
|
54
|
+
skills/
|
|
55
|
+
rn-encryption-decryption/
|
|
56
|
+
SKILL.md
|
|
57
|
+
Instructions.md
|
|
58
|
+
template.md
|
|
59
|
+
references/
|
|
60
|
+
architecture.md
|
|
61
|
+
backend-alignment.md
|
|
62
|
+
dependency-guidance.md
|
|
63
|
+
ec-implementation.md
|
|
64
|
+
error-handling-playbook.md
|
|
65
|
+
native-rsa-implementation.md
|
|
66
|
+
security-checklist.md
|
|
67
|
+
templates/
|
|
68
|
+
config-questionnaire.md
|
|
69
|
+
delivery-checklist.md
|
|
70
|
+
implementation-plan.md
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
On Windows (PowerShell):
|
|
74
|
+
```powershell
|
|
75
|
+
Copy-Item -Recurse -Path ".github\skills\rn-encryption-decryption" `
|
|
76
|
+
-Destination "C:\path\to\target-project\.github\skills\rn-encryption-decryption"
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
On macOS/Linux:
|
|
80
|
+
```bash
|
|
81
|
+
cp -r .github/skills/rn-encryption-decryption /path/to/target-project/.github/skills/
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Step 2 — Open the Target Project
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
cd /path/to/target-project
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Ensure `package.json` is present. All commands must be run from the project root.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Step 3 — Check Your React Native Version (Manual)
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
node -p "require('./package.json').dependencies['react-native']"
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Open `references/dependency-guidance.md` and read the **Transitive Dependencies** section for your RN version. This tells you exactly which packages to install and in what order.
|
|
103
|
+
|
|
104
|
+
> **Critical for RN 0.76+:** `react-native-quick-crypto` ≥ 1.0 requires `react-native-nitro-modules` and `react-native-worklets` as peer dependencies. Install them manually — they are **not** auto-installed.
|
|
105
|
+
|
|
106
|
+
Install the required packages:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
# Always required (JS crypto layer)
|
|
110
|
+
npm install react-native-quick-crypto react-native-nitro-modules react-native-worklets react-native-keychain buffer
|
|
111
|
+
|
|
112
|
+
# RSA model only
|
|
113
|
+
npm install react-native-rsa-native # or your team's preferred RSA library
|
|
114
|
+
|
|
115
|
+
# iOS only (after any new native package install)
|
|
116
|
+
cd ios && pod install && cd ..
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Verify the install:
|
|
120
|
+
```bash
|
|
121
|
+
npm ls react-native-quick-crypto react-native-nitro-modules react-native-worklets
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## Step 4 — Answer the Config Questionnaire (LLM Layer — 100%)
|
|
127
|
+
|
|
128
|
+
Open `templates/config-questionnaire.md`. The questionnaire has four sections — one for each model + layer combination:
|
|
129
|
+
|
|
130
|
+
- **RSA + React Native JS** — most common, simplest backend
|
|
131
|
+
- **RSA + Native** — AES runs in OS engine (Kotlin/Swift)
|
|
132
|
+
- **EC + React Native JS** — forward-secrecy, recommended for new projects
|
|
133
|
+
- **EC + Native** — advanced, AES in OS engine
|
|
134
|
+
|
|
135
|
+
**Key decisions to make before starting:**
|
|
136
|
+
|
|
137
|
+
| Decision | Options | Guidance |
|
|
138
|
+
|----------|---------|----------|
|
|
139
|
+
| Key exchange model | RSA / EC (ECDH) | EC preferred for new builds; RSA if backend already has RSA |
|
|
140
|
+
| Crypto execution layer | JS / Native | JS unless native performance is a hard requirement |
|
|
141
|
+
| EC contract type | Per-request / Session-init | Per-request = new key per API call; session-init = shared key per login session |
|
|
142
|
+
| Excluded paths | e.g. `/auth/login`, `/health` | Paths that bypass encryption (public endpoints) |
|
|
143
|
+
| HMAC signing | Yes / No | Adds request-level integrity check (recommended) |
|
|
144
|
+
| Nonce format | `appId^timestamp.hex` or custom | Must match server contract exactly |
|
|
145
|
+
|
|
146
|
+
Fill in all answers before moving to Step 5. Incomplete answers produce incorrect code.
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## Step 5 — Load Reference Files into Your AI Assistant
|
|
151
|
+
|
|
152
|
+
Provide **all** of the following files as context to your AI assistant (GitHub Copilot, Claude, etc.):
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
SKILL.md
|
|
156
|
+
template.md
|
|
157
|
+
references/architecture.md
|
|
158
|
+
references/dependency-guidance.md
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Plus the implementation reference for your chosen path:
|
|
162
|
+
|
|
163
|
+
| Chosen path | Load this reference |
|
|
164
|
+
|-------------|---------------------|
|
|
165
|
+
| EC (any layer) | `references/ec-implementation.md` |
|
|
166
|
+
| RSA + Native | `references/native-rsa-implementation.md` |
|
|
167
|
+
| RSA + JS | `references/architecture.md` is sufficient |
|
|
168
|
+
|
|
169
|
+
Plus your existing codebase files:
|
|
170
|
+
|
|
171
|
+
- Your Axios instance / API service (`src/services/api.ts` or equivalent)
|
|
172
|
+
- Your existing interceptors (if any)
|
|
173
|
+
- Your navigation types / route param list (for context only)
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Step 6 — Run the Implementation
|
|
178
|
+
|
|
179
|
+
Ask your AI assistant:
|
|
180
|
+
|
|
181
|
+
> "Using the skill files I provided, implement the full encryption system for my React Native app. My configuration answers are: [paste your questionnaire answers here]. Follow the execution order in SKILL.md and use the relevant implementation reference for code."
|
|
182
|
+
|
|
183
|
+
The LLM will generate (in order):
|
|
184
|
+
|
|
185
|
+
1. **Crypto utility** — `src/services/security/crypto.util.ts`
|
|
186
|
+
2. **HMAC utility** — `src/services/security/hmac.util.ts` (if HMAC enabled)
|
|
187
|
+
3. **Key service** — `src/services/security/rsa-key.service.ts` or `ec-key.service.ts`
|
|
188
|
+
4. **Types** — `src/services/security/types.ts`
|
|
189
|
+
5. **Updated API service** — patched `api.ts` with encryption/decryption interceptors
|
|
190
|
+
6. **Native bridge** (if Native layer) — `android/app/src/main/kotlin/…/NativeCryptoModule.kt` + `ios/…/NativeCryptoModule.swift`
|
|
191
|
+
7. **Backend alignment doc** — hand-off document for your server team
|
|
192
|
+
|
|
193
|
+
> If the LLM generates a file that already exists (e.g., `api.ts`), ask it to show a diff patch or the specific lines to add, rather than replacing the full file.
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## Step 7 — Wipe Android C++ Cache (if using quick-crypto + Nitro Modules)
|
|
198
|
+
|
|
199
|
+
After installing Nitro-Modules-based packages, the Android `.cxx` build cache must be cleaned:
|
|
200
|
+
|
|
201
|
+
```powershell
|
|
202
|
+
# Windows
|
|
203
|
+
Remove-Item -Recurse -Force "android\app\.cxx"
|
|
204
|
+
Remove-Item -Recurse -Force "android\.gradle"
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
# macOS/Linux
|
|
209
|
+
rm -rf android/app/.cxx android/.gradle
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
Then rebuild:
|
|
213
|
+
```bash
|
|
214
|
+
npx react-native run-android # or your build command
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## Step 8 — Verify TypeScript
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
npx tsc --noEmit
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
Expected: zero errors. Common errors and their fixes are documented in `references/dependency-guidance.md` under "Troubleshooting".
|
|
226
|
+
|
|
227
|
+
If you see errors about missing types for `react-native-quick-crypto`:
|
|
228
|
+
```bash
|
|
229
|
+
npm ls react-native-quick-crypto
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## Step 9 — Security Review
|
|
235
|
+
|
|
236
|
+
Before committing, work through `references/security-checklist.md` and `templates/delivery-checklist.md`. Key items:
|
|
237
|
+
|
|
238
|
+
- All production API calls pass through the encryption interceptor.
|
|
239
|
+
- `EXCLUDED_PATHS` list is correct — no encrypted endpoint missing, no public endpoint accidentally encrypted.
|
|
240
|
+
- Ephemeral EC private keys are discarded after `computeSecret()` is called.
|
|
241
|
+
- AES keys are held in-memory only (not logged, not stored).
|
|
242
|
+
- `react-native-keychain` stores tokens with `ACCESSIBLE_WHEN_UNLOCKED_THIS_DEVICE_ONLY`.
|
|
243
|
+
- HMAC signature is validated server-side.
|
|
244
|
+
- HTTP (non-HTTPS) is blocked at the API layer.
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## Step 10 — Backend Alignment
|
|
249
|
+
|
|
250
|
+
Provide your server team with the output of:
|
|
251
|
+
|
|
252
|
+
> "Generate the backend alignment document for my chosen model (RSA/EC). Use `references/backend-alignment.md` Part A (RSA) or Part B (EC)."
|
|
253
|
+
|
|
254
|
+
This document specifies:
|
|
255
|
+
- Expected request envelope schema (field names, encoding, types)
|
|
256
|
+
- Key format (PKCS#8 PEM for RSA; 65-byte uncompressed P-256 base64 for EC)
|
|
257
|
+
- Nonce format and validation rules
|
|
258
|
+
- Response decryption contract
|
|
259
|
+
- HMAC verification steps
|
|
260
|
+
|
|
261
|
+
Share this with the backend team **before integration testing begins** to avoid contract mismatches.
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
## Adapting to a Different API Client
|
|
266
|
+
|
|
267
|
+
If the target project uses `fetch` or `ky` instead of Axios:
|
|
268
|
+
|
|
269
|
+
1. Replace `api.interceptors.request.use(...)` with a wrapper function that encrypts the body before `fetch()`.
|
|
270
|
+
2. Replace `api.interceptors.response.use(...)` with a wrapper that decrypts the body after `await response.json()`.
|
|
271
|
+
3. The key service, crypto utility, and HMAC utility are client-agnostic — no changes needed there.
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
## Updating the Skill for a New React Native Version
|
|
276
|
+
|
|
277
|
+
When upgrading React Native in an existing project:
|
|
278
|
+
|
|
279
|
+
1. Open `references/dependency-guidance.md` and check the version matrix for the new RN version.
|
|
280
|
+
2. Update `react-native-quick-crypto`, `react-native-nitro-modules`, and `react-native-worklets` to the versions listed.
|
|
281
|
+
3. Wipe the Android `.cxx` cache (Step 7 above) and rebuild.
|
|
282
|
+
4. Run `npx tsc --noEmit` to verify no type changes broke the build.
|