@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.
Files changed (52) 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-agy/plugin.json +1 -1
  5. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  6. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  7. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  8. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  9. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  10. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  11. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  12. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  13. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  14. package/plugins/lisa-expo-agy/plugin.json +1 -1
  15. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  16. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  17. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  18. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  19. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  20. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  21. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  22. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  23. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  24. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  25. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  26. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  27. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  28. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  29. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  30. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  31. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  32. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  33. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  34. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  35. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  36. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  37. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  38. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  39. package/plugins/lisa-rails-agy/plugin.json +1 -1
  40. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  41. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  42. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  43. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  44. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  45. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  46. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  47. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  48. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  49. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  50. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  51. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  52. 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.210.3",
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",
3
- "version": "2.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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-cdk",
3
- "version": "2.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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-expo",
3
- "version": "2.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
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.210.3",
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.210.3",
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.210.3",
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.210.3",
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-phaser",
3
- "version": "2.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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.210.3",
3
+ "version": "2.211.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"
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: "Core commands",
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", "Automation"],
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:debrief" },
1655
+ { t: "mono", v: "/lisa:agent-ready" },
1623
1656
  {
1624
1657
  t: "text",
1625
- v: "Mines a shipped initiative tickets, PRs, review threads for learnings to triage",
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:agent-ready" },
1667
+ { t: "mono", v: "/lisa:generate-claude-remote-build-script" },
1632
1668
  {
1633
1669
  t: "text",
1634
- 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",
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 per brownfield adoption re-run in a fresh session after answering gaps, until it reports agent-ready",
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 => trh.appendChild(el("th", "", esc(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");