본문으로 건너뛰기
cccskills
무료GitHub에 공개한국어 소개

visualize

대화 안에서 도표, 그래프, 지도, 시뮬레이션, 화면 모형을 만들어 원리와 변화를 살펴보고 여러 선택지를 비교하도록 돕습니다. 정적인 과학 그림은 일반 작도 도구로 만듭니다.

원문원문 설명 보기

Create visualizations and interactive tools directly in conversation. Proactively use to show how something works; explore 'what happens when', 'what changes', or 'help me understand'; compare or inspect; create simulations, maps, charts, graphs, and mockups. Use standard tools for static scientific figures.

asgeirtj/system_prompts_leaks스타 70,411(GitHub 70,411 + cccskills 0)

실행 점수 미검증

설치 방법 보기

이럴 때 유용합니다

  • 원리나 절차를 그림으로 이해할 때
  • 조건 변화에 따른 결과를 살펴볼 때
  • 여러 선택지의 차이를 비교할 때
  • 대화에서 화면 안이나 지도를 확인할 때

한국어 소개

할 수 있는 일

설명을 이해하거나 조건을 바꾸었을 때 결과가 어떻게 달라지는지 살펴볼 수 있도록 대화 안에서 시각 자료를 만듭니다. 원리를 보여 주는 도표, 비교 그래프, 지도, 시뮬레이션, 화면 모형 등을 만들 수 있습니다. 표를 요청하면 Markdown 표로 답하고, 이름표가 붙은 정적인 구조는 Mermaid로 설명합니다. 움직임이나 입력 변경을 보여 주어야 할 때는 대화에서 직접 살펴볼 수 있는 시각 자료를 만듭니다.

이럴 때 유용합니다

글만으로 원리나 관계를 파악하기 어렵거나, 조건에 따라 달라지는 결과와 여러 선택지의 차이를 비교하고 싶을 때 유용합니다. 제안된 인터페이스를 대화 안에서 미리 확인할 때도 사용할 수 있습니다. 정적인 과학 그림은 일반 작도 도구로 만드는 방식입니다.

사용 예시

  • “이 과정의 흐름을 그림으로 설명해 주세요.”
  • “조건을 바꿔 결과가 어떻게 달라지는지 시험해 볼 수 있게 만들어 주세요.”
  • “이 화면 구상들을 대화에서 비교할 수 있게 해 주세요.”

주의 사항

새 독립 파일, 웹사이트, 앱 화면 또는 구성 요소를 만드는 요청은 대화 안에서 시각 자료를 만드는 요청과 별개로 취급합니다. 지도에는 공개된 지리 데이터를 사용합니다.

이 소개문은 공개된 SKILL.md를 바탕으로 AI(OpenAI Codex)가 작성했습니다. 정확한 사양은 아래 원문을 확인하세요.

문서 점검

AI가 SKILL.md의 내용에서 주의가 필요한 작업과 도입 전제를 확인했습니다. 점수는 실제로 실행한 결과(실행 검증)만으로 매깁니다.

안전성전송·삭제·명령 실행 등을 명시하고 있는가
A양호공개 지리 데이터를 사용한다고 명시하고 독립 파일 요청을 별도로 구분합니다.
도입의 용이성필요한 도구나 API 키가 적고 적혀 있는가
A양호대화 안에서 만드는 방식은 안내하지만 추가 도구나 키 요구 사항은 적혀 있지 않습니다.

점수에는 넣지 않았습니다. 2026년 10월 24일 기준으로 AI(OpenAI Codex)가 판정했습니다. 참고용이므로 설치 전에 원문도 확인해 주세요.

평가가 다르다고 생각되면 재검토를 요청하기

어느 항목이 왜 다르다고 생각하는지 적어 주세요. 로그인은 필요 없습니다. SKILL.md와 대조해 평가를 다시 만들고 이곳에 반영합니다.

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

