@codyswann/lisa 2.99.0 → 2.100.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -82,7 +82,7 @@
82
82
  "lodash": ">=4.18.1"
83
83
  },
84
84
  "name": "@codyswann/lisa",
85
- "version": "2.99.0",
85
+ "version": "2.100.0",
86
86
  "description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
87
87
  "main": "dist/index.js",
88
88
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.99.0",
3
+ "version": "2.100.0",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.99.0",
3
+ "version": "2.100.0",
4
4
  "description": "Universal governance: agents, skills, commands, hooks, and rules for all projects.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -26,13 +26,42 @@ Inspect exactly one repo-scoped item reference:
26
26
 
27
27
  The skill must determine whether the item belongs to the PRD lifecycle or the build lifecycle, then explain the item's status using the **same contract** Lisa already uses for `/lisa:intake` and `/lisa:repair-intake`. Do **not** invent a second source of truth for queue detection, lifecycle role naming, repo scoping, or repair eligibility.
28
28
 
29
+ ## Operator usage
30
+
31
+ Typical entrypoints:
32
+
33
+ ```text
34
+ /lisa:intake-explain https://github.com/acme/repo/issues/123
35
+ /lisa:intake-explain owner/repo#123
36
+ /lisa:intake-explain ENG-123
37
+ /lisa:intake-explain https://linear.app/acme/issue/ENG-123/example
38
+ ```
39
+
40
+ Use this command when an operator needs one deterministic answer to questions like:
41
+
42
+ - "Would Lisa intake this item right now, or skip it?"
43
+ - "Is this state still product-owned, or has it crossed into a Lisa-owned lane?"
44
+ - "Is repair eligible yet, or am I still waiting on staleness or backoff?"
45
+ - "Is the real next step `/lisa:intake`, `/lisa:repair-intake`, blocker cleanup, decomposition, or manual product clarification?"
46
+
47
+ Keep the diagnosis terminal-first and human-readable: observable item facts first, then the smallest useful next command or manual action.
48
+
29
49
  ## Contract reuse
30
50
 
31
51
  Resolve item family, queue source/tracker, and lifecycle role names from `.lisa.config.json` plus the same defaults the active intake and repair flows already consume.
32
52
 
53
+ Route one-item diagnosis through the same contract surfaces the write-side flows already trust:
54
+
55
+ - determine whether the item belongs to the configured PRD **source** lane or build **tracker** lane using the same `source` / `tracker` settings that `/lisa:intake` and `/lisa:repair-intake` already resolve
56
+ - read vendor lifecycle role names from the same config keys and fallback defaults documented in the `config-resolution` rule rather than inventing hardcoded status names
57
+ - keep repo/project scoping aligned with the same current-repo detection and queue-target rules the active intake scanners use
58
+
59
+ When the runtime can identify the item but cannot confidently resolve its source lane, tracker lane, lifecycle namespace, or current repo/project scope from that contract, report `MISCONFIGURED` instead of guessing.
60
+
33
61
  Reuse the existing execution-side semantics instead of recreating them by hand:
34
62
 
35
63
  - queue/source detection and lifecycle naming from intake + repair-intake
64
+ - one-item routing helpers for resolving the item's queue family against the correct source/tracker contract
36
65
  - product-owned versus Lisa-owned lifecycle roles
37
66
  - leaf-only and repo-scope build eligibility
38
67
  - active dependency holds
@@ -53,6 +82,28 @@ Render a stable terminal-first diagnosis for one item:
53
82
 
54
83
  Keep observable item facts separate from the recommended next step so operators can tell what Lisa knows versus what Lisa suggests.
55
84
 
85
+ ## Verdicts and next actions
86
+
87
+ Use verdicts as stable operator language, not as an excuse to dump raw tracker state:
88
+
89
+ - `ELIGIBLE_FOR_INTAKE`: the item is in the correct actionable lane and Lisa could pick it up with `/lisa:intake`.
90
+ - `ELIGIBLE_FOR_REPAIR`: the item is Lisa-owned, stale or stuck enough to qualify for `/lisa:repair-intake`, and repair suppression rules are not currently preventing action.
91
+ - `WAITING_ON_STALENESS`: the item is Lisa-owned but too fresh to repair yet; explain which activity signal or freshness window is still protecting it from a repair loop.
92
+ - `HELD_BY_BLOCKERS`: the item is otherwise actionable, but explicit blockers or dependency holds mean Lisa would wait rather than claim it.
93
+ - `NON_LEAF_CONTAINER`: the item is structurally a container, childless Epic/Story/Spike, or otherwise not directly buildable; explain that direct build pickup is disallowed until decomposition or reclassification happens.
94
+ - `PRODUCT_OWNED_STATE`: the item is currently in a product-owned role or pre-intake lane, so Lisa should not mutate it yet.
95
+ - `MISCONFIGURED`: Lisa could not resolve the item's queue, lifecycle namespace, repo scope, or another required contract signal confidently enough to explain actionability.
96
+
97
+ Each verdict must carry a concrete next action:
98
+
99
+ - Prefer `/lisa:intake` for `ELIGIBLE_FOR_INTAKE`.
100
+ - Prefer `/lisa:repair-intake` for `ELIGIBLE_FOR_REPAIR`.
101
+ - Prefer "wait and re-check later" for `WAITING_ON_STALENESS`.
102
+ - Prefer blocker resolution for `HELD_BY_BLOCKERS`.
103
+ - Prefer decomposition or type correction for `NON_LEAF_CONTAINER`.
104
+ - Prefer manual product clarification or the upstream product workflow for `PRODUCT_OWNED_STATE`.
105
+ - Prefer fixing config, lifecycle adoption, or repo scoping for `MISCONFIGURED`.
106
+
56
107
  ## Gate and ownership expectations
