From sundial-org-awesome-openclaw-skills-4
Creates, designs, and packages reusable Clawdbot skills from scratch or by extracting ad-hoc functionality like scripts or instructions. Handles Clawdbot integrations such as tool calling, memory, and message routing.
npx claudepluginhub joshuarweaver/cascade-ai-ml-agents-misc-2 --plugin sundial-org-awesome-openclaw-skills-4This skill uses the workspace's default tool permissions.
An opinionated, AI-native design guide for Clawdbot skills. Focuses on **clawdbot-specific integration patterns** — message routing, cron scheduling, memory persistence, channel formatting — not generic programming advice.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
An opinionated, AI-native design guide for Clawdbot skills. Focuses on clawdbot-specific integration patterns — message routing, cron scheduling, memory persistence, channel formatting — not generic programming advice.
Assumes: The agent knows how to write code, structure projects, and handle errors. This skill teaches clawdbot-specific concerns.
Load the clawddocs (or equivalent) skill first. This skill relies on Clawdbot documentation for authoritative feature details. The clawddocs skill provides:
Documentation categories (via clawddocs):
| Category | Path | Use for |
|---|---|---|
| Gateway & Config | /gateway/ | Configuration, security, health |
| Tools | /tools/ | Skills, browser, bash, subagents |
| Automation | /automation/ | Cron jobs, webhooks, polling |
| Concepts | /concepts/ | Sessions, models, queues, streaming |
| Providers | /providers/ | Discord, Telegram, WhatsApp, etc. |
When this skill says "consult documentation," use clawddocs to fetch the relevant doc.
Skills are how Clawdbot extends itself. They survive context limits, compose cleanly, and share via ClawdHub.
Most good skills start as scattered notes before anyone formalizes them. This skill is a protocol for that formalization — turning "remember to do X" into something that composes and shares.
Follow these stages in order. Each produces artifacts that feed the next.
Two entry modes:
Skip this stage if building a new skill from scratch.
Use this when functionality already exists but isn't packaged as a skill. Common sources:
<workspace>/scripts/ that aren't part of any skillGather the artifacts:
Ask:
Example inventory:
- scripts/mail/check.py — fetches and processes emails
- TOOLS.md ## Mail Rules — documents the mail command syntax
- HEARTBEAT.md — includes "run mail heartbeat" instruction
- mail-rules.yaml — configuration file
Assess current state:
Output: Inventory of existing artifacts with assessment notes. Then proceed to Stage 1.
Goal: Concrete clarity on what the skill does and when it's needed.
Work through these questions with the user:
What does this skill do? (one sentence)
When should this skill be loaded?
What does success look like? For each example, what's the outcome?
If extracting: Derive from actual usage, not just hypotheticals. It's ok to generalise the problem if that's what the user wants.
Output: Problem statement with trigger examples and success criteria.
Goal: Understand what the skill needs to work with.
Ask the user: Is this skill for your setup specifically, or should it work for any Clawdbot instance?
| Choice | Implications |
|---|---|
| Universal | Generic paths (<workspace>/), no assumptions about installed tools, minimal references to user-specific config, suitable for ClawdHub |
| Particular | Can reference specific local paths, skills, tools, TOOLS.md entries; tailored to user's workflow |
This affects many downstream decisions. Capture it early.
If extracting: Also decide what stays in workspace (user config, state) vs. what moves to skill (scripts, instructions, references).
Skip this section if building a Universal skill.
When building for a particular setup, leverage existing workspace capabilities:
<available_skills> from your system promptPrioritise skills which have their dependencies fulfilled and are in active use.
Example: Building a "daily briefing" skill? Scan for: calendar skills (event data), weather skills (forecast), mail skills (unread count), location skills (context-aware content). Read each to understand how to compose them.
Output from this step: List of synergistic skills with brief notes on how each might integrate.
Clawdbot has powerful built-in features with deep semantics and rich configurability. They can be combined in unexpected ways to solve user problems.
Conduct a creatively-minded review of the documentation with the skill's needs in mind. Use clawddocs to explore — start with /concepts/ and /tools/ categories. Think like a meta-programmer: Clawdbot's features are primitives that compose. A skill might combine cron scheduling with canvas presentation and node camera access in ways no single feature anticipates. If a solution would require a configuration change, check /gateway/configuration and suggest it to the user.
Documentation categories to explore:
| Need | Doc Category | Tools/Features |
|---|---|---|
| Send messages | /concepts/messages | message tool |
| Scheduled tasks | /automation/cron-jobs | cron tool |
| Persistent memory | /concepts/ | Memory system, state files |
| Background work | /tools/subagents | sessions_spawn |
| Device interaction | /nodes/ | nodes tool (camera, screen, location) |
| UI presentation | /tools/ | canvas tool |
| Web browsing | /tools/browser | browser tool |
| Web research | /tools/ | web_search, web_fetch |
| Image analysis | /tools/ | image tool |
Verify feature usage against documentation. Don't assume — features evolve and have nuances. Use clawddocs to check:
/tools/ doc)/providers/ for the target channel)/gateway/configuration)Output: Capability map listing external deps, Clawdbot features to use, and generalisability choice.
Goal: Identify applicable design patterns and propose initial architecture.
Based on Stages 1-2, identify which patterns apply. Load relevant pattern references:
| If the skill... | Load pattern |
|---|---|
| Wraps a CLI tool | patterns/cli-wrapper.md |
| Wraps a web API | patterns/api-wrapper.md |
| Monitors and notifies | patterns/monitor.md |
Skills often combine multiple patterns. Load all that apply and synthesize.
A critical design juncture: how should executable scripts be combined with agent instructions in SKILL.md?
Use scripts when:
Use agent instructions when:
The split: scripts handle the mechanics, instructions handle the judgment.
A skill that prepares briefings before meetings. This illustrates the full agent→script→agent flow.
User message:
"Brief me on Acme Corp before my 2pm call"
Phase 1: Agent parses and routes (SKILL.md instructions)
## Handling Briefing Requests
When user requests a briefing:
1. Extract the **subject** (company, person, project, topic)
2. Extract **context** if provided (meeting, call, presentation, general)
3. Check calendar for related upcoming events
4. Run the appropriate gather script based on subject type:
- Company/org → `scripts/gather.py --type company --name "..."`
- Person → `scripts/gather.py --type person --name "..."`
- Project → `scripts/gather.py --type project --name "..."`
5. Analyze results and compose briefing (see Phase 3)
The agent interprets "Acme Corp" as a company, "2pm call" as meeting context. It checks calendar, finds "Call with Acme Corp re: Q2 partnership" at 2pm.
Phase 2: Script fetches external data
scripts/gather.py --type company --name "Acme Corp" --context meeting
# scripts/gather.py - deterministic data gathering
def gather_company(name: str, context: str) -> dict:
return {
"emails": search_emails(f"from:{domain} OR to:{domain}", days=30),
"calendar": get_related_events(name, days=14),
"web": search_web(f"{name} news", recent=True),
"contacts": find_contacts(name),
"history": load_prior_briefings(name) # from state
}
# Output: structured JSON with all gathered data
Phase 3: Agent synthesizes and acts (SKILL.md instructions)
## Composing the Briefing
With gathered data, synthesize: key context, recent activity, news, relationship history, suggested talking points, and warnings.
If meeting is <1 hour away, send immediately. If >1 hour, offer to set a reminder.
After delivery: log to `<workspace>/memory/`, update `<skill>/state.json`.
The agent composes a briefing from the structured data, using judgment to prioritize and frame.
If user confirms reminder → dynamically select the appropriate reminder system. The skill doesn't hardcode "use Apple Reminders" — it checks what's available (Apple Reminders skill? Google Calendar? cron-based?) and routes accordingly. This is agent judgment, not script logic.
Skills often combine multiple Clawdbot primitives in non-obvious ways. See patterns/composable-examples.md for 7 detailed examples:
Output: Selection of Clawdbot system features with rationale (if any), initial architecture sketch.
Goal: User-reviewed specification ready for implementation.
If persistent state is needed, where should it live?
<workspace>/memory/ — for context that's part of the user's memory<skill>/state.json — for skill-internal state (lives with the skill)<workspace>/state/<skill>.json — for skill-internal state (common workspace area)<workspace>/TOOLS.md — for user-specific configuration notesBy default, skills shouldn't write state outside the workspace. ~/.clawdbot/ and other system-level config directories are not suitable for state storage.
Ask about the user's existing setup:
Check USER.md and TOOLS.md for documented coding preferences.
If the skill needs API keys or credentials:
SERVICENAME_API_KEYCommon patterns:
security command~/.config/skillname/ (gitignored)op read)Present the proposed architecture:
If extracting: Include migration notes — what moves where, what workspace files need updating.
The specification is a review checkpoint. Its purpose is letting the user verify:
Validate against requirements:
Iterate until the user is satisfied. This is where design problems surface cheaply.
Output: Design specification including state approach, user preferences, secret handling, and skill structure.
Goal: Working skill with all components.
Strong default: Same-session implementation. Work through the spec with user review at each step. This keeps the user in the loop for integration decisions.
Coding-agent handoff is optional and should be reserved for complex software subcomponents only — not entire skills. The SKILL.md and integration logic should stay in the main session where the user can review.
Work through in order, with user review at each checkpoint:
If extracting: 6. Update workspace files (remove migrated content, add skill references) 7. Clean up old locations 8. Verify skill works standalone
The SKILL.md frontmatter determines discoverability and provides structured metadata. The description field is critical — when the agent scans available skills, this determines whether the skill gets loaded.
See https://docs.clawd.bot/tools/skills for Clawdbot-specific metadata documentation.
Frontmatter format:
---
name: my-skill
description: [description optimized for discovery]
homepage: https://github.com/user/repo # optional
metadata: {"clawdbot": {"emoji": "🔧", "requires": {"bins": ["tool"], "env": ["API_KEY"]}, "install": [...]}}
---
Description field — write for keyword matching and context recognition:
Example (good):
description: Download videos/audio from YouTube and other sites with interactive quality selection, learned preferences, and recent directory tracking. Use when user shares a video URL or asks to download video/audio.
Example (too sparse):
description: YouTube downloader.
Metadata field (optional but recommended for publishable skills)
Refer to the format specification at https://docs.clawd.bot/tools/skills.
Simple example:
{
"clawdbot": {
"emoji": "📍",
"requires": {
"bins": ["goplaces"],
"env": ["GOOGLE_PLACES_API_KEY"]
},
"primaryEnv": "GOOGLE_PLACES_API_KEY",
"install": [
{
"id": "brew",
"kind": "brew",
"formula": "steipete/tap/goplaces",
"bins": ["goplaces"],
"label": "Install goplaces (brew)"
}
]
}
}
Test the description: Would the agent select this skill if the user said each of your Stage 1 example phrases? If not, add the missing keywords.
Output: Complete skill directory ready for use.
Skills must handle paths carefully, especially for portability and multi-agent contexts.
| Prefix | Meaning | Example |
|---|---|---|
<workspace>/ | Agent's workspace root | <workspace>/TOOLS.md |
<skill>/ | This skill's directory | <skill>/scripts/check.py |
| (no prefix) | Skill-relative path | scripts/helper.sh |
Rules:
<workspace>/ prefix~/clawd or similar — workspaces are portable<workspace>/ paths, not ~/.clawdbot/ (skills don't own user home)Sub-agents via sessions_spawn may run in sandboxed containers with different mount points. Use clawddocs to check /tools/subagents for current sandbox configuration and path translation requirements. When spawning sub-agents that need workspace files, include path context in the task description.
Skills may interact with workspace structure:
| File | Purpose | When to reference |
|---|---|---|
<workspace>/TOOLS.md | Local tool notes | CLI wrappers storing user-specific config |
<workspace>/MEMORY.md | Long-term memory | Skills that contribute to memory |
<workspace>/memory/ | Daily logs | Skills that log activity |
<workspace>/HEARTBEAT.md | Periodic checks | Heartbeat-driven skills |
<workspace>/USER.md | User context | Skills needing user info |
Principle: Skills document what workspace files they touch and why.
Pattern references for common skill types:
patterns/cli-wrapper.md — wrapping CLI toolspatterns/api-wrapper.md — wrapping web APIspatterns/monitor.md — watching conditions and notifying