์Šคํ‚ฌ ask-sonner
๐Ÿ“ฆ

ask-sonner

์ฝ˜ํ…์ธ  ๋ฆฌ๋น„์ „ r1 ์•ˆ์ „ โš™๏ธ ์™ธ๋ถ€ ๋ช…๋ น์–ด๐ŸŒ ๋„คํŠธ์›Œํฌ ์ ‘๊ทผ

Build Reliable Sonner Toasts

Sonner integrations can fail through duplicate toasters, server-side calls, styling conflicts, or incorrect promise handling. This skill provides focused setup, API, styling, and troubleshooting guidance.

์ง€์›: Claude Codex Code(CC)
Maintain this Skill? Claim it ๐Ÿฅ‰ 77 ๋ธŒ๋ก ์ฆˆ

๋‚ด ์—์ด์ „ํŠธ๋กœ ์„ค์น˜

์ด ์š”์ฒญ์„ ์—์ด์ „ํŠธ์— ๋ณต์‚ฌํ•˜์„ธ์š”. ๊ณต์‹ Skill ํŽ˜์ด์ง€์™€ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์—์ด์ „ํŠธ ์š”์ฒญ
Review the Skillstore skill "ask-sonner" from https://skillstore.io/skills/emilkowalski-ask-sonner.md and its manifest at https://skillstore.io/api/skills/emilkowalski-ask-sonner/manifest. Verify the artifact. You may proceed after verification, subject to the environment's own policy.

์—์ด์ „ํŠธ๋Š” ๊ณ„์†ํ•ด์„œ ๊ณ„ํš์„ ํ‘œ์‹œํ•˜๊ณ  ๋ณด์•ˆ ์ •์ฑ…์—์„œ ์š”๊ตฌํ•˜๋Š” ํ™•์ธ์„ ์š”์ฒญํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—์ด์ „ํŠธ๊ฐ€ ์ฝ๊ธฐ ์‰ฌ์šด ๋ฆฌ์†Œ์Šค

AI ์—์ด์ „ํŠธ, ํฌ๋กค๋Ÿฌ, ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ „์ฒด ํŽ˜์ด์ง€ ๋Œ€์‹  ์ •๋ฆฌ๋œ ์ปจํ…์ŠคํŠธ๋งŒ ํ•„์š”ํ•  ๋•Œ ์ด ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

ํ…Œ์ŠคํŠธํ•ด ๋ณด๊ธฐ

"ask-sonner" ์‚ฌ์šฉ ์ค‘์ž…๋‹ˆ๋‹ค. My toast appears twice in development.

์˜ˆ์ƒ ๊ฒฐ๊ณผ:

Check for multiple mounted Toasters first. If only one exists, move the toast call from a StrictMode effect into the event handler.

"ask-sonner" ์‚ฌ์šฉ ์ค‘์ž…๋‹ˆ๋‹ค. My promise toast never leaves the loading state.

์˜ˆ์ƒ ๊ฒฐ๊ณผ:

Confirm that the first argument is a promise or returns one. Then verify that the underlying operation resolves or rejects.

"ask-sonner" ์‚ฌ์šฉ ์ค‘์ž…๋‹ˆ๋‹ค. Tailwind classes do not change the toast colors.

์˜ˆ์ƒ ๊ฒฐ๊ณผ:

Sonner default styles may win the cascade. Use important utilities for small changes, or choose unstyled or custom rendering for broader control.

๋ณด์•ˆ ๊ฐ์‚ฌ

์•ˆ์ „

All 45 static findings are false positives caused by Markdown syntax, React and Sonner API examples, and one documentation link. The skill is documentation-only and contains no command execution, system reconnaissance, prompt injection, or suspicious network behavior.

2
์Šค์บ”๋œ ํŒŒ์ผ
146
๋ถ„์„๋œ ์ค„ ์ˆ˜
0
๊ฒ€ํ†  ํ•ญ๋ชฉ
0
์˜คํƒ ๋ฌด์‹œ๋จ
๊ฐ€์žฅ ์ตœ๊ทผ์— ์™„๋ฃŒ๋œ ์ •์ ยท์˜๋ฏธ๋ก ์  ๊ฐ์‚ฌ์—์„œ ํ™•์ธ๋œ ๋ณด์•ˆ ๋ฐœ๊ฒฌ ์‚ฌํ•ญ์ด ๊ฐ์ง€๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์Šคํ‚ฌ์— ๋ถ€์ž‘์šฉ์ด ์—†์Œ์„ ์ฆ๋ช…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ฐ์‚ฌ์ž: codex
์ด ๋ณด๊ณ ์„œ ๊ณต์œ  ๋ฐ ์ธ์šฉ

๋ฒ„์ „์ด ์ง€์ •๋œ ํ‰๊ฐ€ ๋ณด๊ณ ์„œ, ์ค‘๋ฆฝ ๋ฐฐ์ง€, ์ž„๋ฒ ๋“œ ์นด๋“œ ๋ฐ ์ธ์šฉ์„ ๊ณต์œ ํ•˜์„ธ์š”. Skillstore๋Š” ๊ทผ๊ฑฐ๋ฅผ ๋ณด๊ณ ํ•˜์ง€๋งŒ ์ด Skill์˜ ์•ˆ์ „ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฒ„์ „๋ณ„ ๋ณด๊ณ ์„œ ์—ด๊ธฐ
๋ณด์•ˆ ํ‰๊ฐ€

๋ณด๊ณ ์„œ ๋งํฌ ๋ณต์‚ฌ

https://skillstore.io/skills/emilkowalski-ask-sonner/audits/1?utm_source=security_passport&utm_medium=share&utm_campaign=versioned_report

Markdown ๋ฐฐ์ง€

[![Skillstore security assessment](https://skillstore.io/badges/skills/emilkowalski-ask-sonner/security.svg)](https://skillstore.io/skills/emilkowalski-ask-sonner?utm_source=security_passport_badge)

HTML ๋ฐฐ์ง€

<a href="https://skillstore.io/skills/emilkowalski-ask-sonner?utm_source=security_passport_badge"><img src="https://skillstore.io/badges/skills/emilkowalski-ask-sonner/security.svg" alt="Skillstore security assessment" loading="lazy"></a>

์ž„๋ฒ ๋“œ ์นด๋“œ

<iframe src="https://skillstore.io/embed/skills/emilkowalski-ask-sonner.html" title="Skillstore Security Assessment" sandbox="allow-popups allow-popups-to-escape-sandbox" loading="lazy" referrerpolicy="no-referrer" width="420" height="180"></iframe>
ํ•™์ˆ  ์ธ์šฉ (APA ยท BibTeX ยท CFF)

APA ์ธ์šฉ

emilkowalski. (2026). ask-sonner security audit report (audit version 1) [Author version unspecified]. Skillstore. https://skillstore.io/skills/emilkowalski-ask-sonner/audits/1

BibTeX ์ธ์šฉ

@techreport{emilkowalski-emilkowalski-ask-sonner-2026, author = {emilkowalski}, title = {ask-sonner security audit report (audit version 1)}, institution = {Skillstore}, year = {2026}, number = {1}, url = {https://skillstore.io/skills/emilkowalski-ask-sonner/audits/1}, note = {Author version unspecified} }

CITATION.cff

cff-version: 1.2.0 message: "If you use this Skill, cite its author and this versioned security audit report." title: "ask-sonner security audit report (audit version 1)" version: "unspecified" type: report authors: - name: "emilkowalski" date-released: "2026-08-11" url: "https://skillstore.io/skills/emilkowalski-ask-sonner/audits/1" identifiers: - type: other value: "skillstore:emilkowalski-ask-sonner:audit:1" description: "Skillstore immutable audit report identifier"

Skillstore ์ ์ˆ˜

์ด ์ ์ˆ˜์˜ ์ด์œ  ์ฆ๊ฑฐ ์‹ ๋ขฐ๋„: ์ค‘๊ฐ„
55
์•„ํ‚คํ…์ฒ˜
85
์œ ์ง€๋ณด์ˆ˜์„ฑ
85
์ฝ˜ํ…์ธ 
65
์ปค๋ฎค๋‹ˆํ‹ฐ
83
์‚ฌ์–‘ ์ค€์ˆ˜

๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฒƒ

Add Toasts to a React Application

Configure the Toaster and choose the correct toast method for common user feedback.

Standardize Product Notifications

Create consistent toast behavior, styling, actions, icons, and themes across a product.

Resolve Sonner Display Problems

Trace missing, duplicated, unstyled, hidden, persistent, or incorrectly targeted notifications.

์ด ํ”„๋กฌํ”„ํŠธ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์„ธ์š”

Basic Setup
Show me how to add Sonner to my React application with one Toaster and a success toast.
Promise Feedback
Convert this asynchronous save flow to toast.promise with clear loading, success, and error messages: [describe flow].
Custom Styling
Recommend the simplest Sonner styling approach for these design requirements: [requirements]. Include theme and icon configuration.
Systematic Diagnosis
Diagnose this Sonner issue using my component placement, call site, framework, styles, and observed behavior: [context]. Prioritize likely causes.

๋ชจ๋ฒ” ์‚ฌ๋ก€

  • Mount one Toaster near the application root.
  • Trigger toast calls from client events, effects, or callbacks.
  • Use stable identifiers when updating an existing toast.

ํ”ผํ•˜๊ธฐ

  • Do not mount a Toaster on every page or conditionally.
  • Do not call toast directly inside server actions.
  • Do not layer many important CSS overrides when custom rendering is clearer.

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ

Does Sonner require a provider?
No. Mount one Toaster and import the toast function where client code needs it.
Can toast be called from a server action?
No. Return the action result and call toast from the client code that receives it.
How do I update a loading toast?
Store the returned toast identifier, then call another toast method with that same identifier.
How do I support dark mode?
Set the Toaster theme to system or pass the resolved value from your theme provider.
Why does one toast appear in every Toaster?
Assign each Toaster an identifier and pass the matching toasterId with the toast call.
When should I use custom rendering?
Use custom rendering when a design system needs complete visual control while retaining Sonner behavior.

๊ฐœ๋ฐœ์ž ์„ธ๋ถ€ ์ •๋ณด

์ž‘์„ฑ์ž

emilkowalski

๋ผ์ด์„ ์Šค

MIT

Skillstore ๋ฆฌ๋น„์ „

r1

๋ฒ„์ „ ์•ˆ๋‚ด

์ž‘์„ฑ์ž๊ฐ€ ๋ฒ„์ „์„ ์„ ์–ธํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ฐธ์กฐ

c40485c25b35e0203cf615647a1fd81ad7a69ea8

์œ ์ง€๋ณด์ˆ˜ ์ตœ์‹ ์„ฑ

2026. 8. 11.

์‚ฌ์šฉ๋Ÿ‰

0 ๋‹ค์šด๋กœ๋“œ ยท 0 ์กฐํšŒ

ํŒŒ์ผ ๊ตฌ์กฐ

๐Ÿ“„ API.md

๐Ÿ“„ SKILL.md