57
108
 
58
109
  The explanation must stay aligned with existing Lisa rules:
@@ -61,7 +112,27 @@ The explanation must stay aligned with existing Lisa rules:
61
112
  - If a build item has active blockers, list the blocker refs and explain that intake would hold or skip it until they clear.
62
113
  - If a PRD is in a product-owned role such as `draft`, `shipped`, or `verified`, explain why intake or repair will not mutate it.
63
114
  - If a claimed, in-review, or blocked item is not yet repairable, explain the relevant staleness or backoff condition at a human-readable level.
64
- - If the repo or lifecycle namespace is unresolved, report `MISCONFIGURED` instead of pretending the item is idle or actionable.
115
+ - If the source lane, tracker lane, repo/project scope, or lifecycle namespace is unresolved, report `MISCONFIGURED` instead of pretending the item is idle or actionable.
116
+
117
+ ## Rule explanation expectations
118
+
119
+ The `Why:` line should name the decisive Lisa contract in plain English rather than only echoing a raw status label. Good explanations usually mention one of:
120
+
121
+ - the lifecycle role boundary (`product-owned` versus `Lisa-owned`)
122
+ - the leaf-only gate
123
+ - the repo-scope gate
124
+ - an active blocker or dependency hold
125
+ - staleness or repair-backoff suppression
126
+ - an unresolved config or lifecycle-adoption contract
127
+
128
+ The `Next action:` line should stay small and specific. Prefer one actionable follow-up over a menu:
129
+
130
+ - `/lisa:intake <queue>` when the item is ready for normal pickup
131
+ - `/lisa:repair-intake <queue>` when Lisa-owned stuck work is now repairable
132
+ - "resolve blocker `#123`" when a dependency hold is decisive
133
+ - "decompose into leaf tickets" when the issue is a non-leaf container
134
+ - "manual product clarification" when Lisa is not the current owner
135
+ - "fix `.lisa.config.json` or lifecycle labels" when the problem is misconfiguration
65
136
 
66
137
  ## Output shape
67
138
 
@@ -78,6 +149,18 @@ Next action: <smallest useful follow-up>
78
149
 
79
150
  When helpful, include one short `Signals:` or `Relevant refs:` line for the exact blockers, staleness timestamps, parent/child classification, or repair markers that justify the verdict.
80
151
 
152
+ One acceptable rendering pattern is:
153
+
154
+ ```text
155
+ Item: CodySwannGT/lisa#123
156
+ Lifecycle: BUILD
157
+ Role: status:blocked (Lisa-owned)
158
+ Verdict: ELIGIBLE_FOR_REPAIR
159
+ Why: The issue is already in a Lisa-owned blocked lane, its last meaningful activity is stale, and no repair-backoff marker is suppressing a new repair pass.
160
+ Next action: /lisa:repair-intake github
161
+ Signals: blocker cleared; last activity 6d ago; repo:lisa
162
+ ```
163
+
81
164
  ## Rules
82
165
 
83
166
  - Stay **read-only**. Never claim, relabel, transition, comment on, create, decompose, or repair work from this skill.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "2.99.0",
3
+ "version": "2.100.0",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "2.99.0",
3
+ "version": "2.100.0",
4
4
  "description": "AWS CDK-specific Lisa plugin.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "2.99.0",
3
+ "version": "2.100.0",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "2.99.0",
3
+ "version": "2.100.0",
4
4
  "description": "Expo and React Native-specific skills, agents, rules, and MCP servers.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "2.99.0",
3
+ "version": "2.100.0",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "2.99.0",
3
+ "version": "2.100.0",
4
4
  "description": "Harper/Fabric-specific Lisa rules for TypeScript component apps.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "2.99.0",
