Deploy or run the ScienceDiscovery stack, either as host processes (scripts/start-stack.sh) or with Docker Compose.

Apache-2.0Auto-check: notesDevOps & Cloud

Install Deploy

skills CLI
$ npx skills add openJiuwen-ai/sciencediscovery --skill deploy -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install openJiuwen-ai/sciencediscovery deploy --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/openJiuwen-ai/sciencediscovery.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/deploy .claude/skills/deploy && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
deploy
GitHub stars
156
Token cost
~5k tokens
SKILL.md length
2,289 words
Files
1
Skills in repo
22
Repo updated
First seen
Licence
Apache-2.0

At a glance

Deploy or run the ScienceDiscovery stack, either as host processes (scripts/start-stack.sh) or with Docker Compose.

  • Works in 4 steps: Ask the form → Detect (read-only) → Report gaps, do not close them yourself → …
  • The user asks to deploy
  • SKILL.md covers Rules, Step 1 — Ask the form, Step 2 — Detect (read-only) and Step 3 — Report gaps, do not…, plus 8 more sections
  • Calls docker, pnpm and curl; needs SCIENCE_AGENT_AUTH_TOKEN

What it does

Deploy is an agent skill from openJiuwen-ai/sciencediscovery. Deploy or run the ScienceDiscovery stack, either as host processes (scripts/start-stack.sh) or with Docker Compose. Use when the user asks to deploy, start, run, or containerize ScienceDiscovery, or asks for the UI URL, SSH port forwarding, or start/stop/restart/log commands.

Its SKILL.md is about 5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in DevOps & Cloud, covering Containers and Deployment. It works with Docker. The repository describes itself as: ScienceDiscovery is an all‑in‑one agentic workbench built specifically for scientific research. The licence is Apache-2.0.

When your agent uses it

  • The user asks to deploy
  • Containerize ScienceDiscovery
  • Asks for the UI URL
  • SSH port forwarding

Example prompts

  • “/deploy”

Requirements

  • Python 3
  • Docker
  • A credential in SCIENCE_AGENT_AUTH_TOKEN

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Ask the form
  2. Detect (read-only)
  3. Report gaps, do not close them yourself
  4. Report the URL

What it can do on your machine

