@codyswann/lisa 2.247.3 → 2.250.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/README.md +5 -0
- package/all/copy-overwrite/scripts/lisa-work-item.mjs +1102 -0
- package/dist/cli/doctor-kane.d.ts +15 -0
- package/dist/cli/doctor-kane.d.ts.map +1 -0
- package/dist/cli/doctor-kane.js +28 -0
- package/dist/cli/doctor-kane.js.map +1 -0
- package/dist/cli/doctor.d.ts +3 -1
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +4 -0
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +56 -8
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/kane-cmd.d.ts +45 -0
- package/dist/cli/kane-cmd.d.ts.map +1 -0
- package/dist/cli/kane-cmd.js +91 -0
- package/dist/cli/kane-cmd.js.map +1 -0
- package/dist/cli/ui-lisa-version.d.ts.map +1 -1
- package/dist/cli/ui-lisa-version.js +1 -5
- package/dist/cli/ui-lisa-version.js.map +1 -1
- package/dist/core/kane-cli-parser.d.ts +9 -0
- package/dist/core/kane-cli-parser.d.ts.map +1 -0
- package/dist/core/kane-cli-parser.js +145 -0
- package/dist/core/kane-cli-parser.js.map +1 -0
- package/dist/core/kane-cli-process.d.ts +15 -0
- package/dist/core/kane-cli-process.d.ts.map +1 -0
- package/dist/core/kane-cli-process.js +77 -0
- package/dist/core/kane-cli-process.js.map +1 -0
- package/dist/core/kane-cli-types.d.ts +61 -0
- package/dist/core/kane-cli-types.d.ts.map +1 -0
- package/dist/core/kane-cli-types.js +3 -0
- package/dist/core/kane-cli-types.js.map +1 -0
- package/dist/core/kane-cli.d.ts +42 -0
- package/dist/core/kane-cli.d.ts.map +1 -0
- package/dist/core/kane-cli.js +253 -0
- package/dist/core/kane-cli.js.map +1 -0
- package/dist/core/kane-pilot-report.d.ts +21 -0
- package/dist/core/kane-pilot-report.d.ts.map +1 -0
- package/dist/core/kane-pilot-report.js +169 -0
- package/dist/core/kane-pilot-report.js.map +1 -0
- package/dist/core/kane-pilot-types.d.ts +60 -0
- package/dist/core/kane-pilot-types.d.ts.map +1 -0
- package/dist/core/kane-pilot-types.js +2 -0
- package/dist/core/kane-pilot-types.js.map +1 -0
- package/dist/core/kane-pilot.d.ts +25 -0
- package/dist/core/kane-pilot.d.ts.map +1 -0
- package/dist/core/kane-pilot.js +255 -0
- package/dist/core/kane-pilot.js.map +1 -0
- package/dist/core/project-config-kane.d.ts +27 -0
- package/dist/core/project-config-kane.d.ts.map +1 -0
- package/dist/core/project-config-kane.js +152 -0
- package/dist/core/project-config-kane.js.map +1 -0
- package/dist/core/project-config.d.ts +11 -0
- package/dist/core/project-config.d.ts.map +1 -1
- package/dist/core/project-config.js +7 -5
- package/dist/core/project-config.js.map +1 -1
- package/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-codify-verification/SKILL.md +2 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-doctor/SKILL.md +7 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-exploratory-qa/SKILL.md +3 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-claim/SKILL.md +27 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-claim/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-implement/SKILL.md +50 -14
- package/plugins/lisa/.codex-plugin/skills/lisa-improve-harness/SKILL.md +487 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-improve-harness/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-claim/SKILL.md +27 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-claim/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-kane-browser/SKILL.md +80 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-kane-browser/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-claim/SKILL.md +27 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-claim/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-monitor/SKILL.md +2 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-parity-coderabbit/SKILL.md +10 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-product-walkthrough/SKILL.md +2 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-review-local/SKILL.md +11 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-kane/SKILL.md +96 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-kane/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-track/SKILL.md +71 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-track/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-claim/SKILL.md +35 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-claim/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-use-the-product/SKILL.md +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-verification-lifecycle/SKILL.md +3 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-verify/SKILL.md +1 -0
- package/plugins/lisa/agents/product-specialist.md +2 -0
- package/plugins/lisa/agents/quality-specialist.md +4 -1
- package/plugins/lisa/agents/verification-specialist.md +2 -2
- package/plugins/lisa/commands/improve-harness.md +6 -0
- package/plugins/lisa/commands/track.md +6 -0
- package/plugins/lisa/rules/eager/config-resolution.md +9 -0
- package/plugins/lisa/rules/eager/convergent-review.md +19 -0
- package/plugins/lisa/rules/eager/tracked-work.md +7 -0
- package/plugins/lisa/rules/eager/verification.md +1 -1
- package/plugins/lisa/rules/reference/config-resolution.md +26 -1
- package/plugins/lisa/rules/reference/convergent-review.md +69 -0
- package/plugins/lisa/rules/reference/tracked-work.md +26 -0
- package/plugins/lisa/rules/reference/verification.md +4 -2
- package/plugins/lisa/skills/lisa-codify-verification/SKILL.md +2 -0
- package/plugins/lisa/skills/lisa-doctor/SKILL.md +7 -0
- package/plugins/lisa/skills/lisa-exploratory-qa/SKILL.md +3 -0
- package/plugins/lisa/skills/lisa-github-claim/SKILL.md +27 -0
- package/plugins/lisa/skills/lisa-github-claim/agents/openai.yaml +4 -0
- package/plugins/lisa/skills/lisa-implement/SKILL.md +50 -14
- package/plugins/lisa/skills/lisa-improve-harness/SKILL.md +487 -0
- package/plugins/lisa/skills/lisa-improve-harness/agents/openai.yaml +4 -0
- package/plugins/lisa/skills/lisa-jira-claim/SKILL.md +27 -0
- package/plugins/lisa/skills/lisa-jira-claim/agents/openai.yaml +4 -0
- package/plugins/lisa/skills/lisa-kane-browser/SKILL.md +80 -0
- package/plugins/lisa/skills/lisa-kane-browser/agents/openai.yaml +4 -0
- package/plugins/lisa/skills/lisa-linear-claim/SKILL.md +27 -0
- package/plugins/lisa/skills/lisa-linear-claim/agents/openai.yaml +4 -0
- package/plugins/lisa/skills/lisa-monitor/SKILL.md +2 -0
- package/plugins/lisa/skills/lisa-parity-coderabbit/SKILL.md +10 -0
- package/plugins/lisa/skills/lisa-product-walkthrough/SKILL.md +2 -0
- package/plugins/lisa/skills/lisa-review-local/SKILL.md +11 -0
- package/plugins/lisa/skills/lisa-setup-kane/SKILL.md +96 -0
- package/plugins/lisa/skills/lisa-setup-kane/agents/openai.yaml +4 -0
- package/plugins/lisa/skills/lisa-track/SKILL.md +71 -0
- package/plugins/lisa/skills/lisa-track/agents/openai.yaml +4 -0
- package/plugins/lisa/skills/lisa-tracker-claim/SKILL.md +35 -0
- package/plugins/lisa/skills/lisa-tracker-claim/agents/openai.yaml +4 -0
- package/plugins/lisa/skills/lisa-use-the-product/SKILL.md +1 -1
- package/plugins/lisa/skills/lisa-verification-lifecycle/SKILL.md +3 -1
- package/plugins/lisa/skills/lisa-verify/SKILL.md +1 -0
- package/plugins/lisa-agy/agents/product-specialist.md +2 -0
- package/plugins/lisa-agy/agents/quality-specialist.md +4 -1
- package/plugins/lisa-agy/agents/verification-specialist.md +2 -2
- package/plugins/lisa-agy/commands/lisa/improve-harness.md +6 -0
- package/plugins/lisa-agy/commands/lisa/track.md +6 -0
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/lisa-codify-verification/SKILL.md +2 -0
- package/plugins/lisa-agy/skills/lisa-doctor/SKILL.md +7 -0
- package/plugins/lisa-agy/skills/lisa-exploratory-qa/SKILL.md +3 -0
- package/plugins/lisa-agy/skills/lisa-github-claim/SKILL.md +27 -0
- package/plugins/lisa-agy/skills/lisa-implement/SKILL.md +50 -14
- package/plugins/lisa-agy/skills/lisa-improve-harness/SKILL.md +487 -0
- package/plugins/lisa-agy/skills/lisa-jira-claim/SKILL.md +27 -0
- package/plugins/lisa-agy/skills/lisa-kane-browser/SKILL.md +80 -0
- package/plugins/lisa-agy/skills/lisa-linear-claim/SKILL.md +27 -0
- package/plugins/lisa-agy/skills/lisa-monitor/SKILL.md +2 -0
- package/plugins/lisa-agy/skills/lisa-parity-coderabbit/SKILL.md +10 -0
- package/plugins/lisa-agy/skills/lisa-product-walkthrough/SKILL.md +2 -0
- package/plugins/lisa-agy/skills/lisa-review-local/SKILL.md +11 -0
- package/plugins/lisa-agy/skills/lisa-setup-kane/SKILL.md +96 -0
- package/plugins/lisa-agy/skills/lisa-track/SKILL.md +71 -0
- package/plugins/lisa-agy/skills/lisa-tracker-claim/SKILL.md +35 -0
- package/plugins/lisa-agy/skills/lisa-use-the-product/SKILL.md +1 -1
- package/plugins/lisa-agy/skills/lisa-verification-lifecycle/SKILL.md +3 -1
- package/plugins/lisa-agy/skills/lisa-verify/SKILL.md +1 -0
- 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-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/agents/product-specialist.agent.md +2 -0
- package/plugins/lisa-copilot/agents/quality-specialist.agent.md +4 -1
- package/plugins/lisa-copilot/agents/verification-specialist.agent.md +2 -2
- package/plugins/lisa-copilot/commands/lisa/improve-harness.md +6 -0
- package/plugins/lisa-copilot/commands/lisa/track.md +6 -0
- package/plugins/lisa-copilot/rules/eager/config-resolution.md +9 -0
- package/plugins/lisa-copilot/rules/eager/convergent-review.md +19 -0
- package/plugins/lisa-copilot/rules/eager/tracked-work.md +7 -0
- package/plugins/lisa-copilot/rules/eager/verification.md +1 -1
- package/plugins/lisa-copilot/rules/reference/config-resolution.md +26 -1
- package/plugins/lisa-copilot/rules/reference/convergent-review.md +69 -0
- package/plugins/lisa-copilot/rules/reference/tracked-work.md +26 -0
- package/plugins/lisa-copilot/rules/reference/verification.md +4 -2
- package/plugins/lisa-copilot/skills/lisa-codify-verification/SKILL.md +2 -0
- package/plugins/lisa-copilot/skills/lisa-doctor/SKILL.md +7 -0
- package/plugins/lisa-copilot/skills/lisa-exploratory-qa/SKILL.md +3 -0
- package/plugins/lisa-copilot/skills/lisa-github-claim/SKILL.md +27 -0
- package/plugins/lisa-copilot/skills/lisa-implement/SKILL.md +50 -14
- package/plugins/lisa-copilot/skills/lisa-improve-harness/SKILL.md +487 -0
- package/plugins/lisa-copilot/skills/lisa-jira-claim/SKILL.md +27 -0
- package/plugins/lisa-copilot/skills/lisa-kane-browser/SKILL.md +80 -0
- package/plugins/lisa-copilot/skills/lisa-linear-claim/SKILL.md +27 -0
- package/plugins/lisa-copilot/skills/lisa-monitor/SKILL.md +2 -0
- package/plugins/lisa-copilot/skills/lisa-parity-coderabbit/SKILL.md +10 -0
- package/plugins/lisa-copilot/skills/lisa-product-walkthrough/SKILL.md +2 -0
- package/plugins/lisa-copilot/skills/lisa-review-local/SKILL.md +11 -0
- package/plugins/lisa-copilot/skills/lisa-setup-kane/SKILL.md +96 -0
- package/plugins/lisa-copilot/skills/lisa-track/SKILL.md +71 -0
- package/plugins/lisa-copilot/skills/lisa-tracker-claim/SKILL.md +35 -0
- package/plugins/lisa-copilot/skills/lisa-use-the-product/SKILL.md +1 -1
- package/plugins/lisa-copilot/skills/lisa-verification-lifecycle/SKILL.md +3 -1
- package/plugins/lisa-copilot/skills/lisa-verify/SKILL.md +1 -0
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/agents/product-specialist.md +2 -0
- package/plugins/lisa-cursor/agents/quality-specialist.md +4 -1
- package/plugins/lisa-cursor/agents/verification-specialist.md +2 -2
- package/plugins/lisa-cursor/commands/lisa/improve-harness.md +6 -0
- package/plugins/lisa-cursor/commands/lisa/track.md +6 -0
- package/plugins/lisa-cursor/rules/config-resolution-reference.mdc +26 -1
- package/plugins/lisa-cursor/rules/config-resolution.mdc +9 -0
- package/plugins/lisa-cursor/rules/convergent-review-reference.mdc +74 -0
- package/plugins/lisa-cursor/rules/convergent-review.mdc +24 -0
- package/plugins/lisa-cursor/rules/tracked-work-reference.mdc +31 -0
- package/plugins/lisa-cursor/rules/tracked-work.mdc +12 -0
- package/plugins/lisa-cursor/rules/verification-reference.mdc +4 -2
- package/plugins/lisa-cursor/rules/verification.mdc +1 -1
- package/plugins/lisa-cursor/skills/lisa-codify-verification/SKILL.md +2 -0
- package/plugins/lisa-cursor/skills/lisa-doctor/SKILL.md +7 -0
- package/plugins/lisa-cursor/skills/lisa-exploratory-qa/SKILL.md +3 -0
- package/plugins/lisa-cursor/skills/lisa-github-claim/SKILL.md +27 -0
- package/plugins/lisa-cursor/skills/lisa-implement/SKILL.md +50 -14
- package/plugins/lisa-cursor/skills/lisa-improve-harness/SKILL.md +487 -0
- package/plugins/lisa-cursor/skills/lisa-jira-claim/SKILL.md +27 -0
- package/plugins/lisa-cursor/skills/lisa-kane-browser/SKILL.md +80 -0
- package/plugins/lisa-cursor/skills/lisa-linear-claim/SKILL.md +27 -0
- package/plugins/lisa-cursor/skills/lisa-monitor/SKILL.md +2 -0
- package/plugins/lisa-cursor/skills/lisa-parity-coderabbit/SKILL.md +10 -0
- package/plugins/lisa-cursor/skills/lisa-product-walkthrough/SKILL.md +2 -0
- package/plugins/lisa-cursor/skills/lisa-review-local/SKILL.md +11 -0
- package/plugins/lisa-cursor/skills/lisa-setup-kane/SKILL.md +96 -0
- package/plugins/lisa-cursor/skills/lisa-track/SKILL.md +71 -0
- package/plugins/lisa-cursor/skills/lisa-tracker-claim/SKILL.md +35 -0
- package/plugins/lisa-cursor/skills/lisa-use-the-product/SKILL.md +1 -1
- package/plugins/lisa-cursor/skills/lisa-verification-lifecycle/SKILL.md +3 -1
- package/plugins/lisa-cursor/skills/lisa-verify/SKILL.md +1 -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-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-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-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-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-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-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-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/src/base/agents/product-specialist.md +2 -0
- package/plugins/src/base/agents/quality-specialist.md +4 -1
- package/plugins/src/base/agents/verification-specialist.md +2 -2
- package/plugins/src/base/commands/improve-harness.md +6 -0
- package/plugins/src/base/commands/track.md +6 -0
- package/plugins/src/base/rules/eager/config-resolution.md +9 -0
- package/plugins/src/base/rules/eager/convergent-review.md +19 -0
- package/plugins/src/base/rules/eager/tracked-work.md +7 -0
- package/plugins/src/base/rules/eager/verification.md +1 -1
- package/plugins/src/base/rules/reference/config-resolution.md +26 -1
- package/plugins/src/base/rules/reference/convergent-review.md +69 -0
- package/plugins/src/base/rules/reference/tracked-work.md +26 -0
- package/plugins/src/base/rules/reference/verification.md +4 -2
- package/plugins/src/base/skills/lisa-codify-verification/SKILL.md +2 -0
- package/plugins/src/base/skills/lisa-doctor/SKILL.md +7 -0
- package/plugins/src/base/skills/lisa-exploratory-qa/SKILL.md +3 -0
- package/plugins/src/base/skills/lisa-github-claim/SKILL.md +27 -0
- package/plugins/src/base/skills/lisa-implement/SKILL.md +50 -14
- package/plugins/src/base/skills/lisa-improve-harness/SKILL.md +487 -0
- package/plugins/src/base/skills/lisa-jira-claim/SKILL.md +27 -0
- package/plugins/src/base/skills/lisa-kane-browser/SKILL.md +80 -0
- package/plugins/src/base/skills/lisa-linear-claim/SKILL.md +27 -0
- package/plugins/src/base/skills/lisa-monitor/SKILL.md +2 -0
- package/plugins/src/base/skills/lisa-parity-coderabbit/SKILL.md +10 -0
- package/plugins/src/base/skills/lisa-product-walkthrough/SKILL.md +2 -0
- package/plugins/src/base/skills/lisa-review-local/SKILL.md +11 -0
- package/plugins/src/base/skills/lisa-setup-kane/SKILL.md +96 -0
- package/plugins/src/base/skills/lisa-track/SKILL.md +71 -0
- package/plugins/src/base/skills/lisa-tracker-claim/SKILL.md +35 -0
- package/plugins/src/base/skills/lisa-use-the-product/SKILL.md +1 -1
- package/plugins/src/base/skills/lisa-verification-lifecycle/SKILL.md +3 -1
- package/plugins/src/base/skills/lisa-verify/SKILL.md +1 -0
- package/rails/copy-overwrite/lefthook.yml +10 -0
- package/scripts/lisa-work-item.mjs +5 -0
- package/typescript/copy-contents/.husky/commit-msg +9 -23
- package/typescript/copy-contents/.husky/pre-push +10 -0
- package/typescript/copy-contents/.husky/prepare-commit-msg +15 -0
|
@@ -34,6 +34,12 @@ For each changed file, `Read` the surrounding code and use `Grep`/`Glob` to foll
|
|
|
34
34
|
|
|
35
35
|
## Step 3: Review across all dimensions
|
|
36
36
|
|
|
37
|
+
Apply the `convergent-review` rule before deciding severity or whether a finding
|
|
38
|
+
blocks merge. Bias toward merge: block only concrete correctness, security,
|
|
39
|
+
data-loss, or contract-violation failures with evidence. Lint-owned style,
|
|
40
|
+
formatting, taste, and speculative maintainability improvements are non-blocking
|
|
41
|
+
unless the work item or repository rules explicitly make them release criteria.
|
|
42
|
+
|
|
37
43
|
Walk every meaningful hunk and evaluate each dimension. A finding in any dimension is fair game.
|
|
38
44
|
|
|
39
45
|
1. **Correctness / bugs** — Logic errors, off-by-one, inverted conditions, missing `await`, null/undefined handling, type coercion, broken control flow, incorrect defaults, mutation of shared state, race conditions, broken or missing tests for new behavior.
|
|
@@ -59,6 +65,9 @@ Group as **Critical → Major → Minor → Nit**. Every finding includes:
|
|
|
59
65
|
- **What** — the issue, and which dimension it falls under (bug / security / perf / maintainability / tests).
|
|
60
66
|
- **Where** — `path/to/file.ts:line`.
|
|
61
67
|
- **Why** — the concrete consequence, with a triggering example where relevant.
|
|
68
|
+
- **Blocking** — `yes` only for concrete correctness/security/data-loss/contract failures; otherwise `no`.
|
|
69
|
+
- **Failure scenario** — the concrete user, operator, security, or factory outcome if the change ships as-is.
|
|
70
|
+
- **Evidence** — the cited file, observed behavior, command output, or contract that proves the scenario is reachable.
|
|
62
71
|
- **Fix** — a concrete suggestion or code snippet.
|
|
63
72
|
|
|
64
73
|
### Walkthrough (optional but encouraged)
|
|
@@ -71,6 +80,7 @@ Call out what's done well. A credible review is balanced, not only critical.
|
|
|
71
80
|
|
|
72
81
|
- **Cover the whole diff.** If you deprioritize anything for size, say which files and why — never imply full coverage you didn't give.
|
|
73
82
|
- **Ground every finding in the code.** No generic checklists detached from the actual change; no speculative findings you can't point to.
|
|
83
|
+
- **Malformed blockers do not block.** If you cannot name a concrete failure scenario and evidence, report it as non-blocking context or omit it.
|
|
74
84
|
- **Concrete fixes only.** "Consider improving error handling" is not a finding; "wrap the `fetch` in try/catch and return a 502 on network error at `api/proxy.ts:31`" is.
|
|
75
85
|
- **No external review service.** Use only local git/tooling and the model — this is an independent review, not a CodeRabbit proxy.
|
|
76
86
|
- **Review-only.** Report findings; do not edit files. Route fixes through the implementation flow, `parity-code-simplifier` (quality), or a follow-up.
|
|
@@ -36,6 +36,8 @@ Write this list down. If you can't, the PRD is too vague — note it as a covera
|
|
|
36
36
|
|
|
37
37
|
**Invoke `use-the-product`** to detect the type, resolve the environment + mutation policy, and discover personas — then drive the surfaces from step 1 through its per-type playbook (browser for DOM, `curl` for an API, canvas+input for a game, `cdk synth`/`diff` for IaC). Capture evidence as you go: for a DOM app, a `browser_snapshot` (accessibility tree — best for reasoning) and a `browser_take_screenshot` (visual) per surface and per state, plus `browser_console_messages` / `browser_network_requests` after interactions; for an API, representative request/response pairs; for a game, screenshots of each state. If the project defines personas, walk the surfaces as the relevant archetype(s).
|
|
38
38
|
|
|
39
|
+
When the resolved DOM environment is non-production with mutation policy `full` and the configured Kane provider passes `lisa kane probe`, `use-the-product` may delegate the bounded journey to `lisa-kane-browser`. Extract its screenshot, HAR/network, console, and result artifacts into the normal Current Product evidence. Never use the expiring Test Manager link as the only evidence. A walkthrough that resolves `read-only` stays on a directly controlled browser backend during the initial Kane rollout.
|
|
40
|
+
|
|
39
41
|
Honor the mutation gate: on a `read-only` env, observe without submitting; never walk a `forbidden` env (production defaults to forbidden). Treat console errors, 4xx/5xx, and unexpected calls as findings.
|
|
40
42
|
|
|
41
43
|
## 3. Record findings
|
|
@@ -6,6 +6,14 @@ disable-model-invocation: false
|
|
|
6
6
|
|
|
7
7
|
Provide a code review for the local changes on the current branch compared to the main branch.
|
|
8
8
|
|
|
9
|
+
Apply the `convergent-review` rule throughout this skill: reviewers bias toward
|
|
10
|
+
merge, block only concrete correctness/security/data-loss/contract failures, and
|
|
11
|
+
must label every finding with severity, blocking status, failure scenario,
|
|
12
|
+
evidence, and fix. Lint-owned style, formatting, taste, and speculative
|
|
13
|
+
maintainability feedback are non-blocking unless a repository rule or work item
|
|
14
|
+
explicitly makes them release criteria. A blocking finding without a concrete
|
|
15
|
+
failure scenario is malformed and must be filtered out.
|
|
16
|
+
|
|
9
17
|
To do this, follow these steps precisely:
|
|
10
18
|
|
|
11
19
|
1. Use a Haiku agent to check the current git state:
|
|
@@ -24,6 +32,7 @@ To do this, follow these steps precisely:
|
|
|
24
32
|
c. Agent #3: Read the git blame and history of the code modified, to identify any bugs in light of that historical context
|
|
25
33
|
d. Agent #4: Read previous pull requests that touched these files, and check for any comments on those pull requests that may also apply to the current changes.
|
|
26
34
|
e. Agent #5: Read code comments in the modified files, and make sure the changes comply with any guidance in the comments.
|
|
35
|
+
Each agent must apply the severity bar from `convergent-review` and return only findings that include a concrete failure scenario and evidence. Non-blocking observations may be summarized separately, but must not be presented as required changes.
|
|
27
36
|
5. For each issue found in #4, launch a parallel Haiku agent that takes the diff, issue description, and list of CLAUDE.md files (from step 2), and returns a score to indicate the agent's level of confidence for whether the issue is real or false positive. To do that, the agent should score each issue on a scale from 0-100, indicating its level of confidence. For issues that were flagged due to CLAUDE.md instructions, the agent should double check that the CLAUDE.md actually calls out that issue specifically. The scale is (give this rubric to the agent verbatim):
|
|
28
37
|
a. 0: Not confident at all. This is a false positive that doesn't stand up to light scrutiny, or is a pre-existing issue.
|
|
29
38
|
b. 25: Somewhat confident. This might be a real issue, but may also be a false positive. The agent wasn't able to verify that it's a real issue. If the issue is stylistic, it is one that was not explicitly called out in the relevant CLAUDE.md.
|
|
@@ -31,6 +40,7 @@ To do this, follow these steps precisely:
|
|
|
31
40
|
d. 75: Highly confident. The agent double checked the issue, and verified that it is very likely it is a real issue that will be hit in practice. The existing approach is insufficient. The issue is very important and will directly impact the code's functionality, or it is an issue that is directly mentioned in the relevant CLAUDE.md.
|
|
32
41
|
e. 100: Absolutely certain. The agent double checked the issue, and confirmed that it is definitely a real issue, that will happen frequently in practice. The evidence directly confirms this.
|
|
33
42
|
6. Filter out any issues with a score less than 80.
|
|
43
|
+
6a. Filter out any blocking issue that does not name a concrete failure scenario in one of the `convergent-review` blocker classes. Keep it only as non-blocking context if it is useful.
|
|
34
44
|
7. Write the review to claude-review.md. When writing your review, keep in mind to:
|
|
35
45
|
a. Keep your output brief
|
|
36
46
|
b. Avoid emojis
|
|
@@ -44,6 +54,7 @@ Examples of false positives, for steps 4 and 5:
|
|
|
44
54
|
- Pedantic nitpicks that a senior engineer wouldn't call out
|
|
45
55
|
- Issues that a linter, typechecker, or compiler would catch (eg. missing or incorrect imports, type errors, broken tests, formatting issues, pedantic style issues like newlines). No need to run these build steps yourself -- it is safe to assume that they will be run separately as part of CI.
|
|
46
56
|
- General code quality issues (eg. lack of test coverage, general security issues, poor documentation), unless explicitly required in CLAUDE.md
|
|
57
|
+
- Findings that restate lint-owned style, formatting, taste, or speculative cleanup as blockers without a concrete failure scenario
|
|
47
58
|
- Issues that are called out in CLAUDE.md, but explicitly silenced in the code (eg. due to a lint ignore comment)
|
|
48
59
|
- Changes in functionality that are likely intentional or are directly related to the broader change
|
|
49
60
|
- Real issues, but on lines that were not modified in the current branch
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: lisa-setup-kane
|
|
3
|
+
description: "Configure TestMu Kane CLI as an optional Lisa empirical-browser provider. Performs the exterior human approval gate for mandatory cloud uploads, verifies the pinned CLI version, provisions local/CI authentication, selects a Test Manager project/folder, runs a disposable synthetic check, and writes only non-secret policy identifiers to Lisa config."
|
|
4
|
+
allowed-tools: ["Bash", "Read", "Write", "Edit", "AskUserQuestion"]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Setup Kane CLI
|
|
8
|
+
|
|
9
|
+
This is an explicit exterior setup gate. It may involve a human because authentication and cloud
|
|
10
|
+
data approval must be complete before unattended factories run. Never invoke setup from inside an
|
|
11
|
+
active Build, QA, Monitor, or Verify factory.
|
|
12
|
+
|
|
13
|
+
## 1. Explain the data boundary and obtain approval
|
|
14
|
+
|
|
15
|
+
Explain that every authored Kane session uploads screenshots, the objective, action logs, variables
|
|
16
|
+
in scope, metadata, and packaged run artifacts to TestMu Test Manager. Explain that share links are
|
|
17
|
+
secondary evidence and can be accessible outside project membership for their validity window.
|
|
18
|
+
Clarify that this is privacy and data-egress approval, not purchase authorization: Lisa's adapter
|
|
19
|
+
uses local Chrome rather than TestMu's paid remote grid, while Test Manager upload remains the
|
|
20
|
+
default for local runs and Kane's AI features still require available account credits.
|
|
21
|
+
|
|
22
|
+
Ask exactly one approval question: approve TestMu cloud upload for disposable dev/staging test data,
|
|
23
|
+
or decline. On decline, leave configuration unchanged and report that Lisa's native controllers
|
|
24
|
+
remain available.
|
|
25
|
+
|
|
26
|
+
## 2. Install and pin
|
|
27
|
+
|
|
28
|
+
Require Kane CLI `0.6.3`, the version covered by Lisa's adapter contract:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
kane-cli --version
|
|
32
|
+
npm install -g @testmuai/kane-cli@0.6.3 # only after setup approval if missing/wrong
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Do not use `npx @testmuai/kane-cli-skill` and do not append vendor content to `AGENTS.md`.
|
|
36
|
+
|
|
37
|
+
## 3. Authenticate outside the factory
|
|
38
|
+
|
|
39
|
+
- Developer machine: run `kane-cli login --oauth` and let the operator complete browser consent.
|
|
40
|
+
- CI/headless: provision a dedicated TestMu service identity using the platform's secret store. Do
|
|
41
|
+
not put username/access key in `.lisa.config.json`, command history, a ticket, or chat.
|
|
42
|
+
|
|
43
|
+
Verify with `kane-cli whoami`. Record the identity label, never token material.
|
|
44
|
+
|
|
45
|
+
## 4. Select the Test Manager target
|
|
46
|
+
|
|
47
|
+
Use `kane-cli config project` and optional `kane-cli config folder`, then `kane-cli config show`.
|
|
48
|
+
Capture the non-secret project/folder identifiers. Use a dedicated Lisa pilot project with access
|
|
49
|
+
restricted to the engineering/QA operators who may view uploaded artifacts.
|
|
50
|
+
|
|
51
|
+
## 5. Write policy configuration
|
|
52
|
+
|
|
53
|
+
Merge this shape into committed `.lisa.config.json`, preserving every unrelated key:
|
|
54
|
+
|
|
55
|
+
```json
|
|
56
|
+
{
|
|
57
|
+
"verification": {
|
|
58
|
+
"browser": {
|
|
59
|
+
"kane": {
|
|
60
|
+
"enabled": true,
|
|
61
|
+
"version": "0.6.3",
|
|
62
|
+
"cloudUploadApproved": true,
|
|
63
|
+
"allowedEnvironments": ["dev", "staging"],
|
|
64
|
+
"projectId": "<project-id>",
|
|
65
|
+
"folderId": "<optional-folder-id>",
|
|
66
|
+
"timeoutSeconds": 120
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Production environments are invalid. Developer-specific overrides may live in
|
|
74
|
+
`.lisa.config.local.json`, but shared provider policy and Test Manager identifiers belong in the
|
|
75
|
+
committed config. Never write credentials to either file.
|
|
76
|
+
|
|
77
|
+
## 6. Prove readiness
|
|
78
|
+
|
|
79
|
+
Run `lisa kane probe . --json`, then run a harmless synthetic journey against a disposable local or
|
|
80
|
+
dev fixture with mutation policy `full`. Confirm the normalized result, evidence pack, Test Manager
|
|
81
|
+
link, screenshot, HAR, and console record. If any is missing, setup is incomplete.
|
|
82
|
+
|
|
83
|
+
## 7. Prepare the controlled pilot
|
|
84
|
+
|
|
85
|
+
Create a pilot manifest from `docs/kane-cli-pilot.example.json`, point it at at least two disposable
|
|
86
|
+
downstream web applications, set the start timestamp and credit budget, then run:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
lisa kane pilot <manifest>
|
|
90
|
+
lisa kane pilot <manifest> --report-only
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
The pilot remains `collecting` until at least 30 days, 50 runs, and two observations per case exist.
|
|
94
|
+
After the full window, an exterior security/privacy reviewer adds
|
|
95
|
+
`policyReview: { "reviewedAt": "<ISO timestamp>", "incidents": <count> }` to the manifest. Never
|
|
96
|
+
pre-attest zero incidents at pilot start. Only an `adopt` verdict permits wider enablement.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: lisa-track
|
|
3
|
+
description: "Resolves exactly one live configured-tracker leaf for durable project work, claims it idempotently, and persists its canonical reference in worktree-local state. Accepts an existing Jira/GitHub/Linear ref, a spec file, or plain text. Use directly to mention/create the related ticket, and as lisa-implement's mandatory input gate."
|
|
4
|
+
allowed-tools: ["Skill", "Bash", "Read"]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Track Work: $ARGUMENTS
|
|
8
|
+
|
|
9
|
+
Establish the tracked-work invariant before any durable project mutation. Discussion and read-only orientation may proceed without this skill; code, configuration, documentation, research artifacts, plans, investigation findings, tests, commits, and pull requests may not.
|
|
10
|
+
|
|
11
|
+
This flow must return exactly one canonical `(tracker_provider, work_item_ref)` pair or fail closed. It never returns an unvalidated textual guess.
|
|
12
|
+
|
|
13
|
+
## Phase 1 — Resolve tracker and classify input
|
|
14
|
+
|
|
15
|
+
1. Resolve merged `.lisa.config.local.json` over `.lisa.config.json` exactly as `lisa-tracker-read` / `lisa-tracker-write` do. Missing, unknown, or incomplete tracker configuration is a blocking error.
|
|
16
|
+
2. Classify `$ARGUMENTS` as exactly one of:
|
|
17
|
+
- an explicit reference matching the configured tracker (`KEY-123`, `org/repo#123` or issue URL, Linear team identifier);
|
|
18
|
+
- an existing file path containing a specification (read the entire file, without offset/limit);
|
|
19
|
+
- plain-text work description.
|
|
20
|
+
3. Preserve the full resolved specification for the caller. Do not treat a ticket-like token for a different provider/project as plain text; report the mismatch.
|
|
21
|
+
|
|
22
|
+
## Phase 2 — Resolve one live work item
|
|
23
|
+
|
|
24
|
+
### Explicit reference
|
|
25
|
+
|
|
26
|
+
Invoke `lisa-tracker-read <ref>` and require a live result from the configured project. Reject nonexistent, inaccessible, closed/resolved/terminal, wrong-project, wrong-repository, or container items. This live read is mandatory even if caller context already includes ticket text.
|
|
27
|
+
|
|
28
|
+
### File or plain text
|
|
29
|
+
|
|
30
|
+
Search conservatively before creating:
|
|
31
|
+
|
|
32
|
+
1. Normalize the requested outcome and derive a short keyword set; never search with the whole prompt or secrets.
|
|
33
|
+
2. Search only open/non-terminal items in the configured project and current repository through the configured provider's documented read surface:
|
|
34
|
+
- GitHub: `gh issue list --repo <org>/<repo> --state open --search "<keywords> in:title,body"`.
|
|
35
|
+
- Jira: `lisa-atlassian-access operation: search-issues` with project-scoped JQL.
|
|
36
|
+
- Linear: `lisa-linear-access operation: list-issues` scoped to the configured team/workspace.
|
|
37
|
+
3. Treat search results as candidates, never proof. Live-read each plausible candidate through `lisa-tracker-read`, and discard terminal, container, blocked, cross-repo, and materially different outcomes.
|
|
38
|
+
4. Reuse only when **exactly one** live leaf is a high-confidence semantic match for the same requested outcome and repository. A shared keyword or similar title is not enough. Record the search queries, candidates, and rejection reasons in the returned resolution evidence.
|
|
39
|
+
5. If there is no unique high-confidence match (zero or ambiguous candidates), create **exactly one** item by invoking `lisa-tracker-write` once. Synthesize one complete single-repository leaf (`Bug`, `Task`, `Sub-task`, or `Improvement`, never Epic/container) with the writer's required three-audience body, Gherkin acceptance criteria, repository, target environment, relationship search, and executable Validation Journey. Pass `build_ready: true`. Do not create placeholder/thin tickets, do not create a hierarchy, and do not retry creation by making another item if validation fails; repair the proposed spec and retry the same writer operation only if the vendor contract supports idempotent reuse.
|
|
40
|
+
6. Live-read the writer's canonical returned reference with `lisa-tracker-read`. A create response without a verified live leaf is failure.
|
|
41
|
+
|
|
42
|
+
This is intentionally conservative: ambiguity creates one explicit work item instead of silently attaching work to the wrong existing item. Across the entire invocation, at most one new work item may be created.
|
|
43
|
+
|
|
44
|
+
## Phase 3 — Claim and bind
|
|
45
|
+
|
|
46
|
+
1. Invoke `lisa-tracker-claim <canonical-ref>`. Require its post-read verified `claim_outcome: claimed|reused`; no binding may be written after a failed/unverified claim.
|
|
47
|
+
2. Persist only the canonical reference in worktree-local machine state:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
node scripts/lisa-work-item.mjs bind <canonical-ref>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
3. Read the binding back through `node scripts/lisa-work-item.mjs current` and require it to equal the canonical reference. If binding fails, stop before durable project work.
|
|
54
|
+
- A detached-HEAD worktree is valid at this stage: the binding records `branch: null` as a pending state. Create the feature branch only after the gate succeeds, then run `node scripts/lisa-work-item.mjs attach-branch`. Commit preparation and validation fail closed until that attachment succeeds.
|
|
55
|
+
4. Return this structured result plus the full resolved work-item context:
|
|
56
|
+
|
|
57
|
+
```text
|
|
58
|
+
tracker_provider: jira|github|linear
|
|
59
|
+
work_item_ref: <canonical-ref>
|
|
60
|
+
resolution_outcome: explicit|reused|created
|
|
61
|
+
claim_outcome: claimed|reused
|
|
62
|
+
binding_outcome: verified
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Lifecycle
|
|
66
|
+
|
|
67
|
+
- The binding is worktree-local, uncommitted machine state. Never write it into tracked source files.
|
|
68
|
+
- Branch setup may call `node scripts/lisa-work-item.mjs attach-branch` after the feature branch exists.
|
|
69
|
+
- Keep the binding across ordinary interruptions and blocked outcomes so resumed work remains attributable.
|
|
70
|
+
- Clear it only after true terminal completion — merged, deployed/verified where required, tracker evidence/backlink complete, and the work item terminal — by running `node scripts/lisa-work-item.mjs clear` and verifying no current binding remains.
|
|
71
|
+
- A tracker outage, invalid item, failed claim, or failed binding blocks durable work. Never continue untracked and never ask a Git hook to create the item.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: lisa-tracker-claim
|
|
3
|
+
description: "Vendor-neutral dispatcher for idempotently claiming one already live-validated leaf work item. Reads the required tracker from .lisa.config.json and delegates to lisa-jira-claim, lisa-github-claim, or lisa-linear-claim. The vendor skill owns the post-read leaf/open guard, ready-to-claimed mutation, attributable assignment, and post-write verification."
|
|
4
|
+
allowed-tools: ["Skill", "Bash", "Read"]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Tracker Claim: $ARGUMENTS
|
|
8
|
+
|
|
9
|
+
Thin dispatcher. `$ARGUMENTS` must contain exactly one canonical work-item reference. The caller must have already fetched it with `lisa-tracker-read`; each vendor claim skill independently repeats the live read before mutation and verifies the claim afterward so stale caller context cannot authorize a write.
|
|
10
|
+
|
|
11
|
+
## Workflow
|
|
12
|
+
|
|
13
|
+
1. Resolve merged tracker config exactly as `lisa-tracker-write` does:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
local_tracker=$(jq -r '.tracker // empty' .lisa.config.local.json 2>/dev/null)
|
|
17
|
+
global_tracker=$(jq -r '.tracker // empty' .lisa.config.json 2>/dev/null)
|
|
18
|
+
tracker="${local_tracker:-$global_tracker}"
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
2. Dispatch without changing `$ARGUMENTS`:
|
|
22
|
+
- Missing / empty -> stop and report `"No tracker configured in .lisa.config.json. Run /lisa:setup:jira, /lisa:setup:github, or /lisa:setup:linear first."`
|
|
23
|
+
- `jira` -> invoke `lisa-jira-claim`.
|
|
24
|
+
- `github` -> invoke `lisa-github-claim`.
|
|
25
|
+
- `linear` -> invoke `lisa-linear-claim`.
|
|
26
|
+
- Anything else -> stop and report `"Unknown tracker '<value>' in .lisa.config.json. Expected 'jira', 'github', or 'linear'."`
|
|
27
|
+
3. Return the vendor result unchanged. Success must include `tracker_provider`, canonical `work_item_ref`, `claim_outcome: claimed|reused`, and the post-write live-read evidence.
|
|
28
|
+
|
|
29
|
+
## Contract
|
|
30
|
+
|
|
31
|
+
- Claim only an open/unresolved, current-repository leaf per `leaf-only-lifecycle` and `repo-scope-split`. Never claim a container, terminal item, inaccessible item, or item from a different configured project.
|
|
32
|
+
- Preserve later active lifecycle states. If the item is already in the configured claimed role or a later non-terminal role, return `reused`; never move it backward.
|
|
33
|
+
- A fresh claim uses the same idempotency lock as the three build-intake Phase 3b flows: move configured ready to configured claimed, or place an unlaned backlog leaf directly in claimed; assign to the authenticated user only when unassigned; never replace an existing owner.
|
|
34
|
+
- Fail closed if the mutation or post-write read cannot prove the claimed-or-later state. A tracker outage is a blocker, not permission to work untracked.
|
|
35
|
+
- This skill claims existing work only. It never creates a ticket and never writes the worktree binding.
|
|
@@ -66,7 +66,7 @@ Look for the project's personas: `wiki/personas/**` (target-player archetypes, s
|
|
|
66
66
|
|
|
67
67
|
Apply the interface's *read-only* actions always; the *mutate* actions only when the policy is `full`.
|
|
68
68
|
|
|
69
|
-
- **DOM web app** — a real browser controlled interactively through any capable backend (in-app Browser/Chrome, Playwright MCP/API/ad hoc script, CDP, computer use, or equivalent). Land cold on the entry page, then click / type / select / submit visible controls and attempt real tasks; sweep viewport widths. The controller is an implementation detail; a missing preferred backend is not a blocker when another can drive the same live journey. A Playwright test run alone is not this evidence. *(The caller's lens supplies the specific things to look for.)*
|
|
69
|
+
- **DOM web app** — a real browser controlled interactively through any capable backend (in-app Browser/Chrome, Playwright MCP/API/ad hoc script, CDP, computer use, the opt-in Lisa-owned Kane adapter, or equivalent). Land cold on the entry page, then click / type / select / submit visible controls and attempt real tasks; sweep viewport widths. The controller is an implementation detail; a missing preferred backend is not a blocker when another can drive the same live journey. A Playwright test run alone is not this evidence. Kane is selected only via `lisa-kane-browser`, only after `lisa kane probe` succeeds, and only for an allowed non-production env whose mutation policy is `full`; use a more directly controlled backend for `read-only` journeys. *(The caller's lens supplies the specific things to look for.)*
|
|
70
70
|
- **HTTP / API backend** — the consumer is a client, not a browser. Read-only: read the OpenAPI/routes and call safe `GET`s (`curl`/`httpie`). Mutate: exercise representative `POST`/`PUT`/`DELETE` flows with test data as the `identity`; check status codes, payload shapes, and error responses.
|
|
71
71
|
- **Canvas game** — a real browser, but the UI is **drawn to a canvas, not the DOM**. Boot it (e.g. `bun run dev` + Playwright), drive via **keyboard/pointer into the canvas**, and read state **visually via screenshots** (not the accessibility tree). Mutation is usually local save state. Judge readability, game-feel, and input responsiveness — not DOM breakpoints.
|
|
72
72
|
- **CLI / library** — the interface is the command / public API. Read-only: `--help`, read-only commands, dry-runs. Mutate: run state-changing commands with disposable inputs.
|
|
@@ -35,7 +35,9 @@ For each required verification type, discover what tools are available in the pr
|
|
|
35
35
|
|
|
36
36
|
Report what is available for each required type. If a required type has no available tool, proceed to step 4.
|
|
37
37
|
|
|
38
|
-
For UI verification, treat the browser controller as implementation-neutral. Check for an in-app Browser/Chrome tool, interactive Playwright control (MCP, API, or ad hoc script), CDP, computer use, or an equivalent controller that can drive a real browser session. Do not require one named backend, and do not declare a tooling block while any capable interactive controller is available. Running an automated Playwright or Maestro test is not a substitute for this live interaction; it becomes the regression gate only after the empirical journey passes.
|
|
38
|
+
For UI verification, treat the browser controller as implementation-neutral. Check for an in-app Browser/Chrome tool, interactive Playwright control (MCP, API, or ad hoc script), CDP, computer use, the optional Lisa-owned Kane CLI adapter, or an equivalent controller that can drive a real browser session. Do not require one named backend, and do not declare a tooling block while any capable interactive controller is available. Running an automated Playwright or Maestro test is not a substitute for this live interaction; it becomes the regression gate only after the empirical journey passes.
|
|
39
|
+
|
|
40
|
+
Kane is eligible only when `verification.browser.kane.enabled` and `cloudUploadApproved` are true, `lisa kane probe` passes, the target is an explicitly allowed non-production environment, and `use-the-product` resolves mutation policy `full`. Invoke `lisa-kane-browser`; never install or follow the vendor's broad `agents.md` instructions. A Kane tool/auth/upload/schema failure is a tooling blocker, not a product failure. Kane evidence may prove the empirical journey, but project-native Playwright/Cypress/Maestro remains the codified regression authority.
|
|
39
41
|
|
|
40
42
|
If a required verification type needs sign-in or other credentials, exhaust credential sources before declaring the verification blocked. Check credential sources in this order:
|
|
41
43
|
|
|
@@ -41,6 +41,7 @@ Execute the **Verify** flow as defined in the `intent-routing` rule (loaded via
|
|
|
41
41
|
4. **Review loop** — handle CodeRabbit / human review comments via `lisa-pull-request-review`
|
|
42
42
|
5. **Merge** when CI is green
|
|
43
43
|
6. **Remote verification** — invoke the `lisa-monitor` skill against the target environment **in report-only mode** (`lisa-monitor <env> --report-only`) to confirm the deploy actually works (health endpoints, recent logs/errors, Validation Journey replay if defined). `--report-only` is required here: it keeps the post-deploy check a pure health/audit report and prevents monitor's standalone ticket-filing from creating issues during a verify run. If remote verification surfaces a behavioral gap that the existing codified tests do not guard, invoke `codify-verification` to add coverage and open a follow-up PR.
|
|
44
|
+
- When the Validation Journey is DOM-web, the target is an allowed non-production environment with mutation policy `full`, and `lisa kane probe` succeeds, verification may invoke `lisa-kane-browser`. Import the local evidence pack into Lisa's evidence flow; the Test Manager URL is secondary. Kane does not replace the pre-flight Playwright/Maestro codification gate.
|
|
44
45
|
- When remote verification needs credentials, follow the shared `verification-lifecycle` credential lookup order before declaring them missing: project e2e / Playwright config and fixtures first, then `.lisa.config.local.json` / environment variables, then documented ticket credentials such as a `Sign-in Required` section.
|
|
45
46
|
- Should credentials remain genuinely unavailable after those sources are exhausted, do not complete the item on artifact-only evidence. Post a tracker comment stating what could not be verified and why, transition the work item to the configured blocked state, and apply the configured `needs-human` / `human-review` label, creating it if the tracker supports label creation and it is missing.
|
|
46
47
|
- Evidence must explicitly distinguish `verified empirically` from `artifact-only / verification deferred`.
|
|
@@ -17,13 +17,23 @@ pre-commit:
|
|
|
17
17
|
# inside a git worktree (the inherited GIT_DIR points at the wrong repo).
|
|
18
18
|
run: env -u GIT_DIR -u GIT_WORK_TREE bundle exec bundler-audit check --update
|
|
19
19
|
|
|
20
|
+
prepare-commit-msg:
|
|
21
|
+
commands:
|
|
22
|
+
work-item-trailer:
|
|
23
|
+
run: node scripts/lisa-work-item.mjs prepare-commit-msg {1} {2} {3}
|
|
24
|
+
|
|
20
25
|
commit-msg:
|
|
21
26
|
commands:
|
|
27
|
+
work-item:
|
|
28
|
+
run: node scripts/lisa-work-item.mjs validate-commit {1}
|
|
22
29
|
conventional-commit:
|
|
23
30
|
run: 'head -1 {1} | grep -qE "^(feat|fix|chore|docs|style|refactor|perf|test|build|ci|revert)(\(.+\))?: .+" || (echo "Commit message must follow conventional format" && exit 1)'
|
|
24
31
|
|
|
25
32
|
pre-push:
|
|
26
33
|
commands:
|
|
34
|
+
work-item:
|
|
35
|
+
run: node scripts/lisa-work-item.mjs validate-push {1}
|
|
36
|
+
use_stdin: true
|
|
27
37
|
rspec:
|
|
28
38
|
run: bundle exec rspec
|
|
29
39
|
brakeman:
|
|
@@ -20,29 +20,15 @@ fi
|
|
|
20
20
|
# Get the commit message file path
|
|
21
21
|
COMMIT_MSG_FILE=$1
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
# Extract Jira key from branch name using grep
|
|
32
|
-
# Matches patterns like: feat/SE-2397-description, SE-2397-description, chore/PROJ-123-something
|
|
33
|
-
JIRA_KEY=$(echo "$BRANCH_NAME" | grep -E "(^|/)($JIRA_PROJECT_KEY)-[0-9]+" | grep -E "($JIRA_PROJECT_KEY)-[0-9]+" -o | head -1)
|
|
34
|
-
|
|
35
|
-
if [ -n "$JIRA_KEY" ]; then
|
|
36
|
-
# Read the current commit message
|
|
37
|
-
COMMIT_MSG=$(cat "$COMMIT_MSG_FILE")
|
|
38
|
-
|
|
39
|
-
# Check if the Jira key is already in the commit message
|
|
40
|
-
if ! echo "$COMMIT_MSG" | grep -q "\[$JIRA_KEY\]"; then
|
|
41
|
-
# Append the Jira key to the commit message
|
|
42
|
-
echo "$COMMIT_MSG [$JIRA_KEY]" > "$COMMIT_MSG_FILE"
|
|
43
|
-
echo "🎫 Auto-appended Jira key: [$JIRA_KEY]"
|
|
44
|
-
fi
|
|
23
|
+
WORK_ITEM_SCRIPT="scripts/lisa-work-item.mjs"
|
|
24
|
+
if [ ! -f "$WORK_ITEM_SCRIPT" ]; then
|
|
25
|
+
WORK_ITEM_SCRIPT="all/copy-overwrite/scripts/lisa-work-item.mjs"
|
|
26
|
+
fi
|
|
27
|
+
if ! command -v node >/dev/null 2>&1; then
|
|
28
|
+
echo "❌ Commit blocked: Node.js is required to validate tracker work items."
|
|
29
|
+
exit 1
|
|
45
30
|
fi
|
|
31
|
+
node "$WORK_ITEM_SCRIPT" validate-commit "$COMMIT_MSG_FILE" || exit 1
|
|
46
32
|
|
|
47
33
|
echo "📝 Validating commit message with commitlint..."
|
|
48
34
|
$EXECUTOR commitlint --edit $1
|
|
@@ -98,4 +84,4 @@ if ! echo "$COMMIT_MSG" | grep -Eiq "Co-authored-by:.*(Claude|Codex)"; then
|
|
|
98
84
|
exit 1
|
|
99
85
|
fi
|
|
100
86
|
|
|
101
|
-
# END: AI GUARDRAILS
|
|
87
|
+
# END: AI GUARDRAILS
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# BEGIN: AI GUARDRAILS
|
|
2
2
|
|
|
3
|
+
WORK_ITEM_SCRIPT="scripts/lisa-work-item.mjs"
|
|
4
|
+
if [ ! -f "$WORK_ITEM_SCRIPT" ]; then
|
|
5
|
+
WORK_ITEM_SCRIPT="all/copy-overwrite/scripts/lisa-work-item.mjs"
|
|
6
|
+
fi
|
|
7
|
+
if ! command -v node >/dev/null 2>&1; then
|
|
8
|
+
echo "❌ Push blocked: Node.js is required to validate tracker work items."
|
|
9
|
+
exit 1
|
|
10
|
+
fi
|
|
11
|
+
node "$WORK_ITEM_SCRIPT" validate-push "${1:-origin}" || exit 1
|
|
12
|
+
|
|
3
13
|
# Detect package manager (check if tool is available before using it)
|
|
4
14
|
# Priority: bun > yarn > npm (bun first since package.json engines prefer it)
|
|
5
15
|
if ([ -f "bun.lockb" ] || [ -f "bun.lock" ]) && command -v bun >/dev/null 2>&1; then
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# BEGIN: AI GUARDRAILS
|
|
2
|
+
|
|
3
|
+
WORK_ITEM_SCRIPT="scripts/lisa-work-item.mjs"
|
|
4
|
+
if [ ! -f "$WORK_ITEM_SCRIPT" ]; then
|
|
5
|
+
WORK_ITEM_SCRIPT="all/copy-overwrite/scripts/lisa-work-item.mjs"
|
|
6
|
+
fi
|
|
7
|
+
|
|
8
|
+
if ! command -v node >/dev/null 2>&1; then
|
|
9
|
+
echo "❌ Commit blocked: Node.js is required to link commits to tracker work items."
|
|
10
|
+
exit 1
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
node "$WORK_ITEM_SCRIPT" prepare-commit-msg "$@"
|
|
14
|
+
|
|
15
|
+
# END: AI GUARDRAILS
|