@codyswann/lisa 2.142.2 → 2.143.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.
Files changed (61) hide show
  1. package/package.json +1 -1
  2. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  3. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  4. package/plugins/lisa/commands/repair-intake.md +2 -2
  5. package/plugins/lisa/skills/repair-intake/SKILL.md +57 -5
  6. package/plugins/lisa-agy/commands/repair-intake.md +2 -2
  7. package/plugins/lisa-agy/plugin.json +1 -1
  8. package/plugins/lisa-agy/skills/repair-intake/SKILL.md +57 -5
  9. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  10. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  11. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  12. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  13. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  14. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  15. package/plugins/lisa-copilot/commands/repair-intake.md +2 -2
  16. package/plugins/lisa-copilot/skills/repair-intake/SKILL.md +57 -5
  17. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  18. package/plugins/lisa-cursor/commands/repair-intake.md +2 -2
  19. package/plugins/lisa-cursor/skills/repair-intake/SKILL.md +57 -5
  20. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  21. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  22. package/plugins/lisa-expo-agy/plugin.json +1 -1
  23. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  24. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  25. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  26. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  27. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  28. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  29. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  30. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  31. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  32. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  33. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  34. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  35. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  36. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  37. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  38. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  39. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  40. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  41. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  42. package/plugins/lisa-rails-agy/plugin.json +1 -1
  43. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  44. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  45. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  46. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  47. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  48. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  49. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  50. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  51. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  52. package/plugins/lisa-wiki/scripts/wiki-safety.mjs +199 -0
  53. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  54. package/plugins/lisa-wiki-agy/scripts/wiki-safety.mjs +199 -0
  55. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  56. package/plugins/lisa-wiki-copilot/scripts/wiki-safety.mjs +199 -0
  57. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  58. package/plugins/lisa-wiki-cursor/scripts/wiki-safety.mjs +199 -0
  59. package/plugins/src/base/commands/repair-intake.md +2 -2
  60. package/plugins/src/base/skills/repair-intake/SKILL.md +57 -5
  61. package/plugins/src/wiki/scripts/wiki-safety.mjs +199 -0
package/package.json CHANGED
@@ -84,7 +84,7 @@
84
84
  "lodash": ">=4.18.1"
85
85
  },
86
86
  "name": "@codyswann/lisa",
87
- "version": "2.142.2",
87
+ "version": "2.143.0",
88
88
  "description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
89
89
  "main": "dist/index.js",
90
90
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.142.2",
3
+ "version": "2.143.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.142.2",
3
+ "version": "2.143.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
- description: "Repair counterpart to /lisa:intake. Vendor-agnostic batch scanner that finds stuck or half-closed work — items left in `blocked`, stalled in an in-progress role (build `claimed`, PRD `in_review`), terminal-labeled items still natively open, and rollups whose children are all terminal — across the same queues /lisa:intake serves (Notion / Confluence / Linear / GitHub PRDs; JIRA / GitHub / Linear build issues). Repairs every materially actionable candidate inside the `max_candidates` cap: resumes stalled in-progress work in place — but for a stalled build it first diagnoses the PR/deploy state and, if the PR cannot merge (conflict, rebase, failing checks, unaddressed CodeRabbit/changes-requested) or a deploy failed, files a build-ready fix ticket and moves the item to `blocked` (blocked by it) instead of re-dispatching — re-validates blocked PRDs, re-dispatches blocked build items whose blockers have cleared, performs terminal native closure, reconciles parent rollups to their derived state (including the intermediate-env case — e.g. all children at `On Stg` → parent `On Stg` — and a container wrongly stuck in `ready`), and closes out completed rollups. Cron-safe and bounded; default GitHub intake_mode is both and default max_candidates is 100."
2
+ description: "Repair counterpart to /lisa:intake. Vendor-agnostic batch scanner that finds stuck or half-closed work — items left in `blocked`, stalled in an in-progress role (build `claimed`, PRD `in_review`), terminal-labeled items still natively open, rollups whose children are all terminal, and GitHub issues missing official Lisa lifecycle labels — across the same queues /lisa:intake serves (Notion / Confluence / Linear / GitHub PRDs; JIRA / GitHub / Linear build issues). Repairs every materially actionable candidate inside the `max_candidates` cap: resumes stalled in-progress work in place — but for a stalled build it first diagnoses the PR/deploy state and, if the PR cannot merge (conflict, rebase, failing checks, unaddressed CodeRabbit/changes-requested) or a deploy failed, files a build-ready fix ticket and moves the item to `blocked` (blocked by it) instead of re-dispatching — re-validates blocked PRDs, re-dispatches blocked build items whose blockers have cleared, performs terminal native closure, reconciles parent rollups to their derived state (including the intermediate-env case — e.g. all children at `On Stg` → parent `On Stg` — and a container wrongly stuck in `ready`), normalizes missing GitHub lifecycle labels to the configured PRD/build `ready` label, and closes out completed rollups. Cron-safe and bounded; default GitHub intake_mode is both and default max_candidates is 100."
3
3
  argument-hint: "<Notion-PRD-database-URL | Confluence-space-URL | Confluence-parent-page-URL | Linear-workspace-URL | Linear-team-URL | GitHub-repo-URL | org/repo | JIRA-project-key | JQL-filter> [intake_mode=prd|build|both] [stale_after=2h] [max_candidates=100] [force=true]"
4
4
  ---
5
5
 
