@codyswann/lisa 2.201.0 → 2.203.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 (110) hide show
  1. package/README.md +29 -10
  2. package/package.json +1 -1
  3. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  4. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  5. package/plugins/lisa/.codex-plugin/skills/lisa-agent-ready/SKILL.md +123 -0
  6. package/plugins/lisa/.codex-plugin/skills/lisa-agent-ready/agents/openai.yaml +4 -0
  7. package/plugins/lisa/.codex-plugin/skills/lisa-automation-status/SKILL.md +1 -0
  8. package/plugins/lisa/.codex-plugin/skills/lisa-github-validate-issue/SKILL.md +28 -1
  9. package/plugins/lisa/.codex-plugin/skills/lisa-jira-validate-ticket/SKILL.md +28 -1
  10. package/plugins/lisa/.codex-plugin/skills/lisa-linear-validate-issue/SKILL.md +27 -0
  11. package/plugins/lisa/.codex-plugin/skills/lisa-setup-automations/SKILL.md +12 -4
  12. package/plugins/lisa/.codex-plugin/skills/lisa-tear-down-automations/SKILL.md +2 -2
  13. package/plugins/lisa/commands/lisa/agent-ready.md +6 -0
  14. package/plugins/lisa/rules/eager/factory-model.md +40 -0
  15. package/plugins/lisa/rules/reference/factory-model.md +107 -0
  16. package/plugins/lisa/skills/lisa-agent-ready/SKILL.md +123 -0
  17. package/plugins/lisa/skills/lisa-agent-ready/agents/openai.yaml +4 -0
  18. package/plugins/lisa/skills/lisa-automation-status/SKILL.md +1 -0
  19. package/plugins/lisa/skills/lisa-github-validate-issue/SKILL.md +28 -1
  20. package/plugins/lisa/skills/lisa-jira-validate-ticket/SKILL.md +28 -1
  21. package/plugins/lisa/skills/lisa-linear-validate-issue/SKILL.md +27 -0
  22. package/plugins/lisa/skills/lisa-setup-automations/SKILL.md +13 -5
  23. package/plugins/lisa/skills/lisa-tear-down-automations/SKILL.md +3 -3
  24. package/plugins/lisa-agy/commands/lisa/agent-ready.md +6 -0
  25. package/plugins/lisa-agy/plugin.json +1 -1
  26. package/plugins/lisa-agy/skills/lisa-agent-ready/SKILL.md +123 -0
  27. package/plugins/lisa-agy/skills/lisa-automation-status/SKILL.md +1 -0
  28. package/plugins/lisa-agy/skills/lisa-github-validate-issue/SKILL.md +28 -1
  29. package/plugins/lisa-agy/skills/lisa-jira-validate-ticket/SKILL.md +28 -1
  30. package/plugins/lisa-agy/skills/lisa-linear-validate-issue/SKILL.md +27 -0
  31. package/plugins/lisa-agy/skills/lisa-setup-automations/SKILL.md +13 -5
  32. package/plugins/lisa-agy/skills/lisa-tear-down-automations/SKILL.md +3 -3
  33. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  34. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  35. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  36. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  37. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  38. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  39. package/plugins/lisa-copilot/commands/lisa/agent-ready.md +6 -0
  40. package/plugins/lisa-copilot/rules/eager/factory-model.md +40 -0
  41. package/plugins/lisa-copilot/rules/reference/factory-model.md +107 -0
  42. package/plugins/lisa-copilot/skills/lisa-agent-ready/SKILL.md +123 -0
  43. package/plugins/lisa-copilot/skills/lisa-automation-status/SKILL.md +1 -0
  44. package/plugins/lisa-copilot/skills/lisa-github-validate-issue/SKILL.md +28 -1
  45. package/plugins/lisa-copilot/skills/lisa-jira-validate-ticket/SKILL.md +28 -1
  46. package/plugins/lisa-copilot/skills/lisa-linear-validate-issue/SKILL.md +27 -0
  47. package/plugins/lisa-copilot/skills/lisa-setup-automations/SKILL.md +13 -5
  48. package/plugins/lisa-copilot/skills/lisa-tear-down-automations/SKILL.md +3 -3
  49. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  50. package/plugins/lisa-cursor/commands/lisa/agent-ready.md +6 -0
  51. package/plugins/lisa-cursor/rules/factory-model-reference.mdc +112 -0
  52. package/plugins/lisa-cursor/rules/factory-model.mdc +45 -0
  53. package/plugins/lisa-cursor/skills/lisa-agent-ready/SKILL.md +123 -0
  54. package/plugins/lisa-cursor/skills/lisa-automation-status/SKILL.md +1 -0
  55. package/plugins/lisa-cursor/skills/lisa-github-validate-issue/SKILL.md +28 -1
  56. package/plugins/lisa-cursor/skills/lisa-jira-validate-ticket/SKILL.md +28 -1
  57. package/plugins/lisa-cursor/skills/lisa-linear-validate-issue/SKILL.md +27 -0
  58. package/plugins/lisa-cursor/skills/lisa-setup-automations/SKILL.md +13 -5
  59. package/plugins/lisa-cursor/skills/lisa-tear-down-automations/SKILL.md +3 -3
  60. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  62. package/plugins/lisa-expo-agy/plugin.json +1 -1
  63. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  64. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  65. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  66. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  67. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  68. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  69. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  70. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  71. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  72. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  73. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  74. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  75. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  76. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  77. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  78. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  79. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  80. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  81. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  82. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  83. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  84. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  85. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  86. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  87. package/plugins/lisa-rails-agy/plugin.json +1 -1
  88. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  89. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  90. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  91. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  92. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  93. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  94. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  95. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  96. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  97. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  98. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  99. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  100. package/plugins/src/base/commands/lisa/agent-ready.md +6 -0
  101. package/plugins/src/base/rules/eager/factory-model.md +40 -0
  102. package/plugins/src/base/rules/reference/factory-model.md +107 -0
  103. package/plugins/src/base/skills/lisa-agent-ready/SKILL.md +123 -0
  104. package/plugins/src/base/skills/lisa-automation-status/SKILL.md +1 -0
  105. package/plugins/src/base/skills/lisa-github-validate-issue/SKILL.md +28 -1
  106. package/plugins/src/base/skills/lisa-jira-validate-ticket/SKILL.md +28 -1
  107. package/plugins/src/base/skills/lisa-linear-validate-issue/SKILL.md +27 -0
  108. package/plugins/src/base/skills/lisa-setup-automations/SKILL.md +13 -5
  109. package/plugins/src/base/skills/lisa-tear-down-automations/SKILL.md +3 -3
  110. package/ui/index.html +177 -25