포함된 파일(6)

  • SKILL.md34.1 KB
  • LICENSE.md452 B
  • references/api.md6.2 KB
  • references/styles.md261 B
  • tweak.md4.8 KB
  • widgets/calendar.md6.2 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Visualize

  • A request for a new standalone file, website, app page, component, or other project change is not an in-conversation visualization request, even when the deliverable contains charts or interactive content.
  • A request to preview, explain, or explore a proposed interface in the conversation is an in-conversation visualization request.
  • Create a visual only when the user needs to see or explore it in the conversation and it materially improves the explanation. Do not create an inline visual merely because the request involves data, charts, or an interactive page.
  • Use a normal Markdown table when the user asks for a table; return it directly and do not create a visualization file.
  • Use Mermaid when labeled nodes and edges fully explain a static structure; return a normal fenced Mermaid block and no visualization file. Use HTML for dynamics, spatial motion, adjustable inputs, and other visuals.
  • Work silently unless blocked or the user explicitly asks for progress. Never send commentary or progress updates while reading this skill or writing or updating the file; the final response must be your first user-facing message.
  • In user-facing prose, describe only what the visual helps the user see or decide. Keep it concise and do not repeat information already clear from the visual. Never announce this skill, a visualization surface, widgets, HTML, SVG, scripts, local files, inline data, or implementation details.

Read the complete skill

Read this file in full before authoring. Reread truncated ranges in smaller calls. Copy into every compaction summary: Reload the full visualize skill before creating or updating a visualization.

Inline HTML output contract

File

  • For each new or updated visualization, choose a concise ASCII lowercase-hyphenated title and write <title>.html in an explicitly writable, durable, task-owned location. Prefer the thread-scoped visualization directory when it appears in the writable roots or is explicitly supplied by the host. Do not write inline fragments into the project; if no visualization directory is supplied, inline rendering is unavailable.
  • Never add sandbox: links to inline visualization HTML unless the user specifically requests a download.
  • Do not choose system temp as a separate fallback. Write access alone does not guarantee that the conversation can read the file.
  • Use the absolute path on the executor that creates the file. Never assume ~/.zcode is writable beyond the session directory explicitly supplied by the host.
  • Build the visual in the conversation. Use the open project when the user asks for a site, app page, component, or change to existing project files.

Fragment

  • Write only an HTML fragment: no <!doctype>, <html>, <head>, or <body>.
  • Write literal markup: use <div class="card">Hi</div> plus a real newline, never <div class=\"card\">Hi</div>\n. Never embed the fragment in an inline Python, JavaScript, or shell string. Read it back; rewrite literal \" or \n.
  • Keep CSS and JavaScript in the fragment only when base classes are insufficient. Load static resources only from the CDN allowlist. Never use fetch, XHR, WebSocket, or other API calls.
  • Give the fragment root a unique ID and select it with document.getElementById(...). Never derive the root from document.currentScript; scripts may sit outside the root.
  • Keep visualizations under 1 MB. Aggregate, bin, downsample, reduce precision, or drop unused fields from large inline datasets.
  • Check that JavaScript has no undefined identifiers, every queried element exists, and the primary interaction updates the visual. The bundled python3 scripts/render.py <absolute-fragment-path> [<destination>.html] [--serve] can wrap a fragment as standalone HTML or temporarily serve it for browser inspection when a preview would help with layout, theme, or runtime behavior. The rendered preview places the fragment inside a sandboxed iframe: scope Playwright locators to page.frameLocator("iframe") and evaluation to that frame.

Content and response

  • Keep the fragment focused on the visualization. Do not include explanatory paragraphs, formulas, instructions, or narrative callouts. Include only necessary labels, legends, values, and accessible text alternatives.
  • Use the normal response flow. Put any necessary concise explanation outside the fragment, and add this visualization content reference on its own line where the visual should appear, using the absolute executor-side file path. Emit the literal ASCII prefix ::visualize followed by a JSON object; keep both colons, do not use Unicode private-use delimiters, and do not wrap the reference in backticks or a code fence:
::visualize{"path":"<absolute-path>/<title>.html"}
  • Add "mode":"wide" for a full-screen desktop app mockup, including its application shell. For other visuals, add it only when several compact chart panels must remain side by side for direct comparison and would be unreadable at the normal width. Never widen a single plot, map, grid, diagram, or timeline merely because it is dense. Keep contained mockups, dialogs, and mobile screens at normal width; stack separate self-contained views vertically. Visualizations fill the available conversation width; the host does not impose a separate card width cap:
::visualize{"path":"<absolute-path>/<title>.html","mode":"wide"}
  • Whenever you create or update an inline visualization, include its content reference only in that same turn's final response (never in commentary or progress updates), even when editing an existing file or reusing a path shown in an earlier turn.
  • The JSON object may also include a title when needed.
  • Emit only the content reference for the fragment. Never announce it as an artifact, website, output, attachment, link, or download, and never add a Markdown link to it. Do not append a Markdown table or repeat the visual's data; add at most one short conclusion when the user needs an explanation.

