@codyswann/lisa 4.74.9 → 4.75.1
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 +60 -0
- package/all/copy-overwrite/scripts/lib/npm-update-github.mjs +73 -40
- package/all/copy-overwrite/scripts/lib/npm-update-invariants.mjs +54 -0
- package/all/copy-overwrite/scripts/npm-updater-helper-graph.json +3 -2
- package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.js +6 -0
- package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
- package/dist/core/lisa-skill-sources.d.ts +3 -3
- package/dist/core/lisa-skill-sources.d.ts.map +1 -1
- package/dist/core/lisa-skill-sources.js +3 -2
- package/dist/core/lisa-skill-sources.js.map +1 -1
- package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +735 -8
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/package.json +4 -4
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-devin/.claude-plugin/plugin.json +11 -0
- package/plugins/lisa-cdk-devin/.devin-plugin/plugin.json +8 -0
- package/plugins/lisa-cdk-devin/skills/setup-aws-accounts/SKILL.md +292 -0
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-devin/.claude-plugin/plugin.json +8 -0
- package/plugins/lisa-devin/.devin-plugin/plugin.json +8 -0
- package/plugins/lisa-devin/.mcp.json +8 -0
- package/plugins/lisa-devin/agents/architecture-specialist.md +32 -0
- package/plugins/lisa-devin/agents/bug-fixer.md +43 -0
- package/plugins/lisa-devin/agents/builder.md +44 -0
- package/plugins/lisa-devin/agents/confluence-prd-intake.md +65 -0
- package/plugins/lisa-devin/agents/debug-specialist.md +34 -0
- package/plugins/lisa-devin/agents/eval-specialist.md +33 -0
- package/plugins/lisa-devin/agents/git-history-analyzer.md +183 -0
- package/plugins/lisa-devin/agents/github-agent.md +155 -0
- package/plugins/lisa-devin/agents/github-build-intake.md +64 -0
- package/plugins/lisa-devin/agents/github-prd-intake.md +66 -0
- package/plugins/lisa-devin/agents/jira-agent.md +135 -0
- package/plugins/lisa-devin/agents/jira-build-intake.md +64 -0
- package/plugins/lisa-devin/agents/learner.md +85 -0
- package/plugins/lisa-devin/agents/learning-judge.md +119 -0
- package/plugins/lisa-devin/agents/learnings-synthesizer.md +155 -0
- package/plugins/lisa-devin/agents/linear-agent.md +138 -0
- package/plugins/lisa-devin/agents/linear-build-intake.md +64 -0
- package/plugins/lisa-devin/agents/linear-prd-intake.md +66 -0
- package/plugins/lisa-devin/agents/notion-prd-intake.md +63 -0
- package/plugins/lisa-devin/agents/performance-specialist.md +26 -0
- package/plugins/lisa-devin/agents/pr-mining-specialist.md +85 -0
- package/plugins/lisa-devin/agents/product-specialist.md +30 -0
- package/plugins/lisa-devin/agents/quality-specialist.md +30 -0
- package/plugins/lisa-devin/agents/security-specialist.md +43 -0
- package/plugins/lisa-devin/agents/skill-evaluator.md +205 -0
- package/plugins/lisa-devin/agents/spec-conformance-specialist.md +56 -0
- package/plugins/lisa-devin/agents/test-specialist.md +32 -0
- package/plugins/lisa-devin/agents/tracker-mining-specialist.md +85 -0
- package/plugins/lisa-devin/agents/verification-specialist.md +145 -0
- package/plugins/lisa-devin/hooks/auto-update.mjs +824 -0
- package/plugins/lisa-devin/hooks/auto-update.sh +31 -0
- package/plugins/lisa-devin/hooks/block-blind-automerge.sh +1242 -0
- package/plugins/lisa-devin/hooks/block-direct-issue-create.sh +2603 -0
- package/plugins/lisa-devin/hooks/block-host-name-leak.mjs +412 -0
- package/plugins/lisa-devin/hooks/block-host-name-leak.sh +61 -0
- package/plugins/lisa-devin/hooks/block-instruction-file-edits.sh +207 -0
- package/plugins/lisa-devin/hooks/block-managed-file-edits.sh +1175 -0
- package/plugins/lisa-devin/hooks/block-no-verify.sh +2288 -0
- package/plugins/lisa-devin/hooks/block-shell-json-parsing.sh +263 -0
- package/plugins/lisa-devin/hooks/cleanup-stale-worktrees.sh +122 -0
- package/plugins/lisa-devin/hooks/devin-tool-name-shim.sh +30 -0
- package/plugins/lisa-devin/hooks/discharge-work-item-gates.sh +90 -0
- package/plugins/lisa-devin/hooks/enforce-verification-gate.sh +506 -0
- package/plugins/lisa-devin/hooks/enforcement-vintage-npm.mjs +320 -0
- package/plugins/lisa-devin/hooks/enforcement-vintage.mjs +472 -0
- package/plugins/lisa-devin/hooks/enforcement-vintage.sh +48 -0
- package/plugins/lisa-devin/hooks/failure-signature-index.mjs +717 -0
- package/plugins/lisa-devin/hooks/failure-signature-index.sh +26 -0
- package/plugins/lisa-devin/hooks/guard-dedupe.bash +374 -0
- package/plugins/lisa-devin/hooks/inject-resolved-config.mjs +903 -0
- package/plugins/lisa-devin/hooks/inject-resolved-config.sh +107 -0
- package/plugins/lisa-devin/hooks/inject-rules.sh +49 -0
- package/plugins/lisa-devin/hooks/install-pkgs.sh +84 -0
- package/plugins/lisa-devin/hooks/operational-hazards.mjs +736 -0
- package/plugins/lisa-devin/hooks/operational-hazards.sh +28 -0
- package/plugins/lisa-devin/hooks/parity-safety-net-heredoc.py +1004 -0
- package/plugins/lisa-devin/hooks/parity-safety-net.sh +3275 -0
- package/plugins/lisa-devin/hooks/secrets-preflight.sh +72 -0
- package/plugins/lisa-devin/hooks/setup-jira-cli.sh +205 -0
- package/plugins/lisa-devin/hooks/shell-write-nudge.sh +86 -0
- package/plugins/lisa-devin/hooks/sonar-secrets.sh +205 -0
- package/plugins/lisa-devin/hooks/threshold-ratchet-compare.mjs +518 -0
- package/plugins/lisa-devin/hooks/threshold-ratchet-families.mjs +543 -0
- package/plugins/lisa-devin/hooks/threshold-ratchet.mjs +568 -0
- package/plugins/lisa-devin/hooks/threshold-ratchet.sh +22 -0
- package/plugins/lisa-devin/hooks/withdrawn-rulings.mjs +600 -0
- package/plugins/lisa-devin/hooks/withdrawn-rulings.sh +24 -0
- package/plugins/lisa-devin/hooks/worktree-binding-guard.mjs +1383 -0
- package/plugins/lisa-devin/hooks/worktree-binding-guard.sh +79 -0
- package/plugins/lisa-devin/hooks.json +247 -0
- package/plugins/lisa-devin/rules/eager/00-rule-index.md +82 -0
- package/plugins/lisa-devin/rules/eager/base-rules.md +85 -0
- package/plugins/lisa-devin/rules/eager/coding-philosophy.md +27 -0
- package/plugins/lisa-devin/rules/eager/config-resolution.md +37 -0
- package/plugins/lisa-devin/rules/eager/do-it-now.md +11 -0
- package/plugins/lisa-devin/rules/eager/empirical-inquiry.md +24 -0
- package/plugins/lisa-devin/rules/eager/falsifiable-checks.md +48 -0
- package/plugins/lisa-devin/rules/eager/history-audit.md +27 -0
- package/plugins/lisa-devin/rules/eager/integration-access-layer.md +19 -0
- package/plugins/lisa-devin/rules/eager/intent-routing.md +18 -0
- package/plugins/lisa-devin/rules/eager/learnings-ladder.md +18 -0
- package/plugins/lisa-devin/rules/eager/local-ci-first.md +15 -0
- package/plugins/lisa-devin/rules/eager/measurement-integrity.md +18 -0
- package/plugins/lisa-devin/rules/eager/never-name-a-downstream-project.md +9 -0
- package/plugins/lisa-devin/rules/eager/not-blocked-just-waiting.md +13 -0
- package/plugins/lisa-devin/rules/eager/operational-hazards.md +50 -0
- package/plugins/lisa-devin/rules/eager/report-actionability.md +26 -0
- package/plugins/lisa-devin/rules/eager/security-audit-handling.md +40 -0
- package/plugins/lisa-devin/rules/eager/session-status-updates.md +20 -0
- package/plugins/lisa-devin/rules/eager/settled-decisions.md +75 -0
- package/plugins/lisa-devin/rules/eager/stale-state-claims.md +26 -0
- package/plugins/lisa-devin/rules/eager/tool-access-gate.md +23 -0
- package/plugins/lisa-devin/rules/eager/tracked-work.md +9 -0
- package/plugins/lisa-devin/rules/eager/upstream-to-lisa.md +14 -0
- package/plugins/lisa-devin/rules/eager/verification.md +33 -0
- package/plugins/lisa-devin/rules/eager/wiki-knowledge-source.md +13 -0
- package/plugins/lisa-devin/rules/eager/withdrawn-rulings.md +102 -0
- package/plugins/lisa-devin/rules/reference/automation-runbook-contract.md +355 -0
- package/plugins/lisa-devin/rules/reference/base-rules.md +136 -0
- package/plugins/lisa-devin/rules/reference/bdd-e2e-coverage.md +301 -0
- package/plugins/lisa-devin/rules/reference/blocker-containment.md +165 -0
- package/plugins/lisa-devin/rules/reference/claim-archaeology.md +184 -0
- package/plugins/lisa-devin/rules/reference/claim-evidence-mapping.md +362 -0
- package/plugins/lisa-devin/rules/reference/claim-time-guards.md +135 -0
- package/plugins/lisa-devin/rules/reference/coding-philosophy.md +428 -0
- package/plugins/lisa-devin/rules/reference/config-resolution.md +1225 -0
- package/plugins/lisa-devin/rules/reference/control-reachability.md +166 -0
- package/plugins/lisa-devin/rules/reference/convergent-review.md +145 -0
- package/plugins/lisa-devin/rules/reference/credential-substrate-precedence.md +249 -0
- package/plugins/lisa-devin/rules/reference/dependency-decision-records.md +177 -0
- package/plugins/lisa-devin/rules/reference/dependency-internalization-kit.md +244 -0
- package/plugins/lisa-devin/rules/reference/dependency-trust-classes.md +291 -0
- package/plugins/lisa-devin/rules/reference/deployed-state-readback.md +142 -0
- package/plugins/lisa-devin/rules/reference/derived-branch-plan.md +214 -0
- package/plugins/lisa-devin/rules/reference/design-source-of-truth.md +260 -0
- package/plugins/lisa-devin/rules/reference/design-value-binding.md +311 -0
- package/plugins/lisa-devin/rules/reference/do-it-now.md +19 -0
- package/plugins/lisa-devin/rules/reference/documentation-source-paths.md +31 -0
- package/plugins/lisa-devin/rules/reference/empirical-inquiry.md +28 -0
- package/plugins/lisa-devin/rules/reference/factory-model.md +111 -0
- package/plugins/lisa-devin/rules/reference/falsifiable-checks.md +275 -0
- package/plugins/lisa-devin/rules/reference/history-audit.md +42 -0
- package/plugins/lisa-devin/rules/reference/integration-access-layer.md +89 -0
- package/plugins/lisa-devin/rules/reference/intent-routing.md +428 -0
- package/plugins/lisa-devin/rules/reference/leaf-only-lifecycle.md +227 -0
- package/plugins/lisa-devin/rules/reference/learnings-ladder.md +41 -0
- package/plugins/lisa-devin/rules/reference/local-ci-first.md +34 -0
- package/plugins/lisa-devin/rules/reference/measurement-integrity.md +119 -0
- package/plugins/lisa-devin/rules/reference/never-name-a-downstream-project.md +37 -0
- package/plugins/lisa-devin/rules/reference/not-blocked-just-waiting.md +41 -0
- package/plugins/lisa-devin/rules/reference/observability-audit.md +146 -0
- package/plugins/lisa-devin/rules/reference/operational-hazards.md +115 -0
- package/plugins/lisa-devin/rules/reference/prd-definition-of-ready.md +118 -0
- package/plugins/lisa-devin/rules/reference/prd-lifecycle-rollup.md +192 -0
- package/plugins/lisa-devin/rules/reference/pre-flight-autofill.md +250 -0
- package/plugins/lisa-devin/rules/reference/project-learnings.md +159 -0
- package/plugins/lisa-devin/rules/reference/promotion-contract.md +148 -0
- package/plugins/lisa-devin/rules/reference/readiness-rubric.md +242 -0
- package/plugins/lisa-devin/rules/reference/ready-role-filing.md +212 -0
- package/plugins/lisa-devin/rules/reference/rejection-detection.md +308 -0
- package/plugins/lisa-devin/rules/reference/repo-scope-split.md +119 -0
- package/plugins/lisa-devin/rules/reference/report-actionability.md +61 -0
- package/plugins/lisa-devin/rules/reference/reset-seed-coverage.md +286 -0
- package/plugins/lisa-devin/rules/reference/security-audit-handling.md +55 -0
- package/plugins/lisa-devin/rules/reference/session-status-updates.md +111 -0
- package/plugins/lisa-devin/rules/reference/settled-decisions.md +39 -0
- package/plugins/lisa-devin/rules/reference/stale-state-claims.md +88 -0
- package/plugins/lisa-devin/rules/reference/tool-access-gate.md +114 -0
- package/plugins/lisa-devin/rules/reference/tracked-work.md +49 -0
- package/plugins/lisa-devin/rules/reference/upstream-to-lisa.md +26 -0
- package/plugins/lisa-devin/rules/reference/usage-accounting.md +261 -0
- package/plugins/lisa-devin/rules/reference/verification.md +278 -0
- package/plugins/lisa-devin/rules/reference/wiki-knowledge-source.md +37 -0
- package/plugins/lisa-devin/rules/reference/withdrawn-rulings.md +148 -0
- package/plugins/lisa-devin/rules/reference/work-item-definition-of-ready.md +177 -0
- package/plugins/lisa-devin/rules/reference/work-item-trailer-definition.md +129 -0
- package/plugins/lisa-devin/scripts/automation-run-record.mjs +678 -0
- package/plugins/lisa-devin/scripts/automation-status-claude-adapter.mjs +804 -0
- package/plugins/lisa-devin/scripts/automation-status-codex-adapter.mjs +1081 -0
- package/plugins/lisa-devin/scripts/automation-status-contract-drift.mjs +392 -0
- package/plugins/lisa-devin/scripts/automation-status-expected-fleet.mjs +508 -0
- package/plugins/lisa-devin/scripts/automation-status-report.mjs +200 -0
- package/plugins/lisa-devin/scripts/automation-status-run-history.mjs +216 -0
- package/plugins/lisa-devin/scripts/automation-status-unrecorded-runs.mjs +127 -0
- package/plugins/lisa-devin/scripts/blocker-edge-resolution.mjs +150 -0
- package/plugins/lisa-devin/scripts/cross-pollinate.mjs +763 -0
- package/plugins/lisa-devin/scripts/design-bindings-probe.mjs +713 -0
- package/plugins/lisa-devin/scripts/design-intake-gate.mjs +470 -0
- package/plugins/lisa-devin/scripts/design-source-gate.mjs +610 -0
- package/plugins/lisa-devin/scripts/design-variable-ids.mjs +567 -0
- package/plugins/lisa-devin/scripts/doctor-report.mjs +635 -0
- package/plugins/lisa-devin/scripts/install-remote-agent-aws.mjs +443 -0
- package/plugins/lisa-devin/scripts/intake-blocker-reprobe.mjs +1065 -0
- package/plugins/lisa-devin/scripts/intake-prework-denominator.mjs +249 -0
- package/plugins/lisa-devin/scripts/lifecycle-label-trust.mjs +593 -0
- package/plugins/lisa-devin/scripts/linear-state-write-target.mjs +362 -0
- package/plugins/lisa-devin/scripts/plugin-sync-explain.mjs +654 -0
- package/plugins/lisa-devin/scripts/pr-arming-sweep.mjs +561 -0
- package/plugins/lisa-devin/scripts/project-ideation-idempotency-harness.mjs +338 -0
- package/plugins/lisa-devin/scripts/qa-signal-lifecycle.mjs +523 -0
- package/plugins/lisa-devin/scripts/queue-contract-resolution.mjs +583 -0
- package/plugins/lisa-devin/scripts/queue-health-classification.mjs +157 -0
- package/plugins/lisa-devin/scripts/queue-status-build-readers.mjs +561 -0
- package/plugins/lisa-devin/scripts/queue-status-prd-readers.mjs +452 -0
- package/plugins/lisa-devin/scripts/remote-agent-aws-setup.sh +677 -0
- package/plugins/lisa-devin/scripts/repo-scope-vocabulary-audit.mjs +458 -0
- package/plugins/lisa-devin/scripts/resolve-lifecycle-role.mjs +347 -0
- package/plugins/lisa-devin/scripts/rollup-blocker-classification.mjs +616 -0
- package/plugins/lisa-devin/scripts/scoping-label-audit.mjs +474 -0
- package/plugins/lisa-devin/skills/lisa-acceptance-criteria/SKILL.md +73 -0
- package/plugins/lisa-devin/skills/lisa-agent-design-best-practices/SKILL.md +242 -0
- package/plugins/lisa-devin/skills/lisa-agent-ready/SKILL.md +271 -0
- package/plugins/lisa-devin/skills/lisa-analyze-claude-remote/SKILL.md +434 -0
- package/plugins/lisa-devin/skills/lisa-atlassian-access/SKILL.md +469 -0
- package/plugins/lisa-devin/skills/lisa-atlassian-access/scripts/markdown-to-adf.mjs +236 -0
- package/plugins/lisa-devin/skills/lisa-attribute-failure/SKILL.md +142 -0
- package/plugins/lisa-devin/skills/lisa-automation-status/SKILL.md +149 -0
- package/plugins/lisa-devin/skills/lisa-bug-triage/SKILL.md +23 -0
- package/plugins/lisa-devin/skills/lisa-capability-drift/SKILL.md +71 -0
- package/plugins/lisa-devin/skills/lisa-codebase-research/SKILL.md +87 -0
- package/plugins/lisa-devin/skills/lisa-codify-verification/SKILL.md +213 -0
- package/plugins/lisa-devin/skills/lisa-confluence-prd-intake/SKILL.md +417 -0
- package/plugins/lisa-devin/skills/lisa-confluence-to-tracker/SKILL.md +469 -0
- package/plugins/lisa-devin/skills/lisa-confluence-write-prd/SKILL.md +111 -0
- package/plugins/lisa-devin/skills/lisa-cross-pollinate/SKILL.md +175 -0
- package/plugins/lisa-devin/skills/lisa-debrief/SKILL.md +96 -0
- package/plugins/lisa-devin/skills/lisa-debrief-apply/SKILL.md +106 -0
- package/plugins/lisa-devin/skills/lisa-delivery-effectiveness/SKILL.md +62 -0
- package/plugins/lisa-devin/skills/lisa-design-intake/SKILL.md +198 -0
- package/plugins/lisa-devin/skills/lisa-detect-tooling/SKILL.md +110 -0
- package/plugins/lisa-devin/skills/lisa-detect-tooling/scripts/commands.mjs +479 -0
- package/plugins/lisa-devin/skills/lisa-detect-tooling/scripts/detect-tooling.mjs +658 -0
- package/plugins/lisa-devin/skills/lisa-doctor/SKILL.md +743 -0
- package/plugins/lisa-devin/skills/lisa-drive-pr-to-merge/SKILL.md +1587 -0
- package/plugins/lisa-devin/skills/lisa-epic-triage/SKILL.md +28 -0
- package/plugins/lisa-devin/skills/lisa-evaluation-suite/SKILL.md +63 -0
- package/plugins/lisa-devin/skills/lisa-exploratory-qa/SKILL.md +185 -0
- package/plugins/lisa-devin/skills/lisa-fix-linter-error/SKILL.md +45 -0
- package/plugins/lisa-devin/skills/lisa-generate-claude-remote-build-script/SKILL.md +235 -0
- package/plugins/lisa-devin/skills/lisa-git-commit/SKILL.md +53 -0
- package/plugins/lisa-devin/skills/lisa-git-prune/SKILL.md +35 -0
- package/plugins/lisa-devin/skills/lisa-git-submit-pr/SKILL.md +170 -0
- package/plugins/lisa-devin/skills/lisa-github-add-journey/SKILL.md +118 -0
- package/plugins/lisa-devin/skills/lisa-github-build-intake/SKILL.md +745 -0
- package/plugins/lisa-devin/skills/lisa-github-claim/SKILL.md +27 -0
- package/plugins/lisa-devin/skills/lisa-github-create/SKILL.md +105 -0
- package/plugins/lisa-devin/skills/lisa-github-evidence/SKILL.md +120 -0
- package/plugins/lisa-devin/skills/lisa-github-journey/SKILL.md +134 -0
- package/plugins/lisa-devin/skills/lisa-github-prd-intake/SKILL.md +424 -0
- package/plugins/lisa-devin/skills/lisa-github-project-v2/SKILL.md +227 -0
- package/plugins/lisa-devin/skills/lisa-github-read-issue/SKILL.md +305 -0
- package/plugins/lisa-devin/skills/lisa-github-sync/SKILL.md +201 -0
- package/plugins/lisa-devin/skills/lisa-github-to-tracker/SKILL.md +456 -0
- package/plugins/lisa-devin/skills/lisa-github-validate-issue/SKILL.md +598 -0
- package/plugins/lisa-devin/skills/lisa-github-verify/SKILL.md +60 -0
- package/plugins/lisa-devin/skills/lisa-github-write-issue/SKILL.md +531 -0
- package/plugins/lisa-devin/skills/lisa-github-write-prd/SKILL.md +156 -0
- package/plugins/lisa-devin/skills/lisa-health/SKILL.md +142 -0
- package/plugins/lisa-devin/skills/lisa-health-drift-cron/SKILL.md +80 -0
- package/plugins/lisa-devin/skills/lisa-implement/SKILL.md +372 -0
- package/plugins/lisa-devin/skills/lisa-improve-code-complexity/SKILL.md +44 -0
- package/plugins/lisa-devin/skills/lisa-improve-harness/SKILL.md +487 -0
- package/plugins/lisa-devin/skills/lisa-improve-max-lines/SKILL.md +45 -0
- package/plugins/lisa-devin/skills/lisa-improve-max-lines-per-function/SKILL.md +46 -0
- package/plugins/lisa-devin/skills/lisa-improve-test-coverage/SKILL.md +47 -0
- package/plugins/lisa-devin/skills/lisa-improve-tests/SKILL.md +50 -0
- package/plugins/lisa-devin/skills/lisa-intake/SKILL.md +208 -0
- package/plugins/lisa-devin/skills/lisa-intake-explain/SKILL.md +279 -0
- package/plugins/lisa-devin/skills/lisa-jam-access/SKILL.md +128 -0
- package/plugins/lisa-devin/skills/lisa-jira-add-journey/SKILL.md +139 -0
- package/plugins/lisa-devin/skills/lisa-jira-build-intake/SKILL.md +556 -0
- package/plugins/lisa-devin/skills/lisa-jira-claim/SKILL.md +27 -0
- package/plugins/lisa-devin/skills/lisa-jira-create/SKILL.md +157 -0
- package/plugins/lisa-devin/skills/lisa-jira-evidence/SKILL.md +106 -0
- package/plugins/lisa-devin/skills/lisa-jira-evidence/scripts/post-evidence.sh +262 -0
- package/plugins/lisa-devin/skills/lisa-jira-journey/SKILL.md +168 -0
- package/plugins/lisa-devin/skills/lisa-jira-journey/scripts/generate-templates.py +239 -0
- package/plugins/lisa-devin/skills/lisa-jira-journey/scripts/parse-plan.py +570 -0
- package/plugins/lisa-devin/skills/lisa-jira-read-ticket/SKILL.md +199 -0
- package/plugins/lisa-devin/skills/lisa-jira-read-ticket/scripts/download-attachment.sh +211 -0
- package/plugins/lisa-devin/skills/lisa-jira-sync/SKILL.md +117 -0
- package/plugins/lisa-devin/skills/lisa-jira-validate-ticket/SKILL.md +525 -0
- package/plugins/lisa-devin/skills/lisa-jira-verify/SKILL.md +61 -0
- package/plugins/lisa-devin/skills/lisa-jira-write-ticket/SKILL.md +440 -0
- package/plugins/lisa-devin/skills/lisa-jsdoc-best-practices/SKILL.md +491 -0
- package/plugins/lisa-devin/skills/lisa-kane-browser/SKILL.md +80 -0
- package/plugins/lisa-devin/skills/lisa-learnings-audit/SKILL.md +490 -0
- package/plugins/lisa-devin/skills/lisa-linear-access/SKILL.md +483 -0
- package/plugins/lisa-devin/skills/lisa-linear-add-journey/SKILL.md +109 -0
- package/plugins/lisa-devin/skills/lisa-linear-build-intake/SKILL.md +548 -0
- package/plugins/lisa-devin/skills/lisa-linear-claim/SKILL.md +28 -0
- package/plugins/lisa-devin/skills/lisa-linear-create/SKILL.md +150 -0
- package/plugins/lisa-devin/skills/lisa-linear-evidence/SKILL.md +124 -0
- package/plugins/lisa-devin/skills/lisa-linear-journey/SKILL.md +147 -0
- package/plugins/lisa-devin/skills/lisa-linear-prd-intake/SKILL.md +411 -0
- package/plugins/lisa-devin/skills/lisa-linear-read-issue/SKILL.md +201 -0
- package/plugins/lisa-devin/skills/lisa-linear-sync/SKILL.md +164 -0
- package/plugins/lisa-devin/skills/lisa-linear-to-tracker/SKILL.md +454 -0
- package/plugins/lisa-devin/skills/lisa-linear-validate-issue/SKILL.md +504 -0
- package/plugins/lisa-devin/skills/lisa-linear-verify/SKILL.md +65 -0
- package/plugins/lisa-devin/skills/lisa-linear-write-issue/SKILL.md +448 -0
- package/plugins/lisa-devin/skills/lisa-linear-write-prd/SKILL.md +98 -0
- package/plugins/lisa-devin/skills/lisa-monitor/SKILL.md +224 -0
- package/plugins/lisa-devin/skills/lisa-nightly-add-test-coverage/SKILL.md +40 -0
- package/plugins/lisa-devin/skills/lisa-nightly-improve-tests/SKILL.md +29 -0
- package/plugins/lisa-devin/skills/lisa-nightly-lower-code-complexity/SKILL.md +42 -0
- package/plugins/lisa-devin/skills/lisa-notion-access/SKILL.md +301 -0
- package/plugins/lisa-devin/skills/lisa-notion-prd-intake/SKILL.md +360 -0
- package/plugins/lisa-devin/skills/lisa-notion-to-tracker/SKILL.md +467 -0
- package/plugins/lisa-devin/skills/lisa-notion-write-prd/SKILL.md +111 -0
- package/plugins/lisa-devin/skills/lisa-parity-code-review/SKILL.md +83 -0
- package/plugins/lisa-devin/skills/lisa-parity-code-simplifier/SKILL.md +76 -0
- package/plugins/lisa-devin/skills/lisa-parity-coderabbit/SKILL.md +87 -0
- package/plugins/lisa-devin/skills/lisa-parity-sentry-sdk-setup/SKILL.md +375 -0
- package/plugins/lisa-devin/skills/lisa-parity-sentry-seer/SKILL.md +168 -0
- package/plugins/lisa-devin/skills/lisa-parity-skill-creator/SKILL.md +155 -0
- package/plugins/lisa-devin/skills/lisa-performance-review/SKILL.md +94 -0
- package/plugins/lisa-devin/skills/lisa-persist-learning/SKILL.md +247 -0
- package/plugins/lisa-devin/skills/lisa-plan/SKILL.md +64 -0
- package/plugins/lisa-devin/skills/lisa-plugin-sync-explain/SKILL.md +53 -0
- package/plugins/lisa-devin/skills/lisa-posthog-access/SKILL.md +140 -0
- package/plugins/lisa-devin/skills/lisa-prd-backlink/SKILL.md +274 -0
- package/plugins/lisa-devin/skills/lisa-prd-source-write/SKILL.md +104 -0
- package/plugins/lisa-devin/skills/lisa-prd-ticket-coverage/SKILL.md +187 -0
- package/plugins/lisa-devin/skills/lisa-product-walkthrough/SKILL.md +106 -0
- package/plugins/lisa-devin/skills/lisa-project-ideation/SKILL.md +417 -0
- package/plugins/lisa-devin/skills/lisa-project-ideation/examples/evidence-card-format.md +21 -0
- package/plugins/lisa-devin/skills/lisa-project-ideation/examples/host-project-only.md +22 -0
- package/plugins/lisa-devin/skills/lisa-project-ideation/examples/idempotency-verification-harness.md +57 -0
- package/plugins/lisa-devin/skills/lisa-project-ideation/examples/public-external-inspiration.md +22 -0
- package/plugins/lisa-devin/skills/lisa-project-ideation/examples/unavailable-data-rejection.md +22 -0
- package/plugins/lisa-devin/skills/lisa-pull-request-review/SKILL.md +132 -0
- package/plugins/lisa-devin/skills/lisa-quality-review/SKILL.md +63 -0
- package/plugins/lisa-devin/skills/lisa-queue-status/SKILL.md +215 -0
- package/plugins/lisa-devin/skills/lisa-remote-dispatch/SKILL.md +109 -0
- package/plugins/lisa-devin/skills/lisa-remote-dispatch/scripts/dispatch.mjs +535 -0
- package/plugins/lisa-devin/skills/lisa-repair-intake/SKILL.md +1621 -0
- package/plugins/lisa-devin/skills/lisa-reproduce-bug/SKILL.md +75 -0
- package/plugins/lisa-devin/skills/lisa-research/SKILL.md +92 -0
- package/plugins/lisa-devin/skills/lisa-review-implementation/SKILL.md +209 -0
- package/plugins/lisa-devin/skills/lisa-review-local/SKILL.md +141 -0
- package/plugins/lisa-devin/skills/lisa-rework-triage/SKILL.md +206 -0
- package/plugins/lisa-devin/skills/lisa-root-cause-analysis/SKILL.md +135 -0
- package/plugins/lisa-devin/skills/lisa-secrets-access/SKILL.md +430 -0
- package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/aws-bootstrap.mjs +433 -0
- package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/bootstrap-store.mjs +288 -0
- package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/doctor-secrets.mjs +273 -0
- package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/envfile.mjs +80 -0
- package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/inspect-vault.mjs +142 -0
- package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/materialize-secrets.mjs +1085 -0
- package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/note-format.mjs +179 -0
- package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/owner.mjs +96 -0
- package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/preflight-secrets.mjs +342 -0
- package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/prompt-secret.mjs +79 -0
- package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/providers.mjs +805 -0
- package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/publish-aws-bootstrap.mjs +680 -0
- package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/read-secret-note.mjs +105 -0
- package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/resolve-expo-token.mjs +90 -0
- package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/resolve-secret.mjs +285 -0
- package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/rotate-secret.mjs +297 -0
- package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/routing-floor.mjs +153 -0
- package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/surfaces.mjs +480 -0
- package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/sync-secret-to-ci.mjs +510 -0
- package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/tools-from-notes.mjs +63 -0
- package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/validate-config.mjs +550 -0
- package/plugins/lisa-devin/skills/lisa-security-review/SKILL.md +124 -0
- package/plugins/lisa-devin/skills/lisa-security-zap-scan/SKILL.md +53 -0
- package/plugins/lisa-devin/skills/lisa-sentry-access/SKILL.md +140 -0
- package/plugins/lisa-devin/skills/lisa-setup-atlassian/SKILL.md +407 -0
- package/plugins/lisa-devin/skills/lisa-setup-automations/SKILL.md +430 -0
- package/plugins/lisa-devin/skills/lisa-setup-automations/scripts/generate-workflow.mjs +288 -0
- package/plugins/lisa-devin/skills/lisa-setup-confluence/SKILL.md +254 -0
- package/plugins/lisa-devin/skills/lisa-setup-github/SKILL.md +319 -0
- package/plugins/lisa-devin/skills/lisa-setup-github-repo/SKILL.md +128 -0
- package/plugins/lisa-devin/skills/lisa-setup-jira/SKILL.md +198 -0
- package/plugins/lisa-devin/skills/lisa-setup-kane/SKILL.md +96 -0
- package/plugins/lisa-devin/skills/lisa-setup-linear/SKILL.md +375 -0
- package/plugins/lisa-devin/skills/lisa-setup-local-env/SKILL.md +95 -0
- package/plugins/lisa-devin/skills/lisa-setup-local-env/scripts/local-env.mjs +196 -0
- package/plugins/lisa-devin/skills/lisa-setup-notion/SKILL.md +376 -0
- package/plugins/lisa-devin/skills/lisa-setup-remote-aws/SKILL.md +149 -0
- package/plugins/lisa-devin/skills/lisa-setup-remote-env/SKILL.md +382 -0
- package/plugins/lisa-devin/skills/lisa-setup-remote-env/assets/materialized-env-authority.mjs +262 -0
- package/plugins/lisa-devin/skills/lisa-setup-remote-env/assets/session-start.sh +87 -0
- package/plugins/lisa-devin/skills/lisa-setup-remote-env/assets/setup.sh +216 -0
- package/plugins/lisa-devin/skills/lisa-setup-remote-env/scripts/environment.mjs +227 -0
- package/plugins/lisa-devin/skills/lisa-setup-remote-env/scripts/preflight-tools.mjs +378 -0
- package/plugins/lisa-devin/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +1632 -0
- package/plugins/lisa-devin/skills/lisa-setup-remote-env/scripts/tool-floor.mjs +94 -0
- package/plugins/lisa-devin/skills/lisa-setup-remote-env/scripts/toolchain.mjs +448 -0
- package/plugins/lisa-devin/skills/lisa-setup-remote-env/scripts/verify-remote-env.mjs +250 -0
- package/plugins/lisa-devin/skills/lisa-setup-sonar/SKILL.md +153 -0
- package/plugins/lisa-devin/skills/lisa-setup-workstation/SKILL.md +143 -0
- package/plugins/lisa-devin/skills/lisa-setup-workstation/scripts/bounded-child.mjs +168 -0
- package/plugins/lisa-devin/skills/lisa-setup-workstation/scripts/catalogue.mjs +293 -0
- package/plugins/lisa-devin/skills/lisa-setup-workstation/scripts/cli.mjs +333 -0
- package/plugins/lisa-devin/skills/lisa-setup-workstation/scripts/workstation.mjs +511 -0
- package/plugins/lisa-devin/skills/lisa-sonarcloud-access/SKILL.md +202 -0
- package/plugins/lisa-devin/skills/lisa-spec-conformance/SKILL.md +205 -0
- package/plugins/lisa-devin/skills/lisa-starter-sync/SKILL.md +35 -0
- package/plugins/lisa-devin/skills/lisa-sync-down/SKILL.md +209 -0
- package/plugins/lisa-devin/skills/lisa-task-decomposition/SKILL.md +195 -0
- package/plugins/lisa-devin/skills/lisa-task-triage/SKILL.md +23 -0
- package/plugins/lisa-devin/skills/lisa-tdd-implementation/SKILL.md +91 -0
- package/plugins/lisa-devin/skills/lisa-tear-down-automations/SKILL.md +85 -0
- package/plugins/lisa-devin/skills/lisa-test-strategy/SKILL.md +66 -0
- package/plugins/lisa-devin/skills/lisa-ticket-triage/SKILL.md +214 -0
- package/plugins/lisa-devin/skills/lisa-track/SKILL.md +129 -0
- package/plugins/lisa-devin/skills/lisa-tracker-add-journey/SKILL.md +28 -0
- package/plugins/lisa-devin/skills/lisa-tracker-build-intake/SKILL.md +134 -0
- package/plugins/lisa-devin/skills/lisa-tracker-claim/SKILL.md +35 -0
- package/plugins/lisa-devin/skills/lisa-tracker-create/SKILL.md +28 -0
- package/plugins/lisa-devin/skills/lisa-tracker-evidence/SKILL.md +63 -0
- package/plugins/lisa-devin/skills/lisa-tracker-journey/SKILL.md +27 -0
- package/plugins/lisa-devin/skills/lisa-tracker-read/SKILL.md +28 -0
- package/plugins/lisa-devin/skills/lisa-tracker-source-artifacts/SKILL.md +111 -0
- package/plugins/lisa-devin/skills/lisa-tracker-sync/SKILL.md +150 -0
- package/plugins/lisa-devin/skills/lisa-tracker-validate/SKILL.md +37 -0
- package/plugins/lisa-devin/skills/lisa-tracker-verify/SKILL.md +29 -0
- package/plugins/lisa-devin/skills/lisa-tracker-write/SKILL.md +55 -0
- package/plugins/lisa-devin/skills/lisa-usage-accounting/SKILL.md +205 -0
- package/plugins/lisa-devin/skills/lisa-usage-accounting/references/effectiveness.md +63 -0
- package/plugins/lisa-devin/skills/lisa-use-the-product/SKILL.md +86 -0
- package/plugins/lisa-devin/skills/lisa-validate-tracker-mapping/SKILL.md +467 -0
- package/plugins/lisa-devin/skills/lisa-verification-lifecycle/SKILL.md +384 -0
- package/plugins/lisa-devin/skills/lisa-verify/SKILL.md +55 -0
- package/plugins/lisa-devin/skills/lisa-verify-prd/SKILL.md +394 -0
- package/plugins/lisa-devin/skills/lisa-verify-workflow-change/SKILL.md +154 -0
- package/plugins/lisa-devin/skills/lisa-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-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-devin/.claude-plugin/plugin.json +11 -0
- package/plugins/lisa-expo-devin/.devin-plugin/plugin.json +8 -0
- package/plugins/lisa-expo-devin/.mcp.json +8 -0
- package/plugins/lisa-expo-devin/THIRD-PARTY-NOTICES.md +84 -0
- package/plugins/lisa-expo-devin/agents/ops-specialist.md +124 -0
- package/plugins/lisa-expo-devin/hooks/devin-tool-name-shim.sh +30 -0
- package/plugins/lisa-expo-devin/hooks/register-maestro-mcp.sh +84 -0
- package/plugins/lisa-expo-devin/hooks.json +14 -0
- package/plugins/lisa-expo-devin/skills/add-app-clip/SKILL.md +280 -0
- package/plugins/lisa-expo-devin/skills/add-app-clip/references/native-module.md +96 -0
- package/plugins/lisa-expo-devin/skills/apollo-client/SKILL.md +238 -0
- package/plugins/lisa-expo-devin/skills/apollo-client/references/mutation-patterns.md +360 -0
- package/plugins/lisa-expo-devin/skills/atomic-design-gluestack/SKILL.md +369 -0
- package/plugins/lisa-expo-devin/skills/atomic-design-gluestack/references/atomic-levels.md +417 -0
- package/plugins/lisa-expo-devin/skills/atomic-design-gluestack/references/folder-structure.md +257 -0
- package/plugins/lisa-expo-devin/skills/atomic-design-gluestack/references/gluestack-mapping.md +233 -0
- package/plugins/lisa-expo-devin/skills/atomic-design-gluestack/scripts/test_validate_atomic_structure.py +240 -0
- package/plugins/lisa-expo-devin/skills/atomic-design-gluestack/scripts/validate_atomic_structure.py +438 -0
- package/plugins/lisa-expo-devin/skills/building-native-ui/SKILL.md +321 -0
- package/plugins/lisa-expo-devin/skills/building-native-ui/references/animations.md +220 -0
- package/plugins/lisa-expo-devin/skills/building-native-ui/references/controls.md +272 -0
- package/plugins/lisa-expo-devin/skills/building-native-ui/references/form-sheet.md +253 -0
- package/plugins/lisa-expo-devin/skills/building-native-ui/references/gradients.md +106 -0
- package/plugins/lisa-expo-devin/skills/building-native-ui/references/icons.md +213 -0
- package/plugins/lisa-expo-devin/skills/building-native-ui/references/media.md +198 -0
- package/plugins/lisa-expo-devin/skills/building-native-ui/references/route-structure.md +229 -0
- package/plugins/lisa-expo-devin/skills/building-native-ui/references/search.md +248 -0
- package/plugins/lisa-expo-devin/skills/building-native-ui/references/storage.md +121 -0
- package/plugins/lisa-expo-devin/skills/building-native-ui/references/tabs.md +433 -0
- package/plugins/lisa-expo-devin/skills/building-native-ui/references/toolbar-and-headers.md +284 -0
- package/plugins/lisa-expo-devin/skills/building-native-ui/references/visual-effects.md +197 -0
- package/plugins/lisa-expo-devin/skills/building-native-ui/references/webgpu-three.md +605 -0
- package/plugins/lisa-expo-devin/skills/building-native-ui/references/zoom-transitions.md +158 -0
- package/plugins/lisa-expo-devin/skills/container-view-pattern/SKILL.md +355 -0
- package/plugins/lisa-expo-devin/skills/container-view-pattern/references/examples.md +749 -0
- package/plugins/lisa-expo-devin/skills/container-view-pattern/references/patterns.md +318 -0
- package/plugins/lisa-expo-devin/skills/container-view-pattern/scripts/create_component.py +200 -0
- package/plugins/lisa-expo-devin/skills/container-view-pattern/scripts/validate_component.py +332 -0
- package/plugins/lisa-expo-devin/skills/cross-platform-compatibility/SKILL.md +268 -0
- package/plugins/lisa-expo-devin/skills/cross-platform-compatibility/references/common-issues.md +619 -0
- package/plugins/lisa-expo-devin/skills/cross-platform-compatibility/references/file-extensions.md +340 -0
- package/plugins/lisa-expo-devin/skills/cross-platform-compatibility/references/platform-api.md +276 -0
- package/plugins/lisa-expo-devin/skills/cross-platform-compatibility/scripts/validate_cross_platform.py +416 -0
- package/plugins/lisa-expo-devin/skills/directory-structure/SKILL.md +214 -0
- package/plugins/lisa-expo-devin/skills/directory-structure/scripts/validate_structure.py +454 -0
- package/plugins/lisa-expo-devin/skills/e2e-coverage-gaps/SKILL.md +117 -0
- package/plugins/lisa-expo-devin/skills/eas-update-insights/SKILL.md +228 -0
- package/plugins/lisa-expo-devin/skills/eas-update-insights/references/channel-insights-schema.md +47 -0
- package/plugins/lisa-expo-devin/skills/eas-update-insights/references/update-insights-schema.md +69 -0
- package/plugins/lisa-expo-devin/skills/expo-api-routes/SKILL.md +369 -0
- package/plugins/lisa-expo-devin/skills/expo-brownfield/SKILL.md +54 -0
- package/plugins/lisa-expo-devin/skills/expo-brownfield/references/brownfield-integrated.md +526 -0
- package/plugins/lisa-expo-devin/skills/expo-brownfield/references/brownfield-isolated.md +402 -0
- package/plugins/lisa-expo-devin/skills/expo-brownfield/references/comparison.md +63 -0
- package/plugins/lisa-expo-devin/skills/expo-brownfield/references/troubleshooting.md +88 -0
- package/plugins/lisa-expo-devin/skills/expo-cicd-workflows/SKILL.md +92 -0
- package/plugins/lisa-expo-devin/skills/expo-cicd-workflows/scripts/fetch.js +113 -0
- package/plugins/lisa-expo-devin/skills/expo-cicd-workflows/scripts/package.json +11 -0
- package/plugins/lisa-expo-devin/skills/expo-cicd-workflows/scripts/validate.js +85 -0
- package/plugins/lisa-expo-devin/skills/expo-deployment/SKILL.md +193 -0
- package/plugins/lisa-expo-devin/skills/expo-deployment/references/app-store-metadata.md +479 -0
- package/plugins/lisa-expo-devin/skills/expo-deployment/references/ios-app-store.md +355 -0
- package/plugins/lisa-expo-devin/skills/expo-deployment/references/play-store.md +264 -0
- package/plugins/lisa-expo-devin/skills/expo-deployment/references/testflight.md +58 -0
- package/plugins/lisa-expo-devin/skills/expo-deployment/references/workflows.md +200 -0
- package/plugins/lisa-expo-devin/skills/expo-dev-client/SKILL.md +164 -0
- package/plugins/lisa-expo-devin/skills/expo-env-config/SKILL.md +309 -0
- package/plugins/lisa-expo-devin/skills/expo-env-config/references/validation-patterns.md +417 -0
- package/plugins/lisa-expo-devin/skills/expo-module/SKILL.md +141 -0
- package/plugins/lisa-expo-devin/skills/expo-module/references/config-plugin.md +90 -0
- package/plugins/lisa-expo-devin/skills/expo-module/references/create-expo-module.md +206 -0
- package/plugins/lisa-expo-devin/skills/expo-module/references/lifecycle.md +127 -0
- package/plugins/lisa-expo-devin/skills/expo-module/references/module-config.md +48 -0
- package/plugins/lisa-expo-devin/skills/expo-module/references/native-module.md +286 -0
- package/plugins/lisa-expo-devin/skills/expo-module/references/native-view.md +171 -0
- package/plugins/lisa-expo-devin/skills/expo-router-best-practices/SKILL.md +432 -0
- package/plugins/lisa-expo-devin/skills/expo-router-best-practices/references/official-docs.md +290 -0
- package/plugins/lisa-expo-devin/skills/expo-router-best-practices/references/static-export-verification.md +54 -0
- package/plugins/lisa-expo-devin/skills/expo-router-best-practices/scripts/generate-route.py +171 -0
- package/plugins/lisa-expo-devin/skills/expo-tailwind-setup/SKILL.md +487 -0
- package/plugins/lisa-expo-devin/skills/expo-ui-jetpack-compose/SKILL.md +40 -0
- package/plugins/lisa-expo-devin/skills/expo-ui-swift-ui/SKILL.md +39 -0
- package/plugins/lisa-expo-devin/skills/gluestack-nativewind/SKILL.md +419 -0
- package/plugins/lisa-expo-devin/skills/gluestack-nativewind/references/color-tokens.md +343 -0
- package/plugins/lisa-expo-devin/skills/gluestack-nativewind/references/component-mapping.md +307 -0
- package/plugins/lisa-expo-devin/skills/gluestack-nativewind/references/spacing-scale.md +300 -0
- package/plugins/lisa-expo-devin/skills/gluestack-nativewind/scripts/test_validate_styling.py +240 -0
- package/plugins/lisa-expo-devin/skills/gluestack-nativewind/scripts/validate_styling.py +424 -0
- package/plugins/lisa-expo-devin/skills/jira-add-journey/SKILL.md +140 -0
- package/plugins/lisa-expo-devin/skills/jira-create/SKILL.md +161 -0
- package/plugins/lisa-expo-devin/skills/jira-evidence/SKILL.md +84 -0
- package/plugins/lisa-expo-devin/skills/jira-evidence/scripts/post-evidence.sh +262 -0
- package/plugins/lisa-expo-devin/skills/jira-journey/SKILL.md +196 -0
- package/plugins/lisa-expo-devin/skills/jira-journey/scripts/generate-templates.py +281 -0
- package/plugins/lisa-expo-devin/skills/jira-journey/scripts/parse-plan.py +400 -0
- package/plugins/lisa-expo-devin/skills/jira-verify/SKILL.md +27 -0
- package/plugins/lisa-expo-devin/skills/local-state/SKILL.md +362 -0
- package/plugins/lisa-expo-devin/skills/local-state/references/async-storage.md +505 -0
- package/plugins/lisa-expo-devin/skills/local-state/references/persistence-patterns.md +711 -0
- package/plugins/lisa-expo-devin/skills/local-state/references/reactive-variables.md +446 -0
- package/plugins/lisa-expo-devin/skills/maestro-mcp-setup/SKILL.md +144 -0
- package/plugins/lisa-expo-devin/skills/native-data-fetching/SKILL.md +507 -0
- package/plugins/lisa-expo-devin/skills/native-data-fetching/references/expo-router-loaders.md +344 -0
- package/plugins/lisa-expo-devin/skills/ops-browser-uat/SKILL.md +124 -0
- package/plugins/lisa-expo-devin/skills/ops-check-logs/SKILL.md +217 -0
- package/plugins/lisa-expo-devin/skills/ops-db-ops/SKILL.md +214 -0
- package/plugins/lisa-expo-devin/skills/ops-deploy/SKILL.md +123 -0
- package/plugins/lisa-expo-devin/skills/ops-monitor-errors/SKILL.md +99 -0
- package/plugins/lisa-expo-devin/skills/ops-performance/SKILL.md +165 -0
- package/plugins/lisa-expo-devin/skills/ops-run-local/SKILL.md +169 -0
- package/plugins/lisa-expo-devin/skills/ops-verify-health/SKILL.md +101 -0
- package/plugins/lisa-expo-devin/skills/owasp-zap/SKILL.md +61 -0
- package/plugins/lisa-expo-devin/skills/play-store-access/SKILL.md +226 -0
- package/plugins/lisa-expo-devin/skills/playwright-ci-debugging/SKILL.md +140 -0
- package/plugins/lisa-expo-devin/skills/playwright-selectors/SKILL.md +496 -0
- package/plugins/lisa-expo-devin/skills/reduce-complexity/SKILL.md +251 -0
- package/plugins/lisa-expo-devin/skills/reduce-complexity/references/extraction-strategies.md +456 -0
- package/plugins/lisa-expo-devin/skills/reduce-complexity/references/refactoring-patterns.md +557 -0
- package/plugins/lisa-expo-devin/skills/testing-library/SKILL.md +314 -0
- package/plugins/lisa-expo-devin/skills/testing-library/references/async-patterns.md +420 -0
- package/plugins/lisa-expo-devin/skills/testing-library/references/expo-router-testing.md +556 -0
- package/plugins/lisa-expo-devin/skills/testing-library/references/mocking-patterns.md +612 -0
- package/plugins/lisa-expo-devin/skills/testing-library/references/query-priority.md +291 -0
- package/plugins/lisa-expo-devin/skills/upgrading-expo/SKILL.md +134 -0
- package/plugins/lisa-expo-devin/skills/upgrading-expo/references/expo-av-to-audio.md +132 -0
- package/plugins/lisa-expo-devin/skills/upgrading-expo/references/expo-av-to-video.md +160 -0
- package/plugins/lisa-expo-devin/skills/upgrading-expo/references/native-tabs.md +124 -0
- package/plugins/lisa-expo-devin/skills/upgrading-expo/references/new-architecture.md +79 -0
- package/plugins/lisa-expo-devin/skills/upgrading-expo/references/react-19.md +79 -0
- package/plugins/lisa-expo-devin/skills/upgrading-expo/references/react-compiler.md +59 -0
- package/plugins/lisa-expo-devin/skills/upgrading-expo/references/react-navigation-to-expo-router.md +61 -0
- package/plugins/lisa-expo-devin/skills/use-dom/SKILL.md +417 -0
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-devin/.claude-plugin/plugin.json +11 -0
- package/plugins/lisa-harper-fabric-devin/.devin-plugin/plugin.json +8 -0
- package/plugins/lisa-harper-fabric-devin/generated-artifact-globs.txt +5 -0
- package/plugins/lisa-harper-fabric-devin/hooks/block-generated-artifact-edits.sh +141 -0
- package/plugins/lisa-harper-fabric-devin/hooks/devin-tool-name-shim.sh +30 -0
- package/plugins/lisa-harper-fabric-devin/hooks/enforce-config-extensions.mjs +196 -0
- package/plugins/lisa-harper-fabric-devin/hooks/enforce-config-extensions.sh +46 -0
- package/plugins/lisa-harper-fabric-devin/hooks/inject-rules.sh +27 -0
- package/plugins/lisa-harper-fabric-devin/hooks.json +36 -0
- package/plugins/lisa-harper-fabric-devin/rules/eager/harper-fabric.md +31 -0
- package/plugins/lisa-harper-fabric-devin/rules/reference/harper-fabric.md +52 -0
- package/plugins/lisa-harper-fabric-devin/skills/e2e-coverage-gaps/SKILL.md +117 -0
- package/plugins/lisa-harper-fabric-devin/skills/harper-auth/SKILL.md +368 -0
- package/plugins/lisa-harper-fabric-devin/skills/harper-build-and-deploy/SKILL.md +198 -0
- package/plugins/lisa-harper-fabric-devin/skills/harper-caching/SKILL.md +265 -0
- package/plugins/lisa-harper-fabric-devin/skills/harper-component-model/SKILL.md +87 -0
- package/plugins/lisa-harper-fabric-devin/skills/harper-config-yaml/SKILL.md +283 -0
- package/plugins/lisa-harper-fabric-devin/skills/harper-operations/SKILL.md +239 -0
- package/plugins/lisa-harper-fabric-devin/skills/harper-realtime/SKILL.md +187 -0
- package/plugins/lisa-harper-fabric-devin/skills/harper-resources/SKILL.md +142 -0
- package/plugins/lisa-harper-fabric-devin/skills/harper-rest-queries/SKILL.md +403 -0
- package/plugins/lisa-harper-fabric-devin/skills/harper-schema-graphql/SKILL.md +123 -0
- package/plugins/lisa-harper-fabric-devin/skills/harper-testing/SKILL.md +254 -0
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/plugin.json +1 -1
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-devin/.claude-plugin/plugin.json +11 -0
- package/plugins/lisa-nestjs-devin/.devin-plugin/plugin.json +8 -0
- package/plugins/lisa-nestjs-devin/hooks/block-migration-edits.sh +125 -0
- package/plugins/lisa-nestjs-devin/hooks/devin-tool-name-shim.sh +30 -0
- package/plugins/lisa-nestjs-devin/hooks/lisa-edit-gate.sh +152 -0
- package/plugins/lisa-nestjs-devin/hooks.json +15 -0
- package/plugins/lisa-nestjs-devin/skills/nestjs-graphql/SKILL.md +176 -0
- package/plugins/lisa-nestjs-devin/skills/nestjs-graphql/references/advanced-features.md +527 -0
- package/plugins/lisa-nestjs-devin/skills/nestjs-graphql/references/project-patterns.md +531 -0
- package/plugins/lisa-nestjs-devin/skills/nestjs-graphql/references/quick-start.md +257 -0
- package/plugins/lisa-nestjs-devin/skills/nestjs-graphql/references/resolvers-mutations.md +413 -0
- package/plugins/lisa-nestjs-devin/skills/nestjs-graphql/references/types-scalars.md +513 -0
- package/plugins/lisa-nestjs-devin/skills/nestjs-rules/SKILL.md +560 -0
- package/plugins/lisa-nestjs-devin/skills/typeorm-patterns/SKILL.md +275 -0
- package/plugins/lisa-nestjs-devin/skills/typeorm-patterns/references/configuration-patterns.md +487 -0
- package/plugins/lisa-nestjs-devin/skills/typeorm-patterns/references/entity-patterns.md +450 -0
- package/plugins/lisa-nestjs-devin/skills/typeorm-patterns/references/observability-patterns.md +536 -0
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-agy/plugin.json +1 -1
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-devin/.claude-plugin/plugin.json +8 -0
- package/plugins/lisa-openclaw-devin/.devin-plugin/plugin.json +8 -0
- package/plugins/lisa-openclaw-devin/skills/lisa-openclaw-connect-repo-topic/SKILL.md +163 -0
- package/plugins/lisa-openclaw-devin/skills/lisa-openclaw-connect-repo-topic/references/repo-topic-config.md +185 -0
- package/plugins/lisa-openclaw-devin/skills/lisa-openclaw-connect-staff/SKILL.md +175 -0
- package/plugins/lisa-openclaw-devin/skills/lisa-openclaw-connect-staff/references/platform-routing.md +123 -0
- package/plugins/lisa-openclaw-devin/skills/lisa-openclaw-connect-staff/references/prompts.md +78 -0
- package/plugins/lisa-openclaw-devin/skills/lisa-openclaw-setup/SKILL.md +141 -0
- package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-agy/plugin.json +1 -1
- package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-devin/.claude-plugin/plugin.json +11 -0
- package/plugins/lisa-phaser-devin/.devin-plugin/plugin.json +8 -0
- package/plugins/lisa-phaser-devin/agents/accessibility-advocate.md +55 -0
- package/plugins/lisa-phaser-devin/agents/art-director.md +90 -0
- package/plugins/lisa-phaser-devin/agents/audio-director.md +65 -0
- package/plugins/lisa-phaser-devin/agents/combat-designer.md +61 -0
- package/plugins/lisa-phaser-devin/agents/economy-designer.md +59 -0
- package/plugins/lisa-phaser-devin/agents/game-designer.md +62 -0
- package/plugins/lisa-phaser-devin/agents/game-feel-specialist.md +56 -0
- package/plugins/lisa-phaser-devin/agents/level-designer.md +59 -0
- package/plugins/lisa-phaser-devin/agents/localization-manager.md +61 -0
- package/plugins/lisa-phaser-devin/agents/marketing-strategist.md +59 -0
- package/plugins/lisa-phaser-devin/agents/monetization-designer.md +59 -0
- package/plugins/lisa-phaser-devin/agents/narrative-designer.md +56 -0
- package/plugins/lisa-phaser-devin/agents/onboarding-advocate.md +59 -0
- package/plugins/lisa-phaser-devin/agents/player-advocate.md +57 -0
- package/plugins/lisa-phaser-devin/agents/producer.md +61 -0
- package/plugins/lisa-phaser-devin/agents/product-analyst.md +62 -0
- package/plugins/lisa-phaser-devin/agents/publisher.md +59 -0
- package/plugins/lisa-phaser-devin/agents/qa-playtester.md +57 -0
- package/plugins/lisa-phaser-devin/agents/target-player.md +52 -0
- package/plugins/lisa-phaser-devin/agents/ux-ui-designer.md +60 -0
- package/plugins/lisa-phaser-devin/hooks/devin-tool-name-shim.sh +30 -0
- package/plugins/lisa-phaser-devin/hooks/inject-rules.sh +27 -0
- package/plugins/lisa-phaser-devin/hooks.json +14 -0
- package/plugins/lisa-phaser-devin/rules/eager/phaser.md +44 -0
- package/plugins/lisa-phaser-devin/rules/reference/phaser.md +184 -0
- package/plugins/lisa-phaser-devin/skills/phaser-accessibility/SKILL.md +135 -0
- package/plugins/lisa-phaser-devin/skills/phaser-asset-pipeline/SKILL.md +222 -0
- package/plugins/lisa-phaser-devin/skills/phaser-asset-sourcing/SKILL.md +151 -0
- package/plugins/lisa-phaser-devin/skills/phaser-build-deploy/SKILL.md +153 -0
- package/plugins/lisa-phaser-devin/skills/phaser-i18n/SKILL.md +122 -0
- package/plugins/lisa-phaser-devin/skills/phaser-project-structure/SKILL.md +89 -0
- package/plugins/lisa-phaser-devin/skills/phaser-services/SKILL.md +208 -0
- package/plugins/lisa-phaser-devin/skills/phaser-testing/SKILL.md +192 -0
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-devin/.claude-plugin/plugin.json +11 -0
- package/plugins/lisa-rails-devin/.devin-plugin/plugin.json +8 -0
- package/plugins/lisa-rails-devin/agents/ops-specialist.md +226 -0
- package/plugins/lisa-rails-devin/hooks/devin-tool-name-shim.sh +30 -0
- package/plugins/lisa-rails-devin/hooks/inject-rules.sh +40 -0
- package/plugins/lisa-rails-devin/hooks/lisa-edit-gate.sh +152 -0
- package/plugins/lisa-rails-devin/hooks/rubocop-on-edit.sh +101 -0
- package/plugins/lisa-rails-devin/hooks/sg-scan-on-edit.sh +97 -0
- package/plugins/lisa-rails-devin/hooks.json +29 -0
- package/plugins/lisa-rails-devin/rules/eager/rails-conventions.md +23 -0
- package/plugins/lisa-rails-devin/rules/reference/rails-conventions.md +176 -0
- package/plugins/lisa-rails-devin/skills/action-controller-best-practices/SKILL.md +374 -0
- package/plugins/lisa-rails-devin/skills/action-view-best-practices/SKILL.md +335 -0
- package/plugins/lisa-rails-devin/skills/active-record-model-best-practices/SKILL.md +166 -0
- package/plugins/lisa-rails-devin/skills/e2e-coverage-gaps/SKILL.md +117 -0
- package/plugins/lisa-rails-devin/skills/fix-linter-error/SKILL.md +45 -0
- package/plugins/lisa-rails-devin/skills/improve-code-complexity/SKILL.md +51 -0
- package/plugins/lisa-rails-devin/skills/improve-max-lines/SKILL.md +46 -0
- package/plugins/lisa-rails-devin/skills/improve-max-lines-per-function/SKILL.md +46 -0
- package/plugins/lisa-rails-devin/skills/improve-test-coverage/SKILL.md +48 -0
- package/plugins/lisa-rails-devin/skills/jira-add-journey/SKILL.md +79 -0
- package/plugins/lisa-rails-devin/skills/jira-create/SKILL.md +100 -0
- package/plugins/lisa-rails-devin/skills/jira-evidence/SKILL.md +76 -0
- package/plugins/lisa-rails-devin/skills/jira-evidence/scripts/post-evidence.sh +262 -0
- package/plugins/lisa-rails-devin/skills/jira-journey/SKILL.md +65 -0
- package/plugins/lisa-rails-devin/skills/jira-verify/SKILL.md +26 -0
- package/plugins/lisa-rails-devin/skills/ops-check-logs/SKILL.md +191 -0
- package/plugins/lisa-rails-devin/skills/ops-deploy/SKILL.md +153 -0
- package/plugins/lisa-rails-devin/skills/ops-run-local/SKILL.md +169 -0
- package/plugins/lisa-rails-devin/skills/ops-verify-jobs/SKILL.md +157 -0
- package/plugins/lisa-rails-devin/skills/ops-verify-telemetry/SKILL.md +226 -0
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-agy/plugin.json +1 -1
- package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-devin/.claude-plugin/plugin.json +11 -0
- package/plugins/lisa-typescript-devin/.devin-plugin/plugin.json +8 -0
- package/plugins/lisa-typescript-devin/hooks/block-suppress-directives.sh +141 -0
- package/plugins/lisa-typescript-devin/hooks/devin-tool-name-shim.sh +30 -0
- package/plugins/lisa-typescript-devin/hooks/format-on-edit.sh +102 -0
- package/plugins/lisa-typescript-devin/hooks/lint-on-edit.sh +117 -0
- package/plugins/lisa-typescript-devin/hooks/lisa-edit-gate.sh +152 -0
- package/plugins/lisa-typescript-devin/hooks/sg-scan-on-edit.sh +94 -0
- package/plugins/lisa-typescript-devin/hooks.json +34 -0
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-agy/plugin.json +1 -1
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-devin/.claude-plugin/plugin.json +8 -0
- package/plugins/lisa-wiki-devin/.devin-plugin/plugin.json +8 -0
- package/plugins/lisa-wiki-devin/ci/lisa-wiki-validate.yml +33 -0
- package/plugins/lisa-wiki-devin/schema/lisa-wiki-config.schema.json +162 -0
- package/plugins/lisa-wiki-devin/schema/wiki-structure.schema.json +51 -0
- package/plugins/lisa-wiki-devin/scripts/_wiki-lib.mjs +204 -0
- package/plugins/lisa-wiki-devin/scripts/diff-guard.mjs +117 -0
- package/plugins/lisa-wiki-devin/scripts/ensure-gitignore.mjs +131 -0
- package/plugins/lisa-wiki-devin/scripts/ensure-wiki.mjs +268 -0
- package/plugins/lisa-wiki-devin/scripts/ingest-git.mjs +198 -0
- package/plugins/lisa-wiki-devin/scripts/ingest-memory.mjs +135 -0
- package/plugins/lisa-wiki-devin/scripts/ingest-roles.mjs +95 -0
- package/plugins/lisa-wiki-devin/scripts/ingest_slack_channel.py +361 -0
- package/plugins/lisa-wiki-devin/scripts/lib/bounded-child.mjs +159 -0
- package/plugins/lisa-wiki-devin/scripts/lint-wiki.mjs +513 -0
- package/plugins/lisa-wiki-devin/scripts/mcp-doctor.mjs +72 -0
- package/plugins/lisa-wiki-devin/scripts/render-contract.mjs +107 -0
- package/plugins/lisa-wiki-devin/scripts/rewrite-refs.mjs +144 -0
- package/plugins/lisa-wiki-devin/scripts/slack_oauth_user.py +179 -0
- package/plugins/lisa-wiki-devin/scripts/validate-config.mjs +321 -0
- package/plugins/lisa-wiki-devin/scripts/verify-migration.mjs +203 -0
- package/plugins/lisa-wiki-devin/scripts/verify-wiki-safety.mjs +126 -0
- package/plugins/lisa-wiki-devin/scripts/wiki-safety.mjs +378 -0
- package/plugins/lisa-wiki-devin/scripts/wiki-status.mjs +345 -0
- package/plugins/lisa-wiki-devin/skills/lisa-wiki-add-ingest/SKILL.md +34 -0
- package/plugins/lisa-wiki-devin/skills/lisa-wiki-add-role/SKILL.md +35 -0
- package/plugins/lisa-wiki-devin/skills/lisa-wiki-connector-confluence/SKILL.md +25 -0
- package/plugins/lisa-wiki-devin/skills/lisa-wiki-connector-docs/SKILL.md +30 -0
- package/plugins/lisa-wiki-devin/skills/lisa-wiki-connector-git/SKILL.md +25 -0
- package/plugins/lisa-wiki-devin/skills/lisa-wiki-connector-jira/SKILL.md +28 -0
- package/plugins/lisa-wiki-devin/skills/lisa-wiki-connector-memory/SKILL.md +28 -0
- package/plugins/lisa-wiki-devin/skills/lisa-wiki-connector-notion/SKILL.md +25 -0
- package/plugins/lisa-wiki-devin/skills/lisa-wiki-connector-roles/SKILL.md +22 -0
- package/plugins/lisa-wiki-devin/skills/lisa-wiki-connector-slack/SKILL.md +30 -0
- package/plugins/lisa-wiki-devin/skills/lisa-wiki-connector-web/SKILL.md +23 -0
- package/plugins/lisa-wiki-devin/skills/lisa-wiki-doctor/SKILL.md +47 -0
- package/plugins/lisa-wiki-devin/skills/lisa-wiki-ingest/SKILL.md +106 -0
- package/plugins/lisa-wiki-devin/skills/lisa-wiki-lint/SKILL.md +32 -0
- package/plugins/lisa-wiki-devin/skills/lisa-wiki-migrate/SKILL.md +43 -0
- package/plugins/lisa-wiki-devin/skills/lisa-wiki-onboard-me/SKILL.md +33 -0
- package/plugins/lisa-wiki-devin/skills/lisa-wiki-query/SKILL.md +40 -0
- package/plugins/lisa-wiki-devin/skills/lisa-wiki-setup/SKILL.md +75 -0
- package/plugins/lisa-wiki-devin/skills/lisa-wiki-setup-automations/SKILL.md +83 -0
- package/plugins/lisa-wiki-devin/skills/lisa-wiki-status/SKILL.md +47 -0
- package/plugins/lisa-wiki-devin/skills/lisa-wiki-tear-down-automations/SKILL.md +34 -0
- package/plugins/lisa-wiki-devin/skills/lisa-wiki-usage/SKILL.md +50 -0
- package/plugins/lisa-wiki-devin/templates/agents/role-agent.claude.md +16 -0
- package/plugins/lisa-wiki-devin/templates/agents/role-agent.codex.toml +15 -0
- package/plugins/lisa-wiki-devin/templates/index.md +17 -0
- package/plugins/lisa-wiki-devin/templates/llm-wiki-contract.md +72 -0
- package/plugins/lisa-wiki-devin/templates/log.md +8 -0
- package/plugins/lisa-wiki-devin/templates/page-types/architecture.md +18 -0
- package/plugins/lisa-wiki-devin/templates/page-types/concept.md +18 -0
- package/plugins/lisa-wiki-devin/templates/page-types/decision.md +18 -0
- package/plugins/lisa-wiki-devin/templates/page-types/entity.md +19 -0
- package/plugins/lisa-wiki-devin/templates/page-types/open-question.md +18 -0
- package/plugins/lisa-wiki-devin/templates/page-types/playbook.md +18 -0
- package/plugins/lisa-wiki-devin/templates/page-types/project.md +19 -0
- package/plugins/lisa-wiki-devin/templates/page-types/requirement.md +19 -0
- package/plugins/lisa-wiki-devin/templates/page-types/staff.md +26 -0
- package/plugins/lisa-wiki-devin/templates/start-here.md +24 -0
- package/plugins/lisa-wiki-devin/templates/state-readme.md +20 -0
- package/plugins/lisa-wiki-devin/templates/wrapper-gitignore.txt +19 -0
- package/scripts/build-plugins.sh +2 -2
- package/scripts/deployed-guard-advice.mjs +1 -0
- package/scripts/generate-devin-plugin-artifacts.mjs +263 -0
- package/scripts/lib/hook-registration-audit.mjs +3 -1
- package/scripts/lib/per-agent-hook-filter.mjs +174 -5
- package/scripts/lib/plugin-rule-citations.mjs +2 -2
|
@@ -0,0 +1,490 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: lisa-learnings-audit
|
|
3
|
+
description: "The gardener of the learnings ladder (PRD #1729). Periodically audits every knowledge surface — ledger, rules trees (including Lisa's own shipped eager rules), skills, wiki index, and mechanical-control surfaces — gathers evidence per item (recurrence, staleness, redundancy, contradiction, budget pressure), classifies each candidate through the ladder router (skill-evaluator, advisory), and communicates exclusively through the tracker: one evidence-bearing ticket per PROMOTE/DEMOTE, one batch ticket per run for CONFIRM/RETIRE, upstream Lisa issues for upstream-scoped patterns. Everything is human-gated at v1 — the skill only files tickets; humans gate by flipping status:ready or closing as rejected, and rejections are remembered. Cron-able via lisa-setup-automations and runnable on demand via /lisa:learnings:audit."
|
|
4
|
+
allowed-tools: ["Skill", "Bash", "Read", "Glob", "Grep"]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Learnings Audit (the gardener): $ARGUMENTS
|
|
8
|
+
|
|
9
|
+
Run one audit cycle over this project's knowledge surfaces and convert what the
|
|
10
|
+
evidence supports into **human-gated tracker tickets** — nothing else. The
|
|
11
|
+
gardener is the only flow in Lisa that takes knowledge *back out* or moves it
|
|
12
|
+
*up* the ladder; it closes the loop that capture (learner, debrief-apply, MLD)
|
|
13
|
+
opens.
|
|
14
|
+
|
|
15
|
+
`$ARGUMENTS` (all optional): `max_candidates=<n>` (default **10** — cap on
|
|
16
|
+
per-item PROMOTE/DEMOTE tickets filed per run, following the
|
|
17
|
+
`lisa-repair-intake` bounded-cycle precedent; CONFIRM/RETIRE batch rows are
|
|
18
|
+
not capped), `surface=<ledger|rules|skills|wiki|all>` (default `all`),
|
|
19
|
+
`dry_run=true` (report what would be filed, file nothing).
|
|
20
|
+
|
|
21
|
+
## Intent
|
|
22
|
+
|
|
23
|
+
Keep the knowledge system from silting up: every learning lives at the
|
|
24
|
+
cheapest rung that still prevents the mistake (per the six-rung ladder,
|
|
25
|
+
PRD #1729), prose never duplicates a mechanical owner, the eager tier shrinks
|
|
26
|
+
over time, and every change to "what the agents believe" is approved by a
|
|
27
|
+
human through the tracker. A quiet run with nothing to propose is a healthy
|
|
28
|
+
outcome and says so in its one-line summary.
|
|
29
|
+
|
|
30
|
+
## Sources of truth
|
|
31
|
+
|
|
32
|
+
Inventory these surfaces each run — discover dynamically, never from a
|
|
33
|
+
memorized list:
|
|
34
|
+
|
|
35
|
+
1. **The ledger** — resolve via `.lisa.config.json` (`learnings.file`, default
|
|
36
|
+
`.lisa/PROJECT_LEARNINGS.md`) and read it ONLY through the executable
|
|
37
|
+
contract from `@codyswann/lisa/learnings`: `parseLearningsFile` for the
|
|
38
|
+
**full parse** (the gardener is the maintenance loop — auditing requires
|
|
39
|
+
every entry, and the contract-mediated full parse is its documented
|
|
40
|
+
exemption from projection-only serving) plus `projectLearnings` for the
|
|
41
|
+
bounded projection (to measure **budget pressure**: how many entries the
|
|
42
|
+
projection omits). Never hand-parse or hand-edit the raw file.
|
|
43
|
+
2. **The overflow buffer** — captures the ledger had no budget to accept, held
|
|
44
|
+
in `PROJECT_LEARNINGS.overflow.md` beside the resolved ledger. Read it ONLY
|
|
45
|
+
through the executable contract: `bunx @codyswann/lisa learnings-overflow`,
|
|
46
|
+
which prints `{ file, pending, entries }` as JSON. Never hand-parse or
|
|
47
|
+
hand-edit it. These are judged-durable learnings with nowhere to live, so a
|
|
48
|
+
non-empty overflow is the single strongest budget-pressure evidence there is
|
|
49
|
+
— stronger than an omission count, because room was not merely tight, a real
|
|
50
|
+
capture was turned away. Drain it every run (see The audit cycle).
|
|
51
|
+
3. **Rules trees** — the plugin `rules/eager/` + `rules/reference/` pairs AND
|
|
52
|
+
the host project's canonical host-rules directory `.agents/rules/`, plus any
|
|
53
|
+
retired-but-surviving single-file rules the project still carries
|
|
54
|
+
(`.claude/rules/PROJECT_RULES.md`, or a legacy `projectRulesFile` path).
|
|
55
|
+
All of it is human-authored only — the gardener proposes, it never rewrites —
|
|
56
|
+
and its existing sections are still audit candidates; first-run candidates
|
|
57
|
+
come from exactly there.
|
|
58
|
+
4. **Skills** — `.claude/skills/` and the plugin skill roots the runtime
|
|
59
|
+
exposes (descriptions are eager context; bodies load on invoke).
|
|
60
|
+
5. **The wiki index** — `wiki/index.md` when the project has a wiki.
|
|
61
|
+
6. **Mechanical-control surfaces** — lint configs (ESLint/oxlint), ast-grep
|
|
62
|
+
rules, git hooks, test suites, and `package.lisa.json` force sections:
|
|
63
|
+
the surfaces that answer "does a mechanical owner already exist?".
|
|
64
|
+
7. **The tracker** — prior gardener tickets (open, done, and closed-rejected)
|
|
65
|
+
are its memory; see Idempotency.
|
|
66
|
+
|
|
67
|
+
## Candidate-selection rules
|
|
68
|
+
|
|
69
|
+
A surface item becomes a candidate only when evidence supports a change.
|
|
70
|
+
Gather, per item, the five evidence axes:
|
|
71
|
+
|
|
72
|
+
| Axis | Question | How |
|
|
73
|
+
|------|----------|-----|
|
|
74
|
+
| **Recurrence** | Has the same failure class recurred since the entry's `last_confirmed` (or the rule's last touch)? | Search issues/PRs/commits since that date — reuse the `git-history-analyzer` agent for commit/PR archaeology; tracker search for issue recurrence. |
|
|
75
|
+
| **Staleness** | Does the item reference files, flags, versions, or tools that no longer exist? | Glob/Grep the referenced paths and configs. |
|
|
76
|
+
| **Redundancy** | Does a mechanical owner already enforce the invariant? (The double-payment hunter.) | Check lint/ast-grep/hook/test/force surfaces for the same invariant. |
|
|
77
|
+
| **Contradiction** | Does the item contradict another rule, skill, config, or observed current behavior? | Cross-reference the inventoried surfaces. |
|
|
78
|
+
| **Budget pressure** | Is the ledger projection omitting entries, captures landing in the overflow, or the eager tier growing? | `projectLearnings` omission count; `learnings-overflow` pending count; eager-tree token/size trend. |
|
|
79
|
+
|
|
80
|
+
Selection outcomes per candidate: **PROMOTE** (up the ladder), **DEMOTE**
|
|
81
|
+
(down the ladder), **CONFIRM** (evidence the entry demonstrably applied —
|
|
82
|
+
a `last_confirmed` bump), **RETIRE** (provably redundant/stale — proof, not
|
|
83
|
+
vibes), or leave alone. No evidence ⇒ no candidate; the gardener never files
|
|
84
|
+
a recommendation it cannot evidence.
|
|
85
|
+
|
|
86
|
+
**The eager tier is audited every run** — including
|
|
87
|
+
**Lisa's own shipped eager rules**, not just host additions. Admission is demotion-biased and
|
|
88
|
+
earned only by repeated-miss evidence (see the `promotion-contract` rule);
|
|
89
|
+
an eager rule without that evidence gets a DEMOTE candidate citing the
|
|
90
|
+
admission policy, scoped upstream when the rule ships with the kernel.
|
|
91
|
+
|
|
92
|
+
**Exclusions (no learning loops about learning).** Never candidates, never
|
|
93
|
+
evidence:
|
|
94
|
+
|
|
95
|
+
- The gardener's own tickets, PRs, and comments (anything carrying the
|
|
96
|
+
`[lisa-gardener]` marker).
|
|
97
|
+
- All learning-machinery artifacts: items carrying `[lisa-learning-drop]`,
|
|
98
|
+
`[lisa-learning-pr]`, `[lisa-learning-upstream-handoff]` (any
|
|
99
|
+
`[lisa-learning-*]` marker), `[lisa-rejection-candidate]`, or
|
|
100
|
+
`[lisa-archaeology-candidate]`, and the `learning:needs-triage` label.
|
|
101
|
+
|
|
102
|
+
## Scope
|
|
103
|
+
|
|
104
|
+
- **In scope**: recommending placement changes for knowledge on any
|
|
105
|
+
inventoried surface, in this repository (`project` scope) or upstream in
|
|
106
|
+
`CodySwannGT/lisa` (`upstream` scope).
|
|
107
|
+
- **Out of scope**: executing any promotion/demotion/retirement (the factory
|
|
108
|
+
does, per flipped tickets), editing any knowledge surface, auto-apply modes
|
|
109
|
+
(v1 is fully gated), and the capture streams (learner, debrief, MLD).
|
|
110
|
+
|
|
111
|
+
## Proof
|
|
112
|
+
|
|
113
|
+
A run is proven, not asserted. The per-run report (and the run ticket, when
|
|
114
|
+
one exists) must show:
|
|
115
|
+
|
|
116
|
+
- The surfaces inventoried, with counts (ledger entries parsed, rules files,
|
|
117
|
+
skills, wiki pages, mechanical controls).
|
|
118
|
+
- Per filed ticket: the fingerprint marker, the evidence refs behind it, and
|
|
119
|
+
the router's rung — so any reviewer can replay the reasoning from links
|
|
120
|
+
alone.
|
|
121
|
+
- Per skipped candidate: which dedupe hit suppressed it (open ticket URL,
|
|
122
|
+
done ticket, or rejection date).
|
|
123
|
+
- For `nothing-needed`: the thresholds nothing met, in one line.
|
|
124
|
+
|
|
125
|
+
The tickets themselves are the durable artifacts; the report is how a human
|
|
126
|
+
audits the auditor without re-running it.
|
|
127
|
+
|
|
128
|
+
## The audit cycle
|
|
129
|
+
|
|
130
|
+
1. **Inventory** the sources of truth above.
|
|
131
|
+
1.5. **Drain the overflow** — before anything else, because these captures are
|
|
132
|
+
the only knowledge in the system with no durable home at all. For each entry
|
|
133
|
+
`bunx @codyswann/lisa learnings-overflow` reports:
|
|
134
|
+
|
|
135
|
+
- **File its durable home first.** Route the entry through the ladder router
|
|
136
|
+
like any other candidate and file the resulting ticket, carrying the
|
|
137
|
+
entry's `rule`, `why`, `provenance`, and `confidence` verbatim so nothing
|
|
138
|
+
is paraphrased away. Use the ordinary `[lisa-gardener]` marker dedupe, so a
|
|
139
|
+
re-run never files the same overflowed capture twice.
|
|
140
|
+
- **Drain it only after that ticket exists**, one call naming exactly the ids
|
|
141
|
+
that now have a home:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
bunx @codyswann/lisa learnings-overflow --drain <id> [<id>...]
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Never drain first and file second, and never drain ids in bulk "to clean
|
|
148
|
+
up": the buffer is the only copy, so an entry removed before its ticket
|
|
149
|
+
exists is gone. Filing first makes a partial run — a rate limit, a network
|
|
150
|
+
failure — safely resumable, because everything unfiled is still in the
|
|
151
|
+
buffer for the next run. An id the command reports as `absent` was already
|
|
152
|
+
drained by an earlier run; that is expected, not an error.
|
|
153
|
+
- **Report the drain in the run proof**: how many were pending, which ids
|
|
154
|
+
were re-homed to which tickets, and how many remain.
|
|
155
|
+
|
|
156
|
+
A non-empty overflow also means the ledger turned a judged-durable capture
|
|
157
|
+
away, so treat it as top-priority budget-pressure evidence when selecting
|
|
158
|
+
RETIRE/PROMOTE candidates this run — the room has to come from somewhere.
|
|
159
|
+
2. **Evidence** — gather the five axes per item; drop items with none.
|
|
160
|
+
3. **Classify** — pass each candidate (`rule`, `why`, `provenance`,
|
|
161
|
+
`evidence`) to the ladder router (the `skill-evaluator` agent). The router
|
|
162
|
+
is **advisory**: it returns `rung`, `scope`, `rationale`, and
|
|
163
|
+
`drafted_artifact`; the gardener decides whether the evidence clears the
|
|
164
|
+
filing bar and attaches the router's draft to the ticket.
|
|
165
|
+
4. **Emit** (see Ticket emission).
|
|
166
|
+
5. **Report and record** the run outcome and one-line summary — post the
|
|
167
|
+
outcome, then record **exactly one** run-record line through the CLI (see
|
|
168
|
+
Run outcomes), including the escalation path when it ends
|
|
169
|
+
`recovery-required`.
|
|
170
|
+
|
|
171
|
+
## Ticket emission
|
|
172
|
+
|
|
173
|
+
All project-tracker writes go through **`lisa-tracker-write`** so gardener
|
|
174
|
+
tickets pass the same validation gates as all factory work. Nothing is created
|
|
175
|
+
`status:ready` — the human flips. Per `ready-role-filing` that hold is
|
|
176
|
+
**declared, not implied**: every gardener ticket passes
|
|
177
|
+
`human_gate: "a human decides whether this knowledge is promoted, demoted, or
|
|
178
|
+
retired"` so the writer stamps the auditable `[lisa-human-gate]` marker. An
|
|
179
|
+
omitted flag would be indistinguishable from the accidental non-ready filing
|
|
180
|
+
the rule exists to catch.
|
|
181
|
+
|
|
182
|
+
**Per-item tickets — PROMOTE / DEMOTE** (`issue_type: Task`; GitHub trackers
|
|
183
|
+
carry the `type:Task` label) — one ticket per recommendation, capped by
|
|
184
|
+
`max_candidates`:
|
|
185
|
+
|
|
186
|
+
- A **three-audience description** (operator: what changes about what the
|
|
187
|
+
agents believe and why it is safe; engineering: the surface, the invariant,
|
|
188
|
+
the destination rung; QA: how to verify the move) with **evidence links**
|
|
189
|
+
(the recurrence issues/PRs/commits, the staleness proof, the mechanical
|
|
190
|
+
owner).
|
|
191
|
+
- The router's **`drafted_artifact`** verbatim (the lint/hook sketch +
|
|
192
|
+
diagnostic text, proposed rule text, skill outline, page outline, or
|
|
193
|
+
redundancy proof).
|
|
194
|
+
- For **EXECUTABLE-CONTROL** promotions, embed the promotion-contract AC
|
|
195
|
+
template below **verbatim** (markers included — do not paraphrase, reorder,
|
|
196
|
+
or partially quote it; it is the single source of truth from the
|
|
197
|
+
`promotion-contract` rule):
|
|
198
|
+
|
|
199
|
+
<!-- promotion-contract-ac-template:start -->
|
|
200
|
+
### Acceptance Criteria (promotion-to-control contract)
|
|
201
|
+
|
|
202
|
+
One atomic PR that satisfies all four legs — a PR missing any of the four is
|
|
203
|
+
rejected by rule (see the `promotion-contract` rule):
|
|
204
|
+
|
|
205
|
+
- [ ] **Enables the control** — the lint / ast-grep / type constraint / test /
|
|
206
|
+
hook / `package.lisa.json` force entry is active and blocking.
|
|
207
|
+
- [ ] **Fixes the existing violation population** — every current violation is
|
|
208
|
+
migrated in this same PR, so the control lands green with no blanket
|
|
209
|
+
ignores.
|
|
210
|
+
- [ ] **Ships a remediation-teaching diagnostic** — the failure message states
|
|
211
|
+
the violated invariant, why it holds, and the concrete fix.
|
|
212
|
+
- [ ] **Deletes the superseded prose** — the ledger entry / rules section this
|
|
213
|
+
control replaces is removed in this same PR, citing the new mechanical
|
|
214
|
+
owner.
|
|
215
|
+
<!-- promotion-contract-ac-template:end -->
|
|
216
|
+
|
|
217
|
+
**One batch ticket per run — CONFIRM + RETIRE** (`issue_type: Task`): a single
|
|
218
|
+
ticket listing every CONFIRM row (`last_confirmed` bump, with the evidence the
|
|
219
|
+
entry demonstrably applied) and every **provably-redundant** RETIRE row (with
|
|
220
|
+
the mechanical owner / staleness proof per row). Rows are individually
|
|
221
|
+
strikeable — the human deletes rows they reject, then flips the ticket ready.
|
|
222
|
+
The gardener **never bumps `last_confirmed` itself**: the bumps are executed
|
|
223
|
+
by the **implementing factory run** that picks up the flipped batch ticket.
|
|
224
|
+
Embed the following execution contract **verbatim** (markers included — do
|
|
225
|
+
not paraphrase, reorder, or partially quote it) in every batch ticket, so the
|
|
226
|
+
implementing run receives its instructions inside the work item:
|
|
227
|
+
|
|
228
|
+
<!-- gardener-batch-ticket-template:start -->
|
|
229
|
+
### Execution contract (CONFIRM/RETIRE batch)
|
|
230
|
+
|
|
231
|
+
- Apply each surviving CONFIRM row via `confirmLearningEntry` from
|
|
232
|
+
`@codyswann/lisa/learnings` — never hand-edit the ledger.
|
|
233
|
+
- Implement each surviving RETIRE row as a proof-citing deletion PR per the
|
|
234
|
+
`promotion-contract` rule's reverse-atomicity clause: the deleting PR must
|
|
235
|
+
cite the row's mechanical owner or staleness proof.
|
|
236
|
+
- Struck/deleted rows are human rejections — skip them; they are not re-filed
|
|
237
|
+
without new postdating evidence.
|
|
238
|
+
<!-- gardener-batch-ticket-template:end -->
|
|
239
|
+
|
|
240
|
+
**Upstream scope** → an issue on `CodySwannGT/lisa` (resolve via
|
|
241
|
+
`hardening.upstreamRepo`, default `CodySwannGT/lisa`), following the
|
|
242
|
+
`lisa-rework-triage` "Filing upstream" procedure and its two lanes:
|
|
243
|
+
`self-hardening` for defects, `template-candidate` for generalizable patterns
|
|
244
|
+
(with the required `## Proposed template change` section). Same dedupe-marker
|
|
245
|
+
+ evidence-chain discipline; the gardener's fingerprint marker (below) rides
|
|
246
|
+
in the issue body.
|
|
247
|
+
|
|
248
|
+
## Idempotency
|
|
249
|
+
|
|
250
|
+
Every recommendation carries a stable fingerprint embedded as an HTML comment
|
|
251
|
+
marker in the ticket/issue body:
|
|
252
|
+
|
|
253
|
+
```
|
|
254
|
+
<!-- [lisa-gardener] key=<surface>+<invariant-hash> -->
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
where `<surface>` names the audited artifact (e.g. `ledger:<entry-id>`,
|
|
258
|
+
`rules-eager:<file>#<section>`, `skill:<name>`) and `<invariant-hash>` is
|
|
259
|
+
computed **deterministically — never estimated by the model**:
|
|
260
|
+
|
|
261
|
+
1. **Normalize** the invariant text: trim leading/trailing whitespace,
|
|
262
|
+
collapse every internal whitespace run to a single space, lowercase.
|
|
263
|
+
2. **Hash** through the shared implementation: write the invariant to a text file
|
|
264
|
+
and run `lisa effectiveness fingerprint --input <file>`. This performs the
|
|
265
|
+
normalization above and returns the first 12 SHA-256 hex characters.
|
|
266
|
+
|
|
267
|
+
The same knowledge item therefore always produces the same key across runs,
|
|
268
|
+
regardless of which session computes it.
|
|
269
|
+
|
|
270
|
+
Read `lisa effectiveness report` for committed post-control recurrence counts by
|
|
271
|
+
the same `<surface>+<invariant-hash>` key. Cite the count and occurrence sources as
|
|
272
|
+
evidence when deciding whether a control helped. Missing history means unknown,
|
|
273
|
+
not a successful control. Counts do not automatically justify a new ticket: apply
|
|
274
|
+
the existing worth-doing judgment. The learning entry's content-version fingerprint
|
|
275
|
+
is a different identifier and must not be substituted for this invariant hash.
|
|
276
|
+
|
|
277
|
+
Before filing anything, search the tracker for the marker in
|
|
278
|
+
**open AND closed** issues — and key the search on the deterministic
|
|
279
|
+
`<surface>` prefix **first**, using the hash as disambiguation only, so even
|
|
280
|
+
a hash discrepancy can never cause a duplicate for the same surface:
|
|
281
|
+
|
|
282
|
+
```bash
|
|
283
|
+
gh search issues "[lisa-gardener] key=<surface>" --repo <upstream-or-tracker-repo> # searches open AND closed by default; --state all is NOT a valid gh search flag
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
plus a body-enumeration fallback for search-index lag (`gh issue list …
|
|
287
|
+
--json number,body` and grep bodies for `[lisa-gardener] key=<surface>`).
|
|
288
|
+
Among prefix hits, compare hashes to distinguish genuinely different
|
|
289
|
+
invariants on the same surface; a prefix hit with a mismatched hash is
|
|
290
|
+
resolved by reading the ticket, never by filing a sibling blind. Then:
|
|
291
|
+
|
|
292
|
+
- **Open** with the marker → do not re-file; append new evidence as a comment
|
|
293
|
+
only if it is materially new.
|
|
294
|
+
- **Closed via merged work** → done; a genuine regression later is new
|
|
295
|
+
evidence and a new ticket.
|
|
296
|
+
- **Closed unmerged / rejected** → the human declined. **Do NOT re-file**
|
|
297
|
+
unless new evidence **postdates the rejection** and materially changes the consequence, requirement, or risk that justified the decline — and when re-filing, state
|
|
298
|
+
the postdating evidence explicitly in the ticket ("rejected <date>; recurred
|
|
299
|
+
<date> in <ref>"). Closed-as-rejected tickets ARE the gardener's memory of
|
|
300
|
+
declined recommendations.
|
|
301
|
+
|
|
302
|
+
Re-runs are quiet no-ops: same surfaces + same evidence ⇒ zero new tickets.
|
|
303
|
+
|
|
304
|
+
This open-and-closed marker search plus the "declined `<date>`; recurred `<date>` in `<ref>`"
|
|
305
|
+
re-file discipline is the shipped precedent for the **Proposal rejection memory** section of the
|
|
306
|
+
`rejection-detection` rule — the shared contract every proposing loop now consults so a
|
|
307
|
+
closed-as-not-planned proposal is never re-filed. The gardener already conforms; it is cited there,
|
|
308
|
+
not re-implemented. Like every proposing loop, each gardener-filed ticket MUST carry the
|
|
309
|
+
`rejection-detection` **operator footer** as a visible prose line so the human knows which
|
|
310
|
+
close-reason silences it: `To stop this from being raised again, close it as **Not planned**. Close
|
|
311
|
+
it as **Completed** if it was fixed — a later recurrence may be re-filed as a regression.`
|
|
312
|
+
|
|
313
|
+
## Autonomous-vs-approval boundary
|
|
314
|
+
|
|
315
|
+
**Everything is human-gated at v1 — this skill only files tickets.** The
|
|
316
|
+
gardener never edits, writes, or deletes any rule, skill, wiki page, ledger
|
|
317
|
+
entry, lint config, or hook itself; it never merges, transitions, or flips
|
|
318
|
+
anything to `status:ready`; it never bumps `last_confirmed`. Autonomous
|
|
319
|
+
actions are limited to: reading surfaces, gathering evidence, invoking the
|
|
320
|
+
advisory router, and creating/commenting marker-deduped tickets. Humans gate
|
|
321
|
+
by flipping a ticket to `status:ready` (the factory then executes it like any
|
|
322
|
+
work item, honoring the `promotion-contract` rule) or closing it as rejected.
|
|
323
|
+
A future `learnings.autoApply` config may widen this; v1 ships none.
|
|
324
|
+
|
|
325
|
+
## Escalation
|
|
326
|
+
|
|
327
|
+
Headless-safe: this skill **never prompts** — it is a cron target. When it
|
|
328
|
+
cannot proceed (tracker unreachable, contradictory config, ledger contract
|
|
329
|
+
error that blocks the parse), it labels its own run ticket — or, when it
|
|
330
|
+
cannot create one, reports in its summary — `status:blocked` + `human-needed`
|
|
331
|
+
with an **operator-readable** reason: what it was trying to do, what it
|
|
332
|
+
observed, and the smallest human action that unblocks it, in plain language a
|
|
333
|
+
non-technical operator standing at the gate can act on.
|
|
334
|
+
|
|
335
|
+
## Recovery
|
|
336
|
+
|
|
337
|
+
Every external write is marker-deduped, so a crashed or interrupted run
|
|
338
|
+
leaves no cleanup debt: re-running is the recovery procedure. A partial run's
|
|
339
|
+
already-filed tickets are found by their markers and not duplicated; a batch
|
|
340
|
+
ticket from an interrupted run is reused (append missing rows as a comment)
|
|
341
|
+
rather than reissued. **Filing order**: file the per-item PROMOTE/DEMOTE
|
|
342
|
+
tickets first and the CONFIRM/RETIRE **batch ticket last** — the batch is the
|
|
343
|
+
run's completion signal, so a crash mid-run leaves individually
|
|
344
|
+
marker-recoverable per-item tickets and a missing (not half-filled) batch:
|
|
345
|
+
the most recoverable state. Never attempt to "roll back" filed tickets —
|
|
346
|
+
close-out decisions belong to humans.
|
|
347
|
+
|
|
348
|
+
## Run outcomes
|
|
349
|
+
|
|
350
|
+
Exactly one per run, from the closed six-value vocabulary of the
|
|
351
|
+
`automation-runbook-contract` rule:
|
|
352
|
+
**`nothing-needed | candidate-proposed | change-proved | approval-requested | recovery-required | policy-obsolete`**.
|
|
353
|
+
|
|
354
|
+
This section supersedes the gardener's earlier three-value *terminal states*
|
|
355
|
+
vocabulary (`nothing-needed | candidates-proposed | blocked`); the mapping is
|
|
356
|
+
exact so nothing regresses:
|
|
357
|
+
|
|
358
|
+
- `candidates-proposed` → **`candidate-proposed`** — per-item and/or batch
|
|
359
|
+
tickets filed. Report each ticket URL, its recommendation (PROMOTE/DEMOTE +
|
|
360
|
+
rung), and the batch ticket URL with its row count.
|
|
361
|
+
- `nothing-needed` → **`nothing-needed`** (unchanged) — no candidate met any
|
|
362
|
+
recommendation threshold. Report one line: surfaces scanned, entries seen,
|
|
363
|
+
"nothing to propose".
|
|
364
|
+
- `blocked` → **`recovery-required`** when the loop itself could not complete
|
|
365
|
+
(tracker unreachable, contradictory config, a ledger-contract parse error) —
|
|
366
|
+
escalated per Escalation with the operator-readable reason; **or**
|
|
367
|
+
**`approval-requested`** when the run finished and is waiting on a human gate
|
|
368
|
+
rather than being broken.
|
|
369
|
+
|
|
370
|
+
The gardener also newly reaches **`policy-obsolete`** — the Retirement
|
|
371
|
+
condition below tripped and it filed its own teardown proposal. It never
|
|
372
|
+
produces **`change-proved`**: the gardener only files tickets and ships no
|
|
373
|
+
change itself, so proving a change is the implementing factory run's job.
|
|
374
|
+
|
|
375
|
+
Record exactly one outcome per run through the run-record CLI, naming this
|
|
376
|
+
loop's runbook (the `--summary` is the operator-readable one-liner in the
|
|
377
|
+
contract's exemplar voice — plain, specific, actionable):
|
|
378
|
+
|
|
379
|
+
```bash
|
|
380
|
+
node "${CLAUDE_PLUGIN_ROOT:-node_modules/@codyswann/lisa/plugins/lisa}/scripts/automation-run-record.mjs" \
|
|
381
|
+
--loop-id learnings-audit --outcome candidate-proposed \
|
|
382
|
+
--summary "Proposed 2 promotions and 1 batch confirm; awaiting your flip to ready." \
|
|
383
|
+
--runbook .lisa/automations/learnings-audit.runbook.md [--ref <ticket-url>]...
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
The `:-` default in that command is load-bearing, not decoration.
|
|
387
|
+
`CLAUDE_PLUGIN_ROOT` is **not exported into an agent's Bash tool
|
|
388
|
+
environment**, so the bare `"${CLAUDE_PLUGIN_ROOT}/scripts/…"` form expands
|
|
389
|
+
to an absolute `/scripts/…` and exits 1. The default names the installed
|
|
390
|
+
package copy, which resolves from the **consumer repository root** — which
|
|
391
|
+
is where the recorder is actually invoked. Never substitute a bare
|
|
392
|
+
`plugins/lisa/scripts/…` or `plugins/src/base/scripts/…` path: those are
|
|
393
|
+
relative to the **Lisa package root**, not the repository you are standing
|
|
394
|
+
in, and exit 1 from there. If recording still fails, **degrade, never
|
|
395
|
+
abort** (per `automation-runbook-contract`): note the recording failure in
|
|
396
|
+
the run output and finish the run — a recording failure is a degradation to
|
|
397
|
+
report, never a reason to block the loop.
|
|
398
|
+
|
|
399
|
+
## Retirement condition
|
|
400
|
+
|
|
401
|
+
The loop proposes retirement by the same discipline it applies to everything else,
|
|
402
|
+
conforming to the `automation-runbook-contract` rule's Retirement section
|
|
403
|
+
rather than restating or diverging from it. The condition is **stateless —
|
|
404
|
+
derived from the tracker, never from a
|
|
405
|
+
counter or state file** (there is no durable home for a run counter, and a
|
|
406
|
+
tracker-derived condition is headless- and concurrent-safe by construction).
|
|
407
|
+
Propose retirement when BOTH hold:
|
|
408
|
+
|
|
409
|
+
1. **Quiet trailing window** — a date-filtered search finds NO
|
|
410
|
+
`[lisa-gardener]` ticket created in the
|
|
411
|
+
**trailing six-week window** (six runs at the weekly cadence), e.g.
|
|
412
|
+
`gh search issues '"[lisa-gardener] key="' --created ">=<six-weeks-ago>"`.
|
|
413
|
+
2. **This run proposes nothing** — the current run's inventory yields zero
|
|
414
|
+
candidates (it is terminating `nothing-needed`).
|
|
415
|
+
|
|
416
|
+
When both hold, the gardener records `policy-obsolete` and files **exactly ONE**
|
|
417
|
+
marker-deduped ticket proposing to lengthen its cadence or tear down its
|
|
418
|
+
automation, through `lisa-tracker-write` (per `tracked-work` +
|
|
419
|
+
`integration-access-layer`):
|
|
420
|
+
|
|
421
|
+
- **Marker** `<!-- [lisa-automation-retire] key=learnings-audit -->` plus a
|
|
422
|
+
visible prose line; matched on the marker, never the title; searched **open
|
|
423
|
+
AND closed** per `rejection-detection`'s **Proposal rejection memory**. Treat
|
|
424
|
+
matches by close state: **open** suppresses another proposal; **Not planned**
|
|
425
|
+
suppresses another proposal unless new evidence postdates the rejection and materially changes the consequence, requirement, or risk that justified the decline;
|
|
426
|
+
**Completed** means the prior approved action happened, so a later recurrence
|
|
427
|
+
may be re-filed. The `[lisa-gardener]` search above stays what it is — the
|
|
428
|
+
candidate evidence, not the dedupe key. When an existing proposal suppresses
|
|
429
|
+
filing, **the run still records `policy-obsolete` and files nothing** — the
|
|
430
|
+
outcome describes this run, while the ticket is filed exactly once.
|
|
431
|
+
- **Labels** `status:blocked` + `human-needed`, carrying the contract's
|
|
432
|
+
decision-ready packet. The `human-needed` label marks the proposal
|
|
433
|
+
human-owned: `lisa-repair-intake` recognizes it and never re-dispatches it as
|
|
434
|
+
stalled work.
|
|
435
|
+
- **Evidence** the date-filtered search result, this run's summary, **the
|
|
436
|
+
loop's current cadence** (the baseline an operator needs to choose a longer
|
|
437
|
+
one), and a one-line summary of recent runs read from
|
|
438
|
+
`.lisa/automations/runs/learnings-audit.jsonl`. Fill the rest of the packet
|
|
439
|
+
the same way every time: *Work already attempted* is the searches this run
|
|
440
|
+
ran, and *Risk of inaction* is that the loop keeps consuming schedule slots
|
|
441
|
+
and tokens for nothing.
|
|
442
|
+
- **How to answer** names the three operator responses: **approve** — run
|
|
443
|
+
`/lisa:tear-down-automations learnings-audit` and only that loop registration goes away; **decline** —
|
|
444
|
+
close the proposal as **Not planned** (closing it as **Completed** leaves a
|
|
445
|
+
later re-file open) and the gardener simply continues; **re-cadence** — pick a
|
|
446
|
+
longer cadence off that evidence and re-register with
|
|
447
|
+
`/lisa:setup-automations` instead of tearing down.
|
|
448
|
+
- **Operator footer**, verbatim, as on every loop-filed proposal
|
|
449
|
+
(`rejection-detection`):
|
|
450
|
+
> To stop this from being raised again, close it as **Not planned**. Close it as **Completed** if it was fixed — a later recurrence may be re-filed as a regression.
|
|
451
|
+
|
|
452
|
+
The gardener **keeps running at its normal cadence** until a human flips that
|
|
453
|
+
ticket — retirement is a recommendation like any other, never a self-executed
|
|
454
|
+
exit — and it never deletes its own
|
|
455
|
+
registration.
|
|
456
|
+
|
|
457
|
+
## Scheduling
|
|
458
|
+
|
|
459
|
+
Register as an **optional** recurring loop through `lisa-setup-automations`
|
|
460
|
+
(the `lisa-auto-<project>-*` naming convention): automation
|
|
461
|
+
`lisa-auto-<project>-learnings-audit`, running `/lisa:learnings:audit`, once
|
|
462
|
+
a **week** (Codex `rrule`: `FREQ=WEEKLY;INTERVAL=1`) — opt-in, created only
|
|
463
|
+
when the operator asks for the gardener loop, unlike the six default
|
|
464
|
+
automations. **Single-scheduled-runner assumption**: register at most ONE
|
|
465
|
+
learnings-audit automation per project. Also runnable on demand — but before
|
|
466
|
+
a manual `/lisa:learnings:audit`, confirm the scheduled automation is not due
|
|
467
|
+
or currently running (check the scheduler's last-run/next-run state) and
|
|
468
|
+
prefer waiting over racing it.
|
|
469
|
+
|
|
470
|
+
**Concurrency honesty.** Marker dedupe is search-then-write, not an atomic
|
|
471
|
+
claim: two truly concurrent runs can each miss the other's in-flight ticket
|
|
472
|
+
and file a transient duplicate. Dedupe therefore guarantees
|
|
473
|
+
**convergence, not mutual exclusion** — a duplicate is found and closed by
|
|
474
|
+
the next run's marker search (or by the human triaging the pair), and because
|
|
475
|
+
rejection memory keys on the surface prefix, a duplicate never multiplies.
|
|
476
|
+
This is an accepted trade-off for a weekly advisory loop; a tracker-side
|
|
477
|
+
locking protocol would be disproportionate to the risk.
|
|
478
|
+
|
|
479
|
+
## Rules
|
|
480
|
+
|
|
481
|
+
- Tracker-only output: no file edits, no PRs, no label flips beyond the
|
|
482
|
+
gardener's own run-ticket escalation labels.
|
|
483
|
+
- Evidence or nothing: every recommendation cites concrete refs; RETIRE
|
|
484
|
+
requires proof of redundancy/staleness, not vibes.
|
|
485
|
+
- One batch ticket per run, at most `max_candidates` per-item tickets.
|
|
486
|
+
- All ticket writes via `lisa-tracker-write` (or `gh` for the upstream repo,
|
|
487
|
+
per the rework-triage upstream procedure) — never raw unvalidated creation.
|
|
488
|
+
- Never classify without the router, never file without the dedupe search,
|
|
489
|
+
never re-file over a rejection without postdating evidence.
|
|
490
|
+
- No learning loops about learning: the exclusion registry is absolute.
|