본문으로 건너뛰기
cccskills
무료GitHub에 공개

rembric-tui-installer

The Rembric TUI installer contract — the single, canonical install/setup/upgrade/uninstall path (`apps/plugin/install.sh`, fronted by the repo-root `install.sh` shim). Apply when touching `install.sh`, the root shim, any per-client `install.sh`/`uninstall.sh`, `marketplace.json`, or distribution docs (README, `docs/agents.md`, plugin/client READMEs). Covers the orchestrator model, what must not break, and where the source of truth lives. For running the validation suite, use `rembric-tui-installer-e2e`.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구Docker

실행 점수 미검증

설치 방법 보기

포함된 파일(1)

  • SKILL.md7.0 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Rembric TUI installer — contract

The TUI installer is the single, canonical, user-facing path for installing / setting up / upgrading / uninstalling the Rembric server and every client plugin. Docs lead with it; per-client commands are documented only as manual fallback.

Source of truth (read these — this file is the durable contract, not a copy):

  • apps/plugin/install.sh — the orchestrator (real logic).
  • install.sh (repo root) — the thin shim; canonical URL .../main/install.sh.
  • install.test.ts (repo root) — the headless test surface (covers the root shim + the orchestrator).
  • openspec/specs/tui-installer/spec.md — the normative requirements.

The orchestrator model (do NOT violate)

The installer delegates; it never reimplements. There are three backends, and each of the five clients uses exactly one:

  • opencode, Hermes → invokes their own install.sh / uninstall.sh (via PLUGIN_SRC against a local clone, or curl at the same ref).
  • Claude Code, Codex → prints the marketplace CLI commands (and optionally runs them when the client binary is present). No repo-side install script is created for these.
  • Pi → runs the client's own CLI against the public npm registry: pi install npm:@rembric/pi, for install and for update, gated on binary presence and --yes exactly as the marketplace backend is; uninstall goes through that client's own removal verb. There is deliberately no .pi-plugin/install.sh, no .pi-plugin/uninstall.sh, and no marketplace entry. --ref=<tag> is NOT applied to it — the artifact comes from the registry, not a git ref, and appending a version would produce a pin that the client's own pi update --extensions / --all then skip, freezing the operator while reporting success.

The per-client primitives (install.sh/uninstall.sh, marketplace.json, the bridge, hooks) are the backend and the documented manual fallback. Changing the installer must not duplicate or fork their logic.

The root install.sh is a pure forwarder — no menu, token, fetch-of-artifacts, or client logic of its own. From a clone it execs apps/plugin/install.sh; over curl|sh it fetches that script at the same ref. Every flag/env passes through unchanged.

Surface to preserve

  • Flags/env: --server, --agent=<a,b,..> (one or more of claude,codex,hermes,opencode,pi, or all), --action=install|update|uninstall, --up, --ref=<tag>, -h/--help; REMBRIC_SRC (local-source, no network), REMBRIC_NONINTERACTIVE, REMBRIC_REF, NO_COLOR.
  • The client list must have ONE definition, with the agreement asserted by a test. The parser, the per-client loops, the arrow_menu and the usage text all enumerate it, and a client added to eleven of twelve places is the failure mode — so a new client is a one-line change plus a green agreement test, never a search-and-add sweep.
  • Three run modes: interactive arrow-key TUI (real /dev/tty, raw mode) → numbered fallback (no raw mode) → headless flag mode (no controlling terminal or REMBRIC_NONINTERACTIVE=1). No controlling terminal must NOT hang — it falls to headless.
  • Server flow is prepare + token + optional gated up: dependency report; auto-generate REMBRIC_ADMIN_TOKEN (and refill an empty token from an interrupted run); never start Docker without --up/confirmation; docker compose pull && up -d gated on docker compose availability.

