@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,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "lisa-typescript",
|
|
3
|
+
"version": "2.123.0",
|
|
4
|
+
"description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Cody Swann"
|
|
7
|
+
},
|
|
8
|
+
"dependencies": [
|
|
9
|
+
"lisa"
|
|
10
|
+
],
|
|
11
|
+
"hooks": {
|
|
12
|
+
"preToolUse": [
|
|
13
|
+
{
|
|
14
|
+
"matcher": "Write|Edit",
|
|
15
|
+
"hooks": [
|
|
16
|
+
{
|
|
17
|
+
"type": "command",
|
|
18
|
+
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/block-suppress-directives.sh"
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"postToolUse": [
|
|
24
|
+
{
|
|
25
|
+
"matcher": "Write|Edit",
|
|
26
|
+
"hooks": [
|
|
27
|
+
{
|
|
28
|
+
"type": "command",
|
|
29
|
+
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/format-on-edit.sh"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"type": "command",
|
|
33
|
+
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/sg-scan-on-edit.sh"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"type": "command",
|
|
37
|
+
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/lint-on-edit.sh"
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# This file is managed by Lisa.
|
|
3
|
+
# Do not edit directly — changes will be overwritten on the next `lisa` run.
|
|
4
|
+
#
|
|
5
|
+
# PreToolUse hook (Write|Edit): block adding error-suppression directives to
|
|
6
|
+
# JS/TS source. Suppressing the type checker, linter, or formatter hides real
|
|
7
|
+
# defects instead of fixing them, so it is a documented last resort (see the
|
|
8
|
+
# base "ASK FIRST" governance rule). The agent should stop and get the user's
|
|
9
|
+
# approval rather than slip a suppression past silently.
|
|
10
|
+
#
|
|
11
|
+
# Inspects only the NEW text the tool introduces, scoped to JS/TS files, and
|
|
12
|
+
# matches the directive only in comment syntax (// or /*) so prose, strings,
|
|
13
|
+
# and identifiers that merely mention these tokens are not flagged.
|
|
14
|
+
# Exit code 2 blocks the tool call and surfaces stderr to Claude.
|
|
15
|
+
# Reference: https://docs.claude.com/en/docs/claude-code/hooks
|
|
16
|
+
|
|
17
|
+
JSON_INPUT=$(cat)
|
|
18
|
+
|
|
19
|
+
# Project rule (.claude/rules/PROJECT_RULES.md): never parse JSON in shell with
|
|
20
|
+
# grep/sed/cut/awk — always use jq. Fail open without jq so we never hard-block
|
|
21
|
+
# the agent on missing tooling.
|
|
22
|
+
command -v jq >/dev/null 2>&1 || exit 0
|
|
23
|
+
|
|
24
|
+
FILE_PATH=$(printf '%s' "$JSON_INPUT" | jq -r '.tool_input.file_path // empty')
|
|
25
|
+
[ -n "$FILE_PATH" ] || exit 0
|
|
26
|
+
|
|
27
|
+
# Only guard JS/TS source. Directives in other file types (docs, configs that
|
|
28
|
+
# document the rules, this script) are not suppressions.
|
|
29
|
+
case "${FILE_PATH##*.}" in
|
|
30
|
+
ts | tsx | js | jsx | mjs | cjs) ;;
|
|
31
|
+
*) exit 0 ;;
|
|
32
|
+
esac
|
|
33
|
+
|
|
34
|
+
# Resolve the new text per tool shape:
|
|
35
|
+
# Write -> tool_input.content
|
|
36
|
+
# MultiEdit -> tool_input.edits[].new_string
|
|
37
|
+
# Edit -> tool_input.new_string
|
|
38
|
+
NEW_TEXT=$(printf '%s' "$JSON_INPUT" | jq -r '
|
|
39
|
+
.tool_input as $i
|
|
40
|
+
| if ($i.content // null) != null then $i.content
|
|
41
|
+
elif ($i.edits // null) != null then ([$i.edits[].new_string] | join("\n"))
|
|
42
|
+
elif ($i.new_string // null) != null then $i.new_string
|
|
43
|
+
else "" end')
|
|
44
|
+
|
|
45
|
+
# Comment-syntax-only match: a // or /* opener, optional whitespace, then the
|
|
46
|
+
# suppression directive. @ts-expect-error is intentionally NOT matched — it is
|
|
47
|
+
# the safer alternative this hook steers toward.
|
|
48
|
+
DIRECTIVE_RE='(//|/\*)[[:space:]]*(@ts-(ignore|nocheck)|eslint-disable|biome-ignore|prettier-ignore)'
|
|
49
|
+
|
|
50
|
+
if printf '%s' "$NEW_TEXT" | grep -Eq "$DIRECTIVE_RE"; then
|
|
51
|
+
cat >&2 <<MSG
|
|
52
|
+
❌ Blocked: error-suppression directive in $FILE_PATH
|
|
53
|
+
|
|
54
|
+
You are adding a @ts-ignore / @ts-nocheck / eslint-disable / biome-ignore /
|
|
55
|
+
prettier-ignore comment. These silence the type checker, linter, or formatter
|
|
56
|
+
instead of fixing the underlying problem. They are a last resort, not a default.
|
|
57
|
+
|
|
58
|
+
Fix it properly first:
|
|
59
|
+
- Resolve the actual type/lint error rather than suppressing it.
|
|
60
|
+
- Add the missing annotation, narrow the type, or restructure the code so the
|
|
61
|
+
rule passes legitimately.
|
|
62
|
+
- For a faulty dependency type, prefer a typed wrapper or module augmentation.
|
|
63
|
+
|
|
64
|
+
If — and only if — there is genuinely no other way (e.g. a known upstream bug):
|
|
65
|
+
- STOP and get the user's approval before suppressing (base "ASK FIRST" rule).
|
|
66
|
+
- Prefer @ts-expect-error over @ts-ignore (it fails once the error is gone).
|
|
67
|
+
- Scope the disable to one line and one rule, never a whole file.
|
|
68
|
+
- Include a "-- <reason>" description (eslint-comments/require-description).
|
|
69
|
+
MSG
|
|
70
|
+
exit 2
|
|
71
|
+
fi
|
|
72
|
+
|
|
73
|
+
exit 0
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# This file is managed by Lisa.
|
|
3
|
+
# Do not edit directly — changes will be overwritten on the next `lisa` run.
|
|
4
|
+
|
|
5
|
+
# Hook script to format files with Prettier after Claude edits them
|
|
6
|
+
# This script receives JSON input via stdin with tool information
|
|
7
|
+
# Reference: https://docs.claude.com/en/docs/claude-code/hooks
|
|
8
|
+
|
|
9
|
+
# Read the JSON input from stdin
|
|
10
|
+
JSON_INPUT=$(cat)
|
|
11
|
+
|
|
12
|
+
# Extract the file path from the tool_input. Use jq for robust JSON parsing
|
|
13
|
+
# (never grep/sed/cut — a JSON shape change silently skips formatting). Fail
|
|
14
|
+
# open without jq so we never hard-block an edit.
|
|
15
|
+
command -v jq >/dev/null 2>&1 || exit 0
|
|
16
|
+
FILE_PATH=$(printf '%s' "$JSON_INPUT" | jq -r '.tool_input.file_path // empty')
|
|
17
|
+
|
|
18
|
+
# Check if we successfully extracted a file path
|
|
19
|
+
if [ -z "$FILE_PATH" ]; then
|
|
20
|
+
echo "⚠ Skipping Prettier: Could not extract file path from Edit tool input" >&2
|
|
21
|
+
exit 0 # Exit gracefully to not interrupt Claude's workflow
|
|
22
|
+
fi
|
|
23
|
+
|
|
24
|
+
# Check if the file exists
|
|
25
|
+
if [ ! -f "$FILE_PATH" ]; then
|
|
26
|
+
echo "⚠ Skipping Prettier: File does not exist: $FILE_PATH" >&2
|
|
27
|
+
exit 0 # Exit gracefully
|
|
28
|
+
fi
|
|
29
|
+
|
|
30
|
+
# Get the file extension
|
|
31
|
+
FILE_EXT="${FILE_PATH##*.}"
|
|
32
|
+
|
|
33
|
+
# Check if this is a TypeScript or JavaScript file that should be formatted
|
|
34
|
+
# Based on package.json format command: "prettier --write \"src/**/*.ts\" \"test/**/*.ts\""
|
|
35
|
+
case "$FILE_EXT" in
|
|
36
|
+
ts|tsx|js|jsx|json)
|
|
37
|
+
# File type is supported for formatting
|
|
38
|
+
;;
|
|
39
|
+
*)
|
|
40
|
+
echo "ℹ Skipping Prettier: File type .$FILE_EXT is not configured for auto-formatting"
|
|
41
|
+
exit 0
|
|
42
|
+
;;
|
|
43
|
+
esac
|
|
44
|
+
|
|
45
|
+
# Change to the project directory to ensure package manager commands work
|
|
46
|
+
cd "$CLAUDE_PROJECT_DIR" || exit 0
|
|
47
|
+
|
|
48
|
+
# Resolve Prettier binary — prefer local node_modules/.bin, then package-manager exec
|
|
49
|
+
if [ -x "./node_modules/.bin/prettier" ]; then
|
|
50
|
+
PRETTIER_CMD="./node_modules/.bin/prettier"
|
|
51
|
+
PKG_MANAGER="npm"
|
|
52
|
+
elif [ -f "bun.lockb" ] || [ -f "bun.lock" ]; then
|
|
53
|
+
PRETTIER_CMD="bunx prettier"
|
|
54
|
+
PKG_MANAGER="bun"
|
|
55
|
+
elif [ -f "pnpm-lock.yaml" ]; then
|
|
56
|
+
PRETTIER_CMD="pnpm exec prettier"
|
|
57
|
+
PKG_MANAGER="pnpm"
|
|
58
|
+
elif [ -f "yarn.lock" ]; then
|
|
59
|
+
PRETTIER_CMD="yarn exec prettier"
|
|
60
|
+
PKG_MANAGER="yarn"
|
|
61
|
+
else
|
|
62
|
+
PRETTIER_CMD="npx prettier"
|
|
63
|
+
PKG_MANAGER="npm"
|
|
64
|
+
fi
|
|
65
|
+
|
|
66
|
+
# Run Prettier on the specific file
|
|
67
|
+
echo "🎨 Running Prettier on: $FILE_PATH"
|
|
68
|
+
$PRETTIER_CMD --write "$FILE_PATH" 2>&1 | grep -v "run v" | grep -v "Done in"
|
|
69
|
+
|
|
70
|
+
# Check the exit status
|
|
71
|
+
if [ ${PIPESTATUS[0]} -eq 0 ]; then
|
|
72
|
+
echo "✓ Successfully formatted: $(basename "$FILE_PATH")"
|
|
73
|
+
else
|
|
74
|
+
echo "⚠ Prettier formatting failed for: $FILE_PATH" >&2
|
|
75
|
+
echo " You may need to run '$PKG_MANAGER run format' manually to fix formatting issues." >&2
|
|
76
|
+
fi
|
|
77
|
+
|
|
78
|
+
# Always exit successfully to not interrupt Claude's workflow
|
|
79
|
+
exit 0
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# This file is managed by Lisa.
|
|
3
|
+
# Do not edit directly — changes will be overwritten on the next `lisa` run.
|
|
4
|
+
# =============================================================================
|
|
5
|
+
# Lint-on-Edit Hook (PostToolUse - Write|Edit)
|
|
6
|
+
# =============================================================================
|
|
7
|
+
# Runs oxlint --fix, then ESLint --fix --quiet --cache on each edited
|
|
8
|
+
# TypeScript file. Part of the inline self-correction pipeline:
|
|
9
|
+
# prettier → ast-grep → oxlint --fix → eslint --fix
|
|
10
|
+
#
|
|
11
|
+
# oxlint runs first because it's a Rust-native linter (~1000x faster) that
|
|
12
|
+
# covers the majority of rules, leaving only the slow / type-aware / plugin
|
|
13
|
+
# rules for ESLint to handle.
|
|
14
|
+
#
|
|
15
|
+
# Behavior:
|
|
16
|
+
# - Exit 0: lint passes or auto-fix resolved all errors
|
|
17
|
+
# - Exit 2: unfixable errors remain — blocks Claude so it fixes them immediately
|
|
18
|
+
#
|
|
19
|
+
# @see .claude/rules/verfication.md "Self-Correction Loop" section
|
|
20
|
+
# =============================================================================
|
|
21
|
+
|
|
22
|
+
# Extract file path from JSON input. Use jq for robust JSON parsing (never
|
|
23
|
+
# grep/sed/cut — a shape change would silently skip the blocking lint gate).
|
|
24
|
+
# Fail open without jq so we never hard-block an edit.
|
|
25
|
+
command -v jq >/dev/null 2>&1 || exit 0
|
|
26
|
+
FILE_PATH=$(cat | jq -r '.tool_input.file_path // empty')
|
|
27
|
+
|
|
28
|
+
if [ -z "$FILE_PATH" ] || [ ! -f "$FILE_PATH" ]; then
|
|
29
|
+
exit 0
|
|
30
|
+
fi
|
|
31
|
+
|
|
32
|
+
# Check if file type is supported (TypeScript only)
|
|
33
|
+
case "${FILE_PATH##*.}" in
|
|
34
|
+
ts|tsx) ;;
|
|
35
|
+
*) exit 0 ;;
|
|
36
|
+
esac
|
|
37
|
+
|
|
38
|
+
# Validate project directory
|
|
39
|
+
if [ -z "${CLAUDE_PROJECT_DIR:-}" ]; then
|
|
40
|
+
exit 0
|
|
41
|
+
fi
|
|
42
|
+
|
|
43
|
+
# Check if file is in a source directory
|
|
44
|
+
RELATIVE_PATH="${FILE_PATH#$CLAUDE_PROJECT_DIR/}"
|
|
45
|
+
case "$RELATIVE_PATH" in
|
|
46
|
+
src/*|apps/*|libs/*|test/*|tests/*|features/*|components/*|hooks/*|screens/*|app/*|constants/*|utils/*|providers/*|stores/*) ;;
|
|
47
|
+
*) exit 0 ;;
|
|
48
|
+
esac
|
|
49
|
+
|
|
50
|
+
cd "$CLAUDE_PROJECT_DIR" || exit 0
|
|
51
|
+
|
|
52
|
+
# Resolve oxlint and ESLint binaries — prefer local node_modules/.bin
|
|
53
|
+
if [ -x "./node_modules/.bin/oxlint" ]; then
|
|
54
|
+
OXLINT_CMD="./node_modules/.bin/oxlint"
|
|
55
|
+
elif [ -f "bun.lockb" ] || [ -f "bun.lock" ]; then
|
|
56
|
+
OXLINT_CMD="bunx oxlint"
|
|
57
|
+
elif [ -f "pnpm-lock.yaml" ]; then
|
|
58
|
+
OXLINT_CMD="pnpm exec oxlint"
|
|
59
|
+
elif [ -f "yarn.lock" ]; then
|
|
60
|
+
OXLINT_CMD="yarn exec oxlint"
|
|
61
|
+
else
|
|
62
|
+
OXLINT_CMD="npx oxlint"
|
|
63
|
+
fi
|
|
64
|
+
|
|
65
|
+
if [ -x "./node_modules/.bin/eslint" ]; then
|
|
66
|
+
ESLINT_CMD="./node_modules/.bin/eslint"
|
|
67
|
+
elif [ -f "bun.lockb" ] || [ -f "bun.lock" ]; then
|
|
68
|
+
ESLINT_CMD="bunx eslint"
|
|
69
|
+
elif [ -f "pnpm-lock.yaml" ]; then
|
|
70
|
+
ESLINT_CMD="pnpm exec eslint"
|
|
71
|
+
elif [ -f "yarn.lock" ]; then
|
|
72
|
+
ESLINT_CMD="yarn exec eslint"
|
|
73
|
+
else
|
|
74
|
+
ESLINT_CMD="npx eslint"
|
|
75
|
+
fi
|
|
76
|
+
|
|
77
|
+
# 1) oxlint --fix (REQUIRED in the Phase 2 hybrid pipeline)
|
|
78
|
+
# If oxlint is missing the project is out of sync with the current Lisa
|
|
79
|
+
# governance — fail loudly rather than silently skipping. ESLint alone is
|
|
80
|
+
# no longer a complete lint pass.
|
|
81
|
+
if [ ! -x "./node_modules/.bin/oxlint" ] && ! command -v "${OXLINT_CMD%% *}" >/dev/null 2>&1; then
|
|
82
|
+
echo "oxlint is required but not installed in this project." >&2
|
|
83
|
+
echo "Add 'oxlint' as a devDependency (Lisa governance pins it via package.lisa.json) and run install." >&2
|
|
84
|
+
exit 2
|
|
85
|
+
fi
|
|
86
|
+
|
|
87
|
+
if [ ! -f ".oxlintrc.json" ] && [ ! -f ".oxlintrc.jsonc" ] && [ ! -f "oxlint.config.ts" ]; then
|
|
88
|
+
echo "oxlint is installed but no .oxlintrc.json found. Run 'lisa update' to install the stack template." >&2
|
|
89
|
+
exit 2
|
|
90
|
+
fi
|
|
91
|
+
|
|
92
|
+
echo "Running oxlint --fix on: $FILE_PATH"
|
|
93
|
+
OX_OUTPUT=$($OXLINT_CMD --fix --quiet "$FILE_PATH" 2>&1)
|
|
94
|
+
OX_EXIT=$?
|
|
95
|
+
if [ $OX_EXIT -ne 0 ]; then
|
|
96
|
+
# Re-run without --fix to capture remaining errors
|
|
97
|
+
OX_OUTPUT=$($OXLINT_CMD --quiet "$FILE_PATH" 2>&1)
|
|
98
|
+
OX_EXIT=$?
|
|
99
|
+
if [ $OX_EXIT -ne 0 ]; then
|
|
100
|
+
echo "oxlint found unfixable errors in: $FILE_PATH" >&2
|
|
101
|
+
echo "$OX_OUTPUT" >&2
|
|
102
|
+
exit 2
|
|
103
|
+
fi
|
|
104
|
+
fi
|
|
105
|
+
|
|
106
|
+
# 2) ESLint --fix --quiet --cache
|
|
107
|
+
# --quiet: suppress warnings, only show errors
|
|
108
|
+
# --cache: use ESLint cache for performance
|
|
109
|
+
# --rule: disable no-unused-vars auto-fix to prevent removing imports that Claude
|
|
110
|
+
# plans to use in a subsequent edit (pre-commit hook still catches them)
|
|
111
|
+
echo "Running ESLint --fix on: $FILE_PATH"
|
|
112
|
+
|
|
113
|
+
# First pass: attempt auto-fix
|
|
114
|
+
OUTPUT=$($ESLINT_CMD --fix --quiet --cache --rule '@typescript-eslint/no-unused-vars: off' "$FILE_PATH" 2>&1)
|
|
115
|
+
FIX_EXIT=$?
|
|
116
|
+
|
|
117
|
+
if [ $FIX_EXIT -eq 0 ]; then
|
|
118
|
+
echo "ESLint: No errors in $(basename "$FILE_PATH")"
|
|
119
|
+
exit 0
|
|
120
|
+
fi
|
|
121
|
+
|
|
122
|
+
# Auto-fix resolved some issues but errors remain — re-run to get remaining errors
|
|
123
|
+
OUTPUT=$($ESLINT_CMD --quiet --cache "$FILE_PATH" 2>&1)
|
|
124
|
+
LINT_EXIT=$?
|
|
125
|
+
|
|
126
|
+
if [ $LINT_EXIT -eq 0 ]; then
|
|
127
|
+
echo "ESLint: Auto-fixed all errors in $(basename "$FILE_PATH")"
|
|
128
|
+
exit 0
|
|
129
|
+
fi
|
|
130
|
+
|
|
131
|
+
# Unfixable errors remain — block with feedback
|
|
132
|
+
echo "ESLint found unfixable errors in: $FILE_PATH" >&2
|
|
133
|
+
echo "$OUTPUT" >&2
|
|
134
|
+
exit 2
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# This file is managed by Lisa.
|
|
3
|
+
# Do not edit directly — changes will be overwritten on the next `lisa` run.
|
|
4
|
+
|
|
5
|
+
# Hook script to run ast-grep scan after Claude edits files
|
|
6
|
+
# This script receives JSON input via stdin with tool information
|
|
7
|
+
# Reference: https://docs.claude.com/en/docs/claude-code/hooks
|
|
8
|
+
# Note: This hook is BLOCKING - it returns non-zero exit codes so Claude must fix issues
|
|
9
|
+
|
|
10
|
+
# Extract file path from JSON input. Use jq for robust JSON parsing (never
|
|
11
|
+
# grep/sed/cut — a shape change would turn this blocking scan into a silent
|
|
12
|
+
# no-op). Fail open without jq so we never hard-block an edit.
|
|
13
|
+
command -v jq >/dev/null 2>&1 || exit 0
|
|
14
|
+
FILE_PATH=$(cat | jq -r '.tool_input.file_path // empty')
|
|
15
|
+
|
|
16
|
+
if [ -z "$FILE_PATH" ] || [ ! -f "$FILE_PATH" ]; then
|
|
17
|
+
exit 0
|
|
18
|
+
fi
|
|
19
|
+
|
|
20
|
+
# Check if file type is supported (TypeScript, JavaScript)
|
|
21
|
+
case "${FILE_PATH##*.}" in
|
|
22
|
+
ts|tsx|js|jsx|mjs|cjs) ;;
|
|
23
|
+
*) exit 0 ;;
|
|
24
|
+
esac
|
|
25
|
+
|
|
26
|
+
# Validate project directory
|
|
27
|
+
if [ -z "${CLAUDE_PROJECT_DIR:-}" ]; then
|
|
28
|
+
exit 0
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
# Check if file is in a source directory
|
|
32
|
+
RELATIVE_PATH="${FILE_PATH#$CLAUDE_PROJECT_DIR/}"
|
|
33
|
+
case "$RELATIVE_PATH" in
|
|
34
|
+
src/*|apps/*|libs/*|test/*|tests/*|features/*|components/*|hooks/*|screens/*|app/*|constants/*|utils/*|providers/*|stores/*) ;;
|
|
35
|
+
*) exit 0 ;;
|
|
36
|
+
esac
|
|
37
|
+
|
|
38
|
+
cd "$CLAUDE_PROJECT_DIR" || exit 0
|
|
39
|
+
|
|
40
|
+
# Verify ast-grep configuration exists
|
|
41
|
+
if [ ! -f "sgconfig.yml" ]; then
|
|
42
|
+
exit 0
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
# Verify rules are defined
|
|
46
|
+
RULE_COUNT=$(find ast-grep/rules -name "*.yml" -o -name "*.yaml" 2>/dev/null | grep -v ".gitkeep" | wc -l | tr -d ' ')
|
|
47
|
+
if [ "$RULE_COUNT" -eq 0 ]; then
|
|
48
|
+
exit 0
|
|
49
|
+
fi
|
|
50
|
+
|
|
51
|
+
# Detect package manager
|
|
52
|
+
if [ -f "bun.lockb" ] || [ -f "bun.lock" ]; then
|
|
53
|
+
PKG_MANAGER="bun"
|
|
54
|
+
elif [ -f "pnpm-lock.yaml" ]; then
|
|
55
|
+
PKG_MANAGER="pnpm"
|
|
56
|
+
elif [ -f "yarn.lock" ]; then
|
|
57
|
+
PKG_MANAGER="yarn"
|
|
58
|
+
else
|
|
59
|
+
PKG_MANAGER="npm"
|
|
60
|
+
fi
|
|
61
|
+
|
|
62
|
+
# Run ast-grep scan
|
|
63
|
+
echo "Running ast-grep scan on: $FILE_PATH"
|
|
64
|
+
if OUTPUT=$($PKG_MANAGER run sg:scan "$FILE_PATH" 2>&1); then
|
|
65
|
+
echo "ast-grep: No issues found in $(basename "$FILE_PATH")"
|
|
66
|
+
exit 0
|
|
67
|
+
else
|
|
68
|
+
echo "ast-grep found issues in: $FILE_PATH" >&2
|
|
69
|
+
echo "$OUTPUT" >&2
|
|
70
|
+
exit 1
|
|
71
|
+
fi
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "lisa-typescript",
|
|
3
|
+
"version": "2.123.0",
|
|
4
|
+
"description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Cody Swann"
|
|
7
|
+
},
|
|
8
|
+
"dependencies": [
|
|
9
|
+
"lisa"
|
|
10
|
+
],
|
|
11
|
+
"hooks": {
|
|
12
|
+
"PreToolUse": [
|
|
13
|
+
{
|
|
14
|
+
"matcher": "Write|Edit",
|
|
15
|
+
"hooks": [
|
|
16
|
+
{
|
|
17
|
+
"type": "command",
|
|
18
|
+
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/block-suppress-directives.sh"
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"PostToolUse": [
|
|
24
|
+
{
|
|
25
|
+
"matcher": "Write|Edit",
|
|
26
|
+
"hooks": [
|
|
27
|
+
{
|
|
28
|
+
"type": "command",
|
|
29
|
+
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/format-on-edit.sh"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"type": "command",
|
|
33
|
+
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/sg-scan-on-edit.sh"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"type": "command",
|
|
37
|
+
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/lint-on-edit.sh"
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# This file is managed by Lisa.
|
|
3
|
+
# Do not edit directly — changes will be overwritten on the next `lisa` run.
|
|
4
|
+
#
|
|
5
|
+
# PreToolUse hook (Write|Edit): block adding error-suppression directives to
|
|
6
|
+
# JS/TS source. Suppressing the type checker, linter, or formatter hides real
|
|
7
|
+
# defects instead of fixing them, so it is a documented last resort (see the
|
|
8
|
+
# base "ASK FIRST" governance rule). The agent should stop and get the user's
|
|
9
|
+
# approval rather than slip a suppression past silently.
|
|
10
|
+
#
|
|
11
|
+
# Inspects only the NEW text the tool introduces, scoped to JS/TS files, and
|
|
12
|
+
# matches the directive only in comment syntax (// or /*) so prose, strings,
|
|
13
|
+
# and identifiers that merely mention these tokens are not flagged.
|
|
14
|
+
# Exit code 2 blocks the tool call and surfaces stderr to Claude.
|
|
15
|
+
# Reference: https://docs.claude.com/en/docs/claude-code/hooks
|
|
16
|
+
|
|
17
|
+
JSON_INPUT=$(cat)
|
|
18
|
+
|
|
19
|
+
# Project rule (.claude/rules/PROJECT_RULES.md): never parse JSON in shell with
|
|
20
|
+
# grep/sed/cut/awk — always use jq. Fail open without jq so we never hard-block
|
|
21
|
+
# the agent on missing tooling.
|
|
22
|
+
command -v jq >/dev/null 2>&1 || exit 0
|
|
23
|
+
|
|
24
|
+
FILE_PATH=$(printf '%s' "$JSON_INPUT" | jq -r '.tool_input.file_path // empty')
|
|
25
|
+
[ -n "$FILE_PATH" ] || exit 0
|
|
26
|
+
|
|
27
|
+
# Only guard JS/TS source. Directives in other file types (docs, configs that
|
|
28
|
+
# document the rules, this script) are not suppressions.
|
|
29
|
+
case "${FILE_PATH##*.}" in
|
|
30
|
+
ts | tsx | js | jsx | mjs | cjs) ;;
|
|
31
|
+
*) exit 0 ;;
|
|
32
|
+
esac
|
|
33
|
+
|
|
34
|
+
# Resolve the new text per tool shape:
|
|
35
|
+
# Write -> tool_input.content
|
|
36
|
+
# MultiEdit -> tool_input.edits[].new_string
|
|
37
|
+
# Edit -> tool_input.new_string
|
|
38
|
+
NEW_TEXT=$(printf '%s' "$JSON_INPUT" | jq -r '
|
|
39
|
+
.tool_input as $i
|
|
40
|
+
| if ($i.content // null) != null then $i.content
|
|
41
|
+
elif ($i.edits // null) != null then ([$i.edits[].new_string] | join("\n"))
|
|
42
|
+
elif ($i.new_string // null) != null then $i.new_string
|
|
43
|
+
else "" end')
|
|
44
|
+
|
|
45
|
+
# Comment-syntax-only match: a // or /* opener, optional whitespace, then the
|
|
46
|
+
# suppression directive. @ts-expect-error is intentionally NOT matched — it is
|
|
47
|
+
# the safer alternative this hook steers toward.
|
|
48
|
+
DIRECTIVE_RE='(//|/\*)[[:space:]]*(@ts-(ignore|nocheck)|eslint-disable|biome-ignore|prettier-ignore)'
|
|
49
|
+
|
|
50
|
+
if printf '%s' "$NEW_TEXT" | grep -Eq "$DIRECTIVE_RE"; then
|
|
51
|
+
cat >&2 <<MSG
|
|
52
|
+
❌ Blocked: error-suppression directive in $FILE_PATH
|
|
53
|
+
|
|
54
|
+
You are adding a @ts-ignore / @ts-nocheck / eslint-disable / biome-ignore /
|
|
55
|
+
prettier-ignore comment. These silence the type checker, linter, or formatter
|
|
56
|
+
instead of fixing the underlying problem. They are a last resort, not a default.
|
|
57
|
+
|
|
58
|
+
Fix it properly first:
|
|
59
|
+
- Resolve the actual type/lint error rather than suppressing it.
|
|
60
|
+
- Add the missing annotation, narrow the type, or restructure the code so the
|
|
61
|
+
rule passes legitimately.
|
|
62
|
+
- For a faulty dependency type, prefer a typed wrapper or module augmentation.
|
|
63
|
+
|
|
64
|
+
If — and only if — there is genuinely no other way (e.g. a known upstream bug):
|
|
65
|
+
- STOP and get the user's approval before suppressing (base "ASK FIRST" rule).
|
|
66
|
+
- Prefer @ts-expect-error over @ts-ignore (it fails once the error is gone).
|
|
67
|
+
- Scope the disable to one line and one rule, never a whole file.
|
|
68
|
+
- Include a "-- <reason>" description (eslint-comments/require-description).
|
|
69
|
+
MSG
|
|
70
|
+
exit 2
|
|
71
|
+
fi
|
|
72
|
+
|
|
73
|
+
exit 0
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# This file is managed by Lisa.
|
|
3
|
+
# Do not edit directly — changes will be overwritten on the next `lisa` run.
|
|
4
|
+
|
|
5
|
+
# Hook script to format files with Prettier after Claude edits them
|
|
6
|
+
# This script receives JSON input via stdin with tool information
|
|
7
|
+
# Reference: https://docs.claude.com/en/docs/claude-code/hooks
|
|
8
|
+
|
|
9
|
+
# Read the JSON input from stdin
|
|
10
|
+
JSON_INPUT=$(cat)
|
|
11
|
+
|
|
12
|
+
# Extract the file path from the tool_input. Use jq for robust JSON parsing
|
|
13
|
+
# (never grep/sed/cut — a JSON shape change silently skips formatting). Fail
|
|
14
|
+
# open without jq so we never hard-block an edit.
|
|
15
|
+
command -v jq >/dev/null 2>&1 || exit 0
|
|
16
|
+
FILE_PATH=$(printf '%s' "$JSON_INPUT" | jq -r '.tool_input.file_path // empty')
|
|
17
|
+
|
|
18
|
+
# Check if we successfully extracted a file path
|
|
19
|
+
if [ -z "$FILE_PATH" ]; then
|
|
20
|
+
echo "⚠ Skipping Prettier: Could not extract file path from Edit tool input" >&2
|
|
21
|
+
exit 0 # Exit gracefully to not interrupt Claude's workflow
|
|
22
|
+
fi
|
|
23
|
+
|
|
24
|
+
# Check if the file exists
|
|
25
|
+
if [ ! -f "$FILE_PATH" ]; then
|
|
26
|
+
echo "⚠ Skipping Prettier: File does not exist: $FILE_PATH" >&2
|
|
27
|
+
exit 0 # Exit gracefully
|
|
28
|
+
fi
|
|
29
|
+
|
|
30
|
+
# Get the file extension
|
|
31
|
+
FILE_EXT="${FILE_PATH##*.}"
|
|
32
|
+
|
|
33
|
+
# Check if this is a TypeScript or JavaScript file that should be formatted
|
|
34
|
+
# Based on package.json format command: "prettier --write \"src/**/*.ts\" \"test/**/*.ts\""
|
|
35
|
+
case "$FILE_EXT" in
|
|
36
|
+
ts|tsx|js|jsx|json)
|
|
37
|
+
# File type is supported for formatting
|
|
38
|
+
;;
|
|
39
|
+
*)
|
|
40
|
+
echo "ℹ Skipping Prettier: File type .$FILE_EXT is not configured for auto-formatting"
|
|
41
|
+
exit 0
|
|
42
|
+
;;
|
|
43
|
+
esac
|
|
44
|
+
|
|
45
|
+
# Change to the project directory to ensure package manager commands work
|
|
46
|
+
cd "$CLAUDE_PROJECT_DIR" || exit 0
|
|
47
|
+
|
|
48
|
+
# Resolve Prettier binary — prefer local node_modules/.bin, then package-manager exec
|
|
49
|
+
if [ -x "./node_modules/.bin/prettier" ]; then
|
|
50
|
+
PRETTIER_CMD="./node_modules/.bin/prettier"
|
|
51
|
+
PKG_MANAGER="npm"
|
|
52
|
+
elif [ -f "bun.lockb" ] || [ -f "bun.lock" ]; then
|
|
53
|
+
PRETTIER_CMD="bunx prettier"
|
|
54
|
+
PKG_MANAGER="bun"
|
|
55
|
+
elif [ -f "pnpm-lock.yaml" ]; then
|
|
56
|
+
PRETTIER_CMD="pnpm exec prettier"
|
|
57
|
+
PKG_MANAGER="pnpm"
|
|
58
|
+
elif [ -f "yarn.lock" ]; then
|
|
59
|
+
PRETTIER_CMD="yarn exec prettier"
|
|
60
|
+
PKG_MANAGER="yarn"
|
|
61
|
+
else
|
|
62
|
+
PRETTIER_CMD="npx prettier"
|
|
63
|
+
PKG_MANAGER="npm"
|
|
64
|
+
fi
|
|
65
|
+
|
|
66
|
+
# Run Prettier on the specific file
|
|
67
|
+
echo "🎨 Running Prettier on: $FILE_PATH"
|
|
68
|
+
$PRETTIER_CMD --write "$FILE_PATH" 2>&1 | grep -v "run v" | grep -v "Done in"
|
|
69
|
+
|
|
70
|
+
# Check the exit status
|
|
71
|
+
if [ ${PIPESTATUS[0]} -eq 0 ]; then
|
|
72
|
+
echo "✓ Successfully formatted: $(basename "$FILE_PATH")"
|
|
73
|
+
else
|
|
74
|
+
echo "⚠ Prettier formatting failed for: $FILE_PATH" >&2
|
|
75
|
+
echo " You may need to run '$PKG_MANAGER run format' manually to fix formatting issues." >&2
|
|
76
|
+
fi
|
|
77
|
+
|
|
78
|
+
# Always exit successfully to not interrupt Claude's workflow
|
|
79
|
+
exit 0
|