External resources

  • Floating UI Core 1.7.3 / DOM 1.7.4, Lucide 1.17.0, and D3 7.9.0 are bundled. Keep their prescribed script URLs unchanged: the Desktop host resolves those exact URLs locally, and standalone export embeds the files. Use a literal <script src="..."> for D3 so exports remain offline; do not add another copy or fetch a fallback. Other versions, query strings, libraries, fonts, and map data are not bundled by this rule.
  • The CSP allows only cdnjs.cloudflare.com, esm.sh, cdn.jsdelivr.net, unpkg.com, fonts.googleapis.com, fonts.gstatic.com, and fonts.bunny.net. Other origins are blocked and fail silently.

Exporting an existing visualization

  • Keep the fragment as the editable inline source. When the user explicitly asks to save, export, or publish a visualization that is already shown in the conversation, render it with python3 scripts/render.py <absolute-fragment-path> <destination>.html.
  • Apply this export flow only when the user explicitly asks to turn the existing inline source or visualization into a website. For a general website request, build a new responsive site in the output directory or open project, without applying this skill's guidance.
  • Keep only window.zcode.widgetState and window.zcode.setWidgetState calls from window.zcode.* when exporting: the standalone wrapper supplies fallback state storage. Replace other host-only interactions before using the standalone HTML outside ZCode.
  • The ZCode inline host does not provide Sites publishing. Export standalone HTML when requested; use an available hosting workflow only when the user asks to publish.

Runtime styles

Color

  • In each color pair, the base token is a surface and its -foreground token is the content on that surface. --muted is a surface fill; use --muted-foreground for secondary text.
  • Make every fill, stroke, text, border, shadow, chart, and canvas color theme-aware. Never hardcode light or dark palettes such as white panels, off-white backgrounds, black text, slate strokes, or Tailwind color literals.
  • Keep text readable against its actual background. Muted or secondary colors must retain clear contrast; never use .text-muted inside .card or another filled container unless its background preserves that contrast.
  • Available theme variables include --background, --foreground, --card, --card-foreground, --popover, --popover-foreground, --primary, --primary-foreground, --secondary, --secondary-foreground, --muted, --muted-foreground, --accent, --accent-foreground, --destructive, --border, --input, --ring, --blue, --orange, --green, --red, --purple, and --yellow. Use currentColor inside SVG.
  • Never add decorative borders, outlines, or strokes to progress tracks, meters, bars, stacked segments, or other filled quantitative marks. Use a subtle neutral or translucent track and distinguish marks with fill, contrast, spacing, or opacity.
  • Use --viz-series-1 for one measure or active state. Use --viz-series-2 through --viz-series-6 only for important persistent category, series, or status identity; never give every peer a different color by default.
    • For categorical tiles or nodes, prefer a soft low-opacity series fill with a neutral or transparent border; never color every outline.
    • Keep mappings stable and pair color with labels, shapes, or line styles.
    • Secondary series colors are theme-derived; never assume hues or use them decoratively.
  • When color encodes a category or series, apply it consistently to the corresponding visual marks—not just the legend—and keep large-area fills subtle.
  • Use series colors only for chart lines, marks, and legend swatches. Keep values, axis text, and direct labels in --foreground or --muted-foreground.
  • Keep chart grids and inactive structure thin and neutral. Use 1-2px neutral structural paths; never thicken, dash, or double-stroke the whole structure.
  • Use .btn-primary for high-emphasis actions; its neutral fill is supplied by the utility. Use --primary and --primary-foreground for filled selected, active, or pressed controls. Reserve --accent and --accent-foreground for subtle interactive surfaces and soft highlights. Buttons with aria-pressed="true", aria-selected="true", or .is-selected already use the primary pairing; .nav-pills .nav-link.active keeps selection neutral.

Typography

  • Scale type with --font-size-base. Use normal text by default and .text-small only for secondary annotations; at the default scale these are 14px and 12px. Never make supporting text smaller than 11px.
  • h1, h2, and h3 are available; use one concise visible heading for a self-contained chart or graph, with short panel headings only when needed. Do not restate the prompt or add a redundant title to other visualizations.
  • Use only weights 400 and 500. Never set custom font sizes or line heights.
  • Use .tabular-nums on changing or aligned numbers. Avoid it for editorial or decorative numerals.

Composition