What must not break (checklist)

  1. Orchestration: still delegates per client; no inlined client logic; git ls-files apps/plugin/ shows one copy of each shared resource.
  2. Root shim is a pure pass-through (flags/env reach apps/plugin/install.sh unchanged).
  3. Token flow: fresh → generated 64-hex; pasted → kept; configured .env → untouched + shown; empty token (interrupted run) → refilled. Never bring up with an empty token.
  4. Version detection per client: opencode @rembric-plugin-version comment; Hermes plugin.yaml; Claude/Codex versioned marketplace cache; Pi ${PI_CODING_AGENT_DIR:-~/.pi/agent}/npm/node_modules/@rembric/pi/package.json, which only a user-scope pi install npm: leaves behind — every other vector leaves none, so Pi is the one client that can legitimately report unknown rather than a guess. Available = single .release-please-manifest.json fetch at the install ref.
  5. "Update available" never lies — and the registry-CLI row is the one that could make it. For Pi the installer does exactly one of two things: read the installed version from a deterministic on-disk location established by measurement, in the manner of the four adapters above; or report it as explicitly unknown and recommend the idempotent reinstall. Guessing, inferring from presence, or defaulting to the available version is prohibited — a table with one unreliable row is an unreliable table for every client. An unknown row must render unknown, never "up to date" and never "update available", and update-all skips it with unknown as the stated reason and still exits 0 (update-all runs unattended; reinstalling on ignorance would make it act on every run for a client it can never confirm). Forcing it stays the explicit --agent=pi --action=install path, and the skip line names that verb — every recommendation any surface prints comes from one state → verb mapping, so it is always a verb --action accepts (ACTIONS='install update uninstall', validated at parse time).
  6. Post-install steps reflect the action, per client. Pi install prints the REMBRIC_SERVER_URL / REMBRIC_API_TOKEN shell exports and no settings-file alternative — measured: that harness injects nothing from its own settings file, so offering one would be inventing a path. Pi update prints only the restart.
  7. Conservative uninstall: remove only plugin-owned files; never touch operator config, credentials, .rembric.
  8. UX: lime block banner; each menu step clears+redraws (screen-replace, not stacking); restores stty/cursor on exit.
  9. set -e safety: functions must not end on a false [ test ] (it aborts the script / kicks out of the menu). End client/menu helpers with return 0 or an if/fi.
  10. POSIX: /bin/sh (dash) compatible — no bashisms; sh -n clean.

Before landing any install/distribution change

Run the rembric-tui-installer-e2e playbook (headless + local layers at minimum). The headless suite is CI-gated via install.test.ts (repo root); the interactive and Docker layers are operator-run.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

diagnose

무료

Disciplined diagnosis loop for hard bugs and performance regressions. Reproduce → minimise → hypothesise → instrument → fix → regression-test. Use when user says "diagnose this" / "debug this", reports a bug, says something is broken/throwing/failing, or describes a performance regression.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

susomejias/rembric142026년 10월 22일 업데이트

Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

susomejias/rembric142026년 10월 22일 업데이트

Find deepening opportunities in a codebase, informed by the project's own domain language and prior design decisions. Use when the user wants to improve architecture, find refactoring opportunities, consolidate tightly-coupled modules, or make a codebase more testable and AI-navigable.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

susomejias/rembric142026년 10월 22일 업데이트

Resolve a verified cluster of Rembric issues from causal root to evidence-gated closure. Use after systemic triage identifies a shared root, or when the user asks to attack issues at the root, create a mechanism map, plan a deletion-first fix, or close a fixed/stale issue cluster. Use `diagnose` for a single defect whose reproduction is not yet established.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

susomejias/rembric142026년 10월 22일 업데이트

Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

susomejias/rembric142026년 10월 22일 업데이트

Migrates React projects and components from Radix UI to Base UI. Use when asked to migrate from radix, move to base-ui, convert radix primitives, or switch a shadcn project's base library. Handles single components ("migrate accordion") and whole projects.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

susomejias/rembric142026년 10월 22일 업데이트

susomejias의 스킬 모두 보기

이 스킬의 문제 신고