3
+ "version": "2.100.0",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "2.99.0",
3
+ "version": "2.100.0",
4
4
  "description": "NestJS-specific skills and migration write-protection hooks.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "2.99.0",
3
+ "version": "2.100.0",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "2.99.0",
3
+ "version": "2.100.0",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, across Claude and Codex.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "2.99.0",
3
+ "version": "2.100.0",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "2.99.0",
3
+ "version": "2.100.0",
4
4
  "description": "Ruby on Rails-specific skills and hooks for RuboCop and ast-grep scanning on edit.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "2.99.0",
3
+ "version": "2.100.0",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "2.99.0",
3
+ "version": "2.100.0",
4
4
  "description": "TypeScript-specific hooks for formatting, linting, and ast-grep scanning on edit.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "2.99.0",
3
+ "version": "2.100.0",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "2.99.0",
3
+ "version": "2.100.0",
4
4
  "description": "Distributable LLM Wiki kernel — ingest, query, lint, and maintain a git-native markdown knowledge base across Claude and Codex.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -26,13 +26,42 @@ Inspect exactly one repo-scoped item reference:
26
26
 
27
27
  The skill must determine whether the item belongs to the PRD lifecycle or the build lifecycle, then explain the item's status using the **same contract** Lisa already uses for `/lisa:intake` and `/lisa:repair-intake`. Do **not** invent a second source of truth for queue detection, lifecycle role naming, repo scoping, or repair eligibility.
28
28
 
29
+ ## Operator usage
30
+
31
+ Typical entrypoints:
32
+
33
+ ```text
34
+ /lisa:intake-explain https://github.com/acme/repo/issues/123
35
+ /lisa:intake-explain owner/repo#123
36
+ /lisa:intake-explain ENG-123
37
+ /lisa:intake-explain https://linear.app/acme/issue/ENG-123/example
38
+ ```
39
+
40
+ Use this command when an operator needs one deterministic answer to questions like:
41
+
42
+ - "Would Lisa intake this item right now, or skip it?"
43
+ - "Is this state still product-owned, or has it crossed into a Lisa-owned lane?"
44
+ - "Is repair eligible yet, or am I still waiting on staleness or backoff?"
45
+ - "Is the real next step `/lisa:intake`, `/lisa:repair-intake`, blocker cleanup, decomposition, or manual product clarification?"
46
+
47
+ Keep the diagnosis terminal-first and human-readable: observable item facts first, then the smallest useful next command or manual action.
48
+
29
49
  ## Contract reuse
30
50
 
31
51
  Resolve item family, queue source/tracker, and lifecycle role names from `.lisa.config.json` plus the same defaults the active intake and repair flows already consume.
32
52
 
53
+ Route one-item diagnosis through the same contract surfaces the write-side flows already trust:
54
+
55
+ - determine whether the item belongs to the configured PRD **source** lane or build **tracker** lane using the same `source` / `tracker` settings that `/lisa:intake` and `/lisa:repair-intake` already resolve
56
+ - read vendor lifecycle role names from the same config keys and fallback defaults documented in the `config-resolution` rule rather than inventing hardcoded status names
57
+ - keep repo/project scoping aligned with the same current-repo detection and queue-target rules the active intake scanners use
58
+
59
+ When the runtime can identify the item but cannot confidently resolve its source lane, tracker lane, lifecycle namespace, or current repo/project scope from that contract, report `MISCONFIGURED` instead of guessing.
60
+
33
61
  Reuse the existing execution-side semantics instead of recreating them by hand:
34
62
 
35
63
  - queue/source detection and lifecycle naming from intake + repair-intake
64
+ - one-item routing helpers for resolving the item's queue family against the correct source/tracker contract
36
65
  - product-owned versus Lisa-owned lifecycle roles
37
66
  - leaf-only and repo-scope build eligibility
38
67
  - active dependency holds
@@ -53,6 +82,28 @@ Render a stable terminal-first diagnosis for one item:
53
82
 
54
83
  Keep observable item facts separate from the recommended next step so operators can tell what Lisa knows versus what Lisa suggests.
55
84
 
