@codyswann/lisa 2.123.2 → 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.
- package/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa/commands/analyze-claude-remote.md +6 -0
- package/plugins/lisa/commands/generate-claude-remote-build-script.md +6 -0
- package/plugins/lisa/skills/analyze-claude-remote/SKILL.md +161 -0
- package/plugins/lisa/skills/analyze-claude-remote/agents/openai.yaml +4 -0
- package/plugins/lisa/skills/generate-claude-remote-build-script/SKILL.md +125 -0
- package/plugins/lisa/skills/generate-claude-remote-build-script/agents/openai.yaml +4 -0
- package/plugins/lisa-agy/commands/analyze-claude-remote.md +6 -0
- package/plugins/lisa-agy/commands/generate-claude-remote-build-script.md +6 -0
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/analyze-claude-remote/SKILL.md +161 -0
- package/plugins/lisa-agy/skills/generate-claude-remote-build-script/SKILL.md +125 -0
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/commands/analyze-claude-remote.md +6 -0
- package/plugins/lisa-copilot/commands/generate-claude-remote-build-script.md +6 -0
- package/plugins/lisa-copilot/skills/analyze-claude-remote/SKILL.md +161 -0
- package/plugins/lisa-copilot/skills/generate-claude-remote-build-script/SKILL.md +125 -0
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/commands/analyze-claude-remote.md +6 -0
- package/plugins/lisa-cursor/commands/generate-claude-remote-build-script.md +6 -0
- package/plugins/lisa-cursor/skills/analyze-claude-remote/SKILL.md +161 -0
- package/plugins/lisa-cursor/skills/generate-claude-remote-build-script/SKILL.md +125 -0
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/plugin.json +1 -1
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-agy/plugin.json +1 -1
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-agy/plugin.json +1 -1
- package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-agy/plugin.json +1 -1
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/src/base/commands/analyze-claude-remote.md +6 -0
- package/plugins/src/base/commands/generate-claude-remote-build-script.md +6 -0
- package/plugins/src/base/skills/analyze-claude-remote/SKILL.md +161 -0
- 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.
|
|
@@ -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.
|
|
@@ -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
|