@codyswann/lisa 2.211.0 → 2.211.1

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 +256 -40
package/package.json CHANGED
@@ -95,7 +95,7 @@
95
95
  "ws": ">=8.20.1"
96
96
  },
97
97
  "name": "@codyswann/lisa",
98
- "version": "2.211.0",
98
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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.211.0",
3
+ "version": "2.211.1",
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
@@ -1268,6 +1268,7 @@
1268
1268
  "tracker",
1269
1269
  "prd",
1270
1270
  "deploy",
1271
+ "pipelines",
1271
1272
  "automations",
1272
1273
  "monitor",
1273
1274
  ],
@@ -1276,7 +1277,7 @@
1276
1277
  label: "Quality",
1277
1278
  sections: ["linting", "testing", "hooks", "ci", "qa"],
1278
1279
  },
1279
- { label: "Distribution", sections: ["github", "plugins"] },
1280
+ { label: "Distribution", sections: ["repository", "plugins"] },
1280
1281
  { label: "Advanced", sections: ["advanced"] },
1281
1282
  ],
1282
1283
  sections: {},
@@ -3094,19 +3095,192 @@
3094
3095
  ],
3095
3096
  };
3096
3097
 
3097
- /* ---------------------------------- Automations ---------------------------------- */
3098
+ /* ---------------------------------- Pipelines ---------------------------------- */
3099
+ DATA.sections.pipelines = {
3100
+ title: "Pipelines",
3101
+ desc: "Every pipeline Lisa seeds into the repository, what triggers it, and which section owns its configuration. Lisa always seeds a thin project-owned caller that invokes a versioned reusable pipeline, so the project can customize the caller without losing upstream fixes.",
3102
+ src: "<stack>/create-only/.github/workflows/ · reusable pipelines on @main",
3103
+ blocks: [
3104
+ {
3105
+ card: "Host",
3106
+ note: "Where pipelines run. Pipeline files are generated per host from the same role definitions below.",
3107
+ rows: [
3108
+ {
3109
+ key: "",
3110
+ label: "Pipeline host",
3111
+ desc: "GitHub Actions is the only host implemented today. GitLab CI and Bitbucket Pipelines are the intended next targets — the role inventory below is host-neutral, only the emitted file format changes.",
3112
+ control: sel("GitHub Actions", [
3113
+ "GitHub Actions",
3114
+ "GitLab CI",
3115
+ "Bitbucket Pipelines",
3116
+ ]),
3117
+ },
3118
+ {
3119
+ key: "",
3120
+ label: "Delivery model",
3121
+ desc: "Callers are create-only: seeded once, then owned by the project and never overwritten. The reusable pipelines they call are versioned upstream, so fixes land without touching the caller.",
3122
+ control: stat("create-only caller → reusable @main", "mono"),
3123
+ },
3124
+ ],
3125
+ },
3126
+ {
3127
+ type: "table",
3128
+ card: "Pipeline inventory",
3129
+ note: "Renaming a caller is safe; renaming the jobs inside it is not — job names are the status checks branch protection requires (see Quality gates)",
3130
+ cols: ["Pipeline", "Role", "Trigger", "Configured in"],
3131
+ rows: [
3132
+ [
3133
+ { t: "mono", v: "ci.yml → quality.yml" },
3134
+ { t: "text", v: "Quality — runs the full gate job matrix" },
3135
+ { t: "mono", v: "pull_request" },
3136
+ { t: "text", v: "Quality gates" },
3137
+ ],
3138
+ [
3139
+ { t: "mono", v: "deploy.yml → release.yml" },
3140
+ {
3141
+ t: "text",
3142
+ v: "Release — versions, promotes and deploys per environment",
3143
+ },
3144
+ { t: "mono", v: "push" },
3145
+ { t: "text", v: "Deploy & environments" },
3146
+ ],
3147
+ [
3148
+ { t: "mono", v: "maestro-e2e.yml → maestro-native-e2e.yml" },
3149
+ {
3150
+ t: "text",
3151
+ v: "Quality (Expo) — native iOS + Android Maestro suite; too heavy to gate PRs, so it runs nightly and on demand. Skips with a warning until the dev-e2e EAS profile, EXPO_TOKEN and flows exist.",
3152
+ },
3153
+ { t: "mono", v: "schedule (09:00 daily) · workflow_dispatch" },
3154
+ { t: "text", v: "Testing & coverage" },
3155
+ ],
3156
+ [
3157
+ { t: "mono", v: "claude-nightly-test-coverage.yml" },
3158
+ { t: "text", v: "Agent — raises test coverage overnight" },
3159
+ { t: "mono", v: "schedule (03:00 Mon–Fri)" },
3160
+ { t: "text", v: "Agent automations" },
3161
+ ],
3162
+ [
3163
+ { t: "mono", v: "claude-nightly-test-improvement.yml" },
3164
+ {
3165
+ t: "text",
3166
+ v: "Agent — strengthens weak assertions overnight",
3167
+ },
3168
+ { t: "mono", v: "schedule (04:00 Mon–Fri)" },
3169
+ { t: "text", v: "Agent automations" },
3170
+ ],
3171
+ [
3172
+ { t: "mono", v: "claude-nightly-code-complexity.yml" },
3173
+ {
3174
+ t: "text",
3175
+ v: "Agent — reduces complexity hotspots overnight",
3176
+ },
3177
+ { t: "mono", v: "schedule (05:00 Mon–Fri)" },
3178
+ { t: "text", v: "Agent automations" },
3179
+ ],
3180
+ [
3181
+ { t: "mono", v: "claude-ci-auto-fix.yml" },
3182
+ {
3183
+ t: "text",
3184
+ v: "Agent — investigates a failed quality run and pushes a fix",
3185
+ },
3186
+ { t: "mono", v: "workflow_run (on failure)" },
3187
+ { t: "text", v: "—" },
3188
+ ],
3189
+ [
3190
+ { t: "mono", v: "claude-deploy-auto-fix.yml" },
3191
+ {
3192
+ t: "text",
3193
+ v: "Agent — investigates a failed deploy and opens a fix PR",
3194
+ },
3195
+ { t: "mono", v: "workflow_run (on failure)" },
3196
+ { t: "text", v: "Deploy & environments" },
3197
+ ],
3198
+ [
3199
+ { t: "mono", v: "claude-code-review-response.yml" },
3200
+ {
3201
+ t: "text",
3202
+ v: "Agent — answers review feedback and pushes the accepted changes",
3203
+ },
3204
+ { t: "mono", v: "pull_request_review" },
3205
+ { t: "text", v: "—" },
3206
+ ],
3207
+ [
3208
+ { t: "mono", v: "claude.yml" },
3209
+ {
3210
+ t: "text",
3211
+ v: "Agent — responds when a human @-mentions the agent on an issue or PR",
3212
+ },
3213
+ { t: "mono", v: "issue_comment · review_comment" },
3214
+ { t: "text", v: "—" },
3215
+ ],
3216
+ [
3217
+ { t: "mono", v: "claude-sync-down-branches.yml" },
3218
+ {
3219
+ t: "text",
3220
+ v: "Upkeep — propagates a merge back down the environment chain",
3221
+ },
3222
+ { t: "mono", v: "pull_request" },
3223
+ { t: "text", v: "Deploy & environments" },
3224
+ ],
3225
+ [
3226
+ { t: "mono", v: "auto-update-pr-branches.yml" },
3227
+ {
3228
+ t: "text",
3229
+ v: "Upkeep — keeps open PRs rebased on their base",
3230
+ },
3231
+ { t: "mono", v: "push · pull_request" },
3232
+ { t: "text", v: "—" },
3233
+ ],
3234
+ [
3235
+ { t: "mono", v: "auto-update-pr-branches-dispatch.yml" },
3236
+ {
3237
+ t: "text",
3238
+ v: "Upkeep — on-demand handler for the same rebase, via repository dispatch",
3239
+ },
3240
+ { t: "mono", v: "repository_dispatch" },
3241
+ { t: "text", v: "—" },
3242
+ ],
3243
+ [
3244
+ { t: "mono", v: "zap-baseline.yml" },
3245
+ {
3246
+ t: "text",
3247
+ v: "Security — DAST baseline scan against a running app",
3248
+ },
3249
+ { t: "mono", v: "pull_request" },
3250
+ { t: "text", v: "Repository & protection" },
3251
+ ],
3252
+ [
3253
+ { t: "mono", v: "publish-to-npm.yml" },
3254
+ {
3255
+ t: "text",
3256
+ v: "Publish — OIDC trusted publish; called by the release pipeline, never directly",
3257
+ },
3258
+ { t: "mono", v: "workflow_call" },
3259
+ { t: "text", v: "Project types (npm-package)" },
3260
+ ],
3261
+ ],
3262
+ },
3263
+ {
3264
+ type: "callout",
3265
+ text: "Not every stack gets every pipeline. The quality and release callers are seeded for all stacks; the agent and upkeep pipelines come from the TypeScript stack and are inherited by everything built on it; <b>zap-baseline.yml</b> is Harper Fabric and <b>publish-to-npm.yml</b> is npm-package. Rails swaps the quality caller for <b>quality-rails.yml</b>.",
3266
+ },
3267
+ ],
3268
+ };
3269
+
3270
+ /* ---------------------------------- Agent automations ---------------------------------- */
3098
3271
  DATA.sections.automations = {
3099
- title: "Automations",
3100
- desc: "The scheduled fleet that runs the factories: pipeline movers (intake, repair) and the three feeding loops (QA, Product Planning, Monitoring), on the harness\u2019s native scheduler. Names carry a stable lisa-auto-<project>- prefix so teardown is precise.",
3101
- src: "plugins/src/base/skills/lisa-setup-automations",
3272
+ title: "Agent automations",
3273
+ desc: "All agent work that runs on a schedule, whichever machine fires it: the fleet that runs the factories \u2014 pipeline movers (intake, repair) and the three feeding loops (QA, Product Planning, Monitoring) \u2014 on the harness\u2019s native scheduler, plus the nightly improvement agents that run on the pipeline host. Harness names carry a stable lisa-auto-<project>- prefix so teardown is precise.",
3274
+ src: "plugins/src/base/skills/lisa-setup-automations \u00b7 claude-nightly-*.yml",
3102
3275
  blocks: [
3103
3276
  {
3104
3277
  type: "table",
3105
3278
  card: "Scheduled jobs",
3106
- note: "Status and next run are mocked \u2014 live wiring is LCW-1 (#1544)",
3279
+ note: "Status and next run are mocked \u2014 live wiring is LCW-1 (#1544). Runs on = which scheduler fires the job; the nightly agents are pipeline files, inventoried under Pipelines.",
3107
3280
  cols: [
3108
3281
  "Automation",
3109
3282
  "What it does",
3283
+ "Runs on",
3110
3284
  "Cadence",
3111
3285
  "Last run",
3112
3286
  "Next run",
@@ -3119,6 +3293,7 @@
3119
3293
  t: "text",
3120
3294
  v: "Claims the next build-ready ticket and runs the full build flow on it \u2014 one item per cycle",
3121
3295
  },
3296
+ { t: "badge", v: "harness", cls: "default" },
3122
3297
  {
3123
3298
  t: "select",
3124
3299
  v: "every 10 min",
@@ -3139,6 +3314,7 @@
3139
3314
  t: "text",
3140
3315
  v: "Validates the next ready PRD at the gate and either creates its work units or blocks it with clarifying questions",
3141
3316
  },
3317
+ { t: "badge", v: "harness", cls: "default" },
3142
3318
  {
3143
3319
  t: "select",
3144
3320
  v: "every 60 min",
@@ -3159,6 +3335,7 @@
3159
3335
  t: "text",
3160
3336
  v: "Finds stuck work \u2014 stalled builds, half-closed items, unreconciled rollups \u2014 and repairs each one",
3161
3337
  },
3338
+ { t: "badge", v: "harness", cls: "default" },
3162
3339
  {
3163
3340
  t: "select",
3164
3341
  v: "every 60 min",
@@ -3179,6 +3356,7 @@
3179
3356
  t: "text",
3180
3357
  v: "QA loop: explores the product like a first-time user (respecting the mutation policy) and files bugs build-ready",
3181
3358
  },
3359
+ { t: "badge", v: "harness", cls: "default" },
3182
3360
  { t: "select", v: "daily", options: ["daily", "weekly"] },
3183
3361
  {
3184
3362
  t: "run",
@@ -3195,6 +3373,7 @@
3195
3373
  t: "text",
3196
3374
  v: "Product Planning loop: ideates improvements and writes PRDs prd-ready",
3197
3375
  },
3376
+ { t: "badge", v: "harness", cls: "default" },
3198
3377
  { t: "select", v: "daily", options: ["daily", "weekly"] },
3199
3378
  {
3200
3379
  t: "run",
@@ -3211,6 +3390,7 @@
3211
3390
  t: "text",
3212
3391
  v: "Monitoring loop: audits the connected observability providers against the alert thresholds and files regression tickets",
3213
3392
  },
3393
+ { t: "badge", v: "harness", cls: "default" },
3214
3394
  { t: "select", v: "daily", options: ["daily", "weekly"] },
3215
3395
  {
3216
3396
  t: "run",
@@ -3221,6 +3401,57 @@
3221
3401
  { t: "mono", v: "tomorrow 05:00" },
3222
3402
  { t: "toggle", v: true },
3223
3403
  ],
3404
+ [
3405
+ { t: "mono", v: "nightly-test-coverage" },
3406
+ {
3407
+ t: "text",
3408
+ v: "Raises test coverage toward the thresholds and opens a PR \u2014 one module per run",
3409
+ },
3410
+ { t: "badge", v: "pipeline host", cls: "default" },
3411
+ { t: "mono", v: "03:00 Mon\u2013Fri" },
3412
+ {
3413
+ t: "run",
3414
+ ok: true,
3415
+ v: "03:00",
3416
+ reason: "ok \u2014 PR opened",
3417
+ },
3418
+ { t: "mono", v: "tomorrow 03:00" },
3419
+ { t: "toggle", v: true },
3420
+ ],
3421
+ [
3422
+ { t: "mono", v: "nightly-test-improvement" },
3423
+ {
3424
+ t: "text",
3425
+ v: "Strengthens weak assertions in existing tests and opens a PR",
3426
+ },
3427
+ { t: "badge", v: "pipeline host", cls: "default" },
3428
+ { t: "mono", v: "04:00 Mon\u2013Fri" },
3429
+ {
3430
+ t: "run",
3431
+ ok: true,
3432
+ v: "04:00",
3433
+ reason: "ok \u2014 PR opened",
3434
+ },
3435
+ { t: "mono", v: "tomorrow 04:00" },
3436
+ { t: "toggle", v: true },
3437
+ ],
3438
+ [
3439
+ { t: "mono", v: "nightly-code-complexity" },
3440
+ {
3441
+ t: "text",
3442
+ v: "Refactors a complexity hotspot without changing behavior and opens a PR",
3443
+ },
3444
+ { t: "badge", v: "pipeline host", cls: "default" },
3445
+ { t: "mono", v: "05:00 Mon\u2013Fri" },
3446
+ {
3447
+ t: "run",
3448
+ ok: true,
3449
+ v: "05:00",
3450
+ reason: "ok \u2014 no hotspot over budget",
3451
+ },
3452
+ { t: "mono", v: "tomorrow 05:00" },
3453
+ { t: "toggle", v: true },
3454
+ ],
3224
3455
  ],
3225
3456
  },
3226
3457
  {
@@ -4043,39 +4274,13 @@
4043
4274
 
4044
4275
  /* ---------------------------------- CI ---------------------------------- */
4045
4276
  DATA.sections.ci = {
4046
- title: "CI quality gates",
4047
- desc: "Every project’s ci.yml is a thin caller of Lisa’s reusable quality workflow. Each job below reports a status check on the PR; branch rulesets require the critical ones to pass before merge.",
4048
- src: ".github/workflows/quality.yml · <stack>/create-only/.github/workflows/ci.yml",
4277
+ title: "Quality gates",
4278
+ desc: "The merge contract: what must be true before a pull request can land. Each job below reports a status check, and branch protection requires the critical ones to pass. Which pipeline runs these jobs, and on what host, is configured under Pipelines.",
4279
+ src: "quality.yml (reusable) · called by the project’s quality pipeline",
4049
4280
  blocks: [
4050
4281
  {
4051
- card: "Pipeline",
4052
- note: "create-only ci.yml calling Lisa’s reusable quality workflow",
4053
- rows: [
4054
- {
4055
- key: "",
4056
- label: "CI provider",
4057
- desc: "Where quality checks run. GitHub Actions is the only supported runner today; the template model leaves room for more.",
4058
- control: sel("GitHub Actions", ["GitHub Actions"]),
4059
- },
4060
- {
4061
- key: "",
4062
- label: "Workflows",
4063
- desc: "ci.yml is seeded once and project-owned; it calls Lisa’s reusable quality workflow on every pull request.",
4064
- control: stat("ci.yml → quality.yml@main", "mono"),
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
- },
4075
- ],
4076
- },
4077
- {
4078
- card: "Workflow inputs",
4282
+ card: "Gate inputs",
4283
+ note: "Inputs the project’s quality pipeline passes to Lisa’s reusable quality workflow",
4079
4284
  rows: [
4080
4285
  {
4081
4286
  key: "node_version",
@@ -4425,11 +4630,22 @@
4425
4630
  };
4426
4631
 
4427
4632
  /* ---------------------------------- GitHub repo ---------------------------------- */
4428
- DATA.sections.github = {
4429
- title: "GitHub repository",
4430
- desc: "Repo-level governance provisioned by lisa-github-repo-setup: merge policy, rulesets with required checks, lifecycle labels, deploy key and expected secrets.",
4633
+ DATA.sections.repository = {
4634
+ title: "Repository & protection",
4635
+ desc: "Repo-level governance on the git host: merge policy, branch protection with required status checks, lifecycle labels, deploy key and expected secrets. The controls below are those of the configured host — GitHub is the only one implemented today, so they are GitHub’s rulesets and settings.",
4431
4636
  src: "scripts/lisa-github-repo-setup.sh · all/github-rulesets/",
4432
4637
  blocks: [
4638
+ {
4639
+ card: "Host",
4640
+ rows: [
4641
+ {
4642
+ key: "",
4643
+ label: "Git host",
4644
+ desc: "Which host this repository lives on. GitHub is the only host Lisa provisions today; GitLab and Bitbucket would map the same governance onto their own primitives (protected branches instead of rulesets). Note this is separate from the tracker — a project can host code on one and track work on another.",
4645
+ control: sel("GitHub", ["GitHub", "GitLab", "Bitbucket"]),
4646
+ },
4647
+ ],
4648
+ },
4433
4649
  {
4434
4650
  card: "Repository settings",
4435
4651
  note: "github.settings.* overrides the baseline per key",