Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 11 additions & 41 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,9 @@ deployment. The separately published `screenrig` npm package is the official
developer-shell distribution. It is never a substitute for this plugin's
bundled launcher in an agent workflow.

The workspace [`../AGENTS.md`](../AGENTS.md) is the shared working agreement.
This file outranks it on anything local here.
This is a public maintainer guide. In the internal multi-repository workspace,
the optional parent AGENTS.md adds shared operational rules; this repository
does not require that file for standalone contribution.

## Sources of truth

Expand Down Expand Up @@ -57,47 +58,16 @@ marketplace listing unless the user asks.
`PATH` once, then run `screenrig --json version`,
`screenrig-plugin-freshness --json`, `doctor`, then content work. Do not
export `SR`. Do not teach `npm i -g screenrig`.
- Do not teach `agent enroll`, `screen pair`, `browser setup`,
`screen provision`, `ABC-234`, or playlist text-slot template tutorials.
- Teach implemented account enrollment, connection and Player pairing in the
operating skill, without making them the marketplace sales pitch.
- Keep `--json` envelopes. Never teach a token flag or pasted bearer.
- Never write MCP. `validate-plugin.py` rejects MCP manifests.
- Teach the playlist authoring tree. Choose by what the page is:
1. Existing image or video → `media upload`. No compose. No generate.
2. Anything presentable → `media generate` as the whole page. Put every
fact and all copy in the prompt. Do not compose a presentable poster as
named regions + cards. Do not generate atmosphere-only stills for later
overlay. Generate is billed per token ($10 / 1M text input, $16 / 1M
image input, $60 / 1M image output). Quality changes detail and token
usage, not a fixed per-image price. Generate stores `med_…`; the caller
does not re-upload.
3. Slide-deck-like experiences → local unbilled `compose render`.
4. Live objects → write playlist primitives. Animation is not a reason to
compose.
- Lead marketplace README and skill with the human homepage line: **give
your agent a screen**. Then the homepage body: your agent creates it;
screenRIG puts it on the screen. Do not lead with pack-only “Build the
screen experience on infrastructure” or “You supply content / we host”
framing. Compare is the human three-column table (screenRIG / Build your
own / Dashboard-led signage), not DIY or legacy checklist prose. Do not
claim “twice vendor cost”. The available Player is the PWA. Native
platform names are product direction, not public downloads or store
listings.
- The category word is **primitive**. Four wire primitives: `image`, `video`,
`iframe`, `application`. Image and video take a `selector`; iframe and
application do not.
- Screenshotting is in v1. Do not print pixels.
- Root `README.md` is the public marketing face and is fact-gated. Required
marketplace strings and forbidden patterns live in
`scripts/validate-plugin.py`. Do not drop a required fact. Do not introduce
enroll, pairing, MCP, or global npm install. Do not promise native Players
as available; do not use the phrase “coming soon” in the README.

## Local workspace logs

When plugin or bundled-CLI stdout is captured through `rig start` in the
developer workspace, it is appended to `../logs/YY-MM-DD/plugin.log`
(example `../logs/26-09-08/plugin.log`). Rig deletes date folders older
than 7 days. The `logs/` directory is not a git repository.
- Keep the skill operational: launcher, first-use account state, supported task
paths, errors and verification. Put detailed command families in references.
- The README addresses prospective users; CONTRIBUTING.md addresses maintainers.
Neither defines API or billing behavior. Validators check supported commands,
references and security boundaries, not exact marketing slogans.
- Native platform names are not download or store-availability claims.

## Follow operation logs

Expand Down
17 changes: 17 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Plugin maintenance