Choose the smallest composition that fits.

  • Prefer interaction detail over permanent panels, toolbars, repeated legends, or long stacks. Add only requested controls, use one mechanism per state, and never invent search, filter, or reset controls.
  • Keep filters, selections, and other presentation-only interactions local. For drill-down actions that ask ZCode to investigate or explain selected data, call await window.zcode.sendFollowUpMessage({ prompt, title }), where the optional title is a concise confirmation-dialog heading of up to 250 characters. Include the selected values and requested investigation in the prompt, and label the action clearly.
  • For external destinations, use a normal <a href="https://example.com/subscribe"> link. If a button needs scripted handling, call await window.zcode.openExternal({ href }) from its user click handler; see API. Use an absolute HTTP(S) URL. Keep #fragment links for navigation within the page.
  • Show only metrics that explain the requested behavior. Put live values in control headers or on the visual before cards. Treat maxima as ceilings, not targets. Never invent qualitative scores, status cards, or secondary fact grids to fill space.

Remembering inline interaction state

  • Read saved state from window.zcode.widgetState when rendering. Listen for zcode:set_globals and apply event.detail.globals.widgetState when present. Use defaults for missing or incompatible state.
  • After meaningful interactions, call window.zcode.setWidgetState({ modelContent, privateContent }).catch(() => {}). Updates are acknowledged after the host persists them. Both fields accept JSON or null and may be omitted (treated as null). Each call replaces the snapshot; keep it under 16 KiB. Never save on load or state events.
  • Put choices useful for follow-up questions in modelContent, UI details worth restoring in privateContent, and transient or recomputable values in memory. Only modelContent may reach the model: delivery is best-effort and not guaranteed across clients. Never rely on it; saving never starts a turn. No secrets or images.

UI mockups

  • For alternative designs of the same component or screen, read Variant carousel, even when design controls are not requested.
  • Include a few thoughtfully chosen design alternatives whenever they would help the user explore a mockup, without waiting for the user to ask. Read tweak.md and bind useful options with the host-provided Tweak helper. Keep ordinary mockup interactions local; do not add design controls to charts, explainers, or simulations unless requested. Do not render a second controls panel or open annotation mode automatically.
  • "In the widget" means the in-conversation visualization, not a widget inside the depicted product.
  • Use product and platform context already available in the conversation; don't search the project to render a mockup. Match the product's chrome, navigation, typography, colors, and content. If its design is unavailable, infer one from the platform and request.
  • NEVER use visualization CSS variables or utility classes inside a mockup (for example, --card, --font-size-base, .card, or .btn). Define root-scoped, product-specific colors, typography, surfaces, and controls instead. This rule overrides all general visualization guidance.
  • Keep only the surrounding conversation surface transparent. Give product windows, cards, menus, and popovers opaque backgrounds, and stack overlays above the product content.
  • Follow the host's active appearance with product-specific light-dark(<light>, <dark>) colors unless a fixed theme is requested.
  • Contained mockup: Frame a component, dialog, small feature, or mobile screen as a compact product surface. Add .viz-dotted-background to the surrounding preview area or carousel root for a quiet, theme-aware dot grid. This preview-only class is an exception to the mockup utility rule; keep it outside the product UI and leave full-page mockups, charts, and explainers plain.
  • Full-page mockup: Render a desktop window, application shell, or page at full width without an additional visualization card.
  • Put app-wide navigation and pickers in the app chrome, and local controls in their component. Omit single-option pickers. Show realistic states, not invented dashboards, filler cards, or oversized icons.

Calendar

  • Use the bundled compact <viz-calendar> for a day schedule. Read Calendar and start from the example. Supply verified dates and events; the component handles durations, overlap lanes, and responsive layout. Short blocks show the title; hover, focus, or tap reveals the full title, time, and detail. Do not stretch the schedule to fit secondary text or wrap the element in another card.

Interactive explainer or simulation

  • Use compact controls or status, one compact dominant visual, and at most one single-line selected-state detail. Default to no summary cards; allow up to three only when changing metrics are central.
  • Crop empty space and fit the available inline width. For step-throughs, add only requested step controls and update one current visual; never add parameter controls, formulas, metric cards, or side-by-side steps unless asked.