6
- Use the /lisa:repair-intake skill to scan the queue for stuck or half-closed items and repair every materially actionable candidate inside `max_candidates` (default 100). For GitHub queues, default `intake_mode` to `both` when the caller omits it. $ARGUMENTS
6
+ Use the /lisa:repair-intake skill to scan the queue for stuck or half-closed items, normalize GitHub issues missing official Lisa lifecycle labels into the configured PRD/build `ready` lane, and repair every materially actionable candidate inside `max_candidates` (default 100). For GitHub queues, default `intake_mode` to `both` when the caller omits it. $ARGUMENTS
@@ -45,6 +45,10 @@ close-out** roles and moves work *unstuck* or *fully closed*:
45
45
  the build-intake claim gate deliberately leaves for a human; repair-intake reconciles it by
46
46
  rolling the parent up from its children (with an audit note), so a container never sits in `ready`
47
47
  indefinitely.
48
+ - **Missing official ready-label drift** — a GitHub issue that is missing every configured Lisa
49
+ lifecycle label. repair-intake classifies it as a PRD or build ticket and adds the configured
50
+ `ready` label (`prd-ready` for a PRD, build `status:ready` for a ticket) so normal intake can see
51
+ it; if the later intake/implement gate finds the item incomplete, it moves the item to `blocked`.
48
52
 
49
53
  This skill is the symmetric counterpart to `lisa:intake`. It reuses the same queue-detection,
50
54
  the same agent-team orchestration, the same "don't ask, just run" confirmation policy, and the
@@ -150,7 +154,8 @@ claim-and-advance). The essentials, inlined here so this skill is self-complete:
150
154
  | Linear **workspace** URL, **team** URL/key, or literal `linear` | PRD (Linear) | source=linear | `in_review`, `blocked`, terminal/open PRDs, all-terminal generated-work rollups |
151
155
  | GitHub **repo** URL / `org/repo` (PRD namespace) | PRD (GitHub) | source=github | `in_review`, `blocked`, terminal/open PRDs, all-terminal generated-work rollups |
152
156
  | GitHub **repo** URL / `org/repo` with `tracker = github` (build namespace) | Build (GitHub) | tracker=github | `claimed`, `blocked`, terminal/open issues, parent rollups (intermediate-env + all-terminal), stale-`ready` containers |
153
- | Literal `github` | GitHub; route by `intake_mode` (`prd` / `build` / `both`) | per lifecycle | per lifecycle above |
157
+ | GitHub **repo** URL / `org/repo` with an open issue missing configured lifecycle labels | GitHub label normalization | per classified lifecycle | add configured `prd.ready` or build `ready` |
158
+ | Literal `github` | GitHub; route by `intake_mode` (`prd` / `build` / `both`) | per lifecycle | per lifecycle above, plus GitHub ready-label normalization |
154
159
  | JIRA project key or full JQL | Build (JIRA) | tracker=jira | `claimed`, `blocked`, terminal/closure verification, parent rollups (intermediate-env + all-terminal), stale-`ready` containers |
155
160
 
156
161
  Disambiguation (same as `lisa:intake`): a `notion.so`/`notion.site` URL → Notion; an Atlassian
@@ -545,6 +550,45 @@ work is fully terminal:
545
550
  5. If generated work is missing, ambiguous, or partially incomplete, leave the PRD open and report
546
551
  the incomplete child set. Never close a PRD on partial completion.
547
552
 
553
+ ### GitHub missing official ready-label normalization → configured ready
554
+
555
+ For GitHub queues, enumerate open issues that have **no configured Lisa lifecycle label** in the
556
+ active lifecycle namespace(s). This is the repair path for issues created by older tools or humans
557
+ with labels like `build-ready`, or with no Lisa status label at all, that are invisible to
558
+ `lisa:intake`, whose scanner only reads the configured `ready` labels.
559
+
560
+ 1. Resolve configured lifecycle labels from `.lisa.config.json` / `.lisa.config.local.json`:
561
+ - PRD lifecycle labels: `draft`, `ready`, `in_review`, `blocked`, `ticketed`, `shipped`,
562
+ `verified` when configured.
563
+ - Build lifecycle labels: `ready`, `claimed`, `blocked`, every env-resolved `done` value,
564
+ intermediate status labels where configured, and `human_needed`.
565
+ 2. Query open GitHub issues that are missing all configured lifecycle labels for the lifecycle(s)
566
+ selected by `intake_mode`. If `intake_mode=prd`, only PRD-classified issues are normalized. If
567
+ `intake_mode=build`, every non-PRD issue is normalized as a build ticket. If `intake_mode=both`,
568
+ classify PRDs first and normalize all remaining issues as build tickets.
569
+ 3. Classify the issue:
570
+ - **PRD** if it has PRD labels/markers (`prd`, `type:PRD`, `kind:prd`), PRD structure
571
+ (`## Problem`, `## Goals`, `## Validation Journey`, generated-work/backlink sections), or
572
+ body/comment text that explicitly says `prd-ready`.
573
+ - **Build ticket** if it has build work labels/types (`bug`, `type:Bug`, `task`, `type:Task`,
574
+ `sub-task`, `type:Sub-task`, `improvement`, `type:Improvement`, `story`, `spike`) or
575
+ body/comment text that explicitly says `build-ready`. When PRD signals are absent and the
576
+ selected lifecycle includes build, default to **Build ticket** even if no build type label is
577
+ present; build-intake/implement will validate the item and move it to `blocked` if required
578
+ sections are missing.
579
+ - **Ambiguous PRD/build** if strong PRD and build classifications both match. In `intake_mode=prd`
580
+ normalize as PRD; in `intake_mode=build` normalize as build; in `intake_mode=both`, prefer PRD
581
+ only when the body has PRD structure, otherwise build.
582
+ 4. Apply exactly one configured ready label for the classified lifecycle:
583
+ - PRD → add the configured PRD `ready` label (default `prd-ready`).
584
+ - Build ticket → add the configured build `ready` label (default `status:ready`).
585
+ Keep any unofficial labels for auditability unless the project has explicitly configured one as a
586
+ conflicting lifecycle label. Do not claim the item or dispatch an agent in the same repair cycle;
587
+ normalization makes the next normal `lisa:intake` run pick it up.
588
+ 5. Post one idempotent `[lisa-repair-intake]` note naming the classification and the configured label
589
+ applied. Include the normalization result in the loop-prevention fingerprint so repeated repair
590
+ cycles do not spam comments.
591
+
548
592
  ## Blocker classification & clearing (conservative, vendor-specific extraction)
