@codyswann/lisa 2.123.3 → 2.124.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 (68) 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/commands/analyze-claude-remote.md +6 -0
  5. package/plugins/lisa/commands/generate-claude-remote-build-script.md +6 -0
  6. package/plugins/lisa/skills/analyze-claude-remote/SKILL.md +161 -0
  7. package/plugins/lisa/skills/analyze-claude-remote/agents/openai.yaml +4 -0
  8. package/plugins/lisa/skills/generate-claude-remote-build-script/SKILL.md +125 -0
  9. package/plugins/lisa/skills/generate-claude-remote-build-script/agents/openai.yaml +4 -0
  10. package/plugins/lisa-agy/commands/analyze-claude-remote.md +6 -0
  11. package/plugins/lisa-agy/commands/generate-claude-remote-build-script.md +6 -0
  12. package/plugins/lisa-agy/plugin.json +1 -1
  13. package/plugins/lisa-agy/skills/analyze-claude-remote/SKILL.md +161 -0
  14. package/plugins/lisa-agy/skills/generate-claude-remote-build-script/SKILL.md +125 -0
  15. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  16. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  17. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  18. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  19. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  20. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  21. package/plugins/lisa-copilot/commands/analyze-claude-remote.md +6 -0
  22. package/plugins/lisa-copilot/commands/generate-claude-remote-build-script.md +6 -0
  23. package/plugins/lisa-copilot/skills/analyze-claude-remote/SKILL.md +161 -0
  24. package/plugins/lisa-copilot/skills/generate-claude-remote-build-script/SKILL.md +125 -0
  25. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  26. package/plugins/lisa-cursor/commands/analyze-claude-remote.md +6 -0
  27. package/plugins/lisa-cursor/commands/generate-claude-remote-build-script.md +6 -0
  28. package/plugins/lisa-cursor/skills/analyze-claude-remote/SKILL.md +161 -0
  29. package/plugins/lisa-cursor/skills/generate-claude-remote-build-script/SKILL.md +125 -0
  30. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  31. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  32. package/plugins/lisa-expo-agy/plugin.json +1 -1
  33. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  34. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  35. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  36. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  37. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  38. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  39. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  40. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  41. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  42. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  43. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  44. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  45. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  46. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  47. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  48. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  49. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  50. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  51. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  52. package/plugins/lisa-rails-agy/plugin.json +1 -1
  53. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  54. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  55. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  56. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  57. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  58. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  59. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  60. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  62. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  63. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  64. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  65. package/plugins/src/base/commands/analyze-claude-remote.md +6 -0
  66. package/plugins/src/base/commands/generate-claude-remote-build-script.md +6 -0
  67. package/plugins/src/base/skills/analyze-claude-remote/SKILL.md +161 -0
  68. package/plugins/src/base/skills/generate-claude-remote-build-script/SKILL.md +125 -0