Graphs and plots

  • Use D3 for data-rich Cartesian or statistical plots and handwritten SVG for simple, directly labeled values. Keep diagrams, simulations, and maps under their existing guidance. Load the bundled version on demand with <script src="https://cdn.jsdelivr.net/npm/d3@7.9.0/dist/d3.min.js"></script> before using d3.
  • Render the figure, legend, and subplots directly on the transparent host surface. Frame only the SVG plot area; never wrap charts in .card, rounded panels, filled backgrounds, or shadowed containers.
  • Give the figure a concise visible title. Render each Cartesian subplot in its own responsive SVG with a matching viewBox, a thin frame, and visible text.axis-title[data-axis="x"] and text.axis-title[data-axis="y"] showing quantities and units.
  • Set each SVG viewBox from its own container's measured width, redraw with ResizeObserver, and reserve at least 64px for the y axis. Never scale down a fixed-width viewBox.
  • Derive padded domains with d3.extent(...) over all observations, uncertainty, and references. Inset scale ranges for marker radii and keep every path inside rect[data-chart-frame]; never draw endpoint connectors outside the frame or guess or hard-code the domain.
  • After every draw, measure tick, axis, and value-label bounds together. Leave 4px between labels, anchor edge labels inward, and remove optional annotations first. At 360px, show at most four x ticks and stack panels.
  • Prefer --viz-series-1 through --viz-series-6 for chart series; use --foreground and --border for neutrals, cycle the six series tokens when more are needed, and never use literal or fallback colors. Give every SVG label fill: var(--foreground) and font-size: 12px; never shrink labels below 11 screen pixels. Stack subplots when their labels no longer fit.
  • Keep observations, trends, and important values visible. Use bands for dense uncertainty, whiskers for isolated estimates, and one compact, wrapping legend. Render one real <button type="button" aria-pressed="true"> per series with a small swatch and neutral text; toggle its line, markers, and tooltip row together. Keep buttons transparent, borderless, and indistinguishable from inline text; never use .btn, pills, badges, rounded borders, or filled and selected backgrounds.
  • Share one root-relative, pointer-transparent <div class="tooltip" role="tooltip"> using --popover and --popover-foreground. In each multi-series SVG, give the full-plot overlay both data-chart-hit and data-chart-hover-overlay="cross-series". Keep the data-chart-hover-guide at the exact cursor x, interpolate every visible series there, and show one aligned data-chart-hover-marker and tooltip row per visible series; never snap the guide to a nearby sample. Let touch users pin the same cross-series details without requiring hover.
  • Find ordered observations with d3.bisector(d => d.x).center(values, x); never pass an accessor to d3.bisectCenter.
  • Give isolated marks transparent data-chart-hit targets at least 32 screen pixels across on fine pointers and about 44px on coarse pointers; use one nearest-point overlay for dense scatter.
  • For named numeric data and one-off analyses, start with the plot. Put values and takeaways on its marks, axes, or annotations. Never add a KPI row, controls, cards, or panels unless those UI elements are explicitly requested.
  • For sequences or parallel work, use aligned lanes on one time axis. Encode phase and resource in the marks; annotate totals, waits, and bottlenecks on the axis or lanes, not above the plot.
  • For distributions or multi-metric comparisons, use shared-scale facets or small multiples. Render every requested dimension simultaneously; never hide one behind a toggle.

Maps

  • Let the map dominate the composition. Use at most one compact selection/detail area and only requested controls.
  • Always project published GeoJSON/TopoJSON and sourced longitude/latitude with d3-geo; never hard-code or hand-draw geographic outlines. Use schematic maps only when asked.
  • For world countries, import https://esm.sh/@d3-maps/atlas@1.0.0/world/countries/countries-110m and convert it with topojson-client@3.1.0 using feature(world, world.objects.features).features. Join input ISO3 directly to feature.properties.id, which is already ISO3; do not convert it to numbers.
  • For US states or counties, use https://cdn.jsdelivr.net/npm/us-atlas@3/counties-10m.json/+esm. For ZIP/ZCTA or city boundaries, download official Census or local open-data GeoJSON; do not guess sibling atlas paths or import raw JSON as JavaScript.
  • Keep maps geographically legible: for local points, fetch published neighborhood, street, or comparable geometry; a blank field or lone administrative outline is not a basemap. Show the full city or region behind points or partial choropleths, and frame the locations with modest padding.
  • Include the verified geometry in the final HTML. Open it before replying and fix blank basemaps, failed imports, missing labels, or unprojected points.

Dense categorical grid

  • Use one compact horizontal selected-item summary, then a grid with exactly one readable identifier per cell, then one small legend. Render only that identifier as visible cell text; put all other metadata in an accessible label or one summary line, not badges or fact grids. Allow only selection unless asked.

Part-to-whole or time allocation

  • Use compact metrics and one stacked chart of category allocation per period. Never substitute totals-only bars or duplicate it as a heatmap and totals chart.

Layout and accessibility

  • Use semantic HTML, keyboard-accessible controls, and concise labels.
  • Use aria-live="polite" for dynamic results, selections, and simulator updates. Use role="alert" for validation errors. Do not announce every hover or animation frame.
  • Keep the top-level surface transparent and unframed, and fill the available conversation width. Fill the conversation parent and support widths down to 320px. Stack side-by-side content when it no longer fits.
  • At every supported width, text, controls, cards, toolbars, and dynamic content must fit without overlap or clipping. Reflow by stacking or wrapping; use .table-responsive only when table columns cannot fit. The host sizes the frame to its content, so avoid fixed outer widths, other horizontal overflow, internal scrolling, position: fixed, and viewport-height layouts.
  • Size every SVG from its actual container. At narrow widths, reduce ticks, declutter annotations, and keep visible text at least 11 screen pixels; never shrink a fixed-width viewBox.
  • Keep native tab order; never add tabindex.
  • Use native button, input, select, and textarea elements with matching utilities; never recreate controls.
  • Keep browser or utility focus styles; never override them.
  • On coarse pointers, provide non-overlapping effective targets about 44px by 44px without breaking 320px layouts; visible icons and marks may stay small. Keep fine-pointer controls compact, and let shared utilities own touch sizing and at least 16px editable-field text.
  • Keep essential content and actions available without hover.

Design system

  • Let utilities own geometry, appearance, and interaction. Use the matching utility for every button and form control. Never restyle utilities, descendants, or pseudo-elements: no custom sizes, spacing, borders, radii, shadows, colors, or interaction states.

Surfaces and layout

  • .card: The only card-like HTML surface. Use its base class unchanged for a necessary numeric summary, selected-item summary, or bounded interactive field. Before adding a fill, border, radius, or shadow to any layout container, either use .card or leave it transparent and unframed; never recreate card chrome on rows, panels, tiles, sections, or wrappers. Keep charts, maps, diagrams, tables, controls, and the whole visualization unframed. Never nest cards; show 2-4 summaries near the top only when useful. Structural groupings and repeated content are not bounded interactive fields. Organize them with layout or visual marks, not container chrome.
  • .viz-stat: Use a summary .card with one muted label, one .viz-stat-value, and at most one short context or delta line.
  • .viz-grid: Use for peer metrics or choices instead of a custom grid. It creates as many equal-width columns as fit and stacks when narrow. Never use it for the whole visual or a horizontally scrolling card row. Keep groups to 2-3 columns at 736px and controls in a separate row.
  • .viz-row: Use as a wrapping horizontal group with centered related values or inline actions that may wrap when narrow.
  • <hr>: Use a native horizontal rule for a subtle theme-aware separator.
  • .nav.nav-pills + .nav-link: Use the accessible, interactive Tabs API below.
  • .progress + .progress-bar: <div class="progress" role="progressbar" aria-label="Progress" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"><div class="progress-bar" style="width:25%"></div></div>
  • .viz-tile: Add to a selectable dense-grid .btn; it stretches to fill its grid cell, preserves category fill, and uses an accent ring instead of solid selection. Never add another selected, pressed, border, outline, or shadow rule.
  • .viz-badge: Use as a compact display-only accent pill for a short status, category, or value; never as a button.
  • .viz-controls: Use as a wrapping row for controls affecting the same visualization. Keep button groups compact. Put labeled fields directly inside as .form-label; fields form at most two columns and stack when narrow.

Tabs

  • .nav.nav-pills[role="tablist"]: Group content-width native .nav-link[role="tab"] buttons and label the group with aria-label. Add .nav-justified only when tabs should share and fill the row equally.
  • .nav-link[role="tab"]: Give each button a unique id, type="button", aria-controls, and aria-selected. Mark the initial tab .active and aria-selected="true"; use disabled or aria-disabled="true" when needed.
  • [role="tabpanel"]: Match id to its tab's aria-controls, set aria-labelledby to the tab's id, and mark inactive panels hidden. Tabs can have separate panels or point to one shared panel.
  • Tab behavior is already implemented by the JavaScript runtime and does not need to be wired.
<div class="nav nav-pills" role="tablist" aria-label="Platform">
  <button class="nav-link active" id="mac" role="tab" aria-controls="mac-panel" aria-selected="true" type="button">macOS</button>
  <button class="nav-link" id="linux" role="tab" aria-controls="linux-panel" aria-selected="false" type="button">Linux</button>
</div>
<div id="mac-panel" role="tabpanel" aria-labelledby="mac">macOS content</div>
<div id="linux-panel" role="tabpanel" aria-labelledby="linux" hidden>Linux content</div>

Controls

  • Use .cursor-interaction on custom interactive elements, including locally styled widget controls. It follows the host cursor preference; never hardcode cursor:pointer. Shared controls already apply it. Preserve text, drag and disabled cursors for those states.

  • Place related inputs and buttons on one row, aligned at their vertical centers. Put labels and values on a separate row above them.

  • .btn: Use for a content-sized secondary action. Add .btn-primary for one main action per control group or .btn-ghost for low emphasis.

  • .btn-block: Add to a .btn only when the action should intentionally fill the available inline space. Never use it for ordinary row actions.

  • <a>: Use for links. Add .btn to style a link as a button.

  • [data-tooltip]: Use for concise supplementary plain text on static or dynamic triggers; the sandbox handles hover, focus, and touch and creates .tooltip elements. Keep essential content visible and triggers labeled. Never use title, custom markup, or initialization. Example: <button type="button" data-tooltip="Reset view">Reset</button>.

  • When a visible label is truncated, put its full text in data-tooltip on the existing accessible trigger so hover, focus, and tap reveal it. The bundled calendar does this automatically.

  • [data-tooltip-placement]: Optionally prefer top (default), right, bottom, or left; collision handling may flip it.

  • .form-check: Prefer a wrapping <label class="form-check"> around the native .form-check-input and .form-check-label text so the whole row is tappable. An explicit label with matching for and input id also works.

  • .form-switch: Add to .form-check around a native checkbox.

  • .form-control: Pair a native text, date, file, or color input—or a textarea—with .form-label.

  • .form-control-color: Add to .form-control for a compact native color input.

  • .form-select: Pair a native select with .form-label.

  • .form-range: Pair a native range with a visible label; put its current value and units immediately before it.

Tables

  • .table: Use on a semantic table for a quiet, unframed data view. It provides wrapping cells and subtle horizontal dividers without vertical gridlines. Use sentence case for headers.
  • .table-responsive: Wrap a table when its columns cannot fit at narrow widths. It contains horizontal overflow without clipping the visualization.
  • .table-sm: Add to .table when more rows need to fit; it reduces cell padding without shrinking text.
  • .text-end, .text-center, and .text-nowrap: Use inside .table for numeric/end alignment, centered values, or values that must stay on one line. Numeric cells use tabular figures when end-aligned.

Text

  • .text-small: Use for the smallest host-scaled secondary chart labels and annotations, never below 11px or for essential content.
  • .text-muted: Use for secondary units, captions, timestamps, and context, never essential values or labels.
  • .text-destructive: Use only for error or validation text the user needs to notice or act on.
  • <code>: Use for inline commands, file names, symbols, or short references; put multiline code in <pre><code>.
  • .sr-only: Use for visually hidden accessible text.

Charts

  • Prefer inline SVG for simple charts and version-pinned approved-CDN libraries when native interaction, scales, legends, or layout materially improve the result.
  • Resolve theme colors before passing them to canvas or chart APIs that cannot parse CSS variables or light-dark(...); redraw when the theme changes.
  • Use a tooltip unless it would distract from a simple, directly labeled chart. Keep chart-library tooltips and grouped legend interactions native; never replace them with a custom one-point tooltip. For SVG, attach data-tooltip directly to the real pointer-accessible mark and include its label, value, and units; the sandbox handles themed positioning, keyboard focus, and touch.
  • Animate transitions between chart states so lines and marks move to their new values, resampling paths when point counts differ. Do not animate initial appearance or use fade-only effects; never loop motion, and honor prefers-reduced-motion.
  • Scope SVG styles to the chart class. Never target every svg in a container that also contains Lucide icons.
  • Include labeled axes, units, and directly labeled important values. Give every chart, SVG, canvas, and widget a concise screen-reader summary using a role and accessible name or description, SVG <title>/<desc>, fallback text, or an .sr-only heading or description.
  • Reserve space for the longest formatted label at every supported width. Axis ticks are secondary and may use .text-small when space is tight. Never overlap or clip text against marks, axes, legends, labels, or edges; move or reduce labels rather than squeeze them.
  • Add a legend only when multiple series cannot be labeled directly.
  • Pair color with shape or text so meaning never depends on color alone.