549
593
 
550
594
  A `blocked` build item is held by one or more of three blocker classes. Identify which are present
@@ -664,6 +708,9 @@ It MAY:
664
708
  applies only to containers, never to leaves.
665
709
  - Move a PRD with fully terminal generated work to `shipped` and close/archive the source artifact
666
710
  where the source vendor supports native close-out, per `prd-lifecycle-rollup`.
711
+ - Normalize a GitHub issue with no configured lifecycle label by adding the configured PRD or build
712
+ `ready` label after classifying the issue. This is a visibility repair, not a claim; the item
713
+ remains open and unclaimed for normal intake.
667
714
 
668
715
  It MUST NOT:
669
716
 
@@ -673,15 +720,17 @@ It MUST NOT:
673
720
  - Touch `ready` **leaves** (that is `lisa:intake`'s lane). A container carrying `ready` is the
674
721
  documented exception above — repair-intake reconciles it because `ready` on a parent is an
675
722
  invariant violation, not the human "claim this leaf" signal intake owns.
723
+ - Move a GitHub issue that already carries a configured lifecycle label back to `ready` merely
724
+ because some other label looks stale. Official lifecycle labels remain authoritative.
676
725
 
677
726
  ## Cycle behavior
678
727
 
679
728
  1. **Resolve the queue** — detect vendor/lifecycle (Source dispatch); resolve stuck role names
680
729
  from config. For JIRA, confirm the needed transitions are reachable; stop on misconfig.
681
730
  2. **Enumerate repair candidates** — query in-progress role(s), `blocked` role(s), terminal/open
682
- items, rollup parents/PRDs with child work, and **containers carrying the `ready` role** (a
683
- leaf-only-invariant violation to reconcile), for the detected lifecycle(s), up to
684
- `max_candidates`, via the Access layer reads.
731
+ items, rollup parents/PRDs with child work, **containers carrying the `ready` role** (a
732
+ leaf-only-invariant violation to reconcile), and GitHub issues with no configured lifecycle label,
733
+ for the detected lifecycle(s), up to `max_candidates`, via the Access layer reads.
685
734
  3. **Order deterministically**, highest repair-confidence first:
686
735
  1. terminal-labeled items that only need native close / complete / resolve,
687
736
  2. rollup parents/PRDs whose child sets are all terminal (close-out),
@@ -692,7 +741,8 @@ It MUST NOT:
692
741
  5. `blocked` items whose **validation / quality-gate self-block now re-validates PASS** —
693
742
  a human filled in the missing sections (Class B; equally safe and high-value),
694
743
  6. `blocked` items with **new clarifying answers**,
695
- 7. **stalled** in-progress items, oldest activity first.
744
+ 7. GitHub missing-official-label normalization candidates,
745
+ 8. **stalled** in-progress items, oldest activity first.
696
746
  4. **Walk the ordered list**, evaluating each candidate (terminal close-out, rollup child tally,
697
747
  staleness, dependency, answer checks), and repair **every** candidate that is actionable inside
698
748
  the `max_candidates` cap. Continue after successful writes and after per-item errors.
@@ -723,6 +773,8 @@ Report outcomes in these buckets:
723
773
  - `rolled_up` — parent/container/PRD rollups advanced to their derived state: an intermediate env
724
774
  (e.g. all children at `On Stg` → parent `On Stg`), a fully-terminal close-out, or a stale-`ready`
725
775
  container reconciled from its children.
776
+ - `normalized_ready` — GitHub issues missing official lifecycle labels that were classified and
777
+ given the configured PRD/build `ready` label so normal intake can claim them.
726
778
  - `still_blocked` — examined and intentionally left `blocked`, with the active reason.
727
779
  - `active` — skipped because current work is not stale (or within backoff).
728
780
  - `errors` — items that failed evaluation, with the error.
@@ -1,6 +1,6 @@
1
1
  ---
2
- description: "Repair counterpart to /lisa:intake. Vendor-agnostic batch scanner that finds stuck or half-closed work — items left in `blocked`, stalled in an in-progress role (build `claimed`, PRD `in_review`), terminal-labeled items still natively open, and rollups whose children are all terminal — across the same queues /lisa:intake serves (Notion / Confluence / Linear / GitHub PRDs; JIRA / GitHub / Linear build issues). Repairs every materially actionable candidate inside the `max_candidates` cap: resumes stalled in-progress work in place — but for a stalled build it first diagnoses the PR/deploy state and, if the PR cannot merge (conflict, rebase, failing checks, unaddressed CodeRabbit/changes-requested) or a deploy failed, files a build-ready fix ticket and moves the item to `blocked` (blocked by it) instead of re-dispatching — re-validates blocked PRDs, re-dispatches blocked build items whose blockers have cleared, performs terminal native closure, reconciles parent rollups to their derived state (including the intermediate-env case — e.g. all children at `On Stg` → parent `On Stg` — and a container wrongly stuck in `ready`), and closes out completed rollups. Cron-safe and bounded; default GitHub intake_mode is both and default max_candidates is 100."
2
+ description: "Repair counterpart to /lisa:intake. Vendor-agnostic batch scanner that finds stuck or half-closed work — items left in `blocked`, stalled in an in-progress role (build `claimed`, PRD `in_review`), terminal-labeled items still natively open, rollups whose children are all terminal, and GitHub issues missing official Lisa lifecycle labels — across the same queues /lisa:intake serves (Notion / Confluence / Linear / GitHub PRDs; JIRA / GitHub / Linear build issues). Repairs every materially actionable candidate inside the `max_candidates` cap: resumes stalled in-progress work in place — but for a stalled build it first diagnoses the PR/deploy state and, if the PR cannot merge (conflict, rebase, failing checks, unaddressed CodeRabbit/changes-requested) or a deploy failed, files a build-ready fix ticket and moves the item to `blocked` (blocked by it) instead of re-dispatching — re-validates blocked PRDs, re-dispatches blocked build items whose blockers have cleared, performs terminal native closure, reconciles parent rollups to their derived state (including the intermediate-env case — e.g. all children at `On Stg` → parent `On Stg` — and a container wrongly stuck in `ready`), normalizes missing GitHub lifecycle labels to the configured PRD/build `ready` label, and closes out completed rollups. Cron-safe and bounded; default GitHub intake_mode is both and default max_candidates is 100."
3
3
  argument-hint: "<Notion-PRD-database-URL | Confluence-space-URL | Confluence-parent-page-URL | Linear-workspace-URL | Linear-team-URL | GitHub-repo-URL | org/repo | JIRA-project-key | JQL-filter> [intake_mode=prd|build|both] [stale_after=2h] [max_candidates=100] [force=true]"
4
4
  ---
5
5
 
6
- Use the /lisa:repair-intake skill to scan the queue for stuck or half-closed items and repair every materially actionable candidate inside `max_candidates` (default 100). For GitHub queues, default `intake_mode` to `both` when the caller omits it. $ARGUMENTS
6
+ Use the /lisa:repair-intake skill to scan the queue for stuck or half-closed items, normalize GitHub issues missing official Lisa lifecycle labels into the configured PRD/build `ready` lane, and repair every materially actionable candidate inside `max_candidates` (default 100). For GitHub queues, default `intake_mode` to `both` when the caller omits it. $ARGUMENTS
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.142.2",
3
+ "version": "2.143.0",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -45,6 +45,10 @@ close-out** roles and moves work *unstuck* or *fully closed*:
45
45
  the build-intake claim gate deliberately leaves for a human; repair-intake reconciles it by
46
46
  rolling the parent up from its children (with an audit note), so a container never sits in `ready`
47
47
  indefinitely.
48
+ - **Missing official ready-label drift** — a GitHub issue that is missing every configured Lisa
49
+ lifecycle label. repair-intake classifies it as a PRD or build ticket and adds the configured
50
+ `ready` label (`prd-ready` for a PRD, build `status:ready` for a ticket) so normal intake can see
51
+ it; if the later intake/implement gate finds the item incomplete, it moves the item to `blocked`.
48
52
 
49
53
  This skill is the symmetric counterpart to `lisa:intake`. It reuses the same queue-detection,
50
54
  the same agent-team orchestration, the same "don't ask, just run" confirmation policy, and the
@@ -150,7 +154,8 @@ claim-and-advance). The essentials, inlined here so this skill is self-complete:
150
154
  | Linear **workspace** URL, **team** URL/key, or literal `linear` | PRD (Linear) | source=linear | `in_review`, `blocked`, terminal/open PRDs, all-terminal generated-work rollups |
