Ade
landing-ai/ade-cli
Parse documents and extract schema-shaped data with the ADE (Agentic Document Extraction) v2 APIs through the ade CLI.
A skill your agent uses when showing something would beat describing it — status across many items, a number that changed, a comparison, a timeline, a pipeline, a distribution, ADE's own lanes…
$ npx skills add arul28/ADE --skill ade-scene -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install arul28/ADE ade-scene --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/arul28/ADE.git skills-src && mkdir -p .claude/skills && cp -r skills-src/apps/desktop/resources/agent-skills/ade-scene .claude/skills/ade-scene && 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 "ade-scene" agent skill from https://github.com/arul28/ADE/tree/main/apps/desktop/resources/agent-skills/ade-scene into .claude/skills/ade-scene/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ade-scene", 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/arul28/ADE/tree/main/apps/desktop/resources/agent-skills/ade-sceneType 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 arul28/ADE --skill ade-scene -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install arul28/ADE ade-scene --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/arul28/ADE.git skills-src && mkdir -p .agents/skills && cp -r skills-src/apps/desktop/resources/agent-skills/ade-scene .agents/skills/ade-scene && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ade-scene" agent skill from https://github.com/arul28/ADE/tree/main/apps/desktop/resources/agent-skills/ade-scene into .agents/skills/ade-scene/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ade-scene", 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 arul28/ADE --skill ade-scene -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install arul28/ADE ade-scene --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/arul28/ADE.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/apps/desktop/resources/agent-skills/ade-scene .cursor/skills/ade-scene && 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 "ade-scene" agent skill from https://github.com/arul28/ADE/tree/main/apps/desktop/resources/agent-skills/ade-scene into .cursor/skills/ade-scene/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ade-scene", 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/arul28/ADE.git --path apps/desktop/resources/agent-skills/ade-scene--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 arul28/ADE --skill ade-scene -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install arul28/ADE ade-scene --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/arul28/ADE.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/apps/desktop/resources/agent-skills/ade-scene .gemini/skills/ade-scene && 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 "ade-scene" agent skill from https://github.com/arul28/ADE/tree/main/apps/desktop/resources/agent-skills/ade-scene into .gemini/skills/ade-scene/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ade-scene", 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 arul28/ADE ade-sceneInstalls 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 arul28/ADE --skill ade-scene -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/arul28/ADE.git skills-src && mkdir -p .github/skills && cp -r skills-src/apps/desktop/resources/agent-skills/ade-scene .github/skills/ade-scene && 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 "ade-scene" agent skill from https://github.com/arul28/ADE/tree/main/apps/desktop/resources/agent-skills/ade-scene into .github/skills/ade-scene/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ade-scene", 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 arul28/ADE --skill ade-scene -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install arul28/ADE ade-scene --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/arul28/ADE.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/apps/desktop/resources/agent-skills/ade-scene .opencode/skills/ade-scene && 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 "ade-scene" agent skill from https://github.com/arul28/ADE/tree/main/apps/desktop/resources/agent-skills/ade-scene into .opencode/skills/ade-scene/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ade-scene", 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.
ade-sceneA skill your agent uses when showing something would beat describing it — status across many items, a number that changed, a comparison, a timeline, a pipeline, a distribution, ADE's own lanes…
Ade Scene is an agent skill from arul28/ADE. Use this skill when showing something would beat describing it — status across many items, a number that changed, a comparison, a timeline, a pipeline, a distribution, ADE's own lanes, chats or PRs. Emit a fenced scene block of ordinary HTML, CSS and JS and ADE renders it as a live, interactive view inside the transcript. Check it first with ade scene preview. Use ade-mosaic instead when you need an ANSWER from the user.
Its SKILL.md is about 2.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
The licence is AGPL-3.0.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit fbbd974. 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.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From 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.
Ade Scene loads about 2.6k tokens when it runs. Until then it costs about 110 tokens; SKILL.md has 1,248 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 arul28/ADE at commit fbbd974, republished under its AGPL-3.0 licence (© arul28). 1,248 words, ~2,599 tokens.
.claude/skills/ade-scene/SKILL.md (or your agent's skills folder).Emit a fenced code block with language scene containing plain HTML. ADE renders
it in a sandboxed frame with its own origin and its own Content-Security-Policy,
inline in your reply, on the reply's own text column and in ADE's font and
colors. You write real HTML, CSS and JavaScript — there is no schema and no
component list to stay inside.
A scene shows. A mosaic asks. Never draw your own Approve button: ADE has
native surfaces for permission, and a card that approves itself is not a
confirmation. Reach for ade-mosaic whenever you need a decision back.
Most replies need no scene. Add one only when a picture makes the answer clearly faster to read than prose would, and only one per reply.
Good: several PRs and their check states; status across lanes or chats (use live data); a count or metric that changed; CI stages and where it failed; a comparison of many items; a trend or distribution; anything a reader would want to hover, zoom or click through.
Bad: one number or one fact (say it), a short answer, a paragraph (write it),
a list a bullet list handles, anything you need answered (use ade-mosaic),
or a wall of text in a box (that is just text, further away). When unsure,
skip it.
Scenes cost the reader nothing to wait for: the reply streams on while the scene draws, and a preview takes a second or two.
/tmp/<name>.html), body only or a whole fence.ade scene preview /tmp/<name>.html --text. It renders the scene exactly as
the chat will, in a hidden window, and prints a screenshot path and every
problem: script errors, blocked requests, a scene that never settles, and
source mistakes the policy turns into blanks.ok only means nothing threw. Check
the layout (columns lined up, nothing cut off or overlapping, text
readable). Fix and preview again until it is right. Check --theme light if colors matter; --width 980 for wide panes.Do not skip the preview for anything non-trivial: a scene that throws is a blank box in the user's transcript.
The first line may carry a title and the live data the scene wants. Everything after it is your markup.
```scene
<!-- @scene title="Merged pull requests" -->
<style>
.n { font-size: 48px; font-weight: 600; letter-spacing: -.03em; }
.row { display: grid; grid-template-columns: 64px 1fr auto; gap: 14px;
padding: 8px 0; border-bottom: 1px solid var(--border); opacity: 0; }
.row:hover { background: var(--surface); }
</style>
<div class="n" id="count">0</div>
<a class="row" data-row href="ade://pr/acme/app/1237"><span>#1237</span><span>Persistent director</span><span>passed</span></a>
<script>
ade.countUp("#count", 3);
document.querySelectorAll("[data-row]").forEach(function (row, i) {
ade.animate(row, [{ opacity: 0, transform: "translateY(8px)" }, { opacity: 1, transform: "none" }],
{ duration: 460, delay: 200 + i * 110 });
});
ade.ready();
</script>
```No padding is added around your markup: content starts on the reply's left
edge. Draw your own card (background: var(--surface); border: 1px solid var(--border); border-radius: 10px) when you want one.
window.ade is injected before your code runs:
| Member | What it does |
|---|---|
ade.data | The live ADE data the scene asked for (see below), or null. |
ade.on("data", fn) | Called with each new data snapshot, and at once if one already arrived. |
ade.on("theme", fn) | Called when the user switches ADE's theme. The CSS variables already changed. |
ade.theme | ADE's resolved palette. Also available as CSS variables. |
ade.open(url) | Opens an ade:// deeplink in ADE, or an http(s) page in ADE's browser. Plain <a href> links do the same. Works only in answer to a click in the scene. |
ade.reducedMotion | True when the user asked for less motion. |
ade.restored | True when the scene already played once and is being brought back; ade.animate and ade.countUp skip to their end state then. |
ade.animate(target, keyframes, options) | Web Animations, collapsed to the end state under reduced motion or restore. |
ade.countUp(target, to, { from, duration, decimals }) | Counts a number up. |
ade.resize() | Re-measures the scene and asks the host for the new height. Call it after you change the content's size. |
ade.ready() | Call it when your first paint is done. |
CSS variables, already set on :root and kept current when the theme changes:
--bg, --surface, --border, --fg, --fg-muted, --accent, --success,
--warning, --danger, --font-sans, --font-mono, --font-size. Use them
and the scene looks like the rest of ADE in every theme, light ones included.
--font-sans is ADE's Geist and --font-mono its JetBrains Mono.
Ask on the marker line, and the scene stays true after the turn ends: scrolled back into view tomorrow, it shows tomorrow's lanes.
<!-- @scene title="Lanes" data="lanes,prs" -->| Source | Each item |
|---|---|
lanes | id, name, branch, base, primary, color, ahead, behind, dirty, changedFiles, running, awaitingInput, sessions, url |
sessions | id, title, laneId, laneName, tool, status, startedAt, endedAt, url |
prs | number, title, state, checks, review, laneId, additions, deletions, updatedAt, githubUrl, url |
url is an ade:// deeplink: put it in an <a href> (or pass it to
ade.open) and a click opens that lane, chat or PR in ADE. The snapshot
{ at, lanes?, sessions?, prs? } arrives after load and again when it changes,
so render from ade.on("data", render), and draw an empty state until the
first one arrives.
Use live data instead of typing ADE's numbers in. Asking for data= and
then hardcoding values you looked up is the worst of both: the numbers are
stale tomorrow and wrong if your lookup was. Start from this and restyle it:
```scene
<!-- @scene title="Lanes" data="lanes,prs" -->
<style>
.row { display: grid; grid-template-columns: 1fr auto auto auto; gap: 16px; align-items: center;
padding: 8px 0; border-bottom: 1px solid var(--border); color: var(--fg); text-decoration: none; }
.row:hover { background: var(--surface); }
.m { color: var(--fg-muted); font-size: 12px; } .n { font-family: var(--font-mono); font-size: 12px; }
</style>
<div id="rows" class="m">Loading lanes…</div>
<script>
function esc(s) { return String(s).replace(/[&<>"]/g, function (c) { return "&#" + c.charCodeAt(0) + ";"; }); }
ade.on("data", function (d) {
var prs = d.prs || [];
document.getElementById("rows").innerHTML = (d.lanes || []).map(function (l) {
var pr = prs.filter(function (p) { return p.laneId === l.id; })[0];
return '<a class="row" href="' + l.url + '"><span>' + esc(l.name) + ' <span class="m">' + esc(l.branch) + '</span></span>'
+ '<span class="n">+' + l.ahead + ' −' + l.behind + '</span>'
+ '<span class="n" style="color:var(' + (l.dirty ? '--warning' : '--success') + ')">' + (l.dirty ? 'dirty' : 'clean') + '</span>'
+ '<span class="n">' + (pr ? '#' + pr.number + ' ' + esc(pr.state) : 'no PR') + '</span></a>';
}).join("") || "No lanes.";
ade.resize();
});
ade.ready();
</script>
```ade scene preview sends a live-data scene the same snapshot the chat will,
so the preview shows real lanes, chats and PRs.
connect-src 'none': no fetch, no XHR, no WebSocket, no
remote fonts, no remote images, no <script src>. Put the data in the markup
or ask for live data. Images must be data: or blob: URLs.localStorage, sessionStorage, indexedDB and cookies
throw in the sandbox. Keep state in variables.top, parent, opener, frames or self. In a
sandboxed frame those are the window's own, and touching them throws.
var top = [] breaks the whole script. Rename them.allow-same-origin. ade.open and the data feed are the only bridges.A scene is live while it is on screen: hovers, toggles, zoom and links keep working in scrollback. Off screen for a few seconds, it is swapped for a still picture of itself, and swapped back when it returns (restored: no replayed entrance). While the reader scrolls, they see the stills; a scene comes alive where they stop.
When a scene has settled and the reader's pointer is elsewhere, it idles:
endless CSS and SVG animations pause and requestAnimationFrame runs a few
times a second, until the pointer, a key or new data wakes it. So a looping
spinner costs nothing while nobody looks at it, and a canvas animation should
read well at its idle frame. Do not depend on setInterval loops; use
requestAnimationFrame or CSS so the idle rules apply.
The still is taken once, when the scene first settles fully on screen: no Web Animation or CSS animation running and no DOM change for 600 ms (endless loops do not count), or 4 seconds after load. Make the scene readable when it stops moving. A scene whose meaning depends on an animation the user has to catch is meaningless tomorrow.
Keep it under roughly 500 lines of markup. Past that it is a document, not a view. The hard cap is 96,000 source bytes. Over it ADE renders your code as highlighted text instead of a view. Scenes can be up to 960 px tall in the transcript (taller ones scroll inside), and the reader can expand any scene to a full-window view.
© arul28, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in apps/desktop/resources/agent-skills/ade-scene of arul28/ADE.
Open the folder on GitHubat commit fbbd974
Ade Scene 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 |
|---|---|---|---|---|---|---|
| Ade Scene this skillarul28/ADE | 114 | — | ~2.6k | Automated safety check: Pass | AGPL-3.0 | |
| Adelanding-ai/ade-cli | 2.4k | — | ~2.4k | Automated safety check: Pass | Apache-2.0 | |
| Scene Menu BarPostHog/posthog | 40k | — | ~3.2k | Automated safety check: Pass | Custom licence | |
| Scenesautonomous-ai/openharness | 1.1k | — | ~4.7k | Automated safety check: Pass | MIT | |
| Scene Establishing-Shot Promptchatfire-AI/huobao-drama | 16k | — | ~378 | Automated safety check: Pass | Custom licence | |
| Horizontal Scroll ScenesMengTo/Skills | 6.7k | — | ~2.5k | Automated safety check: Pass | MIT |
landing-ai/ade-cli
Parse documents and extract schema-shaped data with the ADE (Agentic Document Extraction) v2 APIs through the ade CLI.
PostHog/posthog
Conventions for adding or editing the SceneMenuBar above a scene's <SceneTitleSection.
autonomous-ai/openharness
A skill your agent uses when working with Phaser 4 scenes. An agent skill from autonomous-ai/openharness.
chatfire-AI/huobao-drama
Writes the final image prompt for a clear wide establishing shot of an empty scene, fixing foreground, midground, background, exits, floor, walls and key furnishings.
MengTo/Skills
Build scene-by-scene chapters that advance left to right on one fixed stage while the user scrolls vertically, with native scroll as the only input.
jtydhr88/screenwriting-skills
Scene and sequence craft (场景/段落/细节/道具/悬念/情趣) — merged from Robert McKee's scene design and five-step scene analysis (value turn, beats, text/subtext, turning points, pacing, image systems), McKee's…
arul28/ADE
A skill your agent uses when you need to run or drive a local Electron/desktop app and capture what it does — launch it or attach to a running renderer, read its logs or answer its terminal prompts…
arul28/ADE
Iteratively optimize an ADE tab's CPU/memory/IPC/render performance.
arul28/ADE
A skill your agent uses for any browser behavior at all — opening a URL, checking a localhost page, clicking or filling a form, logging in, screenshotting, inspecting the DOM, or verifying a page…
arul28/ADE
A skill your agent uses when an agent needs to mint, share, or open ADE deeplinks (lane, work session, file, commit, artifact, branch, PR, Linear issue) so users — or the agent itself — can jump…
arul28/ADE
A skill your agent uses when you need to run a chat, a CLI session, or a subagent on a specific setup — any model you pay for inside any harness (e.g.
arul28/ADE
A skill your agent uses when creating, inspecting, syncing, committing, pushing, archiving, or rebasing ADE lanes and lane worktrees through ade lanes and ade git.
A skill your agent uses when showing something would beat describing it — status across many items, a number that changed, a comparison, a timeline, a pipeline, a distribution, ADE's own lanes…. Ade Scene is an agent skill from arul28/ADE. Use this skill when showing something would beat describing it — status across many items, a number that changed, a comparison, a timeline, a pipeline, a distribution, ADE's own lanes, chats or PRs.
Ade Scene fits situations like: showing something would beat describing it — status across many items; A number that changed.
Run `npx skills add arul28/ADE --skill ade-scene -a claude-code`. Or copy the skill folder (apps/desktop/resources/agent-skills/ade-scene in arul28/ADE) into .claude/skills/ade-scene in your project. Claude Code loads it when a task matches its description.
Run `npx skills add arul28/ADE --skill ade-scene -a codex`. Or copy the skill folder (apps/desktop/resources/agent-skills/ade-scene in arul28/ADE) into .agents/skills/ade-scene 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 arul28/ADE --skill ade-scene -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ade-scene, .gemini/skills/ade-scene, .github/skills/ade-scene and .opencode/skills/ade-scene in your project.
SKILL.md names no scripts, command-line tools or credentials: Ade Scene is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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.
Ade Scene is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.6k tokens (SKILL.md is roughly 10k 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 Ade Scene: Ade (landing-ai/ade-cli, 2.4k stars), Scene Menu Bar (PostHog/posthog, 40k stars), Scenes (autonomous-ai/openharness, 1.1k stars) and Scene Establishing-Shot Prompt (chatfire-AI/huobao-drama, 16k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
arul28 (a GitHub user) maintains it in arul28/ADE, which has 114 GitHub stars. The repository holds 28 skills in this directory. The repository was last updated on October 8, 2026.
Source: arul28/ADE on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.