@codyswann/lisa 2.119.1 → 2.121.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 +18 -0
- package/dist/agy/agents-md-installer.d.ts +24 -0
- package/dist/agy/agents-md-installer.d.ts.map +1 -0
- package/dist/agy/agents-md-installer.js +126 -0
- package/dist/agy/agents-md-installer.js.map +1 -0
- package/dist/agy/mcp-installer.d.ts +84 -0
- package/dist/agy/mcp-installer.d.ts.map +1 -0
- package/dist/agy/mcp-installer.js +134 -0
- package/dist/agy/mcp-installer.js.map +1 -0
- package/dist/agy/plugin-installer.d.ts +21 -0
- package/dist/agy/plugin-installer.d.ts.map +1 -0
- package/dist/agy/plugin-installer.js +84 -0
- package/dist/agy/plugin-installer.js.map +1 -0
- package/dist/claude/claude-md-installer.d.ts +18 -0
- package/dist/claude/claude-md-installer.d.ts.map +1 -0
- package/dist/claude/claude-md-installer.js +62 -0
- package/dist/claude/claude-md-installer.js.map +1 -0
- package/dist/codex/lisa-plugin-detection.d.ts +69 -0
- package/dist/codex/lisa-plugin-detection.d.ts.map +1 -0
- package/dist/codex/lisa-plugin-detection.js +135 -0
- package/dist/codex/lisa-plugin-detection.js.map +1 -0
- package/dist/copilot/copilot-instructions-installer.d.ts +18 -0
- package/dist/copilot/copilot-instructions-installer.d.ts.map +1 -0
- package/dist/copilot/copilot-instructions-installer.js +61 -0
- package/dist/copilot/copilot-instructions-installer.js.map +1 -0
- package/dist/copilot/plugin-installer.d.ts +29 -0
- package/dist/copilot/plugin-installer.d.ts.map +1 -0
- package/dist/copilot/plugin-installer.js +140 -0
- package/dist/copilot/plugin-installer.js.map +1 -0
- package/dist/core/config.d.ts +8 -4
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +4 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/lisa.d.ts +35 -0
- package/dist/core/lisa.d.ts.map +1 -1
- package/dist/core/lisa.js +93 -0
- package/dist/core/lisa.js.map +1 -1
- package/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/hooks/block-no-verify.sh +37 -0
- package/plugins/lisa/.codex-plugin/hooks/inject-flow-context.sh +12 -0
- package/plugins/lisa/.codex-plugin/hooks/inject-rules.sh +33 -0
- package/plugins/lisa/.codex-plugin/hooks/install-pkgs.sh +69 -0
- package/plugins/lisa/.codex-plugin/hooks/notify-ntfy.sh +183 -0
- package/plugins/lisa/.codex-plugin/hooks/setup-jira-cli.sh +51 -0
- package/plugins/lisa/.codex-plugin/hooks.json +75 -0
- package/plugins/lisa/.codex-plugin/plugin.json +2 -1
- package/plugins/lisa-agy/agents/architecture-specialist.md +47 -0
- package/plugins/lisa-agy/agents/bug-fixer.md +39 -0
- package/plugins/lisa-agy/agents/builder.md +40 -0
- package/plugins/lisa-agy/agents/confluence-prd-intake.md +65 -0
- package/plugins/lisa-agy/agents/debug-specialist.md +114 -0
- package/plugins/lisa-agy/agents/git-history-analyzer.md +183 -0
- package/plugins/lisa-agy/agents/github-agent.md +148 -0
- package/plugins/lisa-agy/agents/github-build-intake.md +64 -0
- package/plugins/lisa-agy/agents/github-prd-intake.md +66 -0
- package/plugins/lisa-agy/agents/jira-agent.md +129 -0
- package/plugins/lisa-agy/agents/jira-build-intake.md +64 -0
- package/plugins/lisa-agy/agents/learner.md +43 -0
- package/plugins/lisa-agy/agents/learnings-synthesizer.md +135 -0
- package/plugins/lisa-agy/agents/linear-agent.md +134 -0
- package/plugins/lisa-agy/agents/linear-build-intake.md +64 -0
- package/plugins/lisa-agy/agents/linear-prd-intake.md +66 -0
- package/plugins/lisa-agy/agents/notion-prd-intake.md +63 -0
- package/plugins/lisa-agy/agents/performance-specialist.md +85 -0
- package/plugins/lisa-agy/agents/pr-mining-specialist.md +85 -0
- package/plugins/lisa-agy/agents/product-specialist.md +63 -0
- package/plugins/lisa-agy/agents/quality-specialist.md +56 -0
- package/plugins/lisa-agy/agents/security-specialist.md +51 -0
- package/plugins/lisa-agy/agents/skill-evaluator.md +245 -0
- package/plugins/lisa-agy/agents/spec-conformance-specialist.md +49 -0
- package/plugins/lisa-agy/agents/test-specialist.md +49 -0
- package/plugins/lisa-agy/agents/tracker-mining-specialist.md +85 -0
- package/plugins/lisa-agy/agents/verification-specialist.md +135 -0
- package/plugins/lisa-agy/commands/automation-status.md +12 -0
- package/plugins/lisa-agy/commands/codify-verification.md +6 -0
- package/plugins/lisa-agy/commands/debrief/apply.md +6 -0
- package/plugins/lisa-agy/commands/debrief.md +6 -0
- package/plugins/lisa-agy/commands/doctor.md +6 -0
- package/plugins/lisa-agy/commands/fix/linter-error.md +7 -0
- package/plugins/lisa-agy/commands/git/commit.md +7 -0
- package/plugins/lisa-agy/commands/git/prune.md +6 -0
- package/plugins/lisa-agy/commands/git/submit-pr.md +7 -0
- package/plugins/lisa-agy/commands/implement.md +6 -0
- package/plugins/lisa-agy/commands/improve/code-complexity.md +6 -0
- package/plugins/lisa-agy/commands/improve/max-lines-per-function.md +7 -0
- package/plugins/lisa-agy/commands/improve/max-lines.md +7 -0
- package/plugins/lisa-agy/commands/improve/test-coverage.md +7 -0
- package/plugins/lisa-agy/commands/improve/tests.md +7 -0
- package/plugins/lisa-agy/commands/intake-explain.md +31 -0
- package/plugins/lisa-agy/commands/intake.md +6 -0
- package/plugins/lisa-agy/commands/monitor.md +6 -0
- package/plugins/lisa-agy/commands/plan.md +6 -0
- package/plugins/lisa-agy/commands/plugin-sync-explain.md +8 -0
- package/plugins/lisa-agy/commands/product-walkthrough.md +7 -0
- package/plugins/lisa-agy/commands/project-ideation.md +6 -0
- package/plugins/lisa-agy/commands/pull-request/review.md +7 -0
- package/plugins/lisa-agy/commands/queue-status.md +34 -0
- package/plugins/lisa-agy/commands/repair-intake.md +6 -0
- package/plugins/lisa-agy/commands/research.md +6 -0
- package/plugins/lisa-agy/commands/review/local.md +6 -0
- package/plugins/lisa-agy/commands/security/zap-scan.md +6 -0
- package/plugins/lisa-agy/commands/setup/atlassian.md +7 -0
- package/plugins/lisa-agy/commands/setup/confluence.md +7 -0
- package/plugins/lisa-agy/commands/setup/github.md +7 -0
- package/plugins/lisa-agy/commands/setup/jira.md +7 -0
- package/plugins/lisa-agy/commands/setup/linear.md +7 -0
- package/plugins/lisa-agy/commands/setup/notion.md +7 -0
- package/plugins/lisa-agy/commands/setup-automations.md +6 -0
- package/plugins/lisa-agy/commands/tear-down-automations.md +6 -0
- package/plugins/lisa-agy/commands/verify-prd.md +6 -0
- package/plugins/lisa-agy/commands/verify.md +6 -0
- package/plugins/lisa-agy/commands/wiki/install.md +7 -0
- package/plugins/lisa-agy/plugin.json +8 -0
- package/plugins/lisa-agy/scripts/automation-status-claude-adapter.mjs +672 -0
- package/plugins/lisa-agy/scripts/automation-status-codex-adapter.mjs +697 -0
- package/plugins/lisa-agy/scripts/automation-status-contract-drift.mjs +392 -0
- package/plugins/lisa-agy/scripts/automation-status-expected-fleet.mjs +319 -0
- package/plugins/lisa-agy/scripts/automation-status-report.mjs +170 -0
- package/plugins/lisa-agy/scripts/doctor-report.mjs +143 -0
- package/plugins/lisa-agy/scripts/plugin-sync-explain.mjs +512 -0
- package/plugins/lisa-agy/scripts/project-ideation-idempotency-harness.mjs +319 -0
- package/plugins/lisa-agy/scripts/queue-contract-resolution.mjs +453 -0
- package/plugins/lisa-agy/scripts/queue-health-classification.mjs +157 -0
- package/plugins/lisa-agy/scripts/queue-status-build-readers.mjs +509 -0
- package/plugins/lisa-agy/scripts/queue-status-prd-readers.mjs +452 -0
- package/plugins/lisa-agy/skills/acceptance-criteria/SKILL.md +71 -0
- package/plugins/lisa-agy/skills/agent-design-best-practices/SKILL.md +219 -0
- package/plugins/lisa-agy/skills/atlassian-access/SKILL.md +293 -0
- package/plugins/lisa-agy/skills/automation-status/SKILL.md +111 -0
- package/plugins/lisa-agy/skills/bug-triage/SKILL.md +23 -0
- package/plugins/lisa-agy/skills/codebase-research/SKILL.md +87 -0
- package/plugins/lisa-agy/skills/codify-verification/SKILL.md +152 -0
- package/plugins/lisa-agy/skills/confluence-prd-intake/SKILL.md +417 -0
- package/plugins/lisa-agy/skills/confluence-to-tracker/SKILL.md +360 -0
- package/plugins/lisa-agy/skills/confluence-write-prd/SKILL.md +109 -0
- package/plugins/lisa-agy/skills/debrief/SKILL.md +94 -0
- package/plugins/lisa-agy/skills/debrief-apply/SKILL.md +63 -0
- package/plugins/lisa-agy/skills/doctor/SKILL.md +317 -0
- package/plugins/lisa-agy/skills/epic-triage/SKILL.md +28 -0
- package/plugins/lisa-agy/skills/fix-linter-error/SKILL.md +45 -0
- package/plugins/lisa-agy/skills/git-commit/SKILL.md +48 -0
- package/plugins/lisa-agy/skills/git-prune/SKILL.md +35 -0
- package/plugins/lisa-agy/skills/git-submit-pr/SKILL.md +105 -0
- package/plugins/lisa-agy/skills/github-add-journey/SKILL.md +115 -0
- package/plugins/lisa-agy/skills/github-build-intake/SKILL.md +377 -0
- package/plugins/lisa-agy/skills/github-create/SKILL.md +101 -0
- package/plugins/lisa-agy/skills/github-evidence/SKILL.md +110 -0
- package/plugins/lisa-agy/skills/github-journey/SKILL.md +121 -0
- package/plugins/lisa-agy/skills/github-prd-intake/SKILL.md +432 -0
- package/plugins/lisa-agy/skills/github-project-v2/SKILL.md +227 -0
- package/plugins/lisa-agy/skills/github-read-issue/SKILL.md +248 -0
- package/plugins/lisa-agy/skills/github-sync/SKILL.md +119 -0
- package/plugins/lisa-agy/skills/github-to-tracker/SKILL.md +345 -0
- package/plugins/lisa-agy/skills/github-validate-issue/SKILL.md +331 -0
- package/plugins/lisa-agy/skills/github-verify/SKILL.md +29 -0
- package/plugins/lisa-agy/skills/github-write-issue/SKILL.md +339 -0
- package/plugins/lisa-agy/skills/github-write-prd/SKILL.md +157 -0
- package/plugins/lisa-agy/skills/implement/SKILL.md +145 -0
- package/plugins/lisa-agy/skills/improve-code-complexity/SKILL.md +44 -0
- package/plugins/lisa-agy/skills/improve-max-lines/SKILL.md +45 -0
- package/plugins/lisa-agy/skills/improve-max-lines-per-function/SKILL.md +46 -0
- package/plugins/lisa-agy/skills/improve-test-coverage/SKILL.md +44 -0
- package/plugins/lisa-agy/skills/improve-tests/SKILL.md +47 -0
- package/plugins/lisa-agy/skills/intake/SKILL.md +132 -0
- package/plugins/lisa-agy/skills/intake-explain/SKILL.md +279 -0
- package/plugins/lisa-agy/skills/jira-add-journey/SKILL.md +121 -0
- package/plugins/lisa-agy/skills/jira-build-intake/SKILL.md +286 -0
- package/plugins/lisa-agy/skills/jira-create/SKILL.md +154 -0
- package/plugins/lisa-agy/skills/jira-evidence/SKILL.md +90 -0
- package/plugins/lisa-agy/skills/jira-evidence/scripts/post-evidence.sh +163 -0
- package/plugins/lisa-agy/skills/jira-journey/SKILL.md +127 -0
- package/plugins/lisa-agy/skills/jira-journey/scripts/generate-templates.py +233 -0
- package/plugins/lisa-agy/skills/jira-journey/scripts/parse-plan.py +368 -0
- package/plugins/lisa-agy/skills/jira-read-ticket/SKILL.md +198 -0
- package/plugins/lisa-agy/skills/jira-read-ticket/scripts/download-attachment.sh +110 -0
- package/plugins/lisa-agy/skills/jira-sync/SKILL.md +95 -0
- package/plugins/lisa-agy/skills/jira-validate-ticket/SKILL.md +318 -0
- package/plugins/lisa-agy/skills/jira-verify/SKILL.md +30 -0
- package/plugins/lisa-agy/skills/jira-write-ticket/SKILL.md +265 -0
- package/plugins/lisa-agy/skills/jsdoc-best-practices/SKILL.md +432 -0
- package/plugins/lisa-agy/skills/linear-add-journey/SKILL.md +105 -0
- package/plugins/lisa-agy/skills/linear-build-intake/SKILL.md +283 -0
- package/plugins/lisa-agy/skills/linear-create/SKILL.md +146 -0
- package/plugins/lisa-agy/skills/linear-evidence/SKILL.md +103 -0
- package/plugins/lisa-agy/skills/linear-journey/SKILL.md +134 -0
- package/plugins/lisa-agy/skills/linear-prd-intake/SKILL.md +383 -0
- package/plugins/lisa-agy/skills/linear-read-issue/SKILL.md +200 -0
- package/plugins/lisa-agy/skills/linear-sync/SKILL.md +114 -0
- package/plugins/lisa-agy/skills/linear-to-tracker/SKILL.md +342 -0
- package/plugins/lisa-agy/skills/linear-validate-issue/SKILL.md +313 -0
- package/plugins/lisa-agy/skills/linear-verify/SKILL.md +51 -0
- package/plugins/lisa-agy/skills/linear-write-issue/SKILL.md +292 -0
- package/plugins/lisa-agy/skills/linear-write-prd/SKILL.md +96 -0
- package/plugins/lisa-agy/skills/lisa-review-implementation/SKILL.md +209 -0
- package/plugins/lisa-agy/skills/monitor/SKILL.md +48 -0
- package/plugins/lisa-agy/skills/nightly-add-test-coverage/SKILL.md +40 -0
- package/plugins/lisa-agy/skills/nightly-improve-tests/SKILL.md +29 -0
- package/plugins/lisa-agy/skills/nightly-lower-code-complexity/SKILL.md +28 -0
- package/plugins/lisa-agy/skills/notion-access/SKILL.md +226 -0
- package/plugins/lisa-agy/skills/notion-prd-intake/SKILL.md +360 -0
- package/plugins/lisa-agy/skills/notion-to-tracker/SKILL.md +357 -0
- package/plugins/lisa-agy/skills/notion-write-prd/SKILL.md +109 -0
- package/plugins/lisa-agy/skills/performance-review/SKILL.md +94 -0
- package/plugins/lisa-agy/skills/plan/SKILL.md +60 -0
- package/plugins/lisa-agy/skills/plugin-sync-explain/SKILL.md +53 -0
- package/plugins/lisa-agy/skills/prd-backlink/SKILL.md +265 -0
- package/plugins/lisa-agy/skills/prd-source-write/SKILL.md +101 -0
- package/plugins/lisa-agy/skills/prd-ticket-coverage/SKILL.md +170 -0
- package/plugins/lisa-agy/skills/product-walkthrough/SKILL.md +129 -0
- package/plugins/lisa-agy/skills/project-ideation/SKILL.md +315 -0
- package/plugins/lisa-agy/skills/project-ideation/examples/evidence-card-format.md +21 -0
- package/plugins/lisa-agy/skills/project-ideation/examples/host-project-only.md +22 -0
- package/plugins/lisa-agy/skills/project-ideation/examples/idempotency-verification-harness.md +57 -0
- package/plugins/lisa-agy/skills/project-ideation/examples/public-external-inspiration.md +22 -0
- package/plugins/lisa-agy/skills/project-ideation/examples/unavailable-data-rejection.md +22 -0
- package/plugins/lisa-agy/skills/pull-request-review/SKILL.md +68 -0
- package/plugins/lisa-agy/skills/quality-review/SKILL.md +54 -0
- package/plugins/lisa-agy/skills/queue-status/SKILL.md +133 -0
- package/plugins/lisa-agy/skills/repair-intake/SKILL.md +584 -0
- package/plugins/lisa-agy/skills/reproduce-bug/SKILL.md +96 -0
- package/plugins/lisa-agy/skills/research/SKILL.md +68 -0
- package/plugins/lisa-agy/skills/review-local/SKILL.md +88 -0
- package/plugins/lisa-agy/skills/root-cause-analysis/SKILL.md +155 -0
- package/plugins/lisa-agy/skills/security-review/SKILL.md +57 -0
- package/plugins/lisa-agy/skills/security-zap-scan/SKILL.md +33 -0
- package/plugins/lisa-agy/skills/setup-atlassian/SKILL.md +347 -0
- package/plugins/lisa-agy/skills/setup-automations/SKILL.md +99 -0
- package/plugins/lisa-agy/skills/setup-confluence/SKILL.md +254 -0
- package/plugins/lisa-agy/skills/setup-github/SKILL.md +268 -0
- package/plugins/lisa-agy/skills/setup-jira/SKILL.md +198 -0
- package/plugins/lisa-agy/skills/setup-linear/SKILL.md +251 -0
- package/plugins/lisa-agy/skills/setup-notion/SKILL.md +316 -0
- package/plugins/lisa-agy/skills/spec-conformance/SKILL.md +159 -0
- package/plugins/lisa-agy/skills/task-decomposition/SKILL.md +127 -0
- package/plugins/lisa-agy/skills/task-triage/SKILL.md +23 -0
- package/plugins/lisa-agy/skills/tdd-implementation/SKILL.md +83 -0
- package/plugins/lisa-agy/skills/tear-down-automations/SKILL.md +34 -0
- package/plugins/lisa-agy/skills/test-strategy/SKILL.md +63 -0
- package/plugins/lisa-agy/skills/ticket-triage/SKILL.md +182 -0
- package/plugins/lisa-agy/skills/tracker-add-journey/SKILL.md +26 -0
- package/plugins/lisa-agy/skills/tracker-build-intake/SKILL.md +64 -0
- package/plugins/lisa-agy/skills/tracker-create/SKILL.md +26 -0
- package/plugins/lisa-agy/skills/tracker-evidence/SKILL.md +52 -0
- package/plugins/lisa-agy/skills/tracker-journey/SKILL.md +26 -0
- package/plugins/lisa-agy/skills/tracker-read/SKILL.md +27 -0
- package/plugins/lisa-agy/skills/tracker-source-artifacts/SKILL.md +107 -0
- package/plugins/lisa-agy/skills/tracker-sync/SKILL.md +51 -0
- package/plugins/lisa-agy/skills/tracker-validate/SKILL.md +36 -0
- package/plugins/lisa-agy/skills/tracker-verify/SKILL.md +27 -0
- package/plugins/lisa-agy/skills/tracker-write/SKILL.md +53 -0
- package/plugins/lisa-agy/skills/usage-accounting/SKILL.md +170 -0
- package/plugins/lisa-agy/skills/verification-lifecycle/SKILL.md +339 -0
- package/plugins/lisa-agy/skills/verify/SKILL.md +49 -0
- package/plugins/lisa-agy/skills/verify-prd/SKILL.md +392 -0
- package/plugins/lisa-agy/skills/wiki-install/SKILL.md +101 -0
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +72 -0
- package/plugins/lisa-copilot/agents/architecture-specialist.agent.md +47 -0
- package/plugins/lisa-copilot/agents/bug-fixer.agent.md +39 -0
- package/plugins/lisa-copilot/agents/builder.agent.md +40 -0
- package/plugins/lisa-copilot/agents/confluence-prd-intake.agent.md +65 -0
- package/plugins/lisa-copilot/agents/debug-specialist.agent.md +114 -0
- package/plugins/lisa-copilot/agents/git-history-analyzer.agent.md +183 -0
- package/plugins/lisa-copilot/agents/github-agent.agent.md +148 -0
- package/plugins/lisa-copilot/agents/github-build-intake.agent.md +64 -0
- package/plugins/lisa-copilot/agents/github-prd-intake.agent.md +66 -0
- package/plugins/lisa-copilot/agents/jira-agent.agent.md +129 -0
- package/plugins/lisa-copilot/agents/jira-build-intake.agent.md +64 -0
- package/plugins/lisa-copilot/agents/learner.agent.md +43 -0
- package/plugins/lisa-copilot/agents/learnings-synthesizer.agent.md +135 -0
- package/plugins/lisa-copilot/agents/linear-agent.agent.md +134 -0
- package/plugins/lisa-copilot/agents/linear-build-intake.agent.md +64 -0
- package/plugins/lisa-copilot/agents/linear-prd-intake.agent.md +66 -0
- package/plugins/lisa-copilot/agents/notion-prd-intake.agent.md +63 -0
- package/plugins/lisa-copilot/agents/performance-specialist.agent.md +85 -0
- package/plugins/lisa-copilot/agents/pr-mining-specialist.agent.md +85 -0
- package/plugins/lisa-copilot/agents/product-specialist.agent.md +63 -0
- package/plugins/lisa-copilot/agents/quality-specialist.agent.md +56 -0
- package/plugins/lisa-copilot/agents/security-specialist.agent.md +51 -0
- package/plugins/lisa-copilot/agents/skill-evaluator.agent.md +245 -0
- package/plugins/lisa-copilot/agents/spec-conformance-specialist.agent.md +49 -0
- package/plugins/lisa-copilot/agents/test-specialist.agent.md +49 -0
- package/plugins/lisa-copilot/agents/tracker-mining-specialist.agent.md +85 -0
- package/plugins/lisa-copilot/agents/verification-specialist.agent.md +135 -0
- package/plugins/lisa-copilot/commands/automation-status.md +12 -0
- package/plugins/lisa-copilot/commands/codify-verification.md +6 -0
- package/plugins/lisa-copilot/commands/debrief/apply.md +6 -0
- package/plugins/lisa-copilot/commands/debrief.md +6 -0
- package/plugins/lisa-copilot/commands/doctor.md +6 -0
- package/plugins/lisa-copilot/commands/fix/linter-error.md +7 -0
- package/plugins/lisa-copilot/commands/git/commit.md +7 -0
- package/plugins/lisa-copilot/commands/git/prune.md +6 -0
- package/plugins/lisa-copilot/commands/git/submit-pr.md +7 -0
- package/plugins/lisa-copilot/commands/implement.md +6 -0
- package/plugins/lisa-copilot/commands/improve/code-complexity.md +6 -0
- package/plugins/lisa-copilot/commands/improve/max-lines-per-function.md +7 -0
- package/plugins/lisa-copilot/commands/improve/max-lines.md +7 -0
- package/plugins/lisa-copilot/commands/improve/test-coverage.md +7 -0
- package/plugins/lisa-copilot/commands/improve/tests.md +7 -0
- package/plugins/lisa-copilot/commands/intake-explain.md +31 -0
- package/plugins/lisa-copilot/commands/intake.md +6 -0
- package/plugins/lisa-copilot/commands/monitor.md +6 -0
- package/plugins/lisa-copilot/commands/plan.md +6 -0
- package/plugins/lisa-copilot/commands/plugin-sync-explain.md +8 -0
- package/plugins/lisa-copilot/commands/product-walkthrough.md +7 -0
- package/plugins/lisa-copilot/commands/project-ideation.md +6 -0
- package/plugins/lisa-copilot/commands/pull-request/review.md +7 -0
- package/plugins/lisa-copilot/commands/queue-status.md +34 -0
- package/plugins/lisa-copilot/commands/repair-intake.md +6 -0
- package/plugins/lisa-copilot/commands/research.md +6 -0
- package/plugins/lisa-copilot/commands/review/local.md +6 -0
- package/plugins/lisa-copilot/commands/security/zap-scan.md +6 -0
- package/plugins/lisa-copilot/commands/setup/atlassian.md +7 -0
- package/plugins/lisa-copilot/commands/setup/confluence.md +7 -0
- package/plugins/lisa-copilot/commands/setup/github.md +7 -0
- package/plugins/lisa-copilot/commands/setup/jira.md +7 -0
- package/plugins/lisa-copilot/commands/setup/linear.md +7 -0
- package/plugins/lisa-copilot/commands/setup/notion.md +7 -0
- package/plugins/lisa-copilot/commands/setup-automations.md +6 -0
- package/plugins/lisa-copilot/commands/tear-down-automations.md +6 -0
- package/plugins/lisa-copilot/commands/verify-prd.md +6 -0
- package/plugins/lisa-copilot/commands/verify.md +6 -0
- package/plugins/lisa-copilot/commands/wiki/install.md +7 -0
- package/plugins/lisa-copilot/hooks/block-no-verify.sh +37 -0
- package/plugins/lisa-copilot/hooks/inject-rules.sh +33 -0
- package/plugins/lisa-copilot/hooks/install-pkgs.sh +69 -0
- package/plugins/lisa-copilot/hooks/notify-ntfy.sh +183 -0
- package/plugins/lisa-copilot/hooks/setup-jira-cli.sh +51 -0
- package/plugins/lisa-copilot/rules/eager/base-rules.md +70 -0
- package/plugins/lisa-copilot/rules/eager/coding-philosophy.md +27 -0
- package/plugins/lisa-copilot/rules/eager/config-resolution.md +28 -0
- package/plugins/lisa-copilot/rules/eager/documentation-source-paths.md +13 -0
- package/plugins/lisa-copilot/rules/eager/empirical-inquiry.md +22 -0
- package/plugins/lisa-copilot/rules/eager/intent-routing.md +18 -0
- package/plugins/lisa-copilot/rules/eager/leaf-only-lifecycle.md +39 -0
- package/plugins/lisa-copilot/rules/eager/prd-lifecycle-rollup.md +31 -0
- package/plugins/lisa-copilot/rules/eager/repo-scope-split.md +39 -0
- package/plugins/lisa-copilot/rules/eager/security-audit-handling.md +29 -0
- package/plugins/lisa-copilot/rules/eager/usage-accounting.md +28 -0
- package/plugins/lisa-copilot/rules/eager/verification.md +21 -0
- package/plugins/lisa-copilot/rules/eager/wiki-knowledge-source.md +16 -0
- package/plugins/lisa-copilot/rules/reference/base-rules.md +133 -0
- package/plugins/lisa-copilot/rules/reference/coding-philosophy.md +428 -0
- package/plugins/lisa-copilot/rules/reference/config-resolution.md +691 -0
- package/plugins/lisa-copilot/rules/reference/documentation-source-paths.md +13 -0
- package/plugins/lisa-copilot/rules/reference/empirical-inquiry.md +27 -0
- package/plugins/lisa-copilot/rules/reference/intent-routing.md +407 -0
- package/plugins/lisa-copilot/rules/reference/leaf-only-lifecycle.md +120 -0
- package/plugins/lisa-copilot/rules/reference/prd-lifecycle-rollup.md +156 -0
- package/plugins/lisa-copilot/rules/reference/repo-scope-split.md +58 -0
- package/plugins/lisa-copilot/rules/reference/security-audit-handling.md +30 -0
- package/plugins/lisa-copilot/rules/reference/usage-accounting.md +144 -0
- package/plugins/lisa-copilot/rules/reference/verification.md +124 -0
- package/plugins/lisa-copilot/rules/reference/wiki-knowledge-source.md +14 -0
- package/plugins/lisa-copilot/scripts/automation-status-claude-adapter.mjs +672 -0
- package/plugins/lisa-copilot/scripts/automation-status-codex-adapter.mjs +697 -0
- package/plugins/lisa-copilot/scripts/automation-status-contract-drift.mjs +392 -0
- package/plugins/lisa-copilot/scripts/automation-status-expected-fleet.mjs +319 -0
- package/plugins/lisa-copilot/scripts/automation-status-report.mjs +170 -0
- package/plugins/lisa-copilot/scripts/doctor-report.mjs +143 -0
- package/plugins/lisa-copilot/scripts/plugin-sync-explain.mjs +512 -0
- package/plugins/lisa-copilot/scripts/project-ideation-idempotency-harness.mjs +319 -0
- package/plugins/lisa-copilot/scripts/queue-contract-resolution.mjs +453 -0
- package/plugins/lisa-copilot/scripts/queue-health-classification.mjs +157 -0
- package/plugins/lisa-copilot/scripts/queue-status-build-readers.mjs +509 -0
- package/plugins/lisa-copilot/scripts/queue-status-prd-readers.mjs +452 -0
- package/plugins/lisa-copilot/skills/acceptance-criteria/SKILL.md +71 -0
- package/plugins/lisa-copilot/skills/agent-design-best-practices/SKILL.md +219 -0
- package/plugins/lisa-copilot/skills/atlassian-access/SKILL.md +293 -0
- package/plugins/lisa-copilot/skills/automation-status/SKILL.md +111 -0
- package/plugins/lisa-copilot/skills/bug-triage/SKILL.md +23 -0
- package/plugins/lisa-copilot/skills/codebase-research/SKILL.md +87 -0
- package/plugins/lisa-copilot/skills/codify-verification/SKILL.md +152 -0
- package/plugins/lisa-copilot/skills/confluence-prd-intake/SKILL.md +417 -0
- package/plugins/lisa-copilot/skills/confluence-to-tracker/SKILL.md +360 -0
- package/plugins/lisa-copilot/skills/confluence-write-prd/SKILL.md +109 -0
- package/plugins/lisa-copilot/skills/debrief/SKILL.md +94 -0
- package/plugins/lisa-copilot/skills/debrief-apply/SKILL.md +63 -0
- package/plugins/lisa-copilot/skills/doctor/SKILL.md +317 -0
- package/plugins/lisa-copilot/skills/epic-triage/SKILL.md +28 -0
- package/plugins/lisa-copilot/skills/fix-linter-error/SKILL.md +45 -0
- package/plugins/lisa-copilot/skills/git-commit/SKILL.md +48 -0
- package/plugins/lisa-copilot/skills/git-prune/SKILL.md +35 -0
- package/plugins/lisa-copilot/skills/git-submit-pr/SKILL.md +105 -0
- package/plugins/lisa-copilot/skills/github-add-journey/SKILL.md +115 -0
- package/plugins/lisa-copilot/skills/github-build-intake/SKILL.md +377 -0
- package/plugins/lisa-copilot/skills/github-create/SKILL.md +101 -0
- package/plugins/lisa-copilot/skills/github-evidence/SKILL.md +110 -0
- package/plugins/lisa-copilot/skills/github-journey/SKILL.md +121 -0
- package/plugins/lisa-copilot/skills/github-prd-intake/SKILL.md +432 -0
- package/plugins/lisa-copilot/skills/github-project-v2/SKILL.md +227 -0
- package/plugins/lisa-copilot/skills/github-read-issue/SKILL.md +248 -0
- package/plugins/lisa-copilot/skills/github-sync/SKILL.md +119 -0
- package/plugins/lisa-copilot/skills/github-to-tracker/SKILL.md +345 -0
- package/plugins/lisa-copilot/skills/github-validate-issue/SKILL.md +331 -0
- package/plugins/lisa-copilot/skills/github-verify/SKILL.md +29 -0
- package/plugins/lisa-copilot/skills/github-write-issue/SKILL.md +339 -0
- package/plugins/lisa-copilot/skills/github-write-prd/SKILL.md +157 -0
- package/plugins/lisa-copilot/skills/implement/SKILL.md +145 -0
- package/plugins/lisa-copilot/skills/improve-code-complexity/SKILL.md +44 -0
- package/plugins/lisa-copilot/skills/improve-max-lines/SKILL.md +45 -0
- package/plugins/lisa-copilot/skills/improve-max-lines-per-function/SKILL.md +46 -0
- package/plugins/lisa-copilot/skills/improve-test-coverage/SKILL.md +44 -0
- package/plugins/lisa-copilot/skills/improve-tests/SKILL.md +47 -0
- package/plugins/lisa-copilot/skills/intake/SKILL.md +132 -0
- package/plugins/lisa-copilot/skills/intake-explain/SKILL.md +279 -0
- package/plugins/lisa-copilot/skills/jira-add-journey/SKILL.md +121 -0
- package/plugins/lisa-copilot/skills/jira-build-intake/SKILL.md +286 -0
- package/plugins/lisa-copilot/skills/jira-create/SKILL.md +154 -0
- package/plugins/lisa-copilot/skills/jira-evidence/SKILL.md +90 -0
- package/plugins/lisa-copilot/skills/jira-evidence/scripts/post-evidence.sh +163 -0
- package/plugins/lisa-copilot/skills/jira-journey/SKILL.md +127 -0
- package/plugins/lisa-copilot/skills/jira-journey/scripts/generate-templates.py +233 -0
- package/plugins/lisa-copilot/skills/jira-journey/scripts/parse-plan.py +368 -0
- package/plugins/lisa-copilot/skills/jira-read-ticket/SKILL.md +198 -0
- package/plugins/lisa-copilot/skills/jira-read-ticket/scripts/download-attachment.sh +110 -0
- package/plugins/lisa-copilot/skills/jira-sync/SKILL.md +95 -0
- package/plugins/lisa-copilot/skills/jira-validate-ticket/SKILL.md +318 -0
- package/plugins/lisa-copilot/skills/jira-verify/SKILL.md +30 -0
- package/plugins/lisa-copilot/skills/jira-write-ticket/SKILL.md +265 -0
- package/plugins/lisa-copilot/skills/jsdoc-best-practices/SKILL.md +432 -0
- package/plugins/lisa-copilot/skills/linear-add-journey/SKILL.md +105 -0
- package/plugins/lisa-copilot/skills/linear-build-intake/SKILL.md +283 -0
- package/plugins/lisa-copilot/skills/linear-create/SKILL.md +146 -0
- package/plugins/lisa-copilot/skills/linear-evidence/SKILL.md +103 -0
- package/plugins/lisa-copilot/skills/linear-journey/SKILL.md +134 -0
- package/plugins/lisa-copilot/skills/linear-prd-intake/SKILL.md +383 -0
- package/plugins/lisa-copilot/skills/linear-read-issue/SKILL.md +200 -0
- package/plugins/lisa-copilot/skills/linear-sync/SKILL.md +114 -0
- package/plugins/lisa-copilot/skills/linear-to-tracker/SKILL.md +342 -0
- package/plugins/lisa-copilot/skills/linear-validate-issue/SKILL.md +313 -0
- package/plugins/lisa-copilot/skills/linear-verify/SKILL.md +51 -0
- package/plugins/lisa-copilot/skills/linear-write-issue/SKILL.md +292 -0
- package/plugins/lisa-copilot/skills/linear-write-prd/SKILL.md +96 -0
- package/plugins/lisa-copilot/skills/lisa-review-implementation/SKILL.md +209 -0
- package/plugins/lisa-copilot/skills/monitor/SKILL.md +48 -0
- package/plugins/lisa-copilot/skills/nightly-add-test-coverage/SKILL.md +40 -0
- package/plugins/lisa-copilot/skills/nightly-improve-tests/SKILL.md +29 -0
- package/plugins/lisa-copilot/skills/nightly-lower-code-complexity/SKILL.md +28 -0
- package/plugins/lisa-copilot/skills/notion-access/SKILL.md +226 -0
- package/plugins/lisa-copilot/skills/notion-prd-intake/SKILL.md +360 -0
- package/plugins/lisa-copilot/skills/notion-to-tracker/SKILL.md +357 -0
- package/plugins/lisa-copilot/skills/notion-write-prd/SKILL.md +109 -0
- package/plugins/lisa-copilot/skills/performance-review/SKILL.md +94 -0
- package/plugins/lisa-copilot/skills/plan/SKILL.md +60 -0
- package/plugins/lisa-copilot/skills/plugin-sync-explain/SKILL.md +53 -0
- package/plugins/lisa-copilot/skills/prd-backlink/SKILL.md +265 -0
- package/plugins/lisa-copilot/skills/prd-source-write/SKILL.md +101 -0
- package/plugins/lisa-copilot/skills/prd-ticket-coverage/SKILL.md +170 -0
- package/plugins/lisa-copilot/skills/product-walkthrough/SKILL.md +129 -0
- package/plugins/lisa-copilot/skills/project-ideation/SKILL.md +315 -0
- package/plugins/lisa-copilot/skills/project-ideation/examples/evidence-card-format.md +21 -0
- package/plugins/lisa-copilot/skills/project-ideation/examples/host-project-only.md +22 -0
- package/plugins/lisa-copilot/skills/project-ideation/examples/idempotency-verification-harness.md +57 -0
- package/plugins/lisa-copilot/skills/project-ideation/examples/public-external-inspiration.md +22 -0
- package/plugins/lisa-copilot/skills/project-ideation/examples/unavailable-data-rejection.md +22 -0
- package/plugins/lisa-copilot/skills/pull-request-review/SKILL.md +68 -0
- package/plugins/lisa-copilot/skills/quality-review/SKILL.md +54 -0
- package/plugins/lisa-copilot/skills/queue-status/SKILL.md +133 -0
- package/plugins/lisa-copilot/skills/repair-intake/SKILL.md +584 -0
- package/plugins/lisa-copilot/skills/reproduce-bug/SKILL.md +96 -0
- package/plugins/lisa-copilot/skills/research/SKILL.md +68 -0
- package/plugins/lisa-copilot/skills/review-local/SKILL.md +88 -0
- package/plugins/lisa-copilot/skills/root-cause-analysis/SKILL.md +155 -0
- package/plugins/lisa-copilot/skills/security-review/SKILL.md +57 -0
- package/plugins/lisa-copilot/skills/security-zap-scan/SKILL.md +33 -0
- package/plugins/lisa-copilot/skills/setup-atlassian/SKILL.md +347 -0
- package/plugins/lisa-copilot/skills/setup-automations/SKILL.md +99 -0
- package/plugins/lisa-copilot/skills/setup-confluence/SKILL.md +254 -0
- package/plugins/lisa-copilot/skills/setup-github/SKILL.md +268 -0
- package/plugins/lisa-copilot/skills/setup-jira/SKILL.md +198 -0
- package/plugins/lisa-copilot/skills/setup-linear/SKILL.md +251 -0
- package/plugins/lisa-copilot/skills/setup-notion/SKILL.md +316 -0
- package/plugins/lisa-copilot/skills/spec-conformance/SKILL.md +159 -0
- package/plugins/lisa-copilot/skills/task-decomposition/SKILL.md +127 -0
- package/plugins/lisa-copilot/skills/task-triage/SKILL.md +23 -0
- package/plugins/lisa-copilot/skills/tdd-implementation/SKILL.md +83 -0
- package/plugins/lisa-copilot/skills/tear-down-automations/SKILL.md +34 -0
- package/plugins/lisa-copilot/skills/test-strategy/SKILL.md +63 -0
- package/plugins/lisa-copilot/skills/ticket-triage/SKILL.md +182 -0
- package/plugins/lisa-copilot/skills/tracker-add-journey/SKILL.md +26 -0
- package/plugins/lisa-copilot/skills/tracker-build-intake/SKILL.md +64 -0
- package/plugins/lisa-copilot/skills/tracker-create/SKILL.md +26 -0
- package/plugins/lisa-copilot/skills/tracker-evidence/SKILL.md +52 -0
- package/plugins/lisa-copilot/skills/tracker-journey/SKILL.md +26 -0
- package/plugins/lisa-copilot/skills/tracker-read/SKILL.md +27 -0
- package/plugins/lisa-copilot/skills/tracker-source-artifacts/SKILL.md +107 -0
- package/plugins/lisa-copilot/skills/tracker-sync/SKILL.md +51 -0
- package/plugins/lisa-copilot/skills/tracker-validate/SKILL.md +36 -0
- package/plugins/lisa-copilot/skills/tracker-verify/SKILL.md +27 -0
- package/plugins/lisa-copilot/skills/tracker-write/SKILL.md +53 -0
- package/plugins/lisa-copilot/skills/usage-accounting/SKILL.md +170 -0
- package/plugins/lisa-copilot/skills/verification-lifecycle/SKILL.md +339 -0
- package/plugins/lisa-copilot/skills/verify/SKILL.md +49 -0
- package/plugins/lisa-copilot/skills/verify-prd/SKILL.md +392 -0
- package/plugins/lisa-copilot/skills/wiki-install/SKILL.md +101 -0
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +52 -0
- package/plugins/lisa-cursor/agents/architecture-specialist.md +47 -0
- package/plugins/lisa-cursor/agents/bug-fixer.md +39 -0
- package/plugins/lisa-cursor/agents/builder.md +40 -0
- package/plugins/lisa-cursor/agents/confluence-prd-intake.md +65 -0
- package/plugins/lisa-cursor/agents/debug-specialist.md +114 -0
- package/plugins/lisa-cursor/agents/git-history-analyzer.md +183 -0
- package/plugins/lisa-cursor/agents/github-agent.md +148 -0
- package/plugins/lisa-cursor/agents/github-build-intake.md +64 -0
- package/plugins/lisa-cursor/agents/github-prd-intake.md +66 -0
- package/plugins/lisa-cursor/agents/jira-agent.md +129 -0
- package/plugins/lisa-cursor/agents/jira-build-intake.md +64 -0
- package/plugins/lisa-cursor/agents/learner.md +43 -0
- package/plugins/lisa-cursor/agents/learnings-synthesizer.md +135 -0
- package/plugins/lisa-cursor/agents/linear-agent.md +134 -0
- package/plugins/lisa-cursor/agents/linear-build-intake.md +64 -0
- package/plugins/lisa-cursor/agents/linear-prd-intake.md +66 -0
- package/plugins/lisa-cursor/agents/notion-prd-intake.md +63 -0
- package/plugins/lisa-cursor/agents/performance-specialist.md +85 -0
- package/plugins/lisa-cursor/agents/pr-mining-specialist.md +85 -0
- package/plugins/lisa-cursor/agents/product-specialist.md +63 -0
- package/plugins/lisa-cursor/agents/quality-specialist.md +56 -0
- package/plugins/lisa-cursor/agents/security-specialist.md +51 -0
- package/plugins/lisa-cursor/agents/skill-evaluator.md +245 -0
- package/plugins/lisa-cursor/agents/spec-conformance-specialist.md +49 -0
- package/plugins/lisa-cursor/agents/test-specialist.md +49 -0
- package/plugins/lisa-cursor/agents/tracker-mining-specialist.md +85 -0
- package/plugins/lisa-cursor/agents/verification-specialist.md +135 -0
- package/plugins/lisa-cursor/commands/automation-status.md +12 -0
- package/plugins/lisa-cursor/commands/codify-verification.md +6 -0
- package/plugins/lisa-cursor/commands/debrief/apply.md +6 -0
- package/plugins/lisa-cursor/commands/debrief.md +6 -0
- package/plugins/lisa-cursor/commands/doctor.md +6 -0
- package/plugins/lisa-cursor/commands/fix/linter-error.md +7 -0
- package/plugins/lisa-cursor/commands/git/commit.md +7 -0
- package/plugins/lisa-cursor/commands/git/prune.md +6 -0
- package/plugins/lisa-cursor/commands/git/submit-pr.md +7 -0
- package/plugins/lisa-cursor/commands/implement.md +6 -0
- package/plugins/lisa-cursor/commands/improve/code-complexity.md +6 -0
- package/plugins/lisa-cursor/commands/improve/max-lines-per-function.md +7 -0
- package/plugins/lisa-cursor/commands/improve/max-lines.md +7 -0
- package/plugins/lisa-cursor/commands/improve/test-coverage.md +7 -0
- package/plugins/lisa-cursor/commands/improve/tests.md +7 -0
- package/plugins/lisa-cursor/commands/intake-explain.md +31 -0
- package/plugins/lisa-cursor/commands/intake.md +6 -0
- package/plugins/lisa-cursor/commands/monitor.md +6 -0
- package/plugins/lisa-cursor/commands/plan.md +6 -0
- package/plugins/lisa-cursor/commands/plugin-sync-explain.md +8 -0
- package/plugins/lisa-cursor/commands/product-walkthrough.md +7 -0
- package/plugins/lisa-cursor/commands/project-ideation.md +6 -0
- package/plugins/lisa-cursor/commands/pull-request/review.md +7 -0
- package/plugins/lisa-cursor/commands/queue-status.md +34 -0
- package/plugins/lisa-cursor/commands/repair-intake.md +6 -0
- package/plugins/lisa-cursor/commands/research.md +6 -0
- package/plugins/lisa-cursor/commands/review/local.md +6 -0
- package/plugins/lisa-cursor/commands/security/zap-scan.md +6 -0
- package/plugins/lisa-cursor/commands/setup/atlassian.md +7 -0
- package/plugins/lisa-cursor/commands/setup/confluence.md +7 -0
- package/plugins/lisa-cursor/commands/setup/github.md +7 -0
- package/plugins/lisa-cursor/commands/setup/jira.md +7 -0
- package/plugins/lisa-cursor/commands/setup/linear.md +7 -0
- package/plugins/lisa-cursor/commands/setup/notion.md +7 -0
- package/plugins/lisa-cursor/commands/setup-automations.md +6 -0
- package/plugins/lisa-cursor/commands/tear-down-automations.md +6 -0
- package/plugins/lisa-cursor/commands/verify-prd.md +6 -0
- package/plugins/lisa-cursor/commands/verify.md +6 -0
- package/plugins/lisa-cursor/commands/wiki/install.md +7 -0
- package/plugins/lisa-cursor/hooks/block-no-verify.sh +37 -0
- package/plugins/lisa-cursor/hooks/install-pkgs.sh +69 -0
- package/plugins/lisa-cursor/hooks/notify-ntfy.sh +183 -0
- package/plugins/lisa-cursor/hooks/setup-jira-cli.sh +51 -0
- package/plugins/lisa-cursor/rules/eager/base-rules.md +70 -0
- package/plugins/lisa-cursor/rules/eager/coding-philosophy.md +27 -0
- package/plugins/lisa-cursor/rules/eager/config-resolution.md +28 -0
- package/plugins/lisa-cursor/rules/eager/documentation-source-paths.md +13 -0
- package/plugins/lisa-cursor/rules/eager/empirical-inquiry.md +22 -0
- package/plugins/lisa-cursor/rules/eager/intent-routing.md +18 -0
- package/plugins/lisa-cursor/rules/eager/leaf-only-lifecycle.md +39 -0
- package/plugins/lisa-cursor/rules/eager/prd-lifecycle-rollup.md +31 -0
- package/plugins/lisa-cursor/rules/eager/repo-scope-split.md +39 -0
- package/plugins/lisa-cursor/rules/eager/security-audit-handling.md +29 -0
- package/plugins/lisa-cursor/rules/eager/usage-accounting.md +28 -0
- package/plugins/lisa-cursor/rules/eager/verification.md +21 -0
- package/plugins/lisa-cursor/rules/eager/wiki-knowledge-source.md +16 -0
- package/plugins/lisa-cursor/rules/reference/base-rules.md +133 -0
- package/plugins/lisa-cursor/rules/reference/coding-philosophy.md +428 -0
- package/plugins/lisa-cursor/rules/reference/config-resolution.md +691 -0
- package/plugins/lisa-cursor/rules/reference/documentation-source-paths.md +13 -0
- package/plugins/lisa-cursor/rules/reference/empirical-inquiry.md +27 -0
- package/plugins/lisa-cursor/rules/reference/intent-routing.md +407 -0
- package/plugins/lisa-cursor/rules/reference/leaf-only-lifecycle.md +120 -0
- package/plugins/lisa-cursor/rules/reference/prd-lifecycle-rollup.md +156 -0
- package/plugins/lisa-cursor/rules/reference/repo-scope-split.md +58 -0
- package/plugins/lisa-cursor/rules/reference/security-audit-handling.md +30 -0
- package/plugins/lisa-cursor/rules/reference/usage-accounting.md +144 -0
- package/plugins/lisa-cursor/rules/reference/verification.md +124 -0
- package/plugins/lisa-cursor/rules/reference/wiki-knowledge-source.md +14 -0
- package/plugins/lisa-cursor/scripts/automation-status-claude-adapter.mjs +672 -0
- package/plugins/lisa-cursor/scripts/automation-status-codex-adapter.mjs +697 -0
- package/plugins/lisa-cursor/scripts/automation-status-contract-drift.mjs +392 -0
- package/plugins/lisa-cursor/scripts/automation-status-expected-fleet.mjs +319 -0
- package/plugins/lisa-cursor/scripts/automation-status-report.mjs +170 -0
- package/plugins/lisa-cursor/scripts/doctor-report.mjs +143 -0
- package/plugins/lisa-cursor/scripts/plugin-sync-explain.mjs +512 -0
- package/plugins/lisa-cursor/scripts/project-ideation-idempotency-harness.mjs +319 -0
- package/plugins/lisa-cursor/scripts/queue-contract-resolution.mjs +453 -0
- package/plugins/lisa-cursor/scripts/queue-health-classification.mjs +157 -0
- package/plugins/lisa-cursor/scripts/queue-status-build-readers.mjs +509 -0
- package/plugins/lisa-cursor/scripts/queue-status-prd-readers.mjs +452 -0
- package/plugins/lisa-cursor/skills/acceptance-criteria/SKILL.md +71 -0
- package/plugins/lisa-cursor/skills/agent-design-best-practices/SKILL.md +219 -0
- package/plugins/lisa-cursor/skills/atlassian-access/SKILL.md +293 -0
- package/plugins/lisa-cursor/skills/automation-status/SKILL.md +111 -0
- package/plugins/lisa-cursor/skills/bug-triage/SKILL.md +23 -0
- package/plugins/lisa-cursor/skills/codebase-research/SKILL.md +87 -0
- package/plugins/lisa-cursor/skills/codify-verification/SKILL.md +152 -0
- package/plugins/lisa-cursor/skills/confluence-prd-intake/SKILL.md +417 -0
- package/plugins/lisa-cursor/skills/confluence-to-tracker/SKILL.md +360 -0
- package/plugins/lisa-cursor/skills/confluence-write-prd/SKILL.md +109 -0
- package/plugins/lisa-cursor/skills/debrief/SKILL.md +94 -0
- package/plugins/lisa-cursor/skills/debrief-apply/SKILL.md +63 -0
- package/plugins/lisa-cursor/skills/doctor/SKILL.md +317 -0
- package/plugins/lisa-cursor/skills/epic-triage/SKILL.md +28 -0
- package/plugins/lisa-cursor/skills/fix-linter-error/SKILL.md +45 -0
- package/plugins/lisa-cursor/skills/git-commit/SKILL.md +48 -0
- package/plugins/lisa-cursor/skills/git-prune/SKILL.md +35 -0
- package/plugins/lisa-cursor/skills/git-submit-pr/SKILL.md +105 -0
- package/plugins/lisa-cursor/skills/github-add-journey/SKILL.md +115 -0
- package/plugins/lisa-cursor/skills/github-build-intake/SKILL.md +377 -0
- package/plugins/lisa-cursor/skills/github-create/SKILL.md +101 -0
- package/plugins/lisa-cursor/skills/github-evidence/SKILL.md +110 -0
- package/plugins/lisa-cursor/skills/github-journey/SKILL.md +121 -0
- package/plugins/lisa-cursor/skills/github-prd-intake/SKILL.md +432 -0
- package/plugins/lisa-cursor/skills/github-project-v2/SKILL.md +227 -0
- package/plugins/lisa-cursor/skills/github-read-issue/SKILL.md +248 -0
- package/plugins/lisa-cursor/skills/github-sync/SKILL.md +119 -0
- package/plugins/lisa-cursor/skills/github-to-tracker/SKILL.md +345 -0
- package/plugins/lisa-cursor/skills/github-validate-issue/SKILL.md +331 -0
- package/plugins/lisa-cursor/skills/github-verify/SKILL.md +29 -0
- package/plugins/lisa-cursor/skills/github-write-issue/SKILL.md +339 -0
- package/plugins/lisa-cursor/skills/github-write-prd/SKILL.md +157 -0
- package/plugins/lisa-cursor/skills/implement/SKILL.md +145 -0
- package/plugins/lisa-cursor/skills/improve-code-complexity/SKILL.md +44 -0
- package/plugins/lisa-cursor/skills/improve-max-lines/SKILL.md +45 -0
- package/plugins/lisa-cursor/skills/improve-max-lines-per-function/SKILL.md +46 -0
- package/plugins/lisa-cursor/skills/improve-test-coverage/SKILL.md +44 -0
- package/plugins/lisa-cursor/skills/improve-tests/SKILL.md +47 -0
- package/plugins/lisa-cursor/skills/intake/SKILL.md +132 -0
- package/plugins/lisa-cursor/skills/intake-explain/SKILL.md +279 -0
- package/plugins/lisa-cursor/skills/jira-add-journey/SKILL.md +121 -0
- package/plugins/lisa-cursor/skills/jira-build-intake/SKILL.md +286 -0
- package/plugins/lisa-cursor/skills/jira-create/SKILL.md +154 -0
- package/plugins/lisa-cursor/skills/jira-evidence/SKILL.md +90 -0
- package/plugins/lisa-cursor/skills/jira-evidence/scripts/post-evidence.sh +163 -0
- package/plugins/lisa-cursor/skills/jira-journey/SKILL.md +127 -0
- package/plugins/lisa-cursor/skills/jira-journey/scripts/generate-templates.py +233 -0
- package/plugins/lisa-cursor/skills/jira-journey/scripts/parse-plan.py +368 -0
- package/plugins/lisa-cursor/skills/jira-read-ticket/SKILL.md +198 -0
- package/plugins/lisa-cursor/skills/jira-read-ticket/scripts/download-attachment.sh +110 -0
- package/plugins/lisa-cursor/skills/jira-sync/SKILL.md +95 -0
- package/plugins/lisa-cursor/skills/jira-validate-ticket/SKILL.md +318 -0
- package/plugins/lisa-cursor/skills/jira-verify/SKILL.md +30 -0
- package/plugins/lisa-cursor/skills/jira-write-ticket/SKILL.md +265 -0
- package/plugins/lisa-cursor/skills/jsdoc-best-practices/SKILL.md +432 -0
- package/plugins/lisa-cursor/skills/linear-add-journey/SKILL.md +105 -0
- package/plugins/lisa-cursor/skills/linear-build-intake/SKILL.md +283 -0
- package/plugins/lisa-cursor/skills/linear-create/SKILL.md +146 -0
- package/plugins/lisa-cursor/skills/linear-evidence/SKILL.md +103 -0
- package/plugins/lisa-cursor/skills/linear-journey/SKILL.md +134 -0
- package/plugins/lisa-cursor/skills/linear-prd-intake/SKILL.md +383 -0
- package/plugins/lisa-cursor/skills/linear-read-issue/SKILL.md +200 -0
- package/plugins/lisa-cursor/skills/linear-sync/SKILL.md +114 -0
- package/plugins/lisa-cursor/skills/linear-to-tracker/SKILL.md +342 -0
- package/plugins/lisa-cursor/skills/linear-validate-issue/SKILL.md +313 -0
- package/plugins/lisa-cursor/skills/linear-verify/SKILL.md +51 -0
- package/plugins/lisa-cursor/skills/linear-write-issue/SKILL.md +292 -0
- package/plugins/lisa-cursor/skills/linear-write-prd/SKILL.md +96 -0
- package/plugins/lisa-cursor/skills/lisa-review-implementation/SKILL.md +209 -0
- package/plugins/lisa-cursor/skills/monitor/SKILL.md +48 -0
- package/plugins/lisa-cursor/skills/nightly-add-test-coverage/SKILL.md +40 -0
- package/plugins/lisa-cursor/skills/nightly-improve-tests/SKILL.md +29 -0
- package/plugins/lisa-cursor/skills/nightly-lower-code-complexity/SKILL.md +28 -0
- package/plugins/lisa-cursor/skills/notion-access/SKILL.md +226 -0
- package/plugins/lisa-cursor/skills/notion-prd-intake/SKILL.md +360 -0
- package/plugins/lisa-cursor/skills/notion-to-tracker/SKILL.md +357 -0
- package/plugins/lisa-cursor/skills/notion-write-prd/SKILL.md +109 -0
- package/plugins/lisa-cursor/skills/performance-review/SKILL.md +94 -0
- package/plugins/lisa-cursor/skills/plan/SKILL.md +60 -0
- package/plugins/lisa-cursor/skills/plugin-sync-explain/SKILL.md +53 -0
- package/plugins/lisa-cursor/skills/prd-backlink/SKILL.md +265 -0
- package/plugins/lisa-cursor/skills/prd-source-write/SKILL.md +101 -0
- package/plugins/lisa-cursor/skills/prd-ticket-coverage/SKILL.md +170 -0
- package/plugins/lisa-cursor/skills/product-walkthrough/SKILL.md +129 -0
- package/plugins/lisa-cursor/skills/project-ideation/SKILL.md +315 -0
- package/plugins/lisa-cursor/skills/project-ideation/examples/evidence-card-format.md +21 -0
- package/plugins/lisa-cursor/skills/project-ideation/examples/host-project-only.md +22 -0
- package/plugins/lisa-cursor/skills/project-ideation/examples/idempotency-verification-harness.md +57 -0
- package/plugins/lisa-cursor/skills/project-ideation/examples/public-external-inspiration.md +22 -0
- package/plugins/lisa-cursor/skills/project-ideation/examples/unavailable-data-rejection.md +22 -0
- package/plugins/lisa-cursor/skills/pull-request-review/SKILL.md +68 -0
- package/plugins/lisa-cursor/skills/quality-review/SKILL.md +54 -0
- package/plugins/lisa-cursor/skills/queue-status/SKILL.md +133 -0
- package/plugins/lisa-cursor/skills/repair-intake/SKILL.md +584 -0
- package/plugins/lisa-cursor/skills/reproduce-bug/SKILL.md +96 -0
- package/plugins/lisa-cursor/skills/research/SKILL.md +68 -0
- package/plugins/lisa-cursor/skills/review-local/SKILL.md +88 -0
- package/plugins/lisa-cursor/skills/root-cause-analysis/SKILL.md +155 -0
- package/plugins/lisa-cursor/skills/security-review/SKILL.md +57 -0
- package/plugins/lisa-cursor/skills/security-zap-scan/SKILL.md +33 -0
- package/plugins/lisa-cursor/skills/setup-atlassian/SKILL.md +347 -0
- package/plugins/lisa-cursor/skills/setup-automations/SKILL.md +99 -0
- package/plugins/lisa-cursor/skills/setup-confluence/SKILL.md +254 -0
- package/plugins/lisa-cursor/skills/setup-github/SKILL.md +268 -0
- package/plugins/lisa-cursor/skills/setup-jira/SKILL.md +198 -0
- package/plugins/lisa-cursor/skills/setup-linear/SKILL.md +251 -0
- package/plugins/lisa-cursor/skills/setup-notion/SKILL.md +316 -0
- package/plugins/lisa-cursor/skills/spec-conformance/SKILL.md +159 -0
- package/plugins/lisa-cursor/skills/task-decomposition/SKILL.md +127 -0
- package/plugins/lisa-cursor/skills/task-triage/SKILL.md +23 -0
- package/plugins/lisa-cursor/skills/tdd-implementation/SKILL.md +83 -0
- package/plugins/lisa-cursor/skills/tear-down-automations/SKILL.md +34 -0
- package/plugins/lisa-cursor/skills/test-strategy/SKILL.md +63 -0
- package/plugins/lisa-cursor/skills/ticket-triage/SKILL.md +182 -0
- package/plugins/lisa-cursor/skills/tracker-add-journey/SKILL.md +26 -0
- package/plugins/lisa-cursor/skills/tracker-build-intake/SKILL.md +64 -0
- package/plugins/lisa-cursor/skills/tracker-create/SKILL.md +26 -0
- package/plugins/lisa-cursor/skills/tracker-evidence/SKILL.md +52 -0
- package/plugins/lisa-cursor/skills/tracker-journey/SKILL.md +26 -0
- package/plugins/lisa-cursor/skills/tracker-read/SKILL.md +27 -0
- package/plugins/lisa-cursor/skills/tracker-source-artifacts/SKILL.md +107 -0
- package/plugins/lisa-cursor/skills/tracker-sync/SKILL.md +51 -0
- package/plugins/lisa-cursor/skills/tracker-validate/SKILL.md +36 -0
- package/plugins/lisa-cursor/skills/tracker-verify/SKILL.md +27 -0
- package/plugins/lisa-cursor/skills/tracker-write/SKILL.md +53 -0
- package/plugins/lisa-cursor/skills/usage-accounting/SKILL.md +170 -0
- package/plugins/lisa-cursor/skills/verification-lifecycle/SKILL.md +339 -0
- package/plugins/lisa-cursor/skills/verify/SKILL.md +49 -0
- package/plugins/lisa-cursor/skills/verify-prd/SKILL.md +392 -0
- package/plugins/lisa-cursor/skills/wiki-install/SKILL.md +101 -0
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/hooks/inject-rules.sh +16 -0
- package/plugins/lisa-harper-fabric/.codex-plugin/hooks.json +26 -0
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +2 -1
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/hooks/block-migration-edits.sh +60 -0
- package/plugins/lisa-nestjs/.codex-plugin/hooks.json +15 -0
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +2 -1
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/hooks/inject-rules.sh +22 -0
- package/plugins/lisa-rails/.codex-plugin/hooks/rubocop-on-edit.sh +78 -0
- package/plugins/lisa-rails/.codex-plugin/hooks/sg-scan-on-edit.sh +74 -0
- package/plugins/lisa-rails/.codex-plugin/hooks.json +41 -0
- package/plugins/lisa-rails/.codex-plugin/plugin.json +2 -1
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/hooks/block-suppress-directives.sh +73 -0
- package/plugins/lisa-typescript/.codex-plugin/hooks/format-on-edit.sh +79 -0
- package/plugins/lisa-typescript/.codex-plugin/hooks/lint-on-edit.sh +134 -0
- package/plugins/lisa-typescript/.codex-plugin/hooks/sg-scan-on-edit.sh +71 -0
- package/plugins/lisa-typescript/.codex-plugin/hooks.json +34 -0
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +2 -1
- package/plugins/lisa-typescript/hooks/format-on-edit.sh +5 -3
- package/plugins/lisa-typescript/hooks/lint-on-edit.sh +5 -2
- package/plugins/lisa-typescript/hooks/sg-scan-on-edit.sh +5 -2
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/src/typescript/hooks/format-on-edit.sh +5 -3
- package/plugins/src/typescript/hooks/lint-on-edit.sh +5 -2
- package/plugins/src/typescript/hooks/sg-scan-on-edit.sh +5 -2
- package/scripts/build-plugins.sh +24 -0
- package/scripts/generate-agy-plugin-artifacts.mjs +168 -0
- package/scripts/generate-codex-plugin-artifacts.mjs +170 -12
- package/scripts/generate-copilot-plugin-artifacts.mjs +230 -0
- package/scripts/generate-cursor-plugin-artifacts.mjs +173 -0
- package/scripts/internal-agy-skill-policy.json +3 -0
- package/scripts/internal-copilot-runtime-probe.json +7 -0
- package/scripts/internal-copilot-skill-policy.json +3 -0
- package/scripts/internal-cursor-skill-policy.json +3 -0
- package/scripts/lib/per-agent-hook-filter.mjs +249 -0
- package/scripts/probes/wave3-verification.sh +106 -0
|
@@ -0,0 +1,69 @@
|
|
|
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
|
+
# Only run package installation when node_modules are missing.
|
|
6
|
+
# This covers remote environments, new worktrees, fresh clones, and CI.
|
|
7
|
+
if [ -d "node_modules" ]; then
|
|
8
|
+
exit 0
|
|
9
|
+
fi
|
|
10
|
+
|
|
11
|
+
# Detect package manager based on lock file presence
|
|
12
|
+
if [ -f "bun.lockb" ] || [ -f "bun.lock" ]; then
|
|
13
|
+
bun install
|
|
14
|
+
elif [ -f "pnpm-lock.yaml" ]; then
|
|
15
|
+
pnpm install
|
|
16
|
+
elif [ -f "yarn.lock" ]; then
|
|
17
|
+
yarn install
|
|
18
|
+
elif [ -f "package-lock.json" ]; then
|
|
19
|
+
npm install
|
|
20
|
+
else
|
|
21
|
+
npm install
|
|
22
|
+
fi
|
|
23
|
+
|
|
24
|
+
# The tools below use Linux-specific binaries and paths — skip on other platforms.
|
|
25
|
+
if [ "$(uname -s)" != "Linux" ]; then
|
|
26
|
+
exit 0
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
# Install Gitleaks for secret detection (pre-commit hook)
|
|
30
|
+
echo "Installing Gitleaks for secret detection..."
|
|
31
|
+
GITLEAKS_VERSION="8.18.4"
|
|
32
|
+
curl -sSfL "https://github.com/gitleaks/gitleaks/releases/download/v${GITLEAKS_VERSION}/gitleaks_${GITLEAKS_VERSION}_linux_x64.tar.gz" | tar -xz -C /usr/local/bin gitleaks
|
|
33
|
+
echo "Gitleaks installed: $(gitleaks version)"
|
|
34
|
+
|
|
35
|
+
# Install jira-cli for JIRA integration
|
|
36
|
+
# The tarball nests the binary at jira_VERSION_linux_x86_64/bin/jira,
|
|
37
|
+
# so we extract to a temp dir and copy the binary out.
|
|
38
|
+
echo "Installing jira-cli for JIRA integration..."
|
|
39
|
+
JIRA_CLI_VERSION="1.7.0"
|
|
40
|
+
JIRA_TMPDIR=$(mktemp -d)
|
|
41
|
+
curl -sSfL "https://github.com/ankitpokhrel/jira-cli/releases/download/v${JIRA_CLI_VERSION}/jira_${JIRA_CLI_VERSION}_linux_x86_64.tar.gz" \
|
|
42
|
+
| tar -xz -C "${JIRA_TMPDIR}"
|
|
43
|
+
cp "${JIRA_TMPDIR}/jira_${JIRA_CLI_VERSION}_linux_x86_64/bin/jira" /usr/local/bin/jira
|
|
44
|
+
chmod +x /usr/local/bin/jira
|
|
45
|
+
rm -rf "${JIRA_TMPDIR}"
|
|
46
|
+
echo "jira-cli installed: $(jira version)"
|
|
47
|
+
|
|
48
|
+
# Install Chromium for Lighthouse CI (pre-push hook)
|
|
49
|
+
# Playwright's bundled Chromium works with @lhci/cli
|
|
50
|
+
echo "Installing Chromium for Lighthouse CI..."
|
|
51
|
+
npx playwright install chromium
|
|
52
|
+
|
|
53
|
+
# Find and export CHROME_PATH for Lighthouse CI
|
|
54
|
+
# Use sort to ensure deterministic selection of the latest version
|
|
55
|
+
CHROME_PATH=$(find ~/.cache/ms-playwright -name "chrome" -type f 2>/dev/null | grep "chrome-linux" | sort | tail -n 1)
|
|
56
|
+
if [ -n "$CHROME_PATH" ]; then
|
|
57
|
+
# Append to ~/.bashrc for shell sessions (idempotent)
|
|
58
|
+
if ! grep -q "export CHROME_PATH=" ~/.bashrc 2>/dev/null; then
|
|
59
|
+
echo "export CHROME_PATH=\"$CHROME_PATH\"" >> ~/.bashrc
|
|
60
|
+
else
|
|
61
|
+
# Update existing CHROME_PATH in bashrc
|
|
62
|
+
sed -i "s|^export CHROME_PATH=.*|export CHROME_PATH=\"$CHROME_PATH\"|" ~/.bashrc
|
|
63
|
+
fi
|
|
64
|
+
|
|
65
|
+
export CHROME_PATH="$CHROME_PATH"
|
|
66
|
+
echo "Chromium installed at: $CHROME_PATH"
|
|
67
|
+
fi
|
|
68
|
+
|
|
69
|
+
exit 0
|
|
@@ -0,0 +1,183 @@
|
|
|
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
|
+
# ntfy.sh Notification Hook for Claude Code
|
|
6
|
+
# =============================================================================
|
|
7
|
+
# Sends desktop and mobile notifications via ntfy.sh when Claude needs
|
|
8
|
+
# attention or finishes a task.
|
|
9
|
+
#
|
|
10
|
+
# Setup:
|
|
11
|
+
# 1. Install ntfy app on mobile (iOS App Store / Android Play Store)
|
|
12
|
+
# 2. Subscribe to your unique topic in the app
|
|
13
|
+
# 3. Set NTFY_TOPIC environment variable (e.g., in ~/.bashrc or ~/.zshrc):
|
|
14
|
+
# export NTFY_TOPIC="my-claude-alerts-xyz123"
|
|
15
|
+
#
|
|
16
|
+
# @see https://ntfy.sh
|
|
17
|
+
# =============================================================================
|
|
18
|
+
|
|
19
|
+
# Read JSON input from stdin
|
|
20
|
+
INPUT=$(cat)
|
|
21
|
+
|
|
22
|
+
# Extract hook event name
|
|
23
|
+
HOOK_EVENT=$(echo "$INPUT" | grep -o '"hook_event_name"[[:space:]]*:[[:space:]]*"[^"]*"' | sed 's/.*: *"//' | sed 's/"$//')
|
|
24
|
+
|
|
25
|
+
# Extract notification type (for Notification hooks)
|
|
26
|
+
NOTIFICATION_TYPE=$(echo "$INPUT" | grep -o '"notification_type"[[:space:]]*:[[:space:]]*"[^"]*"' | sed 's/.*: *"//' | sed 's/"$//')
|
|
27
|
+
|
|
28
|
+
# Extract message if available
|
|
29
|
+
MESSAGE=$(echo "$INPUT" | grep -o '"message"[[:space:]]*:[[:space:]]*"[^"]*"' | sed 's/.*: *"//' | sed 's/"$//')
|
|
30
|
+
|
|
31
|
+
# Extract session ID (first 8 chars for brevity)
|
|
32
|
+
FULL_SESSION_ID=$(echo "$INPUT" | grep -o '"session_id"[[:space:]]*:[[:space:]]*"[^"]*"' | sed 's/.*: *"//' | sed 's/"$//')
|
|
33
|
+
SESSION_ID="${FULL_SESSION_ID:0:8}"
|
|
34
|
+
|
|
35
|
+
# Extract transcript path for task summary
|
|
36
|
+
TRANSCRIPT_PATH=$(echo "$INPUT" | grep -o '"transcript_path"[[:space:]]*:[[:space:]]*"[^"]*"' | sed 's/.*: *"//' | sed 's/"$//')
|
|
37
|
+
|
|
38
|
+
# Determine source (Web vs Local)
|
|
39
|
+
if [ "$CLAUDE_CODE_REMOTE" = "true" ]; then
|
|
40
|
+
SOURCE="Web"
|
|
41
|
+
else
|
|
42
|
+
SOURCE="Local"
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
# Get project name from current directory
|
|
46
|
+
PROJECT_NAME=$(basename "$CLAUDE_PROJECT_DIR" 2>/dev/null || basename "$(pwd)")
|
|
47
|
+
|
|
48
|
+
# Load NTFY_TOPIC from local config if not already set
|
|
49
|
+
if [ -z "$NTFY_TOPIC" ]; then
|
|
50
|
+
# Check for project-local config (gitignored)
|
|
51
|
+
if [ -f "$CLAUDE_PROJECT_DIR/.claude/env.local" ]; then
|
|
52
|
+
# shellcheck source=/dev/null
|
|
53
|
+
source "$CLAUDE_PROJECT_DIR/.claude/env.local"
|
|
54
|
+
fi
|
|
55
|
+
# Check for user-global config
|
|
56
|
+
if [ -z "$NTFY_TOPIC" ] && [ -f "$HOME/.claude/env.local" ]; then
|
|
57
|
+
# shellcheck source=/dev/null
|
|
58
|
+
source "$HOME/.claude/env.local"
|
|
59
|
+
fi
|
|
60
|
+
fi
|
|
61
|
+
|
|
62
|
+
# Exit silently if still not configured
|
|
63
|
+
if [ -z "$NTFY_TOPIC" ]; then
|
|
64
|
+
exit 0
|
|
65
|
+
fi
|
|
66
|
+
|
|
67
|
+
# Extract task summary from transcript (last assistant message, truncated)
|
|
68
|
+
TASK_SUMMARY=""
|
|
69
|
+
if [ -n "$TRANSCRIPT_PATH" ] && [ -f "$TRANSCRIPT_PATH" ]; then
|
|
70
|
+
# Get the last assistant message from the JSONL transcript
|
|
71
|
+
# The transcript contains lines with "type":"assistant" and "message" content
|
|
72
|
+
# Use awk for cross-platform compatibility (tac is not available on macOS)
|
|
73
|
+
LAST_ASSISTANT=$(awk '/"type"[[:space:]]*:[[:space:]]*"assistant"/{line=$0} END{if(line) print line}' "$TRANSCRIPT_PATH" 2>/dev/null)
|
|
74
|
+
if [ -n "$LAST_ASSISTANT" ]; then
|
|
75
|
+
# Extract the message content - look for text content in the message
|
|
76
|
+
# Format: {"message":{"content":[{"type":"text","text":"..."}]}}
|
|
77
|
+
# Use jq for robust JSON parsing when available, fallback to grep/sed
|
|
78
|
+
if command -v jq >/dev/null 2>&1; then
|
|
79
|
+
RAW_SUMMARY=$(echo "$LAST_ASSISTANT" | jq -r '.message.content[] | select(.type == "text") | .text' 2>/dev/null | head -1)
|
|
80
|
+
else
|
|
81
|
+
# Fallback: simple regex extraction (may fail on escaped quotes)
|
|
82
|
+
RAW_SUMMARY=$(echo "$LAST_ASSISTANT" | grep -o '"text"[[:space:]]*:[[:space:]]*"[^"]*"' | head -1 | sed 's/.*: *"//' | sed 's/"$//')
|
|
83
|
+
fi
|
|
84
|
+
if [ -n "$RAW_SUMMARY" ]; then
|
|
85
|
+
# Truncate to 100 chars and clean up newlines
|
|
86
|
+
TASK_SUMMARY=$(echo "$RAW_SUMMARY" | tr '\n' ' ' | cut -c1-100)
|
|
87
|
+
# Add ellipsis if truncated
|
|
88
|
+
if [ ${#RAW_SUMMARY} -gt 100 ]; then
|
|
89
|
+
TASK_SUMMARY="${TASK_SUMMARY}..."
|
|
90
|
+
fi
|
|
91
|
+
fi
|
|
92
|
+
fi
|
|
93
|
+
fi
|
|
94
|
+
|
|
95
|
+
# Build session info string (shown in body)
|
|
96
|
+
SESSION_INFO=""
|
|
97
|
+
if [ -n "$SESSION_ID" ]; then
|
|
98
|
+
SESSION_INFO="Session: $SESSION_ID"
|
|
99
|
+
fi
|
|
100
|
+
|
|
101
|
+
# Determine notification title and body based on hook type
|
|
102
|
+
case "$HOOK_EVENT" in
|
|
103
|
+
"Notification")
|
|
104
|
+
case "$NOTIFICATION_TYPE" in
|
|
105
|
+
"permission_prompt")
|
|
106
|
+
TITLE="Claude [$SOURCE] - Permission Required"
|
|
107
|
+
BODY="${MESSAGE:-Claude needs your permission to continue}"
|
|
108
|
+
if [ -n "$SESSION_INFO" ]; then
|
|
109
|
+
BODY="$SESSION_INFO
|
|
110
|
+
$BODY"
|
|
111
|
+
fi
|
|
112
|
+
PRIORITY="high"
|
|
113
|
+
TAGS="warning"
|
|
114
|
+
;;
|
|
115
|
+
"idle_prompt")
|
|
116
|
+
TITLE="Claude [$SOURCE] - Waiting"
|
|
117
|
+
BODY="${MESSAGE:-Claude is waiting for your input}"
|
|
118
|
+
if [ -n "$SESSION_INFO" ]; then
|
|
119
|
+
BODY="$SESSION_INFO
|
|
120
|
+
$BODY"
|
|
121
|
+
fi
|
|
122
|
+
PRIORITY="default"
|
|
123
|
+
TAGS="hourglass"
|
|
124
|
+
;;
|
|
125
|
+
*)
|
|
126
|
+
TITLE="Claude [$SOURCE] - Attention"
|
|
127
|
+
BODY="${MESSAGE:-Claude needs your attention}"
|
|
128
|
+
if [ -n "$SESSION_INFO" ]; then
|
|
129
|
+
BODY="$SESSION_INFO
|
|
130
|
+
$BODY"
|
|
131
|
+
fi
|
|
132
|
+
PRIORITY="default"
|
|
133
|
+
TAGS="bell"
|
|
134
|
+
;;
|
|
135
|
+
esac
|
|
136
|
+
;;
|
|
137
|
+
"Stop")
|
|
138
|
+
TITLE="Claude [$SOURCE] - Finished"
|
|
139
|
+
BODY="$PROJECT_NAME"
|
|
140
|
+
if [ -n "$SESSION_INFO" ]; then
|
|
141
|
+
BODY="$SESSION_INFO | $BODY"
|
|
142
|
+
fi
|
|
143
|
+
if [ -n "$TASK_SUMMARY" ]; then
|
|
144
|
+
BODY="$BODY
|
|
145
|
+
$TASK_SUMMARY"
|
|
146
|
+
fi
|
|
147
|
+
PRIORITY="default"
|
|
148
|
+
TAGS="white_check_mark"
|
|
149
|
+
;;
|
|
150
|
+
"SubagentStop")
|
|
151
|
+
TITLE="Claude [$SOURCE] - Subagent Done"
|
|
152
|
+
BODY="$PROJECT_NAME"
|
|
153
|
+
if [ -n "$SESSION_INFO" ]; then
|
|
154
|
+
BODY="$SESSION_INFO | $BODY"
|
|
155
|
+
fi
|
|
156
|
+
if [ -n "$TASK_SUMMARY" ]; then
|
|
157
|
+
BODY="$BODY
|
|
158
|
+
$TASK_SUMMARY"
|
|
159
|
+
fi
|
|
160
|
+
PRIORITY="low"
|
|
161
|
+
TAGS="checkered_flag"
|
|
162
|
+
;;
|
|
163
|
+
*)
|
|
164
|
+
TITLE="Claude [$SOURCE]"
|
|
165
|
+
BODY="${MESSAGE:-Event: $HOOK_EVENT}"
|
|
166
|
+
if [ -n "$SESSION_INFO" ]; then
|
|
167
|
+
BODY="$SESSION_INFO
|
|
168
|
+
$BODY"
|
|
169
|
+
fi
|
|
170
|
+
PRIORITY="default"
|
|
171
|
+
TAGS="robot"
|
|
172
|
+
;;
|
|
173
|
+
esac
|
|
174
|
+
|
|
175
|
+
# Send notification via ntfy.sh
|
|
176
|
+
curl -s \
|
|
177
|
+
-H "Title: $TITLE" \
|
|
178
|
+
-H "Priority: $PRIORITY" \
|
|
179
|
+
-H "Tags: $TAGS" \
|
|
180
|
+
-d "$BODY" \
|
|
181
|
+
"https://ntfy.sh/$NTFY_TOPIC" > /dev/null 2>&1
|
|
182
|
+
|
|
183
|
+
exit 0
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
##
|
|
3
|
+
# Writes the JIRA CLI config file from environment variables.
|
|
4
|
+
# Runs on SessionStart so the config is available for every session.
|
|
5
|
+
#
|
|
6
|
+
# Required env vars (must be created in your Claude Code Web environment):
|
|
7
|
+
# JIRA_INSTALLATION - cloud or local
|
|
8
|
+
# JIRA_SERVER - Atlassian instance URL
|
|
9
|
+
# JIRA_LOGIN - login email
|
|
10
|
+
# JIRA_PROJECT - default project key
|
|
11
|
+
# JIRA_API_TOKEN - already expected by jira-cli natively
|
|
12
|
+
#
|
|
13
|
+
# Optional env vars:
|
|
14
|
+
# JIRA_BOARD - default board name
|
|
15
|
+
##
|
|
16
|
+
|
|
17
|
+
set -euo pipefail
|
|
18
|
+
|
|
19
|
+
# Fix jira-cli installation if install-pkgs.sh failed to extract correctly.
|
|
20
|
+
# Only attempt on Linux — the binary download is Linux-only.
|
|
21
|
+
if [[ "$(uname -s)" == "Linux" ]] && ! command -v jira &>/dev/null; then
|
|
22
|
+
JIRA_CLI_VERSION="1.7.0"
|
|
23
|
+
TMPDIR=$(mktemp -d)
|
|
24
|
+
curl -sSfL "https://github.com/ankitpokhrel/jira-cli/releases/download/v${JIRA_CLI_VERSION}/jira_${JIRA_CLI_VERSION}_linux_x86_64.tar.gz" \
|
|
25
|
+
| tar -xz -C "${TMPDIR}"
|
|
26
|
+
cp "${TMPDIR}/jira_${JIRA_CLI_VERSION}_linux_x86_64/bin/jira" /usr/local/bin/jira
|
|
27
|
+
chmod +x /usr/local/bin/jira
|
|
28
|
+
rm -rf "${TMPDIR}"
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
CONFIG_DIR="${HOME}/.config/.jira"
|
|
32
|
+
CONFIG_FILE="${CONFIG_DIR}/.config.yml"
|
|
33
|
+
|
|
34
|
+
# Skip config write if required vars are missing
|
|
35
|
+
if [[ -z "${JIRA_SERVER:-}" || -z "${JIRA_LOGIN:-}" ]]; then
|
|
36
|
+
exit 0
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
mkdir -p "${CONFIG_DIR}"
|
|
40
|
+
|
|
41
|
+
cat > "${CONFIG_FILE}" << EOF
|
|
42
|
+
installation: ${JIRA_INSTALLATION:-cloud}
|
|
43
|
+
server: ${JIRA_SERVER}
|
|
44
|
+
login: ${JIRA_LOGIN}
|
|
45
|
+
project: ${JIRA_PROJECT:-}
|
|
46
|
+
board: "${JIRA_BOARD:-}"
|
|
47
|
+
auth_type: basic
|
|
48
|
+
epic:
|
|
49
|
+
name: Epic Name
|
|
50
|
+
link: Epic Link
|
|
51
|
+
EOF
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Base Rules (load-bearing)
|
|
2
|
+
|
|
3
|
+
These are mandatory disciplines that apply to every session. Full prose, JIRA dev-status query, ADF templates, etc. live in [reference/base-rules.md](../reference/base-rules.md).
|
|
4
|
+
|
|
5
|
+
## Requirement Verification
|
|
6
|
+
|
|
7
|
+
Treat every request as potentially underspecified. Before starting any work:
|
|
8
|
+
|
|
9
|
+
1. Identify ambiguities that would prevent completion. If any exist, stop and ask.
|
|
10
|
+
2. Identify open questions whose answers would change your approach. If any exist, stop and ask.
|
|
11
|
+
3. Define how you will empirically verify the work is complete by USING the resulting software, not just running tests. If you cannot define this, stop and ask.
|
|
12
|
+
4. If a request contradicts existing code/architecture/conventions, raise the contradiction and confirm intent before proceeding.
|
|
13
|
+
|
|
14
|
+
Do not begin work if there are blockers, ambiguities, access requirements, or unanswered questions. Identify these before starting, not during implementation.
|
|
15
|
+
|
|
16
|
+
## Code Quality
|
|
17
|
+
|
|
18
|
+
- Atomic commits with conventional commit messages.
|
|
19
|
+
- Document the **why**, not the what.
|
|
20
|
+
- Add new imports and their first usage in the same edit (the lint-on-edit hook strips unused imports).
|
|
21
|
+
- Delete old code completely when replacing it. No deprecation comments unless asked.
|
|
22
|
+
- Fix bugs at root cause. Never work around them or assume a failure is "pre-existing."
|
|
23
|
+
- Test empirically. Never assume test expectations before observing actual behavior.
|
|
24
|
+
|
|
25
|
+
## Git Discipline
|
|
26
|
+
|
|
27
|
+
- **Never use `--no-verify`** or bypass any git hook.
|
|
28
|
+
- **Never bypass branch protection** — no `--admin`, `--force`, no merging a PR with failing CI. "Green in CI" is the definition of done.
|
|
29
|
+
- Never commit directly to environment branches (`dev`, `staging`, `main`).
|
|
30
|
+
- Prefix `git push` with `GIT_SSH_COMMAND="ssh -o ServerAliveInterval=30 -o ServerAliveCountMax=5"`.
|
|
31
|
+
- When opening a PR, watch it. Fix every failing check and every valid bot review comment. Resolve threads. Loop until merged.
|
|
32
|
+
- After merging into an environment branch, watch the deploy. If it fails, fix it and open a new PR.
|
|
33
|
+
- **Promotion PRs** (env→env) MUST use `gh pr merge --merge` (regular merge commit), NEVER squash. Squashing strips `[skip ci]` markers and breaks promotion detection. Feature PRs also use `--merge`.
|
|
34
|
+
- Always include the PR URL when referencing a PR.
|
|
35
|
+
|
|
36
|
+
## Testing Discipline
|
|
37
|
+
|
|
38
|
+
- Never skip or disable tests. Never add skip directives without explicit instruction.
|
|
39
|
+
- Never lower coverage thresholds to pass a hook — raise coverage instead.
|
|
40
|
+
|
|
41
|
+
## JIRA Discipline
|
|
42
|
+
|
|
43
|
+
- Read **all** comments on a ticket, not just the description.
|
|
44
|
+
- When clarifying, comment via ADF and @mention the Reporter.
|
|
45
|
+
- Establish issue link relationships (`blocks`, `is blocked by`, `relates to`) — search git history AND Jira before declaring "no related work."
|
|
46
|
+
- Single-repo invariant: Bug/Task/Sub-task MUST be single-repo. Epic/Story/Spike MAY span repos. Cross-repo leaves are split per the `repo-scope-split` rule.
|
|
47
|
+
- Pre-flight gate: BLOCK + reassign-to-Reporter if a ticket is missing target backend env, sign-in credentials, Gherkin acceptance criteria, epic parent (non-bug/non-epic), or relationship discovery evidence.
|
|
48
|
+
|
|
49
|
+
## Pace
|
|
50
|
+
|
|
51
|
+
Never rush. A fast wrong answer is worse than a slow correct one. Surface difficulty to the user instead of compressing the work.
|
|
52
|
+
|
|
53
|
+
## NEVER
|
|
54
|
+
|
|
55
|
+
- Modify this file directly.
|
|
56
|
+
- Touch files inside `node_modules`, `.venv`, `vendor`, `target`.
|
|
57
|
+
- Delete anything untracked, or anything outside this project.
|
|
58
|
+
- Create placeholders, TODOs, versioned copies (`V2`, `processNew`, `handleOld`).
|
|
59
|
+
- Write migration code unless explicitly requested.
|
|
60
|
+
- Update CHANGELOG yourself.
|
|
61
|
+
|
|
62
|
+
## ASK FIRST
|
|
63
|
+
|
|
64
|
+
- Before adding a lint/formatter suppression (`eslint-disable`, `biome-ignore`, `noqa`, etc.).
|
|
65
|
+
- Before adding a type-check suppression (`ts-ignore`, `ts-expect-error`, `# type: ignore`).
|
|
66
|
+
- Lint suppression in test files is OK without asking only when comprehensive coverage genuinely requires it.
|
|
67
|
+
|
|
68
|
+
## Multi-Repository Awareness
|
|
69
|
+
|
|
70
|
+
If you see imports that don't resolve, API calls without a contract, shared libs not present, env vars naming foreign services, stack traces pointing out-of-repo, or ticket references to other components — stop guessing. Identify the repo, add it to the session, or ask.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Coding Philosophy (load-bearing)
|
|
2
|
+
|
|
3
|
+
When writing or modifying code, follow these principles. Examples, hook structure templates, and anti-pattern catalogs live in [reference/coding-philosophy.md](../reference/coding-philosophy.md).
|
|
4
|
+
|
|
5
|
+
## Principle priority
|
|
6
|
+
|
|
7
|
+
**KISS is the tiebreaker.** When principles conflict, choose the simpler solution.
|
|
8
|
+
|
|
9
|
+
1. **YAGNI** — Don't build features, abstractions, or flexibility you don't need right now. Solve today's problem.
|
|
10
|
+
2. **KISS** — Choose the simpler option.
|
|
11
|
+
3. **DRY** — Extract only when (a) the same logic appears 3+ times, (b) the abstraction is simpler than the duplication, and (c) the extracted code has a clear single purpose.
|
|
12
|
+
4. **SOLID** — Apply pragmatically. Split a function only when it does 2+ unrelated things AND splitting reduces complexity. Use composition over inheritance.
|
|
13
|
+
|
|
14
|
+
## Mandatory practices
|
|
15
|
+
|
|
16
|
+
- **Immutability first.** Never mutate. Spread/clone to create new references.
|
|
17
|
+
- **TDD is mandatory.** Write the failing test BEFORE the implementation. Red → Green → Refactor.
|
|
18
|
+
- **Function structure order**: (1) variables & derived state, (2) side effects, (3) return. Never interleave.
|
|
19
|
+
- **Functional transformations.** Prefer `map`/`filter`/`reduce` over imperative loops with mutation.
|
|
20
|
+
- **Clean deletion.** When replacing code, delete the old version completely. No `V2`/`Old`/`New` suffixes, no `@deprecated` comments, no migration shims unless explicitly requested. Trust git history.
|
|
21
|
+
|
|
22
|
+
## What NOT to write
|
|
23
|
+
|
|
24
|
+
- Comments that explain WHAT the code does (well-named identifiers do that).
|
|
25
|
+
- Error handling, fallbacks, or validation for scenarios that can't happen.
|
|
26
|
+
- Backwards-compatibility shims, feature flags, or unused `_var` renames when you can just change the code.
|
|
27
|
+
- Half-finished implementations, placeholders, or TODOs.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Config Resolution (load-bearing)
|
|
2
|
+
|
|
3
|
+
Lisa configuration lives in `.lisa.config.json` (committed) and `.lisa.config.local.json` (gitignored, per-developer). The local file wins where they overlap. Developer-specific identity (`atlassian.email`, etc.) MUST live in the local file, never committed.
|
|
4
|
+
|
|
5
|
+
## Atlassian access — assistant-level rule
|
|
6
|
+
|
|
7
|
+
When the user asks about Atlassian (Jira / Confluence) connection state, or you are about to run a Jira/Confluence operation, and `acli` is installed:
|
|
8
|
+
|
|
9
|
+
1. Run `acli auth status` and read the active `Site:`.
|
|
10
|
+
2. Read `atlassian.site` from `.lisa.config.json` (and `atlassian.email` from `.lisa.config.local.json` if present).
|
|
11
|
+
3. **If the active site does not match config, do NOT report "not connected." Run:**
|
|
12
|
+
```sh
|
|
13
|
+
acli auth switch --site "$ATLASSIAN_SITE" --email "$ATLASSIAN_EMAIL"
|
|
14
|
+
```
|
|
15
|
+
acli supports multiple authenticated profiles; the switch is fast and non-interactive when a profile already exists.
|
|
16
|
+
4. Only after the switch fails (no matching profile) should you report not-connected and suggest `/lisa:setup:atlassian` to add one.
|
|
17
|
+
|
|
18
|
+
This applies before declaring connection state, before running any `acli jira *` / `acli confluence *` command, and before falling back to the Atlassian MCP or curl substrates. Identity mismatch is treated as silent-misroute risk, not as a hard not-connected.
|
|
19
|
+
|
|
20
|
+
## Tracker selection
|
|
21
|
+
|
|
22
|
+
Project tracker (`jira` / `github` / `linear`) is read from `.lisa.config.json` `tracker`. Vendor-neutral skills MUST dispatch through the configured tracker, never infer it from arguments. Missing `tracker` → stop and instruct the user to run the matching `/lisa:setup:*` skill.
|
|
23
|
+
|
|
24
|
+
## Repo identity
|
|
25
|
+
|
|
26
|
+
`repo:<name>` is the canonical label for which repo a work item belongs to. Resolve current-repo identity in this priority order: `.lisa.config.local.json` `repo` → `.lisa.config.json` `repo` → `.lisa.config.json` `github.repo` → `basename -s .git "$(git remote get-url origin)"`. If none resolve, stop with a clear error.
|
|
27
|
+
|
|
28
|
+
Full reference: [reference/config-resolution.md](../reference/config-resolution.md).
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Documentation Source Paths (load-bearing)
|
|
2
|
+
|
|
3
|
+
Do not treat `docs/`, `research/`, `transcripts/`, or other source-material directories as disposable duplicates just because a project also has a `wiki/`. They may be ingestion inputs, executable fixtures, runtime inputs, or historical evidence.
|
|
4
|
+
|
|
5
|
+
Before moving, absorbing, or deleting documentation-like paths:
|
|
6
|
+
|
|
7
|
+
1. Classify each path: durable wiki content, reader-safe source note, executable test fixture, runtime scratch/input, generated output, or obsolete.
|
|
8
|
+
2. Use `rg` to find every code, test, script, config, README, rule, skill, agent, and wiki reference to the path.
|
|
9
|
+
3. Preserve executable fixtures and runtime inputs OUTSIDE the wiki — they are project behavior, not documentation.
|
|
10
|
+
4. When absorbing into `wiki/`, update source notes, indexes, logs, README links, rule references, and runtime defaults that pointed at the old path.
|
|
11
|
+
5. Delete a path only AFTER references are updated and verification proves the project no longer reads it.
|
|
12
|
+
|
|
13
|
+
Full context (Lisa-wiki specifics, `wiki/sources/` evidence layout): [reference/documentation-source-paths.md](../reference/documentation-source-paths.md).
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Empirical Inquiry — Test, Don't Guess (load-bearing)
|
|
2
|
+
|
|
3
|
+
When a decision depends on a fact you are not certain of — how a tool, API, harness, runtime, or dependency actually behaves — **find out empirically before you act.** Run the smallest experiment that settles the question, observe the real result, and proceed from what you observed.
|
|
4
|
+
|
|
5
|
+
Do not reason your way to a confident-sounding answer from documentation, prior assumption, or training knowledge when the real system is right there and a quick probe would tell you the truth.
|
|
6
|
+
|
|
7
|
+
## How to apply
|
|
8
|
+
|
|
9
|
+
1. **State the uncertain fact** explicitly, so you know what the experiment must resolve.
|
|
10
|
+
2. **Run the cheapest probe** that produces real evidence — a single command, a one-shot subagent, a tiny script, a direct API call against a scratch input.
|
|
11
|
+
3. **Report the raw result** (verbatim output or error), then your conclusion. Distinguish observation from inference.
|
|
12
|
+
4. **Encode the verified fact**, and when non-obvious or contradicting docs, record WHY so the next agent inherits the finding.
|
|
13
|
+
|
|
14
|
+
## Forbidden
|
|
15
|
+
|
|
16
|
+
- Presenting a guess, recollection, or doc summary as established fact when it was cheap to verify and you did not.
|
|
17
|
+
- "Should work" / "probably" / "the docs say" as the basis for a load-bearing decision an experiment could have settled.
|
|
18
|
+
- Skipping the probe because the answer "seems obvious" — those are exactly the ones that quietly drift from reality.
|
|
19
|
+
|
|
20
|
+
This is the inquiry counterpart to the `verification` rule (which proves completed work behaves correctly). Both reject "it looks correct" as evidence.
|
|
21
|
+
|
|
22
|
+
Full prose: [reference/empirical-inquiry.md](../reference/empirical-inquiry.md).
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Intent Routing (load-bearing)
|
|
2
|
+
|
|
3
|
+
**On the first user message of a session**, before responding to the substance of the request, before running any tool, before asking any clarifying question:
|
|
4
|
+
|
|
5
|
+
1. **Classify the flow.** One of: Research, Plan, Implement (Build/Fix/Improve/Investigate-Only), Verify, Monitor, Intake, Debrief, or No flow. If a slash command was invoked, the flow is already determined.
|
|
6
|
+
2. **Echo the chosen flow** with a one-sentence justification. Example:
|
|
7
|
+
> **Flow: Implement/Fix** — bug report with reproduction steps.
|
|
8
|
+
3. **Echo orchestration mode in the same message.** One of:
|
|
9
|
+
> **Orchestration: agent team** — Research, Plan, Implement, Intake, Debrief, and any flow that invokes Review.
|
|
10
|
+
> **Orchestration: single agent** — Verify (standalone), Monitor (standalone), product-walkthrough standalone, debrief-apply, one-off diagnostic sessions.
|
|
11
|
+
4. **Check the readiness gate.** If gate fails interactively, ask for what's missing with recommended answers; do not start work. Headless/`-p` sessions infer from available context instead of blocking.
|
|
12
|
+
5. **Cascade rule.** If you are already inside an agent team (a TeamCreate succeeded earlier this session, or you were spawned into a team context), do **not** create a second team. Add specialists through the existing lead. On Claude, teams are flat — message the lead with teammate + assignment. On Codex, use `multi_agent_v1.spawn_agent`.
|
|
13
|
+
|
|
14
|
+
Once a flow is established, **do not re-classify** on later messages, even if a follow-up looks vague ("now run the tests", "thanks"). Subsequent messages inherit the established flow unless the user explicitly changes scope.
|
|
15
|
+
|
|
16
|
+
Skipping classification or orchestration echo leads to unstructured responses that bypass readiness gates.
|
|
17
|
+
|
|
18
|
+
Full reference (flow definitions, readiness gates, orchestration matrix, sub-flows): [reference/intent-routing.md](../reference/intent-routing.md).
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Leaf-Only Build-Ready Invariant (load-bearing)
|
|
2
|
+
|
|
3
|
+
**Build-ready means a directly implementable leaf work unit.** Containers never carry build-ready.
|
|
4
|
+
|
|
5
|
+
A leaf is structurally defined: **no child work** AND a leaf-typed item (Bug, Task, Sub-task, Improvement). A container is a parent with children — Epic, Story, Spike, or any item that has acquired sub-items.
|
|
6
|
+
|
|
7
|
+
## Invariant
|
|
8
|
+
|
|
9
|
+
- **At decomposition/write time** — only leaves receive the `ready` role. Parent containers are created in their non-ready state.
|
|
10
|
+
- **At validate time** — `*-validate-*` FAILs any container carrying the build-ready role.
|
|
11
|
+
- **At claim time** — build-intake claims leaves only. A container with a stale build-ready role is rolled up or safe-blocked, NEVER implemented.
|
|
12
|
+
|
|
13
|
+
## Childless-parent exception
|
|
14
|
+
|
|
15
|
+
A container *type* with no children is structurally a leaf — and may be build-ready iff its type is itself a leaf type:
|
|
16
|
+
|
|
17
|
+
- **Task or Bug with no children** → leaf → may be build-ready.
|
|
18
|
+
- **Epic, Story, or Spike with no children** → still NOT build-ready. These are coordination containers by design; an empty one is incomplete decomposition. Repair: decompose into leaves, or reclassify to a leaf type.
|
|
19
|
+
|
|
20
|
+
## Parent state rollup (priority order, first match wins)
|
|
21
|
+
|
|
22
|
+
1. Any leaf is **blocked** → parent rolls up to **blocked / attention-needed**.
|
|
23
|
+
2. Else any leaf is **claimed or in review** → parent is **in-progress**.
|
|
24
|
+
3. Else all required leaves are **terminal (`done`)** → parent reaches the configured rollup terminal (env-keyed `done`).
|
|
25
|
+
4. Else (leaves exist but none started) → parent unchanged.
|
|
26
|
+
|
|
27
|
+
**Blocked dominates.** Optional/won't-do children do not hold a parent open. Rollup is recursive — bottom-up. The parent never carries `ready`.
|
|
28
|
+
|
|
29
|
+
## Terminal native closure
|
|
30
|
+
|
|
31
|
+
When a leaf reaches the true terminal `done` (the production / final-env value), also finalize via the tracker's native completion mechanism:
|
|
32
|
+
|
|
33
|
+
- **GitHub** — `gh issue close <n> --reason completed` after the terminal label.
|
|
34
|
+
- **Linear** — move workflow `state` to the team's Done.
|
|
35
|
+
- **JIRA** — transition to terminal Done/Resolved/Closed; verify `statusCategory = Done`.
|
|
36
|
+
|
|
37
|
+
Intermediate env-keyed states (`status:on-dev`, `On Stg`, etc.) remain open. Idempotent — if already closed, report and continue.
|
|
38
|
+
|
|
39
|
+
Full vendor mechanics + the state machine in prose: [reference/leaf-only-lifecycle.md](../reference/leaf-only-lifecycle.md).
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# PRD Lifecycle Rollup & Generated-Top-Level-Work Contract (load-bearing)
|
|
2
|
+
|
|
3
|
+
The vendor-neutral source of truth for how a PRD owns the work it generated and how its lifecycle rolls up to `shipped`. Companion to `leaf-only-lifecycle` (which governs build-lifecycle of leaves); this rule governs PRD lifecycle and rollup from generated top-level children.
|
|
4
|
+
|
|
5
|
+
## Generated top-level work (the contract)
|
|
6
|
+
|
|
7
|
+
A PRD owns the work units it created **at the top of the hierarchy** — the Epic(s) and any top-level Story it created directly. It does NOT own descendants (Sub-tasks, Stories under an Epic, leaves under a top-level unit) — those are owned by their top-level parent and roll up via `leaf-only-lifecycle`.
|
|
8
|
+
|
|
9
|
+
Leaf Sub-tasks are **never** direct children of a PRD when a top-level Epic/Story hierarchy exists.
|
|
10
|
+
|
|
11
|
+
## How each vendor records the PRD→child link
|
|
12
|
+
|
|
13
|
+
**Native hierarchy first**, machine-readable fallback section always written:
|
|
14
|
+
|
|
15
|
+
- **GitHub Issues** — native sub-issues when source and tracker are the same repo + supports sub-issues.
|
|
16
|
+
- **Linear** — `parentId` or generated Project grouping where the PRD also lives in Linear.
|
|
17
|
+
- **JIRA** — Epic link / parent field, or documented issue-link type.
|
|
18
|
+
- **Confluence / Notion** — no native issue hierarchy; the documented `## Tickets` / `## Generated Work` section IS the source of truth.
|
|
19
|
+
- **Cross-vendor** (e.g. Notion PRD → JIRA tracker) — always documented section in the PRD source.
|
|
20
|
+
|
|
21
|
+
The documented `## Tickets` section is ALWAYS written (additive to native links) so the generated set is readable without parsing comments.
|
|
22
|
+
|
|
23
|
+
## Rollup transition
|
|
24
|
+
|
|
25
|
+
PRD rolls from `ticketed` to `shipped` when every required generated top-level child is terminal. The PRD remains open for `/lisa:verify-prd` after `shipped` — verified PASS performs native closure (archive/close/transition), verified FAIL re-opens to `ticketed` with build-ready fix tickets (never `blocked`).
|
|
26
|
+
|
|
27
|
+
## Idempotency dedupe key
|
|
28
|
+
|
|
29
|
+
Re-runs of intake/backlink must dedupe by child-ref identity (e.g. `owner/repo#number` for GitHub, Linear issue UUID, JIRA key) — never by URL string, which varies by formatting.
|
|
30
|
+
|
|
31
|
+
Full vendor matrix, predicate definitions, non-goals: [reference/prd-lifecycle-rollup.md](../reference/prd-lifecycle-rollup.md).
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Repo Scope & Work-Time Splitting (load-bearing)
|
|
2
|
+
|
|
3
|
+
**Leaf work units are single-repo.** A leaf is an individually implementable ticket with no children — types **Bug, Task, Sub-task, Improvement**. Each names exactly one repo. **Epic, Story, Spike** are coordination containers and may span repos.
|
|
4
|
+
|
|
5
|
+
Enforced at four points: gate **S10** (`*-validate-*`, write time), `task-decomposition` step 1.5 (PRD-decomposition time), claim-time repo scoping (`*-build-intake`), and the work-time split procedure (an existing ticket about to be implemented).
|
|
6
|
+
|
|
7
|
+
## Choose the right strategy
|
|
8
|
+
|
|
9
|
+
- **Decomposition-time (no tickets exist yet):** use `task-decomposition` step 1.5 — one work unit per repo under a parent Story.
|
|
10
|
+
- **Work-time (a ticket already exists):** narrow the original to one repo, spin off a sibling per additional repo, link by dependency. Do NOT invent a new parent — siblings inherit the original's existing parent.
|
|
11
|
+
|
|
12
|
+
## Work-time split (pre-flight gate, agent-performed)
|
|
13
|
+
|
|
14
|
+
1. **Detect repos.** Parse description + AC + approach, confirm against actual code surfaces. If single-repo, no split.
|
|
15
|
+
2. **Pick the keeper.** Default: the original keeps the consumer / user-facing repo.
|
|
16
|
+
3. **Create one sibling per extra repo**, cloning metadata (re-prefix summary, scope AC, carry parent, env, sign-in).
|
|
17
|
+
4. **Link by dependency.** Producer **blocks** consumer (`is blocked by` on consumer / `blocks` on producer). No clear direction → `relates to`.
|
|
18
|
+
5. **Narrow the original.** Edit summary prefix, Repository section, AC; remove cross-repo references.
|
|
19
|
+
6. **Comment** on the original noting the split, linking each sibling.
|
|
20
|
+
7. **Re-validate.** Run `tracker-verify` (S10) on the original and every sibling. All must PASS single-repo.
|
|
21
|
+
8. **Proceed in dependency order.** Producer siblings first.
|
|
22
|
+
|
|
23
|
+
## When to BLOCK instead of split
|
|
24
|
+
|
|
25
|
+
Fall back to the standard BLOCK + reassign-to-Reporter path when:
|
|
26
|
+
|
|
27
|
+
- Repos cannot be determined confidently from ticket + code.
|
|
28
|
+
- Splitting would strand stakeholder context only the reporter can re-scope.
|
|
29
|
+
- Required clone metadata (parent, env, credentials) is itself missing.
|
|
30
|
+
|
|
31
|
+
## Claim-time repo scoping (build-intake)
|
|
32
|
+
|
|
33
|
+
A tracker can oversee multiple repos. Build-intake claims only current-repo tickets. Resolve current repo per `config-resolution` (config `repo` → `github.repo` → git remote basename). For each ready candidate:
|
|
34
|
+
|
|
35
|
+
1. **Read `repo:<name>` label.** Wrong repo → skip. Current repo → leaf-only gate + claim. Unlabeled → determine + stamp + re-apply.
|
|
36
|
+
2. **Multi-repo leaf → split, never claim.** Each split sibling is created build-ready and stamped with its own `repo:<name>`.
|
|
37
|
+
3. **Wrong-repo single-repo leaf → skip** (label keeps it cheap next cycle).
|
|
38
|
+
|
|
39
|
+
Vendor mechanics (JIRA/GitHub/Linear) and full procedure: [reference/repo-scope-split.md](../reference/repo-scope-split.md).
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Security Audit Handling (load-bearing)
|
|
2
|
+
|
|
3
|
+
If `git push` fails because the pre-push hook reports security vulnerabilities, follow the rules below. **Never use `--no-verify`** to bypass the security audit.
|
|
4
|
+
|
|
5
|
+
## Core rule
|
|
6
|
+
|
|
7
|
+
Override the actually-vulnerable **leaf package**, not its parent. The audit chain shows `parent › intermediate › vulnerable` — only the vulnerable leaf needs the override.
|
|
8
|
+
|
|
9
|
+
**Never override a parent package to force a lower major version.** Other packages may depend on the newer major; a forced downgrade breaks them.
|
|
10
|
+
|
|
11
|
+
Before adding any override, verify:
|
|
12
|
+
- You are targeting the actually-vulnerable package, not a parent in the chain.
|
|
13
|
+
- The override is compatible with all dependents (check via `bun why <pkg>` or `npm ls <pkg>`).
|
|
14
|
+
- The override does not downgrade across a major version boundary other deps require.
|
|
15
|
+
|
|
16
|
+
## Node.js (GHSA)
|
|
17
|
+
|
|
18
|
+
1. Note GHSA ID, package, advisory URL.
|
|
19
|
+
2. If a patched version exists: add a resolution AND override in `package.json` for the leaf package, regenerate the lockfile, commit, retry.
|
|
20
|
+
3. If no patch but safe (transitive, no untrusted input, dev/build only): add an exclusion to `audit.ignore.local.json` with `{"id", "package", "reason"}`, commit, retry.
|
|
21
|
+
|
|
22
|
+
## Rails (bundler-audit)
|
|
23
|
+
|
|
24
|
+
1. Note advisory ID, gem, URL.
|
|
25
|
+
2. If direct dep with patch: update Gemfile constraint, `bundle update <gem>`, commit, retry.
|
|
26
|
+
3. If transitive with patch: `bundle update <gem>` to bump the lockfile only, commit, retry.
|
|
27
|
+
4. If no patch but safe: document the exception, retry.
|
|
28
|
+
|
|
29
|
+
Full procedure with examples: [reference/security-audit-handling.md](../reference/security-audit-handling.md).
|