151
155
  | GitHub **repo** URL / `org/repo` (PRD namespace) | PRD (GitHub) | source=github | `in_review`, `blocked`, terminal/open PRDs, all-terminal generated-work rollups |
152
156
  | GitHub **repo** URL / `org/repo` with `tracker = github` (build namespace) | Build (GitHub) | tracker=github | `claimed`, `blocked`, terminal/open issues, parent rollups (intermediate-env + all-terminal), stale-`ready` containers |
153
- | Literal `github` | GitHub; route by `intake_mode` (`prd` / `build` / `both`) | per lifecycle | per lifecycle above |
157
+ | GitHub **repo** URL / `org/repo` with an open issue missing configured lifecycle labels | GitHub label normalization | per classified lifecycle | add configured `prd.ready` or build `ready` |
158
+ | Literal `github` | GitHub; route by `intake_mode` (`prd` / `build` / `both`) | per lifecycle | per lifecycle above, plus GitHub ready-label normalization |
154
159
  | JIRA project key or full JQL | Build (JIRA) | tracker=jira | `claimed`, `blocked`, terminal/closure verification, parent rollups (intermediate-env + all-terminal), stale-`ready` containers |
155
160
 
156
161
  Disambiguation (same as `lisa:intake`): a `notion.so`/`notion.site` URL → Notion; an Atlassian
@@ -545,6 +550,45 @@ work is fully terminal:
545
550
  5. If generated work is missing, ambiguous, or partially incomplete, leave the PRD open and report
546
551
  the incomplete child set. Never close a PRD on partial completion.
547
552
 