For contributors maintaining the plugin. Customer installation is documented on
[Start](https://screenrig.ai/docs/start/).

`skills/screenrig/`, `build/plugin.json` and marketplace manifests are canonical.
`scripts/build-plugin.py` generates `plugins/screenrig/`; never edit that output
independently. Locally the builder packs sibling `../cli`; CI packs current CLI
main. `components.lock.json` records the resulting artifact's commit and hash,
not a commit to refetch.

Read [AGENTS.md](https://github.com/screenrig/plugin/blob/main/AGENTS.md) for generation and verification commands. Operational
skill text belongs in the entrypoint and task references; implementation details
belong here. The source and generated skill must travel with the same CLI bundle.

Skill validation checks command availability, references, launcher/version flow,
error handling and secret boundaries. It does not require marketing sentences.
184 changes: 27 additions & 157 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,173 +1,43 @@
# ScreenRig
# screenRIG

**give your agent a screen**
Give your agent a screen. Publish menu boards, videos, dashboards and kiosk
applications using the official screenRIG plugin and bundled CLI.

**Signage and Kiosk infrastructure for AI Agents**
## Get started

Your agent creates it. screenRIG puts it on the screen. Publish menu boards,
videos, dashboards, and kiosk apps through the official screenRIG plugin.
Built for AI agents, from the first prompt to the next update.

## Start free. Pay for what you use.

Pretty much all the digital signage and kiosk vendors out there are clunky
human-oriented SaaS that charge you per screen. We don't. We want you to use it
and pay for what you use. Start for free.

$0.09/GB bandwidth, $0.14/GB-month storage. Pennies a month per screen. No
per-screen subscription. No per-device price.

Usage is free within reason until 1 January 2027. Image generation is metered
separately: `media generate` is billed per token ($10 / 1M text input,
$16 / 1M image input, $60 / 1M image output). Quality (`low`, `medium`,
`high`; default `medium`) changes how detailed the still is and therefore how
many tokens it uses, not a fixed per-image price.

## Start

Paste this to your agent, then go install a Player on a device.
Ask your agent:

```text
I authorize you to install the official screenRIG plugin from https://github.com/screenrig/plugin.
```

Your agent takes it from there. Ask for the video, dashboard, menu board, or web
app you want, and it goes on the Player.

## Install

The official install is this plugin. Do not install a global `screenrig` from a
package registry. After install, prepend `$SCREENRIG_PLUGIN_ROOT/skills/screenrig/scripts`
(or the runtime plugin root) to `PATH` once, then invoke `screenrig`. Do not
export `SR`. "CLI" names the product category, and the bundled CLI is the
plugin wrapper, not a global package.

Claude Code:

```console
claude plugin marketplace add https://github.com/screenrig/plugin.git --scope user
claude plugin install screenrig@screenrig --scope user
```

Codex:

```console
codex plugin marketplace add https://github.com/screenrig/plugin.git --ref main --json
codex plugin add screenrig@screenrig --json
```
Then describe the content, screen and timing you want. The agent prepares the
content, publishes a playlist and checks the result. Node.js 20.11 or newer is
required. Agents use the bundled launcher; the separate developer-shell package
is not the agent installation path.

Grok (Grok Build), where `--trust` is required:
[Installation and troubleshooting](https://screenrig.ai/docs/start/) ·
[Player setup](https://screenrig.ai/docs/players/)

```console
grok plugin marketplace add https://github.com/screenrig/plugin.git
grok plugin install screenrig --trust
```

Node.js 20.11 or newer must be active. Read the ScreenRig package root from your
agent's plugin list (`claude plugin list --json`, `codex plugin list --json`) or
from `GROK_PLUGIN_ROOT`, `CLAUDE_PLUGIN_ROOT`, or `CODEX_PLUGIN_ROOT`, prepend
`$SCREENRIG_PLUGIN_ROOT/skills/screenrig/scripts` to `PATH` once, then confirm:

```sh
SCREENRIG_PLUGIN_ROOT="${GROK_PLUGIN_ROOT:-${CODEX_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT:-${PLUGIN_ROOT:-}}}}"
PATH="$SCREENRIG_PLUGIN_ROOT/skills/screenrig/scripts:$PATH"
screenrig --json version
```
The Player web app (PWA) is available today. Native platforms are not public
downloads or store listings.

That package-relative launcher is the entry point for every ScreenRig command.
It runs the bundled CLI from current `screenrig/cli` `main` and never fetches
mutable code.
## Content and usage

Installed agents compare the installed plugin and bundled CLI versions to the
published CalVer on GitHub `main` (`.claude-plugin/marketplace.json`
`plugins[0].version`) and refresh the plugin when either is stale. Skill text
and the bundled CLI update together. Do not install a global `screenrig` from a
package registry.
Use existing images or videos, generate a finished still, compose editable slides,
or publish live web pages and applications. Your agent can request a screenshot
to inspect the result.

## Four primitives

A playlist page carries `primitives`, and every one of them names its family in
a `primitive` field. There are four:

- `image` — a still the Player paints on the glass. Takes a selector.
- `video` — H.264, native decode. No codec fallback. Takes a selector.
- `iframe` — a page already on the web.
- `application` — a static directory packed by the CLI. Players sync, then
paint from disk.

`image` and `video` primitives pick their media with a `selector`, whose `by`
is `id`, `ids`, `all`, or `tag`. `iframe` and `application` take no selector:
an iframe carries its `src`, and an application pins a `release_id`.

A scene puts these four on one canvas. Choose by what the page is:

1. Existing image or video → `media upload`. No compose. No generate.
2. Anything presentable → `media generate` as the whole page. Put every fact
and all copy in the prompt. Do not compose a presentable poster as named
regions + cards. Do not generate atmosphere-only stills for later overlay.
3. Slide-deck-like experiences → local unbilled `compose catalog` and
`compose render`. Use compose for slide-deck-like pages. Animation is not
a reason to compose.
4. Live objects → write playlist primitives.

The agent can also screenshot a live screen to check its own work.

## Players

The Player web app (PWA) is available today. Install it on the device that
drives your screen, keep it in the foreground, then your agent puts the
content on the glass. Native platform names (Amazon Signage Stick, Apple TV,
Google Play, Linux, macOS, Raspberry Pi, Windows) describe product direction,
not public downloads or store listings.

## Compare

Choose how your screens get their content. Compare agent-operated signage, a
custom stack, and a dashboard-led product against the workflow you need.

| Decision | screenRIG | Build your own | Dashboard-led signage |
| --- | --- | --- | --- |
| Primary operator | An agent using the official plugin and bundled CLI. | The tools and workflows you build. | Usually a person using the vendor editor; agent support varies. |
| Content model | Images, video, web pages, and applications on a playlist canvas. | You define and maintain the model. | Templates, playlists, and integrations vary by vendor. |
| Infrastructure | Hosted control plane and content delivery. | Your team owns hosting, delivery, updates, and recovery. | The vendor operates its service. |
| Pricing basis | Account usage, with no per-screen subscription; tier limits apply. | Infrastructure costs plus engineering and operations. | Often screen subscriptions; check the vendor's current terms. |
| Verification | Screenshots, playback records, and account events. | You build the observability you need. | Device monitoring and reporting vary by product. |
| Best fit | Agent-operated signage and custom kiosk apps. | Specialized requirements that justify owning the stack. | Teams that want a visual editor and a human publishing workflow. |

Choose screenRIG when your agent should create or upload content, publish a
playlist, update the screen, and verify the result through one documented tool
surface.

## This repository

This is the canonical public marketplace source. It carries the ScreenRig skill
and one generated plugin containing the current `screenrig/cli` `main` CLI.

- `skills/screenrig/` and the root marketplace manifests are canonical.
- `components.lock.json` records the SHA-256 of the CLI tarball just packed.
That checksum is provenance of this build, not a freeze of which SHA to
fetch. Pack sibling `../cli` or current `screenrig/cli` `main`. Do not
refetch a pinned CLI SHA.
- `plugins/screenrig/` is generated. Change canonical inputs and rebuild; do not
edit it directly.
- CI packs `screenrig/cli` `main`, rebuilds and validates the bundle, scans the
public boundary, and publishes `screenrig-plugin.tar.gz`. Skill commands must
exist in the bundled binary.

```sh
python3 scripts/check-public-repo.py
```
There is no per-screen subscription. Account usage is free within reason until
1 January 2027; image generation is metered separately. See the
[rate card](https://screenrig.ai/pricing/) for allowances, charges and terms.

## More
[Features](https://screenrig.ai/features/) · [Compare](https://screenrig.ai/compare/) ·
[Documentation](https://screenrig.ai/docs/)

- [screenrig.ai](https://screenrig.ai/)
- [Features](https://screenrig.ai/features/)
- [Compare](https://screenrig.ai/compare/)
- [Docs](https://screenrig.ai/docs/)
- [Pricing](https://screenrig.ai/pricing/)
## Contributing

Report security issues through
[GitHub Private Vulnerability Reporting](https://github.com/screenrig/plugin/security/advisories/new);
see [SECURITY.md](SECURITY.md). The Apache-2.0 [LICENSE](LICENSE) covers this
public plugin and its bundled CLI, not other ScreenRig services or
repositories.
This repository contains the canonical skill and generated plugin distribution.
See [CONTRIBUTING.md](CONTRIBUTING.md) for source layout, regeneration and checks.
Report vulnerabilities using the [security policy](SECURITY.md).
The [Apache-2.0 license](LICENSE) covers this plugin and bundled CLI, not the hosted service.
17 changes: 17 additions & 0 deletions plugins/screenrig/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Plugin maintenance

For contributors maintaining the plugin. Customer installation is documented on
[Start](https://screenrig.ai/docs/start/).

`skills/screenrig/`, `build/plugin.json` and marketplace manifests are canonical.
`scripts/build-plugin.py` generates `plugins/screenrig/`; never edit that output
independently. Locally the builder packs sibling `../cli`; CI packs current CLI
main. `components.lock.json` records the resulting artifact's commit and hash,
not a commit to refetch.

Read [AGENTS.md](https://github.com/screenrig/plugin/blob/main/AGENTS.md) for generation and verification commands. Operational
skill text belongs in the entrypoint and task references; implementation details
belong here. The source and generated skill must travel with the same CLI bundle.

Skill validation checks command availability, references, launcher/version flow,
error handling and secret boundaries. It does not require marketing sentences.
Loading
Loading