OpenClaw QuickStart (6): Skills, MCP, and Shipping Something Real
Write your first Skill, attach an MCP server for browser automation, schedule it as a cron, and ship a real morning-briefing agent. The point where the install becomes a tool you'd miss if it disappeared.
Five pieces in, you have a working OpenClaw with a chat channel. This is where it stops being a demo.
What we’ll build
A morning-briefing agent that:
- Runs at 7am every weekday
- Fetches the top headlines from Hacker News (via a Playwright MCP server)
- Reads my calendar for the day (via a Skill that wraps
gcalcli) - Summarizes both into a paragraph and pushes it to my Telegram
That’s a real workflow. By the end you’ll have the bones to swap in your own data sources.
Step 1: Write a Skill
A Skill lives at ~/.openclaw/skills/<name>/SKILL.md. Let’s write one for “summarize headlines”:
| |
Create ~/.openclaw/skills/summarize-headlines/SKILL.md:
| |
Two design notes:
- The trigger field is what the model sees when deciding whether the skill applies. Write it from the user’s perspective, not the implementation’s.
- The body is the SOP. Treat it like onboarding doc for a new junior employee — examples, edge cases, output format. The more specific the better.
Restart the gateway and verify the skill loaded:
| |
Step 2: Attach an MCP server
OpenClaw doesn’t speak MCP natively — it uses MCPorter as a shim. Install it:
| |
Now add Playwright via MCPorter:
| |
Tell OpenClaw about MCPorter in openclaw.json:
| |
Restart the gateway. The Playwright MCP exposes browser-automation tools (navigate, screenshot, click, extract_text) that the agent can now call.
Test from the TUI:
Use Playwright to fetch the top 5 stories from
https://news.ycombinator.com and just give me the titles and URLs.
If the agent comes back with a list, the wiring is good.
Step 3: A skill that wraps a CLI tool
I use gcalcli for calendar. Skill:
| |
~/.openclaw/skills/today-calendar/SKILL.md:
| |
Notice the skill is essentially a recipe, not a function. The model is the runtime. The exec tool is the verb. The skill is the noun-of-knowledge that ties them together.
Step 4: A composing skill
Now a skill that uses both:
| |
~/.openclaw/skills/morning-briefing/SKILL.md:
| |
Morning Briefing — YYYY-MM-DD
Today
[output of today-calendar]
News
[output of summarize-headlines]
Send the result to the default channel.
The skills_required field tells OpenClaw to keep the bodies of those skills hot-loaded when this skill triggers. No re-fetch, no extra latency.
Step 5: Cron
In openclaw.json:
| |
0 7 * * 1-5 is 7am Mon–Fri. Restart the gateway. Verify with:
| |
The first time it runs, watch the gateway log. You’ll see the agent loop fire, the skill load, the Playwright tool calls scroll past, and finally a message land in your Telegram.
What you have now
- A long-lived agent talking to a real chat platform
- Skills that capture domain knowledge separately from the agent loop
- An MCP server providing capabilities OpenClaw doesn’t have natively
- A cron job that turns it from “I have to ask” into “it shows up”
That is the whole loop. Every other case study in the official docs — second-brain, content pipeline, devops automation — is a variation on these five steps. Different skills, different MCPs, different cron lines.
What I’d build next
Three things, in order of effort:
- Add a feedback loop. Reply to the morning briefing with corrections (“skip crypto headlines”). Have a skill that writes those corrections into
~/.openclaw/memory/feedback/morning-briefing.md. The next morning’s briefing pulls them in. - Make the news source configurable. A skill that reads from
~/openclaw-workspace/sources.yamland iterates. That gets you “RSS reader as agent” almost for free. - Wire a second channel. Same agent, also on DingTalk for work hours. The skills don’t change.
That is where I will leave the QuickStart. The rest of the official docs go deep on each layer; you now have the map to navigate them.
If you want a single takeaway, it is that the boring layers (skills, memory, channels) are where the value is. The agent loop is the same agent loop everyone has. What makes your install useful is the skill library you build and the channels you put it on. Good luck.