sounds-on-the-web
raphaelsalaja/skill · Agent Skill
Проверить интерфейс звуковой обратной связи на качество UX, доступность и практические шаблоны реализации.
Перейти к установке ↓Обзор
| Автор | |
|---|---|
| Репозиторий | raphaelsalaja/skill ↗ |
| Папка скилла | sounds-on-the-web |
| Звёзды | 42 |
| Форки | 5 |
| Файлы | 1 |
| Лицензия | MIT |
| Обновлён | 17 марта 2026 г. |
| Ссылки | Исходник скилла ↗ · Репозиторий ↗ |
Проверка Mozgi
Что мы нашли в файлах скилла. Подробности — по подписке.
Установка
Скилл — это папка с файлом SKILL.md. Выберите своего агента и скопируйте команды в терминал (macOS, Linux или Git Bash на Windows) в корне проекта.
Скопируйте промпт и вставьте в Claude, Codex или другого ассистента: он сам проверит скилл и подключит его.
Установи мне скилл «sounds-on-the-web» с mozgi.io (https://mozgi.io/skills/raphaelsalaja-sounds-on-the-web/). 1. Скачай архив: https://mozgi.io/skills/raphaelsalaja-sounds-on-the-web/download Если не скачивается — возьми папку скилла из исходника: https://github.com/raphaelsalaja/skill/tree/main/skills/sounds-on-the-web 2. Прочитай SKILL.md и остальные файлы. Проверь, что скилл безопасен: нет скрытых команд, отправки данных наружу или скриптов, которые делают не то, что описано. Если что-то подозрительно — остановись и скажи мне. 3. Положи папку «sounds-on-the-web» в папку скиллов своего агента: .claude/skills/ для Claude Code, .agents/skills/ для Codex, .cursor/skills/ для Cursor, .gemini/skills/ для Gemini CLI. В проекте — внутри проекта, иначе в домашней папке (~/.claude/skills/ и т. п.). 4. Убедись, что получилось <папка скиллов>/sounds-on-the-web/SKILL.md. 5. Коротко расскажи, что умеет этот скилл, и предложи попробовать его на моей задаче. Если какой-то шаг не можешь сделать сам — подскажи, что нажать или ввести.
git clone --depth 1 --branch main https://github.com/raphaelsalaja/skill.git /tmp/skill mkdir -p .claude/skills cp -r /tmp/skill/skills/sounds-on-the-web .claude/skills/sounds-on-the-web
Перезапустите Claude Code — скилл появится в списке, вызвать вручную: /sounds-on-the-web. Для всех проектов сразу — папка ~/.claude/skills.
git clone --depth 1 --branch main https://github.com/raphaelsalaja/skill.git /tmp/skill mkdir -p .agents/skills cp -r /tmp/skill/skills/sounds-on-the-web .agents/skills/sounds-on-the-web
Codex ищет скиллы в .agents/skills от текущей папки до корня репозитория; вызвать вручную — /skills или $sounds-on-the-web. Для всех проектов — ~/.agents/skills.
git clone --depth 1 --branch main https://github.com/raphaelsalaja/skill.git /tmp/skill mkdir -p .cursor/skills cp -r /tmp/skill/skills/sounds-on-the-web .cursor/skills/sounds-on-the-web
Cursor подхватит скилл при запуске; вызвать вручную — «/» в чате агента. Cursor также читает .claude/skills и .agents/skills. Для всех проектов — ~/.cursor/skills.
git clone --depth 1 --branch main https://github.com/raphaelsalaja/skill.git /tmp/skill mkdir -p .gemini/skills cp -r /tmp/skill/skills/sounds-on-the-web .gemini/skills/sounds-on-the-web
Gemini CLI сам предложит включить скилл, когда задача подходит, — вы подтверждаете. Для всех проектов — ~/.gemini/skills.
Просмотрите SKILL.md и сопутствующие файлы перед установкой. Клик по файлу — предпросмотр.
Содержимое SKILL.md
Оригинальный текст автора · только чтениеSounds on the Web
Review UI code for audio feedback best practices and accessibility.
How It Works
1. Read the specified files (or prompt user for files/pattern)
2. Check against all rules below
3. Output findings in file:line format
Rule Categories
| Priority | Category | Prefix |
|----------|----------|--------|
| 1 | Accessibility | a11y- |
| 2 | Appropriateness | appropriate- |
| 3 | Implementation | impl- |
| 4 | Weight Matching | weight- |
Rules
Accessibility Rules
a11y-visual-equivalent
Every audio cue must have a visual equivalent; sound never replaces visual feedback.
Fail:
function SubmitButton({ onClick }) {
const handleClick = () => {
playSound("success");
onClick(); // No visual confirmation
};
}
Pass:
function SubmitButton({ onClick }) {
const [status, setStatus] = useState("idle");
const handleClick = () => {
playSound("success");
setStatus("success"); // Visual feedback too
onClick();
};
return <button data-status={status}>Submit</button>;
}
a11y-toggle-setting
Provide explicit toggle to disable sounds in settings.
Fail:
// No way to disable sounds
function App() {
return <SoundProvider>{children}</SoundProvider>;
}
Pass:
function App() {
const { soundEnabled } = usePreferences();
return (
<SoundProvider enabled={soundEnabled}>
{children}
</SoundProvider>
);
}
a11y-reduced-motion-check
Respect prefers-reduced-motion as proxy for sound sensitivity.
Fail:
function playSound(name: string) {
audio.play(); // Plays regardless of preferences
}
Pass:
function playSound(name: string) {
const prefersReducedMotion = window.matchMedia(
"(prefers-reduced-motion: reduce)"
).matches;
if (prefersReducedMotion) return;
audio.play();
}
a11y-volume-control
Allow volume adjustment independent of system volume.
Fail:
function playSound() {
audio.volume = 1; // Always full volume
audio.play();
}
Pass:
function playSound() {
const { volume } = usePreferences();
audio.volume = volume; // User-controlled
audio.play();
}
Appropriateness Rules
appropriate-no-high-frequency
Do not add sound to high-frequency interactions (typing, keyboard navigation).
Fail:
function Input({ onChange }) {
const handleChange = (e) => {
playSound("keystroke"); // Annoying on every keystroke
onChange(e);
};
}
Pass:
function Input({ onChange }) {
// No sound on typing - visual feedback only
return <input onChange={onChange} />;
}
appropriate-confirmations-only
Sound is appropriate for confirmations: payments, uploads, form submissions.
Pass:
async function handlePayment() {
await processPayment();
playSound("success"); // Appropriate - significant action
showConfirmation();
}
appropriate-errors-warnings
Sound is appropriate for errors and warnings that can't be overlooked.
Pass:
function handleError(error: Error) {
playSound("error"); // Appropriate - needs attention
showErrorToast(error.message);
}
appropriate-no-decorative
Do not add sound to decorative moments with no informational value.
Fail:
function Card({ onHover }) {
return (
<div onMouseEnter={() => playSound("hover")}> {/* Decorative, no value */}
{children}
</div>
);
}
appropriate-no-punishing
Sound should inform, not punish; avoid harsh sounds for user mistakes.
Fail:
function ValidationError() {
playSound("loud-buzzer"); // Punishing
return <span>Invalid input</span>;
}
Pass:
function ValidationError() {
playSound("gentle-alert"); // Informative but not harsh
return <span>Invalid input</span>;
}
Implementation Rules
impl-preload-audio
Preload audio files to avoid playback delay.
Fail:
function playSound(name: string) {
const audio = new Audio(`/sounds/${name}.mp3`); // Loads on demand
audio.play();
}
Pass:
const sounds = {
success: new Audio("/sounds/success.mp3"),
error: new Audio("/sounds/error.mp3"),
};
// Preload on app init
Object.values(sounds).forEach(audio => audio.load());
function playSound(name: keyof typeof sounds) {
sounds[name].currentTime = 0;
sounds[name].play();
}
impl-default-subtle
Default volume should be subtle, not loud.
Fail:
const DEFAULT_VOLUME = 1.0; // Too loud
Pass:
const DEFAULT_VOLUME = 0.3; // Subtle default
impl-reset-current-time
Reset audio currentTime before replay to allow rapid triggering.
Fail:
function playSound() {
audio.play(); // Won't replay if already playing
}
Pass:
function playSound() {
audio.currentTime = 0;
audio.play();
}
Weight Matching Rules
weight-match-action
Sound weight should match action importance.
Fail:
// Loud fanfare for minor action
function handleToggle() {
playSound("triumphant-fanfare");
setEnabled(!enabled);
}
Pass:
// Subtle click for minor action
function handleToggle() {
playSound("soft-click");
setEnabled(!enabled);
}
// Richer sound for significant action
function handlePurchase() {
playSound("success-chime");
completePurchase();
}
weight-duration-matches-action
Sound duration should match action duration.
Fail:
// 2-second sound for instant action
function handleClick() {
playSound("long-whoosh"); // 2000ms
// Action completes immediately
}
Pass:
// Short sound for instant action
function handleClick() {
playSound("click"); // 50ms
}
// Longer sound for process
function handleUpload() {
playSound("upload-progress"); // Matches upload duration
}
Output Format
When reviewing files, output findings as:
file:line - [rule-id] description of issue
Example:
components/input/index.tsx:23 - [appropriate-no-high-frequency] Playing sound on every keystroke
lib/sounds.ts:45 - [a11y-reduced-motion-check] Not checking prefers-reduced-motion
Summary Table
After findings, output a summary:
| Rule | Count | Severity |
|------|-------|----------|
| a11y-visual-equivalent | 2 | HIGH |
| appropriate-no-high-frequency | 1 | HIGH |
| impl-preload-audio | 3 | MEDIUM |
Sound Appropriateness Matrix
| Interaction | Sound? | Reason |
|-------------|--------|--------|
| Payment success | Yes | Significant confirmation |
| Form submission | Yes | User needs assurance |
| Error state | Yes | Can't be overlooked |
| Notification | Yes | May not be looking at screen |
| Button click | Maybe | Only for significant buttons |
| Typing | No | Too frequent |
| Hover | No | Decorative only |
| Scroll | No | Too frequent |
| Navigation | No | Keyboard nav would be noisy |
References
Вопросы и ответы
Что делает скилл sounds-on-the-web?
Проверить интерфейс звуковой обратной связи на качество UX, доступность и практические шаблоны реализации.
Как установить sounds-on-the-web?
Откройте блок «Установка» на этой странице и выберите своего агента — Claude Code, Codex, Cursor или Gemini CLI: там готовые команды, которые копируют папку скилла в нужное место. Либо скопируйте промпт из вкладки «Через ассистента» — ассистент сам проверит и подключит скилл.
С какими нейросетями работает sounds-on-the-web?
Скиллы — это обычные инструкции в Markdown (формат Agent Skills), поэтому sounds-on-the-web подходит любому агенту, который читает SKILL.md: Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode и другие. Модель загружает инструкции только когда задача подходит под описание скилла.
Скилл sounds-on-the-web бесплатный?
Скилл опубликован автором raphaelsalaja в открытом доступе под лицензией MIT. Сам скилл ничего не стоит — вы платите только своему провайдеру нейросети за использованные токены.
Безопасно ли устанавливать скиллы?
Скилл — это инструкции, которые агент будет выполнять, поэтому перед установкой прочитайте SKILL.md и сопутствующие файлы. Скрипты из папки скилла запускаются только если их запустит агент — следите за тем, что он делает, и не давайте лишних прав.
Чем скилл отличается от MCP-сервера или плагина?
MCP-сервер и плагин дают модели новые инструменты — код, который выполняется и возвращает результат. Скилл даёт знания и порядок действий: как подходить к задаче, какие шаги делать и как выглядит хороший результат. Ему не нужен сервер или ключ API.