From 35661c1d63958816ae3585edb576381c0f13e0d7 Mon Sep 17 00:00:00 2001 From: "Harun R. Rayhan" Date: Wed, 4 Nov 2026 11:30:03 +0600 Subject: [PATCH 1/2] README: Grok app row; Update and Uninstall as their own sections --- README.md | 47 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 35 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index b6f2ab0..8f61079 100644 --- a/README.md +++ b/README.md @@ -213,6 +213,17 @@ Global folder `~/.grok/skills`, project folder `.claude/skills` (add `--project +
+ Grok (app) + +```text +Install RayStack for Grok: run `curl -fsSL https://raw.githubusercontent.com/HarunRRayhan/RayStack/main/get.sh | bash -s -- --agent grok`, then tell me what it printed. +``` + +Paste into the Grok app, where it can run commands on your machine. The skills go to `~/.grok/skills`, which Grok Build reads too. + +
+
Antigravity @@ -431,9 +442,15 @@ Claude Code; on any other agent, give reviews read-only credentials. Logos belon owners. Other options: `--dry-run` shows what would happen, `--link` symlinks to the checkout, and `--help` lists the rest. Per-agent details and sources: [docs/agents.md](docs/agents.md). -### Update +## Update -Type `/raystack update` in your agent, or run: +Type `/raystack update` in your agent, or paste: + +```text +Update RayStack: run `~/.raystack/install.sh --update`, then tell me the new version. +``` + +Or in a terminal: ```bash ~/.raystack/install.sh --update @@ -444,16 +461,6 @@ install made from it (they are listed in `~/.raystack-installs`). Running the on again does the same for the agents it finds. Plugin installs update through the agent (see above). Start a new agent session afterwards. -### Uninstall - -```bash -~/.raystack/install.sh --uninstall --agent all # every agent found -~/.raystack/install.sh --uninstall --project . # this project (Claude Code) -rm -rf ~/.raystack ~/.raystack-installs # then the checkout and its list -``` - -`--uninstall` removes exactly the thirty-one RayStack skills and nothing else. - ## Skills RayStack is thirty-one skills. You only need `/raystack` (or `/dev` to build and `/audit` to review); they call the rest. @@ -490,6 +497,22 @@ With `autoMerge` off (the default) the agent stops at green CI and asks before i `deployCheck` tells it how to confirm the deploy is live. A repo with no git remote is merged locally after you say yes. +## Uninstall + +```text +Uninstall RayStack: run `~/.raystack/install.sh --uninstall --agent all`, then delete ~/.raystack and ~/.raystack-installs and tell me what was removed. +``` + +Or in a terminal: + +```bash +~/.raystack/install.sh --uninstall --agent all # every agent found +~/.raystack/install.sh --uninstall --project . # this project (Claude Code) +rm -rf ~/.raystack ~/.raystack-installs # then the checkout and its list +``` + +`--uninstall` removes exactly the thirty-one RayStack skills and nothing else. + ## Credits RayStack borrows ideas from four skill packs: From 2c5199938eec67ed6a494932eeaf7f553f0d8155 Mon Sep 17 00:00:00 2001 From: "Harun R. Rayhan" Date: Wed, 4 Nov 2026 11:31:49 +0600 Subject: [PATCH 2/2] v1.1.1: OpenClaw (Clawdbot, Moltbot) in the installer and README --- .claude-plugin/marketplace.json | 2 +- .claude-plugin/plugin.json | 2 +- .cursor-plugin/plugin.json | 2 +- CHANGELOG.md | 7 +++++++ README.md | 11 +++++++++++ VERSION | 2 +- assets/agents/openclaw.png | Bin 0 -> 4474 bytes docs/agents.md | 4 ++-- install.sh | 8 ++++++-- plugin.json | 4 ++-- tests/test-install.sh | 2 ++ 11 files changed, 34 insertions(+), 10 deletions(-) create mode 100644 assets/agents/openclaw.png diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index aa41668..c62429f 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -9,7 +9,7 @@ { "name": "raystack", "source": "./", - "version": "1.1.0", + "version": "1.1.1", "description": "Skills by Harun R. Rayhan: a full development flow (new project intake, research, PRD, specs, plans, reviewed builds, ship; gap-fill, design review and migration for existing projects), read-only scans and reviews (security, performance, scalability, reliability and availability, architecture incl. MVC and CQRS, frontend, code health, CI/CD pipelines, AWS, infrastructure, databases), working principles and local browser verification.", "category": "devops" } diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 23c0912..398db8d 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "raystack", - "version": "1.1.0", + "version": "1.1.1", "description": "Skills by Harun R. Rayhan: a full development flow (new project intake, research, PRD, specs, plans, reviewed builds, ship; gap-fill, design review and migration for existing projects), read-only scans and reviews (security, performance, scalability, reliability and availability, architecture incl. MVC and CQRS, frontend, code health, CI/CD pipelines, AWS, infrastructure, databases), working principles and local browser verification.", "author": { "name": "Harun R. Rayhan", diff --git a/.cursor-plugin/plugin.json b/.cursor-plugin/plugin.json index d7ea8e8..6d46d0e 100644 --- a/.cursor-plugin/plugin.json +++ b/.cursor-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "raystack", "displayName": "RayStack", - "version": "1.1.0", + "version": "1.1.1", "description": "Skills by Harun R. Rayhan: a full development flow (new project intake, research, PRD, specs, plans, reviewed builds, ship; gap-fill, design review and migration for existing projects), read-only scans and reviews (security, performance, scalability, reliability and availability, architecture incl. MVC and CQRS, frontend, code health, CI/CD pipelines, AWS, infrastructure, databases), working principles and local browser verification.", "author": { "name": "Harun R. Rayhan" diff --git a/CHANGELOG.md b/CHANGELOG.md index e5cac62..a538075 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## 1.1.1 (2026-11-04) + +- The installer knows OpenClaw (`--agent openclaw`, `~/.openclaw/skills`) and its earlier + names Clawdbot and Moltbot (`--agent clawdbot`, `--agent moltbot`). +- README: rows for OpenClaw and the Grok app; Update and Uninstall are their own sections, + each with a prompt to copy. + ## 1.1.0 (2026-11-04) - New `audit` skill: the entry point for reviews and scans, as `dev` is for building. diff --git a/README.md b/README.md index 8f61079..0986675 100644 --- a/README.md +++ b/README.md @@ -433,6 +433,17 @@ Global folder `~/.continue/skills`, project folder `.continue/skills` (add `--pr
+
+ OpenClaw (Clawdbot) + +```text +Install RayStack globally for OpenClaw: run `curl -fsSL https://raw.githubusercontent.com/HarunRRayhan/RayStack/main/get.sh | bash -s -- --agent openclaw`, then tell me what it printed. +``` + +Global folder `~/.openclaw/skills`, project folder `skills` (add `--project .`). Still on the old name? Use `--agent clawdbot` (`~/.clawdbot/skills`) or `--agent moltbot` (`~/.moltbot/skills`). + +
+ Not listed? `~/.raystack/install.sh --agent custom --dir /path/to/its/skills`, or the [skills CLI](https://skills.sh): `npx skills add HarunRRayhan/RayStack -g -a `. diff --git a/VERSION b/VERSION index 9084fa2..524cb55 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.1.0 +1.1.1 diff --git a/assets/agents/openclaw.png b/assets/agents/openclaw.png new file mode 100644 index 0000000000000000000000000000000000000000..bb7b3c7d51472231327ccac09db8e949f65481ef GIT binary patch literal 4474 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 M07*qoM6N<$g4mF(QUCw| literal 0 HcmV?d00001 diff --git a/docs/agents.md b/docs/agents.md index a1246cc..eef70c5 100644 --- a/docs/agents.md +++ b/docs/agents.md @@ -193,8 +193,8 @@ read-only credentials, which the contract asks for anyway. ## Other agents `install.sh` also knows Antigravity, Gemini CLI, GitHub Copilot, Windsurf, Cline, Kiro, Roo -Code, Kilo Code, Amp, Goose, Qwen Code, Trae, Junie, Augment, Warp, Zed, OpenHands and -Continue. Their global and project skills folders, and the folder that shows an agent is +Code, Kilo Code, Amp, Goose, Qwen Code, Trae, Junie, Augment, Warp, Zed, OpenHands, +Continue and OpenClaw (formerly Clawdbot and Moltbot). Their global and project skills folders, and the folder that shows an agent is installed, come from the agent table of the [skills CLI](https://github.com/vercel-labs/skills) (`src/agents.ts`). RayStack has not tested them. None of them run the review guard, so pair reviews with read-only credentials. If an agent reads a different folder on your machine, use diff --git a/install.sh b/install.sh index 90221d2..5568466 100755 --- a/install.sh +++ b/install.sh @@ -20,7 +20,8 @@ Usage: install.sh [--agent all||custom] [--dir ] [--project [ Copies the thirty-one RayStack skills into an agent's skills directory (default agent: claude). Agents: claude codex cursor grok antigravity gemini copilot windsurf cline kiro roo kilo amp -goose opencode qwen trae junie augment warp zed openhands continue. +goose opencode qwen trae junie augment warp zed openhands continue openclaw +clawdbot moltbot. --agent all every agent found in your home folder; asks per agent at a terminal --yes with --agent all, install for every agent found without asking --dir skills directory; required with --agent custom, overrides the agent default @@ -113,7 +114,10 @@ augment|Augment|.augment|.augment/skills|.augment/skills warp|Warp|.warp|.agents/skills|.agents/skills zed|Zed|.config/zed|.agents/skills|.agents/skills openhands|OpenHands|.openhands|.openhands/skills|.openhands/skills -continue|Continue|.continue|.continue/skills|.continue/skills' +continue|Continue|.continue|.continue/skills|.continue/skills +openclaw|OpenClaw (Clawdbot)|.openclaw|.openclaw/skills|skills +clawdbot|Clawdbot|.clawdbot|.clawdbot/skills|skills +moltbot|Moltbot|.moltbot|.moltbot/skills|skills' # agent_field agent_field() { printf '%s\n' "$AGENTS" | awk -F'|' -v n="$1" -v c="$2" '$1 == n { print $c }'; } diff --git a/plugin.json b/plugin.json index 0c80ca7..7680cd3 100644 --- a/plugin.json +++ b/plugin.json @@ -1,7 +1,7 @@ { - "$schema": "https://agent-plugins.org/schemas/1.1.0/plugin.schema.json", + "$schema": "https://agent-plugins.org/schemas/1.1.1/plugin.schema.json", "name": "raystack", - "version": "1.1.0", + "version": "1.1.1", "description": "Skills by Harun R. Rayhan: a full development flow (new project intake, research, PRD, specs, plans, reviewed builds, ship; gap-fill, design review and migration for existing projects), read-only scans and reviews (security, performance, scalability, reliability and availability, architecture incl. MVC and CQRS, frontend, code health, CI/CD pipelines, AWS, infrastructure, databases), working principles and local browser verification.", "author": { "name": "Harun R. Rayhan", diff --git a/tests/test-install.sh b/tests/test-install.sh index 9726eab..0117e44 100644 --- a/tests/test-install.sh +++ b/tests/test-install.sh @@ -92,6 +92,8 @@ case "$outs" in *"same folder: Cline"*) pass "all: shared folder named";; *) fai HOME="$T/x" bash ./install.sh --agent nosuch >/dev/null 2>&1 && fail "unknown agent accepted" || pass "unknown agent rejected" P="$T/projgem"; mkdir -p "$P"; HOME="$T/x" bash ./install.sh --agent gemini --project "$P" >/dev/null 2>&1 assert_eq "$(count "$P/.agents/skills")" 31 "gemini project folder" +HO="$T/homeclaw"; mkdir -p "$HO/.openclaw"; HOME="$HO" bash ./install.sh --agent all --yes >/dev/null 2>&1 +assert_eq "$(count "$HO/.openclaw/skills")" 31 "all: openclaw folder" bash -n get.sh && pass "get.sh parses" || fail "get.sh syntax" [ "$(tail -1 get.sh | cut -c1-10)" = 'main "$@" ' ] && pass "get.sh runs main last" || fail "get.sh must end with main" case "$out" in *"codex plugin"*) pass "prints plugin hint";; *) fail "no plugin hint";; esac