@codyswann/lisa 2.210.3 → 2.211.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-agy/plugin.json +1 -1
- 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-cursor/.claude-plugin/plugin.json +1 -1
- 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/ui/index.html +107 -9
package/package.json
CHANGED
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
"ws": ">=8.20.1"
|
|
96
96
|
},
|
|
97
97
|
"name": "@codyswann/lisa",
|
|
98
|
-
"version": "2.
|
|
98
|
+
"version": "2.211.0",
|
|
99
99
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
100
100
|
"main": "dist/index.js",
|
|
101
101
|
"exports": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.211.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.211.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.211.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.211.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.211.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"
|
package/ui/index.html
CHANGED
|
@@ -761,6 +761,11 @@
|
|
|
761
761
|
padding: 10px 18px 8px;
|
|
762
762
|
border-bottom: 1px solid var(--line);
|
|
763
763
|
}
|
|
764
|
+
table.grid th.th-help {
|
|
765
|
+
cursor: help;
|
|
766
|
+
text-decoration: underline dotted;
|
|
767
|
+
text-underline-offset: 3px;
|
|
768
|
+
}
|
|
764
769
|
table.grid td {
|
|
765
770
|
padding: 9px 18px;
|
|
766
771
|
border-bottom: 1px solid var(--line);
|
|
@@ -1480,6 +1485,12 @@
|
|
|
1480
1485
|
};
|
|
1481
1486
|
|
|
1482
1487
|
/* ---------------------------------- Core workflow ---------------------------------- */
|
|
1488
|
+
// Shared header for the command tables: "Automation" is Lisa jargon, so
|
|
1489
|
+
// the column carries a hover tooltip defining it.
|
|
1490
|
+
const AUTOMATION_COL = {
|
|
1491
|
+
v: "Automation",
|
|
1492
|
+
tip: "The scheduled automation (created by /lisa:setup-automations) that already runs this command on a cadence. — means manual-only; “via intake” / “via implement” means it runs inside that command’s cycle. Invoke the command yourself to force a cycle now.",
|
|
1493
|
+
};
|
|
1483
1494
|
DATA.sections.workflow = {
|
|
1484
1495
|
title: "Core workflow",
|
|
1485
1496
|
desc: "The slash commands that run the delivery loop — what each one does, when to reach for it yourself, and which scheduled automation already runs it for you.",
|
|
@@ -1500,9 +1511,9 @@
|
|
|
1500
1511
|
},
|
|
1501
1512
|
{
|
|
1502
1513
|
type: "table",
|
|
1503
|
-
card: "
|
|
1514
|
+
card: "Delivery loop",
|
|
1504
1515
|
note: "Commands marked with an automation run on a schedule — invoke them manually to force a cycle",
|
|
1505
|
-
cols: ["Command", "What it does", "When to use it",
|
|
1516
|
+
cols: ["Command", "What it does", "When to use it", AUTOMATION_COL],
|
|
1506
1517
|
rows: [
|
|
1507
1518
|
[
|
|
1508
1519
|
{ t: "mono", v: "/lisa:intake" },
|
|
@@ -1570,6 +1581,13 @@
|
|
|
1570
1581
|
{ t: "text", v: "Close the loop on a shipped PRD" },
|
|
1571
1582
|
{ t: "mono", v: "via intake" },
|
|
1572
1583
|
],
|
|
1584
|
+
],
|
|
1585
|
+
},
|
|
1586
|
+
{
|
|
1587
|
+
type: "table",
|
|
1588
|
+
card: "Commit & ship",
|
|
1589
|
+
cols: ["Command", "What it does", "When to use it", AUTOMATION_COL],
|
|
1590
|
+
rows: [
|
|
1573
1591
|
[
|
|
1574
1592
|
{ t: "mono", v: "/lisa:git:commit" },
|
|
1575
1593
|
{
|
|
@@ -1588,6 +1606,14 @@
|
|
|
1588
1606
|
{ t: "text", v: "When a branch is ready to ship" },
|
|
1589
1607
|
{ t: "mono", v: "—" },
|
|
1590
1608
|
],
|
|
1609
|
+
],
|
|
1610
|
+
},
|
|
1611
|
+
{
|
|
1612
|
+
type: "table",
|
|
1613
|
+
card: "Feeder loops",
|
|
1614
|
+
note: "The three scheduled loops that keep the pipeline fed — exploratory bugs, ideated PRDs, and observability regressions",
|
|
1615
|
+
cols: ["Command", "What it does", "When to use it", AUTOMATION_COL],
|
|
1616
|
+
rows: [
|
|
1591
1617
|
[
|
|
1592
1618
|
{ t: "mono", v: "/lisa:exploratory-qa" },
|
|
1593
1619
|
{
|
|
@@ -1618,24 +1644,34 @@
|
|
|
1618
1644
|
{ t: "text", v: "On demand between scheduled runs" },
|
|
1619
1645
|
{ t: "mono", v: "monitor" },
|
|
1620
1646
|
],
|
|
1647
|
+
],
|
|
1648
|
+
},
|
|
1649
|
+
{
|
|
1650
|
+
type: "table",
|
|
1651
|
+
card: "Onboarding & upkeep",
|
|
1652
|
+
cols: ["Command", "What it does", "When to use it", AUTOMATION_COL],
|
|
1653
|
+
rows: [
|
|
1621
1654
|
[
|
|
1622
|
-
{ t: "mono", v: "/lisa:
|
|
1655
|
+
{ t: "mono", v: "/lisa:agent-ready" },
|
|
1623
1656
|
{
|
|
1624
1657
|
t: "text",
|
|
1625
|
-
v: "
|
|
1658
|
+
v: "Brownfield onboarding: builds the knowledge wiki from every reachable source and writes the human-answerable gaps file; absorbs answers on re-runs until zero gaps remain",
|
|
1659
|
+
},
|
|
1660
|
+
{
|
|
1661
|
+
t: "text",
|
|
1662
|
+
v: "Once per brownfield adoption — re-run in a fresh session after answering gaps, until it reports agent-ready",
|
|
1626
1663
|
},
|
|
1627
|
-
{ t: "text", v: "After an initiative ships" },
|
|
1628
1664
|
{ t: "mono", v: "—" },
|
|
1629
1665
|
],
|
|
1630
1666
|
[
|
|
1631
|
-
{ t: "mono", v: "/lisa:
|
|
1667
|
+
{ t: "mono", v: "/lisa:generate-claude-remote-build-script" },
|
|
1632
1668
|
{
|
|
1633
1669
|
t: "text",
|
|
1634
|
-
v: "
|
|
1670
|
+
v: "Prepares the repo to run in a remote agentic VM (Claude Code remote): inventories what the environment needs via /lisa:analyze-claude-remote, then writes the idempotent setup script, an env-var template (names only, never secrets), and the network allowlist to paste into the routine environment",
|
|
1635
1671
|
},
|
|
1636
1672
|
{
|
|
1637
1673
|
t: "text",
|
|
1638
|
-
v: "Once
|
|
1674
|
+
v: "Once when wiring the project into a cloud environment; re-run when tooling or required secrets change",
|
|
1639
1675
|
},
|
|
1640
1676
|
{ t: "mono", v: "—" },
|
|
1641
1677
|
],
|
|
@@ -1651,6 +1687,15 @@
|
|
|
1651
1687
|
},
|
|
1652
1688
|
{ t: "mono", v: "—" },
|
|
1653
1689
|
],
|
|
1690
|
+
[
|
|
1691
|
+
{ t: "mono", v: "/lisa:debrief" },
|
|
1692
|
+
{
|
|
1693
|
+
t: "text",
|
|
1694
|
+
v: "Mines a shipped initiative — tickets, PRs, review threads — for learnings to triage",
|
|
1695
|
+
},
|
|
1696
|
+
{ t: "text", v: "After an initiative ships" },
|
|
1697
|
+
{ t: "mono", v: "—" },
|
|
1698
|
+
],
|
|
1654
1699
|
],
|
|
1655
1700
|
},
|
|
1656
1701
|
{
|
|
@@ -3831,6 +3876,24 @@
|
|
|
3831
3876
|
},
|
|
3832
3877
|
],
|
|
3833
3878
|
},
|
|
3879
|
+
{
|
|
3880
|
+
card: "E2E route coverage floors",
|
|
3881
|
+
note: "e2e.thresholds.json — Expo projects; enforced statically by the E2E Route Coverage quality job on every PR",
|
|
3882
|
+
rows: [
|
|
3883
|
+
{
|
|
3884
|
+
key: "quality.e2eCoverage.playwright.routes",
|
|
3885
|
+
label: "Playwright routes",
|
|
3886
|
+
desc: "% of expo-router routes reached by at least one Playwright spec (page.goto or an e2e-route annotation). 0 disables that runner’s gate.",
|
|
3887
|
+
control: num(80, "%"),
|
|
3888
|
+
},
|
|
3889
|
+
{
|
|
3890
|
+
key: "quality.e2eCoverage.maestro.routes",
|
|
3891
|
+
label: "Maestro routes",
|
|
3892
|
+
desc: "% of expo-router routes reached by at least one Maestro flow (openLink or an e2e-route annotation). 0 disables that runner’s gate.",
|
|
3893
|
+
control: num(80, "%"),
|
|
3894
|
+
},
|
|
3895
|
+
],
|
|
3896
|
+
},
|
|
3834
3897
|
{
|
|
3835
3898
|
card: "Mutation testing",
|
|
3836
3899
|
note: "StrykerJS for JS/TS, mutant for Rails — both opt-in and diff-only",
|
|
@@ -4000,6 +4063,15 @@
|
|
|
4000
4063
|
desc: "ci.yml is seeded once and project-owned; it calls Lisa’s reusable quality workflow on every pull request.",
|
|
4001
4064
|
control: stat("ci.yml → quality.yml@main", "mono"),
|
|
4002
4065
|
},
|
|
4066
|
+
{
|
|
4067
|
+
key: "",
|
|
4068
|
+
label: "Native e2e workflow",
|
|
4069
|
+
desc: "Expo projects: the native iOS + Android Maestro suite on GitHub-hosted runners — nightly plus on-demand, too heavy to gate PRs. Skips with a warning until the dev-e2e EAS profile, EXPO_TOKEN, and flows exist.",
|
|
4070
|
+
control: stat(
|
|
4071
|
+
"maestro-e2e.yml → maestro-native-e2e.yml@main",
|
|
4072
|
+
"mono"
|
|
4073
|
+
),
|
|
4074
|
+
},
|
|
4003
4075
|
],
|
|
4004
4076
|
},
|
|
4005
4077
|
{
|
|
@@ -4123,6 +4195,14 @@
|
|
|
4123
4195
|
},
|
|
4124
4196
|
{ t: "status", v: true },
|
|
4125
4197
|
],
|
|
4198
|
+
[
|
|
4199
|
+
{ t: "mono", v: "🧭 E2E Route Coverage" },
|
|
4200
|
+
{
|
|
4201
|
+
t: "text",
|
|
4202
|
+
v: "Static gate: % of expo-router routes reached by Playwright specs and Maestro flows, against the floors in e2e.thresholds.json — auto-enabled on Expo projects, a no-op elsewhere",
|
|
4203
|
+
},
|
|
4204
|
+
{ t: "status", v: true },
|
|
4205
|
+
],
|
|
4126
4206
|
[
|
|
4127
4207
|
{ t: "mono", v: "🧬 Mutation Testing Gate" },
|
|
4128
4208
|
{
|
|
@@ -4589,6 +4669,14 @@
|
|
|
4589
4669
|
{ t: "text", v: "Maestro Cloud mobile E2E" },
|
|
4590
4670
|
{ t: "badge", v: "set", cls: "on" },
|
|
4591
4671
|
],
|
|
4672
|
+
[
|
|
4673
|
+
{ t: "mono", v: "MAESTRO_SECRET_ENV" },
|
|
4674
|
+
{
|
|
4675
|
+
t: "text",
|
|
4676
|
+
v: "Native Maestro e2e — newline-separated KEY=VALUE secrets forwarded to flows (test-account passwords)",
|
|
4677
|
+
},
|
|
4678
|
+
{ t: "badge", v: "missing", cls: "off" },
|
|
4679
|
+
],
|
|
4592
4680
|
],
|
|
4593
4681
|
},
|
|
4594
4682
|
],
|
|
@@ -5076,7 +5164,17 @@
|
|
|
5076
5164
|
const table = el("table", "grid");
|
|
5077
5165
|
const thead = el("thead");
|
|
5078
5166
|
const trh = el("tr");
|
|
5079
|
-
block.cols.forEach(c =>
|
|
5167
|
+
block.cols.forEach(c => {
|
|
5168
|
+
// Cols accept either a plain string or {v, tip} — tip renders as a
|
|
5169
|
+
// hover tooltip on the header for jargon that needs a definition.
|
|
5170
|
+
if (typeof c === "string") {
|
|
5171
|
+
trh.appendChild(el("th", "", esc(c)));
|
|
5172
|
+
return;
|
|
5173
|
+
}
|
|
5174
|
+
const th = el("th", c.tip ? "th-help" : "", esc(c.v));
|
|
5175
|
+
if (c.tip) th.title = c.tip;
|
|
5176
|
+
trh.appendChild(th);
|
|
5177
|
+
});
|
|
5080
5178
|
thead.appendChild(trh);
|
|
5081
5179
|
table.appendChild(thead);
|
|
5082
5180
|
const tbody = el("tbody");
|