Agent skill

Knowledge Browser Automation

by echoVic in echoVic/blade-code

Covers 原生 Playwright Browser Tool、Chromium 进程池、Session Context、页面与 ARIA snapshot/ref 权威、同源安全、诊断/截图和 Web Browser 面板投影。

MITAuto-check passedProductivity & Automation

Install Knowledge Browser Automation

skills CLI
$ npx skills add echoVic/blade-code --skill knowledge-browser-automation -a claude-code

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

GitHub CLI
$ gh skill install echoVic/blade-code knowledge-browser-automation --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/echoVic/blade-code.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.trae/knowledges/tool-and-automation-platform/browser-automation .claude/skills/knowledge-browser-automation && 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
knowledge-browser-automation
GitHub stars
180
Token cost
~2k tokens
SKILL.md length
437 words
Files
1
Skills in repo
38
Repo updated
First seen
Licence
MIT

At a glance

Covers 原生 Playwright Browser Tool、Chromium 进程池、Session Context、页面与 ARIA snapshot/ref 权威、同源安全、诊断/截图和 Web Browser 面板投影。

  • Tasks that involve Browser automation
  • SKILL.md covers Module Structure, Gotchas, Architecture and Decisions, plus 2 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md
  • Tasks that involve Accessibility

What it does

Knowledge Browser Automation is an agent skill from echoVic/blade-code. Covers 原生 Playwright Browser Tool、Chromium 进程池、Session Context、页面与 ARIA snapshot/ref 权威、同源安全、诊断/截图和 Web Browser 面板投影。 Navigate when: 修改 BrowserNavigate/Snapshot/Interact/Wait/Inspect/Page、浏览器安装、跨源阻断、页面并发、截图制品、Agent 浏览器可视化或资源回收。 Excludes: 被动 WebSearch/WebFetch(见 ../integration-and-workflow-tool-adapters/)、通用工具权限顺序(见 ../tool-execution-pipeline/)。 Keywords: BrowserProcessPool, SessionBrowserRuntime, BrowserSnapshotAuthority, BrowserSecurity, BrowserNavigate, BrowserInteract, ARIA ref, Chromium, Playwright.

Its SKILL.md is about 2k 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 Productivity & Automation, covering Browser automation, Accessibility and Browser testing. It works with Playwright. The repository describes itself as: AI-powered CLI coding agent with 20+ built-in tools, MCP support, and multi-model providers. The licence is MIT.

When your agent uses it

  • Tasks that involve Browser automation
  • Tasks that involve Accessibility
  • Tasks that involve Browser testing

Example prompts

  • “Use the knowledge-browser-automation skill to cover 原生 Playwright Browser Tool、Chromium 进程池、Session Context、页面与 ARIA snapshot/ref 权威、同源安全、诊断/截图和 Web…”
  • “/knowledge-browser-automation”

What it can do on your machine

Read from SKILL.md and the folder at commit 30f8684. 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

    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.

  • Network

    No URLs in SKILL.md.

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

  • Credentials

    Names no API keys, tokens, secrets or passwords.

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

Context cost

Knowledge Browser Automation loads about 2k tokens when it runs. Until then it costs about 134 tokens; SKILL.md has 437 words of instructions outside code blocks.

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

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 passed

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.

SKILL.md

The full file from echoVic/blade-code at commit 30f8684, republished under its MIT licence (© echoVic). 437 words, ~1,962 tokens.