Read from SKILL.md and the folder at commit 9189206. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • docker
    • pnpm
    • curl
    • ssh
    • node
    • python3
    • uv
    • npm
    • sh

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use docker, pnpm, curl, ssh, uv and npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • SCIENCE_AGENT_AUTH_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Deploy loads about 5k tokens when it runs. Until then it costs about 71 tokens; SKILL.md has 2,289 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~71
When it runs · the whole SKILL.md, loaded when a task matches
~5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:36
    6. Repository-local writes are fine (`.env`, `.sciencediscovery-data/`),
  • NoteRuns commands with sudoSKILL.md:121
    suggest user-level installs that need no sudo and touch
  • NoteRuns commands with sudoSKILL.md:130
    ask for `sudo sysctl -w ...=0`. That restriction is configured per AppArmor
  • NoteRuns commands with sudoSKILL.md:139
    confirmed cause, quote `sudo sysctl -w
  • NoteMentions a .env fileSKILL.md:145
    `SCIENCE_AGENT_RUNNER_URL` in `.env` — it does not follow `*_PORT`
  • NoteMentions a .env fileSKILL.md:148
    `SCIENCE_AGENT_PYPI_INDEX` in `.env` (e.g. the Huawei Cloud mirrors; see the
  • NoteMentions a .env fileSKILL.md:160
    cp .env.example .env                               # first time only; never overwrite an existing .env
  • NoteMentions a .env fileSKILL.md:181
    cp .env.docker.example .env      # or merge its keys into an existing .env
  • NoteMentions a .env fileSKILL.md:228
    from the user's `.env` or that file — do not print a token into a shared
  • NoteMentions a .env fileSKILL.md:336
    type. Compose forwards only the keys of `.env.docker.example` |

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from openJiuwen-ai/sciencediscovery at commit 9189206, republished under its Apache-2.0 licence (© openJiuwen-ai). 2,289 words, ~4,984 tokens.

Download SKILL.mdSave it as .claude/skills/deploy/SKILL.md (or your agent's skills folder).
name
deploy
description
Deploy or run the ScienceDiscovery stack, either as host processes (scripts/start-stack.sh) or with Docker Compose. Use when the user asks to deploy, start, run, or containerize ScienceDiscovery, or asks for the UI URL, SSH port forwarding, or start/stop/restart/log commands.

Deploy ScienceDiscovery (local or Docker)

Project-local skill for ScienceDiscovery. Authoritative facts live in README.md → Quick start, in docs/zh/getting-started/deployment.md (Chinese) → local mode and Docker deployment, and in docs/zh/reference/configuration.md → variable tables. Read the matching section before improvising; never invent ports, tokens, flags, or paths.

You assist the user through a deployment. You do not silently reconfigure their machine.

Rules

  1. Ask the deployment form first (Docker Compose vs. host processes). Do not install, build, or start anything before the user answers.
  2. Detect before deploying. Environment checks are read-only commands only. Report what is missing; do not fix it on your own initiative.
  3. Never run sudo on the user's behalf unless they explicitly ask for that specific command in this conversation.
  4. Never install global software (apt/dnf/brew/npm -g, persistent sysctl, systemd units, editing files outside the repository). List the gap and the command you suggest the user run themselves. After written consent you may assist, still preferring project-local installs (uv/pnpm/corepack) over system-wide ones.
  5. Environment must pass before deploying. On any failed check, stop, report, and wait for the user's decision.
  6. Repository-local writes are fine (.env, .sciencediscovery-data/), but say what you are writing before you write it.
  7. After a successful start, always report the URL and the bearer token source, then the management commands for the mode actually used.

Step 1 — Ask the form

Docker Compose, or host processes?

Docker ComposeHost processes
Host needsDocker Engine 24+ and Compose v2 onlyNode 22.19+, pnpm, Python 3, uv, bubblewrap
Entry pointdocker compose up -d → scripts/start-stack.sh --mode docker./scripts/start-stack.sh --mode local
RunsDetached, restarts on failureForeground terminal (Ctrl-C stops it)
StateHost bind mount ./data (no named volume)./data (SCIENCE_AGENT_DATA_DIR)
Published on127.0.0.1:4310 by default0.0.0.0:4310 by default

Both need Linux x86_64 or aarch64 with unprivileged user namespaces — the bubblewrap sandbox is not optional and Docker Desktop on macOS/Windows is unsupported.

Step 2 — Detect (read-only)

Run from the repository root. Report each check as pass/fail with the value seen.

Common

bash
uname -s -m                              # expect: Linux x86_64 or aarch64
ss -ltn | grep -E ':(4310|4311)' || echo "ports free"

Sandbox availability is decided by running the product's probe, never by reading a sysctl. Use the probe below for host-process mode, and the in-container probe under Docker mode for Compose. A sysctl value is a diagnostic to reach for after a probe fails — see Step 3.

Host-process mode (mirrors README.md → Quick start → Requirements)

bash
node --version    # v22.19+
pnpm --version    # 11.1.2
python3 --version
uv --version      # 0.9+
bwrap --version   # 0.6+; 0.8+ recommended (adds --disable-userns where the environment allows it; otherwise the runner logs a startup warning and omits it)
curl --version | head -1

Sandbox preflight — the same probe scripts/start-stack.sh and packages/sandbox-capability run, harmless and read-only:

bash
bwrap --unshare-all --unshare-user --die-with-parent \
  --ro-bind /usr /usr --symlink usr/bin /bin --symlink usr/lib /lib \
  --symlink usr/lib64 /lib64 --proc /proc /usr/bin/true && echo "sandbox ok"

Docker mode

bash
docker version --format '{{.Server.Version}}'   # 24+
docker compose version                          # v2.x
docker info >/dev/null && echo "daemon reachable"
id -u; id -g                                    # → SCIENCE_AGENT_UID / _GID

The container's sandbox can only be probed once the image exists, and the entry point already probes it at startup: a failure is printed to docker compose logs. To confirm it positively after up -d:

bash
docker compose exec sciencediscovery sh -c '
  bwrap --unshare-all --unshare-user --die-with-parent \
    --ro-bind /usr /usr --symlink usr/bin /bin --symlink usr/lib /lib \
    --symlink usr/lib64 /lib64 --proc /proc /usr/bin/true' && echo "sandbox ok"

Keep the outer sh -c. With bwrap as the exec session's first process the loopback setup fails for reasons unrelated to sandbox capability, which reads as a false negative.

Step 3 — Report gaps, do not close them yourself

Present a short table: check / expected / actual / suggested fix. Suggested fixes are for the user to run, quoted as such:

  • Missing Node/pnpm/uv → suggest user-level installs that need no sudo and touch nothing outside $HOME: Node 22 tarball extracted to ~/opt/node22 (add its bin to PATH), corepack enable --install-directory ~/.local/bin && corepack prepare $(node -p "require('./package.json').packageManager") --activate for the pinned pnpm, and the official uv installer script (installs to ~/.local/bin). Missing bubblewrap has no user-level path — it is a distro package the user must install.
  • Sandbox probe passed → the environment is fine. Do not read kernel.apparmor_restrict_unprivileged_userns, do not report it, and never ask for sudo sysctl -w ...=0. That restriction is configured per AppArmor profile, so the value is routinely 1 on Ubuntu 24.04+ hosts where the probe passes; quoting a root command there is wrong advice.
  • Sandbox probe failed → report it and work through the causes in order: the container's security_opt (Docker mode needs seccomp, apparmor and systempaths all unconfined); then the host AppArmor configuration, where /etc/apparmor.d/ can grant userns create per program; and only then sysctl kernel.unprivileged_userns_clone and sysctl kernel.apparmor_restrict_unprivileged_userns. If the last one is the confirmed cause, quote sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0, say it needs root and does not persist, and stop for the user's decision.
  • Port already in use → offer SCIENCE_AGENT_PORT (host mode) or SCIENCE_AGENT_PUBLISH_PORT (Docker) instead of killing the other process. When moving the runner port, also update the explicit SCIENCE_AGENT_RUNNER_URL in .env — it does not follow *_PORT automatically.
  • npm / PyPI unreachable or very slow → set SCIENCE_AGENT_NPM_REGISTRY / SCIENCE_AGENT_PYPI_INDEX in .env (e.g. the Huawei Cloud mirrors; see the variable table in docs/zh/reference/configuration.md). Both are scoped to start-stack.sh's install commands and never touch user or global npm/uv config.

If the sandbox probe keeps failing, the API and UI still start and /health still reports the runner, but every run_python / run_shell fails. Say this plainly and let the user choose whether to continue.

Step 4a — Deploy: host processes

bash
cp .env.example .env                               # first time only; never overwrite an existing .env
./scripts/start-stack.sh --mode local              # install + build + start
./scripts/start-stack.sh --mode local --no-build   # start only, after a previous build
  • Runs in the foreground; it starts the runner (127.0.0.1:4311) and the memory-graph sidecar (127.0.0.1:17674) in the background and the API (0.0.0.0:4310) in front. It also starts the bundled Python MCP sidecars.
  • Backgrounding it (nohup ./scripts/start-stack.sh --mode local &, tmux, a supervisor) changes how it must be stopped — see Stopping a backgrounded host stack below. Ctrl-C no longer applies.
  • First run provisions .sciencediscovery-data/envs/gateway and .sciencediscovery-data/envs/paper through uv and needs outbound network.
  • ./scripts/run-local.sh [--no-build] is the compatibility wrapper; pnpm start and pnpm server go through it.
  • Never launch it with sudo. For unattended operation, hand the user a supervisor option (tmux, or a systemd user unit) — do not install one.

Step 4b — Deploy: Docker Compose

bash
cp .env.docker.example .env      # or merge its keys into an existing .env
# set SCIENCE_AGENT_UID / SCIENCE_AGENT_GID to `id -u` / `id -g` when they are not 1000
mkdir -p data                    # before `up`: Docker creates a missing bind-mount source as root
docker compose build             # first build is long and needs network
docker compose up -d
curl -fsS http://127.0.0.1:4310/health
  • ./data is bind-mounted to /app/data and is the only persisted location; it survives docker compose down and rebuilds.

  • A uid/gid mismatch is the most common first-run failure: the entry point exits with an explicit "not writable" message. Fix it via SCIENCE_AGENT_UID / SCIENCE_AGENT_GID and recreate the container. The same message appears when the data directory did not exist at up time: Docker then created it as root, so remove it and mkdir -p it as the user first.

  • The sign-in URL in docker compose logs always names the container port

    1. When SCIENCE_AGENT_PUBLISH_PORT differs, tell the user to substitute the published port before opening it.
  • The first start seeds micromamba into ./data/scientific-envs/bin/ and then creates the starter Python environment in the background (conda-forge, about 2 GB into ./data). The UI works meanwhile; runner.scientificEnvs.startersReady in /health turns true when it is done. SCIENTIFIC_ENVS=0 skips it.

  • Several instances on one host: give each its own Compose project name, port and data directory. The service sets no container_name, so the project name alone separates container and network names.

    bash
    mkdir -p data-b
    COMPOSE_PROJECT_NAME=sciencediscovery-b SCIENCE_AGENT_PUBLISH_PORT=4320 \
      SCIENCE_AGENT_DATA_HOST_DIR=./data-b docker compose up -d

    Every later ps / logs / down needs the same project name, or it acts on the other instance. Add SCIENCE_AGENT_IMAGE when the instances are built from different checkouts.

  • The service already sets seccomp=unconfined, apparmor=unconfined and systempaths=unconfined for bubblewrap. Do not add capabilities or privileged: true. Dropping systempaths=unconfined still works, but the runner then falls back to binding the container's /proc and warns at startup: sandboxed code sees the container's process list.

Step 5 — Report the URL

  • Default: http://127.0.0.1:4310
  • Sign in with SCIENCE_AGENT_AUTH_TOKEN. There is no shipped default: when the variable is unset, the stack generates a token on its first start, prints it at startup, and stores it in <data dir>/secrets/auth-token. Read the value from the user's .env or that file — do not print a token into a shared channel.
  • Host-process mode binds all interfaces by default, so http://<machine-ip>:4310 also works. Docker publishes on 127.0.0.1 unless SCIENCE_AGENT_PUBLISH_HOST is changed, and the Open to sign in URL in its log always says port 4310 — report the published port instead when it differs. Auth is one bearer token with no TLS: recommend loopback plus SSH forwarding over exposing the port, and tell the user to change the token first if they do expose it.
  • There is no built-in model. A usable session needs a profile plus credential under System configuration → Model registry (docs/zh/reference/runtime-behavior.md → 模型).

Remote host, browser on a laptop

When the stack runs on a remote development machine, forward the port instead of publishing it. Run from the laptop:

bash
remote_user="alice"; remote_host="science-host.example"
ssh -N -L 4310:127.0.0.1:4310 "${remote_user}@${remote_host}"

local_port=4310; remote_port=4310
ssh -f -N -o ServerAliveInterval=30 \
  -L "${local_port}:127.0.0.1:${remote_port}" "${remote_user}@${remote_host}"

Then open http://127.0.0.1:<local-port> locally. <remote-port> is the published port: SCIENCE_AGENT_PORT in host-process mode, SCIENCE_AGENT_PUBLISH_PORT in Docker mode. Pick a different <local-port> if 4310 is taken locally. Stop the tunnel by closing the session, or by killing the backgrounded ssh -f process.

Forward only the API port. The runner (4311) is loopback-only by design.

Show full SKILL.md (913 more words)Show less

Management commands

ActionHost processesDocker Compose
Start./scripts/start-stack.sh --mode local [--no-build]docker compose up -d
Stop (foreground)Ctrl-C in that terminal (also stops the runner)docker compose down (./data survives)
Stop (backgrounded)signal the instance's process group — see belowsame
Restartstop as above, then start againdocker compose restart
Rebuild + restartstart once without --no-builddocker compose up -d --build
Logsstdout/stderr of the foreground terminal (or the supervisor's log)docker compose logs -f
Statess -ltn | grep 4310docker compose ps (includes the health check)
Healthcurl -fsS http://127.0.0.1:4310/healthsame, against the published host/port

Component health endpoint in both modes: runner http://127.0.0.1:4311/health (reachable from inside the container in Docker mode). The API's own /health echoes the runner status, so it is usually the only one worth checking.

Stopping a backgrounded host stack

Ctrl-C only reaches a foreground stack. Started with nohup ... &, tmux or any supervisor, the script sits in its own process group and is reparented to init, so the terminal's SIGINT never reaches it and its services keep running.

Signalling the script alone is also not enough: start-stack.sh runs the API in its own foreground and its trap cleanup EXIT INT TERM only fires once that API exits. kill -TERM <start-stack.sh PID> therefore leaves the API, the runner, the memory-graph sidecar and the bundled MCP sidecars running and the ports bound.

Stop the whole process group instead, and identify it from the port this instance published — never from the script name, because a developer host often runs several stacks on different ports at once:

bash
api_port=4310   # this instance's SCIENCE_AGENT_PORT
api_pid=$(ss -ltnp | grep ":${api_port} " | grep -o 'pid=[0-9]*' | head -1 | cut -d= -f2)
pgid=$(ps -o pgid= -p "$api_pid" | tr -d ' ')

pgrep -g "$pgid" -a            # review the group before signalling it
kill -TERM -"$pgid"

for _ in $(seq 1 30); do ss -ltn | grep -qE ":(${api_port}|4311|17674)\b" || break; sleep 0.5; done
ss -ltn | grep -E ":(${api_port}|4311|17674)\b" || echo "ports released"
pgrep -g "$pgid" -a || echo "no survivors"

List the group with pgrep -g, not ps -g: ps reads a numeric -g argument as a session id, so it silently prints nothing and the group looks empty.

  • Escalate to kill -KILL -"$pgid" only for what survives, and only after the 30-second wait: SIGTERM lets the runner tear its sandboxes down.
  • Never pkill -f start-stack.sh, pkill -f 'node.*server.js' or killall node. Those match every stack and every unrelated Node process on the host; the port-derived process group matches exactly one instance.
  • Neighbour check afterwards: the other stacks' ports must still be listening and their /health must still answer.
  • ss -ltnp prints the PID only for sockets you own; for another user's stack ask that user rather than widening the match.
  • If the instance uses non-default ports, substitute its own SCIENCE_AGENT_PORT, SCIENCE_AGENT_RUNNER_PORT and SCIENCE_AGENT_MEMORY_GRAPH_PORT everywhere above.

Troubleshooting

SymptomCause / next step
data ... is not writable by uid ...Docker uid/gid mismatch → set SCIENCE_AGENT_UID / _GID, recreate
WARNING: bubblewrap cannot create a sandbox in logsThe probe failed → work Step 3's order: security_opt, then host AppArmor profiles, then the sysctl. Never open with the sysctl fix
.sciencediscovery-data/envs/gateway is missingStarted with --no-build before a build → run once without it (that venv holds the interpreter for the bundled Python MCP servers)
API up but every run failsUsually the sandbox warning above, or no model profile configured
Port already bound (Bind for 127.0.0.1:4310 failed: port is already allocated in Docker mode)Change SCIENCE_AGENT_PORT / SCIENCE_AGENT_PUBLISH_PORT; substitute the new port in the sign-in URL
Sign-in URL from docker compose logs does not openIt names container port 4310; replace it with SCIENCE_AGENT_PUBLISH_PORT
Second Docker instance exits with the "not writable" messageIts data directory was created by Docker as root → mkdir -p it as the user before up
Model on the host is unreachable from the container127.0.0.1 inside the container is the container. Add extra_hosts: ["host.docker.internal:host-gateway"] to the service in a docker-compose.override.yml and use host.docker.internal:<port>, or the host's LAN IP
Model calls need a proxy (Docker mode)System configuration → Network proxies with a custom_url record, or inject HTTPS_PROXY through docker-compose.override.yml and pick the environment proxy type. Compose forwards only the keys of .env.docker.example
Web says "Local service access token rejected"The pasted value is not this instance's token (a model API key, or another data directory's token) → use ./data/secrets/auth-token
Ctrl-C did not stop a host stack, ports still boundIt was backgrounded (nohup/tmux/supervisor), so SIGINT never reached it → stop its process group, see Stopping a backgrounded host stack
Killed the script but the API/runner survivedstart-stack.sh only runs its cleanup trap after its foreground API exits → signal the process group, not the script PID
does not support --disable-userns warning at runner startupExpected on bwrap < 0.8 (e.g. Ubuntu 22.04's 0.6): nested-userns hardening is skipped, everything else isolates normally. Upgrade bubblewrap for the stronger profile
supports --disable-userns but cannot use it here warning at runner startupExpected under LXC and container runtimes that mount /proc/sys read-only, so bubblewrap cannot write user.max_user_namespaces. The option is omitted and executions run; everything else isolates normally. Do not grant privileged or systempaths=unconfined to silence it
First docker compose build fails on networkThe build resolves pnpm and both uv environments; retry with network available

Checklist

  1. Asked the user which form, and got an answer
  2. Ran the read-only checks for that form; reported pass/fail values
  3. Reported gaps with suggested user-run commands — no sudo, no global install
  4. Deployed only after the user confirmed the environment is acceptable
  5. Verified /health, then reported URL + token source
  6. Gave SSH forwarding instructions when the stack is not on the user's own machine
  7. Gave the management command table for the mode used, including the correct stop for a backgrounded host stack

Policy: this skill assists; it does not change host configuration on its own. Repository-local writes need a heads-up, host-level changes need the user's explicit go-ahead, and root-level changes are always executed by the user.

© openJiuwen-ai, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/deploy of openJiuwen-ai/sciencediscovery.

Open the folder on GitHubat commit 9189206

Compare with similar skills

Deploy next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Deploy compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Deploy this skillopenJiuwen-ai/sciencediscovery156—~5kAutomated safety check: NotesApache-2.0
GreptimeDB Dev Docker ImageGreptimeTeam/greptimedb6.7k—~4kAutomated safety check: NotesApache-2.0
Senior DevOps Toolkitmaslennikov-ig/claude-code-orchestrator-kit2606 repos~1.1kAutomated safety check: NotesCustom licence
LangBot Deployment Guidelangbot-app/LangBot18k—~1.2kAutomated safety check: NotesApache-2.0
Reflexo ReleaseMyriad-Dreamin/typst.ts1.2k—~1.5kAutomated safety check: PassApache-2.0
Classical Poem Silk VideoMr-funny/hbg-classical-poem-silk-video361—~1.6kAutomated safety check: PassMIT

Similar skills

  • GreptimeDB Dev Docker Image

    GreptimeTeam/greptimedb

    Packages a locally built GreptimeDB debug binary into a development-only Docker image for local-cluster testing, with an optional push to a dev registry.

    6.7k GitHub stars~4k tokensUpdated today
    DevOps & CloudAuto-check: notes
  • Senior DevOps Toolkit

    maslennikov-ig/claude-code-orchestrator-kit

    Comprehensive DevOps skill for CI/CD, infrastructure automation, containerization, and cloud platforms (AWS, GCP, Azure). Includes pipeline setup…

    260 GitHub starsUsed in 6 repos~1.1k tokens
    DevOps & CloudAuto-check: notes
  • LangBot Deployment Guide

    langbot-app/LangBot

    Deploys and configures a LangBot instance with Docker Compose or Kubernetes, covering config.yaml, the Box sandbox runtime, the plugin runtime and the global API key.

    18k GitHub stars~1.2k tokensUpdated yesterday
    DevOps & CloudAuto-check: notes
  • Reflexo Release

    Myriad-Dreamin/typst.ts

    Guide Reflexo/typst.ts release preparation and operator handoffs.

    1.2k GitHub stars~1.5k tokensUpdated yesterday
    DevOps & CloudAuto-check passed
  • Classical Poem Silk Video

    Mr-funny/hbg-classical-poem-silk-video

    Turn Chinese classical poems and ci into coherent vertical Chinese-art videos with poem-driven scene grouping, GPT ImageGen stills, Docker-only Gemini I2V, retained model-generated ambience, Gemini…

    361 GitHub stars~1.6k tokensUpdated 2 mo ago
    DevOps & CloudAuto-check passed
  • 1panel App Builder

    arch3rPro/1Panel-Appstore

    A skill your agent uses when packaging Docker deployments as 1Panel local app store apps, including GitHub projects, docker-compose.yml files, docker run commands, app metadata, version directories…

    213 GitHub stars~1.3k tokensUpdated today
    DevOps & CloudAuto-check passed

More from openJiuwen-ai/sciencediscovery

All 22 skills in this repo
  • Code Engineer

    openJiuwen-ai/sciencediscovery

    A skill your agent uses when you need to write and execute Python/R code to process, transform, and analyze data, delivering reproducible computational results with complete code-level methodology…

    156 GitHub stars~2.8k tokensUpdated today
    Auto-check passed
  • Gitcode

    openJiuwen-ai/sciencediscovery

    Operate GitCode issues, PRs, wikis, code/MR refs, and cached org templates.

    156 GitHub stars~4.3k tokensUpdated today
    Auto-check passed
  • Structure Pocket Inspection

    openJiuwen-ai/sciencediscovery

    Inspect a local PDB structure, summarize chains and residue composition, and identify protein atoms near a user-specified ligand or pocket center.

    156 GitHub stars~624 tokensUpdated today
    Auto-check passed
  • Antibody Design

    openJiuwen-ai/sciencediscovery

    Prepare, launch, monitor, and summarize the real RFdiffusion to ProteinMPNN to Protenix antibody pipeline on a local or remote ScienceDiscovery Runner with sandboxed Ascend NPUs.

    156 GitHub stars~2.9k tokensUpdated today
    Auto-check passed
  • Science Research Team

    openJiuwen-ai/sciencediscovery

    A skill your agent uses to orchestrate a multi-domain research team for literature/evidence research and data analysis.

    156 GitHub stars~1.3k tokensUpdated today
    Auto-check passed
  • Literature Searcher

    openJiuwen-ai/sciencediscovery

    A skill your agent uses when a research workflow needs verified academic source retrieval through literature-search MCP interfaces available in the current session before evidence extraction.

    156 GitHub stars~5.8k tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about Deploy

What does Deploy do?

Deploy or run the ScienceDiscovery stack, either as host processes (scripts/start-stack.sh) or with Docker Compose. Deploy is an agent skill from openJiuwen-ai/sciencediscovery.sh) or with Docker Compose.

When should I use Deploy?

Deploy fits situations like: the user asks to deploy; containerize ScienceDiscovery; asks for the UI URL; SSH port forwarding.

How do I install Deploy in Claude Code?

Run `npx skills add openJiuwen-ai/sciencediscovery --skill deploy -a claude-code`. Or copy the skill folder (.agents/skills/deploy in openJiuwen-ai/sciencediscovery) into .claude/skills/deploy in your project. Claude Code loads it when a task matches its description.

How do I install Deploy in Codex?

Run `npx skills add openJiuwen-ai/sciencediscovery --skill deploy -a codex`. Or copy the skill folder (.agents/skills/deploy in openJiuwen-ai/sciencediscovery) into .agents/skills/deploy in your project. Codex loads it when a task matches its description.

Can I use Deploy in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add openJiuwen-ai/sciencediscovery --skill deploy -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/deploy, .gemini/skills/deploy, .github/skills/deploy and .opencode/skills/deploy in your project.

What does Deploy need to run?

Going by SKILL.md and its folder, Deploy needs the command-line tools its instructions call (docker, pnpm, curl, ssh, node and python3) and credentials named SCIENCE_AGENT_AUTH_TOKEN. Our summary lists: Python 3; Docker; A credential in SCIENCE_AGENT_AUTH_TOKEN.

Does Deploy access the network?

SKILL.md contains no URLs. Its commands use docker, curl, ssh, uv and npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Deploy safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file; runs commands with sudo), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Deploy use?

Deploy is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Deploy use?

About 5k tokens (SKILL.md is roughly 20k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Deploy?

Skills that share tags, products or a category with Deploy: GreptimeDB Dev Docker Image (GreptimeTeam/greptimedb, 6.7k stars), Senior DevOps Toolkit (maslennikov-ig/claude-code-orchestrator-kit, 260 stars), LangBot Deployment Guide (langbot-app/LangBot, 18k stars) and Reflexo Release (Myriad-Dreamin/typst.ts, 1.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Deploy?

openJiuwen-ai (a GitHub organization) maintains it in openJiuwen-ai/sciencediscovery, which has 156 GitHub stars. The repository holds 22 skills in this directory. The repository was last updated on October 9, 2026.

Source: openJiuwen-ai/sciencediscovery on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.