anthropics/skills180kwebapp-testing
Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
浏览器自动化
Use when the user asks the openkb chat to make a deck / slide presentation / PPT / slides / 演示稿 / 幻灯片 from their compiled KB content AND wants a dark, high-tech, neon / glow / glassmorphism look (赛博 / 科技风 / 暗色 / 霓虹 / 炫酷). Generates a polished single-file HTML deck in the Aurora Glass visual direction (near-black background, teal/sky/magenta/amber neon accents, glassmorphism panels, aurora gradient atmosphere) — opened in a browser, full-screened, shared. For the warm, printed, serif look use openkb-deck-editorial instead. Does NOT apply to generating skills (`openkb skill new`), research reports, or scrolling long-form documents.
把这段话发给 Claude Code、Codex 或 Cursor。智能体会先检查安全性,你确认后才安装。
读取 https://funcoding.ai/skills/yuezhiai/jonex/openkb-deck-neon/install.md ,按里面的步骤帮我安装这个 Skill。
You are designing a presentation, not writing a research report. Each slide carries one idea. In this visual direction, light, color and glow organize the slide — dark canvas holds it, neon points the eye, glass adds depth.
The user typed something like "make a deck about X" (and asked for a dark /
neon / 科技 look) inside openkb chat. You have wiki-read tools in your normal
tool set, plus a write_file tool that can write under output/**, plus a
tool to read this SKILL.md and files in skills/openkb-deck-neon/ if needed.
Pick a kebab-case slug (e.g. okf-pitch) and write the output to
output/decks/<slug>/index.html.
Exactly one file: output/decks/<slug>/index.html.
It must be self-contained: NO external <link rel="stylesheet">, NO
external <script src>, NO remote <img>, and NO web fonts (no Google
Fonts link — that is an external link and breaks self-containment). All CSS in
one inline <style>; keyboard-nav JS in one inline <script> at end of
<body> (no scaling script needed — CSS fills the viewport). Use the local font stacks in §Type system — do not reach for Inter,
Chakra Petch, Orbitron, or any fonts.googleapis.com import.
The body is a sequence of <section class="slide" data-type="..."> blocks;
each data-type is one of the 7 values in §Slide grammar. Keyboard nav:
← / → move between slides, F toggles fullscreen, P triggers print.
Use this fixed design system. Do not improvise nearby colors, do not add a fifth accent hue, do not bring in emojis. Glow and gradient are allowed here (unlike the editorial skill) — but they are seasoning, not the meal.
:root {
--bg: #080b11; /* near-black blue — the canvas, never pure #000 */
--bg-elev: #0f141d; /* raised surface / slide inner */
--ink: #eef2f7; /* primary text — body copy uses THIS, not muted */
--soft: #aeb8c7; /* secondary text */
--muted: #69748a; /* labels / folio / metadata */
--line: rgba(255,255,255,.09); /* hairline borders */
--glass: rgba(255,255,255,.04); /* glassmorphism fill */
--teal: #2dd4bf; /* PRIMARY accent */
--sky: #38bdf8; /* secondary accent */
--magenta: #e879f9; /* tertiary accent */
--amber: #f6b94b; /* highlight / numbers-in-code only */
}
These 4 neon hues + the neutrals are the only colors. No purple-on-white gradients, no rainbow, no per-slide recoloring.
--font-display: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto,
"PingFang SC", "Microsoft YaHei", sans-serif; /* heavy weights */
--font-mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas,
monospace; /* labels, numbers, code, kickers */
Display titles use --font-display at weight 800 with letter-spacing:-.02em.
The tech character here comes from mono for every label / number / kicker /
code, not from a fancy downloaded display face.
Type scale — use clamp() so type scales with the viewport (fixed px look tiny
on a 2560px screen). vw drives the middle value; the rem caps keep it sane:
--type-display: clamp(2.8rem, 5.2vw, 5.5rem) / 1.05 — cover/chapter titles--type-title: clamp(1.9rem, 3.2vw, 3rem) / 1.12 — normal slide titles--type-body: clamp(1.05rem, 1.4vw, 1.4rem) / 1.6 — body copy (var(--ink))--type-quote: clamp(1.6rem, 2.6vw, 2.2rem) / 1.35 — pull quotes--type-label: size clamp(.66rem,.8vw,.8rem), letter-spacing:.22em, uppercase, mono — label tracksradial-gradients in teal / sky / magenta / amber,
low alpha (.10–.16), filter: blur(14px). Positioned off the title.feTurbulence noise data-URI at opacity:.04
(data-URI is inline, NOT an external image — allowed).radial-gradient background, alpha < .06.These three layers are what stop the dark background from looking flat/cheap.
clamp() sizing adapt to any window ratio:
html,body{height:100%;margin:0;overflow:hidden;background:var(--bg)}
.slide{position:fixed;inset:0;display:none;flex-direction:column;
justify-content:center;
padding:clamp(40px,5vh,72px) clamp(56px,5vw,128px)}
.slide.active{display:flex}
No scaling/transform tricks — CSS alone fills the viewport. On an ultrawide
window the slide is simply wider than 16:9; content reflows and the dark
background + aurora bleed to all four edges — never a centered card with dark
side-bands. One slide visible at a time; ← / → swap the active slide, F
fullscreen, P print (they do not scroll)..slide, which is the whole window). Inner
padding uses the clamp() values above so content breathes on any size.overflow:hidden + justify-content:center, a slide taller than the window
is clipped at BOTH top and bottom and is unreachable. Stay within the
bullet/word caps (§Failure modes), lean on the vh terms in the type scale so
text shrinks on short viewports, and if a slide would overflow, CUT content —
never let it clip.teal → sky → magenta, with box-shadow:0 0 14px of --teal. This is the
deck's signature — present on every slide.N / Total, right = source short label.--glass fill + backdrop-filter:blur(8px) + 1px --line border +
subtle inset highlight) is for compare columns and data cards only.background-clip:text) is reserved for
cover / chapter / closing big titles and data numbers — not for body.Use the WHOLE canvas — never a left sliver with a big empty right half. This is the #1 layout failure under fill-viewport. Every slide must span the width via ONE of these (vary them across the deck):
thesis / chapter / closing (and cover when it
has a visual). A 2-column grid that fills the slide:
.inner{display:grid; grid-template-columns:1.05fr .95fr; gap:clamp(40px,5vw,96px); align-items:center; width:100%; max-width:min(1600px,92vw); margin:0 auto}. Text in one column; a
first-class VISUAL in the other — a big labeled stat, a schema/spec
table, stacked labeled cards, or a simple diagram — sized width:100% to
fill its column, NEVER a thumbnail in a corner.
Build the visual with HTML + CSS (flex/grid); put every label in its own
HTML box so boxes auto-wrap and auto-space and never collide. Do NOT put
text in <svg><text> — SVG text does not wrap or reflow, so multiple labels
in a narrow column overlap into an unreadable smear. Use SVG ONLY for
lines / arrows / shapes between the HTML boxes (or skip SVG). Keep it to ≤4
nodes/cards with SHORT labels (node ≤2 words, caption ≤4 words); if labels run
long or there are many, use a VERTICAL stack of full-width rows, never a
cramped horizontal graph.cover, big thesis. The gradient display title
spans ~70vw across the upper canvas; subtitle + a thin full-width detail row
(kicker / stat strip / row of chips) beneath. The title fills the width, so
there is no right-hand void.data, quote. .inner{max-width:min(900px,72vw); margin:0 auto; text-align:center} with SYMMETRIC breathing room on both
sides (never one-sided dead space).compare — .inner{max-width:min(1180px,90vw); margin:0 auto; display:grid; grid-template-columns:1fr 1fr; gap:clamp(24px,3vw,56px)}, with
the glowing teal rule between columns.Per-slide self-test: is there a large empty right half? Then the layout is
wrong — widen the headline, add the visual column, or center it. The closing
diagram, compare columns, and any flow/graph MUST fill their region, never
shrink to a corner. Never size a content box to min-content/fit-content
(collapses to a sliver).
data big number: give it its OWN width — display:inline-block; width:max-content; max-width:92vw; white-space:nowrap; margin:0 auto — so it
is NOT clipped by the .inner text column, and (with background-clip:text)
the gradient covers the WHOLE string instead of stopping at the column edge
and leaving the last char unpainted/smeared under the glow. Size a SINGLE
number with clamp(3.5rem,11vh,9rem); a COMPARISON number (A → B, A vs B)
is far wider — drop it to clamp(2.4rem,7vh,5.5rem) and keep the whole string
(incl. the trailing %) inside 92vw, never overflowing. Body beneath stays
centered in the .inner as a readable ~3-line paragraph.--ink on --bg; never body copy in --muted/--soft
(exception: quote pull-quotes and cover/closing subtitles may be --soft).data-type values)data-type | Use | Neon signature |
|---|---|---|
cover | tag + huge gradient title + 1-line subtitle | strongest aurora; mono "OPENKB" top-left; gradient display title |
chapter | section divider: oversize number + name | number clamp(4rem,12vh,9rem) mono, teal with glow; name in --type-display |
thesis | one claim + short explanation | title fills ~60% height; ONE keyword in teal+glow; rest --ink |
quote | italic pull-quote + attribution | centered; left teal glowing vertical rule; quote in --soft |
compare | two-column comparison, 3–5 lines each | two glass panels; glowing teal vertical rule between them |
data | one number + label + one-line read | single number clamp(3.5rem,11vh,9rem); comparison A → B clamp(2.4rem,7vh,5.5rem); width:max-content;max-width:92vw (per §Composition); micro-copy in --type-label |
closing | mirrors cover; thanks / next step | same scale as cover; aurora dims toward calm |
Cover/closing have no chapter context → top-left label is "OPENKB".
concepts/ and summaries/
and read wiki/index.md. Build a mental map before deciding the argument.data-type assignments. Vary types — ≥4
distinct, no run of 3+ consecutive same type.output/decks/<slug>/index.html in one write_file call. Inline
all CSS, inline keyboard-nav JS, inline <svg> for any graphics, inline
noise as a data-URI. No external anything.fonts.googleapis.com, <script src>,
<link>, or remote <img>. Breaks self-containment AND the deck validator.
Use the local stacks; the look does not depend on a downloaded font.data-type.max-width or a
fixed 1280×720 box, leaving dark side-bands on a wide window. Slides are
position:fixed;inset:0 and fill the viewport edge-to-edge (§Frame).data box sizing to
min-content or a tiny max-width, squashing text into a narrow sliver on
a wide screen (and breaking big numbers). Wrap content in an .inner with
an explicit max-width (§Composition); big numbers white-space:nowrap.height="auto" written as an SVG attribute
(invalid; fires a console error). Give inline SVG a viewBox and size it
with CSS (width:100%;height:auto in a style) or fixed width/height
attributes — never height="auto" as an attribute.data comparison number (A → B/A vs B)
at the single-number font size overruns its container; the trailing %
falls outside the background-clip:text gradient and smears under the glow.
Give the number width:max-content; max-width:92vw and the smaller
comparison font size (§Composition).<svg><text> (which never
wraps) so multiple labels in the narrow visual column collide into a smear.
Build the visual in HTML/CSS with each label in its own auto-spaced box;
use SVG for lines/shapes only, ≤4 nodes, short labels (§Composition).output/decks/<slug>/index.html exist with NO external
<link>/<script src>/web-font import/remote <img>?data-type="cover" and one data-type="closing"?data-type values, no run of 3+ same?--ink (readable on dark) — quote pull-quotes and
cover/closing subtitles in --soft being the only allowed exceptions — and
is glow limited to titles / big numbers / graph nodes only?position:fixed;inset:0, no
max-width / fixed 1280px box, no letterbox side-bands)?.inner with an explicit max-width — no narrow
sliver / min-content collapse, and big numbers white-space:nowrap?If any answer is no, revise and re-run this self-check.
anthropics/skills180kToolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
浏览器自动化
addyosmani/agent-skills103kTests in real browsers via Chrome DevTools MCP. Use when building or debugging anything that runs in a browser. Use when you need to inspect the DOM, capture console errors, analyze network requests, profile performance, or verify visual output with real runtime data. Requires the chrome-devtools MCP server to be configured.
浏览器自动化
ComposioHQ/awesome-claude-skills77kToolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
浏览器自动化
code-yeongyu/oh-my-openagent70kDrives a real browser through the omowright library from the js eval kernel: sites the user is already signed into, forms and clicks, JS-rendered pages, screenshots, web QA, extension popups, a human handoff for login, CAPTCHA or OTP, and a browser you own for scraping, bot-scored targets, network capture and QA traces. Use for any interactive browser task; not for a plain search or an unblocked static fetch.
浏览器自动化
shanraisshan/claude-code-best-practice67kBrowser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction.
浏览器自动化
CherryHQ/cherry-studio52kRun Cherry Studio critical-path system regression tasks through the repository-owned Playwright E2E workflow. Use for full regression, release acceptance, development-branch system validation, or a named cherry-regression-test task on GitHub-hosted macOS and Windows runners.
浏览器自动化