@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.
- package/README.md +29 -10
- package/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-agent-ready/SKILL.md +123 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-agent-ready/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-automation-status/SKILL.md +1 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-validate-issue/SKILL.md +28 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-validate-ticket/SKILL.md +28 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-validate-issue/SKILL.md +27 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-automations/SKILL.md +12 -4
- package/plugins/lisa/.codex-plugin/skills/lisa-tear-down-automations/SKILL.md +2 -2
- package/plugins/lisa/commands/lisa/agent-ready.md +6 -0
- package/plugins/lisa/rules/eager/factory-model.md +40 -0
- package/plugins/lisa/rules/reference/factory-model.md +107 -0
- package/plugins/lisa/skills/lisa-agent-ready/SKILL.md +123 -0
- package/plugins/lisa/skills/lisa-agent-ready/agents/openai.yaml +4 -0
- package/plugins/lisa/skills/lisa-automation-status/SKILL.md +1 -0
- package/plugins/lisa/skills/lisa-github-validate-issue/SKILL.md +28 -1
- package/plugins/lisa/skills/lisa-jira-validate-ticket/SKILL.md +28 -1
- package/plugins/lisa/skills/lisa-linear-validate-issue/SKILL.md +27 -0
- package/plugins/lisa/skills/lisa-setup-automations/SKILL.md +13 -5
- package/plugins/lisa/skills/lisa-tear-down-automations/SKILL.md +3 -3
- package/plugins/lisa-agy/commands/lisa/agent-ready.md +6 -0
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/lisa-agent-ready/SKILL.md +123 -0
- package/plugins/lisa-agy/skills/lisa-automation-status/SKILL.md +1 -0
- package/plugins/lisa-agy/skills/lisa-github-validate-issue/SKILL.md +28 -1
- package/plugins/lisa-agy/skills/lisa-jira-validate-ticket/SKILL.md +28 -1
- package/plugins/lisa-agy/skills/lisa-linear-validate-issue/SKILL.md +27 -0
- package/plugins/lisa-agy/skills/lisa-setup-automations/SKILL.md +13 -5
- package/plugins/lisa-agy/skills/lisa-tear-down-automations/SKILL.md +3 -3
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/commands/lisa/agent-ready.md +6 -0
- package/plugins/lisa-copilot/rules/eager/factory-model.md +40 -0
- package/plugins/lisa-copilot/rules/reference/factory-model.md +107 -0
- package/plugins/lisa-copilot/skills/lisa-agent-ready/SKILL.md +123 -0
- package/plugins/lisa-copilot/skills/lisa-automation-status/SKILL.md +1 -0
- package/plugins/lisa-copilot/skills/lisa-github-validate-issue/SKILL.md +28 -1
- package/plugins/lisa-copilot/skills/lisa-jira-validate-ticket/SKILL.md +28 -1
- package/plugins/lisa-copilot/skills/lisa-linear-validate-issue/SKILL.md +27 -0
- package/plugins/lisa-copilot/skills/lisa-setup-automations/SKILL.md +13 -5
- package/plugins/lisa-copilot/skills/lisa-tear-down-automations/SKILL.md +3 -3
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/commands/lisa/agent-ready.md +6 -0
- package/plugins/lisa-cursor/rules/factory-model-reference.mdc +112 -0
- package/plugins/lisa-cursor/rules/factory-model.mdc +45 -0
- package/plugins/lisa-cursor/skills/lisa-agent-ready/SKILL.md +123 -0
- package/plugins/lisa-cursor/skills/lisa-automation-status/SKILL.md +1 -0
- package/plugins/lisa-cursor/skills/lisa-github-validate-issue/SKILL.md +28 -1
- package/plugins/lisa-cursor/skills/lisa-jira-validate-ticket/SKILL.md +28 -1
- package/plugins/lisa-cursor/skills/lisa-linear-validate-issue/SKILL.md +27 -0
- package/plugins/lisa-cursor/skills/lisa-setup-automations/SKILL.md +13 -5
- package/plugins/lisa-cursor/skills/lisa-tear-down-automations/SKILL.md +3 -3
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/plugin.json +1 -1
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-agy/plugin.json +1 -1
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-agy/plugin.json +1 -1
- package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-agy/plugin.json +1 -1
- package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-agy/plugin.json +1 -1
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/src/base/commands/lisa/agent-ready.md +6 -0
- package/plugins/src/base/rules/eager/factory-model.md +40 -0
- package/plugins/src/base/rules/reference/factory-model.md +107 -0
- package/plugins/src/base/skills/lisa-agent-ready/SKILL.md +123 -0
- package/plugins/src/base/skills/lisa-automation-status/SKILL.md +1 -0
- package/plugins/src/base/skills/lisa-github-validate-issue/SKILL.md +28 -1
- package/plugins/src/base/skills/lisa-jira-validate-ticket/SKILL.md +28 -1
- package/plugins/src/base/skills/lisa-linear-validate-issue/SKILL.md +27 -0
- package/plugins/src/base/skills/lisa-setup-automations/SKILL.md +13 -5
- package/plugins/src/base/skills/lisa-tear-down-automations/SKILL.md +3 -3
- 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
|
|
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 **
|
|
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 **
|
|
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
|
-
|
|
42
|
-
|
|
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
|
|
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-openclaw",
|
|
3
|
-
"version": "2.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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"
|
|
@@ -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).
|