Term CLI
EliasOenal/term-cli
Controls interactive terminal sessions for running long-lived processes, servers, REPLs, debuggers, and TUI programs without blocking.
Build, validate, publish, update, inspect, query, roll back, or archive a dynamic Marina applet.
$ npx skills add marin-community/marin --skill marina-applet -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install marin-community/marin marina-applet --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/marin-community/marin.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/marina-applet .claude/skills/marina-applet && rm -rf skills-srcUse ~/.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/
Install the "marina-applet" agent skill from https://github.com/marin-community/marin/tree/main/.agents/skills/marina-applet into .claude/skills/marina-applet/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "marina-applet", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/marin-community/marin/tree/main/.agents/skills/marina-appletType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add marin-community/marin --skill marina-applet -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install marin-community/marin marina-applet --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/marin-community/marin.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/marina-applet .agents/skills/marina-applet && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "marina-applet" agent skill from https://github.com/marin-community/marin/tree/main/.agents/skills/marina-applet into .agents/skills/marina-applet/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "marina-applet", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add marin-community/marin --skill marina-applet -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install marin-community/marin marina-applet --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/marin-community/marin.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/marina-applet .cursor/skills/marina-applet && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "marina-applet" agent skill from https://github.com/marin-community/marin/tree/main/.agents/skills/marina-applet into .cursor/skills/marina-applet/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "marina-applet", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/marin-community/marin.git --path .agents/skills/marina-applet--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add marin-community/marin --skill marina-applet -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install marin-community/marin marina-applet --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/marin-community/marin.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/marina-applet .gemini/skills/marina-applet && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "marina-applet" agent skill from https://github.com/marin-community/marin/tree/main/.agents/skills/marina-applet into .gemini/skills/marina-applet/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "marina-applet", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install marin-community/marin marina-appletInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add marin-community/marin --skill marina-applet -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/marin-community/marin.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/marina-applet .github/skills/marina-applet && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "marina-applet" agent skill from https://github.com/marin-community/marin/tree/main/.agents/skills/marina-applet into .github/skills/marina-applet/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "marina-applet", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add marin-community/marin --skill marina-applet -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install marin-community/marin marina-applet --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/marin-community/marin.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/marina-applet .opencode/skills/marina-applet && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "marina-applet" agent skill from https://github.com/marin-community/marin/tree/main/.agents/skills/marina-applet into .opencode/skills/marina-applet/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "marina-applet", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
marina-appletBuild, validate, publish, update, inspect, query, roll back, or archive a dynamic Marina applet.
Marina Applet is an agent skill from marin-community/marin. Build, validate, publish, update, inspect, query, roll back, or archive a dynamic Marina applet. Use for Artifact+-style web apps that should run behind Marina authentication, carry small bundled assets or data, use an applet-owned Postgres schema, or add a trusted Python ASGI backend without a Marina image deployment.
Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `agents/openai.yaml`).
It sits in Backend & APIs. It works with PostgreSQL, Python, npm and Vite. The repository describes itself as: Open-source framework for the research and development of foundation models. The licence is Apache-2.0.
Read from SKILL.md and the folder at commit 2ea1c1d. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
uvnpmFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
marina.oa.devFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Marina Applet loads about 2.3k tokens when it runs. Until then it costs about 84 tokens; SKILL.md has 1,093 words of instructions outside code blocks.
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.
The automated check found no risky patterns in SKILL.md.
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.
The full file from marin-community/marin at commit 2ea1c1d, republished under its Apache-2.0 licence (© marin-community). 1,093 words, ~2,289 tokens.
.claude/skills/marina-applet/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Read the Publishing an applet section of infra/marina/README.md before
changing an applet or publishing one. Use
infra/marina/examples/problem-set-applet/ as the minimal working package and
backend reference. Treat those files and marina --help as authoritative when
this skill disagrees with the checkout.
Ensure the built package contains:
my-applet/
applet.toml
dist/index.htmlAdd browser assets below dist/. Use only relative asset, API, and query URLs
so both /a/<uuid>/ and /a/<uuid>/v/<revision>/ work.
The source directory may omit dist/index.html only when applet.toml has a
build_command that creates it before packaging.
Use plain HTML and JavaScript for a small single-view applet. Use Vue with Vite when the applet needs multiple views, reusable components, or substantial client state. For Vue applets:
base to "./" so built asset URLs remain relative.createWebHashHistory() when the app has client-side routes. This avoids
hard-coding an applet UUID or revision into the router base.fetch("api/results") and
fetch("query", ...); do not start applet-owned URLs with /.dist/. Marina's content security policy does not
allow scripts loaded from a third-party CDN.Keep the source index.html, package.json, the Vite configuration, and src/
beside applet.toml. They are local build inputs and are not uploaded. A
typical manifest uses build_command = "npm ci && npm run build". Marina runs
that command before every publish by default. Use --no-build only when the
existing dist/ has already been built and validated.
Use the applet's implicit Postgres schema for mutable or queryable data. Do not
create or attach a separate database. Load simple scalar tables with the CLI,
or add server/ when the applet needs parameterized business logic, custom
responses, or server-side integration.
An optional backend has this shape:
my-applet/
server/__init__.py
server/app.pyDeclare it in applet.toml:
title = "Problem sets"
description = "Browse generated math problem sets."
python_entrypoint = "server.app:create_api"Export create_api(services) -> ASGIApp. Use services.engine() for an engine
configured with the applet role and schema. Optionally export
migrate(connection) -> None; it runs inside the publish transaction before
the new revision becomes current. Keep schema changes compatible with retained
revisions.
Use get_verified_identity() from rigging.server_auth when a backend needs
the authenticated caller. Import only packages already declared in
infra/marina/pyproject.toml. Shared Marin helpers must come from installed
packages under lib/*; do not import checked-in apps under infra/marina/apps.
Treat Python applets as trusted plugins. They run inside Marina with its filesystem, network, credentials, and process identity. Do not publish code from an untrusted source or depend on lifespan events, background workers, or local filesystem persistence.
Inspect existing Marina and repository helpers before introducing a framework
or dependency. Build frontend output locally; Marina does not install applet
dependencies. marina publish runs a declared build_command before packaging
by default, and the command may create dist/index.html. Pass --no-build to
reuse an existing validated dist/.
Validate the package and import a declared backend from the current Marina environment without changing server state:
uv run marina validate my-appletThe report names its completed checks and omissions. It does not execute the backend factory, run its migration, connect to Postgres, or start a browser. Use package-only validation when only the upload archive matters:
uv run marina publish my-applet --dry-runDry-run reports backend imports as unchecked. Both commands reject executable
inline scripts under Marina's script-src 'self' policy. Load JavaScript from
relative packaged files.
Respect the current package limits: 25 MiB total, 8 MiB per file, and 2,000 regular files. Keep large data out of the package until Marina gains an object store path.
Run the complete local stack with:
uv run marina publish my-applet --localThis starts disposable Postgres in Docker, installs Marina's privileged applet
provisioning, migrates the registry, starts Marina on a free loopback port,
publishes the applet with its migration, and prints its immutable revision URL.
It requires a running Docker daemon, binds only to loopback, and does not enable
IAP authentication. It stays in the foreground. After validation, send Ctrl-C
and verify that both Marina and the container stop. If uv cannot write its
cache in a restricted checkout, use the current checkout's .venv/bin/marina
executable instead of installing or synchronizing dependencies.
To preserve the disposable Postgres stack across edits, leave the first
publish --local --json process running. From a second terminal, publish the
edit with this command, using each returned revision as the next base version:
uv run marina publish my-applet --url <printed-origin> \
--update <printed-id> --base-version <current-version>Open the printed immutable revision URL. Exercise the frontend, every backend route, caller identity when used, and at least one schema read/write path. For Marina code changes, run the focused tests and then:
cd infra/marina && uv run pytestThe applet role owns applet_<uuid-without-hyphens> and inherits read access to
checked-in and other applet schemas. It can write only its own schema. Prefer
the CLI for small datasets:
uv run marina applets table load <uuid> observations rows.parquet --replace
uv run marina applets sql <uuid> 'SELECT * FROM observations'Table loading accepts JSON arrays, JSONL, CSV, and Parquet with scalar columns.
Browser code may post one SQLAlchemy text statement to relative URL query.
Query results are limited in Postgres to 10,000 rows and 5 MiB with a 10-second
timeout. Transaction and role-control commands, data-modifying WITH, and
mutation statements with RETURNING are rejected.
Prefer a Python backend over browser-submitted SQL when inputs need validation, authorization, stable response types, or multiple database operations.
Treat a request to build or update a Marina applet as authorization to publish
it and perform the server writes needed for the requested behavior, including
schema migrations and requested data loading. Validate the package, then publish
without asking for separate confirmation. Honor requests for local-only work,
drafts, or review before publishing. Rollback, archive, and unrelated data
mutations still need authorization within the user's request. The default target is
https://marina.oa.dev, and the CLI uses cached iris login credentials or
ambient Google credentials through IAP.
First publish:
uv run marina publish my-applet --jsonRecord the returned UUID, revision, and immutable revision URL. A successful publish runs its migration and atomically selects the new revision as current. Fetch the stable current URL with:
uv run marina applets versions <uuid> --jsonUpdate the same applet with optimistic concurrency:
uv run marina publish my-applet --update <uuid> --base-version <current>Applets are private by default. Use --mode public on a publish or update when
the frontend and its GET backend routes may be disclosed without
authentication. An update without --mode preserves the current mode. Change
only the mode with marina applets mode <uuid> public|private.
Public mode is limited to GET and HEAD requests, but Marina cannot prove that a
GET backend is side-effect-free. Use it only for trusted applet code and data
that may be disclosed to the unrestricted internet. Do not use public mode for
untrusted publishers, sensitive data, SQL query access, or mutation routes.
Inspect before mutating lifecycle state:
uv run marina applets list
uv run marina applets versions <uuid>Roll back only to a retained revision:
uv run marina applets rollback <uuid> <revision>Archive an applet with:
uv run marina applets archive <uuid>Archival hides the applet but preserves its schema and retained revisions. Marina retains the current revision plus four other recent revisions.
Report the applet UUID, stable URL, immutable revision URL, validation or test results, and any trusted-code or schema-compatibility caveat that affects use.
© marin-community, 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
SKILL.md and 1 other file in .agents/skills/marina-applet of marin-community/marin.
Open the folder on GitHubat commit 2ea1c1d
Marina Applet 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Marina Applet this skillmarin-community/marin | 3.9k | — | ~2.3k | Automated safety check: Pass | Apache-2.0 | |
| Term CLIEliasOenal/term-cli | 104 | — | ~3.3k | Automated safety check: Pass | BSD-3-Clause-Clear | |
| Flowfile Build and Environment SetupEdwardvaneechoud/Flowfile | 389 | — | ~7.3k | Automated safety check: Notes | MIT | |
| Dockeravibebuilder/claude-prime | 120 | — | ~1k | Automated safety check: Notes | MIT | |
| Stack Previewvicoa-ai/vicoa | 508 | — | ~1.8k | Automated safety check: Notes | AGPL-3.0 | |
| Silk Profilerbaserow/baserow | 6.1k | — | ~2.9k | Automated safety check: Pass | Custom licence |
EliasOenal/term-cli
Controls interactive terminal sessions for running long-lived processes, servers, REPLs, debuggers, and TUI programs without blocking.
Edwardvaneechoud/Flowfile
Recreates every Flowfile development and build environment from scratch, with exact version pins and an explanation of what each Makefile target really does.
avibebuilder/claude-prime
ALWAYS activate when the user's query involves Docker in any way — even if it also matches other skills.
vicoa-ai/vicoa
Run the whole Vicoa stack (Postgres, backend, realtime server, web dashboard) from the current checkout and publish it at one public tunnel URL, so a branch can be reviewed from another machine or…
baserow/baserow
Investigate backend performance using Django Silk profiling data.
moq-dev/moq
Build live video, audio, and real-time data apps with Media over QUIC (MoQ). Use when adding live streaming, conferencing, voice AI, or real-time pub/sub to…
marin-community/marin
Deslop, simplify, or review low-value tests and prose only when explicitly requested for a branch or diff.
marin-community/marin
Use Iris to submit, inspect, debug, monitor, or recover jobs and tasks; diagnose scheduling and federation; deploy controllers; or reserve dev GPUs and TPUs.
marin-community/marin
Define, validate, submit, or restart a Marin SkyRL experiment through its artifact main.
marin-community/marin
Query Finelog logs and telemetry for Iris tasks, workers, profiles, training, vLLM, and cross-cluster forwarding.
marin-community/marin
Run a read-only preview for a specified Marin infra/pulumi stack and trace each pending resource change to merged pull requests since its latest successful update when that update records a clean…
marin-community/marin
Deploy a significant code change (backend, kernel, optimizer, data path) to the live hero run: relaunch it under a new run id from a permanent checkpoint, compare against the old run over a trial…
Works with
Categories
Build, validate, publish, update, inspect, query, roll back, or archive a dynamic Marina applet. Marina Applet is an agent skill from marin-community/marin. Build, validate, publish, update, inspect, query, roll back, or archive a dynamic Marina applet.
Marina Applet fits situations like: artifact+-style web apps that should run behind Marina authentication; carry small bundled assets; use an applet-owned Postgres schema; add a trusted Python ASGI backend without a Marina image deployment.
Run `npx skills add marin-community/marin --skill marina-applet -a claude-code`. Or copy the skill folder (.agents/skills/marina-applet in marin-community/marin) into .claude/skills/marina-applet in your project. Claude Code loads it when a task matches its description.
Run `npx skills add marin-community/marin --skill marina-applet -a codex`. Or copy the skill folder (.agents/skills/marina-applet in marin-community/marin) into .agents/skills/marina-applet in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add marin-community/marin --skill marina-applet -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/marina-applet, .gemini/skills/marina-applet, .github/skills/marina-applet and .opencode/skills/marina-applet in your project.
Going by SKILL.md and its folder, Marina Applet needs the command-line tools its instructions call (uv and npm). Our summary lists: Python 3; Docker.
SKILL.md names 1 domain. In commands or code: marina.oa.dev; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Marina Applet 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.
About 2.3k tokens (SKILL.md is roughly 9.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Marina Applet: Term CLI (EliasOenal/term-cli, 104 stars), Flowfile Build and Environment Setup (Edwardvaneechoud/Flowfile, 389 stars), Docker (avibebuilder/claude-prime, 120 stars) and Stack Preview (vicoa-ai/vicoa, 508 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
marin-community (a GitHub organization) maintains it in marin-community/marin, which has 3,925 GitHub stars. The repository holds 41 skills in this directory. The repository was last updated on October 11, 2026.
Source: marin-community/marin on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.