@@ -0,0 +1,125 @@
1
+ ---
2
+ name: generate-claude-remote-build-script
3
+ description: "Generate the setup/build script (and env-var template) to paste into a Claude Code remote routine environment so this repo runs in the cloud. Runs /lisa:analyze-claude-remote to inventory needs, then writes an idempotent, detect-before-install bash script that installs the required CLIs/binaries and package manager for both Lisa and the host project, plus a commented environment-variable template (names only, never real secrets) and a list of custom domains to allowlist. The script is fast (fits the ~5-minute environment-cache budget), re-runnable, and cloud-proxy aware."
4
+ allowed-tools: ["Skill", "Bash", "Read", "Write", "Glob", "Grep"]
5
+ ---
6
+
7
+ # Generate Claude Remote Build Script: $ARGUMENTS
8
+
9
+ Produce the artifacts a user pastes into a **Claude Code remote routine environment** so this repo
10
+ runs in the cloud: a setup/build script that installs everything the environment needs, plus an
11
+ environment-variable template and a network-allowlist list.
12
+
13
+ ## Purpose
14
+
15
+ A routine's cloud environment lets you configure a **setup script** (runs once, cached) and
16
+ **environment variables**. This skill turns the read-only inventory from
17
+ `/lisa:analyze-claude-remote` into those concrete artifacts so the user doesn't hand-assemble them.
18
+
19
+ This skill ships in the base Lisa plugin and is distributed to every host project, so the generated
20
+ script must reflect **what this repo actually needs** — Lisa's startup hooks and configured
21
+ tracker/source, plus the host project's own package manager and tooling — not a hardcoded list.
22
+
23
+ ## Inputs
24
+
25
+ - Optional flags in `$ARGUMENTS`:
26
+ - `--out=<path>` — where to write the script. Default `scripts/claude-remote-setup.sh`.
27
+ - `--include-optional` — also install `OPTIONAL` (dormant-stack) tools. Default: required only.
28
+ - `--print` — print the script to stdout instead of writing a file.
29
+
30
+ ## Procedure
31
+
32
+ 1. **Inventory.** Invoke `/lisa:analyze-claude-remote --json` and parse its machine-readable
33
+ inventory block (`packageManager`, `tools`, `env`, `mcp`, `gaps`, `allowlistDomains`). If the
34
+ analysis cannot run, stop and report why — never emit a script from guesses.
35
+
36
+ 2. **Compose the setup script** from the inventory. The script must be:
37
+ - **Idempotent & detect-before-install** — every install guarded by a `command -v <tool>` check
38
+ so re-runs are no-ops and already-present tools are skipped.
39
+ - **Fast** — fits the ~5-minute environment-cache budget; avoid heavyweight installs unless
40
+ `REQUIRED`. Long/optional installs (docker images, chromium, ruby) go in a clearly-marked
41
+ optional section gated by `--include-optional`.
42
+ - **PATH-correct** — export the package manager's bin dir (e.g. `$HOME/.bun/bin`) after install
43
+ so subsequent steps and the cached environment resolve it.
44
+ - **Cloud-proxy aware** — when the package manager is flagged `RISK` (bun), add a comment
45
+ documenting the known proxy package-fetch issue and, where safe, run the install with retries
46
+ so a transient proxy failure doesn't poison the cache. Do not silently swap package managers if
47
+ `engines` forbids it; surface the risk as a comment instead.
48
+ - **Non-fatal on optional tools** — `REQUIRED` tool failures should exit non-zero (so the env
49
+ build fails loudly); `OPTIONAL` tool failures should warn and continue.
50
+
51
+ 3. **Emit the environment-variable template.** Write a commented block listing every `env` entry
52
+ from the inventory grouped by integration, marked `REQUIRED`/`OPTIONAL` and `secret`/`plain`,
53
+ with the reason. **Never write real secret values** — only names and placeholders, because the
54
+ environment config is visible to anyone who can edit it. Include feature flags actually set in
55
+ `.claude/settings.json` (e.g. `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS`) so cloud behavior matches
56
+ local.
57
+
58
+ 4. **Emit the allowlist + gaps notice.** List any custom domains the setup or runtime reaches
59
+ (from `allowlistDomains`) that the user must add to the environment's network access, and echo
60
+ the `gaps` from the analysis (auto-memory not synced, interactive-auth/stdio-MCP unavailable,
61
+ etc.) as a header comment so the user knows what the script **cannot** fix.
62
+
63
+ 5. **Write and report.** Write the script to `--out` (default `scripts/claude-remote-setup.sh`),
64
+ `chmod +x` it, and print: the path, a one-line summary of what it installs and which env vars to
65
+ set, and the exact next step (paste its contents — or a `bash scripts/claude-remote-setup.sh`
66
+ invocation — into the routine environment's setup script, and add the env vars in the
67
+ environment config). When `--print` is passed, print to stdout and do not write a file.
68
+
69
+ ## Generated script shape
70
+
71
+ The emitted script should follow this skeleton (populated from the live inventory — this is the
72
+ shape, not a fixed payload):
73
+
74
+ ```bash
75
+ #!/usr/bin/env bash
76
+ # Claude Code remote-routine setup for <repo>. Generated by /lisa:generate-claude-remote-build-script.
77
+ # Paste into your routine environment's setup script. Re-runnable and idempotent.
78
+ #
79
+ # GAPS this script cannot fix (configure separately):
80
+ # - <gaps from analysis, e.g. auto-memory is machine-local and not synced to cloud routines>
81
+ # ENV VARS to set in the environment config (names only — set real values there, not here):
82
+ # - CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 # REQUIRED, matches .claude/settings.json
83
+ # - GH_TOKEN=<token> # OPTIONAL, gh auth beyond the repo connection
84
+ # NETWORK: allowlist these domains in the environment if not on full access:
85
+ # - <allowlistDomains, if any>
86
+ set -uo pipefail
87
+
88
+ need() { command -v "$1" >/dev/null 2>&1; }
89
+ require() { need "$1" || { echo "FATAL: required tool '$1' missing and install failed" >&2; exit 1; }; }
90
+
91
+ # --- package manager (REQUIRED) ---
92
+ if ! need bun; then
93
+ curl -fsSL https://bun.sh/install | bash
94
+ fi
95
+ export PATH="$HOME/.bun/bin:$PATH"
96
+ # NOTE: bun has known proxy package-fetch issues in cloud sessions; retry to survive transient proxy errors.
97
+ for i in 1 2 3; do bun install && break || sleep 5; done
98
+
99
+ # --- required CLIs ---
100
+ need gh || (sudo apt-get update -y && sudo apt-get install -y gh)
101
+ need jq || sudo apt-get install -y jq
102
+ require gh; require jq
103
+
104
+ # --- optional, only with --include-optional ---
105
+ # (docker / ruby / chromium / etc., guarded)
106
+ ```
107
+
108
+ ## Confirmation policy
109
+
110
+ Writing the script file is the deliverable — do not ask whether to proceed. Default to writing
111
+ `scripts/claude-remote-setup.sh`, then report the path and next steps. The only legitimate reasons
112
+ to stop are: the analysis could not run, or the `--out` path is not writable.
113
+
114
+ ## Rules
115
+
116
+ - Always derive the script from a fresh `/lisa:analyze-claude-remote` run — never from a stale or
117
+ assumed inventory.
118
+ - Never write real secret values into the script or template — names and placeholders only.
119
+ - Never emit an install for a tool the analysis did not surface, and never install `OPTIONAL` tools
120
+ unless `--include-optional` is set.
121
+ - Keep the script idempotent and detect-before-install so it is safe to re-run and cache.
122
+ - Preserve the inventory's `REQUIRED` vs `OPTIONAL` distinction in both fail-behavior (fatal vs
123
+ warn) and section placement.
124
+ - Surface, never hide, the `gaps` — a generated script must not imply it makes a repo fully
125
+ cloud-ready when known constraints remain.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "2.123.3",
3
+ "version": "2.124.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.123.3",
3
+ "version": "2.124.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.123.3",
3
+ "version": "2.124.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.123.3",
3
+ "version": "2.124.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.123.3",
3
+ "version": "2.124.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.123.3",
3
+ "version": "2.124.0",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -0,0 +1,6 @@
1
+ ---
2
+ description: "Audit whether this repository can run as a Claude Code remote routine (cloud session) and inventory everything Lisa AND the host project must install or configure in the cloud environment — CLIs/binaries, environment variables/secrets, startup hooks, MCP scope/auth, and the user-scoped config and auto-memory gaps that don't replicate remotely. Read-only; emits grouped findings plus a machine-readable inventory."
3
+ argument-hint: "[--section=<name>] [--json]"
4
+ ---
5
+
6
+ Use the /lisa:analyze-claude-remote skill to audit this repository's readiness to run as a Claude Code remote routine and inventory what the cloud environment must install and configure. $ARGUMENTS
@@ -0,0 +1,6 @@
1
+ ---
2
+ description: "Generate the setup/build script and environment-variable template to paste into a Claude Code remote routine environment so this repo runs in the cloud. Runs /lisa:analyze-claude-remote, then writes an idempotent, detect-before-install bash script that installs the required package manager and CLIs for Lisa and the host project, plus a commented env-var template (names only) and a domain allowlist. Cloud-proxy aware and fits the environment-cache time budget."
3
+ argument-hint: "[--out=<path>] [--include-optional] [--print]"
4
+ ---
5
+
6
+ Use the /lisa:generate-claude-remote-build-script skill to generate the cloud-environment setup script and env-var template for running this repo as a Claude Code remote routine. $ARGUMENTS
@@ -0,0 +1,161 @@
1
+ ---
2
+ name: analyze-claude-remote
3
+ description: "Audit whether the current repository can run as a Claude Code remote routine (cloud session). Read-only analysis that inventories what Lisa AND the host project need to configure or build in the cloud environment — external CLIs/binaries to install, environment variables and secrets to set, startup hooks and their headless-safety, MCP server scope/transport/auth, user-scoped config and auto-memory gaps that don't replicate to the cloud, and platform constraints (bun proxy, IP allowlist, network tier, no interactivity). Emits grouped findings plus a machine-readable inventory that /lisa:generate-claude-remote-build-script consumes."
4
+ allowed-tools: ["Skill", "Bash", "Read", "Glob", "Grep"]
5
+ ---
6
+
7
+ # Analyze Claude Remote: $ARGUMENTS
8
+
9
+ Run a read-only audit of whether **this repository can run as a Claude Code remote routine**
10
+ (a cloud session that runs on Anthropic-managed infrastructure, not the user's machine), and
11
+ inventory everything that would have to be **installed** or **configured** in the cloud
12
+ environment for both Lisa and the host project to function.
13
+
14
+ ## Purpose
15
+
16
+ Claude Code routines run in a fresh cloud environment that clones the repo from its default
17
+ branch. Setup scripts (to install tools) and environment variables (to provide config/secrets)
18
+ are configurable per environment — but **only repo-committed Claude Code config reaches the
19
+ cloud**, user-scoped config and machine-local auto-memory do not, and some local affordances
20
+ (interactive auth, stdio MCP, desktop control, statusline) cannot work headless at all.
21
+
22
+ This skill produces the answer to: *"If I turn this repo into a routine, what do I need to put
23
+ in the environment's setup script and env vars, and what simply won't work?"* It is the
24
+ read-only analysis half; `/lisa:generate-claude-remote-build-script` turns its inventory into an
25
+ actual setup script.
26
+
27
+ This skill ships in the base Lisa plugin and is distributed to every host project, so it must
28
+ discover requirements **dynamically from the repo** rather than assuming Lisa-repo specifics. It
29
+ audits two layers together:
30
+
31
+ - **Lisa's needs** — startup hooks (`install-pkgs.sh`, `setup-jira-cli.sh`, rule injection),
32
+ the configured `tracker`/`source`, and the CLIs/MCP/env those imply.
33
+ - **The host project's needs** — its own package manager, build/test tooling, app runtime
34
+ dependencies, CI-assumed binaries, and project-scoped MCP servers.
35
+
36
+ ## Inputs
37
+
38
+ - Optional flags in `$ARGUMENTS` to narrow scope (e.g. `--section=tools`, `--json` to print only
39
+ the machine-readable inventory).
40
+ - The current repository root: `.claude/settings.json`, enabled plugins' `hooks/hooks.json`,
41
+ `.mcp.json`, `.lisa.config.json` / `.lisa.config.local.json`, `package.json` (or other
42
+ manifest), lockfiles, `scripts/`, `.github/workflows/`, and committed skills/commands/hooks.
43
+
44
+ ## Confirmation policy
45
+
46
+ Do **not** ask whether to proceed. Once invoked, run the read-only audit, print the grouped
47
+ findings and the inventory, and stop. Do not mutate any repository, environment, tracker, or
48
+ automation state. The only legitimate reason to stop early is that the working directory cannot
49
+ be resolved to an inspectable repository root.
50
+
51
+ ## Audit contract
52
+
53
+ Report grouped sections, each check tagged with one status:
54
+
55
+ - `REQUIRED` — must be installed/set or a routine run cannot do core work.
56
+ - `OPTIONAL` — needed only for a specific integration/stack that is dormant in this repo's config.
57
+ - `GAP` — works locally but **cannot** work in a cloud routine regardless of configuration;
58
+ the user must change approach (e.g. promote a fact to a repo rule, switch a substrate).
59
+ - `OK` — already cloud-safe; nothing to do.
60
+ - `RISK` — likely to work but with a known cloud caveat the user should verify (e.g. bun proxy).
61
+
62
+ Group the findings as:
63
+
64
+ 1. **Runtime & package manager** — resolve the package manager from `packageManager`, `engines`,
65
+ and the lockfile. Identify the install command a `SessionStart` hook or the project would run.
66
+ Flag `bun` as `RISK` (known cloud-proxy package-fetch issues) and note whether `engines`
67
+ forbids fallback package managers. Confirm node/runtime version expectations.
68
+
69
+ 2. **Startup hooks** — enumerate `SessionStart` and `SubagentStart` hooks from
70
+ `.claude/settings.json` and every enabled plugin's `hooks/hooks.json`. For each, state what it
71
+ runs, whether it is headless-safe, whether it needs network or write access to system paths,
72
+ and whether it fits the cloud setup-script time budget (~5 minutes for environment caching;
73
+ `SessionStart` hooks re-run every session and must be fast). Lisa's `install-pkgs.sh` and
74
+ `setup-jira-cli.sh` are the usual headline items.
75
+
76
+ 3. **External CLIs / binaries** — scan hooks, `scripts/`, committed skills/commands, and
77
+ `.github/workflows/` for invoked binaries that a base cloud image likely lacks. Assume node,
78
+ git, and coreutils are present; `gh` is available but should be installed explicitly if scripts
79
+ call it. Classify each `REQUIRED` (core path uses it) vs `OPTIONAL` (only a dormant stack/skill
80
+ uses it). Typical finds: `gh`, `jq`, `docker` (ZAP), `aws`, `acli`, `ruby`/`rubocop`,
81
+ `python3`, `playwright`/chromium, secret scanners.
82
+
83
+ 4. **Environment variables & secrets** — scan for `process.env.*`, `${VAR}`/`$VAR` in shell,
84
+ `secrets.*`/`env:` in CI, and config-referenced tokens. Group by integration (GitHub, AWS,
85
+ Atlassian/JIRA/Confluence, Notion, Linear, Anthropic, notifications, feature flags, other).
86
+ Cross-reference `.lisa.config.json` `tracker`/`source` to mark which credentials are **active**
87
+ for this repo vs **dormant** (`OPTIONAL`). Always surface Claude Code feature flags actually set
88
+ in `.claude/settings.json` (e.g. `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS`) as `REQUIRED` to match
89
+ local behavior, since the environment `env` block is the reliable place to set them.
90
+
91
+ 5. **MCP servers** — read every committed `.mcp.json`. For each server report transport and auth.
92
+ Project-scoped HTTP/SSE servers are `OK`. Flag stdio servers as `RISK`/`GAP` (need a local
93
+ process — only viable if the cloud session can spawn them from the repo). Flag
94
+ interactively/OAuth-authed servers (e.g. Linear) as `GAP` for first-time auth — they cannot
95
+ complete a browser flow headless. Note any user-scoped MCP (`~/.claude.json`) as `GAP` — it
96
+ never reaches the cloud; it must be moved into project `.mcp.json`.
97
+
98
+ 6. **Config scope & memory gaps** — identify reliance on user-scoped config that will not load
99
+ remotely: `~/.claude/CLAUDE.md`, user `enabledPlugins`, user skills/agents, user MCP. Most
100
+ importantly, flag **auto-memory** as a `GAP`: the persistent file-based memory directory is
101
+ machine-local and is not synced to cloud routines, so any learnings stored there are absent in
102
+ a remote run. Recommend promoting load-bearing memories into committed `.claude/rules/`.
103
+
104
+ 7. **Platform constraints** — surface the non-config constraints as `GAP`/`RISK` so the user is
105
+ not surprised: routines run with no interactive permission prompts and cannot ask the user
106
+ mid-run; interactive auth (SSO/OAuth browser, keychain) is unavailable; GitHub org IP
107
+ allowlisting blocks cloud sessions; outbound traffic is proxied and custom domains need
108
+ allowlisting; resource limits (~4 vCPU / 16 GB RAM / 30 GB disk); no desktop/computer-use; no
109
+ statusline/theme rendering.
110
+
111
+ 8. **Host-project app needs** — note any build/test/run command a routine would invoke and any
112
+ runtime service it depends on (database, queue, external API) that will not exist in a fresh
113
+ cloud environment, so the user can decide whether the routine's task is even feasible there.
114
+
115
+ ## Output
116
+
117
+ Render the report grouped exactly as above. Start with one `Summary:` line, then a `Counts:` line
118
+ covering `REQUIRED`, `OPTIONAL`, `GAP`, `RISK`, `OK`. Print each group as `<n>. <title>` and one
119
+ line per check as `- <STATUS> <id>: <summary>`, with optional `Observed:` and `Action:` lines
120
+ beneath that separate fact from advice. Render an empty group as a single `OK`/`SKIP` line with the
121
+ reason rather than omitting it.
122
+
123
+ End with a fenced, machine-readable inventory block (also printed when `--json` is passed) so
124
+ `/lisa:generate-claude-remote-build-script` can consume it without re-deriving everything:
125
+
126
+ ```json
127
+ {
128
+ "packageManager": { "name": "bun", "installCmd": "bun install", "risk": "cloud-proxy" },
129
+ "tools": [
130
+ { "name": "gh", "required": true, "reason": "github-* skills and scripts shell out to gh" },
131
+ { "name": "jq", "required": true, "reason": "hooks and scripts parse JSON" }
132
+ ],
133
+ "env": [
134
+ { "name": "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS", "required": true, "secret": false, "reason": "set in .claude/settings.json" },
135
+ { "name": "GH_TOKEN", "required": false, "secret": true, "reason": "gh CLI auth beyond the routine's repo connection" }
136
+ ],
137
+ "mcp": [ { "name": "linear-server", "transport": "http", "authGap": true } ],
138
+ "gaps": [ "auto-memory not synced to cloud", "bun package fetch behind proxy" ],
139
+ "allowlistDomains": []
140
+ }
141
+ ```
142
+
143
+ ## Delegation and reuse
144
+
145
+ - Reuse `config-resolution` semantics (local overrides global) when reading `.lisa.config.json` /
146
+ `.lisa.config.local.json` to decide which integrations are active vs dormant.
147
+ - Complementary to `/lisa:doctor`: doctor answers "is this repo ready to use Lisa locally?";
148
+ this skill answers "can this repo run as a remote routine, and what must the cloud env provide?"
149
+ Do not duplicate doctor's local-readiness checks — focus on the local-vs-cloud delta.
150
+ - The companion generator `/lisa:generate-claude-remote-build-script` consumes this skill's
151
+ inventory block; keep the block shape stable.
152
+
153
+ ## Rules
154
+
155
+ - Never mutate repository, environment, tracker, or automation state. This skill is read-only.
156
+ - Classify by **evidence in the repo**, not assumption — cite the file that proves each finding.
157
+ - Distinguish active from dormant strictly by the resolved `.lisa.config.json` config; do not mark
158
+ a dormant tracker's credentials `REQUIRED`.
159
+ - Never report a `GAP` as satisfiable by configuration — a gap is a constraint, and the action must
160
+ be a change of approach, not "set an env var".
161
+ - Never invent tools or env vars that no committed file references.
@@ -0,0 +1,125 @@
1
+ ---
2
+ name: generate-claude-remote-build-script
3
+ description: "Generate the setup/build script (and env-var template) to paste into a Claude Code remote routine environment so this repo runs in the cloud. Runs /lisa:analyze-claude-remote to inventory needs, then writes an idempotent, detect-before-install bash script that installs the required CLIs/binaries and package manager for both Lisa and the host project, plus a commented environment-variable template (names only, never real secrets) and a list of custom domains to allowlist. The script is fast (fits the ~5-minute environment-cache budget), re-runnable, and cloud-proxy aware."
4
+ allowed-tools: ["Skill", "Bash", "Read", "Write", "Glob", "Grep"]
5
+ ---
6
+
7
+ # Generate Claude Remote Build Script: $ARGUMENTS
8
+
9
+ Produce the artifacts a user pastes into a **Claude Code remote routine environment** so this repo
10
+ runs in the cloud: a setup/build script that installs everything the environment needs, plus an
11
+ environment-variable template and a network-allowlist list.
12
+
13
+ ## Purpose
14
+
15
+ A routine's cloud environment lets you configure a **setup script** (runs once, cached) and
16
+ **environment variables**. This skill turns the read-only inventory from
17
+ `/lisa:analyze-claude-remote` into those concrete artifacts so the user doesn't hand-assemble them.
18
+
19
+ This skill ships in the base Lisa plugin and is distributed to every host project, so the generated
20
+ script must reflect **what this repo actually needs** — Lisa's startup hooks and configured
21
+ tracker/source, plus the host project's own package manager and tooling — not a hardcoded list.
22
+
23
+ ## Inputs
24
+
25
+ - Optional flags in `$ARGUMENTS`:
26
+ - `--out=<path>` — where to write the script. Default `scripts/claude-remote-setup.sh`.
27
+ - `--include-optional` — also install `OPTIONAL` (dormant-stack) tools. Default: required only.
28
+ - `--print` — print the script to stdout instead of writing a file.
29
+
30
+ ## Procedure
31
+
32
+ 1. **Inventory.** Invoke `/lisa:analyze-claude-remote --json` and parse its machine-readable
33
+ inventory block (`packageManager`, `tools`, `env`, `mcp`, `gaps`, `allowlistDomains`). If the
34
+ analysis cannot run, stop and report why — never emit a script from guesses.
35
+
36
+ 2. **Compose the setup script** from the inventory. The script must be:
37
+ - **Idempotent & detect-before-install** — every install guarded by a `command -v <tool>` check
38
+ so re-runs are no-ops and already-present tools are skipped.
39
+ - **Fast** — fits the ~5-minute environment-cache budget; avoid heavyweight installs unless
40
+ `REQUIRED`. Long/optional installs (docker images, chromium, ruby) go in a clearly-marked
41
+ optional section gated by `--include-optional`.
42
+ - **PATH-correct** — export the package manager's bin dir (e.g. `$HOME/.bun/bin`) after install
43
+ so subsequent steps and the cached environment resolve it.
44
+ - **Cloud-proxy aware** — when the package manager is flagged `RISK` (bun), add a comment
45
+ documenting the known proxy package-fetch issue and, where safe, run the install with retries
46
+ so a transient proxy failure doesn't poison the cache. Do not silently swap package managers if
47
+ `engines` forbids it; surface the risk as a comment instead.
48
+ - **Non-fatal on optional tools** — `REQUIRED` tool failures should exit non-zero (so the env
49
+ build fails loudly); `OPTIONAL` tool failures should warn and continue.
50
+
51
+ 3. **Emit the environment-variable template.** Write a commented block listing every `env` entry
52
+ from the inventory grouped by integration, marked `REQUIRED`/`OPTIONAL` and `secret`/`plain`,
53
+ with the reason. **Never write real secret values** — only names and placeholders, because the
54
+ environment config is visible to anyone who can edit it. Include feature flags actually set in
55
+ `.claude/settings.json` (e.g. `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS`) so cloud behavior matches
56
+ local.
57
+
58
+ 4. **Emit the allowlist + gaps notice.** List any custom domains the setup or runtime reaches
59
+ (from `allowlistDomains`) that the user must add to the environment's network access, and echo
60
+ the `gaps` from the analysis (auto-memory not synced, interactive-auth/stdio-MCP unavailable,
61
+ etc.) as a header comment so the user knows what the script **cannot** fix.
62
+
63
+ 5. **Write and report.** Write the script to `--out` (default `scripts/claude-remote-setup.sh`),
64
+ `chmod +x` it, and print: the path, a one-line summary of what it installs and which env vars to
65
+ set, and the exact next step (paste its contents — or a `bash scripts/claude-remote-setup.sh`
66
+ invocation — into the routine environment's setup script, and add the env vars in the
67
+ environment config). When `--print` is passed, print to stdout and do not write a file.
68
+
69
+ ## Generated script shape
70
+
71
+ The emitted script should follow this skeleton (populated from the live inventory — this is the
72
+ shape, not a fixed payload):
73
+
74
+ ```bash
75
+ #!/usr/bin/env bash
76
+ # Claude Code remote-routine setup for <repo>. Generated by /lisa:generate-claude-remote-build-script.
77
+ # Paste into your routine environment's setup script. Re-runnable and idempotent.
78
+ #
79
+ # GAPS this script cannot fix (configure separately):
80
+ # - <gaps from analysis, e.g. auto-memory is machine-local and not synced to cloud routines>
81
+ # ENV VARS to set in the environment config (names only — set real values there, not here):
82
+ # - CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 # REQUIRED, matches .claude/settings.json
83
+ # - GH_TOKEN=<token> # OPTIONAL, gh auth beyond the repo connection
84
+ # NETWORK: allowlist these domains in the environment if not on full access:
85
+ # - <allowlistDomains, if any>
86
+ set -uo pipefail
87
+
88
+ need() { command -v "$1" >/dev/null 2>&1; }
89
+ require() { need "$1" || { echo "FATAL: required tool '$1' missing and install failed" >&2; exit 1; }; }
90
+
91
+ # --- package manager (REQUIRED) ---
92
+ if ! need bun; then
93
+ curl -fsSL https://bun.sh/install | bash
94
+ fi
95
+ export PATH="$HOME/.bun/bin:$PATH"
96
+ # NOTE: bun has known proxy package-fetch issues in cloud sessions; retry to survive transient proxy errors.
97
+ for i in 1 2 3; do bun install && break || sleep 5; done
98
+
99
+ # --- required CLIs ---
100
+ need gh || (sudo apt-get update -y && sudo apt-get install -y gh)
101
+ need jq || sudo apt-get install -y jq
102
+ require gh; require jq
103
+
104
+ # --- optional, only with --include-optional ---
105
+ # (docker / ruby / chromium / etc., guarded)
106
+ ```
107
+
108
+ ## Confirmation policy
109
+
110
+ Writing the script file is the deliverable — do not ask whether to proceed. Default to writing
111
+ `scripts/claude-remote-setup.sh`, then report the path and next steps. The only legitimate reasons
112
+ to stop are: the analysis could not run, or the `--out` path is not writable.
113
+
114
+ ## Rules
115
+
116
+ - Always derive the script from a fresh `/lisa:analyze-claude-remote` run — never from a stale or
117
+ assumed inventory.
118
+ - Never write real secret values into the script or template — names and placeholders only.
119
+ - Never emit an install for a tool the analysis did not surface, and never install `OPTIONAL` tools
120
+ unless `--include-optional` is set.
121
+ - Keep the script idempotent and detect-before-install so it is safe to re-run and cache.
122
+ - Preserve the inventory's `REQUIRED` vs `OPTIONAL` distinction in both fail-behavior (fatal vs
123
+ warn) and section placement.
124
+ - Surface, never hide, the `gaps` — a generated script must not imply it makes a repo fully
125
+ cloud-ready when known constraints remain.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.123.3",
3
+ "version": "2.124.0",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -0,0 +1,6 @@
1
+ ---
2
+ description: "Audit whether this repository can run as a Claude Code remote routine (cloud session) and inventory everything Lisa AND the host project must install or configure in the cloud environment — CLIs/binaries, environment variables/secrets, startup hooks, MCP scope/auth, and the user-scoped config and auto-memory gaps that don't replicate remotely. Read-only; emits grouped findings plus a machine-readable inventory."
3
+ argument-hint: "[--section=<name>] [--json]"
4
+ ---
5
+
6
+ Use the /lisa:analyze-claude-remote skill to audit this repository's readiness to run as a Claude Code remote routine and inventory what the cloud environment must install and configure. $ARGUMENTS
@@ -0,0 +1,6 @@
1
+ ---
2
+ description: "Generate the setup/build script and environment-variable template to paste into a Claude Code remote routine environment so this repo runs in the cloud. Runs /lisa:analyze-claude-remote, then writes an idempotent, detect-before-install bash script that installs the required package manager and CLIs for Lisa and the host project, plus a commented env-var template (names only) and a domain allowlist. Cloud-proxy aware and fits the environment-cache time budget."
3
+ argument-hint: "[--out=<path>] [--include-optional] [--print]"
4
+ ---
5
+
6
+ Use the /lisa:generate-claude-remote-build-script skill to generate the cloud-environment setup script and env-var template for running this repo as a Claude Code remote routine. $ARGUMENTS