85
+ ## Verdicts and next actions
86
+
87
+ Use verdicts as stable operator language, not as an excuse to dump raw tracker state:
88
+
89
+ - `ELIGIBLE_FOR_INTAKE`: the item is in the correct actionable lane and Lisa could pick it up with `/lisa:intake`.
90
+ - `ELIGIBLE_FOR_REPAIR`: the item is Lisa-owned, stale or stuck enough to qualify for `/lisa:repair-intake`, and repair suppression rules are not currently preventing action.
91
+ - `WAITING_ON_STALENESS`: the item is Lisa-owned but too fresh to repair yet; explain which activity signal or freshness window is still protecting it from a repair loop.
92
+ - `HELD_BY_BLOCKERS`: the item is otherwise actionable, but explicit blockers or dependency holds mean Lisa would wait rather than claim it.
93
+ - `NON_LEAF_CONTAINER`: the item is structurally a container, childless Epic/Story/Spike, or otherwise not directly buildable; explain that direct build pickup is disallowed until decomposition or reclassification happens.
94
+ - `PRODUCT_OWNED_STATE`: the item is currently in a product-owned role or pre-intake lane, so Lisa should not mutate it yet.
95
+ - `MISCONFIGURED`: Lisa could not resolve the item's queue, lifecycle namespace, repo scope, or another required contract signal confidently enough to explain actionability.
96
+
97
+ Each verdict must carry a concrete next action:
98
+
99
+ - Prefer `/lisa:intake` for `ELIGIBLE_FOR_INTAKE`.
100
+ - Prefer `/lisa:repair-intake` for `ELIGIBLE_FOR_REPAIR`.
101
+ - Prefer "wait and re-check later" for `WAITING_ON_STALENESS`.
102
+ - Prefer blocker resolution for `HELD_BY_BLOCKERS`.
103
+ - Prefer decomposition or type correction for `NON_LEAF_CONTAINER`.
104
+ - Prefer manual product clarification or the upstream product workflow for `PRODUCT_OWNED_STATE`.
105
+ - Prefer fixing config, lifecycle adoption, or repo scoping for `MISCONFIGURED`.
106
+
56
107
  ## Gate and ownership expectations
57
108
 
58
109
  The explanation must stay aligned with existing Lisa rules:
@@ -61,7 +112,27 @@ The explanation must stay aligned with existing Lisa rules:
61
112
  - If a build item has active blockers, list the blocker refs and explain that intake would hold or skip it until they clear.
62
113
  - If a PRD is in a product-owned role such as `draft`, `shipped`, or `verified`, explain why intake or repair will not mutate it.
63
114
  - If a claimed, in-review, or blocked item is not yet repairable, explain the relevant staleness or backoff condition at a human-readable level.
64
- - If the repo or lifecycle namespace is unresolved, report `MISCONFIGURED` instead of pretending the item is idle or actionable.
115
+ - If the source lane, tracker lane, repo/project scope, or lifecycle namespace is unresolved, report `MISCONFIGURED` instead of pretending the item is idle or actionable.
116
+
117
+ ## Rule explanation expectations
118
+
119
+ The `Why:` line should name the decisive Lisa contract in plain English rather than only echoing a raw status label. Good explanations usually mention one of:
120
+
121
+ - the lifecycle role boundary (`product-owned` versus `Lisa-owned`)
122
+ - the leaf-only gate
123
+ - the repo-scope gate
124
+ - an active blocker or dependency hold
125
+ - staleness or repair-backoff suppression
126
+ - an unresolved config or lifecycle-adoption contract
127
+
128
+ The `Next action:` line should stay small and specific. Prefer one actionable follow-up over a menu:
129
+
130
+ - `/lisa:intake <queue>` when the item is ready for normal pickup
131
+ - `/lisa:repair-intake <queue>` when Lisa-owned stuck work is now repairable
132
+ - "resolve blocker `#123`" when a dependency hold is decisive
133
+ - "decompose into leaf tickets" when the issue is a non-leaf container
134
+ - "manual product clarification" when Lisa is not the current owner
135
+ - "fix `.lisa.config.json` or lifecycle labels" when the problem is misconfiguration
65
136
 
66
137
  ## Output shape
67
138
 
@@ -78,6 +149,18 @@ Next action: <smallest useful follow-up>
78
149
 
79
150
  When helpful, include one short `Signals:` or `Relevant refs:` line for the exact blockers, staleness timestamps, parent/child classification, or repair markers that justify the verdict.
80
151
 
152
+ One acceptable rendering pattern is:
153
+
154
+ ```text
155
+ Item: CodySwannGT/lisa#123
156
+ Lifecycle: BUILD
157
+ Role: status:blocked (Lisa-owned)
158
+ Verdict: ELIGIBLE_FOR_REPAIR
159
+ Why: The issue is already in a Lisa-owned blocked lane, its last meaningful activity is stale, and no repair-backoff marker is suppressing a new repair pass.
160
+ Next action: /lisa:repair-intake github
161
+ Signals: blocker cleared; last activity 6d ago; repo:lisa
162
+ ```
163
+
81
164
  ## Rules
82
165
 
83
166
  - Stay **read-only**. Never claim, relabel, transition, comment on, create, decompose, or repair work from this skill.