skills/widget/SKILL.md
Create, update, hide, show, list, and delete Übersicht desktop widgets on macOS. Use this skill whenever the user asks for desktop widgets, desktop gadgets, or widgets.
npx skillsauth add pr-e/openclaw-master-skills widgetInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
~/Library/Application Support/Übersicht/widgets/~/.claude/skills/widget/templates/ after install, or .claude/skills/widget/templates/ inside this repo/Applications/Übersicht.app or /Applications/Uebersicht.appbash scripts/setup.sh firstscripts/setup.sh is the default entrypoint: it installs missing host dependencies, starts Übersicht, prepares the widget directory, installs the skill, and verifies the resultbash scripts/setup.sh --check only when the user explicitly wants a dry-run check or when you are diagnosing an installation problembash ~/.claude/skills/widget/scripts/doctor.sh only for a fast post-install health check~/.claude/skills/widget/scripts/ for setup, starting Übersicht, checking the environment, installing widgets, and listing widgetsposition: fixedbottom >= 90px40px140px to 360px48px to 220pxpointer-events: none1000ms and 600000ms1000ms only for clocks or clearly time-sensitive UIrefreshFrequency = falsepatterns.md before inventing new structure14px to 20pxSF Pro Display and SF Mono# First-time setup inside this repo
bash scripts/setup.sh
bash scripts/setup.sh --check
# Fast post-install health check
bash ~/.claude/skills/widget/scripts/doctor.sh
# Start Übersicht
bash ~/.claude/skills/widget/scripts/start-uebersicht.sh
# Install or update a template widget
bash ~/.claude/skills/widget/scripts/install-widget.sh \
~/.claude/skills/widget/templates/clock.jsx
# List installed widgets
bash ~/.claude/skills/widget/scripts/list-widgets.sh
# Write a brand-new custom widget
cat > ~/Library/Application\ Support/Übersicht/widgets/{name}.jsx << 'EOF'
{widget_code}
EOF
# Hide a widget without deleting it
mv ~/Library/Application\ Support/Übersicht/widgets/{name}.jsx \
~/Library/Application\ Support/Übersicht/widgets/{name}.jsx.disabled
# Show a hidden widget
mv ~/Library/Application\ Support/Übersicht/widgets/{name}.jsx.disabled \
~/Library/Application\ Support/Übersicht/widgets/{name}.jsx
# Delete a widget
rm ~/Library/Application\ Support/Übersicht/widgets/{name}.jsx
Prefer the scripts/ helpers for host operations. Only write raw widget files directly when creating or replacing actual JSX content.
When the user asks for a standard widget that already exists as a built-in template, do not rewrite it from scratch. Run scripts/setup.sh if needed, then install the matching template.
Do not install or copy any widget file until scripts/setup.sh has completed successfully and the host app is available.
// Optional shell command. stdout is passed into render as output.
export const command = "date '+%H:%M:%S'"
// Refresh frequency in milliseconds. Pure frontend widgets should use false.
export const refreshFrequency = 1000
// CSS positioning. Use position: fixed.
export const className = `
position: fixed;
bottom: 90px;
right: 40px;
`
// render receives { output, error }
export const render = ({ output }) => {
return <div>{output?.trim()}</div>
}
react// Bad
import { useState } from 'react'
// Good
import { React } from 'uebersicht'
render// Bad
export const render = () => {
const [n, setN] = React.useState(0)
}
// Good
const Widget = () => {
const { useState } = React
const [n, setN] = useState(0)
return <div>{n}</div>
}
export const render = () => <Widget />
// Bad
setRemaining(r => {
if (r <= 1) return p => p === 'work' ? BREAK : WORK
})
// Good
useEffect(() => {
if (remaining !== 0) return
setPhase(p => p === 'work' ? 'break' : 'work')
setRemaining(p => p === 'work' ? BREAK : WORK)
}, [remaining])
| Position | CSS |
|----------|-----|
| Bottom right | bottom: 90px; right: 40px; |
| Bottom left | bottom: 90px; left: 40px; |
| Top right | top: 40px; right: 40px; |
| Top left | top: 40px; left: 40px; |
| File | Purpose | Default Position |
|------|---------|------------------|
| clock.jsx | Clock and date | Bottom right |
| horizon-clock.jsx | Alternate horizontal clock | Bottom right |
| pomodoro.jsx | Pomodoro timer | Bottom left |
| now-playing.jsx | Apple Music now playing | Bottom center |
| system-stats.jsx | CPU, memory, battery | Top right |
| weather-canvas.jsx | Animated weather card | Top left |
| git-pulse.jsx | Local Git activity heatmap | Top right |
| memo-capsule.jsx | Local quick-note capsule | Top center |
| volume-knob.jsx | System volume control knob | Right side |
| tap-counter.jsx | Simple interactive counter with persisted local state | Bottom right |
Copy a template directly when it already matches the request, or use it as the starting point for a custom widget.
background: rgba(8, 12, 20, 0.72);
backdrop-filter: blur(24px);
-webkit-backdrop-filter: blur(24px);
border-radius: 18px;
border: 1px solid rgba(255, 255, 255, 0.08);
box-shadow: 0 14px 40px rgba(0, 0, 0, 0.35);
font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', sans-serif;
color: rgba(255, 255, 255, 0.92);
Add this for display-only widgets:
pointer-events: none;
date '+%H:%M:%S'
date '+%Y年%-m月%-d日 %A'
pmset -g batt | grep -o '[0-9]*%' | head -1
top -l 1 | grep "CPU usage" | awk '{print $3}'
curl -s "wttr.in/?format=%t+%C"
Remember to .trim() command output before rendering it.
development
Fetch and read transcripts from YouTube videos. Use when you need to summarize a video, answer questions about its content, or extract information from it.
devops
Fetch and summarize YouTube video transcripts. Use when asked to summarize, transcribe, or extract content from YouTube videos. Handles transcript fetching via residential IP proxy to bypass YouTube's cloud IP blocks.
content-media
# youtube-auto-captions - YouTube 自动字幕 ## 描述 自动为 YouTube 视频生成字幕,支持多语言翻译、时间轴校准。提升视频可访问性和 SEO。 ## 定价 - **按次收费**: ¥9/次 - 每视频最长 60 分钟 - 支持 50+ 语言 ## 用法 ```bash # 生成字幕 /youtube-auto-captions --video <video_id> --lang zh # 翻译字幕 /youtube-auto-captions --video <video_id> --translate en,ja,ko # 批量处理 /youtube-auto-captions --playlist <playlist_id> --lang zh # 导出字幕 /youtube-auto-captions --video <video_id> --export srt ``` ## 技能目录 `~/.openclaw/workspace/skills/youtube-auto-captions/` ## 作者 张 sir #
development
YouTube Data API integration with managed OAuth. Search videos, manage playlists, access channel data, and interact with comments. Use this skill when users want to interact with YouTube. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway).