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

page

보고서, 비교표, 대시보드를 HTML 페이지로 만들어 Superset에서 공유합니다. 게시할 때마다 버전이 남아 같은 링크를 계속 갱신할 수 있으며, 독자가 페이지 요소에 남긴 댓글을 바탕으로 수정하고 답변할 수 있습니다.

원문원문 설명 보기

Build and publish a self-contained HTML page to Paradev (formerly Superset), then answer the comments readers pin to it. Use this instead of publishing a Claude artifact whenever the reader is a teammate: a page is listed in the org, every publish mints a version, and pinned comments come back to the agent. Use when the user asks to make or publish a page, turn a report, dashboard, chart, doc, or analysis into a shareable link, update or re-version a page already published, or work through comments left on one, including "make me a page for this", "publish this as a page", "share it as a link", "add a version", "address the comments on that page". Also use it unprompted to offer a page when you finish output a teammate will read: a change or PR walkthrough, a comparison, a report or digest, an incident writeup, or verification screenshots.

ParadevAI/Paradev스타 15,724(GitHub 15,724 + cccskills 0)

실행 점수 미검증

설치 방법 보기

이럴 때 유용합니다

  • 팀에 보고서나 비교표 공유하기
  • 조작할 수 있는 대시보드 게시하기
  • 같은 링크로 정기 보고서 갱신하기
  • 페이지 댓글을 반영해 수정하기

한국어 소개

할 수 있는 일

보고서, 비교표, 차트, 대시보드를 HTML 페이지로 만들고 Superset에서 공유 링크를 발급합니다. 게시할 때마다 새 버전이 남으므로 같은 페이지를 계속 갱신할 수 있습니다. 독자는 페이지의 특정 요소에 댓글을 달 수 있으며, 에이전트는 원본 파일을 수정하고 다시 게시하거나 댓글에 답하고 해결됨으로 표시할 수 있습니다. 필터나 탭처럼 조작할 수 있는 요소가 있는 페이지도 만들 수 있습니다.

이럴 때 유용합니다

조사 결과나 변경 내용을 팀과 공유할 때 적합합니다. 정기 보고서를 같은 링크로 계속 업데이트하거나, 독자가 지적한 부분을 확인하며 수정할 때도 사용할 수 있습니다. 공유 저장소를 사용하는 투표와 체크리스트도 지원합니다.

사용 예시

  • “이 분석 결과를 팀에서 읽을 수 있는 페이지로 게시해 주세요.”
  • “지난 보고서에 새 버전을 추가해 주세요.”
  • “이 페이지에 달린 댓글 요청을 반영해 주세요.”

주의 사항

Superset CLI를 사용합니다. HTML 본문은 최대 16 MB이며, 단일 파일 또는 index.html이 포함된 디렉터리를 게시합니다. 일반적인 스크립트 통신과 외부 스크립트 불러오기는 제한됩니다. 새 페이지는 기본적으로 조직 내부에 공유됩니다. 원본 파일을 이동했다면 페이지 ID를 지정해 업데이트해야 합니다.

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

문서 점검

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

안전성전송·삭제·명령 실행 등을 명시하고 있는가
B일부 부족Superset에 게시하고 댓글에 답변하지만 대상과 답변 내용을 확인하는 절차는 제한적으로 설명되어 있습니다.
도입의 용이성필요한 도구나 API 키가 적고 적혀 있는가
B일부 부족Superset CLI가 필요하지만 설치 및 인증 설정 절차는 기재되어 있지 않습니다.

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

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

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

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

포함된 파일(3)

  • SKILL.md24.3 KB
  • agents/openai.yaml235 B
  • references/storage-and-tools.md3.1 KB

SKILL.md(원문)

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

Paradev Pages

paradev is an alias for the superset CLI: every superset command here also runs as paradev.

A page is an .html document published to a URL people in the org can open. Publish a single file and it must be self-contained; publish a directory and its index.html is the document, with the images, stylesheets, and media it references by relative path published alongside it. Every publish mints a version, so a page has history. Readers can pin a comment to any element on it, and those comments come back to an agent to fix. That is what makes a page a working surface rather than an export.

Pages are served from their own origin under a strict content policy. Most of the work in this skill is respecting that policy; a page that ignores it looks fine locally and breaks silently once published.

When a page is the right surface

Publish a page when the work has a reader and wants a link: a report someone will skim, a dashboard for a standup, a comparison table, a diagram, a walkthrough of what you changed.

Other skills produce exactly that and stop at the terminal. A standup digest, a summary of a parallel run across several workspaces, a feature scorecard, the screenshots from a browser or desktop verification: each has a reader who is not in the session, and each is better as a link than as scrollback. Recurring ones gain the most, since republishing versions one page rather than littering the org with a new one every day. That only holds when the workspace and the path both stay the same, which is the identity of a page: a job that runs somewhere new each time needs --page <id> instead.

Don't publish when the artifact belongs in the repo (source, docs, config: put those in files and commit them), or when it needs its own server, database connection, or login flow. A page has none of those, but it can show live data from the viewer's connected plugins (see references/storage-and-tools.md).

If you're unsure, ask. Publishing is cheap and reversible, but a page the user didn't want is noise in their org's list.

Offer one before you are asked

Most people never go looking for this feature, so the offer is the onboarding. When you finish something that has a reader and wants a link, say so and offer to publish it. Don't wait to be asked, and don't publish silently either: a page the user didn't want still lands in their org's list.

Offer when the thing you just produced is one of these:

  • a walkthrough of a change, a PR, or a migration you just made
  • a comparison: options side by side, before and after, two designs, two benchmark runs
  • a report or digest someone outside the session will read: a standup, a status roundup, a feature scorecard
  • an investigation or incident writeup with a timeline
  • verification evidence: screenshots from a browser, desktop, or simulator run
  • anything you were about to paste as a long wall of terminal output that a teammate is supposed to read

One line is the whole offer, and it names what the page would be:

This reads better as a page your team can open and comment on. Want me to publish it?

Then stop and let them answer. Publish on a yes, drop it on a no, and don't raise it again for the same piece of work.

Stay quiet the rest of the time. An ordinary answer, a quick fix, a question you just answered in two sentences, a file you edited: none of those want a link, and an offer attached to every reply is noise that trains people to ignore the one that matters. If you already offered in this session and were turned down, take that as the user's standing preference unless they say otherwise. When the user asked for a page outright, skip the offer and build it.

A page, not a Claude artifact

Claude Code carries an Artifact tool that also publishes a self-contained HTML document to a private URL, and it is the wrong instrument here. An artifact belongs to the one person who made it: it is absent from the organization's page list, carries no workspace or entry path to version against, and its comments reach whoever happens to still have the session open. A page is the org's surface: listed, versioned on every publish, and wired so a pinned comment comes back to an agent that can act on it.

So when the user asks for a page, or for anything a teammate will open, this skill is the one that runs. Reach for Artifact only when the user names it, or when there is no Paradev workspace to publish into. Inside a Paradev terminal a first Artifact publish is denied by a hook that points back here; that denial is the reminder, not an error to work around. Someone who wants it gone entirely sets SUPERSET_PAGES_NUDGE=off in their terminal environment.

The content policy, which is what actually bites

Every page gets its own origin, https://<pageId>.frame.supersetusercontent.com, and is framed with sandbox="allow-scripts allow-same-origin allow-forms allow-popups". So the page is a real origin of its own, and a locked-down one. The policy is default-src 'none' with a short allowlist, and it is enforced identically in the desktop pane and the web viewer:

  • No network from script. fetch, XHR, EventSource and WebSockets are all blocked, and so is fetch("data:..."): a page cannot read its own inlined data URIs back out. Write pages that need no network at all: bake the data into the document as a literal, or decode base64 in JavaScript (atob, then Uint8Array.from). For live data, use window.superset.tools (references/storage-and-tools.md).
  • No compiling code at runtime. script-src carries no 'unsafe-eval', so eval() and new Function() both raise an EvalError. This rules out inlining any library that builds functions at runtime, which includes several chart and templating libraries and a number of date and expression helpers. Check for it before you reach for a dependency: the page renders nothing and gives no visible reason why.
  • No scripts or stylesheets from a remote host, with one exception. <script src="https://…"> is always blocked. <link rel="stylesheet" href="https://…"> is blocked too, except from fonts.googleapis.com, so a Google Fonts <link> tag works as-is. A directory publish's own files load fine (relative src/href), and any remote font file is allowed, so an inline @font-face { src: url(https://…) } also works for fonts from elsewhere.
  • Images, video and audio may be remote (https:, data: or blob:), but prefer data: URIs for anything the page cannot do without: a reader with the network off sees nothing, and a remote image makes every reader's browser call that host directly, which hands a third party the IP address of everyone who opens the page.
  • Browser storage works and is scoped to the page: localStorage, sessionStorage, indexedDB and cookies persist across reloads and across versions of the same page, but only in that one browser. Use it for a chosen tab or filter. For anything the page should remember for everyone, use window.superset.storage below.
  • No parent access. The viewer is a different origin, so window.parent.document and window.top.location throw. Paradev injects its own scripts for comment anchoring and for the storage API; don't build a postMessage handshake of your own on top of them.
  • No form submission. form-action 'none': a <form> may exist for its controls, but submitting it goes nowhere. Handle inputs in script.

Scripts and popups do work. Inline JS runs normally, so charts, filters, sorting, tabs, and interactive controls are all fine, as long as everything they need is already in the file.

Shared storage: window.superset.storage

A page can remember things for everyone who opens it. Each key holds one slot per person: you write yours, you read everyone's. That makes a poll, an RSVP sheet, a claim list or a checklist a few lines, and it makes two people writing at once a non-issue, because nobody ever writes someone else's slot.

const store = window.superset?.storage;
if (await store?.ready) {
  await store.set("lunch-vote", "Ramen");      // my slot under this key
  const mine = await store.get("lunch-vote");  // read it back
  const all = await store.getAll("lunch-vote");
  // [{ userId, name, value, updatedAt }, ...] everyone's slots
  store.subscribe("lunch-vote", (records) => render(records));
  await store.remove("lunch-vote");
}

Rules that matter when you write one:

  • Always handle absence. store is undefined and store.ready resolves false wherever there is no host: the thumbnail renderer, a file:// preview, a signed-out reader. Render a sensible read-only view from zero records rather than a broken page.
  • Derive, don't accumulate. A tally is computed from getAll on every render. Never keep a running count in a record.
  • Values are JSON and bounded: at most 64 KiB each, 500 keys per person, and 20 MiB for the whole page. An over-size write rejects.
  • Branch on error.code, never on the message: quota_exceeded, rate_limited, unauthenticated, invalid, unavailable, and revoked. revoked is terminal: the page's access changed while it was open, so surface it once and stop retrying.
  • Who is reading is on the object: store.viewer is { userId, name, image }, store.author is true for the page's author, and store.writable says whether this viewer may write. Use store.author for controls only the author should have, like closing a poll.
  • Signed-in viewers of the page's organization only. A signed-out reader of an everyone page gets no storage, so the page must still render.
  • Writes are per-person, so there is nothing to merge and no need for a CRDT.
  • Private and shared values, and writes from an agent: read references/storage-and-tools.md.

The other hard limits

  1. .html only. Any other extension is rejected at the CLI.
  2. One file, or one directory. superset pages publish ./report/ publishes a directory: index.html is the page, and every other file ships at its relative path, so <video src="demo.mp4">, <link href="site.css"> and <script src="app.js"> all work. Asset paths may not start with versions/, files/, _superset/ or ~, or be named thumbnail.jpg. Assets go up to 1 GiB each; on republish, unchanged assets are not re-uploaded. Prefer H.264 MP4 or WebM for video: iPhone .mov recordings may not play in every browser. Remote CDN links and external stylesheets are still blocked; for a single-file page, inline all CSS and JS and embed images as data: URIs.
  3. 16 MB maximum for the HTML document itself, and base64 data: URIs count toward it at ~1.37× their raw size. A few small SVGs or PNGs are fine; a photo gallery is not.
  4. Full-bleed frame. There is no chrome around the document: what you write is the whole surface, edge to edge. The injected theme paints the background (see below), so inherit it or set your own, never leaving it to the browser default.

Check before publishing: no <script src> or <link rel="stylesheet"> pointing at a remote host, no fetch of any kind including of a data: URI, no eval or new Function anywhere in the file or in anything you inlined, page fits in 16 MB, opens correctly from file:// with the network disabled. Remote images are the one permitted exception: they go blank offline, which is the price of not inlining them.

Structure and theme

Every page is served with a stylesheet of ours inlined at the top of <head>. You never write it. The origin injects it into the document on the way out, so it reaches pages published before it existed too. It gives bare HTML a readable default: type scale, links, lists, tables, code blocks, box-sizing, responsive images. Don't inline a CSS reset, a normalize, or a webfont. Write semantic HTML and most pages need no <style> block at all.

What it deliberately does not set, because it reaches pages written before it existed and those pages never agreed to it: padding on body, a width cap on your text, or a height on your <iframe>s. The frame stays full-bleed and the measure is yours to choose (see --sp-measure below).

Start from this skeleton:

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>Q3 pipeline</title>
  </head>
  <body>
    <main>
      <h1>Q3 pipeline</h1>
      <p>Where every open deal stands going into Q4.</p>
      <section>…</section>
    </main>
  </body>
</html>

Every rule in the theme is wrapped in :where(), which carries no specificity. Any selector you write beats it: body { background: #0b0b0b } in your own <style> wins outright, and a class of your own is never touched by it. So the theme is a floor, not a cage: lean on it for the ordinary parts and style the parts that make this page itself.

Light and dark

The theme is light unless you ask for dark, with a class on <body> that flips background, text, borders, code blocks and native controls together:

<body class="dark">
  <!-- or class="light", which is the default -->
</body>

It does not follow the reader's system setting on its own, and that is deliberate. A page that set a background but no text colour, or set one on <html> rather than <body>, would take the other half of the pair from a palette that inverted underneath it, and end up dark text on a dark ground. Opting in keeps that decision with the page that can actually see its own colours.

So: add class="dark" when the page's visuals assume it: a chart with baked-in colours, a screenshot with a dark background, a diagram with hardcoded strokes. To follow the reader's system setting, ask for that too:

<body class="auto">

auto is the right choice for text and tables, where nothing is pinned to one scheme. Use it whenever the page has no baked-in colours of its own, but reach for it deliberately, and if you hardcode any colour anywhere on the page, set its partner as well so the pair can never come from two different themes.

Tokens

These are Paradev's own palette, so a page read next to the app belongs to it. Build on them rather than hardcoding colours and both themes keep working:

TokenWhat it is
--sp-bgPage background
--sp-surfaceRaised or inset panels
--sp-textBody text
--sp-mutedSecondary text, captions, table headers
--sp-borderRules and hairlines
--sp-accent / --sp-accent-textLinks and emphasis, and text on top of the accent
--sp-code-bgCode background: a translucent tint of the surrounding text colour, so it sits on whatever background the page paints
--sp-chart-1 … --sp-chart-5Categorical series colours, distinct in both themes
--sp-radiusCorner radius
--sp-measureReading measure for prose blocks
--sp-font-sans / --sp-font-monoFont stacks

The accent is a near-neutral, the way the app's is. It carries emphasis through weight and underline rather than hue. Reach for --sp-chart-* when you need colours that separate from one another, and don't paint a chart in five shades of the accent.

Redefine any of them on :root to re-skin the whole page in one place:

:root {
  --sp-accent: #b4531f;
  --sp-measure: 62ch;
}

Define overrides on :root, not on body. The theme's own values live on :root, and a value set closer to the content would win in only one of the two colour schemes.

Design

The page should look deliberate. Avoid the house style of generic AI output: purple-to-blue gradients, everything centered, uniform pill-rounded corners on every element, Inter (or system-sans) for every line, and emoji as section icons. Those read as "generated" at a glance.

Instead: hold to one palette (the tokens above, or a real one of your own) set a typographic scale with actual contrast between heading and body, and let the layout follow the content: a data-dense table wants a wide flush-left page, a narrative report wants the default measure. Use whitespace for grouping instead of borders on everything.

Make it responsive with relative units and flex/grid, and give wide content (tables, code blocks, charts) its own overflow-x: auto container so the page body never scrolls sideways.

If the user's project has a design system, read it first and match it.

Publish

superset pages publish report.html \
  --title "Q3 pipeline" \
  --description "Where every open deal stands going into Q4" \
  --label "first draft"

# Or a directory: index.html is the page, everything else rides along
superset pages publish ./report/ --title "Q3 pipeline"

--title defaults to the filename with dashes and underscores turned into spaces, so name the file well or pass the flag. --label is what shows in version history; write what changed, not "update".

Attach a workspace whenever you have one. The CLI records the file's path relative to the workspace root as the page's entry path, and that path is the key: publish the same path again and it becomes version 2 of the same page rather than a second page. That is the only way a republish versions itself without you tracking an id.

Write the .html inside the workspace, not in /tmp or an agent scratchpad. A file outside the workspace has no relative path, so it falls back to being keyed by filename alone (/external/report.html), which means two unrelated files with the same name will version each other. Keeping it in the workspace also keeps the source next to the work it describes.

Outside a workspace entirely (a chat session, or a shell with no $SUPERSET_WORKSPACE_ID and no --workspace) the publish still goes through. The page is created and listed like any other; it just has no entry path, so there is nothing for a later publish to resolve against. The result says "unanchored": true and carries a republish command with the id already in it. Keep that command and run it to add a version. Publishing the same file again without --page creates a second page, and the link you already shared keeps showing the first.

Keep the source file. It is the only copy you can edit; the published version is derived from it.

Update an existing page

Two routes, and the difference matters:

superset pages publish report.html --label "fixed Q3 totals"   # same path in the same workspace
superset pages publish report.html --page <page-id> --label "…" # anywhere, explicit

Use --page whenever you're outside the original workspace, the file moved, or you're not certain the path still matches. A wrong guess doesn't error; it quietly creates a new page, and the reader's link keeps showing the old one.

Visibility

org (the default) or just_me, set with --visibility. Anything wider is not settable from the CLI. A new page is readable by the org, because that is what a page is usually for; pass --visibility just_me when the user wants a draft only they can open.

Visibility belongs to the page, not to the publish. Republishing never changes it, so a page someone narrowed to just_me stays that way through every later version, and a page created before org became the default is still just_me until someone widens it.

Read a page back

superset pages list --workspace <id>     # or omit --workspace for the whole org
superset pages list --search "Q3 close"  # -q also works; matches title or slug
superset pages get <page-id-or-slug>
superset pages versions <page-id-or-slug>
superset pages pull <page-id-or-slug> --version 2 > v2.html

pull writes HTML to stdout; use it to recover a source file you no longer have, or to diff what actually shipped against what you have locally.

list returns every page it can see, so reach for --search before you reach for a pipe into grep. Two flags change that: --limit <1-200> returns a single batch, and --cursor continues from where a batch stopped.

They also change the JSON. Under --json, a plain list is a bare array, but passing either flag wraps it as { items, nextCursor }. Feed that nextCursor back as --cursor until it comes back null. Parsing the output? Either don't pass the flags, or handle the envelope. The other two modes are unaffected: the default table looks the same and tells you when there's more, and --quiet prints ids either way.

get carries workspaceLinks: the workspace and the path each publish resolved against. When you have lost the source, pull it back to that path inside that workspace and a later publish versions the page instead of minting a second one. An empty list means the page has no path to resolve against, so --page <page-id> is the only way to add a version.

Answer comments

A reader clicks an element on the published page and pins a comment to it. When they hand the thread to an agent, the prompt that arrives names the page, and for each thread gives a thread: id, an at: CSS selector path from <body>, and the element's text at the time of writing.

That selector points into the published HTML, which is the same document as your source file. That document is the index.html you published, not any asset beside it, so the anchor locates the exact element to edit. Quoted text alone doesn't; the same words often appear more than once.

The loop, in order:

superset pages comments list --page <page-id-or-slug>
# edit the source file, fixing what each thread asked for
superset pages publish report.html --page <page-id> --label "addressed review comments"
superset pages comments reply --thread <thread-id> "Recomputed from the Q3 close; the total is 1.42M now."
superset pages comments resolve --thread <thread-id>

Rules that keep this honest:

  • Fix the source, then republish, then reply. A reply pointing at a version that doesn't exist yet wastes the reader's time.
  • Reply before resolving. Resolving silently closes the thread with no record of what changed. Say what you did, then close it.
  • Only answer threads that were handed to you. Other threads on the page are someone else's conversation.
  • Don't resolve what you didn't fix. If a comment asks for something you can't do or disagree with, reply saying so and leave it open for a human.

Reopen with superset pages comments resolve --thread <id> --reopen.

When it fails

SymptomCause
Only .html files can be published as a pageWrong extension, or you pointed at a directory
Publish rejected on sizeOver 16 MB; the data: URIs are almost always why
A new page appeared instead of a versionPublished from outside the workspace, or the path changed; use --page <id>
Reader gets a 404Page is just_me, either set that way or created before org became the default; widen it with --visibility org
Page is blank once published, fine locallyA script threw, or the page loads a script or stylesheet from a remote host
A chart or widget renders nothing and logs no errorThe library compiles code with new Function or eval, which the policy refuses; pick one that does not
Fonts missing when publishedA stylesheet <link> from a host other than fonts.googleapis.com; inline the @font-face instead, or use --sp-font-sans
Page ignores class="dark"The class belongs on <body>, not on <html> or a wrapper
A theme token has no effectIt was redefined on body; move the override to :root
Images missing when publishedhttp:// URLs, or the reader is offline; embed as data: URIs

리뷰

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

댓글

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

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

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

0 / 1,000자

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

같은 저장소의 스킬

10x

무료요약 있음

Superset 사용 현황을 살펴보고 아직 쓰지 않는 기능 중 업무 방식에 맞는 항목을 제안합니다. 각 기능을 설명하고, 사용자가 고른 예약 실행 에이전트나 병렬 작업 공간, 공유 작업 등을 설정합니다.

  • 사용하지 않는 Superset 기능 찾기
  • 에이전트 예약 실행 설정
  • 여러 작업 공간에서 병렬 작업
ParadevAI/Paradev1.6만2026년 10월 29일 업데이트

automate

무료요약 있음

반복 작업을 Superset 자동화로 설정합니다. 에이전트 지침, 일정 또는 이벤트 조건, 실행 작업 공간을 정리하고 명시적인 확인을 받은 뒤 자동화를 만듭니다. 저장된 조건과 첫 실행 결과를 살펴 지침을 조정합니다.

  • 매일 또는 매주 작업 예약
  • GitHub에서 풀 리퀘스트가 열릴 때 실행
  • Slack의 지정된 반응을 계기로 실행
ParadevAI/Paradev1.6만2026년 10월 29일 업데이트

browser

무료요약 있음

Superset 작업 공간의 브라우저에서 페이지를 열고 클릭하거나 입력하며, 화면과 콘솔 정보를 확인합니다. 개발 중인 웹 앱 미리 보기, 폼 동작 및 화면 이동 점검에 활용할 수 있습니다.

  • 로컬 웹 앱 미리 보기
  • 페이지 화면 캡처
  • 콘솔 오류 확인
ParadevAI/Paradev1.6만2026년 10월 29일 업데이트

build-a-stripe-integration

무료요약 있음

Stripe 공식 문서와 API 매개변수 정의를 확인해 결제, 구독, 청구서, 웹훅 연동을 구현합니다. 적절한 제품 선택부터 샌드박스 테스트와 웹훅 처리까지 다루며, 결제와 구독 상태를 웹훅 이벤트로 판단합니다.

  • 정기 결제에 맞는 Stripe 제품 선택
  • Checkout 또는 청구서 처리 구현
  • 오작동하는 Stripe 연동 조사
ParadevAI/Paradev1.6만2026년 10월 29일 업데이트

cdp-verification

무료요약 있음

Chrome DevTools Protocol로 실행 중인 Electron 데스크톱 앱을 조작해 UI 변경을 확인하고 문제를 재현합니다. 실제 사용 흐름을 따라 화면 전환을 검증하고, 스크린샷과 경로·스크롤 위치·포커스·저장 상태를 기록해 비교합니다.

  • 실행 중인 앱에서 UI 문제 재현
  • 수정 후 화면 동작 확인
  • 화면 전환이 포함된 흐름 검증
ParadevAI/Paradev1.6만2026년 10월 29일 업데이트

ci-triage

무료요약 있음

GitHub Actions 실패 로그에서 최초 오류를 찾아 코드 결함, 환경 문제, 간헐적 실패, 기존 장애로 구분합니다. 기준 브랜치와 PR 변경 사항을 비교해 관련성을 설명하고 다음 조치를 정리합니다.

  • PR 검사 실패 원인 조사
  • 불안정한 테스트와 코드 결함 구분
  • 기준 브랜치의 기존 장애 확인
ParadevAI/Paradev1.6만2026년 10월 29일 업데이트

ParadevAI의 스킬 모두 보기

이 스킬의 문제 신고