553
+ ### GitHub missing official ready-label normalization → configured ready
554
+
555
+ For GitHub queues, enumerate open issues that have **no configured Lisa lifecycle label** in the
556
+ active lifecycle namespace(s). This is the repair path for issues created by older tools or humans
557
+ with labels like `build-ready`, or with no Lisa status label at all, that are invisible to
558
+ `lisa:intake`, whose scanner only reads the configured `ready` labels.
559
+
560
+ 1. Resolve configured lifecycle labels from `.lisa.config.json` / `.lisa.config.local.json`:
561
+ - PRD lifecycle labels: `draft`, `ready`, `in_review`, `blocked`, `ticketed`, `shipped`,
562
+ `verified` when configured.
563
+ - Build lifecycle labels: `ready`, `claimed`, `blocked`, every env-resolved `done` value,
564
+ intermediate status labels where configured, and `human_needed`.
565
+ 2. Query open GitHub issues that are missing all configured lifecycle labels for the lifecycle(s)
566
+ selected by `intake_mode`. If `intake_mode=prd`, only PRD-classified issues are normalized. If
567
+ `intake_mode=build`, every non-PRD issue is normalized as a build ticket. If `intake_mode=both`,
568
+ classify PRDs first and normalize all remaining issues as build tickets.
569
+ 3. Classify the issue:
570
+ - **PRD** if it has PRD labels/markers (`prd`, `type:PRD`, `kind:prd`), PRD structure
571
+ (`## Problem`, `## Goals`, `## Validation Journey`, generated-work/backlink sections), or
572
+ body/comment text that explicitly says `prd-ready`.
573
+ - **Build ticket** if it has build work labels/types (`bug`, `type:Bug`, `task`, `type:Task`,
574
+ `sub-task`, `type:Sub-task`, `improvement`, `type:Improvement`, `story`, `spike`) or
575
+ body/comment text that explicitly says `build-ready`. When PRD signals are absent and the
576
+ selected lifecycle includes build, default to **Build ticket** even if no build type label is
577
+ present; build-intake/implement will validate the item and move it to `blocked` if required
578
+ sections are missing.
579
+ - **Ambiguous PRD/build** if strong PRD and build classifications both match. In `intake_mode=prd`
580
+ normalize as PRD; in `intake_mode=build` normalize as build; in `intake_mode=both`, prefer PRD
581
+ only when the body has PRD structure, otherwise build.
582
+ 4. Apply exactly one configured ready label for the classified lifecycle:
583
+ - PRD → add the configured PRD `ready` label (default `prd-ready`).
584
+ - Build ticket → add the configured build `ready` label (default `status:ready`).
585
+ Keep any unofficial labels for auditability unless the project has explicitly configured one as a
586
+ conflicting lifecycle label. Do not claim the item or dispatch an agent in the same repair cycle;
587
+ normalization makes the next normal `lisa:intake` run pick it up.
588
+ 5. Post one idempotent `[lisa-repair-intake]` note naming the classification and the configured label
589
+ applied. Include the normalization result in the loop-prevention fingerprint so repeated repair
590
+ cycles do not spam comments.
591
+
548
592
  ## Blocker classification & clearing (conservative, vendor-specific extraction)
549
593
 
550
594
  A `blocked` build item is held by one or more of three blocker classes. Identify which are present
@@ -664,6 +708,9 @@ It MAY:
664
708
  applies only to containers, never to leaves.
665
709
  - Move a PRD with fully terminal generated work to `shipped` and close/archive the source artifact
666
710
  where the source vendor supports native close-out, per `prd-lifecycle-rollup`.
711
+ - Normalize a GitHub issue with no configured lifecycle label by adding the configured PRD or build
712
+ `ready` label after classifying the issue. This is a visibility repair, not a claim; the item
713
+ remains open and unclaimed for normal intake.
667
714
 
668
715
  It MUST NOT:
669
716
 
@@ -673,15 +720,17 @@ It MUST NOT:
673
720
  - Touch `ready` **leaves** (that is `lisa:intake`'s lane). A container carrying `ready` is the
674
721
  documented exception above — repair-intake reconciles it because `ready` on a parent is an
675
722
  invariant violation, not the human "claim this leaf" signal intake owns.
723
+ - Move a GitHub issue that already carries a configured lifecycle label back to `ready` merely
724
+ because some other label looks stale. Official lifecycle labels remain authoritative.
676
725
 
677
726
  ## Cycle behavior
678
727
 
679
728
  1. **Resolve the queue** — detect vendor/lifecycle (Source dispatch); resolve stuck role names
680
729
  from config. For JIRA, confirm the needed transitions are reachable; stop on misconfig.
681
730
  2. **Enumerate repair candidates** — query in-progress role(s), `blocked` role(s), terminal/open
682
- items, rollup parents/PRDs with child work, and **containers carrying the `ready` role** (a
683
- leaf-only-invariant violation to reconcile), for the detected lifecycle(s), up to
684
- `max_candidates`, via the Access layer reads.
731
+ items, rollup parents/PRDs with child work, **containers carrying the `ready` role** (a
732
+ leaf-only-invariant violation to reconcile), and GitHub issues with no configured lifecycle label,
733
+ for the detected lifecycle(s), up to `max_candidates`, via the Access layer reads.
685
734
  3. **Order deterministically**, highest repair-confidence first:
686
735
  1. terminal-labeled items that only need native close / complete / resolve,
687
736
  2. rollup parents/PRDs whose child sets are all terminal (close-out),
@@ -692,7 +741,8 @@ It MUST NOT:
692
741
  5. `blocked` items whose **validation / quality-gate self-block now re-validates PASS** —
693
742
  a human filled in the missing sections (Class B; equally safe and high-value),
694
743
  6. `blocked` items with **new clarifying answers**,
695
- 7. **stalled** in-progress items, oldest activity first.
744
+ 7. GitHub missing-official-label normalization candidates,
745
+ 8. **stalled** in-progress items, oldest activity first.
696
746
  4. **Walk the ordered list**, evaluating each candidate (terminal close-out, rollup child tally,
697
747
  staleness, dependency, answer checks), and repair **every** candidate that is actionable inside
698
748
  the `max_candidates` cap. Continue after successful writes and after per-item errors.
@@ -723,6 +773,8 @@ Report outcomes in these buckets:
723
773
  - `rolled_up` — parent/container/PRD rollups advanced to their derived state: an intermediate env
724
774
  (e.g. all children at `On Stg` → parent `On Stg`), a fully-terminal close-out, or a stale-`ready`
725
775
  container reconciled from its children.
776
+ - `normalized_ready` — GitHub issues missing official lifecycle labels that were classified and
777
+ given the configured PRD/build `ready` label so normal intake can claim them.
726
778
  - `still_blocked` — examined and intentionally left `blocked`, with the active reason.
727
779
  - `active` — skipped because current work is not stale (or within backoff).
728
780
  - `errors` — items that failed evaluation, with the error.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "2.142.2",
3
+ "version": "2.143.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.142.2",
3
+ "version": "2.143.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-cdk",
3
- "version": "2.142.2",
3
+ "version": "2.143.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.142.2",
3
+ "version": "2.143.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.142.2",
3
+ "version": "2.143.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",
3
- "version": "2.142.2",
3
+ "version": "2.143.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
- description: "Repair counterpart to /lisa:intake. Vendor-agnostic batch scanner that finds stuck or half-closed work — items left in `blocked`, stalled in an in-progress role (build `claimed`, PRD `in_review`), terminal-labeled items still natively open, and rollups whose children are all terminal — across the same queues /lisa:intake serves (Notion / Confluence / Linear / GitHub PRDs; JIRA / GitHub / Linear build issues). Repairs every materially actionable candidate inside the `max_candidates` cap: resumes stalled in-progress work in place — but for a stalled build it first diagnoses the PR/deploy state and, if the PR cannot merge (conflict, rebase, failing checks, unaddressed CodeRabbit/changes-requested) or a deploy failed, files a build-ready fix ticket and moves the item to `blocked` (blocked by it) instead of re-dispatching — re-validates blocked PRDs, re-dispatches blocked build items whose blockers have cleared, performs terminal native closure, reconciles parent rollups to their derived state (including the intermediate-env case — e.g. all children at `On Stg` → parent `On Stg` — and a container wrongly stuck in `ready`), and closes out completed rollups. Cron-safe and bounded; default GitHub intake_mode is both and default max_candidates is 100."
2
+ description: "Repair counterpart to /lisa:intake. Vendor-agnostic batch scanner that finds stuck or half-closed work — items left in `blocked`, stalled in an in-progress role (build `claimed`, PRD `in_review`), terminal-labeled items still natively open, rollups whose children are all terminal, and GitHub issues missing official Lisa lifecycle labels — across the same queues /lisa:intake serves (Notion / Confluence / Linear / GitHub PRDs; JIRA / GitHub / Linear build issues). Repairs every materially actionable candidate inside the `max_candidates` cap: resumes stalled in-progress work in place — but for a stalled build it first diagnoses the PR/deploy state and, if the PR cannot merge (conflict, rebase, failing checks, unaddressed CodeRabbit/changes-requested) or a deploy failed, files a build-ready fix ticket and moves the item to `blocked` (blocked by it) instead of re-dispatching — re-validates blocked PRDs, re-dispatches blocked build items whose blockers have cleared, performs terminal native closure, reconciles parent rollups to their derived state (including the intermediate-env case — e.g. all children at `On Stg` → parent `On Stg` — and a container wrongly stuck in `ready`), normalizes missing GitHub lifecycle labels to the configured PRD/build `ready` label, and closes out completed rollups. Cron-safe and bounded; default GitHub intake_mode is both and default max_candidates is 100."
3
3
  argument-hint: "<Notion-PRD-database-URL | Confluence-space-URL | Confluence-parent-page-URL | Linear-workspace-URL | Linear-team-URL | GitHub-repo-URL | org/repo | JIRA-project-key | JQL-filter> [intake_mode=prd|build|both] [stale_after=2h] [max_candidates=100] [force=true]"
4
4
  ---
5
5
 
6
- Use the /lisa:repair-intake skill to scan the queue for stuck or half-closed items and repair every materially actionable candidate inside `max_candidates` (default 100). For GitHub queues, default `intake_mode` to `both` when the caller omits it. $ARGUMENTS
6
+ Use the /lisa:repair-intake skill to scan the queue for stuck or half-closed items, normalize GitHub issues missing official Lisa lifecycle labels into the configured PRD/build `ready` lane, and repair every materially actionable candidate inside `max_candidates` (default 100). For GitHub queues, default `intake_mode` to `both` when the caller omits it. $ARGUMENTS
@@ -45,6 +45,10 @@ close-out** roles and moves work *unstuck* or *fully closed*:
45
45
  the build-intake claim gate deliberately leaves for a human; repair-intake reconciles it by
46
46
  rolling the parent up from its children (with an audit note), so a container never sits in `ready`
47
47
  indefinitely.
48
+ - **Missing official ready-label drift** — a GitHub issue that is missing every configured Lisa
49
+ lifecycle label. repair-intake classifies it as a PRD or build ticket and adds the configured
50
+ `ready` label (`prd-ready` for a PRD, build `status:ready` for a ticket) so normal intake can see
51
+ it; if the later intake/implement gate finds the item incomplete, it moves the item to `blocked`.
48
52
 
49
53
  This skill is the symmetric counterpart to `lisa:intake`. It reuses the same queue-detection,
50
54
  the same agent-team orchestration, the same "don't ask, just run" confirmation policy, and the
@@ -150,7 +154,8 @@ claim-and-advance). The essentials, inlined here so this skill is self-complete:
150
154
  | Linear **workspace** URL, **team** URL/key, or literal `linear` | PRD (Linear) | source=linear | `in_review`, `blocked`, terminal/open PRDs, all-terminal generated-work rollups |
151
155
  | GitHub **repo** URL / `org/repo` (PRD namespace) | PRD (GitHub) | source=github | `in_review`, `blocked`, terminal/open PRDs, all-terminal generated-work rollups |
152
156
  | GitHub **repo** URL / `org/repo` with `tracker = github` (build namespace) | Build (GitHub) | tracker=github | `claimed`, `blocked`, terminal/open issues, parent rollups (intermediate-env + all-terminal), stale-`ready` containers |
153
- | Literal `github` | GitHub; route by `intake_mode` (`prd` / `build` / `both`) | per lifecycle | per lifecycle above |
157
+ | GitHub **repo** URL / `org/repo` with an open issue missing configured lifecycle labels | GitHub label normalization | per classified lifecycle | add configured `prd.ready` or build `ready` |
158
+ | Literal `github` | GitHub; route by `intake_mode` (`prd` / `build` / `both`) | per lifecycle | per lifecycle above, plus GitHub ready-label normalization |
154
159
  | JIRA project key or full JQL | Build (JIRA) | tracker=jira | `claimed`, `blocked`, terminal/closure verification, parent rollups (intermediate-env + all-terminal), stale-`ready` containers |
155
160
 
156
161
  Disambiguation (same as `lisa:intake`): a `notion.so`/`notion.site` URL → Notion; an Atlassian
@@ -545,6 +550,45 @@ work is fully terminal:
545
550
  5. If generated work is missing, ambiguous, or partially incomplete, leave the PRD open and report
546
551
  the incomplete child set. Never close a PRD on partial completion.
547
552
 
553
+ ### GitHub missing official ready-label normalization → configured ready
554
+
555
+ For GitHub queues, enumerate open issues that have **no configured Lisa lifecycle label** in the
556
+ active lifecycle namespace(s). This is the repair path for issues created by older tools or humans
557
+ with labels like `build-ready`, or with no Lisa status label at all, that are invisible to
558
+ `lisa:intake`, whose scanner only reads the configured `ready` labels.
559
+
560
+ 1. Resolve configured lifecycle labels from `.lisa.config.json` / `.lisa.config.local.json`:
561
+ - PRD lifecycle labels: `draft`, `ready`, `in_review`, `blocked`, `ticketed`, `shipped`,
562
+ `verified` when configured.
563
+ - Build lifecycle labels: `ready`, `claimed`, `blocked`, every env-resolved `done` value,
564
+ intermediate status labels where configured, and `human_needed`.
565
+ 2. Query open GitHub issues that are missing all configured lifecycle labels for the lifecycle(s)
566
+ selected by `intake_mode`. If `intake_mode=prd`, only PRD-classified issues are normalized. If
567
+ `intake_mode=build`, every non-PRD issue is normalized as a build ticket. If `intake_mode=both`,
568
+ classify PRDs first and normalize all remaining issues as build tickets.
569
+ 3. Classify the issue:
570
+ - **PRD** if it has PRD labels/markers (`prd`, `type:PRD`, `kind:prd`), PRD structure
571
+ (`## Problem`, `## Goals`, `## Validation Journey`, generated-work/backlink sections), or
572
+ body/comment text that explicitly says `prd-ready`.
573
+ - **Build ticket** if it has build work labels/types (`bug`, `type:Bug`, `task`, `type:Task`,
574
+ `sub-task`, `type:Sub-task`, `improvement`, `type:Improvement`, `story`, `spike`) or
575
+ body/comment text that explicitly says `build-ready`. When PRD signals are absent and the
576
+ selected lifecycle includes build, default to **Build ticket** even if no build type label is
577
+ present; build-intake/implement will validate the item and move it to `blocked` if required
578
+ sections are missing.
579
+ - **Ambiguous PRD/build** if strong PRD and build classifications both match. In `intake_mode=prd`
580
+ normalize as PRD; in `intake_mode=build` normalize as build; in `intake_mode=both`, prefer PRD
581
+ only when the body has PRD structure, otherwise build.
582
+ 4. Apply exactly one configured ready label for the classified lifecycle:
583
+ - PRD → add the configured PRD `ready` label (default `prd-ready`).
584
+ - Build ticket → add the configured build `ready` label (default `status:ready`).
585
+ Keep any unofficial labels for auditability unless the project has explicitly configured one as a
586
+ conflicting lifecycle label. Do not claim the item or dispatch an agent in the same repair cycle;
587
+ normalization makes the next normal `lisa:intake` run pick it up.
588
+ 5. Post one idempotent `[lisa-repair-intake]` note naming the classification and the configured label
589
+ applied. Include the normalization result in the loop-prevention fingerprint so repeated repair
590
+ cycles do not spam comments.
591
+
548
592
  ## Blocker classification & clearing (conservative, vendor-specific extraction)
549
593
 
550
594
  A `blocked` build item is held by one or more of three blocker classes. Identify which are present
@@ -664,6 +708,9 @@ It MAY:
664
708
  applies only to containers, never to leaves.
665
709
  - Move a PRD with fully terminal generated work to `shipped` and close/archive the source artifact
666
710
  where the source vendor supports native close-out, per `prd-lifecycle-rollup`.
711
+ - Normalize a GitHub issue with no configured lifecycle label by adding the configured PRD or build
712
+ `ready` label after classifying the issue. This is a visibility repair, not a claim; the item
713
+ remains open and unclaimed for normal intake.
667
714
 
668
715
  It MUST NOT:
669
716
 