Icons and mockups

  • Use the sandbox-provided global lucide. Add an icon name with data-lucide:

    <i data-lucide="search" aria-hidden="true"></i>
    
  • Never author inline icon SVG or icon paths. Use only supplied Lucide names; the sandbox replaces each placeholder with a host-sized currentColor SVG. Reserve authored inline SVG for charts and data marks.

  • Mark decorative icons aria-hidden="true". Put action icons inside labeled controls; use a visible label or aria-label for icon-only actions.

  • Let the sandbox initialize static icons after the fragment without blocking first render. After adding icons dynamically, use lucide.createIcons({ attrs: { width: 16, height: 16 } }).

  • Never load Lucide or another icon library from the network.

  • Use visibly labeled buttons and inputs for small interactions. Keep all presentation-only interaction local to the fragment and make the first render useful before input changes.

  • Use semantic controls, realistic spacing, and restrained chrome for mockups. Never fake product screenshots when inspectable UI is needed.

ZCode host compatibility

  • Emit inline references only when the Desktop context advertises Gen UI and supplies its session output directory; otherwise return an ordinary HTML artifact. Paths must be absolute on the executor, inside that session directory, with no symlinks or parent traversal. The host renders completed assistant messages only.
  • The frame starts at 240px, follows content height up to 10,000px, and has a host-compensated 5px paint gutter. These are implementation limits, not a target height or a reason to add padding. Secondary annotations are optional; there is no required footer.
  • window.zcode exposes widget state, state saving, follow-up messages, and openExternal({ href }). See API for external links, acknowledgement, cancellation, and Tweak object bindings. The standalone export supplies state fallback, not Agent access.
  • Older Unicode references and ::visualize{path="..."} references remain supported for historical replies. Generate the ::visualize JSON reference described above for new replies.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

3d-object

무료요약 있음

three.js로 입체 모델을 만들고 회전 가능한 뷰어에서 모든 각도로 확인합니다. OBJ + MTL이나 GLB로 저장해 다른 3D 제작 소프트웨어에서 사용할 수 있습니다.

  • 입체 모델을 만들고 모든 각도에서 확인하기
  • Blender에서 편집할 모델 만들기
  • 모델의 윤곽과 재질 표현 확인하기
asgeirtj/system_prompts_leaks7만2026년 10월 29일 업데이트

Audit web accessibility with Chrome DevTools MCP and Lighthouse. Inspect semantic structure, labels, keyboard focus, tap target size, and color contrast, then identify page elements that may need changes based on web.dev guidance.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Finding missing labels or image alternatives
  • Checking heading structure and reading order
  • Testing keyboard navigation and modal focus
asgeirtj/system_prompts_leaks7만2026년 10월 29일 업데이트

action-items

무료요약 있음

개인 작업 목록에 할 일, 기한, 다음 단계, 답변을 기다리는 대상과 진행을 막는 이유를 기록합니다. 진행 상황과 의존 관계를 갱신하고 중복 및 완료 항목을 정리합니다.

  • 기한이 있는 작업과 약속 기록
  • 답변 대기와 진행을 막는 이유 정리
  • 선행 작업 완료 후 의존 관계 갱신
asgeirtj/system_prompts_leaks7만2026년 10월 29일 업데이트

agents

무료

Coordinate a task from a verifiable goal through completion. Handle work directly or split independent tasks across separate agent sessions, track progress, verify results, and arrange pull request merging when included in the goal.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Split independent tasks across agents
  • Check progress across ongoing tasks
  • Resume a previously started project
asgeirtj/system_prompts_leaks7만2026년 10월 29일 업데이트

agy-customizations

무료요약 있음

Antigravity가 사용자 지정 항목을 발견하고 불러오는 위치와 우선순위를 알아봅니다. 에이전트 작업 흐름과 외부 도구 연결에 맞춰 스킬, 규칙, 플러그인, 훅, MCP 서버를 선택하고 만드는 방법을 안내합니다.

  • 사용자 지정 유형을 선택할 때
  • 설정 위치와 적용 우선순위를 확인할 때
  • 스킬이나 규칙을 만들 때
asgeirtj/system_prompts_leaks7만2026년 10월 29일 업데이트

animated-video

무료요약 있음

재생, 일시 정지, 시간 위치 지정이 가능한 HTML 애니메이션을 만듭니다. 장면 길이와 속도를 조절하고 가로형·세로형 영상 내보내기를 준비합니다.

  • 제품 조작 과정을 영상으로 제작
  • 글자와 도형으로 내용 설명
  • 세로형 애니메이션 제작
asgeirtj/system_prompts_leaks7만2026년 10월 29일 업데이트

asgeirtj의 스킬 모두 보기

이 스킬의 문제 신고