@@ -94,6 +94,7 @@ Each gate is tagged with a fixed `category` and a `product_relevant` boolean. Ca
94
94
  | F2 Project parent exists and is in same team | `structural` | false |
95
95
  | F3 Linked items exist | `structural` | false |
96
96
  | F4 Required labels exist (or can be created) | `structural` | false |
97
+ | F5 Required external access provable | `technical` | true |
97
98
 
98
99
  Category values are the same fixed set as `lisa-jira-validate-ticket`:
99
100
 
@@ -253,6 +254,31 @@ For each entry in `relations`, call `lisa-linear-access operation: get-issue` to
253
254
 
254
255
  For each label referenced (`status:*`, `component:<name>`, `prd-*`), confirm via `lisa-linear-access operation: list-issue-labels` (or `lisa-linear-access operation: list-project-labels` for Project labels) that it exists OR is creatable. Linear labels are team-scoped or workspace-scoped; flag if the requested scope is wrong.
255
256
 
257
+ #### F5 — Required external access provable
258
+
259
+ The factory-gate rule: an input must not enter the pipeline unless the current runtime can actually
260
+ reach every external surface the work requires. Enumerate the surfaces this item depends on:
261
+
262
+ - artifact links in the body (documents, designs, dashboards, spreadsheets, recordings),
263
+ - systems named by the description, acceptance criteria, or Validation Journey ("read the CloudWatch
264
+ alarms", "pull the copy from the Google Doc", "check the Sentry issues"),
265
+ - tooling the work plainly implies (a deploy target, a database, a third-party API).
266
+
267
+ For each surface, prove **read** access from the current runtime with the cheapest read-only probe
268
+ through the sanctioned access layer: the matching MCP tool or `lisa-*-access` skill, CLI auth
269
+ (`aws sts get-caller-identity`, `gh auth status`, vendor equivalents), or an authenticated fetch of
270
+ the linked artifact. Attempt to resolve a gap before failing — an alternate substrate, a configured
271
+ access layer, a keychain credential — mirroring the intake agent's discover-first duty.
272
+
273
+ - `PASS` — every required surface is provably readable.
274
+ - `N/A` — the item needs nothing beyond the repository and the tracker itself.
275
+ - `FAIL` — a required surface is unreachable after the resolution attempt. Name the exact surface
276
+ and what was probed. Intake callers must route this to `blocked` + human escalation with the
277
+ missing access spelled out — an input the factory cannot execute never enters the factory.
278
+
279
+ Probes are read-only and bounded (seconds, not minutes, per surface); never mutate the external
280
+ system, and never invent or ask for credentials inline.
281
+
256
282
  ## Execution
257
283
 
258
284
  1. Parse `$ARGUMENTS`. If it's an identifier, fetch the item and derive the spec from the fetched fields — including `build_ready` (label set contains `status:ready`) and `child_refs` (sub-issues, project-member issues, plus `blocked_by` parentage, resolved as in `lisa-linear-read-issue`) so S15 can classify the item. Otherwise parse the YAML spec.
@@ -290,6 +316,7 @@ Output is a single fenced text block. Callers parse it; do not add free-form pro
290
316
  - [PASS|FAIL|N/A] F2 Project parent exists and is in same team — <one-line reason>
291
317
  - [PASS|FAIL|N/A] F3 Linked items exist — <one-line reason>
292
318
  - [PASS|FAIL|N/A] F4 Required labels exist (or can be created) — <one-line reason>
319
+ - [PASS|FAIL|N/A] F5 Required external access provable — <one-line reason>
293
320
 
294
321
  ### Verdict: PASS | FAIL
295
322
  ### Failures: <count>
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: lisa-setup-automations
3
- description: "Set up the recurring Lisa automations on the local workstation using the CURRENT runtime's native scheduler — Codex automations (the native automations / automation_update mechanism) or, on Claude, /schedule. This skill is a declarative specification: it states WHICH automations to create, how often, and with which parameters; it does not template schedule files or run scheduling code itself — the runtime's native automation mechanism does the creating. Creates five automations: intake-repair (every 60 min), intake PRD (every 60 min), intake tickets (every 10 min), exploratory-bugs (once a day), exploratory-prds (once a day). Two flags — auto-start-prds and auto-start-tickets — control whether the ideated PRDs / filed bug tickets are created auto-pickup-ready (prd_ready / ready) or left for human review (default false). Tear down with /tear-down-automations."
3
+ description: "Set up the recurring Lisa automations on the local workstation using the CURRENT runtime's native scheduler — Codex automations (the native automations / automation_update mechanism) or, on Claude, /schedule. This skill is a declarative specification: it states WHICH automations to create, how often, and with which parameters; it does not template schedule files or run scheduling code itself — the runtime's native automation mechanism does the creating. Creates six automations: intake-repair (every 60 min), intake PRD (every 60 min), intake tickets (every 10 min), exploratory-bugs (once a day), exploratory-prds (once a day), monitor (once a day). Two flags — auto-start-prds and auto-start-tickets — control whether the ideated PRDs / filed bug tickets are created auto-pickup-ready (prd_ready / ready, default true) or left for human review. Tear down with /tear-down-automations."
4
4
  allowed-tools: ["Skill", "Bash", "Read"]
5
5
  ---
6
6
 
@@ -28,18 +28,20 @@ create them; invoke the runtime's automation tool with the spec below.
28
28
 
29
29
  ## Parameters
30
30
 
31
- - `auto-start-prds` (default **false**) — passed as `prd_ready` to the **exploratory-prds**
31
+ - `auto-start-prds` (default **true**) — passed as `prd_ready` to the **exploratory-prds**
32
32
  automation. `true` → ideated PRDs are created `prd-ready` (auto-picked-up by PRD intake); `false` →
33
33
  created as drafts for human review. When `true`, `/lisa:project-ideation` still checks the configured
34
34
  PRD queue before writing: existing `prd-ready`, `prd-in-review`, `prd-blocked`, unresolved
35
35
  `prd-ticketed`, or unresolved source-reader pressure can intentionally turn the automation cycle into
36
36
  a blocked/idle outcome instead of creating another ready PRD.
37
- - `auto-start-tickets` (default **false**) — passed as `ready` to the **exploratory-bugs**
37
+ - `auto-start-tickets` (default **true**) — passed as `ready` to the **exploratory-bugs**
38
38
  automation. `true` → filed bug/usability tickets are created build-ready (auto-picked-up by ticket
39
39
  intake); `false` → created in the backlog for human triage.
40
40
 
41
- Defaults match the underlying skillsnothing auto-starts unless explicitly opted in. The two flags
42
- affect **only** the two exploratory automations.
41
+ The defaults are autonomous by design the factory model wants inputs flowing through the gates
42
+ without a human between the loops and the pipeline. Pass `false` explicitly to opt a project into
43
+ human triage. The two flags affect **only** the two exploratory automations; the intake gates'
44
+ adversarial validation remains the quality control either way.
43
45
 
44
46
  ## The automations to create
45
47
 
@@ -62,6 +64,7 @@ report the exact conflicting path(s).
62
64
  | **intake-tickets** | `/lisa:intake <build queue>` (e.g. `github intake_mode=build`) | every **10 minutes** |
63
65
  | **exploratory-bugs** | `/lisa-<stack>:exploratory-qa ready=<auto-start-tickets>` | **once a day** |
64
66
  | **exploratory-prds** | `/lisa:project-ideation prd_ready=<auto-start-prds>` | **once a day** |
67
+ | **monitor** | `/lisa:monitor` | **once a day** |
65
68
 
66
69
  For a Codex `rrule`: every 60 min → `FREQ=HOURLY;INTERVAL=1`; every 10 min →
67
70
  `FREQ=MINUTELY;INTERVAL=10`; once a day → `FREQ=DAILY;INTERVAL=1`.
@@ -92,6 +95,11 @@ place (same names) rather than creating duplicates.
92
95
  - **exploratory-bugs** is created only when the project ships an `exploratory-qa` command (the
93
96
  `expo` / `rails` / `harper-fabric` stacks). If the project has no `lisa-exploratory-qa` skill/command, skip that
94
97
  automation and note it — do not invent a command that doesn't exist.
98
+ - **monitor** is created unconditionally: `/lisa:monitor` resolves the connected observability
99
+ providers itself and reports gaps (per its `monitor.gapTiers` config) rather than failing when a
100
+ provider is absent, so an unconnected project gets gap findings instead of a broken automation.
101
+ Its findings become tracker tickets, feeding the pipeline at the build gate like every other
102
+ input.
95
103
  - If the runtime has no native scheduler, or the intake queues can't be resolved from config, stop
96
104
  and report what's missing rather than guessing.
97
105
  - For Codex, if the durable checkout cannot be created, fetched, or verified as a non-bare Git work
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: lisa-tear-down-automations
3
- description: "Remove every recurring Lisa automation that /setup-automations created for this project (the lisa-auto-<project>-* set: intake-repair, intake-prd, intake-tickets, exploratory-bugs, exploratory-prds) using the CURRENT runtime's native scheduler — Codex automations or, on Claude, /schedule. This skill is a declarative specification: it identifies WHICH automations to remove; it does not run teardown scripts. Removes only this project's Lisa automations — never other projects' automations or non-Lisa ones. The inverse of /setup-automations."
3
+ description: "Remove every recurring Lisa automation that /setup-automations created for this project (the lisa-auto-<project>-* set: intake-repair, intake-prd, intake-tickets, exploratory-bugs, exploratory-prds, monitor) using the CURRENT runtime's native scheduler — Codex automations or, on Claude, /schedule. This skill is a declarative specification: it identifies WHICH automations to remove; it does not run teardown scripts. Removes only this project's Lisa automations — never other projects' automations or non-Lisa ones. The inverse of /setup-automations."
4
4
  allowed-tools: ["Skill", "Bash", "Read"]
5
5
  ---
6
6
 
@@ -21,9 +21,9 @@ removes them with its **native** scheduling mechanism.
21
21
 
22
22
  ## Scope (remove only what setup created)
23
23
 
24
- - Remove the five automations `/setup-automations` creates for the current project, matched by the
24
+ - Remove the six automations `/setup-automations` creates for the current project, matched by the
25
25
  stable `lisa-auto-<project>-` name prefix: `intake-repair`, `intake-prd`, `intake-tickets`,
26
- `exploratory-bugs`, `exploratory-prds`.
26
+ `exploratory-bugs`, `exploratory-prds`, `monitor`.
27
27
  - **Never** remove automations for a different project, or any non-Lisa automation (e.g. unrelated
28
28
  crawlers/ingestors). Match strictly on the `lisa-auto-<project>-` prefix for THIS project; when in
29
29
  doubt about an automation's ownership, leave it and report it rather than deleting it.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "2.201.0",
3
+ "version": "2.203.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.201.0",
3
+ "version": "2.203.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-expo",
3
- "version": "2.201.0",
3
+ "version": "2.203.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.201.0",
3
+ "version": "2.203.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.201.0",
3
+ "version": "2.203.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-harper-fabric",
3
- "version": "2.201.0",
3
+ "version": "2.203.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.201.0",
3
+ "version": "2.203.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-harper-fabric",
3
- "version": "2.201.0",
3
+ "version": "2.203.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.201.0",
3
+ "version": "2.203.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.201.0",
3
+ "version": "2.203.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-nestjs",
3
- "version": "2.201.0",
3
+ "version": "2.203.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.201.0",
3
+ "version": "2.203.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-nestjs",
3
- "version": "2.201.0",
3
+ "version": "2.203.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.201.0",
3
+ "version": "2.203.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.201.0",
3
+ "version": "2.203.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-openclaw",
3
- "version": "2.201.0",
3
+ "version": "2.203.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.201.0",
3
+ "version": "2.203.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-openclaw",
3
- "version": "2.201.0",
3
+ "version": "2.203.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.201.0",
3
+ "version": "2.203.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.201.0",
3
+ "version": "2.203.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-phaser",
3
- "version": "2.201.0",
3
+ "version": "2.203.0",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "2.201.0",
3
+ "version": "2.203.0",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "2.201.0",
3
+ "version": "2.203.0",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "2.201.0",
3
+ "version": "2.203.0",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "2.201.0",
3
+ "version": "2.203.0",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "2.201.0",
3
+ "version": "2.203.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.201.0",
3
+ "version": "2.203.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-rails",
3
- "version": "2.201.0",
3
+ "version": "2.203.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.201.0",
3
+ "version": "2.203.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.201.0",
3
+ "version": "2.203.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-typescript",
3
- "version": "2.201.0",
3
+ "version": "2.203.0",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "2.201.0",
3
+ "version": "2.203.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-typescript",
3
- "version": "2.201.0",
3
+ "version": "2.203.0",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "2.201.0",
3
+ "version": "2.203.0",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "2.201.0",
3
+ "version": "2.203.0",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "2.201.0",
3
+ "version": "2.203.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.201.0",
3
+ "version": "2.203.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"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "2.201.0",
3
+ "version": "2.203.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.201.0",
3
+ "version": "2.203.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.201.0",
3
+ "version": "2.203.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"
@@ -0,0 +1,6 @@
1
+ ---
2
+ description: "Make a brownfield project agent-ready: build the initial knowledge wiki from everything the agent can reach, write wiki/gaps.md with the questions only a human can answer, and converge over re-runs (humans answer, agents absorb) until zero gaps remain. Run before letting the automation fleet operate a brownfield project unattended."
3
+ argument-hint: "[path]"
4
+ ---
5
+
6
+ Use the /lisa-agent-ready skill to build the initial knowledge wiki from every reachable source, write the human-answerable gaps to wiki/gaps.md, absorb any answered gaps from a prior run, and report whether the project is agent-ready or how many gaps remain. $ARGUMENTS
@@ -0,0 +1,40 @@
1
+ # The Factory Model (load-bearing)
2
+
3
+ This project runs as a set of **software factories** — agent-operated production lines with as few
4
+ humans as possible. You are factory machinery, not a chat assistant. Four factories: **Research**
5
+ (creates PRDs) → **Plan** (PRDs → work units) → **Implement** (work units → quality software) →
6
+ **Verify** (go/no-go by using the software like a human; failures become build-ready tickets that
7
+ flow straight back into Implement).
8
+
9
+ The rules that follow from this:
10
+
11
+ 1. **Humans are not inside the factories.** Never pause mid-flow to ask a human whether to proceed.
12
+ All handoff happens at the **gates** — the ready-role flips (`prd-ready`, `status:ready`) plus
13
+ intake's adversarial validation.
14
+ 2. **The gate is adversarial.** An input enters a factory only when it is high-quality,
15
+ unambiguous, and the factory has the tooling *and provable access to that tooling* to execute it
16
+ (validator gate F5). Try to discover the answers to gaps first; what you genuinely cannot
17
+ resolve, reject to `blocked` and raise to a human with the exact missing thing named.
18
+ 3. **Everything runs on schedule.** The intake, QA, Product Planning, and Monitoring loops run as
19
+ native automations (Claude Routines / Codex Automations). Every flow must therefore work
20
+ headless: no interactive prompts, idempotent re-runs, clean exits on empty queues.
21
+ 4. **Quality is enforced, not requested.** The skills, hooks, quality checks, and guardrails exist
22
+ to keep the software enterprise-grade and maintainable. Never weaken a gate to get work through
23
+ it — fix the work.
24
+ 5. **Write outward for a non-technical operator.** The goal of the factory setup is to let
25
+ non-technical people create scalable software. Everything that crosses a gate outward — blocked
26
+ reasons, clarifying questions, ticket descriptions, verification reports — must be readable by
27
+ someone who does not code; they own product intent, the factories own the engineering.
28
+ 6. **Every supported coding agent is a first-class operator.** Claude Code, Codex, Cursor,
29
+ OpenCode, Antigravity, Copilot — behavior must stay in parity, and anything persisted for
30
+ agents must be visible to all of them.
31
+
32
+ Brownfield on-ramp: an existing codebase becomes agent-ready **before** the fleet runs unattended
33
+ — `/lisa:agent-ready` converges human knowledge into the wiki (gaps loop until none remain), then
34
+ standards adoption refactors to conformance without behavior change.
35
+
36
+ End state: end users have zero direct contact with coding agents — they interact with the tracker,
37
+ the PRD source, and the shipped software.
38
+
39
+ Full reference (factory ↔ Lisa surface mapping, loop details, human exterior gates):
40
+ [reference/factory-model.md](../reference/factory-model.md).