Token导航 LogoToken导航TokenDH.com
开发需要联网github未标认证来源可访问许可证需确认审计通过

web-haptics网络触觉

Agent Skill

web-haptics 用于记录任务执行中的错误、用户纠正、经验和能力缺口,适合在 Codex、Claude、Cursor、Gemini CLI 中希望让 Agent 持续沉淀问题、修正和最佳实践时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

12,888

周安装

537

GitHub Stars

2,519

下载量

4,296
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:web-haptics(网络触觉)
来源仓库:https://github.com/lochie/web-haptics
仓库路径:skills/web-haptics
安装命令:
npx skills add https://github.com/lochie/web-haptics --skill web-haptics
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/lochie/web-haptics --skill web-haptics

简介

使用 Web Vibration API 跨 React、Vue、Svelte 和 vanilla JavaScript 为 Web 应用程序提供触觉反馈。

  • 四种触发类别:通知(成功、警告、错误)、影响(轻、中、重)、选择(选择器/滑块制动)和额外预设(软、硬、轻推、嗡嗡声)
  • React、Vue、Svelte 的特定于框架的挂钩和可组合项;普通 JS 类; Nuxt 和 SvelteKit 中的自动 SSR 处理
  • 零依赖性,在不支持的平台(桌面)上静默无操作,无需进行功能检测
  • 内置 Apple HIG 设计规则:触觉补充视觉反馈、将强度与交互意义相匹配、与状态变化同步、避免过度使用以防止疲劳

SKILL.md

Install web-haptics (npm i web-haptics) and add haptic feedback to the app following these rules:

Package: web-haptics

Repository: https://github.com/lochie/web-haptics | License: MIT | Zero dependencies Uses the Web Vibration API. Silently no-ops on unsupported platforms (desktop). No error handling or feature detection needed.

Trigger Types

trigger() accepts one of these strings (empty value defaults to a sensible "medium" impact):

Notification (task outcomes):

  • "success" -- form saved, payment confirmed, upload complete
  • "warning" -- destructive action ahead, approaching limit, irreversible step
  • "error" -- validation failure, network error, permission denied

Impact (physical collisions):

  • "light" -- small toggle, subtle tap, minor interaction
  • "medium" -- button press, card snap-to-position, drop into place
  • "heavy" -- major state change, heavy element landed, force press

Selection (discrete stepping):

  • "selection" -- picker scroll, stepper increment, slider detent, segment switch

Framework Imports

React:

import { useWebHaptics } from "web-haptics/react";

const haptic = useWebHaptics();

<button onClick={() => haptic.trigger()}>Tap me</button>;

Vue:

<script setup>
import { useWebHaptics } from "web-haptics/vue";
const haptic = useWebHaptics();
</script>

<template>
  <button @click="haptic.trigger()">Tap me</button>
</template>

Svelte:

<script>
  import { createWebHaptics } from "web-haptics/svelte";
  import { onDestroy } from "svelte";
  const haptic = createWebHaptics();
  onDestroy(() => haptic.destroy());
</script>

<button on:click={() => haptic.trigger()}>Tap me</button>

Vanilla JS:

import { WebHaptics } from "web-haptics";

const haptics = new WebHaptics();
haptics.trigger(); // medium impact
haptics.trigger("success");

Next.js: add "use client" to any component using useWebHaptics(). Nuxt/SvelteKit: works directly, library handles SSR.

Trigger Presets & defaultPatterns

All named string presets have a corresponding object in defaultPatterns. Use when you need to pass a preset as a value rather than a string literal:

import { WebHaptics, defaultPatterns } from 'web-haptics'

const haptics = new WebHaptics()
haptics.trigger(defaultPatterns.light)

Extra presets not listed above: "soft", "rigid", "nudge", "buzz". See defaultPatterns for all available values.

Apple HIG Design Rules -- FOLLOW THESE

  1. Haptics supplement, never replace. Always pair with visual feedback. UI must work fully without haptics.
  2. Build causal relationships. The haptic must feel like a direct physical consequence of the user action.
  3. Match intensity to significance. Light interactions = light/selection. Standard = medium/success. Major = heavy/error/warning.
  4. Do not overuse. If every tap vibrates, nothing feels special. Reserve for meaningful moments only.
  5. Synchronize perfectly. Fire haptic at the exact instant the visual change occurs.
  6. Respect conventions. success=positive, error=negative, warning=cautionary, selection=discrete ticks only.
  7. For async ops, trigger when the RESULT arrives, synced with the visual state change: try {await submit(); haptic.trigger("success");} catch {haptic.trigger("error");}

Interaction to Type Quick Reference

Primary button tap = "medium" | Secondary button = "light" Form success = "success" | Validation error = "error" | Network error = "error" Toggle switch = "light" | Delete before confirm = "warning" Picker/wheel = "selection" | Slider detents = "selection" | Tab switch = "selection" Drag-drop snap = "medium" | Long press = "heavy" | Modal appear = "medium" Pull-to-refresh threshold = "light" | Swipe dismiss threshold = "light" Payment confirmed = "success"

Anti-Patterns -- AVOID

  • Haptic on every tap (fatigue)
  • "error" for non-errors (breaks conventions)
  • Haptic without visual feedback (some devices cannot vibrate)
  • Haptic on page load or passive scroll (invasive)
  • "heavy" for minor interactions (jarring)
  • Long continuous vibrations (web haptics = brief transient pulses)

Before implementing, confirm with the user:

  • Which interactive elements to target
  • Whether to add at shared component level or individual call sites

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

35.48%
按下载量换算1,524

Claude

30.91%
按下载量换算1,328

Cursor

18.5%
按下载量换算795

Gemini CLI

8.79%
按下载量换算378

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills