@codyswann/lisa 1.48.0 → 1.50.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 +48 -0
- package/all/deletions.json +5 -1
- package/all/merge/.claude/settings.json +28 -0
- package/cdk/copy-overwrite/eslint.config.ts +11 -21
- package/cdk/copy-overwrite/eslint.slow.config.ts +4 -73
- package/cdk/copy-overwrite/jest.config.ts +14 -12
- package/cdk/copy-overwrite/tsconfig.json +1 -1
- package/cdk/merge/.claude/settings.json +29 -0
- package/cdk/package-lisa/package.lisa.json +1 -0
- package/dist/configs/eslint/base.d.ts +1491 -0
- package/dist/configs/eslint/base.d.ts.map +1 -0
- package/dist/configs/eslint/base.js +386 -0
- package/dist/configs/eslint/base.js.map +1 -0
- package/dist/configs/eslint/cdk.d.ts +32 -0
- package/dist/configs/eslint/cdk.d.ts.map +1 -0
- package/dist/configs/eslint/cdk.js +127 -0
- package/dist/configs/eslint/cdk.js.map +1 -0
- package/dist/configs/eslint/expo.d.ts +16 -0
- package/dist/configs/eslint/expo.d.ts.map +1 -0
- package/dist/configs/eslint/expo.js +264 -0
- package/dist/configs/eslint/expo.js.map +1 -0
- package/dist/configs/eslint/index.d.ts +18 -0
- package/dist/configs/eslint/index.d.ts.map +1 -0
- package/dist/configs/eslint/index.js +18 -0
- package/dist/configs/eslint/index.js.map +1 -0
- package/dist/configs/eslint/nestjs.d.ts +32 -0
- package/dist/configs/eslint/nestjs.d.ts.map +1 -0
- package/dist/configs/eslint/nestjs.js +128 -0
- package/dist/configs/eslint/nestjs.js.map +1 -0
- package/dist/configs/eslint/slow.d.ts +80 -0
- package/dist/configs/eslint/slow.d.ts.map +1 -0
- package/dist/configs/eslint/slow.js +83 -0
- package/dist/configs/eslint/slow.js.map +1 -0
- package/dist/configs/eslint/typescript.d.ts +19 -0
- package/dist/configs/eslint/typescript.d.ts.map +1 -0
- package/dist/configs/eslint/typescript.js +81 -0
- package/dist/configs/eslint/typescript.js.map +1 -0
- package/{typescript/copy-overwrite/jest.base.ts → dist/configs/jest/base.d.ts} +9 -69
- package/dist/configs/jest/base.d.ts.map +1 -0
- package/dist/configs/jest/base.js +83 -0
- package/dist/configs/jest/base.js.map +1 -0
- package/dist/configs/jest/cdk.d.ts +35 -0
- package/dist/configs/jest/cdk.d.ts.map +1 -0
- package/dist/configs/jest/cdk.js +30 -0
- package/dist/configs/jest/cdk.js.map +1 -0
- package/dist/configs/jest/expo.d.ts +56 -0
- package/dist/configs/jest/expo.d.ts.map +1 -0
- package/dist/configs/jest/expo.js +60 -0
- package/dist/configs/jest/expo.js.map +1 -0
- package/dist/configs/jest/index.d.ts +14 -0
- package/dist/configs/jest/index.d.ts.map +1 -0
- package/dist/configs/jest/index.js +14 -0
- package/dist/configs/jest/index.js.map +1 -0
- package/dist/configs/jest/nestjs.d.ts +35 -0
- package/dist/configs/jest/nestjs.d.ts.map +1 -0
- package/dist/configs/jest/nestjs.js +47 -0
- package/dist/configs/jest/nestjs.js.map +1 -0
- package/dist/configs/jest/typescript.d.ts +31 -0
- package/dist/configs/jest/typescript.d.ts.map +1 -0
- package/dist/configs/jest/typescript.js +34 -0
- package/dist/configs/jest/typescript.js.map +1 -0
- package/expo/copy-overwrite/eslint.config.ts +5 -20
- package/expo/copy-overwrite/eslint.slow.config.ts +4 -90
- package/expo/copy-overwrite/jest.config.ts +14 -12
- package/expo/copy-overwrite/tsconfig.json +1 -1
- package/expo/merge/.claude/settings.json +29 -0
- package/expo/package-lisa/package.lisa.json +1 -10
- package/nestjs/copy-overwrite/eslint.config.ts +5 -20
- package/nestjs/copy-overwrite/eslint.slow.config.ts +4 -89
- package/nestjs/copy-overwrite/jest.config.ts +14 -12
- package/nestjs/copy-overwrite/tsconfig.json +1 -1
- package/nestjs/merge/.claude/settings.json +29 -0
- package/nestjs/package-lisa/package.lisa.json +1 -0
- package/package.json +82 -43
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +86 -0
- package/plugins/lisa-cdk/agents/agent-architect.md +310 -0
- package/plugins/lisa-cdk/agents/architecture-specialist.md +53 -0
- package/plugins/lisa-cdk/agents/debug-specialist.md +204 -0
- package/plugins/lisa-cdk/agents/git-history-analyzer.md +183 -0
- package/plugins/lisa-cdk/agents/hooks-expert.md +74 -0
- package/plugins/lisa-cdk/agents/implementer.md +54 -0
- package/plugins/lisa-cdk/agents/learner.md +44 -0
- package/plugins/lisa-cdk/agents/performance-specialist.md +95 -0
- package/plugins/lisa-cdk/agents/product-specialist.md +72 -0
- package/plugins/lisa-cdk/agents/quality-specialist.md +55 -0
- package/plugins/lisa-cdk/agents/security-specialist.md +58 -0
- package/plugins/lisa-cdk/agents/skill-evaluator.md +246 -0
- package/plugins/lisa-cdk/agents/slash-command-architect.md +87 -0
- package/plugins/lisa-cdk/agents/test-specialist.md +64 -0
- package/plugins/lisa-cdk/agents/verification-specialist.md +189 -0
- package/plugins/lisa-cdk/agents/web-search-researcher.md +112 -0
- package/plugins/lisa-cdk/commands/git-commit-and-submit-pr.md +7 -0
- package/plugins/lisa-cdk/commands/git-commit-submit-pr-and-verify.md +7 -0
- package/plugins/lisa-cdk/commands/git-commit-submit-pr-deploy-and-verify.md +7 -0
- package/plugins/lisa-cdk/commands/git-commit.md +7 -0
- package/plugins/lisa-cdk/commands/git-prune.md +6 -0
- package/plugins/lisa-cdk/commands/git-submit-pr.md +7 -0
- package/plugins/lisa-cdk/commands/jira-add-journey.md +7 -0
- package/plugins/lisa-cdk/commands/jira-create.md +7 -0
- package/plugins/lisa-cdk/commands/jira-evidence.md +7 -0
- package/plugins/lisa-cdk/commands/jira-fix.md +7 -0
- package/plugins/lisa-cdk/commands/jira-implement.md +7 -0
- package/plugins/lisa-cdk/commands/jira-journey.md +7 -0
- package/plugins/lisa-cdk/commands/jira-sync.md +7 -0
- package/plugins/lisa-cdk/commands/jira-verify.md +7 -0
- package/plugins/lisa-cdk/commands/lisa-review-implementation.md +7 -0
- package/plugins/lisa-cdk/commands/plan-add-test-coverage.md +7 -0
- package/plugins/lisa-cdk/commands/plan-create.md +6 -0
- package/plugins/lisa-cdk/commands/plan-execute.md +7 -0
- package/plugins/lisa-cdk/commands/plan-fix-linter-error.md +7 -0
- package/plugins/lisa-cdk/commands/plan-local-code-review.md +6 -0
- package/plugins/lisa-cdk/commands/plan-lower-code-complexity.md +6 -0
- package/plugins/lisa-cdk/commands/plan-reduce-max-lines-per-function.md +7 -0
- package/plugins/lisa-cdk/commands/plan-reduce-max-lines.md +7 -0
- package/plugins/lisa-cdk/commands/pull-request-review.md +7 -0
- package/plugins/lisa-cdk/commands/security-zap-scan.md +6 -0
- package/plugins/lisa-cdk/commands/sonarqube-check.md +6 -0
- package/plugins/lisa-cdk/commands/sonarqube-fix.md +6 -0
- package/plugins/lisa-cdk/commands/tasks-load.md +7 -0
- package/plugins/lisa-cdk/commands/tasks-sync.md +7 -0
- package/plugins/lisa-cdk/hooks/debug-hook.sh +47 -0
- package/plugins/lisa-cdk/hooks/enforce-plan-rules.sh +15 -0
- package/plugins/lisa-cdk/hooks/format-on-edit.sh +76 -0
- package/plugins/lisa-cdk/hooks/install-pkgs.sh +64 -0
- package/plugins/lisa-cdk/hooks/lint-on-edit.sh +81 -0
- package/plugins/lisa-cdk/hooks/notify-ntfy.sh +183 -0
- package/plugins/lisa-cdk/hooks/setup-jira-cli.sh +52 -0
- package/plugins/lisa-cdk/hooks/sg-scan-on-edit.sh +68 -0
- package/plugins/lisa-cdk/hooks/sync-tasks.sh +107 -0
- package/plugins/lisa-cdk/hooks/ticket-sync-reminder.sh +23 -0
- package/plugins/lisa-cdk/hooks/track-plan-sessions.sh +164 -0
- package/plugins/lisa-cdk/hooks/verify-completion.sh +77 -0
- package/plugins/lisa-cdk/rules/coding-philosophy.md +428 -0
- package/plugins/lisa-cdk/rules/lisa.md +37 -0
- package/plugins/lisa-cdk/rules/verfication.md +596 -0
- package/plugins/lisa-cdk/skills/agent-design-best-practices/SKILL.md +219 -0
- package/plugins/lisa-cdk/skills/git-commit/SKILL.md +48 -0
- package/plugins/lisa-cdk/skills/git-commit-and-submit-pr/SKILL.md +8 -0
- package/plugins/lisa-cdk/skills/git-commit-submit-pr-and-verify/SKILL.md +7 -0
- package/plugins/lisa-cdk/skills/git-commit-submit-pr-deploy-and-verify/SKILL.md +7 -0
- package/plugins/lisa-cdk/skills/git-prune/SKILL.md +35 -0
- package/plugins/lisa-cdk/skills/git-submit-pr/SKILL.md +44 -0
- package/plugins/lisa-cdk/skills/jira-add-journey/SKILL.md +120 -0
- package/plugins/lisa-cdk/skills/jira-create/SKILL.md +95 -0
- package/plugins/lisa-cdk/skills/jira-evidence/SKILL.md +73 -0
- package/plugins/lisa-cdk/skills/jira-evidence/scripts/post-evidence.sh +163 -0
- package/plugins/lisa-cdk/skills/jira-fix/SKILL.md +16 -0
- package/plugins/lisa-cdk/skills/jira-implement/SKILL.md +18 -0
- package/plugins/lisa-cdk/skills/jira-journey/SKILL.md +125 -0
- package/plugins/lisa-cdk/skills/jira-journey/scripts/generate-templates.py +233 -0
- package/plugins/lisa-cdk/skills/jira-journey/scripts/parse-plan.py +368 -0
- package/plugins/lisa-cdk/skills/jira-sync/SKILL.md +63 -0
- package/plugins/lisa-cdk/skills/jira-verify/SKILL.md +48 -0
- package/plugins/lisa-cdk/skills/jsdoc-best-practices/SKILL.md +432 -0
- package/plugins/lisa-cdk/skills/lisa-review-implementation/SKILL.md +209 -0
- package/plugins/lisa-cdk/skills/plan-add-test-coverage/SKILL.md +44 -0
- package/plugins/lisa-cdk/skills/plan-execute/SKILL.md +89 -0
- package/plugins/lisa-cdk/skills/plan-fix-linter-error/SKILL.md +45 -0
- package/plugins/lisa-cdk/skills/plan-local-code-review/SKILL.md +88 -0
- package/plugins/lisa-cdk/skills/plan-lower-code-complexity/SKILL.md +44 -0
- package/plugins/lisa-cdk/skills/plan-reduce-max-lines/SKILL.md +45 -0
- package/plugins/lisa-cdk/skills/plan-reduce-max-lines-per-function/SKILL.md +46 -0
- package/plugins/lisa-cdk/skills/pull-request-review/SKILL.md +68 -0
- package/plugins/lisa-cdk/skills/security-zap-scan/SKILL.md +33 -0
- package/plugins/lisa-cdk/skills/skill-creator/LICENSE.txt +202 -0
- package/plugins/lisa-cdk/skills/skill-creator/SKILL.md +210 -0
- package/plugins/lisa-cdk/skills/skill-creator/scripts/init_skill.py +305 -0
- package/plugins/lisa-cdk/skills/skill-creator/scripts/package_skill.py +112 -0
- package/plugins/lisa-cdk/skills/skill-creator/scripts/quick_validate.py +67 -0
- package/plugins/lisa-cdk/skills/sonarqube-check/SKILL.md +11 -0
- package/plugins/lisa-cdk/skills/sonarqube-fix/SKILL.md +8 -0
- package/plugins/lisa-cdk/skills/tasks-load/SKILL.md +88 -0
- package/plugins/lisa-cdk/skills/tasks-sync/SKILL.md +108 -0
- package/plugins/lisa-expo/.claude-plugin/plugin.json +86 -0
- package/plugins/lisa-expo/agents/agent-architect.md +310 -0
- package/plugins/lisa-expo/agents/architecture-specialist.md +53 -0
- package/plugins/lisa-expo/agents/debug-specialist.md +204 -0
- package/plugins/lisa-expo/agents/git-history-analyzer.md +183 -0
- package/plugins/lisa-expo/agents/hooks-expert.md +74 -0
- package/plugins/lisa-expo/agents/implementer.md +54 -0
- package/plugins/lisa-expo/agents/learner.md +44 -0
- package/plugins/lisa-expo/agents/ops-specialist.md +124 -0
- package/plugins/lisa-expo/agents/performance-specialist.md +95 -0
- package/plugins/lisa-expo/agents/product-specialist.md +72 -0
- package/plugins/lisa-expo/agents/quality-specialist.md +55 -0
- package/plugins/lisa-expo/agents/security-specialist.md +58 -0
- package/plugins/lisa-expo/agents/skill-evaluator.md +246 -0
- package/plugins/lisa-expo/agents/slash-command-architect.md +87 -0
- package/plugins/lisa-expo/agents/test-specialist.md +64 -0
- package/plugins/lisa-expo/agents/verification-specialist.md +189 -0
- package/plugins/lisa-expo/agents/web-search-researcher.md +112 -0
- package/plugins/lisa-expo/commands/git-commit-and-submit-pr.md +7 -0
- package/plugins/lisa-expo/commands/git-commit-submit-pr-and-verify.md +7 -0
- package/plugins/lisa-expo/commands/git-commit-submit-pr-deploy-and-verify.md +7 -0
- package/plugins/lisa-expo/commands/git-commit.md +7 -0
- package/plugins/lisa-expo/commands/git-prune.md +6 -0
- package/plugins/lisa-expo/commands/git-submit-pr.md +7 -0
- package/plugins/lisa-expo/commands/jira-add-journey.md +7 -0
- package/plugins/lisa-expo/commands/jira-create.md +7 -0
- package/plugins/lisa-expo/commands/jira-evidence.md +7 -0
- package/plugins/lisa-expo/commands/jira-fix.md +7 -0
- package/plugins/lisa-expo/commands/jira-implement.md +7 -0
- package/plugins/lisa-expo/commands/jira-journey.md +7 -0
- package/plugins/lisa-expo/commands/jira-sync.md +7 -0
- package/plugins/lisa-expo/commands/jira-verify.md +7 -0
- package/plugins/lisa-expo/commands/lisa-review-implementation.md +7 -0
- package/plugins/lisa-expo/commands/plan-add-test-coverage.md +7 -0
- package/plugins/lisa-expo/commands/plan-create.md +6 -0
- package/plugins/lisa-expo/commands/plan-execute.md +7 -0
- package/plugins/lisa-expo/commands/plan-fix-linter-error.md +7 -0
- package/plugins/lisa-expo/commands/plan-local-code-review.md +6 -0
- package/plugins/lisa-expo/commands/plan-lower-code-complexity.md +6 -0
- package/plugins/lisa-expo/commands/plan-reduce-max-lines-per-function.md +7 -0
- package/plugins/lisa-expo/commands/plan-reduce-max-lines.md +7 -0
- package/plugins/lisa-expo/commands/pull-request-review.md +7 -0
- package/plugins/lisa-expo/commands/security-zap-scan.md +6 -0
- package/plugins/lisa-expo/commands/sonarqube-check.md +6 -0
- package/plugins/lisa-expo/commands/sonarqube-fix.md +6 -0
- package/plugins/lisa-expo/commands/tasks-load.md +7 -0
- package/plugins/lisa-expo/commands/tasks-sync.md +7 -0
- package/plugins/lisa-expo/hooks/debug-hook.sh +47 -0
- package/plugins/lisa-expo/hooks/enforce-plan-rules.sh +15 -0
- package/plugins/lisa-expo/hooks/format-on-edit.sh +76 -0
- package/plugins/lisa-expo/hooks/install-pkgs.sh +64 -0
- package/plugins/lisa-expo/hooks/lint-on-edit.sh +81 -0
- package/plugins/lisa-expo/hooks/notify-ntfy.sh +183 -0
- package/plugins/lisa-expo/hooks/setup-jira-cli.sh +52 -0
- package/plugins/lisa-expo/hooks/sg-scan-on-edit.sh +68 -0
- package/plugins/lisa-expo/hooks/sync-tasks.sh +107 -0
- package/plugins/lisa-expo/hooks/ticket-sync-reminder.sh +23 -0
- package/plugins/lisa-expo/hooks/track-plan-sessions.sh +164 -0
- package/plugins/lisa-expo/hooks/verify-completion.sh +77 -0
- package/plugins/lisa-expo/rules/README.md +240 -0
- package/plugins/lisa-expo/rules/coding-philosophy.md +428 -0
- package/plugins/lisa-expo/rules/expo-verification.md +261 -0
- package/plugins/lisa-expo/rules/lisa.md +37 -0
- package/plugins/lisa-expo/rules/verfication.md +596 -0
- package/plugins/lisa-expo/skills/agent-design-best-practices/SKILL.md +219 -0
- package/plugins/lisa-expo/skills/apollo-client/SKILL.md +238 -0
- package/plugins/lisa-expo/skills/apollo-client/references/mutation-patterns.md +360 -0
- package/plugins/lisa-expo/skills/atomic-design-gluestack/SKILL.md +360 -0
- package/plugins/lisa-expo/skills/atomic-design-gluestack/references/atomic-levels.md +417 -0
- package/plugins/lisa-expo/skills/atomic-design-gluestack/references/folder-structure.md +257 -0
- package/plugins/lisa-expo/skills/atomic-design-gluestack/references/gluestack-mapping.md +233 -0
- package/plugins/lisa-expo/skills/atomic-design-gluestack/scripts/validate_atomic_structure.py +329 -0
- package/plugins/lisa-expo/skills/container-view-pattern/SKILL.md +299 -0
- package/plugins/lisa-expo/skills/container-view-pattern/references/examples.md +749 -0
- package/plugins/lisa-expo/skills/container-view-pattern/references/patterns.md +318 -0
- package/plugins/lisa-expo/skills/container-view-pattern/scripts/create_component.py +200 -0
- package/plugins/lisa-expo/skills/container-view-pattern/scripts/validate_component.py +209 -0
- package/plugins/lisa-expo/skills/cross-platform-compatibility/SKILL.md +268 -0
- package/plugins/lisa-expo/skills/cross-platform-compatibility/references/common-issues.md +619 -0
- package/plugins/lisa-expo/skills/cross-platform-compatibility/references/file-extensions.md +340 -0
- package/plugins/lisa-expo/skills/cross-platform-compatibility/references/platform-api.md +276 -0
- package/plugins/lisa-expo/skills/cross-platform-compatibility/scripts/validate_cross_platform.py +416 -0
- package/plugins/lisa-expo/skills/directory-structure/SKILL.md +202 -0
- package/plugins/lisa-expo/skills/directory-structure/scripts/validate_structure.py +445 -0
- package/plugins/lisa-expo/skills/expo-env-config/SKILL.md +309 -0
- package/plugins/lisa-expo/skills/expo-env-config/references/validation-patterns.md +417 -0
- package/plugins/lisa-expo/skills/expo-router-best-practices/SKILL.md +431 -0
- package/plugins/lisa-expo/skills/expo-router-best-practices/references/official-docs.md +290 -0
- package/plugins/lisa-expo/skills/expo-router-best-practices/scripts/generate-route.py +171 -0
- package/plugins/lisa-expo/skills/git-commit/SKILL.md +48 -0
- package/plugins/lisa-expo/skills/git-commit-and-submit-pr/SKILL.md +8 -0
- package/plugins/lisa-expo/skills/git-commit-submit-pr-and-verify/SKILL.md +7 -0
- package/plugins/lisa-expo/skills/git-commit-submit-pr-deploy-and-verify/SKILL.md +7 -0
- package/plugins/lisa-expo/skills/git-prune/SKILL.md +35 -0
- package/plugins/lisa-expo/skills/git-submit-pr/SKILL.md +44 -0
- package/plugins/lisa-expo/skills/gluestack-nativewind/SKILL.md +411 -0
- package/plugins/lisa-expo/skills/gluestack-nativewind/references/color-tokens.md +343 -0
- package/plugins/lisa-expo/skills/gluestack-nativewind/references/component-mapping.md +307 -0
- package/plugins/lisa-expo/skills/gluestack-nativewind/references/spacing-scale.md +300 -0
- package/plugins/lisa-expo/skills/gluestack-nativewind/scripts/validate_styling.py +315 -0
- package/plugins/lisa-expo/skills/jira-add-journey/SKILL.md +126 -0
- package/plugins/lisa-expo/skills/jira-create/SKILL.md +101 -0
- package/plugins/lisa-expo/skills/jira-evidence/SKILL.md +78 -0
- package/plugins/lisa-expo/skills/jira-evidence/scripts/post-evidence.sh +163 -0
- package/plugins/lisa-expo/skills/jira-fix/SKILL.md +16 -0
- package/plugins/lisa-expo/skills/jira-implement/SKILL.md +18 -0
- package/plugins/lisa-expo/skills/jira-journey/SKILL.md +190 -0
- package/plugins/lisa-expo/skills/jira-journey/scripts/generate-templates.py +281 -0
- package/plugins/lisa-expo/skills/jira-journey/scripts/parse-plan.py +368 -0
- package/plugins/lisa-expo/skills/jira-sync/SKILL.md +63 -0
- package/plugins/lisa-expo/skills/jira-verify/SKILL.md +47 -0
- package/plugins/lisa-expo/skills/jsdoc-best-practices/SKILL.md +432 -0
- package/plugins/lisa-expo/skills/lisa-review-implementation/SKILL.md +209 -0
- package/plugins/lisa-expo/skills/local-state/SKILL.md +362 -0
- package/plugins/lisa-expo/skills/local-state/references/async-storage.md +505 -0
- package/plugins/lisa-expo/skills/local-state/references/persistence-patterns.md +711 -0
- package/plugins/lisa-expo/skills/local-state/references/reactive-variables.md +446 -0
- package/plugins/lisa-expo/skills/ops-browser-uat/SKILL.md +124 -0
- package/plugins/lisa-expo/skills/ops-check-logs/SKILL.md +211 -0
- package/plugins/lisa-expo/skills/ops-db-ops/SKILL.md +119 -0
- package/plugins/lisa-expo/skills/ops-deploy/SKILL.md +119 -0
- package/plugins/lisa-expo/skills/ops-monitor-errors/SKILL.md +99 -0
- package/plugins/lisa-expo/skills/ops-performance/SKILL.md +165 -0
- package/plugins/lisa-expo/skills/ops-run-local/SKILL.md +166 -0
- package/plugins/lisa-expo/skills/ops-verify-health/SKILL.md +101 -0
- package/plugins/lisa-expo/skills/owasp-zap/SKILL.md +56 -0
- package/plugins/lisa-expo/skills/plan-add-test-coverage/SKILL.md +44 -0
- package/plugins/lisa-expo/skills/plan-execute/SKILL.md +89 -0
- package/plugins/lisa-expo/skills/plan-fix-linter-error/SKILL.md +45 -0
- package/plugins/lisa-expo/skills/plan-local-code-review/SKILL.md +88 -0
- package/plugins/lisa-expo/skills/plan-lower-code-complexity/SKILL.md +44 -0
- package/plugins/lisa-expo/skills/plan-reduce-max-lines/SKILL.md +45 -0
- package/plugins/lisa-expo/skills/plan-reduce-max-lines-per-function/SKILL.md +46 -0
- package/plugins/lisa-expo/skills/playwright-selectors/SKILL.md +223 -0
- package/plugins/lisa-expo/skills/pull-request-review/SKILL.md +68 -0
- package/plugins/lisa-expo/skills/security-zap-scan/SKILL.md +33 -0
- package/plugins/lisa-expo/skills/skill-creator/LICENSE.txt +202 -0
- package/plugins/lisa-expo/skills/skill-creator/SKILL.md +210 -0
- package/plugins/lisa-expo/skills/skill-creator/scripts/init_skill.py +305 -0
- package/plugins/lisa-expo/skills/skill-creator/scripts/package_skill.py +112 -0
- package/plugins/lisa-expo/skills/skill-creator/scripts/quick_validate.py +67 -0
- package/plugins/lisa-expo/skills/sonarqube-check/SKILL.md +11 -0
- package/plugins/lisa-expo/skills/sonarqube-fix/SKILL.md +8 -0
- package/plugins/lisa-expo/skills/tasks-load/SKILL.md +88 -0
- package/plugins/lisa-expo/skills/tasks-sync/SKILL.md +108 -0
- package/plugins/lisa-expo/skills/testing-library/SKILL.md +314 -0
- package/plugins/lisa-expo/skills/testing-library/references/async-patterns.md +420 -0
- package/plugins/lisa-expo/skills/testing-library/references/expo-router-testing.md +556 -0
- package/plugins/lisa-expo/skills/testing-library/references/mocking-patterns.md +590 -0
- package/plugins/lisa-expo/skills/testing-library/references/query-priority.md +291 -0
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +86 -0
- package/plugins/lisa-nestjs/agents/agent-architect.md +310 -0
- package/plugins/lisa-nestjs/agents/architecture-specialist.md +53 -0
- package/plugins/lisa-nestjs/agents/debug-specialist.md +204 -0
- package/plugins/lisa-nestjs/agents/git-history-analyzer.md +183 -0
- package/plugins/lisa-nestjs/agents/hooks-expert.md +74 -0
- package/plugins/lisa-nestjs/agents/implementer.md +54 -0
- package/plugins/lisa-nestjs/agents/learner.md +44 -0
- package/plugins/lisa-nestjs/agents/performance-specialist.md +95 -0
- package/plugins/lisa-nestjs/agents/product-specialist.md +72 -0
- package/plugins/lisa-nestjs/agents/quality-specialist.md +55 -0
- package/plugins/lisa-nestjs/agents/security-specialist.md +58 -0
- package/plugins/lisa-nestjs/agents/skill-evaluator.md +246 -0
- package/plugins/lisa-nestjs/agents/slash-command-architect.md +87 -0
- package/plugins/lisa-nestjs/agents/test-specialist.md +64 -0
- package/plugins/lisa-nestjs/agents/verification-specialist.md +189 -0
- package/plugins/lisa-nestjs/agents/web-search-researcher.md +112 -0
- package/plugins/lisa-nestjs/commands/git-commit-and-submit-pr.md +7 -0
- package/plugins/lisa-nestjs/commands/git-commit-submit-pr-and-verify.md +7 -0
- package/plugins/lisa-nestjs/commands/git-commit-submit-pr-deploy-and-verify.md +7 -0
- package/plugins/lisa-nestjs/commands/git-commit.md +7 -0
- package/plugins/lisa-nestjs/commands/git-prune.md +6 -0
- package/plugins/lisa-nestjs/commands/git-submit-pr.md +7 -0
- package/plugins/lisa-nestjs/commands/jira-add-journey.md +7 -0
- package/plugins/lisa-nestjs/commands/jira-create.md +7 -0
- package/plugins/lisa-nestjs/commands/jira-evidence.md +7 -0
- package/plugins/lisa-nestjs/commands/jira-fix.md +7 -0
- package/plugins/lisa-nestjs/commands/jira-implement.md +7 -0
- package/plugins/lisa-nestjs/commands/jira-journey.md +7 -0
- package/plugins/lisa-nestjs/commands/jira-sync.md +7 -0
- package/plugins/lisa-nestjs/commands/jira-verify.md +7 -0
- package/plugins/lisa-nestjs/commands/lisa-review-implementation.md +7 -0
- package/plugins/lisa-nestjs/commands/plan-add-test-coverage.md +7 -0
- package/plugins/lisa-nestjs/commands/plan-create.md +6 -0
- package/plugins/lisa-nestjs/commands/plan-execute.md +7 -0
- package/plugins/lisa-nestjs/commands/plan-fix-linter-error.md +7 -0
- package/plugins/lisa-nestjs/commands/plan-local-code-review.md +6 -0
- package/plugins/lisa-nestjs/commands/plan-lower-code-complexity.md +6 -0
- package/plugins/lisa-nestjs/commands/plan-reduce-max-lines-per-function.md +7 -0
- package/plugins/lisa-nestjs/commands/plan-reduce-max-lines.md +7 -0
- package/plugins/lisa-nestjs/commands/pull-request-review.md +7 -0
- package/plugins/lisa-nestjs/commands/security-zap-scan.md +6 -0
- package/plugins/lisa-nestjs/commands/sonarqube-check.md +6 -0
- package/plugins/lisa-nestjs/commands/sonarqube-fix.md +6 -0
- package/plugins/lisa-nestjs/commands/tasks-load.md +7 -0
- package/plugins/lisa-nestjs/commands/tasks-sync.md +7 -0
- package/plugins/lisa-nestjs/hooks/debug-hook.sh +47 -0
- package/plugins/lisa-nestjs/hooks/enforce-plan-rules.sh +15 -0
- package/plugins/lisa-nestjs/hooks/format-on-edit.sh +76 -0
- package/plugins/lisa-nestjs/hooks/install-pkgs.sh +64 -0
- package/plugins/lisa-nestjs/hooks/lint-on-edit.sh +81 -0
- package/plugins/lisa-nestjs/hooks/notify-ntfy.sh +183 -0
- package/plugins/lisa-nestjs/hooks/setup-jira-cli.sh +52 -0
- package/plugins/lisa-nestjs/hooks/sg-scan-on-edit.sh +68 -0
- package/plugins/lisa-nestjs/hooks/sync-tasks.sh +107 -0
- package/plugins/lisa-nestjs/hooks/ticket-sync-reminder.sh +23 -0
- package/plugins/lisa-nestjs/hooks/track-plan-sessions.sh +164 -0
- package/plugins/lisa-nestjs/hooks/verify-completion.sh +77 -0
- package/plugins/lisa-nestjs/rules/README.md +240 -0
- package/plugins/lisa-nestjs/rules/coding-philosophy.md +428 -0
- package/plugins/lisa-nestjs/rules/lisa.md +37 -0
- package/plugins/lisa-nestjs/rules/verfication.md +596 -0
- package/plugins/lisa-nestjs/skills/agent-design-best-practices/SKILL.md +219 -0
- package/plugins/lisa-nestjs/skills/git-commit/SKILL.md +48 -0
- package/plugins/lisa-nestjs/skills/git-commit-and-submit-pr/SKILL.md +8 -0
- package/plugins/lisa-nestjs/skills/git-commit-submit-pr-and-verify/SKILL.md +7 -0
- package/plugins/lisa-nestjs/skills/git-commit-submit-pr-deploy-and-verify/SKILL.md +7 -0
- package/plugins/lisa-nestjs/skills/git-prune/SKILL.md +35 -0
- package/plugins/lisa-nestjs/skills/git-submit-pr/SKILL.md +44 -0
- package/plugins/lisa-nestjs/skills/jira-add-journey/SKILL.md +120 -0
- package/plugins/lisa-nestjs/skills/jira-create/SKILL.md +95 -0
- package/plugins/lisa-nestjs/skills/jira-evidence/SKILL.md +73 -0
- package/plugins/lisa-nestjs/skills/jira-evidence/scripts/post-evidence.sh +163 -0
- package/plugins/lisa-nestjs/skills/jira-fix/SKILL.md +16 -0
- package/plugins/lisa-nestjs/skills/jira-implement/SKILL.md +18 -0
- package/plugins/lisa-nestjs/skills/jira-journey/SKILL.md +125 -0
- package/plugins/lisa-nestjs/skills/jira-journey/scripts/generate-templates.py +233 -0
- package/plugins/lisa-nestjs/skills/jira-journey/scripts/parse-plan.py +368 -0
- package/plugins/lisa-nestjs/skills/jira-sync/SKILL.md +63 -0
- package/plugins/lisa-nestjs/skills/jira-verify/SKILL.md +48 -0
- package/plugins/lisa-nestjs/skills/jsdoc-best-practices/SKILL.md +432 -0
- package/plugins/lisa-nestjs/skills/lisa-review-implementation/SKILL.md +209 -0
- package/plugins/lisa-nestjs/skills/nestjs-graphql/SKILL.md +176 -0
- package/plugins/lisa-nestjs/skills/nestjs-graphql/references/advanced-features.md +527 -0
- package/plugins/lisa-nestjs/skills/nestjs-graphql/references/project-patterns.md +483 -0
- package/plugins/lisa-nestjs/skills/nestjs-graphql/references/quick-start.md +257 -0
- package/plugins/lisa-nestjs/skills/nestjs-graphql/references/resolvers-mutations.md +413 -0
- package/plugins/lisa-nestjs/skills/nestjs-graphql/references/types-scalars.md +513 -0
- package/plugins/lisa-nestjs/skills/nestjs-rules/SKILL.md +536 -0
- package/plugins/lisa-nestjs/skills/plan-add-test-coverage/SKILL.md +44 -0
- package/plugins/lisa-nestjs/skills/plan-execute/SKILL.md +89 -0
- package/plugins/lisa-nestjs/skills/plan-fix-linter-error/SKILL.md +45 -0
- package/plugins/lisa-nestjs/skills/plan-local-code-review/SKILL.md +88 -0
- package/plugins/lisa-nestjs/skills/plan-lower-code-complexity/SKILL.md +44 -0
- package/plugins/lisa-nestjs/skills/plan-reduce-max-lines/SKILL.md +45 -0
- package/plugins/lisa-nestjs/skills/plan-reduce-max-lines-per-function/SKILL.md +46 -0
- package/plugins/lisa-nestjs/skills/pull-request-review/SKILL.md +68 -0
- package/plugins/lisa-nestjs/skills/security-zap-scan/SKILL.md +33 -0
- package/plugins/lisa-nestjs/skills/skill-creator/LICENSE.txt +202 -0
- package/plugins/lisa-nestjs/skills/skill-creator/SKILL.md +210 -0
- package/plugins/lisa-nestjs/skills/skill-creator/scripts/init_skill.py +305 -0
- package/plugins/lisa-nestjs/skills/skill-creator/scripts/package_skill.py +112 -0
- package/plugins/lisa-nestjs/skills/skill-creator/scripts/quick_validate.py +67 -0
- package/plugins/lisa-nestjs/skills/sonarqube-check/SKILL.md +11 -0
- package/plugins/lisa-nestjs/skills/sonarqube-fix/SKILL.md +8 -0
- package/plugins/lisa-nestjs/skills/tasks-load/SKILL.md +88 -0
- package/plugins/lisa-nestjs/skills/tasks-sync/SKILL.md +108 -0
- package/plugins/lisa-nestjs/skills/typeorm-patterns/SKILL.md +275 -0
- package/plugins/lisa-nestjs/skills/typeorm-patterns/references/configuration-patterns.md +487 -0
- package/plugins/lisa-nestjs/skills/typeorm-patterns/references/entity-patterns.md +450 -0
- package/plugins/lisa-nestjs/skills/typeorm-patterns/references/observability-patterns.md +536 -0
- package/plugins/lisa-rails/.claude-plugin/plugin.json +77 -0
- package/plugins/lisa-rails/agents/agent-architect.md +310 -0
- package/plugins/lisa-rails/agents/architecture-specialist.md +53 -0
- package/plugins/lisa-rails/agents/debug-specialist.md +204 -0
- package/plugins/lisa-rails/agents/git-history-analyzer.md +183 -0
- package/plugins/lisa-rails/agents/hooks-expert.md +74 -0
- package/plugins/lisa-rails/agents/implementer.md +54 -0
- package/plugins/lisa-rails/agents/learner.md +44 -0
- package/plugins/lisa-rails/agents/performance-specialist.md +95 -0
- package/plugins/lisa-rails/agents/product-specialist.md +72 -0
- package/plugins/lisa-rails/agents/quality-specialist.md +55 -0
- package/plugins/lisa-rails/agents/security-specialist.md +58 -0
- package/plugins/lisa-rails/agents/skill-evaluator.md +246 -0
- package/plugins/lisa-rails/agents/slash-command-architect.md +87 -0
- package/plugins/lisa-rails/agents/test-specialist.md +64 -0
- package/plugins/lisa-rails/agents/verification-specialist.md +189 -0
- package/plugins/lisa-rails/agents/web-search-researcher.md +112 -0
- package/plugins/lisa-rails/commands/git-commit-and-submit-pr.md +7 -0
- package/plugins/lisa-rails/commands/git-commit-submit-pr-and-verify.md +7 -0
- package/plugins/lisa-rails/commands/git-commit-submit-pr-deploy-and-verify.md +7 -0
- package/plugins/lisa-rails/commands/git-commit.md +7 -0
- package/plugins/lisa-rails/commands/git-prune.md +6 -0
- package/plugins/lisa-rails/commands/git-submit-pr.md +7 -0
- package/plugins/lisa-rails/commands/jira-add-journey.md +7 -0
- package/plugins/lisa-rails/commands/jira-create.md +7 -0
- package/plugins/lisa-rails/commands/jira-evidence.md +7 -0
- package/plugins/lisa-rails/commands/jira-fix.md +7 -0
- package/plugins/lisa-rails/commands/jira-implement.md +7 -0
- package/plugins/lisa-rails/commands/jira-journey.md +7 -0
- package/plugins/lisa-rails/commands/jira-sync.md +7 -0
- package/plugins/lisa-rails/commands/jira-verify.md +7 -0
- package/plugins/lisa-rails/commands/lisa-review-implementation.md +7 -0
- package/plugins/lisa-rails/commands/plan-add-test-coverage.md +7 -0
- package/plugins/lisa-rails/commands/plan-create.md +6 -0
- package/plugins/lisa-rails/commands/plan-execute.md +7 -0
- package/plugins/lisa-rails/commands/plan-fix-linter-error.md +7 -0
- package/plugins/lisa-rails/commands/plan-local-code-review.md +6 -0
- package/plugins/lisa-rails/commands/plan-lower-code-complexity.md +6 -0
- package/plugins/lisa-rails/commands/plan-reduce-max-lines-per-function.md +7 -0
- package/plugins/lisa-rails/commands/plan-reduce-max-lines.md +7 -0
- package/plugins/lisa-rails/commands/pull-request-review.md +7 -0
- package/plugins/lisa-rails/commands/security-zap-scan.md +6 -0
- package/plugins/lisa-rails/commands/sonarqube-check.md +6 -0
- package/plugins/lisa-rails/commands/sonarqube-fix.md +6 -0
- package/plugins/lisa-rails/commands/tasks-load.md +7 -0
- package/plugins/lisa-rails/commands/tasks-sync.md +7 -0
- package/plugins/lisa-rails/hooks/debug-hook.sh +47 -0
- package/plugins/lisa-rails/hooks/enforce-plan-rules.sh +15 -0
- package/plugins/lisa-rails/hooks/format-on-edit.sh +76 -0
- package/plugins/lisa-rails/hooks/install-pkgs.sh +64 -0
- package/plugins/lisa-rails/hooks/lint-on-edit.sh +81 -0
- package/plugins/lisa-rails/hooks/notify-ntfy.sh +183 -0
- package/plugins/lisa-rails/hooks/setup-jira-cli.sh +52 -0
- package/plugins/lisa-rails/hooks/sg-scan-on-edit.sh +68 -0
- package/plugins/lisa-rails/hooks/sync-tasks.sh +107 -0
- package/plugins/lisa-rails/hooks/ticket-sync-reminder.sh +23 -0
- package/plugins/lisa-rails/hooks/track-plan-sessions.sh +164 -0
- package/plugins/lisa-rails/hooks/verify-completion.sh +77 -0
- package/plugins/lisa-rails/rules/README.md +240 -0
- package/plugins/lisa-rails/rules/coding-philosophy.md +428 -0
- package/plugins/lisa-rails/rules/lisa.md +37 -0
- package/plugins/lisa-rails/rules/rails-conventions.md +176 -0
- package/plugins/lisa-rails/rules/verfication.md +596 -0
- package/plugins/lisa-rails/skills/action-controller-best-practices/SKILL.md +374 -0
- package/plugins/lisa-rails/skills/action-view-best-practices/SKILL.md +335 -0
- package/plugins/lisa-rails/skills/active-record-model-best-practices/SKILL.md +166 -0
- package/plugins/lisa-rails/skills/agent-design-best-practices/SKILL.md +219 -0
- package/plugins/lisa-rails/skills/git-commit/SKILL.md +48 -0
- package/plugins/lisa-rails/skills/git-commit-and-submit-pr/SKILL.md +8 -0
- package/plugins/lisa-rails/skills/git-commit-submit-pr-and-verify/SKILL.md +7 -0
- package/plugins/lisa-rails/skills/git-commit-submit-pr-deploy-and-verify/SKILL.md +7 -0
- package/plugins/lisa-rails/skills/git-prune/SKILL.md +35 -0
- package/plugins/lisa-rails/skills/git-submit-pr/SKILL.md +44 -0
- package/plugins/lisa-rails/skills/jira-add-journey/SKILL.md +65 -0
- package/plugins/lisa-rails/skills/jira-create/SKILL.md +41 -0
- package/plugins/lisa-rails/skills/jira-evidence/SKILL.md +70 -0
- package/plugins/lisa-rails/skills/jira-evidence/scripts/post-evidence.sh +163 -0
- package/plugins/lisa-rails/skills/jira-fix/SKILL.md +16 -0
- package/plugins/lisa-rails/skills/jira-implement/SKILL.md +18 -0
- package/plugins/lisa-rails/skills/jira-journey/SKILL.md +64 -0
- package/plugins/lisa-rails/skills/jira-journey/scripts/generate-templates.py +233 -0
- package/plugins/lisa-rails/skills/jira-journey/scripts/parse-plan.py +368 -0
- package/plugins/lisa-rails/skills/jira-sync/SKILL.md +63 -0
- package/plugins/lisa-rails/skills/jira-verify/SKILL.md +29 -0
- package/plugins/lisa-rails/skills/jsdoc-best-practices/SKILL.md +432 -0
- package/plugins/lisa-rails/skills/lisa-review-implementation/SKILL.md +209 -0
- package/plugins/lisa-rails/skills/plan-add-test-coverage/SKILL.md +45 -0
- package/plugins/lisa-rails/skills/plan-execute/SKILL.md +89 -0
- package/plugins/lisa-rails/skills/plan-fix-linter-error/SKILL.md +45 -0
- package/plugins/lisa-rails/skills/plan-local-code-review/SKILL.md +88 -0
- package/plugins/lisa-rails/skills/plan-lower-code-complexity/SKILL.md +48 -0
- package/plugins/lisa-rails/skills/plan-reduce-max-lines/SKILL.md +46 -0
- package/plugins/lisa-rails/skills/plan-reduce-max-lines-per-function/SKILL.md +46 -0
- package/plugins/lisa-rails/skills/pull-request-review/SKILL.md +68 -0
- package/plugins/lisa-rails/skills/security-zap-scan/SKILL.md +33 -0
- package/plugins/lisa-rails/skills/skill-creator/LICENSE.txt +202 -0
- package/plugins/lisa-rails/skills/skill-creator/SKILL.md +210 -0
- package/plugins/lisa-rails/skills/skill-creator/scripts/init_skill.py +305 -0
- package/plugins/lisa-rails/skills/skill-creator/scripts/package_skill.py +112 -0
- package/plugins/lisa-rails/skills/skill-creator/scripts/quick_validate.py +67 -0
- package/plugins/lisa-rails/skills/sonarqube-check/SKILL.md +11 -0
- package/plugins/lisa-rails/skills/sonarqube-fix/SKILL.md +8 -0
- package/plugins/lisa-rails/skills/tasks-load/SKILL.md +88 -0
- package/plugins/lisa-rails/skills/tasks-sync/SKILL.md +108 -0
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +86 -0
- package/plugins/lisa-typescript/agents/agent-architect.md +310 -0
- package/plugins/lisa-typescript/agents/architecture-specialist.md +53 -0
- package/plugins/lisa-typescript/agents/debug-specialist.md +204 -0
- package/plugins/lisa-typescript/agents/git-history-analyzer.md +183 -0
- package/plugins/lisa-typescript/agents/hooks-expert.md +74 -0
- package/plugins/lisa-typescript/agents/implementer.md +54 -0
- package/plugins/lisa-typescript/agents/learner.md +44 -0
- package/plugins/lisa-typescript/agents/performance-specialist.md +95 -0
- package/plugins/lisa-typescript/agents/product-specialist.md +72 -0
- package/plugins/lisa-typescript/agents/quality-specialist.md +55 -0
- package/plugins/lisa-typescript/agents/security-specialist.md +58 -0
- package/plugins/lisa-typescript/agents/skill-evaluator.md +246 -0
- package/plugins/lisa-typescript/agents/slash-command-architect.md +87 -0
- package/plugins/lisa-typescript/agents/test-specialist.md +64 -0
- package/plugins/lisa-typescript/agents/verification-specialist.md +189 -0
- package/plugins/lisa-typescript/agents/web-search-researcher.md +112 -0
- package/plugins/lisa-typescript/commands/git-commit-and-submit-pr.md +7 -0
- package/plugins/lisa-typescript/commands/git-commit-submit-pr-and-verify.md +7 -0
- package/plugins/lisa-typescript/commands/git-commit-submit-pr-deploy-and-verify.md +7 -0
- package/plugins/lisa-typescript/commands/git-commit.md +7 -0
- package/plugins/lisa-typescript/commands/git-prune.md +6 -0
- package/plugins/lisa-typescript/commands/git-submit-pr.md +7 -0
- package/plugins/lisa-typescript/commands/jira-add-journey.md +7 -0
- package/plugins/lisa-typescript/commands/jira-create.md +7 -0
- package/plugins/lisa-typescript/commands/jira-evidence.md +7 -0
- package/plugins/lisa-typescript/commands/jira-fix.md +7 -0
- package/plugins/lisa-typescript/commands/jira-implement.md +7 -0
- package/plugins/lisa-typescript/commands/jira-journey.md +7 -0
- package/plugins/lisa-typescript/commands/jira-sync.md +7 -0
- package/plugins/lisa-typescript/commands/jira-verify.md +7 -0
- package/plugins/lisa-typescript/commands/lisa-review-implementation.md +7 -0
- package/plugins/lisa-typescript/commands/plan-add-test-coverage.md +7 -0
- package/plugins/lisa-typescript/commands/plan-create.md +6 -0
- package/plugins/lisa-typescript/commands/plan-execute.md +7 -0
- package/plugins/lisa-typescript/commands/plan-fix-linter-error.md +7 -0
- package/plugins/lisa-typescript/commands/plan-local-code-review.md +6 -0
- package/plugins/lisa-typescript/commands/plan-lower-code-complexity.md +6 -0
- package/plugins/lisa-typescript/commands/plan-reduce-max-lines-per-function.md +7 -0
- package/plugins/lisa-typescript/commands/plan-reduce-max-lines.md +7 -0
- package/plugins/lisa-typescript/commands/pull-request-review.md +7 -0
- package/plugins/lisa-typescript/commands/security-zap-scan.md +6 -0
- package/plugins/lisa-typescript/commands/sonarqube-check.md +6 -0
- package/plugins/lisa-typescript/commands/sonarqube-fix.md +6 -0
- package/plugins/lisa-typescript/commands/tasks-load.md +7 -0
- package/plugins/lisa-typescript/commands/tasks-sync.md +7 -0
- package/plugins/lisa-typescript/hooks/debug-hook.sh +47 -0
- package/plugins/lisa-typescript/hooks/enforce-plan-rules.sh +15 -0
- package/plugins/lisa-typescript/hooks/format-on-edit.sh +76 -0
- package/plugins/lisa-typescript/hooks/install-pkgs.sh +64 -0
- package/plugins/lisa-typescript/hooks/lint-on-edit.sh +81 -0
- package/plugins/lisa-typescript/hooks/notify-ntfy.sh +183 -0
- package/plugins/lisa-typescript/hooks/setup-jira-cli.sh +52 -0
- package/plugins/lisa-typescript/hooks/sg-scan-on-edit.sh +68 -0
- package/plugins/lisa-typescript/hooks/sync-tasks.sh +107 -0
- package/plugins/lisa-typescript/hooks/ticket-sync-reminder.sh +23 -0
- package/plugins/lisa-typescript/hooks/track-plan-sessions.sh +164 -0
- package/plugins/lisa-typescript/hooks/verify-completion.sh +77 -0
- package/plugins/lisa-typescript/rules/README.md +240 -0
- package/plugins/lisa-typescript/rules/coding-philosophy.md +428 -0
- package/plugins/lisa-typescript/rules/lisa.md +37 -0
- package/plugins/lisa-typescript/rules/verfication.md +596 -0
- package/plugins/lisa-typescript/skills/agent-design-best-practices/SKILL.md +219 -0
- package/plugins/lisa-typescript/skills/git-commit/SKILL.md +48 -0
- package/plugins/lisa-typescript/skills/git-commit-and-submit-pr/SKILL.md +8 -0
- package/plugins/lisa-typescript/skills/git-commit-submit-pr-and-verify/SKILL.md +7 -0
- package/plugins/lisa-typescript/skills/git-commit-submit-pr-deploy-and-verify/SKILL.md +7 -0
- package/plugins/lisa-typescript/skills/git-prune/SKILL.md +35 -0
- package/plugins/lisa-typescript/skills/git-submit-pr/SKILL.md +44 -0
- package/plugins/lisa-typescript/skills/jira-add-journey/SKILL.md +120 -0
- package/plugins/lisa-typescript/skills/jira-create/SKILL.md +95 -0
- package/plugins/lisa-typescript/skills/jira-evidence/SKILL.md +73 -0
- package/plugins/lisa-typescript/skills/jira-evidence/scripts/post-evidence.sh +163 -0
- package/plugins/lisa-typescript/skills/jira-fix/SKILL.md +16 -0
- package/plugins/lisa-typescript/skills/jira-implement/SKILL.md +18 -0
- package/plugins/lisa-typescript/skills/jira-journey/SKILL.md +125 -0
- package/plugins/lisa-typescript/skills/jira-journey/scripts/generate-templates.py +233 -0
- package/plugins/lisa-typescript/skills/jira-journey/scripts/parse-plan.py +368 -0
- package/plugins/lisa-typescript/skills/jira-sync/SKILL.md +63 -0
- package/plugins/lisa-typescript/skills/jira-verify/SKILL.md +48 -0
- package/plugins/lisa-typescript/skills/jsdoc-best-practices/SKILL.md +432 -0
- package/plugins/lisa-typescript/skills/lisa-review-implementation/SKILL.md +209 -0
- package/plugins/lisa-typescript/skills/plan-add-test-coverage/SKILL.md +44 -0
- package/plugins/lisa-typescript/skills/plan-execute/SKILL.md +89 -0
- package/plugins/lisa-typescript/skills/plan-fix-linter-error/SKILL.md +45 -0
- package/plugins/lisa-typescript/skills/plan-local-code-review/SKILL.md +88 -0
- package/plugins/lisa-typescript/skills/plan-lower-code-complexity/SKILL.md +44 -0
- package/plugins/lisa-typescript/skills/plan-reduce-max-lines/SKILL.md +45 -0
- package/plugins/lisa-typescript/skills/plan-reduce-max-lines-per-function/SKILL.md +46 -0
- package/plugins/lisa-typescript/skills/pull-request-review/SKILL.md +68 -0
- package/plugins/lisa-typescript/skills/security-zap-scan/SKILL.md +33 -0
- package/plugins/lisa-typescript/skills/skill-creator/LICENSE.txt +202 -0
- package/plugins/lisa-typescript/skills/skill-creator/SKILL.md +210 -0
- package/plugins/lisa-typescript/skills/skill-creator/scripts/init_skill.py +305 -0
- package/plugins/lisa-typescript/skills/skill-creator/scripts/package_skill.py +112 -0
- package/plugins/lisa-typescript/skills/skill-creator/scripts/quick_validate.py +67 -0
- package/plugins/lisa-typescript/skills/sonarqube-check/SKILL.md +11 -0
- package/plugins/lisa-typescript/skills/sonarqube-fix/SKILL.md +8 -0
- package/plugins/lisa-typescript/skills/tasks-load/SKILL.md +88 -0
- package/plugins/lisa-typescript/skills/tasks-sync/SKILL.md +108 -0
- package/plugins/src/base/agents/agent-architect.md +310 -0
- package/plugins/src/base/agents/architecture-specialist.md +53 -0
- package/plugins/src/base/agents/debug-specialist.md +204 -0
- package/plugins/src/base/agents/git-history-analyzer.md +183 -0
- package/plugins/src/base/agents/hooks-expert.md +74 -0
- package/plugins/src/base/agents/implementer.md +54 -0
- package/plugins/src/base/agents/learner.md +44 -0
- package/plugins/src/base/agents/performance-specialist.md +95 -0
- package/plugins/src/base/agents/product-specialist.md +72 -0
- package/plugins/src/base/agents/quality-specialist.md +55 -0
- package/plugins/src/base/agents/security-specialist.md +58 -0
- package/plugins/src/base/agents/skill-evaluator.md +246 -0
- package/plugins/src/base/agents/slash-command-architect.md +87 -0
- package/plugins/src/base/agents/test-specialist.md +64 -0
- package/plugins/src/base/agents/verification-specialist.md +189 -0
- package/plugins/src/base/agents/web-search-researcher.md +112 -0
- package/plugins/src/base/commands/git-commit-and-submit-pr.md +7 -0
- package/plugins/src/base/commands/git-commit-submit-pr-and-verify.md +7 -0
- package/plugins/src/base/commands/git-commit-submit-pr-deploy-and-verify.md +7 -0
- package/plugins/src/base/commands/git-commit.md +7 -0
- package/plugins/src/base/commands/git-prune.md +6 -0
- package/plugins/src/base/commands/git-submit-pr.md +7 -0
- package/plugins/src/base/commands/jira-add-journey.md +7 -0
- package/plugins/src/base/commands/jira-create.md +7 -0
- package/plugins/src/base/commands/jira-evidence.md +7 -0
- package/plugins/src/base/commands/jira-fix.md +7 -0
- package/plugins/src/base/commands/jira-implement.md +7 -0
- package/plugins/src/base/commands/jira-journey.md +7 -0
- package/plugins/src/base/commands/jira-sync.md +7 -0
- package/plugins/src/base/commands/jira-verify.md +7 -0
- package/plugins/src/base/commands/lisa-review-implementation.md +7 -0
- package/plugins/src/base/commands/plan-add-test-coverage.md +7 -0
- package/plugins/src/base/commands/plan-create.md +6 -0
- package/plugins/src/base/commands/plan-execute.md +7 -0
- package/plugins/src/base/commands/plan-fix-linter-error.md +7 -0
- package/plugins/src/base/commands/plan-local-code-review.md +6 -0
- package/plugins/src/base/commands/plan-lower-code-complexity.md +6 -0
- package/plugins/src/base/commands/plan-reduce-max-lines-per-function.md +7 -0
- package/plugins/src/base/commands/plan-reduce-max-lines.md +7 -0
- package/plugins/src/base/commands/pull-request-review.md +7 -0
- package/plugins/src/base/commands/security-zap-scan.md +6 -0
- package/plugins/src/base/commands/sonarqube-check.md +6 -0
- package/plugins/src/base/commands/sonarqube-fix.md +6 -0
- package/plugins/src/base/commands/tasks-load.md +7 -0
- package/plugins/src/base/commands/tasks-sync.md +7 -0
- package/plugins/src/base/hooks/debug-hook.sh +47 -0
- package/plugins/src/base/hooks/enforce-plan-rules.sh +15 -0
- package/plugins/src/base/hooks/format-on-edit.sh +76 -0
- package/plugins/src/base/hooks/install-pkgs.sh +64 -0
- package/plugins/src/base/hooks/lint-on-edit.sh +81 -0
- package/plugins/src/base/hooks/notify-ntfy.sh +183 -0
- package/plugins/src/base/hooks/setup-jira-cli.sh +52 -0
- package/plugins/src/base/hooks/sg-scan-on-edit.sh +68 -0
- package/plugins/src/base/hooks/sync-tasks.sh +107 -0
- package/plugins/src/base/hooks/ticket-sync-reminder.sh +23 -0
- package/plugins/src/base/hooks/track-plan-sessions.sh +164 -0
- package/plugins/src/base/hooks/verify-completion.sh +77 -0
- package/plugins/src/base/rules/README.md +240 -0
- package/plugins/src/base/rules/coding-philosophy.md +428 -0
- package/plugins/src/base/rules/lisa.md +37 -0
- package/plugins/src/base/rules/verfication.md +596 -0
- package/plugins/src/base/skills/agent-design-best-practices/SKILL.md +219 -0
- package/plugins/src/base/skills/git-commit/SKILL.md +48 -0
- package/plugins/src/base/skills/git-commit-and-submit-pr/SKILL.md +8 -0
- package/plugins/src/base/skills/git-commit-submit-pr-and-verify/SKILL.md +7 -0
- package/plugins/src/base/skills/git-commit-submit-pr-deploy-and-verify/SKILL.md +7 -0
- package/plugins/src/base/skills/git-prune/SKILL.md +35 -0
- package/plugins/src/base/skills/git-submit-pr/SKILL.md +44 -0
- package/plugins/src/base/skills/jira-add-journey/SKILL.md +120 -0
- package/plugins/src/base/skills/jira-create/SKILL.md +95 -0
- package/plugins/src/base/skills/jira-evidence/SKILL.md +73 -0
- package/plugins/src/base/skills/jira-evidence/scripts/post-evidence.sh +163 -0
- package/plugins/src/base/skills/jira-fix/SKILL.md +16 -0
- package/plugins/src/base/skills/jira-implement/SKILL.md +18 -0
- package/plugins/src/base/skills/jira-journey/SKILL.md +125 -0
- package/plugins/src/base/skills/jira-journey/scripts/generate-templates.py +233 -0
- package/plugins/src/base/skills/jira-journey/scripts/parse-plan.py +368 -0
- package/plugins/src/base/skills/jira-sync/SKILL.md +63 -0
- package/plugins/src/base/skills/jira-verify/SKILL.md +48 -0
- package/plugins/src/base/skills/jsdoc-best-practices/SKILL.md +432 -0
- package/plugins/src/base/skills/lisa-review-implementation/SKILL.md +209 -0
- package/plugins/src/base/skills/plan-add-test-coverage/SKILL.md +44 -0
- package/plugins/src/base/skills/plan-execute/SKILL.md +89 -0
- package/plugins/src/base/skills/plan-fix-linter-error/SKILL.md +45 -0
- package/plugins/src/base/skills/plan-local-code-review/SKILL.md +88 -0
- package/plugins/src/base/skills/plan-lower-code-complexity/SKILL.md +44 -0
- package/plugins/src/base/skills/plan-reduce-max-lines/SKILL.md +45 -0
- package/plugins/src/base/skills/plan-reduce-max-lines-per-function/SKILL.md +46 -0
- package/plugins/src/base/skills/pull-request-review/SKILL.md +68 -0
- package/plugins/src/base/skills/security-zap-scan/SKILL.md +33 -0
- package/plugins/src/base/skills/skill-creator/LICENSE.txt +202 -0
- package/plugins/src/base/skills/skill-creator/SKILL.md +210 -0
- package/plugins/src/base/skills/skill-creator/scripts/init_skill.py +305 -0
- package/plugins/src/base/skills/skill-creator/scripts/package_skill.py +112 -0
- package/plugins/src/base/skills/skill-creator/scripts/quick_validate.py +67 -0
- package/plugins/src/base/skills/sonarqube-check/SKILL.md +11 -0
- package/plugins/src/base/skills/sonarqube-fix/SKILL.md +8 -0
- package/plugins/src/base/skills/tasks-load/SKILL.md +88 -0
- package/plugins/src/base/skills/tasks-sync/SKILL.md +108 -0
- package/plugins/src/cdk/.claude-plugin/plugin.json +86 -0
- package/plugins/src/expo/.claude-plugin/plugin.json +86 -0
- package/plugins/src/expo/agents/ops-specialist.md +124 -0
- package/plugins/src/expo/rules/expo-verification.md +261 -0
- package/plugins/src/expo/skills/apollo-client/SKILL.md +238 -0
- package/plugins/src/expo/skills/apollo-client/references/mutation-patterns.md +360 -0
- package/plugins/src/expo/skills/atomic-design-gluestack/SKILL.md +360 -0
- package/plugins/src/expo/skills/atomic-design-gluestack/references/atomic-levels.md +417 -0
- package/plugins/src/expo/skills/atomic-design-gluestack/references/folder-structure.md +257 -0
- package/plugins/src/expo/skills/atomic-design-gluestack/references/gluestack-mapping.md +233 -0
- package/plugins/src/expo/skills/atomic-design-gluestack/scripts/validate_atomic_structure.py +329 -0
- package/plugins/src/expo/skills/container-view-pattern/SKILL.md +299 -0
- package/plugins/src/expo/skills/container-view-pattern/references/examples.md +749 -0
- package/plugins/src/expo/skills/container-view-pattern/references/patterns.md +318 -0
- package/plugins/src/expo/skills/container-view-pattern/scripts/create_component.py +200 -0
- package/plugins/src/expo/skills/container-view-pattern/scripts/validate_component.py +209 -0
- package/plugins/src/expo/skills/cross-platform-compatibility/SKILL.md +268 -0
- package/plugins/src/expo/skills/cross-platform-compatibility/references/common-issues.md +619 -0
- package/plugins/src/expo/skills/cross-platform-compatibility/references/file-extensions.md +340 -0
- package/plugins/src/expo/skills/cross-platform-compatibility/references/platform-api.md +276 -0
- package/plugins/src/expo/skills/cross-platform-compatibility/scripts/validate_cross_platform.py +416 -0
- package/plugins/src/expo/skills/directory-structure/SKILL.md +202 -0
- package/plugins/src/expo/skills/directory-structure/scripts/validate_structure.py +445 -0
- package/plugins/src/expo/skills/expo-env-config/SKILL.md +309 -0
- package/plugins/src/expo/skills/expo-env-config/references/validation-patterns.md +417 -0
- package/plugins/src/expo/skills/expo-router-best-practices/SKILL.md +431 -0
- package/plugins/src/expo/skills/expo-router-best-practices/references/official-docs.md +290 -0
- package/plugins/src/expo/skills/expo-router-best-practices/scripts/generate-route.py +171 -0
- package/plugins/src/expo/skills/gluestack-nativewind/SKILL.md +411 -0
- package/plugins/src/expo/skills/gluestack-nativewind/references/color-tokens.md +343 -0
- package/plugins/src/expo/skills/gluestack-nativewind/references/component-mapping.md +307 -0
- package/plugins/src/expo/skills/gluestack-nativewind/references/spacing-scale.md +300 -0
- package/plugins/src/expo/skills/gluestack-nativewind/scripts/validate_styling.py +315 -0
- package/plugins/src/expo/skills/jira-add-journey/SKILL.md +126 -0
- package/plugins/src/expo/skills/jira-create/SKILL.md +101 -0
- package/plugins/src/expo/skills/jira-evidence/SKILL.md +78 -0
- package/plugins/src/expo/skills/jira-evidence/scripts/post-evidence.sh +163 -0
- package/plugins/src/expo/skills/jira-journey/SKILL.md +190 -0
- package/plugins/src/expo/skills/jira-journey/scripts/generate-templates.py +281 -0
- package/plugins/src/expo/skills/jira-journey/scripts/parse-plan.py +368 -0
- package/plugins/src/expo/skills/jira-verify/SKILL.md +47 -0
- package/plugins/src/expo/skills/local-state/SKILL.md +362 -0
- package/plugins/src/expo/skills/local-state/references/async-storage.md +505 -0
- package/plugins/src/expo/skills/local-state/references/persistence-patterns.md +711 -0
- package/plugins/src/expo/skills/local-state/references/reactive-variables.md +446 -0
- package/plugins/src/expo/skills/ops-browser-uat/SKILL.md +124 -0
- package/plugins/src/expo/skills/ops-check-logs/SKILL.md +211 -0
- package/plugins/src/expo/skills/ops-db-ops/SKILL.md +119 -0
- package/plugins/src/expo/skills/ops-deploy/SKILL.md +119 -0
- package/plugins/src/expo/skills/ops-monitor-errors/SKILL.md +99 -0
- package/plugins/src/expo/skills/ops-performance/SKILL.md +165 -0
- package/plugins/src/expo/skills/ops-run-local/SKILL.md +166 -0
- package/plugins/src/expo/skills/ops-verify-health/SKILL.md +101 -0
- package/plugins/src/expo/skills/owasp-zap/SKILL.md +56 -0
- package/plugins/src/expo/skills/playwright-selectors/SKILL.md +223 -0
- package/plugins/src/expo/skills/testing-library/SKILL.md +314 -0
- package/plugins/src/expo/skills/testing-library/references/async-patterns.md +420 -0
- package/plugins/src/expo/skills/testing-library/references/expo-router-testing.md +556 -0
- package/plugins/src/expo/skills/testing-library/references/mocking-patterns.md +590 -0
- package/plugins/src/expo/skills/testing-library/references/query-priority.md +291 -0
- package/plugins/src/nestjs/.claude-plugin/plugin.json +86 -0
- package/plugins/src/nestjs/skills/nestjs-graphql/SKILL.md +176 -0
- package/plugins/src/nestjs/skills/nestjs-graphql/references/advanced-features.md +527 -0
- package/plugins/src/nestjs/skills/nestjs-graphql/references/project-patterns.md +483 -0
- package/plugins/src/nestjs/skills/nestjs-graphql/references/quick-start.md +257 -0
- package/plugins/src/nestjs/skills/nestjs-graphql/references/resolvers-mutations.md +413 -0
- package/plugins/src/nestjs/skills/nestjs-graphql/references/types-scalars.md +513 -0
- package/plugins/src/nestjs/skills/nestjs-rules/SKILL.md +536 -0
- package/plugins/src/nestjs/skills/typeorm-patterns/SKILL.md +275 -0
- package/plugins/src/nestjs/skills/typeorm-patterns/references/configuration-patterns.md +487 -0
- package/plugins/src/nestjs/skills/typeorm-patterns/references/entity-patterns.md +450 -0
- package/plugins/src/nestjs/skills/typeorm-patterns/references/observability-patterns.md +536 -0
- package/plugins/src/rails/.claude-plugin/plugin.json +77 -0
- package/plugins/src/rails/rules/rails-conventions.md +176 -0
- package/plugins/src/rails/skills/action-controller-best-practices/SKILL.md +374 -0
- package/plugins/src/rails/skills/action-view-best-practices/SKILL.md +335 -0
- package/plugins/src/rails/skills/active-record-model-best-practices/SKILL.md +166 -0
- package/plugins/src/rails/skills/jira-add-journey/SKILL.md +65 -0
- package/plugins/src/rails/skills/jira-create/SKILL.md +41 -0
- package/plugins/src/rails/skills/jira-evidence/SKILL.md +70 -0
- package/plugins/src/rails/skills/jira-evidence/scripts/post-evidence.sh +163 -0
- package/plugins/src/rails/skills/jira-journey/SKILL.md +64 -0
- package/plugins/src/rails/skills/jira-verify/SKILL.md +29 -0
- package/plugins/src/rails/skills/plan-add-test-coverage/SKILL.md +45 -0
- package/plugins/src/rails/skills/plan-fix-linter-error/SKILL.md +45 -0
- package/plugins/src/rails/skills/plan-lower-code-complexity/SKILL.md +48 -0
- package/plugins/src/rails/skills/plan-reduce-max-lines/SKILL.md +46 -0
- package/plugins/src/rails/skills/plan-reduce-max-lines-per-function/SKILL.md +46 -0
- package/plugins/src/typescript/.claude-plugin/plugin.json +86 -0
- package/scripts/build-plugins.sh +22 -0
- package/scripts/cleanup-amplify-branches.sh +150 -0
- package/scripts/cleanup-github-branches.sh +202 -0
- package/scripts/github-status-check.sh +301 -0
- package/scripts/install-claude-plugins.sh +70 -0
- package/scripts/lisa-commit-and-pr-local.sh +204 -0
- package/scripts/lisa-update-local.sh +158 -0
- package/scripts/update-node-version.ts +197 -0
- package/tsconfig/build.json +8 -0
- package/tsconfig/cdk.json +16 -0
- package/tsconfig/eslint.json +12 -0
- package/tsconfig/expo.json +18 -0
- package/tsconfig/nestjs.json +18 -0
- package/tsconfig/spec.json +7 -0
- package/{typescript/copy-overwrite/tsconfig.typescript.json → tsconfig/typescript.json} +1 -1
- package/typescript/copy-overwrite/eslint.config.ts +6 -20
- package/typescript/copy-overwrite/eslint.slow.config.ts +4 -73
- package/typescript/copy-overwrite/jest.config.ts +8 -12
- package/typescript/copy-overwrite/tsconfig.json +1 -1
- package/typescript/deletions.json +7 -1
- package/typescript/merge/.claude/settings.json +29 -0
- package/typescript/package-lisa/package.lisa.json +2 -36
- package/all/copy-overwrite/.claude/rules/lisa.md +0 -66
- package/all/copy-overwrite/.claude/settings.json +0 -79
- package/all/copy-overwrite/CLAUDE.md +0 -59
- package/all/copy-overwrite/HUMAN.md +0 -309
- package/cdk/copy-overwrite/.claude/settings.json +0 -80
- package/expo/copy-overwrite/.claude/settings.json +0 -80
- package/nestjs/copy-overwrite/.claude/settings.json +0 -80
- package/rails/copy-overwrite/CLAUDE.md +0 -56
- package/typescript/copy-overwrite/.claude/settings.json +0 -80
- package/typescript/copy-overwrite/eslint.base.ts +0 -429
- package/typescript/copy-overwrite/eslint.typescript.ts +0 -142
- package/typescript/copy-overwrite/jest.typescript.ts +0 -72
- /package/{all/copy-overwrite/.claude → plugins/lisa-cdk/rules}/README.md +0 -0
- /package/{all/create-only/scripts → scripts}/setup-deploy-key.sh +0 -0
- /package/{typescript/copy-overwrite/tsconfig.base.json → tsconfig/base.json} +0 -0
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: jira-add-journey
|
|
3
|
+
description: "Add a Validation Journey section to an existing JIRA ticket by reading the ticket description, understanding the feature, and generating the journey steps, viewports, and assertions."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Add Validation Journey to Existing JIRA Ticket
|
|
7
|
+
|
|
8
|
+
Read an existing JIRA ticket, understand the feature or fix it describes, analyze the codebase to determine the user flow, and append a Validation Journey section to the ticket description.
|
|
9
|
+
|
|
10
|
+
## Arguments
|
|
11
|
+
|
|
12
|
+
`$ARGUMENTS`: `<TICKET_ID>`
|
|
13
|
+
|
|
14
|
+
- `TICKET_ID` (required): JIRA ticket key (e.g., `PROJ-123`)
|
|
15
|
+
|
|
16
|
+
## Prerequisites
|
|
17
|
+
|
|
18
|
+
- `JIRA_API_TOKEN` environment variable set
|
|
19
|
+
- `jira-cli` configured (`~/.config/.jira/.config.yml`)
|
|
20
|
+
|
|
21
|
+
## Workflow
|
|
22
|
+
|
|
23
|
+
### Step 1: Read the Ticket
|
|
24
|
+
|
|
25
|
+
Use the Atlassian MCP or jira-cli to read the full ticket details:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
jira issue view <TICKET_ID>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Extract:
|
|
32
|
+
- Title and description (what the feature/fix is)
|
|
33
|
+
- Acceptance criteria (what needs to be verified)
|
|
34
|
+
- Components or labels (frontend, mobile, responsive, etc.)
|
|
35
|
+
- Any linked tickets or parent epic context
|
|
36
|
+
|
|
37
|
+
### Step 2: Check for Existing Journey
|
|
38
|
+
|
|
39
|
+
Run the parser to see if a Validation Journey already exists:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
python3 .claude/skills/jira-journey/scripts/parse-plan.py <TICKET_ID> 2>&1
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
If the parser succeeds and returns steps, the ticket already has a journey. Report this to the user and stop.
|
|
46
|
+
|
|
47
|
+
### Step 3: Analyze the Feature
|
|
48
|
+
|
|
49
|
+
Based on the ticket description and acceptance criteria:
|
|
50
|
+
|
|
51
|
+
1. **Identify the UI surface** — Which pages, modals, or components are affected?
|
|
52
|
+
2. **Identify the user flow** — What steps does a user take to exercise the feature?
|
|
53
|
+
3. **Identify visual checkpoints** — At which states should screenshots be captured?
|
|
54
|
+
4. **Identify viewports** — Does this feature have responsive behavior? Always include Desktop. Add Mobile for responsive changes.
|
|
55
|
+
5. **Identify assertions** — What must be visually true for the feature to be correct?
|
|
56
|
+
|
|
57
|
+
Use the Explore agent or read the codebase directly to understand:
|
|
58
|
+
- Which components are involved (search by ticket ID, feature name, or file paths mentioned in the ticket)
|
|
59
|
+
- What testIDs exist (for Playwright interaction)
|
|
60
|
+
- What the user flow looks like (Container/View structure, navigation, modals)
|
|
61
|
+
|
|
62
|
+
### Step 4: Draft the Validation Journey
|
|
63
|
+
|
|
64
|
+
Compose the journey following the format:
|
|
65
|
+
|
|
66
|
+
```text
|
|
67
|
+
h2. Validation Journey
|
|
68
|
+
|
|
69
|
+
h3. Prerequisites
|
|
70
|
+
- List what must be true before starting (backend, auth, feature flags)
|
|
71
|
+
|
|
72
|
+
h3. Steps
|
|
73
|
+
1. First action the user takes
|
|
74
|
+
2. Second action [SCREENSHOT: descriptive-name]
|
|
75
|
+
3. Continue the flow
|
|
76
|
+
4. Final verification [SCREENSHOT: final-state]
|
|
77
|
+
|
|
78
|
+
h3. Viewports
|
|
79
|
+
||Name||Width||Height||
|
|
80
|
+
|Desktop|1512|768|
|
|
81
|
+
|Mobile|375|812|
|
|
82
|
+
|
|
83
|
+
h3. Assertions
|
|
84
|
+
- Testable visual statement about the expected behavior
|
|
85
|
+
- Another assertion about responsive layout
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Guidelines for Drafting
|
|
89
|
+
|
|
90
|
+
1. **3-7 screenshot markers** — Enough to prove the feature, not so many that execution is slow
|
|
91
|
+
2. **Concrete steps** — "Click the 'Add action' button" not "Interact with the controls"
|
|
92
|
+
3. **Include auth if needed** — If the journey requires login, include credentials in Prerequisites
|
|
93
|
+
4. **Name feature flags explicitly** — If the feature is behind a PostHog flag, name it
|
|
94
|
+
5. **Assertions must be testable** — "Buttons stacked vertically on mobile" not "Layout looks good"
|
|
95
|
+
6. **Screenshot names in kebab-case** — `confirm-step-disabled`, `modal-open`, `form-error`
|
|
96
|
+
|
|
97
|
+
### Step 5: Present to User for Approval
|
|
98
|
+
|
|
99
|
+
Display the drafted Validation Journey to the user and ask for confirmation before appending it to the ticket. The user may want to:
|
|
100
|
+
- Add or remove steps
|
|
101
|
+
- Change screenshot markers
|
|
102
|
+
- Adjust viewports or assertions
|
|
103
|
+
- Modify prerequisites
|
|
104
|
+
|
|
105
|
+
### Step 6: Append to Ticket Description
|
|
106
|
+
|
|
107
|
+
After user approval, use the JIRA REST API to append the Validation Journey to the existing ticket description.
|
|
108
|
+
|
|
109
|
+
Use the Atlassian MCP `updateJiraIssue` to update the description field. The journey section must be appended **after** the existing description content, not replace it.
|
|
110
|
+
|
|
111
|
+
### Step 7: Verify
|
|
112
|
+
|
|
113
|
+
Run the parser again to confirm the journey was added correctly:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
python3 .claude/skills/jira-journey/scripts/parse-plan.py <TICKET_ID>
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
The parser should now return the steps, viewports, and assertions from the newly added section.
|
|
120
|
+
|
|
121
|
+
## When to Use This Skill
|
|
122
|
+
|
|
123
|
+
- Ticket was created before the Validation Journey convention was established
|
|
124
|
+
- Ticket was created manually without following `jira-create` guidelines
|
|
125
|
+
- Ticket needs a journey added or updated based on implementation progress
|
|
126
|
+
- During sprint planning, to ensure all frontend tickets have journeys before work starts
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: jira-create
|
|
3
|
+
description: This skill should be used when creating JIRA epics, stories, and tasks from code files or descriptions. It analyzes the provided input, determines the appropriate issue hierarchy, and creates issues with comprehensive quality requirements including test-first development and documentation.
|
|
4
|
+
allowed-tools: ["Read", "Glob", "LS", "mcp__atlassian__createJiraIssue", "mcp__atlassian__getVisibleJiraProjects", "mcp__atlassian__getJiraProjectIssueTypesMetadata", "mcp__atlassian__getAccessibleAtlassianResources"]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Create JIRA Issues from $ARGUMENTS
|
|
8
|
+
|
|
9
|
+
Analyze the provided file(s) and create a comprehensive JIRA hierarchy with all mandatory quality gates.
|
|
10
|
+
|
|
11
|
+
## Process
|
|
12
|
+
|
|
13
|
+
1. **Analyze**: Read $ARGUMENTS to understand scope
|
|
14
|
+
2. **Determine Structure**:
|
|
15
|
+
- Epic needed if: multiple features, major changes, >3 related files
|
|
16
|
+
- Direct tasks if: bug fix, single file, minor change
|
|
17
|
+
3. **Create Issues** with hierarchy:
|
|
18
|
+
```
|
|
19
|
+
Epic → User Story → Tasks (test, implement, document, cleanup)
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Mandatory for Every Code Issue
|
|
23
|
+
|
|
24
|
+
**Test-First**: Write tests before implementation
|
|
25
|
+
**Quality Gates**: All tests/checks must pass, no SonarCloud violations
|
|
26
|
+
**Documentation**: Check existing, update/create new, remove obsolete
|
|
27
|
+
**Feature Flags**: All features behind flags with lifecycle plan
|
|
28
|
+
**Cleanup**: Remove temporary code, scripts, dev configs
|
|
29
|
+
**Validation Journey**: Every ticket that touches UI must include a Validation Journey section (see below)
|
|
30
|
+
|
|
31
|
+
## Validation Journey (Frontend Tickets)
|
|
32
|
+
|
|
33
|
+
Every ticket that changes, adds, or fixes UI must include a `Validation Journey` section in the description. This section is consumed by the `jira-journey` skill to automate visual verification via Playwright.
|
|
34
|
+
|
|
35
|
+
### When to Include
|
|
36
|
+
|
|
37
|
+
Include a Validation Journey when the ticket involves:
|
|
38
|
+
- New UI components or screens
|
|
39
|
+
- Layout or styling changes (responsive, spacing, colors)
|
|
40
|
+
- Modal, drawer, or popover behavior
|
|
41
|
+
- Form validation or user input flows
|
|
42
|
+
- Bug fixes that are visually verifiable
|
|
43
|
+
|
|
44
|
+
Skip the Validation Journey only for:
|
|
45
|
+
- Pure backend/API changes with no UI surface
|
|
46
|
+
- Config-only changes (env vars, feature flags)
|
|
47
|
+
- Test-only or documentation-only changes
|
|
48
|
+
|
|
49
|
+
### How to Write
|
|
50
|
+
|
|
51
|
+
Design the journey from the **end user's perspective**. Walk through the exact steps a human would take to verify the change. Place `[SCREENSHOT: name]` markers at the key visual checkpoints.
|
|
52
|
+
|
|
53
|
+
Add this section to the ticket description:
|
|
54
|
+
|
|
55
|
+
```text
|
|
56
|
+
h2. Validation Journey
|
|
57
|
+
|
|
58
|
+
h3. Prerequisites
|
|
59
|
+
- App running locally or on dev
|
|
60
|
+
- Authenticated as test user
|
|
61
|
+
- Any required feature flags enabled
|
|
62
|
+
|
|
63
|
+
h3. Steps
|
|
64
|
+
1. Navigate to the relevant page
|
|
65
|
+
2. Perform the first action
|
|
66
|
+
3. Verify the expected state [SCREENSHOT: state-name]
|
|
67
|
+
4. Perform the next action
|
|
68
|
+
5. Verify the final state [SCREENSHOT: final-state]
|
|
69
|
+
|
|
70
|
+
h3. Viewports
|
|
71
|
+
||Name||Width||Height||
|
|
72
|
+
|Desktop|1512|768|
|
|
73
|
+
|Mobile|375|812|
|
|
74
|
+
|
|
75
|
+
h3. Assertions
|
|
76
|
+
- Describe what must be visually true at each viewport
|
|
77
|
+
- Each assertion is verified against the captured screenshots
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Guidelines
|
|
81
|
+
|
|
82
|
+
1. **Steps must be concrete and executable** — "Navigate to Players page" not "Go to the relevant section"
|
|
83
|
+
2. **Screenshot markers at visual checkpoints** — Place `[SCREENSHOT: name]` at states that prove the change works. Use descriptive kebab-case names (e.g., `modal-open`, `button-disabled`, `form-error`)
|
|
84
|
+
3. **Include 3-7 screenshot markers** — Enough to prove the feature works, not so many that execution is slow
|
|
85
|
+
4. **Viewports match the change scope** — Always include Desktop (1512x768). Add Mobile (375x812) for responsive changes. Add Tablet (768x1024) only if relevant.
|
|
86
|
+
5. **Assertions are testable statements** — "Buttons stacked vertically on mobile" not "Layout looks good"
|
|
87
|
+
6. **Prerequisites include feature flags** — If the feature is behind a PostHog flag, name it explicitly
|
|
88
|
+
7. **Auth steps included when needed** — If the journey requires login, include the test credentials in Prerequisites
|
|
89
|
+
|
|
90
|
+
## Issue Requirements
|
|
91
|
+
|
|
92
|
+
Each issue must clearly communicate to:
|
|
93
|
+
|
|
94
|
+
- **Coding Assistants**: Implementation requirements
|
|
95
|
+
- **Developers**: Technical approach
|
|
96
|
+
- **Stakeholders**: Business value
|
|
97
|
+
|
|
98
|
+
Default project: from jira-cli config (override via arguments)
|
|
99
|
+
Exclude unless requested: migration plans, performance tests
|
|
100
|
+
|
|
101
|
+
Execute the analysis and create the complete JIRA structure with proper parent-child relationships.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: jira-evidence
|
|
3
|
+
description: "Upload screenshots to GitHub pr-assets release, update PR description with evidence, upload attachments to JIRA, post wiki markup comment, and move ticket to Code Review. Reusable by any skill that captures screenshots and generates evidence/comment.txt + evidence/comment.md."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# JIRA Evidence Posting
|
|
7
|
+
|
|
8
|
+
Upload captured screenshots and generated templates to GitHub PR description and JIRA ticket. This skill is the posting step — it assumes screenshots and comment templates already exist in the evidence directory.
|
|
9
|
+
|
|
10
|
+
## Arguments
|
|
11
|
+
|
|
12
|
+
`$ARGUMENTS`: `<TICKET_ID> <EVIDENCE_DIR> <PR_NUMBER>`
|
|
13
|
+
|
|
14
|
+
- `TICKET_ID` (required): JIRA ticket key (e.g., `PROJ-123`)
|
|
15
|
+
- `EVIDENCE_DIR` (required): Directory containing screenshots and templates (e.g., `./evidence`)
|
|
16
|
+
- `PR_NUMBER` (required): GitHub PR number to update description
|
|
17
|
+
|
|
18
|
+
## Prerequisites
|
|
19
|
+
|
|
20
|
+
- `JIRA_API_TOKEN` environment variable set
|
|
21
|
+
- `jira-cli` configured (`~/.config/.jira/.config.yml`) — server and login are read from there
|
|
22
|
+
- `gh` CLI authenticated
|
|
23
|
+
- Evidence directory containing:
|
|
24
|
+
- `NN-name-viewport.png` screenshots (numbered, e.g., `01-search-step-desktop.png`)
|
|
25
|
+
- `comment.txt` — JIRA wiki markup (generated by `generate-templates.py`)
|
|
26
|
+
- `comment.md` — GitHub markdown (generated by `generate-templates.py`)
|
|
27
|
+
|
|
28
|
+
## Usage
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
bash .claude/skills/jira-evidence/scripts/post-evidence.sh <TICKET_ID> <EVIDENCE_DIR> <PR_NUMBER>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Example
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
bash .claude/skills/jira-evidence/scripts/post-evidence.sh PROJ-123 ./evidence 42
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## What It Does
|
|
41
|
+
|
|
42
|
+
1. **Read JIRA config** — Reads `~/.config/.jira/.config.yml` to obtain `server` and `login` dynamically (no hardcoded values)
|
|
43
|
+
2. **Upload to GitHub `pr-assets` release** — Uploads `NN-name-viewport.png` screenshots via `gh release upload --clobber`, creating CDN URLs that render in GitHub markdown
|
|
44
|
+
3. **Update PR description** — Replaces or appends the `## Evidence` section in the PR body using `gh pr edit`
|
|
45
|
+
4. **Upload JIRA attachments** — Uploads screenshots via REST API v3 so `!filename.png!` wiki markup renders inline
|
|
46
|
+
5. **Post JIRA comment** — Posts `comment.txt` as a new comment via REST API v2 (wiki markup with embedded images)
|
|
47
|
+
6. **Move ticket to Code Review** — Transitions the JIRA ticket via `jira issue move`
|
|
48
|
+
|
|
49
|
+
## Screenshot Naming Convention
|
|
50
|
+
|
|
51
|
+
Only files matching `NN-*.png` (two-digit prefix) are uploaded. Other files in the evidence directory are ignored.
|
|
52
|
+
|
|
53
|
+
```text
|
|
54
|
+
evidence/
|
|
55
|
+
01-search-step-desktop.png ✓ uploaded
|
|
56
|
+
02-confirm-step-desktop.png ✓ uploaded
|
|
57
|
+
03-search-step-mobile.png ✓ uploaded
|
|
58
|
+
comment.txt used for JIRA comment
|
|
59
|
+
comment.md used for PR description
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Troubleshooting
|
|
63
|
+
|
|
64
|
+
### Images not rendering in GitHub PR
|
|
65
|
+
|
|
66
|
+
Images must be in the `pr-assets` GitHub release (not committed to git). The script handles this via `gh release upload`. If the release does not exist, create it first:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
gh release create pr-assets --title "PR Assets" --notes "CDN for PR evidence screenshots"
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### JIRA comment shows `!filename.png!` as text (not image)
|
|
73
|
+
|
|
74
|
+
The screenshot must be uploaded as a JIRA attachment before posting the comment. The script uploads attachments first then posts the comment — always in that order.
|
|
75
|
+
|
|
76
|
+
### JIRA API returns 403 on attachment upload
|
|
77
|
+
|
|
78
|
+
Ensure `JIRA_API_TOKEN` is set and `login` in `~/.config/.jira/.config.yml` matches your Atlassian account email.
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# post-evidence.sh — Upload evidence and post to JIRA + GitHub PR description
|
|
3
|
+
#
|
|
4
|
+
# Usage:
|
|
5
|
+
# bash post-evidence.sh <TICKET_ID> <EVIDENCE_DIR> <PR_NUMBER>
|
|
6
|
+
#
|
|
7
|
+
# Prerequisites:
|
|
8
|
+
# - JIRA_API_TOKEN env var set
|
|
9
|
+
# - jira-cli configured (~/.config/.jira/.config.yml)
|
|
10
|
+
# - gh CLI authenticated
|
|
11
|
+
#
|
|
12
|
+
# What it does:
|
|
13
|
+
# 1. Uploads evidence files to the 'pr-assets' GitHub release
|
|
14
|
+
# 2. Updates the GitHub PR description with evidence/comment.md
|
|
15
|
+
# 3. Uploads image evidence as JIRA attachments
|
|
16
|
+
# 4. Posts/updates the JIRA comment with evidence/comment.txt
|
|
17
|
+
# 5. Moves the JIRA ticket to "Code Review"
|
|
18
|
+
|
|
19
|
+
set -euo pipefail
|
|
20
|
+
|
|
21
|
+
TICKET_ID="${1:?Usage: post-evidence.sh <TICKET_ID> <EVIDENCE_DIR> <PR_NUMBER>}"
|
|
22
|
+
EVIDENCE_DIR="${2:?Usage: post-evidence.sh <TICKET_ID> <EVIDENCE_DIR> <PR_NUMBER>}"
|
|
23
|
+
PR_NUMBER="${3:?Usage: post-evidence.sh <TICKET_ID> <EVIDENCE_DIR> <PR_NUMBER>}"
|
|
24
|
+
|
|
25
|
+
JIRA_CONFIG="${HOME}/.config/.jira/.config.yml"
|
|
26
|
+
if [[ ! -f "$JIRA_CONFIG" ]]; then
|
|
27
|
+
echo "ERROR: jira-cli config not found at $JIRA_CONFIG — run 'jira init' first" >&2
|
|
28
|
+
exit 1
|
|
29
|
+
fi
|
|
30
|
+
JIRA_SERVER=$(grep '^server:' "$JIRA_CONFIG" | awk '{print $2}')
|
|
31
|
+
JIRA_USER=$(grep '^login:' "$JIRA_CONFIG" | awk '{print $2}')
|
|
32
|
+
GH_REPO=$(gh repo view --json nameWithOwner --jq '.nameWithOwner')
|
|
33
|
+
RELEASE_TAG="pr-assets"
|
|
34
|
+
|
|
35
|
+
if [[ -z "${JIRA_API_TOKEN:-}" ]]; then
|
|
36
|
+
echo "ERROR: JIRA_API_TOKEN environment variable is not set" >&2
|
|
37
|
+
exit 1
|
|
38
|
+
fi
|
|
39
|
+
|
|
40
|
+
# Collect numbered evidence files (images + text)
|
|
41
|
+
SCREENSHOTS=()
|
|
42
|
+
while IFS= read -r -d '' f; do
|
|
43
|
+
SCREENSHOTS+=("$f")
|
|
44
|
+
done < <(find "$EVIDENCE_DIR" -maxdepth 1 -name '[0-9][0-9]-*.png' -print0 | sort -z)
|
|
45
|
+
|
|
46
|
+
TEXT_EVIDENCE=()
|
|
47
|
+
while IFS= read -r -d '' f; do
|
|
48
|
+
TEXT_EVIDENCE+=("$f")
|
|
49
|
+
done < <(find "$EVIDENCE_DIR" -maxdepth 1 \( -name '[0-9][0-9]-*.txt' -o -name '[0-9][0-9]-*.json' \) ! -name 'comment.txt' -print0 | sort -z)
|
|
50
|
+
|
|
51
|
+
ALL_EVIDENCE=("${SCREENSHOTS[@]}" "${TEXT_EVIDENCE[@]}")
|
|
52
|
+
|
|
53
|
+
if [[ ${#ALL_EVIDENCE[@]} -eq 0 ]]; then
|
|
54
|
+
echo "ERROR: No numbered evidence files found in $EVIDENCE_DIR (expected NN-*.png, NN-*.txt, or NN-*.json)" >&2
|
|
55
|
+
exit 1
|
|
56
|
+
fi
|
|
57
|
+
|
|
58
|
+
echo "Found ${#SCREENSHOTS[@]} screenshots and ${#TEXT_EVIDENCE[@]} text evidence files to upload"
|
|
59
|
+
|
|
60
|
+
# Compute JIRA auth early (used in steps 3 and 4)
|
|
61
|
+
JIRA_AUTH=$(echo -n "$JIRA_USER:$JIRA_API_TOKEN" | base64)
|
|
62
|
+
|
|
63
|
+
# ── Step 1: Upload to GitHub pr-assets release ──────────────────────────────
|
|
64
|
+
echo ""
|
|
65
|
+
echo "==> Uploading to GitHub release '$RELEASE_TAG'..."
|
|
66
|
+
|
|
67
|
+
for FILE in "${ALL_EVIDENCE[@]}"; do
|
|
68
|
+
FILENAME=$(basename "$FILE")
|
|
69
|
+
echo " ↑ $FILENAME"
|
|
70
|
+
gh release upload "$RELEASE_TAG" "$FILE" --repo "$GH_REPO" --clobber
|
|
71
|
+
done
|
|
72
|
+
|
|
73
|
+
echo " ✓ GitHub release assets uploaded"
|
|
74
|
+
|
|
75
|
+
# ── Step 2: Update GitHub PR description with evidence ──────────────────────
|
|
76
|
+
COMMENT_MD="$EVIDENCE_DIR/comment.md"
|
|
77
|
+
if [[ ! -f "$COMMENT_MD" ]]; then
|
|
78
|
+
echo "ERROR: $COMMENT_MD not found — run generate-templates.py first" >&2
|
|
79
|
+
exit 1
|
|
80
|
+
fi
|
|
81
|
+
|
|
82
|
+
echo ""
|
|
83
|
+
echo "==> Updating GitHub PR #$PR_NUMBER description..."
|
|
84
|
+
|
|
85
|
+
CURRENT_BODY=$(gh pr view "$PR_NUMBER" --json body --jq '.body')
|
|
86
|
+
|
|
87
|
+
# Replace or append the Evidence section
|
|
88
|
+
if echo "$CURRENT_BODY" | grep -q "^## Evidence"; then
|
|
89
|
+
# Replace from "## Evidence" to end of file
|
|
90
|
+
NEW_BODY=$(echo "$CURRENT_BODY" | sed '/^## Evidence/,$d')
|
|
91
|
+
EVIDENCE_SECTION=$(cat "$COMMENT_MD")
|
|
92
|
+
UPDATED_BODY="${NEW_BODY}
|
|
93
|
+
${EVIDENCE_SECTION}"
|
|
94
|
+
else
|
|
95
|
+
EVIDENCE_SECTION=$(cat "$COMMENT_MD")
|
|
96
|
+
UPDATED_BODY="${CURRENT_BODY}
|
|
97
|
+
|
|
98
|
+
${EVIDENCE_SECTION}"
|
|
99
|
+
fi
|
|
100
|
+
|
|
101
|
+
gh pr edit "$PR_NUMBER" --body "$UPDATED_BODY"
|
|
102
|
+
echo " ✓ PR description updated with evidence"
|
|
103
|
+
|
|
104
|
+
# ── Step 3: Upload image evidence as JIRA attachments ───────────────────────
|
|
105
|
+
if [[ ${#SCREENSHOTS[@]} -gt 0 ]]; then
|
|
106
|
+
echo ""
|
|
107
|
+
echo "==> Uploading image attachments to JIRA $TICKET_ID..."
|
|
108
|
+
|
|
109
|
+
for IMG in "${SCREENSHOTS[@]}"; do
|
|
110
|
+
FILENAME=$(basename "$IMG")
|
|
111
|
+
echo " ↑ $FILENAME"
|
|
112
|
+
RESP=$(curl -s -w "\nHTTP_CODE:%{http_code}" \
|
|
113
|
+
-X POST \
|
|
114
|
+
-H "Authorization: Basic $JIRA_AUTH" \
|
|
115
|
+
-H "X-Atlassian-Token: no-check" \
|
|
116
|
+
-F "file=@$IMG" \
|
|
117
|
+
"$JIRA_SERVER/rest/api/3/issue/$TICKET_ID/attachments")
|
|
118
|
+
HTTP_CODE=$(echo "$RESP" | grep "HTTP_CODE:" | cut -d: -f2)
|
|
119
|
+
if [[ "$HTTP_CODE" != "200" ]]; then
|
|
120
|
+
echo " WARNING: Failed to upload $FILENAME (HTTP $HTTP_CODE)" >&2
|
|
121
|
+
fi
|
|
122
|
+
done
|
|
123
|
+
|
|
124
|
+
echo " ✓ JIRA attachments uploaded"
|
|
125
|
+
fi
|
|
126
|
+
|
|
127
|
+
# ── Step 4: Post JIRA comment ────────────────────────────────────────────────
|
|
128
|
+
COMMENT_TXT="$EVIDENCE_DIR/comment.txt"
|
|
129
|
+
if [[ ! -f "$COMMENT_TXT" ]]; then
|
|
130
|
+
echo "ERROR: $COMMENT_TXT not found — run generate-templates.py first" >&2
|
|
131
|
+
exit 1
|
|
132
|
+
fi
|
|
133
|
+
|
|
134
|
+
echo ""
|
|
135
|
+
echo "==> Posting JIRA comment on $TICKET_ID..."
|
|
136
|
+
|
|
137
|
+
COMMENT_BODY=$(cat "$COMMENT_TXT")
|
|
138
|
+
COMMENT_JSON=$(python3 -c "import sys, json; print(json.dumps(sys.stdin.read()))" <<< "$COMMENT_BODY")
|
|
139
|
+
|
|
140
|
+
RESP=$(curl -s -w "\nHTTP_CODE:%{http_code}" \
|
|
141
|
+
-X POST \
|
|
142
|
+
-H "Authorization: Basic $JIRA_AUTH" \
|
|
143
|
+
-H "Content-Type: application/json" \
|
|
144
|
+
"$JIRA_SERVER/rest/api/2/issue/$TICKET_ID/comment" \
|
|
145
|
+
-d "{\"body\": $COMMENT_JSON}")
|
|
146
|
+
HTTP_CODE=$(echo "$RESP" | grep "HTTP_CODE:" | cut -d: -f2)
|
|
147
|
+
|
|
148
|
+
if [[ "$HTTP_CODE" == "201" ]]; then
|
|
149
|
+
echo " ✓ JIRA comment posted"
|
|
150
|
+
else
|
|
151
|
+
echo " WARNING: JIRA comment returned HTTP $HTTP_CODE" >&2
|
|
152
|
+
echo "$RESP" | grep -v "HTTP_CODE:" | head -3
|
|
153
|
+
fi
|
|
154
|
+
|
|
155
|
+
# ── Step 5: Move ticket to Code Review ──────────────────────────────────────
|
|
156
|
+
echo ""
|
|
157
|
+
echo "==> Moving $TICKET_ID to Code Review..."
|
|
158
|
+
jira issue move "$TICKET_ID" "Code Review" 2>&1 && echo " ✓ Ticket moved to Code Review" || echo " WARNING: Could not move ticket" >&2
|
|
159
|
+
|
|
160
|
+
echo ""
|
|
161
|
+
echo "==> Done!"
|
|
162
|
+
echo " JIRA: $JIRA_SERVER/browse/$TICKET_ID"
|
|
163
|
+
echo " GitHub: https://github.com/$GH_REPO/pull/$PR_NUMBER"
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: jira-journey
|
|
3
|
+
description: "Read a JIRA ticket's Validation Journey section, execute the steps using Playwright MCP browser tools across all defined viewports, capture screenshots at each marker, generate evidence templates, and post to JIRA + GitHub PR using the jira-evidence skill."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# JIRA Validation Journey
|
|
7
|
+
|
|
8
|
+
Read a JIRA ticket's Validation Journey, execute it via Playwright MCP browser tools, capture screenshots at every `[SCREENSHOT: name]` marker across all viewports, and post evidence to both JIRA and GitHub PR.
|
|
9
|
+
|
|
10
|
+
## Arguments
|
|
11
|
+
|
|
12
|
+
`$ARGUMENTS`: `<TICKET_ID> [PR_NUMBER]`
|
|
13
|
+
|
|
14
|
+
- `TICKET_ID` (required): JIRA ticket key (e.g., `PROJ-123`)
|
|
15
|
+
- `PR_NUMBER` (optional): GitHub PR number to update description
|
|
16
|
+
|
|
17
|
+
## Prerequisites
|
|
18
|
+
|
|
19
|
+
- `JIRA_API_TOKEN` environment variable set
|
|
20
|
+
- `jira-cli` configured (`~/.config/.jira/.config.yml`)
|
|
21
|
+
- `gh` CLI authenticated
|
|
22
|
+
- Playwright MCP server running (browser tools available)
|
|
23
|
+
- Dev server running
|
|
24
|
+
|
|
25
|
+
## Workflow
|
|
26
|
+
|
|
27
|
+
### Step 1: Parse the Validation Journey
|
|
28
|
+
|
|
29
|
+
Run the parser script to extract the Validation Journey from the JIRA ticket description:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
python3 .claude/skills/jira-journey/scripts/parse-plan.py <TICKET_ID>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
The script outputs JSON to stdout:
|
|
36
|
+
|
|
37
|
+
```json
|
|
38
|
+
{
|
|
39
|
+
"ticket": "PROJ-123",
|
|
40
|
+
"prerequisites": [
|
|
41
|
+
"Backend dev server running",
|
|
42
|
+
"Admin user with test credentials"
|
|
43
|
+
],
|
|
44
|
+
"steps": [
|
|
45
|
+
{"number": 1, "text": "Navigate to Players page", "screenshot": null},
|
|
46
|
+
{"number": 5, "text": "Open transfer modal", "screenshot": "confirm-step-disabled"}
|
|
47
|
+
],
|
|
48
|
+
"viewports": [
|
|
49
|
+
{"name": "Desktop", "width": 1512, "height": 768},
|
|
50
|
+
{"name": "Mobile", "width": 375, "height": 812}
|
|
51
|
+
],
|
|
52
|
+
"assertions": [
|
|
53
|
+
"Modal fills entire screen on mobile (no horizontal overflow)"
|
|
54
|
+
]
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Read the JSON output and use it to drive the Playwright session.
|
|
59
|
+
|
|
60
|
+
### Step 2: Satisfy Prerequisites
|
|
61
|
+
|
|
62
|
+
Before starting the journey, verify each prerequisite:
|
|
63
|
+
|
|
64
|
+
1. Check if the dev server is running (try `browser_navigate` to the app URL)
|
|
65
|
+
2. Authenticate if needed (use test credentials from `.env.localhost` or `.env.local`)
|
|
66
|
+
3. Navigate to the starting point described in step 1
|
|
67
|
+
|
|
68
|
+
### Step 3: Execute Steps at Each Viewport
|
|
69
|
+
|
|
70
|
+
For **each viewport** defined in the journey:
|
|
71
|
+
|
|
72
|
+
1. Use `browser_resize` to set the viewport dimensions
|
|
73
|
+
2. Execute each step sequentially using Playwright MCP tools
|
|
74
|
+
3. At each step with a `screenshot` marker, use `browser_take_screenshot` to capture the screenshot
|
|
75
|
+
|
|
76
|
+
#### Screenshot Naming Convention
|
|
77
|
+
|
|
78
|
+
Screenshots are named: `{NN}-{screenshot-name}-{viewport-name}.png`
|
|
79
|
+
|
|
80
|
+
- `NN`: zero-padded sequential number (01, 02, 03...)
|
|
81
|
+
- `screenshot-name`: the value from `[SCREENSHOT: name]` in the JIRA step
|
|
82
|
+
- `viewport-name`: lowercase viewport name from the Viewports table
|
|
83
|
+
|
|
84
|
+
Example: For a journey with 3 screenshot markers and 2 viewports:
|
|
85
|
+
|
|
86
|
+
```text
|
|
87
|
+
evidence/
|
|
88
|
+
01-search-step-desktop.png
|
|
89
|
+
02-confirm-step-desktop.png
|
|
90
|
+
03-success-step-desktop.png
|
|
91
|
+
04-search-step-mobile.png
|
|
92
|
+
05-confirm-step-mobile.png
|
|
93
|
+
06-success-step-mobile.png
|
|
94
|
+
comment.txt
|
|
95
|
+
comment.md
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
#### Viewport Execution Strategy
|
|
99
|
+
|
|
100
|
+
Execute the **full journey once per viewport**. Between viewports:
|
|
101
|
+
|
|
102
|
+
1. Resize the browser using `browser_resize`
|
|
103
|
+
2. Navigate back to the starting point
|
|
104
|
+
3. Re-execute all steps from the beginning
|
|
105
|
+
|
|
106
|
+
This ensures each screenshot is captured at the correct viewport dimensions with the correct application state.
|
|
107
|
+
|
|
108
|
+
### Step 4: Generate Evidence Templates
|
|
109
|
+
|
|
110
|
+
After capturing all screenshots, run the template generator:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
python3 .claude/skills/jira-journey/scripts/generate-templates.py \
|
|
114
|
+
<TICKET_ID> \
|
|
115
|
+
<PR_NUMBER> \
|
|
116
|
+
<BRANCH_NAME> \
|
|
117
|
+
./evidence
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
This generates `evidence/comment.txt` (JIRA wiki markup) and `evidence/comment.md` (GitHub markdown) with:
|
|
121
|
+
|
|
122
|
+
- PR and branch metadata
|
|
123
|
+
- All screenshots organized by viewport
|
|
124
|
+
- The verification journey steps
|
|
125
|
+
- Assertions as verification results
|
|
126
|
+
|
|
127
|
+
### Step 5: Post Evidence
|
|
128
|
+
|
|
129
|
+
Use the jira-evidence skill to post everything:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
bash .claude/skills/jira-evidence/scripts/post-evidence.sh <TICKET_ID> ./evidence <PR_NUMBER>
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Step 6: Verify
|
|
136
|
+
|
|
137
|
+
Confirm images render inline at both the JIRA ticket and GitHub PR.
|
|
138
|
+
|
|
139
|
+
## Validation Journey Format in JIRA
|
|
140
|
+
|
|
141
|
+
The JIRA ticket description must contain a section with this structure:
|
|
142
|
+
|
|
143
|
+
### ADF Structure
|
|
144
|
+
|
|
145
|
+
```text
|
|
146
|
+
h2. Validation Journey
|
|
147
|
+
|
|
148
|
+
h3. Prerequisites
|
|
149
|
+
- App running locally or on dev
|
|
150
|
+
- Authenticated as test user
|
|
151
|
+
- Required feature flags enabled
|
|
152
|
+
|
|
153
|
+
h3. Steps
|
|
154
|
+
1. Navigate to the relevant page
|
|
155
|
+
2. Perform the first action
|
|
156
|
+
3. Click on the element [SCREENSHOT: element-state]
|
|
157
|
+
4. Complete the flow
|
|
158
|
+
5. Verify the final state [SCREENSHOT: final-state]
|
|
159
|
+
|
|
160
|
+
h3. Viewports
|
|
161
|
+
||Name||Width||Height||
|
|
162
|
+
|Desktop|1512|768|
|
|
163
|
+
|Mobile|375|812|
|
|
164
|
+
|
|
165
|
+
h3. Assertions
|
|
166
|
+
- Visual assertion about expected behavior
|
|
167
|
+
- Another assertion about responsive layout
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Key Rules
|
|
171
|
+
|
|
172
|
+
1. **`[SCREENSHOT: name]`** markers define where to capture. The `name` is used in the filename.
|
|
173
|
+
2. **Steps without markers** are executed but not captured.
|
|
174
|
+
3. **Viewports** define all resolutions to test. Each viewport runs the full journey.
|
|
175
|
+
4. **Assertions** describe what to verify visually in each screenshot.
|
|
176
|
+
5. **Prerequisites** describe what must be true before starting.
|
|
177
|
+
|
|
178
|
+
## Troubleshooting
|
|
179
|
+
|
|
180
|
+
### Modal closes on viewport resize
|
|
181
|
+
|
|
182
|
+
Some modals close when the viewport changes. The viewport execution strategy (full journey per viewport) handles this — each viewport starts fresh.
|
|
183
|
+
|
|
184
|
+
### Authentication required at each viewport
|
|
185
|
+
|
|
186
|
+
If the app requires re-authentication after resize/navigation, include the auth steps in the journey.
|
|
187
|
+
|
|
188
|
+
### Screenshot markers in conditional steps
|
|
189
|
+
|
|
190
|
+
If a step is conditional, capture the screenshot at the state described in the step text, not after the conditional action.
|