Download SKILL.mdSave it as .claude/skills/knowledge-browser-automation/SKILL.md (or your agent's skills folder).
name
knowledge-browser-automation
description
Covers 原生 Playwright Browser Tool、Chromium 进程池、Session Context、页面与 ARIA snapshot/ref 权威、同源安全、诊断/截图和 Web Browser 面板投影。 Navigate when: 修改 BrowserNavigate/Snapshot/Interact/Wait/Inspect/Page、浏览器安装、跨源阻断、页面并发、截图制品、Agent 浏览器可视化或资源回收。 Excludes: 被动 WebSearch/WebFetch(见 ../integration-and-workflow-tool-adapters/)、通用工具权限顺序(见 ../tool-execution-pipeline/)。 Keywords: BrowserProcessPool, SessionBrowserRuntime, BrowserSnapshotAuthority, BrowserSecurity, BrowserNavigate, BrowserInteract, ARIA ref, Chromium, Playwright.

Module Structure

原生 Browser Tool 使用一个惰性进程级 Chromium 池,每个 Session 获取独立临时 BrowserContext。Agent 工具和 Web 用户测试浏览器都复用 SessionBrowserRuntime 契约,但拥有不同 runtime 实例;Web Preview iframe 仍是独立展示能力。

Directory Layout
  • packages/cli/src/browser/ — 安装检查、进程池、安全、快照权威、制品和 Session runtime
  • packages/cli/src/tools/builtin/browser/ — 六个 Agent 工具及有界结果封装
  • packages/cli/src/api/browserSchemas.ts — Web Browser 请求与共享结果类型
  • packages/cli/src/server/routes/browser.ts — Web 用户测试浏览器 API
  • packages/cli/src/server/WebBrowserSessionRegistry.ts — Web Session 对应的独立 runtime 注册表
  • packages/cli/web/src/components/preview/ — Preview/Test/External 面板
  • packages/cli/web/src/store/BrowserActivityStore.ts — Agent Browser tool 活动投影
Key Entry Points
  • BrowserProcessPool.acquire() in packages/cli/src/browser/BrowserProcessPool.ts — 惰性启动 Chromium 并分配 Context lease
  • SessionBrowserRuntime in packages/cli/src/browser/SessionBrowserRuntime.ts — 导航、观察、交互、等待、诊断与页面生命周期
  • BrowserSnapshotAuthority in packages/cli/src/browser/BrowserSnapshotAuthority.ts — 最新 snapshot/ref 的短期授权
  • createBrowserTools() in packages/cli/src/tools/builtin/browser/browserTools.ts — 将 runtime 暴露为六个 deferred 工具
  • BrowserRoutes() in packages/cli/src/server/routes/browser.ts — Web 测试模式的 HTTP 控制面

Gotchas

  • 六个 Browser 工具都没有 opt-in isRetrySafe,即使 Snapshot/Wait/Inspect 是 ReadOnly 也默认不可自动重放;浏览器断线、超时或动作结果不确定时必须由 Agent 重新观察后显式决定 (packages/cli/src/tools/builtin/browser/browserTools.ts, packages/cli/src/tools/core/createTool.ts)
  • BrowserInteract 每次尝试在 Playwright 动作前就使输入 snapshot 失效,无论动作成功、超时还是部分失败;同一 snapshotId/ref 不能用于第二个动作 (packages/cli/src/browser/SessionBrowserRuntime.ts, packages/cli/src/tools/builtin/browser/browserTools.ts)
  • 动作开始后的异常可能返回 actionApplied='unknown' 与 sideEffectsUncertain=true;此时不能盲目重试提交、点击或输入,必须先获取新快照检查实际页面状态 (packages/cli/src/browser/types.ts, packages/cli/src/browser/SessionBrowserRuntime.ts)
  • applied_observation_failed 是动作已完成的成功结果,只代表后续观察失败;把它当作动作失败重试会重复副作用 (packages/cli/src/browser/types.ts, packages/cli/src/tools/builtin/browser/browserTools.ts)
  • expectedOrigin 必须使用含有效端口的 canonical origin,例如 HTTPS 默认端口也归一为 :443;它必须同时匹配页面授权 origin、当前 origin 和 snapshot origin (packages/cli/src/browser/BrowserSecurity.ts, packages/cli/src/browser/SessionBrowserRuntime.ts)
  • 跨源顶层导航和 popup 在 route 层阻断;同源页面可加载跨源子资源,但跨源或 opaque sandbox iframe 的 ref 不能继承顶层授权 (packages/cli/src/browser/SessionBrowserRuntime.ts, git:7467bfc4)
  • popup 在 Frame 尚不可用时只能通过 opener/referrer 归属;多个候选导致归属不唯一时 fail closed,不能借用同源的另一个页面授权 (packages/cli/src/browser/SessionBrowserRuntime.ts, git:35e51f5a)
  • fill/type 会拒绝密码、OTP、卡号、安全码、token/key 等凭据控件;可访问名称过长或 aria-labelledby 名称不可确认时同样按敏感控件拒绝 (packages/cli/src/browser/BrowserSecurity.ts, packages/cli/src/browser/SessionBrowserRuntime.ts)
  • Download 永远取消并使发起交互返回 browser_download_blocked;截图才会进入私有 Session artifact store (packages/cli/src/browser/SessionBrowserRuntime.ts, packages/cli/src/browser/BrowserArtifactStore.ts)
  • BrowserWait 和 BrowserInspect 要求已有页面,断线或 reset 后不能隐式恢复;恢复入口只能是 Navigate、Snapshot 或 Page open (packages/cli/src/browser/SessionBrowserRuntime.ts, docs/superpowers/specs/2026-08-25-native-browser-tool-design.md)
  • Chromium 不会随 npm 安装自动下载;缺失或沙箱启动失败统一返回 browser_not_installed,安装必须显式执行 blade browser install (packages/cli/src/browser/BrowserInstallation.ts, packages/cli/src/browser/BrowserProcessPool.ts)
  • Agent Browser、Web 用户 Test Browser 与 Preview iframe 相互独立;在一个表面导航不会共享另一个 runtime 的 cookies、页面或 snapshot ID (packages/cli/src/agent/runtime/SessionRuntime.ts, packages/cli/src/server/WebBrowserSessionRegistry.ts, packages/cli/web/src/components/preview/BrowserPreview.tsx)

Architecture

  • BrowserProcessPool 是唯一 Chromium owner,启动 single-flight,最多 8 个 Context;最后一个 lease 释放时立即关闭浏览器,意外 disconnect 递增 generation 并使旧 lease 失效 (packages/cli/src/browser/BrowserProcessPool.ts)
  • 每个 SessionBrowserRuntime 最多 8 页、32 个排队操作,并通过 FIFO gate 串行所有六类操作;工具层的 parallelism='exclusive' 与 runtime gate 共同覆盖不同 executor 共享同一 Session runtime 的情况 (packages/cli/src/browser/BrowserOperationGate.ts, packages/cli/src/tools/builtin/browser/browserTools.ts)
  • snapshot authority 绑定 page ID、page generation、origin、snapshot ID 和每个 ref 的 role/name fingerprint;交互前再抓 fresh ARIA snapshot 比对,拒绝 DOM 漂移和 ref 重用 (packages/cli/src/browser/BrowserSnapshotAuthority.ts, packages/cli/src/browser/SessionBrowserRuntime.ts)
  • BrowserNavigate 临时授权一个目标 origin,commit 后才固化为页面授权;失败时只在页面仍停留原授权 origin 时保留旧授权,否则清空 (packages/cli/src/browser/SessionBrowserRuntime.ts)
  • Browser metadata 使用显式字段投影,而页面主体放在 <browser_data trust="untrusted"> 内并限制总量;Web 活动 Store 只解析白名单中的页面、origin、URL、错误和交互几何 (packages/cli/src/tools/builtin/browser/browserTools.ts, packages/cli/web/src/store/BrowserActivityStore.ts)
  • 截图使用 SHA-256 内容寻址的私有 Session 存储,单件 8 MiB、每 Session 32 件/64 MiB;ACP 风格调用不暴露本地路径 (packages/cli/src/browser/BrowserArtifactStore.ts, packages/cli/src/tools/artifacts/SessionArtifactStore.ts)
Show full SKILL.md (130 more words)Show less

Decisions

  • Browser 作为原生 ToolRegistry 能力而非 MCP,是为了完整复用权限、Hook、准入、取消、会话持久化和跨表面投影 (docs/superpowers/specs/2026-08-25-native-browser-tool-design.md, git:90fad7fe)
  • 采用 ARIA snapshot + opaque ref,不开放 CSS/XPath/evaluate;这限制模型只能操作最新观察中明确出现的控件 (packages/cli/src/browser/BrowserSnapshotAuthority.ts, packages/cli/tests/security/browser-tool-boundary.test.ts)
  • Context 是临时且 Session 隔离的,不恢复 cookies/storage;一个浏览器进程只用于资源共享,不构成跨 Session 页面状态共享 (packages/cli/src/browser/BrowserProcessPool.ts, packages/cli/tests/integration/browser-tool-chromium.test.ts)
  • 浏览器进程只继承显式 OS 环境白名单并强制 chromiumSandbox: true,Provider 凭据和 Session 环境不进入 Chromium (packages/cli/src/browser/BrowserInstallation.ts, packages/cli/src/browser/BrowserProcessPool.ts)

Patterns

  • Navigate/Interact/Page 是 Execute,Snapshot/Wait/Inspect 是 ReadOnly,但六者都 exclusive;Plan 模式可观察现有页面,却不能导航、交互或管理页面 (packages/cli/src/tools/builtin/browser/browserTools.ts, packages/cli/src/tools/registry/ToolRegistry.ts)
  • BrowserPage(open) 只创建 about:blank,新 HTTP(S) 目的地始终经 BrowserNavigate 形成独立权限签名 (packages/cli/src/browser/SessionBrowserRuntime.ts, packages/cli/src/tools/builtin/browser/browserTools.ts)
  • URL 投影保留 query key 但把所有值替换为 [redacted],并移除 fragment;诊断只保留方法、资源类型、状态和净化 URL,不记录 headers/body/cookies (packages/cli/src/browser/BrowserSecurity.ts, packages/cli/src/browser/SessionBrowserRuntime.ts)
  • Web 只把无序号的 live tool.start/tool.result 映射为 Agent Browser 活动,durable replay 不会重新播放鼠标或 loading 状态 (packages/cli/web/src/store/session/handlers/eventHandlers.ts, packages/cli/web/src/store/BrowserActivityStore.ts)

Resource And Failure Bounds

  • ARIA snapshot 上限 48 KiB、默认深度 12/最大 20;截断按完整 UTF-8 行完成,重复 ref 直接使 snapshot 失效 (packages/cli/src/browser/constants.ts, packages/cli/src/browser/BrowserSnapshotAuthority.ts)
  • console、page-error、network 各保留最新 256 项,单次最多返回 100 项且总工具输出不超过 64 KiB;容量耗尽不驱逐其他 Session (packages/cli/src/browser/constants.ts, packages/cli/src/browser/SessionBrowserRuntime.ts)
  • Runtime reset/disconnect 会递增代际并清空页面与 snapshot 投影;dispose 先关闭 gate、取消 queued/active 操作,再释放 Context lease (packages/cli/src/browser/SessionBrowserRuntime.ts)
  • Web 路由把未安装/断线/已释放映射为 503、Context 容量映射为 429、无效参数映射为 400,其余状态冲突映射为 409 (packages/cli/src/server/routes/browser.ts)

© echoVic, MIT. 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 .trae/knowledges/tool-and-automation-platform/browser-automation of echoVic/blade-code.

Open the folder on GitHubat commit 30f8684

Compare with similar skills

Knowledge Browser Automation 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.

Knowledge Browser Automation compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Knowledge Browser Automation this skillechoVic/blade-code180—~2kAutomated safety check: PassMIT
Quality Engineering Playwright CLIHoangNguyen0403/agent-skills-standard570—~1.2kAutomated safety check: PassMIT
Vitemagnus919/agent-skills111—~1.5kAutomated safety check: NotesMIT
Playwright Testingchongdashu/vibejam-starter-pack149—~2.2kAutomated safety check: PassNone
Berth Browsersean-brydon/berthd107—~779Automated safety check: PassMIT
Agentic Browser Testingpetrkindlmann/qa-skills163—~4.5kAutomated safety check: PassMIT

Similar skills

  • Quality Engineering Playwright CLI

    HoangNguyen0403/agent-skills-standard

    Standardizes token-efficient browser automation via playwright-cli, with Playwright MCP as the fallback driver.

    570 GitHub stars~1.2k tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Vite

    magnus919/agent-skills

    Operate Vite projects: inspect versions and configuration, run bounded development and production builds, diagnose dependency and asset failures, and configure environment-aware frontend delivery.

    111 GitHub stars~1.5k tokensUpdated yesterday
    Frontend & DesignAuto-check: notes
  • Playwright Testing

    chongdashu/vibejam-starter-pack

    Plan, implement, and debug frontend tests: unit/integration/E2E/visual/a11y.

    149 GitHub stars~2.2k tokensUpdated 5 mo ago
    Testing & QAAuto-check passed
  • Berth Browser

    sean-brydon/berthd

    Use your worktree's own page in a headless browser on the box — open it, read a compact snapshot with @refs, click, fill, press keys, wait, take a screenshot to a file, and read console errors —…

    107 GitHub stars~779 tokensUpdated today
    Productivity & AutomationAuto-check passed
  • Agentic Browser Testing

    petrkindlmann/qa-skills

    Goal-driven E2E testing where a browser agent (Playwright MCP / computer-use) reads a natural-language goal and explores the app via the accessibility tree to assert outcomes — no pre-written script.

    163 GitHub stars~4.5k tokensUpdated 3 mo ago
    Testing & QAAuto-check passed
  • Playwright

    EliasOulkadi/shokunin

    Browser automation, web scraping, E2E testing, and visual regression with Playwright.

    114 GitHub stars~3.6k tokensUpdated 2 days ago
    Testing & QAAuto-check: notes

More from echoVic/blade-code

All 38 skills in this repo
  • Base64 Parser

    echoVic/blade-code

    Base64 编解码工具,支持编码/解码文本、JSON、二进制文件,自动检测格式,支持批量处理. An agent skill from echoVic/blade-code.

    180 GitHub stars~545 tokensUpdated 10 days ago
    Auto-check: notes
  • Code Review

    echoVic/blade-code

    Review frontend code for best practices, bugs, and improvements.

    180 GitHub stars~377 tokensUpdated 10 days ago
    Auto-check: notes
  • GitHub Explorer

    echoVic/blade-code

    Explore and summarize popular GitHub projects. An agent skill from echoVic/blade-code.

    180 GitHub stars~434 tokensUpdated 10 days ago
    Auto-check passed
  • 覆盖 Session 级 LSP 配置快照、stdio 进程、文档同步、语义查询、诊断回注、崩溃恢复 和子 Session 继承。进入条件:新增语言服务器、修改 LSP 工具、排查诊断缺失/重复、 处理 worktree 或 ACP 差异、修复进程泄漏或 transport 代际问题。不包含:VS Code 扩展桥接(见…

    180 GitHub stars~1.9k tokensUpdated 10 days ago
    Auto-check passed
  • 覆盖 SkillRegistry、SKILL.md 延迟加载、自定义命令 Markdown 解析、来源覆盖、插件 命名空间、Session 快照和模型/用户调用入口。进入条件:新增 Skill 或命令字段、调整 发现优先级、调试 /command 或 Skill 工具、修改 Prompt 元数据或消费者集成。不包含: 插件安装生命周期(见…

    180 GitHub stars~2.1k tokensUpdated 10 days ago
    Auto-check passed
  • Covers 领域能力如何包装成内置工具、getBuiltinTools 的 Session 依赖注入、ToolSearch 延迟激活,以及 Goal/Task/Team/Plan/Skill/LSP/MCP/Web/Config/Worktree 适配边界。

    180 GitHub stars~2.1k tokensUpdated 10 days ago
    Auto-check passed

Works with

Questions about Knowledge Browser Automation

What does Knowledge Browser Automation do?

Covers 原生 Playwright Browser Tool、Chromium 进程池、Session Context、页面与 ARIA snapshot/ref 权威、同源安全、诊断/截图和 Web Browser 面板投影。. Knowledge Browser Automation is an agent skill from echoVic/blade-code./tool-execution-pipeline/)。 Keywords: BrowserProcessPool, SessionBrowserRuntime, BrowserSnapshotAuthority, BrowserSecurity, BrowserNavigate, BrowserInteract, ARIA ref, Chromium, Playwright.

When should I use Knowledge Browser Automation?

Knowledge Browser Automation fits situations like: tasks that involve Browser automation; tasks that involve Accessibility; tasks that involve Browser testing.

How do I install Knowledge Browser Automation in Claude Code?

Run `npx skills add echoVic/blade-code --skill knowledge-browser-automation -a claude-code`. Or copy the skill folder (.trae/knowledges/tool-and-automation-platform/browser-automation in echoVic/blade-code) into .claude/skills/knowledge-browser-automation in your project. Claude Code loads it when a task matches its description.

How do I install Knowledge Browser Automation in Codex?

Run `npx skills add echoVic/blade-code --skill knowledge-browser-automation -a codex`. Or copy the skill folder (.trae/knowledges/tool-and-automation-platform/browser-automation in echoVic/blade-code) into .agents/skills/knowledge-browser-automation in your project. Codex loads it when a task matches its description.

Can I use Knowledge Browser Automation 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 echoVic/blade-code --skill knowledge-browser-automation -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/knowledge-browser-automation, .gemini/skills/knowledge-browser-automation, .github/skills/knowledge-browser-automation and .opencode/skills/knowledge-browser-automation in your project.

What does Knowledge Browser Automation need to run?

SKILL.md names no scripts, command-line tools or credentials: Knowledge Browser Automation is instructions for the agent only.

Does Knowledge Browser Automation access the network?

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.

Is Knowledge Browser Automation safe to install?

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.

What licence does Knowledge Browser Automation use?

Knowledge Browser Automation is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Knowledge Browser Automation use?

About 2k tokens (SKILL.md is roughly 7.8k 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 Knowledge Browser Automation?

Skills that share tags, products or a category with Knowledge Browser Automation: Quality Engineering Playwright CLI (HoangNguyen0403/agent-skills-standard, 570 stars), Vite (magnus919/agent-skills, 111 stars), Playwright Testing (chongdashu/vibejam-starter-pack, 149 stars) and Berth Browser (sean-brydon/berthd, 107 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Knowledge Browser Automation?

echoVic (a GitHub user) maintains it in echoVic/blade-code, which has 180 GitHub stars. The repository holds 38 skills in this directory. The repository was last updated on September 27, 2026.

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