@codyswann/lisa 2.121.1 → 2.123.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.
- package/.claude-plugin/marketplace.json +144 -0
- package/dist/agy/agents-md-installer.d.ts +6 -3
- package/dist/agy/agents-md-installer.d.ts.map +1 -1
- package/dist/agy/agents-md-installer.js +9 -4
- package/dist/agy/agents-md-installer.js.map +1 -1
- package/dist/agy/plugin-installer.d.ts +6 -4
- package/dist/agy/plugin-installer.d.ts.map +1 -1
- package/dist/agy/plugin-installer.js +7 -5
- package/dist/agy/plugin-installer.js.map +1 -1
- package/dist/configs/eslint/expo.d.ts +10 -1
- package/dist/configs/eslint/expo.d.ts.map +1 -1
- package/dist/configs/eslint/expo.js +19 -18
- package/dist/configs/eslint/expo.js.map +1 -1
- package/dist/configs/jest/expo.d.ts +10 -1
- package/dist/configs/jest/expo.d.ts.map +1 -1
- package/dist/configs/jest/expo.js +18 -13
- package/dist/configs/jest/expo.js.map +1 -1
- package/dist/copilot/plugin-installer.d.ts +6 -3
- package/dist/copilot/plugin-installer.d.ts.map +1 -1
- package/dist/copilot/plugin-installer.js +7 -4
- package/dist/copilot/plugin-installer.js.map +1 -1
- package/dist/core/lisa.d.ts +16 -0
- package/dist/core/lisa.d.ts.map +1 -1
- package/dist/core/lisa.js +61 -18
- package/dist/core/lisa.js.map +1 -1
- package/expo/copy-overwrite/eslint.config.ts +6 -0
- package/expo/copy-overwrite/jest.config.ts +10 -0
- package/expo/copy-overwrite/knip.json +24 -2
- package/expo/create-only/jest.config.react-native-mock.js +22 -0
- package/expo/package-lisa/package.lisa.json +37 -36
- package/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +11 -0
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +11 -0
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +11 -0
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/skills/directory-structure/SKILL.md +32 -20
- package/plugins/lisa-expo/skills/directory-structure/scripts/validate_structure.py +15 -6
- package/plugins/lisa-expo-agy/.mcp.json +8 -0
- package/plugins/lisa-expo-agy/THIRD-PARTY-NOTICES.md +57 -0
- package/plugins/lisa-expo-agy/agents/ops-specialist.md +124 -0
- package/plugins/lisa-expo-agy/commands/e2e-coverage-gaps.md +7 -0
- package/plugins/lisa-expo-agy/commands/exploratory-qa.md +7 -0
- package/plugins/lisa-expo-agy/plugin.json +11 -0
- package/plugins/lisa-expo-agy/skills/add-app-clip/SKILL.md +280 -0
- package/plugins/lisa-expo-agy/skills/add-app-clip/references/native-module.md +96 -0
- package/plugins/lisa-expo-agy/skills/apollo-client/SKILL.md +238 -0
- package/plugins/lisa-expo-agy/skills/apollo-client/references/mutation-patterns.md +360 -0
- package/plugins/lisa-expo-agy/skills/atomic-design-gluestack/SKILL.md +360 -0
- package/plugins/lisa-expo-agy/skills/atomic-design-gluestack/references/atomic-levels.md +417 -0
- package/plugins/lisa-expo-agy/skills/atomic-design-gluestack/references/folder-structure.md +257 -0
- package/plugins/lisa-expo-agy/skills/atomic-design-gluestack/references/gluestack-mapping.md +233 -0
- package/plugins/lisa-expo-agy/skills/atomic-design-gluestack/scripts/validate_atomic_structure.py +329 -0
- package/plugins/lisa-expo-agy/skills/building-native-ui/SKILL.md +321 -0
- package/plugins/lisa-expo-agy/skills/building-native-ui/references/animations.md +220 -0
- package/plugins/lisa-expo-agy/skills/building-native-ui/references/controls.md +272 -0
- package/plugins/lisa-expo-agy/skills/building-native-ui/references/form-sheet.md +253 -0
- package/plugins/lisa-expo-agy/skills/building-native-ui/references/gradients.md +106 -0
- package/plugins/lisa-expo-agy/skills/building-native-ui/references/icons.md +213 -0
- package/plugins/lisa-expo-agy/skills/building-native-ui/references/media.md +198 -0
- package/plugins/lisa-expo-agy/skills/building-native-ui/references/route-structure.md +229 -0
- package/plugins/lisa-expo-agy/skills/building-native-ui/references/search.md +248 -0
- package/plugins/lisa-expo-agy/skills/building-native-ui/references/storage.md +121 -0
- package/plugins/lisa-expo-agy/skills/building-native-ui/references/tabs.md +433 -0
- package/plugins/lisa-expo-agy/skills/building-native-ui/references/toolbar-and-headers.md +284 -0
- package/plugins/lisa-expo-agy/skills/building-native-ui/references/visual-effects.md +197 -0
- package/plugins/lisa-expo-agy/skills/building-native-ui/references/webgpu-three.md +605 -0
- package/plugins/lisa-expo-agy/skills/building-native-ui/references/zoom-transitions.md +158 -0
- package/plugins/lisa-expo-agy/skills/container-view-pattern/SKILL.md +299 -0
- package/plugins/lisa-expo-agy/skills/container-view-pattern/references/examples.md +749 -0
- package/plugins/lisa-expo-agy/skills/container-view-pattern/references/patterns.md +318 -0
- package/plugins/lisa-expo-agy/skills/container-view-pattern/scripts/create_component.py +200 -0
- package/plugins/lisa-expo-agy/skills/container-view-pattern/scripts/validate_component.py +209 -0
- package/plugins/lisa-expo-agy/skills/cross-platform-compatibility/SKILL.md +268 -0
- package/plugins/lisa-expo-agy/skills/cross-platform-compatibility/references/common-issues.md +619 -0
- package/plugins/lisa-expo-agy/skills/cross-platform-compatibility/references/file-extensions.md +340 -0
- package/plugins/lisa-expo-agy/skills/cross-platform-compatibility/references/platform-api.md +276 -0
- package/plugins/lisa-expo-agy/skills/cross-platform-compatibility/scripts/validate_cross_platform.py +416 -0
- package/plugins/lisa-expo-agy/skills/directory-structure/SKILL.md +214 -0
- package/plugins/lisa-expo-agy/skills/directory-structure/scripts/validate_structure.py +454 -0
- package/plugins/lisa-expo-agy/skills/e2e-coverage-gaps/SKILL.md +105 -0
- package/plugins/lisa-expo-agy/skills/eas-update-insights/SKILL.md +228 -0
- package/plugins/lisa-expo-agy/skills/eas-update-insights/references/channel-insights-schema.md +47 -0
- package/plugins/lisa-expo-agy/skills/eas-update-insights/references/update-insights-schema.md +69 -0
- package/plugins/lisa-expo-agy/skills/exploratory-qa/SKILL.md +145 -0
- package/plugins/lisa-expo-agy/skills/expo-api-routes/SKILL.md +369 -0
- package/plugins/lisa-expo-agy/skills/expo-brownfield/SKILL.md +54 -0
- package/plugins/lisa-expo-agy/skills/expo-brownfield/references/brownfield-integrated.md +526 -0
- package/plugins/lisa-expo-agy/skills/expo-brownfield/references/brownfield-isolated.md +402 -0
- package/plugins/lisa-expo-agy/skills/expo-brownfield/references/comparison.md +63 -0
- package/plugins/lisa-expo-agy/skills/expo-brownfield/references/troubleshooting.md +88 -0
- package/plugins/lisa-expo-agy/skills/expo-cicd-workflows/SKILL.md +92 -0
- package/plugins/lisa-expo-agy/skills/expo-cicd-workflows/scripts/fetch.js +113 -0
- package/plugins/lisa-expo-agy/skills/expo-cicd-workflows/scripts/package.json +11 -0
- package/plugins/lisa-expo-agy/skills/expo-cicd-workflows/scripts/validate.js +85 -0
- package/plugins/lisa-expo-agy/skills/expo-deployment/SKILL.md +190 -0
- package/plugins/lisa-expo-agy/skills/expo-deployment/references/app-store-metadata.md +479 -0
- package/plugins/lisa-expo-agy/skills/expo-deployment/references/ios-app-store.md +355 -0
- package/plugins/lisa-expo-agy/skills/expo-deployment/references/play-store.md +246 -0
- package/plugins/lisa-expo-agy/skills/expo-deployment/references/testflight.md +58 -0
- package/plugins/lisa-expo-agy/skills/expo-deployment/references/workflows.md +200 -0
- package/plugins/lisa-expo-agy/skills/expo-dev-client/SKILL.md +164 -0
- package/plugins/lisa-expo-agy/skills/expo-env-config/SKILL.md +309 -0
- package/plugins/lisa-expo-agy/skills/expo-env-config/references/validation-patterns.md +417 -0
- package/plugins/lisa-expo-agy/skills/expo-module/SKILL.md +141 -0
- package/plugins/lisa-expo-agy/skills/expo-module/references/config-plugin.md +90 -0
- package/plugins/lisa-expo-agy/skills/expo-module/references/create-expo-module.md +206 -0
- package/plugins/lisa-expo-agy/skills/expo-module/references/lifecycle.md +127 -0
- package/plugins/lisa-expo-agy/skills/expo-module/references/module-config.md +48 -0
- package/plugins/lisa-expo-agy/skills/expo-module/references/native-module.md +286 -0
- package/plugins/lisa-expo-agy/skills/expo-module/references/native-view.md +171 -0
- package/plugins/lisa-expo-agy/skills/expo-router-best-practices/SKILL.md +431 -0
- package/plugins/lisa-expo-agy/skills/expo-router-best-practices/references/official-docs.md +290 -0
- package/plugins/lisa-expo-agy/skills/expo-router-best-practices/scripts/generate-route.py +171 -0
- package/plugins/lisa-expo-agy/skills/expo-tailwind-setup/SKILL.md +480 -0
- package/plugins/lisa-expo-agy/skills/expo-ui-jetpack-compose/SKILL.md +40 -0
- package/plugins/lisa-expo-agy/skills/expo-ui-swift-ui/SKILL.md +39 -0
- package/plugins/lisa-expo-agy/skills/gluestack-nativewind/SKILL.md +411 -0
- package/plugins/lisa-expo-agy/skills/gluestack-nativewind/references/color-tokens.md +343 -0
- package/plugins/lisa-expo-agy/skills/gluestack-nativewind/references/component-mapping.md +307 -0
- package/plugins/lisa-expo-agy/skills/gluestack-nativewind/references/spacing-scale.md +300 -0
- package/plugins/lisa-expo-agy/skills/gluestack-nativewind/scripts/validate_styling.py +315 -0
- package/plugins/lisa-expo-agy/skills/jira-add-journey/SKILL.md +126 -0
- package/plugins/lisa-expo-agy/skills/jira-create/SKILL.md +161 -0
- package/plugins/lisa-expo-agy/skills/jira-evidence/SKILL.md +78 -0
- package/plugins/lisa-expo-agy/skills/jira-evidence/scripts/post-evidence.sh +163 -0
- package/plugins/lisa-expo-agy/skills/jira-journey/SKILL.md +190 -0
- package/plugins/lisa-expo-agy/skills/jira-journey/scripts/generate-templates.py +281 -0
- package/plugins/lisa-expo-agy/skills/jira-journey/scripts/parse-plan.py +368 -0
- package/plugins/lisa-expo-agy/skills/jira-verify/SKILL.md +27 -0
- package/plugins/lisa-expo-agy/skills/local-state/SKILL.md +362 -0
- package/plugins/lisa-expo-agy/skills/local-state/references/async-storage.md +505 -0
- package/plugins/lisa-expo-agy/skills/local-state/references/persistence-patterns.md +711 -0
- package/plugins/lisa-expo-agy/skills/local-state/references/reactive-variables.md +446 -0
- package/plugins/lisa-expo-agy/skills/native-data-fetching/SKILL.md +507 -0
- package/plugins/lisa-expo-agy/skills/native-data-fetching/references/expo-router-loaders.md +344 -0
- package/plugins/lisa-expo-agy/skills/ops-browser-uat/SKILL.md +124 -0
- package/plugins/lisa-expo-agy/skills/ops-check-logs/SKILL.md +211 -0
- package/plugins/lisa-expo-agy/skills/ops-db-ops/SKILL.md +119 -0
- package/plugins/lisa-expo-agy/skills/ops-deploy/SKILL.md +119 -0
- package/plugins/lisa-expo-agy/skills/ops-monitor-errors/SKILL.md +99 -0
- package/plugins/lisa-expo-agy/skills/ops-performance/SKILL.md +165 -0
- package/plugins/lisa-expo-agy/skills/ops-run-local/SKILL.md +166 -0
- package/plugins/lisa-expo-agy/skills/ops-verify-health/SKILL.md +101 -0
- package/plugins/lisa-expo-agy/skills/owasp-zap/SKILL.md +56 -0
- package/plugins/lisa-expo-agy/skills/playwright-ci-debugging/SKILL.md +140 -0
- package/plugins/lisa-expo-agy/skills/playwright-selectors/SKILL.md +455 -0
- package/plugins/lisa-expo-agy/skills/reduce-complexity/SKILL.md +251 -0
- package/plugins/lisa-expo-agy/skills/reduce-complexity/references/extraction-strategies.md +456 -0
- package/plugins/lisa-expo-agy/skills/reduce-complexity/references/refactoring-patterns.md +557 -0
- package/plugins/lisa-expo-agy/skills/testing-library/SKILL.md +314 -0
- package/plugins/lisa-expo-agy/skills/testing-library/references/async-patterns.md +420 -0
- package/plugins/lisa-expo-agy/skills/testing-library/references/expo-router-testing.md +556 -0
- package/plugins/lisa-expo-agy/skills/testing-library/references/mocking-patterns.md +590 -0
- package/plugins/lisa-expo-agy/skills/testing-library/references/query-priority.md +291 -0
- package/plugins/lisa-expo-agy/skills/upgrading-expo/SKILL.md +134 -0
- package/plugins/lisa-expo-agy/skills/upgrading-expo/references/expo-av-to-audio.md +132 -0
- package/plugins/lisa-expo-agy/skills/upgrading-expo/references/expo-av-to-video.md +160 -0
- package/plugins/lisa-expo-agy/skills/upgrading-expo/references/native-tabs.md +124 -0
- package/plugins/lisa-expo-agy/skills/upgrading-expo/references/new-architecture.md +79 -0
- package/plugins/lisa-expo-agy/skills/upgrading-expo/references/react-19.md +79 -0
- package/plugins/lisa-expo-agy/skills/upgrading-expo/references/react-compiler.md +59 -0
- package/plugins/lisa-expo-agy/skills/upgrading-expo/references/react-navigation-to-expo-router.md +61 -0
- package/plugins/lisa-expo-agy/skills/use-dom/SKILL.md +417 -0
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +11 -0
- package/plugins/lisa-expo-copilot/.mcp.json +8 -0
- package/plugins/lisa-expo-copilot/THIRD-PARTY-NOTICES.md +57 -0
- package/plugins/lisa-expo-copilot/agents/ops-specialist.agent.md +124 -0
- package/plugins/lisa-expo-copilot/commands/e2e-coverage-gaps.md +7 -0
- package/plugins/lisa-expo-copilot/commands/exploratory-qa.md +7 -0
- package/plugins/lisa-expo-copilot/skills/add-app-clip/SKILL.md +280 -0
- package/plugins/lisa-expo-copilot/skills/add-app-clip/references/native-module.md +96 -0
- package/plugins/lisa-expo-copilot/skills/apollo-client/SKILL.md +238 -0
- package/plugins/lisa-expo-copilot/skills/apollo-client/references/mutation-patterns.md +360 -0
- package/plugins/lisa-expo-copilot/skills/atomic-design-gluestack/SKILL.md +360 -0
- package/plugins/lisa-expo-copilot/skills/atomic-design-gluestack/references/atomic-levels.md +417 -0
- package/plugins/lisa-expo-copilot/skills/atomic-design-gluestack/references/folder-structure.md +257 -0
- package/plugins/lisa-expo-copilot/skills/atomic-design-gluestack/references/gluestack-mapping.md +233 -0
- package/plugins/lisa-expo-copilot/skills/atomic-design-gluestack/scripts/validate_atomic_structure.py +329 -0
- package/plugins/lisa-expo-copilot/skills/building-native-ui/SKILL.md +321 -0
- package/plugins/lisa-expo-copilot/skills/building-native-ui/references/animations.md +220 -0
- package/plugins/lisa-expo-copilot/skills/building-native-ui/references/controls.md +272 -0
- package/plugins/lisa-expo-copilot/skills/building-native-ui/references/form-sheet.md +253 -0
- package/plugins/lisa-expo-copilot/skills/building-native-ui/references/gradients.md +106 -0
- package/plugins/lisa-expo-copilot/skills/building-native-ui/references/icons.md +213 -0
- package/plugins/lisa-expo-copilot/skills/building-native-ui/references/media.md +198 -0
- package/plugins/lisa-expo-copilot/skills/building-native-ui/references/route-structure.md +229 -0
- package/plugins/lisa-expo-copilot/skills/building-native-ui/references/search.md +248 -0
- package/plugins/lisa-expo-copilot/skills/building-native-ui/references/storage.md +121 -0
- package/plugins/lisa-expo-copilot/skills/building-native-ui/references/tabs.md +433 -0
- package/plugins/lisa-expo-copilot/skills/building-native-ui/references/toolbar-and-headers.md +284 -0
- package/plugins/lisa-expo-copilot/skills/building-native-ui/references/visual-effects.md +197 -0
- package/plugins/lisa-expo-copilot/skills/building-native-ui/references/webgpu-three.md +605 -0
- package/plugins/lisa-expo-copilot/skills/building-native-ui/references/zoom-transitions.md +158 -0
- package/plugins/lisa-expo-copilot/skills/container-view-pattern/SKILL.md +299 -0
- package/plugins/lisa-expo-copilot/skills/container-view-pattern/references/examples.md +749 -0
- package/plugins/lisa-expo-copilot/skills/container-view-pattern/references/patterns.md +318 -0
- package/plugins/lisa-expo-copilot/skills/container-view-pattern/scripts/create_component.py +200 -0
- package/plugins/lisa-expo-copilot/skills/container-view-pattern/scripts/validate_component.py +209 -0
- package/plugins/lisa-expo-copilot/skills/cross-platform-compatibility/SKILL.md +268 -0
- package/plugins/lisa-expo-copilot/skills/cross-platform-compatibility/references/common-issues.md +619 -0
- package/plugins/lisa-expo-copilot/skills/cross-platform-compatibility/references/file-extensions.md +340 -0
- package/plugins/lisa-expo-copilot/skills/cross-platform-compatibility/references/platform-api.md +276 -0
- package/plugins/lisa-expo-copilot/skills/cross-platform-compatibility/scripts/validate_cross_platform.py +416 -0
- package/plugins/lisa-expo-copilot/skills/directory-structure/SKILL.md +214 -0
- package/plugins/lisa-expo-copilot/skills/directory-structure/scripts/validate_structure.py +454 -0
- package/plugins/lisa-expo-copilot/skills/e2e-coverage-gaps/SKILL.md +105 -0
- package/plugins/lisa-expo-copilot/skills/eas-update-insights/SKILL.md +228 -0
- package/plugins/lisa-expo-copilot/skills/eas-update-insights/references/channel-insights-schema.md +47 -0
- package/plugins/lisa-expo-copilot/skills/eas-update-insights/references/update-insights-schema.md +69 -0
- package/plugins/lisa-expo-copilot/skills/exploratory-qa/SKILL.md +145 -0
- package/plugins/lisa-expo-copilot/skills/expo-api-routes/SKILL.md +369 -0
- package/plugins/lisa-expo-copilot/skills/expo-brownfield/SKILL.md +54 -0
- package/plugins/lisa-expo-copilot/skills/expo-brownfield/references/brownfield-integrated.md +526 -0
- package/plugins/lisa-expo-copilot/skills/expo-brownfield/references/brownfield-isolated.md +402 -0
- package/plugins/lisa-expo-copilot/skills/expo-brownfield/references/comparison.md +63 -0
- package/plugins/lisa-expo-copilot/skills/expo-brownfield/references/troubleshooting.md +88 -0
- package/plugins/lisa-expo-copilot/skills/expo-cicd-workflows/SKILL.md +92 -0
- package/plugins/lisa-expo-copilot/skills/expo-cicd-workflows/scripts/fetch.js +113 -0
- package/plugins/lisa-expo-copilot/skills/expo-cicd-workflows/scripts/package.json +11 -0
- package/plugins/lisa-expo-copilot/skills/expo-cicd-workflows/scripts/validate.js +85 -0
- package/plugins/lisa-expo-copilot/skills/expo-deployment/SKILL.md +190 -0
- package/plugins/lisa-expo-copilot/skills/expo-deployment/references/app-store-metadata.md +479 -0
- package/plugins/lisa-expo-copilot/skills/expo-deployment/references/ios-app-store.md +355 -0
- package/plugins/lisa-expo-copilot/skills/expo-deployment/references/play-store.md +246 -0
- package/plugins/lisa-expo-copilot/skills/expo-deployment/references/testflight.md +58 -0
- package/plugins/lisa-expo-copilot/skills/expo-deployment/references/workflows.md +200 -0
- package/plugins/lisa-expo-copilot/skills/expo-dev-client/SKILL.md +164 -0
- package/plugins/lisa-expo-copilot/skills/expo-env-config/SKILL.md +309 -0
- package/plugins/lisa-expo-copilot/skills/expo-env-config/references/validation-patterns.md +417 -0
- package/plugins/lisa-expo-copilot/skills/expo-module/SKILL.md +141 -0
- package/plugins/lisa-expo-copilot/skills/expo-module/references/config-plugin.md +90 -0
- package/plugins/lisa-expo-copilot/skills/expo-module/references/create-expo-module.md +206 -0
- package/plugins/lisa-expo-copilot/skills/expo-module/references/lifecycle.md +127 -0
- package/plugins/lisa-expo-copilot/skills/expo-module/references/module-config.md +48 -0
- package/plugins/lisa-expo-copilot/skills/expo-module/references/native-module.md +286 -0
- package/plugins/lisa-expo-copilot/skills/expo-module/references/native-view.md +171 -0
- package/plugins/lisa-expo-copilot/skills/expo-router-best-practices/SKILL.md +431 -0
- package/plugins/lisa-expo-copilot/skills/expo-router-best-practices/references/official-docs.md +290 -0
- package/plugins/lisa-expo-copilot/skills/expo-router-best-practices/scripts/generate-route.py +171 -0
- package/plugins/lisa-expo-copilot/skills/expo-tailwind-setup/SKILL.md +480 -0
- package/plugins/lisa-expo-copilot/skills/expo-ui-jetpack-compose/SKILL.md +40 -0
- package/plugins/lisa-expo-copilot/skills/expo-ui-swift-ui/SKILL.md +39 -0
- package/plugins/lisa-expo-copilot/skills/gluestack-nativewind/SKILL.md +411 -0
- package/plugins/lisa-expo-copilot/skills/gluestack-nativewind/references/color-tokens.md +343 -0
- package/plugins/lisa-expo-copilot/skills/gluestack-nativewind/references/component-mapping.md +307 -0
- package/plugins/lisa-expo-copilot/skills/gluestack-nativewind/references/spacing-scale.md +300 -0
- package/plugins/lisa-expo-copilot/skills/gluestack-nativewind/scripts/validate_styling.py +315 -0
- package/plugins/lisa-expo-copilot/skills/jira-add-journey/SKILL.md +126 -0
- package/plugins/lisa-expo-copilot/skills/jira-create/SKILL.md +161 -0
- package/plugins/lisa-expo-copilot/skills/jira-evidence/SKILL.md +78 -0
- package/plugins/lisa-expo-copilot/skills/jira-evidence/scripts/post-evidence.sh +163 -0
- package/plugins/lisa-expo-copilot/skills/jira-journey/SKILL.md +190 -0
- package/plugins/lisa-expo-copilot/skills/jira-journey/scripts/generate-templates.py +281 -0
- package/plugins/lisa-expo-copilot/skills/jira-journey/scripts/parse-plan.py +368 -0
- package/plugins/lisa-expo-copilot/skills/jira-verify/SKILL.md +27 -0
- package/plugins/lisa-expo-copilot/skills/local-state/SKILL.md +362 -0
- package/plugins/lisa-expo-copilot/skills/local-state/references/async-storage.md +505 -0
- package/plugins/lisa-expo-copilot/skills/local-state/references/persistence-patterns.md +711 -0
- package/plugins/lisa-expo-copilot/skills/local-state/references/reactive-variables.md +446 -0
- package/plugins/lisa-expo-copilot/skills/native-data-fetching/SKILL.md +507 -0
- package/plugins/lisa-expo-copilot/skills/native-data-fetching/references/expo-router-loaders.md +344 -0
- package/plugins/lisa-expo-copilot/skills/ops-browser-uat/SKILL.md +124 -0
- package/plugins/lisa-expo-copilot/skills/ops-check-logs/SKILL.md +211 -0
- package/plugins/lisa-expo-copilot/skills/ops-db-ops/SKILL.md +119 -0
- package/plugins/lisa-expo-copilot/skills/ops-deploy/SKILL.md +119 -0
- package/plugins/lisa-expo-copilot/skills/ops-monitor-errors/SKILL.md +99 -0
- package/plugins/lisa-expo-copilot/skills/ops-performance/SKILL.md +165 -0
- package/plugins/lisa-expo-copilot/skills/ops-run-local/SKILL.md +166 -0
- package/plugins/lisa-expo-copilot/skills/ops-verify-health/SKILL.md +101 -0
- package/plugins/lisa-expo-copilot/skills/owasp-zap/SKILL.md +56 -0
- package/plugins/lisa-expo-copilot/skills/playwright-ci-debugging/SKILL.md +140 -0
- package/plugins/lisa-expo-copilot/skills/playwright-selectors/SKILL.md +455 -0
- package/plugins/lisa-expo-copilot/skills/reduce-complexity/SKILL.md +251 -0
- package/plugins/lisa-expo-copilot/skills/reduce-complexity/references/extraction-strategies.md +456 -0
- package/plugins/lisa-expo-copilot/skills/reduce-complexity/references/refactoring-patterns.md +557 -0
- package/plugins/lisa-expo-copilot/skills/testing-library/SKILL.md +314 -0
- package/plugins/lisa-expo-copilot/skills/testing-library/references/async-patterns.md +420 -0
- package/plugins/lisa-expo-copilot/skills/testing-library/references/expo-router-testing.md +556 -0
- package/plugins/lisa-expo-copilot/skills/testing-library/references/mocking-patterns.md +590 -0
- package/plugins/lisa-expo-copilot/skills/testing-library/references/query-priority.md +291 -0
- package/plugins/lisa-expo-copilot/skills/upgrading-expo/SKILL.md +134 -0
- package/plugins/lisa-expo-copilot/skills/upgrading-expo/references/expo-av-to-audio.md +132 -0
- package/plugins/lisa-expo-copilot/skills/upgrading-expo/references/expo-av-to-video.md +160 -0
- package/plugins/lisa-expo-copilot/skills/upgrading-expo/references/native-tabs.md +124 -0
- package/plugins/lisa-expo-copilot/skills/upgrading-expo/references/new-architecture.md +79 -0
- package/plugins/lisa-expo-copilot/skills/upgrading-expo/references/react-19.md +79 -0
- package/plugins/lisa-expo-copilot/skills/upgrading-expo/references/react-compiler.md +59 -0
- package/plugins/lisa-expo-copilot/skills/upgrading-expo/references/react-navigation-to-expo-router.md +61 -0
- package/plugins/lisa-expo-copilot/skills/use-dom/SKILL.md +417 -0
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +11 -0
- package/plugins/lisa-expo-cursor/.mcp.json +8 -0
- package/plugins/lisa-expo-cursor/THIRD-PARTY-NOTICES.md +57 -0
- package/plugins/lisa-expo-cursor/agents/ops-specialist.md +124 -0
- package/plugins/lisa-expo-cursor/commands/e2e-coverage-gaps.md +7 -0
- package/plugins/lisa-expo-cursor/commands/exploratory-qa.md +7 -0
- package/plugins/lisa-expo-cursor/skills/add-app-clip/SKILL.md +280 -0
- package/plugins/lisa-expo-cursor/skills/add-app-clip/references/native-module.md +96 -0
- package/plugins/lisa-expo-cursor/skills/apollo-client/SKILL.md +238 -0
- package/plugins/lisa-expo-cursor/skills/apollo-client/references/mutation-patterns.md +360 -0
- package/plugins/lisa-expo-cursor/skills/atomic-design-gluestack/SKILL.md +360 -0
- package/plugins/lisa-expo-cursor/skills/atomic-design-gluestack/references/atomic-levels.md +417 -0
- package/plugins/lisa-expo-cursor/skills/atomic-design-gluestack/references/folder-structure.md +257 -0
- package/plugins/lisa-expo-cursor/skills/atomic-design-gluestack/references/gluestack-mapping.md +233 -0
- package/plugins/lisa-expo-cursor/skills/atomic-design-gluestack/scripts/validate_atomic_structure.py +329 -0
- package/plugins/lisa-expo-cursor/skills/building-native-ui/SKILL.md +321 -0
- package/plugins/lisa-expo-cursor/skills/building-native-ui/references/animations.md +220 -0
- package/plugins/lisa-expo-cursor/skills/building-native-ui/references/controls.md +272 -0
- package/plugins/lisa-expo-cursor/skills/building-native-ui/references/form-sheet.md +253 -0
- package/plugins/lisa-expo-cursor/skills/building-native-ui/references/gradients.md +106 -0
- package/plugins/lisa-expo-cursor/skills/building-native-ui/references/icons.md +213 -0
- package/plugins/lisa-expo-cursor/skills/building-native-ui/references/media.md +198 -0
- package/plugins/lisa-expo-cursor/skills/building-native-ui/references/route-structure.md +229 -0
- package/plugins/lisa-expo-cursor/skills/building-native-ui/references/search.md +248 -0
- package/plugins/lisa-expo-cursor/skills/building-native-ui/references/storage.md +121 -0
- package/plugins/lisa-expo-cursor/skills/building-native-ui/references/tabs.md +433 -0
- package/plugins/lisa-expo-cursor/skills/building-native-ui/references/toolbar-and-headers.md +284 -0
- package/plugins/lisa-expo-cursor/skills/building-native-ui/references/visual-effects.md +197 -0
- package/plugins/lisa-expo-cursor/skills/building-native-ui/references/webgpu-three.md +605 -0
- package/plugins/lisa-expo-cursor/skills/building-native-ui/references/zoom-transitions.md +158 -0
- package/plugins/lisa-expo-cursor/skills/container-view-pattern/SKILL.md +299 -0
- package/plugins/lisa-expo-cursor/skills/container-view-pattern/references/examples.md +749 -0
- package/plugins/lisa-expo-cursor/skills/container-view-pattern/references/patterns.md +318 -0
- package/plugins/lisa-expo-cursor/skills/container-view-pattern/scripts/create_component.py +200 -0
- package/plugins/lisa-expo-cursor/skills/container-view-pattern/scripts/validate_component.py +209 -0
- package/plugins/lisa-expo-cursor/skills/cross-platform-compatibility/SKILL.md +268 -0
- package/plugins/lisa-expo-cursor/skills/cross-platform-compatibility/references/common-issues.md +619 -0
- package/plugins/lisa-expo-cursor/skills/cross-platform-compatibility/references/file-extensions.md +340 -0
- package/plugins/lisa-expo-cursor/skills/cross-platform-compatibility/references/platform-api.md +276 -0
- package/plugins/lisa-expo-cursor/skills/cross-platform-compatibility/scripts/validate_cross_platform.py +416 -0
- package/plugins/lisa-expo-cursor/skills/directory-structure/SKILL.md +214 -0
- package/plugins/lisa-expo-cursor/skills/directory-structure/scripts/validate_structure.py +454 -0
- package/plugins/lisa-expo-cursor/skills/e2e-coverage-gaps/SKILL.md +105 -0
- package/plugins/lisa-expo-cursor/skills/eas-update-insights/SKILL.md +228 -0
- package/plugins/lisa-expo-cursor/skills/eas-update-insights/references/channel-insights-schema.md +47 -0
- package/plugins/lisa-expo-cursor/skills/eas-update-insights/references/update-insights-schema.md +69 -0
- package/plugins/lisa-expo-cursor/skills/exploratory-qa/SKILL.md +145 -0
- package/plugins/lisa-expo-cursor/skills/expo-api-routes/SKILL.md +369 -0
- package/plugins/lisa-expo-cursor/skills/expo-brownfield/SKILL.md +54 -0
- package/plugins/lisa-expo-cursor/skills/expo-brownfield/references/brownfield-integrated.md +526 -0
- package/plugins/lisa-expo-cursor/skills/expo-brownfield/references/brownfield-isolated.md +402 -0
- package/plugins/lisa-expo-cursor/skills/expo-brownfield/references/comparison.md +63 -0
- package/plugins/lisa-expo-cursor/skills/expo-brownfield/references/troubleshooting.md +88 -0
- package/plugins/lisa-expo-cursor/skills/expo-cicd-workflows/SKILL.md +92 -0
- package/plugins/lisa-expo-cursor/skills/expo-cicd-workflows/scripts/fetch.js +113 -0
- package/plugins/lisa-expo-cursor/skills/expo-cicd-workflows/scripts/package.json +11 -0
- package/plugins/lisa-expo-cursor/skills/expo-cicd-workflows/scripts/validate.js +85 -0
- package/plugins/lisa-expo-cursor/skills/expo-deployment/SKILL.md +190 -0
- package/plugins/lisa-expo-cursor/skills/expo-deployment/references/app-store-metadata.md +479 -0
- package/plugins/lisa-expo-cursor/skills/expo-deployment/references/ios-app-store.md +355 -0
- package/plugins/lisa-expo-cursor/skills/expo-deployment/references/play-store.md +246 -0
- package/plugins/lisa-expo-cursor/skills/expo-deployment/references/testflight.md +58 -0
- package/plugins/lisa-expo-cursor/skills/expo-deployment/references/workflows.md +200 -0
- package/plugins/lisa-expo-cursor/skills/expo-dev-client/SKILL.md +164 -0
- package/plugins/lisa-expo-cursor/skills/expo-env-config/SKILL.md +309 -0
- package/plugins/lisa-expo-cursor/skills/expo-env-config/references/validation-patterns.md +417 -0
- package/plugins/lisa-expo-cursor/skills/expo-module/SKILL.md +141 -0
- package/plugins/lisa-expo-cursor/skills/expo-module/references/config-plugin.md +90 -0
- package/plugins/lisa-expo-cursor/skills/expo-module/references/create-expo-module.md +206 -0
- package/plugins/lisa-expo-cursor/skills/expo-module/references/lifecycle.md +127 -0
- package/plugins/lisa-expo-cursor/skills/expo-module/references/module-config.md +48 -0
- package/plugins/lisa-expo-cursor/skills/expo-module/references/native-module.md +286 -0
- package/plugins/lisa-expo-cursor/skills/expo-module/references/native-view.md +171 -0
- package/plugins/lisa-expo-cursor/skills/expo-router-best-practices/SKILL.md +431 -0
- package/plugins/lisa-expo-cursor/skills/expo-router-best-practices/references/official-docs.md +290 -0
- package/plugins/lisa-expo-cursor/skills/expo-router-best-practices/scripts/generate-route.py +171 -0
- package/plugins/lisa-expo-cursor/skills/expo-tailwind-setup/SKILL.md +480 -0
- package/plugins/lisa-expo-cursor/skills/expo-ui-jetpack-compose/SKILL.md +40 -0
- package/plugins/lisa-expo-cursor/skills/expo-ui-swift-ui/SKILL.md +39 -0
- package/plugins/lisa-expo-cursor/skills/gluestack-nativewind/SKILL.md +411 -0
- package/plugins/lisa-expo-cursor/skills/gluestack-nativewind/references/color-tokens.md +343 -0
- package/plugins/lisa-expo-cursor/skills/gluestack-nativewind/references/component-mapping.md +307 -0
- package/plugins/lisa-expo-cursor/skills/gluestack-nativewind/references/spacing-scale.md +300 -0
- package/plugins/lisa-expo-cursor/skills/gluestack-nativewind/scripts/validate_styling.py +315 -0
- package/plugins/lisa-expo-cursor/skills/jira-add-journey/SKILL.md +126 -0
- package/plugins/lisa-expo-cursor/skills/jira-create/SKILL.md +161 -0
- package/plugins/lisa-expo-cursor/skills/jira-evidence/SKILL.md +78 -0
- package/plugins/lisa-expo-cursor/skills/jira-evidence/scripts/post-evidence.sh +163 -0
- package/plugins/lisa-expo-cursor/skills/jira-journey/SKILL.md +190 -0
- package/plugins/lisa-expo-cursor/skills/jira-journey/scripts/generate-templates.py +281 -0
- package/plugins/lisa-expo-cursor/skills/jira-journey/scripts/parse-plan.py +368 -0
- package/plugins/lisa-expo-cursor/skills/jira-verify/SKILL.md +27 -0
- package/plugins/lisa-expo-cursor/skills/local-state/SKILL.md +362 -0
- package/plugins/lisa-expo-cursor/skills/local-state/references/async-storage.md +505 -0
- package/plugins/lisa-expo-cursor/skills/local-state/references/persistence-patterns.md +711 -0
- package/plugins/lisa-expo-cursor/skills/local-state/references/reactive-variables.md +446 -0
- package/plugins/lisa-expo-cursor/skills/native-data-fetching/SKILL.md +507 -0
- package/plugins/lisa-expo-cursor/skills/native-data-fetching/references/expo-router-loaders.md +344 -0
- package/plugins/lisa-expo-cursor/skills/ops-browser-uat/SKILL.md +124 -0
- package/plugins/lisa-expo-cursor/skills/ops-check-logs/SKILL.md +211 -0
- package/plugins/lisa-expo-cursor/skills/ops-db-ops/SKILL.md +119 -0
- package/plugins/lisa-expo-cursor/skills/ops-deploy/SKILL.md +119 -0
- package/plugins/lisa-expo-cursor/skills/ops-monitor-errors/SKILL.md +99 -0
- package/plugins/lisa-expo-cursor/skills/ops-performance/SKILL.md +165 -0
- package/plugins/lisa-expo-cursor/skills/ops-run-local/SKILL.md +166 -0
- package/plugins/lisa-expo-cursor/skills/ops-verify-health/SKILL.md +101 -0
- package/plugins/lisa-expo-cursor/skills/owasp-zap/SKILL.md +56 -0
- package/plugins/lisa-expo-cursor/skills/playwright-ci-debugging/SKILL.md +140 -0
- package/plugins/lisa-expo-cursor/skills/playwright-selectors/SKILL.md +455 -0
- package/plugins/lisa-expo-cursor/skills/reduce-complexity/SKILL.md +251 -0
- package/plugins/lisa-expo-cursor/skills/reduce-complexity/references/extraction-strategies.md +456 -0
- package/plugins/lisa-expo-cursor/skills/reduce-complexity/references/refactoring-patterns.md +557 -0
- package/plugins/lisa-expo-cursor/skills/testing-library/SKILL.md +314 -0
- package/plugins/lisa-expo-cursor/skills/testing-library/references/async-patterns.md +420 -0
- package/plugins/lisa-expo-cursor/skills/testing-library/references/expo-router-testing.md +556 -0
- package/plugins/lisa-expo-cursor/skills/testing-library/references/mocking-patterns.md +590 -0
- package/plugins/lisa-expo-cursor/skills/testing-library/references/query-priority.md +291 -0
- package/plugins/lisa-expo-cursor/skills/upgrading-expo/SKILL.md +134 -0
- package/plugins/lisa-expo-cursor/skills/upgrading-expo/references/expo-av-to-audio.md +132 -0
- package/plugins/lisa-expo-cursor/skills/upgrading-expo/references/expo-av-to-video.md +160 -0
- package/plugins/lisa-expo-cursor/skills/upgrading-expo/references/native-tabs.md +124 -0
- package/plugins/lisa-expo-cursor/skills/upgrading-expo/references/new-architecture.md +79 -0
- package/plugins/lisa-expo-cursor/skills/upgrading-expo/references/react-19.md +79 -0
- package/plugins/lisa-expo-cursor/skills/upgrading-expo/references/react-compiler.md +59 -0
- package/plugins/lisa-expo-cursor/skills/upgrading-expo/references/react-navigation-to-expo-router.md +61 -0
- package/plugins/lisa-expo-cursor/skills/use-dom/SKILL.md +417 -0
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-agy/commands/e2e-coverage-gaps.md +7 -0
- package/plugins/lisa-harper-fabric-agy/commands/exploratory-qa.md +7 -0
- package/plugins/lisa-harper-fabric-agy/plugin.json +11 -0
- package/plugins/lisa-harper-fabric-agy/skills/e2e-coverage-gaps/SKILL.md +105 -0
- package/plugins/lisa-harper-fabric-agy/skills/exploratory-qa/SKILL.md +145 -0
- package/plugins/lisa-harper-fabric-agy/skills/harper-build-and-deploy/SKILL.md +101 -0
- package/plugins/lisa-harper-fabric-agy/skills/harper-component-model/SKILL.md +87 -0
- package/plugins/lisa-harper-fabric-agy/skills/harper-config-yaml/SKILL.md +107 -0
- package/plugins/lisa-harper-fabric-agy/skills/harper-resources/SKILL.md +106 -0
- package/plugins/lisa-harper-fabric-agy/skills/harper-schema-graphql/SKILL.md +72 -0
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +35 -0
- package/plugins/lisa-harper-fabric-copilot/commands/e2e-coverage-gaps.md +7 -0
- package/plugins/lisa-harper-fabric-copilot/commands/exploratory-qa.md +7 -0
- package/plugins/lisa-harper-fabric-copilot/hooks/inject-rules.sh +16 -0
- package/plugins/lisa-harper-fabric-copilot/rules/harper-fabric.md +51 -0
- package/plugins/lisa-harper-fabric-copilot/skills/e2e-coverage-gaps/SKILL.md +105 -0
- package/plugins/lisa-harper-fabric-copilot/skills/exploratory-qa/SKILL.md +145 -0
- package/plugins/lisa-harper-fabric-copilot/skills/harper-build-and-deploy/SKILL.md +101 -0
- package/plugins/lisa-harper-fabric-copilot/skills/harper-component-model/SKILL.md +87 -0
- package/plugins/lisa-harper-fabric-copilot/skills/harper-config-yaml/SKILL.md +107 -0
- package/plugins/lisa-harper-fabric-copilot/skills/harper-resources/SKILL.md +106 -0
- package/plugins/lisa-harper-fabric-copilot/skills/harper-schema-graphql/SKILL.md +72 -0
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +11 -0
- package/plugins/lisa-harper-fabric-cursor/commands/e2e-coverage-gaps.md +7 -0
- package/plugins/lisa-harper-fabric-cursor/commands/exploratory-qa.md +7 -0
- package/plugins/lisa-harper-fabric-cursor/rules/harper-fabric.md +51 -0
- package/plugins/lisa-harper-fabric-cursor/skills/e2e-coverage-gaps/SKILL.md +105 -0
- package/plugins/lisa-harper-fabric-cursor/skills/exploratory-qa/SKILL.md +145 -0
- package/plugins/lisa-harper-fabric-cursor/skills/harper-build-and-deploy/SKILL.md +101 -0
- package/plugins/lisa-harper-fabric-cursor/skills/harper-component-model/SKILL.md +87 -0
- package/plugins/lisa-harper-fabric-cursor/skills/harper-config-yaml/SKILL.md +107 -0
- package/plugins/lisa-harper-fabric-cursor/skills/harper-resources/SKILL.md +106 -0
- package/plugins/lisa-harper-fabric-cursor/skills/harper-schema-graphql/SKILL.md +72 -0
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/plugin.json +11 -0
- package/plugins/lisa-nestjs-agy/skills/nestjs-graphql/SKILL.md +176 -0
- package/plugins/lisa-nestjs-agy/skills/nestjs-graphql/references/advanced-features.md +527 -0
- package/plugins/lisa-nestjs-agy/skills/nestjs-graphql/references/project-patterns.md +531 -0
- package/plugins/lisa-nestjs-agy/skills/nestjs-graphql/references/quick-start.md +257 -0
- package/plugins/lisa-nestjs-agy/skills/nestjs-graphql/references/resolvers-mutations.md +413 -0
- package/plugins/lisa-nestjs-agy/skills/nestjs-graphql/references/types-scalars.md +513 -0
- package/plugins/lisa-nestjs-agy/skills/nestjs-rules/SKILL.md +565 -0
- package/plugins/lisa-nestjs-agy/skills/typeorm-patterns/SKILL.md +275 -0
- package/plugins/lisa-nestjs-agy/skills/typeorm-patterns/references/configuration-patterns.md +487 -0
- package/plugins/lisa-nestjs-agy/skills/typeorm-patterns/references/entity-patterns.md +450 -0
- package/plugins/lisa-nestjs-agy/skills/typeorm-patterns/references/observability-patterns.md +536 -0
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +24 -0
- package/plugins/lisa-nestjs-copilot/hooks/block-migration-edits.sh +60 -0
- package/plugins/lisa-nestjs-copilot/skills/nestjs-graphql/SKILL.md +176 -0
- package/plugins/lisa-nestjs-copilot/skills/nestjs-graphql/references/advanced-features.md +527 -0
- package/plugins/lisa-nestjs-copilot/skills/nestjs-graphql/references/project-patterns.md +531 -0
- package/plugins/lisa-nestjs-copilot/skills/nestjs-graphql/references/quick-start.md +257 -0
- package/plugins/lisa-nestjs-copilot/skills/nestjs-graphql/references/resolvers-mutations.md +413 -0
- package/plugins/lisa-nestjs-copilot/skills/nestjs-graphql/references/types-scalars.md +513 -0
- package/plugins/lisa-nestjs-copilot/skills/nestjs-rules/SKILL.md +565 -0
- package/plugins/lisa-nestjs-copilot/skills/typeorm-patterns/SKILL.md +275 -0
- package/plugins/lisa-nestjs-copilot/skills/typeorm-patterns/references/configuration-patterns.md +487 -0
- package/plugins/lisa-nestjs-copilot/skills/typeorm-patterns/references/entity-patterns.md +450 -0
- package/plugins/lisa-nestjs-copilot/skills/typeorm-patterns/references/observability-patterns.md +536 -0
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +24 -0
- package/plugins/lisa-nestjs-cursor/hooks/block-migration-edits.sh +60 -0
- package/plugins/lisa-nestjs-cursor/skills/nestjs-graphql/SKILL.md +176 -0
- package/plugins/lisa-nestjs-cursor/skills/nestjs-graphql/references/advanced-features.md +527 -0
- package/plugins/lisa-nestjs-cursor/skills/nestjs-graphql/references/project-patterns.md +531 -0
- package/plugins/lisa-nestjs-cursor/skills/nestjs-graphql/references/quick-start.md +257 -0
- package/plugins/lisa-nestjs-cursor/skills/nestjs-graphql/references/resolvers-mutations.md +413 -0
- package/plugins/lisa-nestjs-cursor/skills/nestjs-graphql/references/types-scalars.md +513 -0
- package/plugins/lisa-nestjs-cursor/skills/nestjs-rules/SKILL.md +565 -0
- package/plugins/lisa-nestjs-cursor/skills/typeorm-patterns/SKILL.md +275 -0
- package/plugins/lisa-nestjs-cursor/skills/typeorm-patterns/references/configuration-patterns.md +487 -0
- package/plugins/lisa-nestjs-cursor/skills/typeorm-patterns/references/entity-patterns.md +450 -0
- package/plugins/lisa-nestjs-cursor/skills/typeorm-patterns/references/observability-patterns.md +536 -0
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-agy/commands/connect-repo-topic.md +7 -0
- package/plugins/lisa-openclaw-agy/commands/connect-staff-slack.md +7 -0
- package/plugins/lisa-openclaw-agy/commands/connect-staff-telegram.md +7 -0
- package/plugins/lisa-openclaw-agy/commands/setup-openclaw.md +7 -0
- package/plugins/lisa-openclaw-agy/plugin.json +8 -0
- package/plugins/lisa-openclaw-agy/skills/lisa-openclaw-connect-repo-topic/SKILL.md +137 -0
- package/plugins/lisa-openclaw-agy/skills/lisa-openclaw-connect-repo-topic/references/repo-topic-config.md +109 -0
- package/plugins/lisa-openclaw-agy/skills/lisa-openclaw-connect-staff/SKILL.md +175 -0
- package/plugins/lisa-openclaw-agy/skills/lisa-openclaw-connect-staff/references/platform-routing.md +83 -0
- package/plugins/lisa-openclaw-agy/skills/lisa-openclaw-connect-staff/references/prompts.md +78 -0
- package/plugins/lisa-openclaw-agy/skills/lisa-openclaw-setup/SKILL.md +138 -0
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +8 -0
- package/plugins/lisa-openclaw-copilot/commands/connect-repo-topic.md +7 -0
- package/plugins/lisa-openclaw-copilot/commands/connect-staff-slack.md +7 -0
- package/plugins/lisa-openclaw-copilot/commands/connect-staff-telegram.md +7 -0
- package/plugins/lisa-openclaw-copilot/commands/setup-openclaw.md +7 -0
- package/plugins/lisa-openclaw-copilot/skills/lisa-openclaw-connect-repo-topic/SKILL.md +137 -0
- package/plugins/lisa-openclaw-copilot/skills/lisa-openclaw-connect-repo-topic/references/repo-topic-config.md +109 -0
- package/plugins/lisa-openclaw-copilot/skills/lisa-openclaw-connect-staff/SKILL.md +175 -0
- package/plugins/lisa-openclaw-copilot/skills/lisa-openclaw-connect-staff/references/platform-routing.md +83 -0
- package/plugins/lisa-openclaw-copilot/skills/lisa-openclaw-connect-staff/references/prompts.md +78 -0
- package/plugins/lisa-openclaw-copilot/skills/lisa-openclaw-setup/SKILL.md +138 -0
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +8 -0
- package/plugins/lisa-openclaw-cursor/commands/connect-repo-topic.md +7 -0
- package/plugins/lisa-openclaw-cursor/commands/connect-staff-slack.md +7 -0
- package/plugins/lisa-openclaw-cursor/commands/connect-staff-telegram.md +7 -0
- package/plugins/lisa-openclaw-cursor/commands/setup-openclaw.md +7 -0
- package/plugins/lisa-openclaw-cursor/skills/lisa-openclaw-connect-repo-topic/SKILL.md +137 -0
- package/plugins/lisa-openclaw-cursor/skills/lisa-openclaw-connect-repo-topic/references/repo-topic-config.md +109 -0
- package/plugins/lisa-openclaw-cursor/skills/lisa-openclaw-connect-staff/SKILL.md +175 -0
- package/plugins/lisa-openclaw-cursor/skills/lisa-openclaw-connect-staff/references/platform-routing.md +83 -0
- package/plugins/lisa-openclaw-cursor/skills/lisa-openclaw-connect-staff/references/prompts.md +78 -0
- package/plugins/lisa-openclaw-cursor/skills/lisa-openclaw-setup/SKILL.md +138 -0
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-agy/agents/ops-specialist.md +226 -0
- package/plugins/lisa-rails-agy/commands/e2e-coverage-gaps.md +7 -0
- package/plugins/lisa-rails-agy/commands/exploratory-qa.md +7 -0
- package/plugins/lisa-rails-agy/commands/fix/linter-error.md +7 -0
- package/plugins/lisa-rails-agy/commands/improve/code-complexity.md +6 -0
- package/plugins/lisa-rails-agy/commands/improve/max-lines-per-function.md +7 -0
- package/plugins/lisa-rails-agy/commands/improve/max-lines.md +7 -0
- package/plugins/lisa-rails-agy/commands/improve/test-coverage.md +7 -0
- package/plugins/lisa-rails-agy/plugin.json +11 -0
- package/plugins/lisa-rails-agy/skills/action-controller-best-practices/SKILL.md +374 -0
- package/plugins/lisa-rails-agy/skills/action-view-best-practices/SKILL.md +335 -0
- package/plugins/lisa-rails-agy/skills/active-record-model-best-practices/SKILL.md +166 -0
- package/plugins/lisa-rails-agy/skills/e2e-coverage-gaps/SKILL.md +105 -0
- package/plugins/lisa-rails-agy/skills/exploratory-qa/SKILL.md +145 -0
- package/plugins/lisa-rails-agy/skills/fix-linter-error/SKILL.md +45 -0
- package/plugins/lisa-rails-agy/skills/improve-code-complexity/SKILL.md +48 -0
- package/plugins/lisa-rails-agy/skills/improve-max-lines/SKILL.md +46 -0
- package/plugins/lisa-rails-agy/skills/improve-max-lines-per-function/SKILL.md +46 -0
- package/plugins/lisa-rails-agy/skills/improve-test-coverage/SKILL.md +45 -0
- package/plugins/lisa-rails-agy/skills/jira-add-journey/SKILL.md +65 -0
- package/plugins/lisa-rails-agy/skills/jira-create/SKILL.md +100 -0
- package/plugins/lisa-rails-agy/skills/jira-evidence/SKILL.md +70 -0
- package/plugins/lisa-rails-agy/skills/jira-evidence/scripts/post-evidence.sh +163 -0
- package/plugins/lisa-rails-agy/skills/jira-journey/SKILL.md +64 -0
- package/plugins/lisa-rails-agy/skills/jira-verify/SKILL.md +26 -0
- package/plugins/lisa-rails-agy/skills/ops-check-logs/SKILL.md +191 -0
- package/plugins/lisa-rails-agy/skills/ops-deploy/SKILL.md +153 -0
- package/plugins/lisa-rails-agy/skills/ops-run-local/SKILL.md +169 -0
- package/plugins/lisa-rails-agy/skills/ops-verify-jobs/SKILL.md +157 -0
- package/plugins/lisa-rails-agy/skills/ops-verify-telemetry/SKILL.md +197 -0
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +50 -0
- package/plugins/lisa-rails-copilot/agents/ops-specialist.agent.md +226 -0
- package/plugins/lisa-rails-copilot/commands/e2e-coverage-gaps.md +7 -0
- package/plugins/lisa-rails-copilot/commands/exploratory-qa.md +7 -0
- package/plugins/lisa-rails-copilot/commands/fix/linter-error.md +7 -0
- package/plugins/lisa-rails-copilot/commands/improve/code-complexity.md +6 -0
- package/plugins/lisa-rails-copilot/commands/improve/max-lines-per-function.md +7 -0
- package/plugins/lisa-rails-copilot/commands/improve/max-lines.md +7 -0
- package/plugins/lisa-rails-copilot/commands/improve/test-coverage.md +7 -0
- package/plugins/lisa-rails-copilot/hooks/inject-rules.sh +22 -0
- package/plugins/lisa-rails-copilot/hooks/rubocop-on-edit.sh +78 -0
- package/plugins/lisa-rails-copilot/hooks/sg-scan-on-edit.sh +74 -0
- package/plugins/lisa-rails-copilot/rules/rails-conventions.md +176 -0
- package/plugins/lisa-rails-copilot/skills/action-controller-best-practices/SKILL.md +374 -0
- package/plugins/lisa-rails-copilot/skills/action-view-best-practices/SKILL.md +335 -0
- package/plugins/lisa-rails-copilot/skills/active-record-model-best-practices/SKILL.md +166 -0
- package/plugins/lisa-rails-copilot/skills/e2e-coverage-gaps/SKILL.md +105 -0
- package/plugins/lisa-rails-copilot/skills/exploratory-qa/SKILL.md +145 -0
- package/plugins/lisa-rails-copilot/skills/fix-linter-error/SKILL.md +45 -0
- package/plugins/lisa-rails-copilot/skills/improve-code-complexity/SKILL.md +48 -0
- package/plugins/lisa-rails-copilot/skills/improve-max-lines/SKILL.md +46 -0
- package/plugins/lisa-rails-copilot/skills/improve-max-lines-per-function/SKILL.md +46 -0
- package/plugins/lisa-rails-copilot/skills/improve-test-coverage/SKILL.md +45 -0
- package/plugins/lisa-rails-copilot/skills/jira-add-journey/SKILL.md +65 -0
- package/plugins/lisa-rails-copilot/skills/jira-create/SKILL.md +100 -0
- package/plugins/lisa-rails-copilot/skills/jira-evidence/SKILL.md +70 -0
- package/plugins/lisa-rails-copilot/skills/jira-evidence/scripts/post-evidence.sh +163 -0
- package/plugins/lisa-rails-copilot/skills/jira-journey/SKILL.md +64 -0
- package/plugins/lisa-rails-copilot/skills/jira-verify/SKILL.md +26 -0
- package/plugins/lisa-rails-copilot/skills/ops-check-logs/SKILL.md +191 -0
- package/plugins/lisa-rails-copilot/skills/ops-deploy/SKILL.md +153 -0
- package/plugins/lisa-rails-copilot/skills/ops-run-local/SKILL.md +169 -0
- package/plugins/lisa-rails-copilot/skills/ops-verify-jobs/SKILL.md +157 -0
- package/plugins/lisa-rails-copilot/skills/ops-verify-telemetry/SKILL.md +197 -0
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +28 -0
- package/plugins/lisa-rails-cursor/agents/ops-specialist.md +226 -0
- package/plugins/lisa-rails-cursor/commands/e2e-coverage-gaps.md +7 -0
- package/plugins/lisa-rails-cursor/commands/exploratory-qa.md +7 -0
- package/plugins/lisa-rails-cursor/commands/fix/linter-error.md +7 -0
- package/plugins/lisa-rails-cursor/commands/improve/code-complexity.md +6 -0
- package/plugins/lisa-rails-cursor/commands/improve/max-lines-per-function.md +7 -0
- package/plugins/lisa-rails-cursor/commands/improve/max-lines.md +7 -0
- package/plugins/lisa-rails-cursor/commands/improve/test-coverage.md +7 -0
- package/plugins/lisa-rails-cursor/hooks/rubocop-on-edit.sh +78 -0
- package/plugins/lisa-rails-cursor/hooks/sg-scan-on-edit.sh +74 -0
- package/plugins/lisa-rails-cursor/rules/rails-conventions.md +176 -0
- package/plugins/lisa-rails-cursor/skills/action-controller-best-practices/SKILL.md +374 -0
- package/plugins/lisa-rails-cursor/skills/action-view-best-practices/SKILL.md +335 -0
- package/plugins/lisa-rails-cursor/skills/active-record-model-best-practices/SKILL.md +166 -0
- package/plugins/lisa-rails-cursor/skills/e2e-coverage-gaps/SKILL.md +105 -0
- package/plugins/lisa-rails-cursor/skills/exploratory-qa/SKILL.md +145 -0
- package/plugins/lisa-rails-cursor/skills/fix-linter-error/SKILL.md +45 -0
- package/plugins/lisa-rails-cursor/skills/improve-code-complexity/SKILL.md +48 -0
- package/plugins/lisa-rails-cursor/skills/improve-max-lines/SKILL.md +46 -0
- package/plugins/lisa-rails-cursor/skills/improve-max-lines-per-function/SKILL.md +46 -0
- package/plugins/lisa-rails-cursor/skills/improve-test-coverage/SKILL.md +45 -0
- package/plugins/lisa-rails-cursor/skills/jira-add-journey/SKILL.md +65 -0
- package/plugins/lisa-rails-cursor/skills/jira-create/SKILL.md +100 -0
- package/plugins/lisa-rails-cursor/skills/jira-evidence/SKILL.md +70 -0
- package/plugins/lisa-rails-cursor/skills/jira-evidence/scripts/post-evidence.sh +163 -0
- package/plugins/lisa-rails-cursor/skills/jira-journey/SKILL.md +64 -0
- package/plugins/lisa-rails-cursor/skills/jira-verify/SKILL.md +26 -0
- package/plugins/lisa-rails-cursor/skills/ops-check-logs/SKILL.md +191 -0
- package/plugins/lisa-rails-cursor/skills/ops-deploy/SKILL.md +153 -0
- package/plugins/lisa-rails-cursor/skills/ops-run-local/SKILL.md +169 -0
- package/plugins/lisa-rails-cursor/skills/ops-verify-jobs/SKILL.md +157 -0
- package/plugins/lisa-rails-cursor/skills/ops-verify-telemetry/SKILL.md +197 -0
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-agy/plugin.json +11 -0
- package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +43 -0
- package/plugins/lisa-typescript-copilot/hooks/block-suppress-directives.sh +73 -0
- package/plugins/lisa-typescript-copilot/hooks/format-on-edit.sh +79 -0
- package/plugins/lisa-typescript-copilot/hooks/lint-on-edit.sh +134 -0
- package/plugins/lisa-typescript-copilot/hooks/sg-scan-on-edit.sh +71 -0
- package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +43 -0
- package/plugins/lisa-typescript-cursor/hooks/block-suppress-directives.sh +73 -0
- package/plugins/lisa-typescript-cursor/hooks/format-on-edit.sh +79 -0
- package/plugins/lisa-typescript-cursor/hooks/lint-on-edit.sh +134 -0
- package/plugins/lisa-typescript-cursor/hooks/sg-scan-on-edit.sh +71 -0
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-agy/ci/lisa-wiki-validate.yml +33 -0
- package/plugins/lisa-wiki-agy/commands/add-ingest.md +6 -0
- package/plugins/lisa-wiki-agy/commands/add-role.md +6 -0
- package/plugins/lisa-wiki-agy/commands/doctor.md +6 -0
- package/plugins/lisa-wiki-agy/commands/ingest.md +6 -0
- package/plugins/lisa-wiki-agy/commands/lint.md +6 -0
- package/plugins/lisa-wiki-agy/commands/migrate.md +6 -0
- package/plugins/lisa-wiki-agy/commands/onboard-me.md +6 -0
- package/plugins/lisa-wiki-agy/commands/query.md +6 -0
- package/plugins/lisa-wiki-agy/commands/setup/wiki.md +6 -0
- package/plugins/lisa-wiki-agy/commands/setup-automations.md +6 -0
- package/plugins/lisa-wiki-agy/commands/setup.md +6 -0
- package/plugins/lisa-wiki-agy/commands/status.md +6 -0
- package/plugins/lisa-wiki-agy/commands/tear-down-automations.md +6 -0
- package/plugins/lisa-wiki-agy/plugin.json +8 -0
- package/plugins/lisa-wiki-agy/schema/lisa-wiki-config.schema.json +118 -0
- package/plugins/lisa-wiki-agy/schema/wiki-structure.schema.json +51 -0
- package/plugins/lisa-wiki-agy/scripts/_wiki-lib.mjs +185 -0
- package/plugins/lisa-wiki-agy/scripts/diff-guard.mjs +116 -0
- package/plugins/lisa-wiki-agy/scripts/ensure-gitignore.mjs +131 -0
- package/plugins/lisa-wiki-agy/scripts/ingest-git.mjs +189 -0
- package/plugins/lisa-wiki-agy/scripts/ingest-memory.mjs +130 -0
- package/plugins/lisa-wiki-agy/scripts/ingest-roles.mjs +85 -0
- package/plugins/lisa-wiki-agy/scripts/ingest_slack_channel.py +329 -0
- package/plugins/lisa-wiki-agy/scripts/lint-wiki.mjs +324 -0
- package/plugins/lisa-wiki-agy/scripts/mcp-doctor.mjs +72 -0
- package/plugins/lisa-wiki-agy/scripts/render-contract.mjs +107 -0
- package/plugins/lisa-wiki-agy/scripts/rewrite-refs.mjs +144 -0
- package/plugins/lisa-wiki-agy/scripts/slack_oauth_user.py +179 -0
- package/plugins/lisa-wiki-agy/scripts/validate-config.mjs +232 -0
- package/plugins/lisa-wiki-agy/scripts/verify-migration.mjs +199 -0
- package/plugins/lisa-wiki-agy/scripts/wiki-status.mjs +345 -0
- package/plugins/lisa-wiki-agy/skills/lisa-wiki-add-ingest/SKILL.md +34 -0
- package/plugins/lisa-wiki-agy/skills/lisa-wiki-add-role/SKILL.md +30 -0
- package/plugins/lisa-wiki-agy/skills/lisa-wiki-connector-confluence/SKILL.md +25 -0
- package/plugins/lisa-wiki-agy/skills/lisa-wiki-connector-docs/SKILL.md +30 -0
- package/plugins/lisa-wiki-agy/skills/lisa-wiki-connector-git/SKILL.md +25 -0
- package/plugins/lisa-wiki-agy/skills/lisa-wiki-connector-jira/SKILL.md +28 -0
- package/plugins/lisa-wiki-agy/skills/lisa-wiki-connector-memory/SKILL.md +28 -0
- package/plugins/lisa-wiki-agy/skills/lisa-wiki-connector-notion/SKILL.md +25 -0
- package/plugins/lisa-wiki-agy/skills/lisa-wiki-connector-roles/SKILL.md +22 -0
- package/plugins/lisa-wiki-agy/skills/lisa-wiki-connector-slack/SKILL.md +30 -0
- package/plugins/lisa-wiki-agy/skills/lisa-wiki-connector-web/SKILL.md +23 -0
- package/plugins/lisa-wiki-agy/skills/lisa-wiki-doctor/SKILL.md +47 -0
- package/plugins/lisa-wiki-agy/skills/lisa-wiki-ingest/SKILL.md +72 -0
- package/plugins/lisa-wiki-agy/skills/lisa-wiki-lint/SKILL.md +32 -0
- package/plugins/lisa-wiki-agy/skills/lisa-wiki-migrate/SKILL.md +43 -0
- package/plugins/lisa-wiki-agy/skills/lisa-wiki-onboard-me/SKILL.md +33 -0
- package/plugins/lisa-wiki-agy/skills/lisa-wiki-query/SKILL.md +30 -0
- package/plugins/lisa-wiki-agy/skills/lisa-wiki-setup/SKILL.md +75 -0
- package/plugins/lisa-wiki-agy/skills/lisa-wiki-setup-automations/SKILL.md +80 -0
- package/plugins/lisa-wiki-agy/skills/lisa-wiki-status/SKILL.md +47 -0
- package/plugins/lisa-wiki-agy/skills/lisa-wiki-tear-down-automations/SKILL.md +34 -0
- package/plugins/lisa-wiki-agy/skills/lisa-wiki-usage/SKILL.md +50 -0
- package/plugins/lisa-wiki-agy/templates/agents/role-agent.claude.md +16 -0
- package/plugins/lisa-wiki-agy/templates/agents/role-agent.codex.toml +15 -0
- package/plugins/lisa-wiki-agy/templates/index.md +17 -0
- package/plugins/lisa-wiki-agy/templates/llm-wiki-contract.md +72 -0
- package/plugins/lisa-wiki-agy/templates/log.md +8 -0
- package/plugins/lisa-wiki-agy/templates/page-types/architecture.md +18 -0
- package/plugins/lisa-wiki-agy/templates/page-types/concept.md +18 -0
- package/plugins/lisa-wiki-agy/templates/page-types/decision.md +18 -0
- package/plugins/lisa-wiki-agy/templates/page-types/entity.md +19 -0
- package/plugins/lisa-wiki-agy/templates/page-types/open-question.md +18 -0
- package/plugins/lisa-wiki-agy/templates/page-types/playbook.md +18 -0
- package/plugins/lisa-wiki-agy/templates/page-types/project.md +19 -0
- package/plugins/lisa-wiki-agy/templates/page-types/requirement.md +19 -0
- package/plugins/lisa-wiki-agy/templates/page-types/staff.md +26 -0
- package/plugins/lisa-wiki-agy/templates/start-here.md +24 -0
- package/plugins/lisa-wiki-agy/templates/state-readme.md +20 -0
- package/plugins/lisa-wiki-agy/templates/wrapper-gitignore.txt +19 -0
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +8 -0
- package/plugins/lisa-wiki-copilot/ci/lisa-wiki-validate.yml +33 -0
- package/plugins/lisa-wiki-copilot/commands/add-ingest.md +6 -0
- package/plugins/lisa-wiki-copilot/commands/add-role.md +6 -0
- package/plugins/lisa-wiki-copilot/commands/doctor.md +6 -0
- package/plugins/lisa-wiki-copilot/commands/ingest.md +6 -0
- package/plugins/lisa-wiki-copilot/commands/lint.md +6 -0
- package/plugins/lisa-wiki-copilot/commands/migrate.md +6 -0
- package/plugins/lisa-wiki-copilot/commands/onboard-me.md +6 -0
- package/plugins/lisa-wiki-copilot/commands/query.md +6 -0
- package/plugins/lisa-wiki-copilot/commands/setup/wiki.md +6 -0
- package/plugins/lisa-wiki-copilot/commands/setup-automations.md +6 -0
- package/plugins/lisa-wiki-copilot/commands/setup.md +6 -0
- package/plugins/lisa-wiki-copilot/commands/status.md +6 -0
- package/plugins/lisa-wiki-copilot/commands/tear-down-automations.md +6 -0
- package/plugins/lisa-wiki-copilot/schema/lisa-wiki-config.schema.json +118 -0
- package/plugins/lisa-wiki-copilot/schema/wiki-structure.schema.json +51 -0
- package/plugins/lisa-wiki-copilot/scripts/_wiki-lib.mjs +185 -0
- package/plugins/lisa-wiki-copilot/scripts/diff-guard.mjs +116 -0
- package/plugins/lisa-wiki-copilot/scripts/ensure-gitignore.mjs +131 -0
- package/plugins/lisa-wiki-copilot/scripts/ingest-git.mjs +189 -0
- package/plugins/lisa-wiki-copilot/scripts/ingest-memory.mjs +130 -0
- package/plugins/lisa-wiki-copilot/scripts/ingest-roles.mjs +85 -0
- package/plugins/lisa-wiki-copilot/scripts/ingest_slack_channel.py +329 -0
- package/plugins/lisa-wiki-copilot/scripts/lint-wiki.mjs +324 -0
- package/plugins/lisa-wiki-copilot/scripts/mcp-doctor.mjs +72 -0
- package/plugins/lisa-wiki-copilot/scripts/render-contract.mjs +107 -0
- package/plugins/lisa-wiki-copilot/scripts/rewrite-refs.mjs +144 -0
- package/plugins/lisa-wiki-copilot/scripts/slack_oauth_user.py +179 -0
- package/plugins/lisa-wiki-copilot/scripts/validate-config.mjs +232 -0
- package/plugins/lisa-wiki-copilot/scripts/verify-migration.mjs +199 -0
- package/plugins/lisa-wiki-copilot/scripts/wiki-status.mjs +345 -0
- package/plugins/lisa-wiki-copilot/skills/lisa-wiki-add-ingest/SKILL.md +34 -0
- package/plugins/lisa-wiki-copilot/skills/lisa-wiki-add-role/SKILL.md +30 -0
- package/plugins/lisa-wiki-copilot/skills/lisa-wiki-connector-confluence/SKILL.md +25 -0
- package/plugins/lisa-wiki-copilot/skills/lisa-wiki-connector-docs/SKILL.md +30 -0
- package/plugins/lisa-wiki-copilot/skills/lisa-wiki-connector-git/SKILL.md +25 -0
- package/plugins/lisa-wiki-copilot/skills/lisa-wiki-connector-jira/SKILL.md +28 -0
- package/plugins/lisa-wiki-copilot/skills/lisa-wiki-connector-memory/SKILL.md +28 -0
- package/plugins/lisa-wiki-copilot/skills/lisa-wiki-connector-notion/SKILL.md +25 -0
- package/plugins/lisa-wiki-copilot/skills/lisa-wiki-connector-roles/SKILL.md +22 -0
- package/plugins/lisa-wiki-copilot/skills/lisa-wiki-connector-slack/SKILL.md +30 -0
- package/plugins/lisa-wiki-copilot/skills/lisa-wiki-connector-web/SKILL.md +23 -0
- package/plugins/lisa-wiki-copilot/skills/lisa-wiki-doctor/SKILL.md +47 -0
- package/plugins/lisa-wiki-copilot/skills/lisa-wiki-ingest/SKILL.md +72 -0
- package/plugins/lisa-wiki-copilot/skills/lisa-wiki-lint/SKILL.md +32 -0
- package/plugins/lisa-wiki-copilot/skills/lisa-wiki-migrate/SKILL.md +43 -0
- package/plugins/lisa-wiki-copilot/skills/lisa-wiki-onboard-me/SKILL.md +33 -0
- package/plugins/lisa-wiki-copilot/skills/lisa-wiki-query/SKILL.md +30 -0
- package/plugins/lisa-wiki-copilot/skills/lisa-wiki-setup/SKILL.md +75 -0
- package/plugins/lisa-wiki-copilot/skills/lisa-wiki-setup-automations/SKILL.md +80 -0
- package/plugins/lisa-wiki-copilot/skills/lisa-wiki-status/SKILL.md +47 -0
- package/plugins/lisa-wiki-copilot/skills/lisa-wiki-tear-down-automations/SKILL.md +34 -0
- package/plugins/lisa-wiki-copilot/skills/lisa-wiki-usage/SKILL.md +50 -0
- package/plugins/lisa-wiki-copilot/templates/agents/role-agent.claude.md +16 -0
- package/plugins/lisa-wiki-copilot/templates/agents/role-agent.codex.toml +15 -0
- package/plugins/lisa-wiki-copilot/templates/index.md +17 -0
- package/plugins/lisa-wiki-copilot/templates/llm-wiki-contract.md +72 -0
- package/plugins/lisa-wiki-copilot/templates/log.md +8 -0
- package/plugins/lisa-wiki-copilot/templates/page-types/architecture.md +18 -0
- package/plugins/lisa-wiki-copilot/templates/page-types/concept.md +18 -0
- package/plugins/lisa-wiki-copilot/templates/page-types/decision.md +18 -0
- package/plugins/lisa-wiki-copilot/templates/page-types/entity.md +19 -0
- package/plugins/lisa-wiki-copilot/templates/page-types/open-question.md +18 -0
- package/plugins/lisa-wiki-copilot/templates/page-types/playbook.md +18 -0
- package/plugins/lisa-wiki-copilot/templates/page-types/project.md +19 -0
- package/plugins/lisa-wiki-copilot/templates/page-types/requirement.md +19 -0
- package/plugins/lisa-wiki-copilot/templates/page-types/staff.md +26 -0
- package/plugins/lisa-wiki-copilot/templates/start-here.md +24 -0
- package/plugins/lisa-wiki-copilot/templates/state-readme.md +20 -0
- package/plugins/lisa-wiki-copilot/templates/wrapper-gitignore.txt +19 -0
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +8 -0
- package/plugins/lisa-wiki-cursor/ci/lisa-wiki-validate.yml +33 -0
- package/plugins/lisa-wiki-cursor/commands/add-ingest.md +6 -0
- package/plugins/lisa-wiki-cursor/commands/add-role.md +6 -0
- package/plugins/lisa-wiki-cursor/commands/doctor.md +6 -0
- package/plugins/lisa-wiki-cursor/commands/ingest.md +6 -0
- package/plugins/lisa-wiki-cursor/commands/lint.md +6 -0
- package/plugins/lisa-wiki-cursor/commands/migrate.md +6 -0
- package/plugins/lisa-wiki-cursor/commands/onboard-me.md +6 -0
- package/plugins/lisa-wiki-cursor/commands/query.md +6 -0
- package/plugins/lisa-wiki-cursor/commands/setup/wiki.md +6 -0
- package/plugins/lisa-wiki-cursor/commands/setup-automations.md +6 -0
- package/plugins/lisa-wiki-cursor/commands/setup.md +6 -0
- package/plugins/lisa-wiki-cursor/commands/status.md +6 -0
- package/plugins/lisa-wiki-cursor/commands/tear-down-automations.md +6 -0
- package/plugins/lisa-wiki-cursor/schema/lisa-wiki-config.schema.json +118 -0
- package/plugins/lisa-wiki-cursor/schema/wiki-structure.schema.json +51 -0
- package/plugins/lisa-wiki-cursor/scripts/_wiki-lib.mjs +185 -0
- package/plugins/lisa-wiki-cursor/scripts/diff-guard.mjs +116 -0
- package/plugins/lisa-wiki-cursor/scripts/ensure-gitignore.mjs +131 -0
- package/plugins/lisa-wiki-cursor/scripts/ingest-git.mjs +189 -0
- package/plugins/lisa-wiki-cursor/scripts/ingest-memory.mjs +130 -0
- package/plugins/lisa-wiki-cursor/scripts/ingest-roles.mjs +85 -0
- package/plugins/lisa-wiki-cursor/scripts/ingest_slack_channel.py +329 -0
- package/plugins/lisa-wiki-cursor/scripts/lint-wiki.mjs +324 -0
- package/plugins/lisa-wiki-cursor/scripts/mcp-doctor.mjs +72 -0
- package/plugins/lisa-wiki-cursor/scripts/render-contract.mjs +107 -0
- package/plugins/lisa-wiki-cursor/scripts/rewrite-refs.mjs +144 -0
- package/plugins/lisa-wiki-cursor/scripts/slack_oauth_user.py +179 -0
- package/plugins/lisa-wiki-cursor/scripts/validate-config.mjs +232 -0
- package/plugins/lisa-wiki-cursor/scripts/verify-migration.mjs +199 -0
- package/plugins/lisa-wiki-cursor/scripts/wiki-status.mjs +345 -0
- package/plugins/lisa-wiki-cursor/skills/lisa-wiki-add-ingest/SKILL.md +34 -0
- package/plugins/lisa-wiki-cursor/skills/lisa-wiki-add-role/SKILL.md +30 -0
- package/plugins/lisa-wiki-cursor/skills/lisa-wiki-connector-confluence/SKILL.md +25 -0
- package/plugins/lisa-wiki-cursor/skills/lisa-wiki-connector-docs/SKILL.md +30 -0
- package/plugins/lisa-wiki-cursor/skills/lisa-wiki-connector-git/SKILL.md +25 -0
- package/plugins/lisa-wiki-cursor/skills/lisa-wiki-connector-jira/SKILL.md +28 -0
- package/plugins/lisa-wiki-cursor/skills/lisa-wiki-connector-memory/SKILL.md +28 -0
- package/plugins/lisa-wiki-cursor/skills/lisa-wiki-connector-notion/SKILL.md +25 -0
- package/plugins/lisa-wiki-cursor/skills/lisa-wiki-connector-roles/SKILL.md +22 -0
- package/plugins/lisa-wiki-cursor/skills/lisa-wiki-connector-slack/SKILL.md +30 -0
- package/plugins/lisa-wiki-cursor/skills/lisa-wiki-connector-web/SKILL.md +23 -0
- package/plugins/lisa-wiki-cursor/skills/lisa-wiki-doctor/SKILL.md +47 -0
- package/plugins/lisa-wiki-cursor/skills/lisa-wiki-ingest/SKILL.md +72 -0
- package/plugins/lisa-wiki-cursor/skills/lisa-wiki-lint/SKILL.md +32 -0
- package/plugins/lisa-wiki-cursor/skills/lisa-wiki-migrate/SKILL.md +43 -0
- package/plugins/lisa-wiki-cursor/skills/lisa-wiki-onboard-me/SKILL.md +33 -0
- package/plugins/lisa-wiki-cursor/skills/lisa-wiki-query/SKILL.md +30 -0
- package/plugins/lisa-wiki-cursor/skills/lisa-wiki-setup/SKILL.md +75 -0
- package/plugins/lisa-wiki-cursor/skills/lisa-wiki-setup-automations/SKILL.md +80 -0
- package/plugins/lisa-wiki-cursor/skills/lisa-wiki-status/SKILL.md +47 -0
- package/plugins/lisa-wiki-cursor/skills/lisa-wiki-tear-down-automations/SKILL.md +34 -0
- package/plugins/lisa-wiki-cursor/skills/lisa-wiki-usage/SKILL.md +50 -0
- package/plugins/lisa-wiki-cursor/templates/agents/role-agent.claude.md +16 -0
- package/plugins/lisa-wiki-cursor/templates/agents/role-agent.codex.toml +15 -0
- package/plugins/lisa-wiki-cursor/templates/index.md +17 -0
- package/plugins/lisa-wiki-cursor/templates/llm-wiki-contract.md +72 -0
- package/plugins/lisa-wiki-cursor/templates/log.md +8 -0
- package/plugins/lisa-wiki-cursor/templates/page-types/architecture.md +18 -0
- package/plugins/lisa-wiki-cursor/templates/page-types/concept.md +18 -0
- package/plugins/lisa-wiki-cursor/templates/page-types/decision.md +18 -0
- package/plugins/lisa-wiki-cursor/templates/page-types/entity.md +19 -0
- package/plugins/lisa-wiki-cursor/templates/page-types/open-question.md +18 -0
- package/plugins/lisa-wiki-cursor/templates/page-types/playbook.md +18 -0
- package/plugins/lisa-wiki-cursor/templates/page-types/project.md +19 -0
- package/plugins/lisa-wiki-cursor/templates/page-types/requirement.md +19 -0
- package/plugins/lisa-wiki-cursor/templates/page-types/staff.md +26 -0
- package/plugins/lisa-wiki-cursor/templates/start-here.md +24 -0
- package/plugins/lisa-wiki-cursor/templates/state-readme.md +20 -0
- package/plugins/lisa-wiki-cursor/templates/wrapper-gitignore.txt +19 -0
- package/plugins/src/expo/skills/directory-structure/SKILL.md +32 -20
- package/plugins/src/expo/skills/directory-structure/scripts/validate_structure.py +15 -6
- package/scripts/build-plugins.sh +28 -11
- package/typescript/copy-overwrite/.prettierignore +1 -0
- package/typescript/copy-overwrite/eslint.ignore.config.json +2 -0
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# Native View Reference
|
|
2
|
+
|
|
3
|
+
Native views let you render platform UI components (UIView on iOS, Android View on Android) as React components.
|
|
4
|
+
|
|
5
|
+
## Defining a View
|
|
6
|
+
|
|
7
|
+
**Swift:**
|
|
8
|
+
|
|
9
|
+
```swift
|
|
10
|
+
public class MyViewModule: Module {
|
|
11
|
+
public func definition() -> ModuleDefinition {
|
|
12
|
+
Name("MyView")
|
|
13
|
+
|
|
14
|
+
View(MyNativeView.self) {
|
|
15
|
+
Prop("title") { (view: MyNativeView, title: String) in
|
|
16
|
+
view.titleLabel.text = title
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
Events("onPress", "onLoad")
|
|
20
|
+
|
|
21
|
+
AsyncFunction("reset") { (view: MyNativeView) in
|
|
22
|
+
view.reset()
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
class MyNativeView: ExpoView {
|
|
29
|
+
let titleLabel = UILabel()
|
|
30
|
+
|
|
31
|
+
required init(appContext: AppContext) {
|
|
32
|
+
super.init(appContext: appContext)
|
|
33
|
+
clipsToBounds = true
|
|
34
|
+
addSubview(titleLabel)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
override func layoutSubviews() {
|
|
38
|
+
super.layoutSubviews()
|
|
39
|
+
titleLabel.frame = bounds
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**Kotlin:**
|
|
45
|
+
|
|
46
|
+
```kotlin
|
|
47
|
+
class MyViewModule : Module() {
|
|
48
|
+
override fun definition() = ModuleDefinition {
|
|
49
|
+
Name("MyView")
|
|
50
|
+
|
|
51
|
+
View(MyNativeView::class) {
|
|
52
|
+
Prop("title") { view: MyNativeView, title: String ->
|
|
53
|
+
view.titleView.text = title
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
Events("onPress", "onLoad")
|
|
57
|
+
|
|
58
|
+
AsyncFunction("reset") { view: MyNativeView ->
|
|
59
|
+
view.reset()
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
class MyNativeView(context: Context, appContext: AppContext) : ExpoView(context, appContext) {
|
|
66
|
+
val titleView = TextView(context).also {
|
|
67
|
+
addView(it, LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT))
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**TypeScript:**
|
|
73
|
+
|
|
74
|
+
```typescript
|
|
75
|
+
import { requireNativeView } from "expo";
|
|
76
|
+
|
|
77
|
+
export type MyViewProps = {
|
|
78
|
+
title?: string;
|
|
79
|
+
onPress?: (event: { nativeEvent: { x: number; y: number } }) => void;
|
|
80
|
+
onLoad?: () => void;
|
|
81
|
+
} & ViewProps;
|
|
82
|
+
|
|
83
|
+
const NativeView = requireNativeView<MyViewProps>("MyView");
|
|
84
|
+
|
|
85
|
+
export function MyView(props: MyViewProps) {
|
|
86
|
+
return <NativeView {...props} />;
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## View Event Dispatching
|
|
91
|
+
|
|
92
|
+
**Swift:**
|
|
93
|
+
|
|
94
|
+
```swift
|
|
95
|
+
class MyNativeView: ExpoView {
|
|
96
|
+
let onPress = EventDispatcher()
|
|
97
|
+
|
|
98
|
+
func handleTap(at point: CGPoint) {
|
|
99
|
+
onPress(["x": point.x, "y": point.y])
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
**Kotlin:**
|
|
105
|
+
|
|
106
|
+
```kotlin
|
|
107
|
+
class MyNativeView(context: Context, appContext: AppContext) : ExpoView(context, appContext) {
|
|
108
|
+
private val onPress by EventDispatcher()
|
|
109
|
+
|
|
110
|
+
fun handleTap(x: Float, y: Float) {
|
|
111
|
+
onPress(mapOf("x" to x, "y" to y))
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## View Lifecycle
|
|
117
|
+
|
|
118
|
+
```swift
|
|
119
|
+
// Called after all props have been set
|
|
120
|
+
OnViewDidUpdateProps { (view: MyNativeView) in
|
|
121
|
+
view.applyChanges()
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
```kotlin
|
|
126
|
+
// Android only - called when view is no longer used
|
|
127
|
+
OnViewDestroys { view: MyNativeView ->
|
|
128
|
+
view.cleanup()
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## AsyncFunction on Views
|
|
133
|
+
|
|
134
|
+
Functions defined inside `View` are accessible via React ref:
|
|
135
|
+
|
|
136
|
+
```typescript
|
|
137
|
+
const ref = useRef<MyView>(null);
|
|
138
|
+
// Call native function
|
|
139
|
+
await ref.current?.reset();
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## PropGroup (Android)
|
|
143
|
+
|
|
144
|
+
Batch-register multiple props with shared setter logic:
|
|
145
|
+
|
|
146
|
+
```kotlin
|
|
147
|
+
View(MyNativeView::class) {
|
|
148
|
+
PropGroup("border", "width" to Float::class, "color" to Int::class) { view, index, value ->
|
|
149
|
+
when (index) {
|
|
150
|
+
0 -> view.borderWidth = value as Float
|
|
151
|
+
1 -> view.borderColor = value as Int
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## GroupView (Android)
|
|
158
|
+
|
|
159
|
+
Enable view group functionality for managing child views:
|
|
160
|
+
|
|
161
|
+
```kotlin
|
|
162
|
+
View(MyContainerView::class) {
|
|
163
|
+
GroupView {
|
|
164
|
+
AddChildView { parent, child, index -> parent.addView(child, index) }
|
|
165
|
+
GetChildCount { parent -> parent.childCount }
|
|
166
|
+
GetChildViewAt { parent, index -> parent.getChildAt(index) }
|
|
167
|
+
RemoveChildView { parent, child -> parent.removeView(child) }
|
|
168
|
+
RemoveChildViewAt { parent, index -> parent.removeViewAt(index) }
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
```
|
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: expo-router-best-practices
|
|
3
|
+
description: This skill should be used when creating new routes, configuring navigation layouts, implementing deep linking, or organizing the app/ directory structure in Expo Router projects. It provides best practices for file-based routing patterns.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Expo Router Best Practices
|
|
7
|
+
|
|
8
|
+
This skill provides guidance for implementing file-based routing with Expo Router following established best practices and official documentation patterns.
|
|
9
|
+
|
|
10
|
+
## Core Principles
|
|
11
|
+
|
|
12
|
+
### 1. Routes Are Thin Wrappers
|
|
13
|
+
|
|
14
|
+
Route files in the `app/` directory should be minimal pass-throughs to feature screen components. Business logic and complex UI components belong in feature directories, not route files.
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
// app/players/[playerId]/compare.tsx - CORRECT
|
|
18
|
+
import { Main } from "@/features/compare-players/screens/Main";
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Compare players route.
|
|
22
|
+
* URL: /players/[playerId]/compare
|
|
23
|
+
*/
|
|
24
|
+
export default function CompareScreen() {
|
|
25
|
+
return <Main />;
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
// app/players/[playerId]/compare.tsx - INCORRECT
|
|
31
|
+
export default function CompareScreen() {
|
|
32
|
+
const { playerId } = useLocalSearchParams();
|
|
33
|
+
const [data, setData] = useState(null);
|
|
34
|
+
// ... 200 lines of business logic
|
|
35
|
+
return <ComplexUI />;
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### 2. Descriptive Component Names
|
|
40
|
+
|
|
41
|
+
Use descriptive names for route components, not generic names.
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
// CORRECT
|
|
45
|
+
export default function CompareScreen() { ... }
|
|
46
|
+
export default function PlayerDetailScreen() { ... }
|
|
47
|
+
export default function SettingsScreen() { ... }
|
|
48
|
+
|
|
49
|
+
// INCORRECT
|
|
50
|
+
export default function Screen() { ... }
|
|
51
|
+
export default function Page() { ... }
|
|
52
|
+
export default function Index() { ... } // only acceptable for index.tsx files
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 3. Document Route URLs in JSDoc
|
|
56
|
+
|
|
57
|
+
Include the URL pattern in route file documentation.
|
|
58
|
+
|
|
59
|
+
```typescript
|
|
60
|
+
/**
|
|
61
|
+
* Player detail route.
|
|
62
|
+
* URL: /players/[playerId]
|
|
63
|
+
*/
|
|
64
|
+
export default function PlayerDetailScreen() {
|
|
65
|
+
return <Main />;
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## File Structure Patterns
|
|
70
|
+
|
|
71
|
+
### Directory Organization
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
app/
|
|
75
|
+
├── _layout.tsx # Root layout (initialization, providers)
|
|
76
|
+
├── index.tsx # Default route (/)
|
|
77
|
+
├── +not-found.tsx # 404 handling
|
|
78
|
+
├── +html.tsx # Web HTML customization (optional)
|
|
79
|
+
├── (tabs)/ # Tab navigator group
|
|
80
|
+
│ ├── _layout.tsx # Tab configuration
|
|
81
|
+
│ ├── index.tsx # Default tab
|
|
82
|
+
│ ├── feed/ # Stack within tab
|
|
83
|
+
│ │ ├── _layout.tsx
|
|
84
|
+
│ │ ├── index.tsx
|
|
85
|
+
│ │ └── [postId].tsx
|
|
86
|
+
│ └── settings.tsx
|
|
87
|
+
├── (auth)/ # Auth screens group
|
|
88
|
+
│ ├── sign-in.tsx
|
|
89
|
+
│ └── create-account.tsx
|
|
90
|
+
└── modal.tsx # Modal route
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Route Notation Reference
|
|
94
|
+
|
|
95
|
+
| Notation | Purpose | Example | URL |
|
|
96
|
+
| ---------------- | --------------------------- | -------------------- | -------- |
|
|
97
|
+
| `file.tsx` | Static route | `about.tsx` | `/about` |
|
|
98
|
+
| `[param].tsx` | Dynamic route | `[userId].tsx` | `/123` |
|
|
99
|
+
| `[...slug].tsx` | Catch-all route | `[...path].tsx` | `/a/b/c` |
|
|
100
|
+
| `(group)/` | Route group (no URL impact) | `(tabs)/` | `/` |
|
|
101
|
+
| `index.tsx` | Default route | `feed/index.tsx` | `/feed` |
|
|
102
|
+
| `_layout.tsx` | Layout definition | `(tabs)/_layout.tsx` | - |
|
|
103
|
+
| `+not-found.tsx` | 404 handler | `+not-found.tsx` | - |
|
|
104
|
+
|
|
105
|
+
## Layout Patterns
|
|
106
|
+
|
|
107
|
+
### Root Layout
|
|
108
|
+
|
|
109
|
+
The root `_layout.tsx` replaces `App.jsx/tsx`. Place initialization code here.
|
|
110
|
+
|
|
111
|
+
```typescript
|
|
112
|
+
// app/_layout.tsx
|
|
113
|
+
import { useFonts } from "expo-font";
|
|
114
|
+
import { Stack } from "expo-router";
|
|
115
|
+
import * as SplashScreen from "expo-splash-screen";
|
|
116
|
+
import { useEffect } from "react";
|
|
117
|
+
|
|
118
|
+
SplashScreen.preventAutoHideAsync();
|
|
119
|
+
|
|
120
|
+
export default function RootLayout() {
|
|
121
|
+
const [loaded] = useFonts({
|
|
122
|
+
SpaceMono: require("../assets/fonts/SpaceMono-Regular.ttf"),
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
useEffect(() => {
|
|
126
|
+
if (loaded) {
|
|
127
|
+
SplashScreen.hide();
|
|
128
|
+
}
|
|
129
|
+
}, [loaded]);
|
|
130
|
+
|
|
131
|
+
if (!loaded) {
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
return <Stack />;
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Stack Layout
|
|
140
|
+
|
|
141
|
+
```typescript
|
|
142
|
+
// app/products/_layout.tsx
|
|
143
|
+
import { Stack } from "expo-router";
|
|
144
|
+
|
|
145
|
+
export const unstable_settings = {
|
|
146
|
+
initialRouteName: "index",
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
export default function ProductsLayout() {
|
|
150
|
+
return (
|
|
151
|
+
<Stack>
|
|
152
|
+
<Stack.Screen name="index" options={{ title: "Products" }} />
|
|
153
|
+
<Stack.Screen name="[productId]" options={{ headerShown: false }} />
|
|
154
|
+
</Stack>
|
|
155
|
+
);
|
|
156
|
+
}
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Tab Layout
|
|
160
|
+
|
|
161
|
+
```typescript
|
|
162
|
+
// app/(tabs)/_layout.tsx
|
|
163
|
+
import { Tabs } from "expo-router";
|
|
164
|
+
import MaterialIcons from "@expo/vector-icons/MaterialIcons";
|
|
165
|
+
|
|
166
|
+
export default function TabLayout() {
|
|
167
|
+
return (
|
|
168
|
+
<Tabs screenOptions={{ headerShown: false }}>
|
|
169
|
+
<Tabs.Screen
|
|
170
|
+
name="index"
|
|
171
|
+
options={{
|
|
172
|
+
title: "Home",
|
|
173
|
+
tabBarIcon: ({ color }) => (
|
|
174
|
+
<MaterialIcons size={28} name="home" color={color} />
|
|
175
|
+
),
|
|
176
|
+
}}
|
|
177
|
+
/>
|
|
178
|
+
<Tabs.Screen name="feed" options={{ title: "Feed" }} />
|
|
179
|
+
<Tabs.Screen name="settings" options={{ title: "Settings" }} />
|
|
180
|
+
</Tabs>
|
|
181
|
+
);
|
|
182
|
+
}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Protected Routes (SDK 53+)
|
|
186
|
+
|
|
187
|
+
```typescript
|
|
188
|
+
// app/_layout.tsx
|
|
189
|
+
import { Stack } from "expo-router";
|
|
190
|
+
import { useAuthState } from "@/hooks/useAuthState";
|
|
191
|
+
|
|
192
|
+
export default function RootLayout() {
|
|
193
|
+
const { isLoggedIn } = useAuthState();
|
|
194
|
+
|
|
195
|
+
return (
|
|
196
|
+
<Stack>
|
|
197
|
+
<Stack.Protected guard={isLoggedIn}>
|
|
198
|
+
<Stack.Screen name="(tabs)" />
|
|
199
|
+
<Stack.Screen name="modal" options={{ presentation: "modal" }} />
|
|
200
|
+
</Stack.Protected>
|
|
201
|
+
|
|
202
|
+
<Stack.Protected guard={!isLoggedIn}>
|
|
203
|
+
<Stack.Screen name="sign-in" />
|
|
204
|
+
<Stack.Screen name="create-account" />
|
|
205
|
+
</Stack.Protected>
|
|
206
|
+
</Stack>
|
|
207
|
+
);
|
|
208
|
+
}
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
## Navigation Patterns
|
|
212
|
+
|
|
213
|
+
### Declarative Navigation (Preferred)
|
|
214
|
+
|
|
215
|
+
```typescript
|
|
216
|
+
import { Link } from "expo-router";
|
|
217
|
+
|
|
218
|
+
// Basic link
|
|
219
|
+
<Link href="/about">About</Link>
|
|
220
|
+
|
|
221
|
+
// With custom component
|
|
222
|
+
<Link href="/profile" asChild>
|
|
223
|
+
<Pressable>
|
|
224
|
+
<Text>Profile</Text>
|
|
225
|
+
</Pressable>
|
|
226
|
+
</Link>
|
|
227
|
+
|
|
228
|
+
// Dynamic route
|
|
229
|
+
<Link href={{ pathname: "/user/[id]", params: { id: "123" } }}>
|
|
230
|
+
View User
|
|
231
|
+
</Link>
|
|
232
|
+
|
|
233
|
+
// With prefetching
|
|
234
|
+
<Link href="/heavy-page" prefetch>Heavy Page</Link>
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
### Imperative Navigation
|
|
238
|
+
|
|
239
|
+
```typescript
|
|
240
|
+
import { useRouter } from "expo-router";
|
|
241
|
+
|
|
242
|
+
export default function Component() {
|
|
243
|
+
const router = useRouter();
|
|
244
|
+
|
|
245
|
+
const handleNavigate = () => {
|
|
246
|
+
// Navigate (adds to history)
|
|
247
|
+
router.navigate("/about");
|
|
248
|
+
|
|
249
|
+
// Push (always adds to stack)
|
|
250
|
+
router.push("/details");
|
|
251
|
+
|
|
252
|
+
// Replace (no back navigation)
|
|
253
|
+
router.replace("/home");
|
|
254
|
+
|
|
255
|
+
// Back
|
|
256
|
+
router.back();
|
|
257
|
+
|
|
258
|
+
// Dynamic route
|
|
259
|
+
router.navigate({
|
|
260
|
+
pathname: "/user/[id]",
|
|
261
|
+
params: { id: "123" },
|
|
262
|
+
});
|
|
263
|
+
};
|
|
264
|
+
|
|
265
|
+
return <Button onPress={handleNavigate} title="Navigate" />;
|
|
266
|
+
}
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
### Defensive Navigation Guards
|
|
270
|
+
|
|
271
|
+
Always validate parameters before navigation to prevent broken URLs.
|
|
272
|
+
|
|
273
|
+
```typescript
|
|
274
|
+
const handleNavigation = useCallback(() => {
|
|
275
|
+
if (!entityId) {
|
|
276
|
+
console.error("Cannot navigate: entity ID is missing");
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
router.push(`/players/${entityId}`);
|
|
280
|
+
}, [entityId, router]);
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### Reading Route Parameters
|
|
284
|
+
|
|
285
|
+
```typescript
|
|
286
|
+
import { useLocalSearchParams, useGlobalSearchParams } from "expo-router";
|
|
287
|
+
|
|
288
|
+
export default function UserPage() {
|
|
289
|
+
// Local params (current route only)
|
|
290
|
+
const { id, tab } = useLocalSearchParams<{ id: string; tab?: string }>();
|
|
291
|
+
|
|
292
|
+
// Global params (entire URL)
|
|
293
|
+
const globalParams = useGlobalSearchParams();
|
|
294
|
+
|
|
295
|
+
return <Text>User ID: {id}</Text>;
|
|
296
|
+
}
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
## Deep Linking
|
|
300
|
+
|
|
301
|
+
### Configure URL Scheme
|
|
302
|
+
|
|
303
|
+
In `app.json` or `app.config.js`:
|
|
304
|
+
|
|
305
|
+
```json
|
|
306
|
+
{
|
|
307
|
+
"expo": {
|
|
308
|
+
"scheme": "myapp"
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
### Initial Route for Deep Links
|
|
314
|
+
|
|
315
|
+
Ensure proper back navigation when deep linking.
|
|
316
|
+
|
|
317
|
+
```typescript
|
|
318
|
+
// app/feed/_layout.tsx
|
|
319
|
+
export const unstable_settings = {
|
|
320
|
+
initialRouteName: "index",
|
|
321
|
+
};
|
|
322
|
+
|
|
323
|
+
export default function FeedLayout() {
|
|
324
|
+
return <Stack />;
|
|
325
|
+
}
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
### Deep Link with Anchor
|
|
329
|
+
|
|
330
|
+
```typescript
|
|
331
|
+
// Forces initial route to load first
|
|
332
|
+
<Link href="/feed/post/123" withAnchor>
|
|
333
|
+
View Post
|
|
334
|
+
</Link>
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
## Common Patterns
|
|
338
|
+
|
|
339
|
+
### Stacks Inside Tabs
|
|
340
|
+
|
|
341
|
+
```
|
|
342
|
+
app/
|
|
343
|
+
├── (tabs)/
|
|
344
|
+
│ ├── _layout.tsx # Tab navigator
|
|
345
|
+
│ ├── index.tsx # Home tab
|
|
346
|
+
│ ├── feed/ # Feed tab with stack
|
|
347
|
+
│ │ ├── _layout.tsx # Stack navigator
|
|
348
|
+
│ │ ├── index.tsx # Feed list
|
|
349
|
+
│ │ └── [postId].tsx # Post detail
|
|
350
|
+
│ └── settings.tsx # Settings tab
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
### Shared Routes Between Tabs
|
|
354
|
+
|
|
355
|
+
```
|
|
356
|
+
app/
|
|
357
|
+
├── (tabs)/
|
|
358
|
+
│ ├── _layout.tsx
|
|
359
|
+
│ ├── (feed)/ # Feed tab group
|
|
360
|
+
│ │ └── index.tsx
|
|
361
|
+
│ ├── (search)/ # Search tab group
|
|
362
|
+
│ │ └── index.tsx
|
|
363
|
+
│ └── (feed,search)/ # Shared between both
|
|
364
|
+
│ └── users/
|
|
365
|
+
│ └── [userId].tsx
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
### Modal Routes
|
|
369
|
+
|
|
370
|
+
```typescript
|
|
371
|
+
// app/_layout.tsx
|
|
372
|
+
<Stack>
|
|
373
|
+
<Stack.Screen name="(tabs)" options={{ headerShown: false }} />
|
|
374
|
+
<Stack.Screen
|
|
375
|
+
name="modal"
|
|
376
|
+
options={{
|
|
377
|
+
presentation: "modal",
|
|
378
|
+
animation: "slide_from_bottom",
|
|
379
|
+
}}
|
|
380
|
+
/>
|
|
381
|
+
</Stack>
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
## Anti-Patterns to Avoid
|
|
385
|
+
|
|
386
|
+
### 1. Business Logic in Route Files
|
|
387
|
+
|
|
388
|
+
Route files should only import and render feature components.
|
|
389
|
+
|
|
390
|
+
### 2. Deeply Nested Navigators
|
|
391
|
+
|
|
392
|
+
Avoid nesting stacks within stacks unnecessarily. Use route groups instead.
|
|
393
|
+
|
|
394
|
+
### 3. Missing initialRouteName
|
|
395
|
+
|
|
396
|
+
Always set `initialRouteName` in stack layouts for proper deep link behavior.
|
|
397
|
+
|
|
398
|
+
### 4. Hardcoded Navigation Paths
|
|
399
|
+
|
|
400
|
+
Use typed routes or constants instead of string literals.
|
|
401
|
+
|
|
402
|
+
```typescript
|
|
403
|
+
// AVOID
|
|
404
|
+
router.push("/players/123/compare");
|
|
405
|
+
|
|
406
|
+
// PREFER
|
|
407
|
+
router.push({
|
|
408
|
+
pathname: "/players/[playerId]/compare",
|
|
409
|
+
params: { playerId: "123" },
|
|
410
|
+
});
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
### 5. Using window APIs Without Platform Checks
|
|
414
|
+
|
|
415
|
+
```typescript
|
|
416
|
+
// AVOID
|
|
417
|
+
const width = window.innerWidth;
|
|
418
|
+
|
|
419
|
+
// PREFER
|
|
420
|
+
import { useWindowDimensions } from "react-native";
|
|
421
|
+
const { width } = useWindowDimensions();
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
## Resources
|
|
425
|
+
|
|
426
|
+
For detailed documentation on specific topics, refer to:
|
|
427
|
+
|
|
428
|
+
- `references/official-docs.md` - Condensed official Expo Router documentation
|
|
429
|
+
- `scripts/generate-route.py` - Route scaffolding script
|
|
430
|
+
|
|
431
|
+
Official Documentation: https://docs.expo.dev/router/introduction/
|