@@ -673,15 +720,17 @@ It MUST NOT:
673
720
  - Touch `ready` **leaves** (that is `lisa:intake`'s lane). A container carrying `ready` is the
674
721
  documented exception above — repair-intake reconciles it because `ready` on a parent is an
675
722
  invariant violation, not the human "claim this leaf" signal intake owns.
723
+ - Move a GitHub issue that already carries a configured lifecycle label back to `ready` merely
724
+ because some other label looks stale. Official lifecycle labels remain authoritative.
676
725
 
677
726
  ## Cycle behavior
678
727
 
679
728
  1. **Resolve the queue** — detect vendor/lifecycle (Source dispatch); resolve stuck role names
680
729
  from config. For JIRA, confirm the needed transitions are reachable; stop on misconfig.
681
730
  2. **Enumerate repair candidates** — query in-progress role(s), `blocked` role(s), terminal/open
682
- items, rollup parents/PRDs with child work, and **containers carrying the `ready` role** (a
683
- leaf-only-invariant violation to reconcile), for the detected lifecycle(s), up to
684
- `max_candidates`, via the Access layer reads.
731
+ items, rollup parents/PRDs with child work, **containers carrying the `ready` role** (a
732
+ leaf-only-invariant violation to reconcile), and GitHub issues with no configured lifecycle label,
733
+ for the detected lifecycle(s), up to `max_candidates`, via the Access layer reads.
685
734
  3. **Order deterministically**, highest repair-confidence first:
686
735
  1. terminal-labeled items that only need native close / complete / resolve,
687
736
  2. rollup parents/PRDs whose child sets are all terminal (close-out),
@@ -692,7 +741,8 @@ It MUST NOT:
692
741
  5. `blocked` items whose **validation / quality-gate self-block now re-validates PASS** —
693
742
  a human filled in the missing sections (Class B; equally safe and high-value),
694
743
  6. `blocked` items with **new clarifying answers**,
695
- 7. **stalled** in-progress items, oldest activity first.
744
+ 7. GitHub missing-official-label normalization candidates,
745
+ 8. **stalled** in-progress items, oldest activity first.
696
746
  4. **Walk the ordered list**, evaluating each candidate (terminal close-out, rollup child tally,
697
747
  staleness, dependency, answer checks), and repair **every** candidate that is actionable inside
698
748
  the `max_candidates` cap. Continue after successful writes and after per-item errors.
@@ -723,6 +773,8 @@ Report outcomes in these buckets:
723
773
  - `rolled_up` — parent/container/PRD rollups advanced to their derived state: an intermediate env
724
774
  (e.g. all children at `On Stg` → parent `On Stg`), a fully-terminal close-out, or a stale-`ready`
725
775
  container reconciled from its children.
776
+ - `normalized_ready` — GitHub issues missing official lifecycle labels that were classified and
777
+ given the configured PRD/build `ready` label so normal intake can claim them.
726
778
  - `still_blocked` — examined and intentionally left `blocked`, with the active reason.
727
779
  - `active` — skipped because current work is not stale (or within backoff).
728
780
  - `errors` — items that failed evaluation, with the error.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.142.2",
3
+ "version": "2.143.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
- description: "Repair counterpart to /lisa:intake. Vendor-agnostic batch scanner that finds stuck or half-closed work — items left in `blocked`, stalled in an in-progress role (build `claimed`, PRD `in_review`), terminal-labeled items still natively open, and rollups whose children are all terminal — across the same queues /lisa:intake serves (Notion / Confluence / Linear / GitHub PRDs; JIRA / GitHub / Linear build issues). Repairs every materially actionable candidate inside the `max_candidates` cap: resumes stalled in-progress work in place — but for a stalled build it first diagnoses the PR/deploy state and, if the PR cannot merge (conflict, rebase, failing checks, unaddressed CodeRabbit/changes-requested) or a deploy failed, files a build-ready fix ticket and moves the item to `blocked` (blocked by it) instead of re-dispatching — re-validates blocked PRDs, re-dispatches blocked build items whose blockers have cleared, performs terminal native closure, reconciles parent rollups to their derived state (including the intermediate-env case — e.g. all children at `On Stg` → parent `On Stg` — and a container wrongly stuck in `ready`), and closes out completed rollups. Cron-safe and bounded; default GitHub intake_mode is both and default max_candidates is 100."
2
+ description: "Repair counterpart to /lisa:intake. Vendor-agnostic batch scanner that finds stuck or half-closed work — items left in `blocked`, stalled in an in-progress role (build `claimed`, PRD `in_review`), terminal-labeled items still natively open, rollups whose children are all terminal, and GitHub issues missing official Lisa lifecycle labels — across the same queues /lisa:intake serves (Notion / Confluence / Linear / GitHub PRDs; JIRA / GitHub / Linear build issues). Repairs every materially actionable candidate inside the `max_candidates` cap: resumes stalled in-progress work in place — but for a stalled build it first diagnoses the PR/deploy state and, if the PR cannot merge (conflict, rebase, failing checks, unaddressed CodeRabbit/changes-requested) or a deploy failed, files a build-ready fix ticket and moves the item to `blocked` (blocked by it) instead of re-dispatching — re-validates blocked PRDs, re-dispatches blocked build items whose blockers have cleared, performs terminal native closure, reconciles parent rollups to their derived state (including the intermediate-env case — e.g. all children at `On Stg` → parent `On Stg` — and a container wrongly stuck in `ready`), normalizes missing GitHub lifecycle labels to the configured PRD/build `ready` label, and closes out completed rollups. Cron-safe and bounded; default GitHub intake_mode is both and default max_candidates is 100."
3
3
  argument-hint: "<Notion-PRD-database-URL | Confluence-space-URL | Confluence-parent-page-URL | Linear-workspace-URL | Linear-team-URL | GitHub-repo-URL | org/repo | JIRA-project-key | JQL-filter> [intake_mode=prd|build|both] [stale_after=2h] [max_candidates=100] [force=true]"
4
4
  ---
5
5
 
6
- Use the /lisa:repair-intake skill to scan the queue for stuck or half-closed items and repair every materially actionable candidate inside `max_candidates` (default 100). For GitHub queues, default `intake_mode` to `both` when the caller omits it. $ARGUMENTS
6
+ Use the /lisa:repair-intake skill to scan the queue for stuck or half-closed items, normalize GitHub issues missing official Lisa lifecycle labels into the configured PRD/build `ready` lane, and repair every materially actionable candidate inside `max_candidates` (default 100). For GitHub queues, default `intake_mode` to `both` when the caller omits it. $ARGUMENTS