<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: bnspopi</title>
    <description>The latest articles on DEV Community by bnspopi (@bnspopi).</description>
    <link>https://dev.to/bnspopi</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3805678%2F04b0a6d0-4d03-482f-8d55-02a662237d1c.png</url>
      <title>DEV Community: bnspopi</title>
      <link>https://dev.to/bnspopi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bnspopi"/>
    <language>en</language>
    <item>
      <title>I Tried Installing OpenClaw on Windows in an Hour. Here's What Actually Happened.</title>
      <dc:creator>bnspopi</dc:creator>
      <pubDate>Mon, 20 Apr 2026 08:02:33 +0000</pubDate>
      <link>https://dev.to/bnspopi/i-tried-installing-openclaw-on-windows-in-an-hour-heres-what-actually-happened-ba0</link>
      <guid>https://dev.to/bnspopi/i-tried-installing-openclaw-on-windows-in-an-hour-heres-what-actually-happened-ba0</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnm9zqey3lk32epwbv9pb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnm9zqey3lk32epwbv9pb.png" alt=" " width="800" height="501"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4djtlilrf6zz2w9flglq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4djtlilrf6zz2w9flglq.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyqf5lt5ur187573kh5w3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyqf5lt5ur187573kh5w3.png" alt=" " width="800" height="464"&gt;&lt;/a&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/openclaw-2026-04-16"&gt;OpenClaw Writing Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/openclaw-2026-04-16"&gt;OpenClaw Challenge&lt;/a&gt; — Wealth of Knowledge prompt.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I saw the OpenClaw Challenge on DEV yesterday and decided to give it an hour. I'm a CS student on Windows, no prior Claude Code experience, currently in placement season and desperate for anything that triages my inbox. Spoiler: I did not get a working Gmail triage in an hour. But I learned enough about how OpenClaw works that I think it's worth writing down — especially for other Windows-first students who'll hit the same walls.&lt;/p&gt;

&lt;p&gt;This isn't a success story. It's the honest first-hour walkthrough I wish I'd found before starting.&lt;/p&gt;

&lt;h2&gt;
  
  
  What OpenClaw actually is
&lt;/h2&gt;

&lt;p&gt;OpenClaw is a personal agent framework. You install it, give it "skills" (Markdown files that describe what it should do and when), and it uses an LLM to reason through tasks. The pitch that pulled me in: &lt;strong&gt;a skill is just a &lt;code&gt;SKILL.md&lt;/code&gt; file&lt;/strong&gt;. No code, no deploy, no API gymnastics. You write Markdown, the model handles the rest.&lt;/p&gt;

&lt;p&gt;That pitch is true. But getting to the point where you can actually write and run a skill takes more setup than the DEV announcement suggests — at least on Windows.&lt;/p&gt;

&lt;h2&gt;
  
  
  The install
&lt;/h2&gt;

&lt;p&gt;I opened PowerShell and ran:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;iwr&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-useb&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;https://openclaw.ai/install.ps1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nx"&gt;~~~&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;endraw&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="n"&gt;It&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;worked.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;I&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;got&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;welcome&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;banner&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;nice&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;lobster&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;ASCII&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;logo.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;The&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;installer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;did&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;catch&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;that&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;I&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;was&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Windows&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;showed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;this:&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Windows&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;detected&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;—&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;OpenClaw&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;runs&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;great&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;WSL2&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Native&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Windows&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;might&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;be&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;trickier.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Quick&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;setup:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;raw&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="n"&gt;wsl&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--install&lt;/span&gt;&lt;span class="se"&gt;`{&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;endraw&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;one&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;command&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;one&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;reboot&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="n"&gt;I&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;missed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;this&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;warning.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Pushed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;past&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;it.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;In&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;hindsight:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;read&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;warning.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;If&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;you&lt;/span&gt;&lt;span class="s1"&gt;'re reading this post and you'&lt;/span&gt;&lt;span class="nx"&gt;re&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Windows&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="nx"&gt;install&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;WSL&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;first.&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;The&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;rest&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;of&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;this&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;story&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;is&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;partly&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;case&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;study&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;what&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;happens&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;when&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;you&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;don&lt;/span&gt;&lt;span class="s1"&gt;'t.

## The dependency I didn'&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;know&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;about&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="n"&gt;I&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;got&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;auth&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;step&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;hit:&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;raw&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Error: Claude CLI is not authenticated on this host.&lt;br&gt;
Run &lt;code&gt;claude auth login&lt;/code&gt; first, then re-run this setup.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
This surprised me. I hadn't realized **OpenClaw uses Claude Code as its LLM backend**. Claude Code is Anthropic's own terminal CLI, and it's a separate install with its own auth flow. So before I could use OpenClaw, I had to:

1. Install Claude Code: {% raw %}`irm https://claude.ai/install.ps1 | iex`
2. Run `claude` and log in via browser (requires a paid Claude plan — Pro, Max, Team, or Console credits)

I already had Claude Pro from doing coursework, so this wasn't a blocker. But if you don't have a paid Claude account, **you can't use OpenClaw this way.** That's a real gate nobody mentioned in the challenge announcement.

Worth knowing up front.

## Setup finished — then broke again

After Claude Code was logged in, I re-ran `openclaw setup`. It finished cleanly:

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Wrote ~/.openclaw/openclaw.json&lt;br&gt;
Workspace OK: ~/.openclaw/workspace&lt;br&gt;
Sessions OK: ~/.openclaw/agents/main/sessions&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
Great. I ran {% raw %}`openclaw tui` to start chatting and got:

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Error: Missing gateway auth token.&lt;br&gt;
Fix: set OPENCLAW_GATEWAY_TOKEN/OPENCLAW_GATEWAY_PASSWORD, pass --token/--password,&lt;br&gt;
or resolve the configured secret provider for this credential.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
OpenClaw has a gateway architecture — there's a long-running process (the gateway) that the CLI connects to. You have to start the gateway separately, generate a token, then pass that token to the client. Straightforward in concept, but the setup flow doesn't walk you through it.

This was the wall I didn't get past in my hour.

## What I did learn by poking around

The one command that was genuinely illuminating: {% raw %}`openclaw skills`.

It lists every skill OpenClaw knows about. On a fresh install, I counted **52 bundled skills**, 8 of them ready to use out of the box. Highlights:

- `taskflow-inbox-triage` — an email triage example already built by the OpenClaw team
- `gog` — Google Workspace (Gmail, Calendar, Drive) integration
- `himalaya` — IMAP/SMTP email via CLI
- `skill-creator` — a skill that helps you write other skills
- `github`, `notion`, `obsidian`, `slack`, `discord` — standard productivity integrations
- `camsnap`, `openhue`, `sonoscli` — IoT stuff I didn't expect

Most are marked "needs setup" — meaning the skill file is there, but you need to install the underlying CLI tool and authenticate it. It's a plugin model: OpenClaw orchestrates, the real work happens in well-established CLIs like `gh`, `himalaya`, `obsidian-cli`.

That's actually a smart design. Instead of reimplementing integrations, OpenClaw wraps tools that already exist.

## Three things I genuinely learned

**1. A "skill" is a thin layer over an existing CLI.**
When I thought "skill," I pictured a self-contained script. It's not. A skill is mostly a `SKILL.md` that tells the model *how and when* to call an underlying command-line tool. Want Gmail triage? You don't write mail parsing — you configure `gog` or `himalaya`, and your skill just tells the model which commands to run against it.

This means the Markdown-only pitch is half true. The Markdown is your job. But the CLI underneath still needs to exist and be authenticated.

**2. Beta software has a dependency graph, and Windows makes it worse.**
My install chain ended up being: Windows → Node.js → Claude Code → paid Claude account → OpenClaw → Gateway → token → skill → underlying CLI → that CLI's own auth. Each layer is a point of failure. On WSL2 or Linux, most of these are smoother. Native Windows compounds the friction.

If you're on Windows and serious about using OpenClaw, spend the 15 minutes to install WSL2 first. Future you will thank you.

**3. The `SKILL.md` idea is still worth getting excited about.**
Even without finishing the install, reading through the bundled skills taught me something about how to structure *any* agent instruction. The good ones have: a sharp `description` (the trigger), explicit `when to use` rules, concrete examples with expected output, and explicit "don't do this" clauses. That structure is reusable even outside OpenClaw — it's just good prompt engineering discipline, enforced.

I started writing a skill for student inbox triage (URGENT / REVIEW / APPLIED / ARCHIVE buckets for placement-season email). I didn't get to run it. But writing it forced me to articulate what "important email" actually means to me, which is a clarity exercise I don't think I would've done otherwise. That alone was worth the hour.

## Would I keep using it?

Honestly? Probably not right now. I'm a student mid-placement-season. My bandwidth for debugging beta CLI tooling on native Windows is zero. If I come back to OpenClaw, it'll be on WSL2 during a break.

But I'd recommend it to someone with a Mac, spare time, and an inbox they want to tame. The underlying idea is right. The Windows-native onboarding is just rough.

## TL;DR for Windows students

- **Install WSL2 first.** Don't skip the warning.
- **You need a paid Claude plan** (Pro or above). The free tier won't work.
- **Budget 2–3 evenings**, not 1 hour. There are multiple auth flows to get through.
- **Explore `openclaw skills` immediately** — it's the fastest way to understand the model.
- **The `SKILL.md` structure is useful even if you never run the skill.** Treat writing one as a clarity exercise.

Good luck, and happy clawing. 🦞
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>devchallenge</category>
      <category>openclawchallenge</category>
      <category>openclaw</category>
      <category>beginners</category>
    </item>
    <item>
      <title>I Tried Installing OpenClaw on Windows in an Hour. Here's What Actually Happened.</title>
      <dc:creator>bnspopi</dc:creator>
      <pubDate>Mon, 20 Apr 2026 07:57:02 +0000</pubDate>
      <link>https://dev.to/bnspopi/i-tried-installing-openclaw-on-windows-in-an-hour-heres-what-actually-happened-10j</link>
      <guid>https://dev.to/bnspopi/i-tried-installing-openclaw-on-windows-in-an-hour-heres-what-actually-happened-10j</guid>
      <description>&lt;p&gt;Liquid syntax error: 'raw' tag was never closed&lt;/p&gt;
</description>
      <category>devchallenge</category>
      <category>openclawchallenge</category>
      <category>openclaw</category>
      <category>beginners</category>
    </item>
    <item>
      <title>I'm a CS Student in Placement Season. I Replaced My Inbox Anxiety With 80 Lines of Markdown.</title>
      <dc:creator>bnspopi</dc:creator>
      <pubDate>Mon, 20 Apr 2026 07:55:01 +0000</pubDate>
      <link>https://dev.to/bnspopi/im-a-cs-student-in-placement-season-i-replaced-my-inbox-anxiety-with-80-lines-of-markdown-1hbf</link>
      <guid>https://dev.to/bnspopi/im-a-cs-student-in-placement-season-i-replaced-my-inbox-anxiety-with-80-lines-of-markdown-1hbf</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/openclaw-2026-04-16"&gt;OpenClaw Challenge&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built inbox-triage — a personal email triage skill for OpenClaw. It's a single SKILL.md file, 80 lines of Markdown, no code, no API keys, no deployment. When I paste email subject lines or a screenshot of my Gmail into OpenClaw, it sorts them into four buckets:&lt;br&gt;
🔴 URGENT — open now (OA deadlines, interview invites, placement cell mail)&lt;br&gt;
🟡 REVIEW — today-ish (interview prep, company research, professor mail)&lt;br&gt;
🟢 APPLIED — active applications awaiting response (Microsoft, Dbert Labs, Bluestock)&lt;br&gt;
⚫ ARCHIVE — silently filed (LinkedIn noise, daily digests, noreply promos)&lt;br&gt;
The problem it solves is specific: I'm a CS student in active placement season. My inbox gets 200+ mails a week and maybe 10 of them matter. I was missing OA deadlines while reading "5 people viewed your profile" notifications. The script version I built first (Gmail API + regex) broke every time a recruiter emailed from a domain I hadn't hardcoded. A skill handles the fuzzy cases a script can't.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Used OpenClaw
&lt;/h2&gt;

&lt;p&gt;The whole project is one SKILL.md. OpenClaw's skills architecture does the heavy lifting — I just describe when the skill fires and what the rules are, in plain Markdown. Three pieces make it work:&lt;/p&gt;

&lt;p&gt;The description frontmatter is the trigger. I wrote it to fire whenever I paste email info or ask "what should I open first." OpenClaw reads this and routes the request correctly without me invoking the skill explicitly.&lt;br&gt;
Layered classification rules. The rules go URGENT → REVIEW → APPLIED → ARCHIVE, with an explicit tie-breaker: the more urgent bucket always wins. That single rule handles the hardest case — a &lt;a href="mailto:no-reply@bluestock.in"&gt;no-reply@bluestock.in&lt;/a&gt; email with subject "Interview scheduled Thursday 3 PM" is URGENT, not ARCHIVE, because the subject rule beats the sender rule.&lt;br&gt;
A worked example in the skill itself. My first draft was rules-only and hit about 60% accuracy. Adding one fully-worked example with real sender names and expected output pushed it past 95%. Models pattern-match on examples harder than they follow abstract rules.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;Input:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;From: &lt;a href="mailto:cellplacement507@gmail.com"&gt;cellplacement507@gmail.com&lt;/a&gt; — "Microsoft OA link — complete by 11 PM today"&lt;/li&gt;
&lt;li&gt;From: LinkedIn — "5 people viewed your profile this week"&lt;/li&gt;
&lt;li&gt;From: &lt;a href="mailto:recruiting@microsoft.com"&gt;recruiting@microsoft.com&lt;/a&gt; — "Re: Your application — next steps"&lt;/li&gt;
&lt;li&gt;From: Unstop — "Daily digest: 12 new hackathons"&lt;/li&gt;
&lt;li&gt;From: &lt;a href="mailto:no-reply@bluestock.in"&gt;no-reply@bluestock.in&lt;/a&gt; — "Interview scheduled: Thursday 3 PM"&lt;/li&gt;
&lt;li&gt;From: Medium Daily Digest — "Top stories in AI"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Output:&lt;br&gt;
🔴 URGENT (open now)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="mailto:cellplacement507@gmail.com"&gt;cellplacement507@gmail.com&lt;/a&gt; — Microsoft OA link — complete by 11 PM today
— Placement cell + deadline today&lt;/li&gt;
&lt;li&gt;
&lt;a href="mailto:recruiting@microsoft.com"&gt;recruiting@microsoft.com&lt;/a&gt; — Re: Your application — next steps
— Applied company responding to your thread&lt;/li&gt;
&lt;li&gt;
&lt;a href="mailto:no-reply@bluestock.in"&gt;no-reply@bluestock.in&lt;/a&gt; — Interview scheduled: Thursday 3 PM
— Applied company + interview keyword beats noreply rule&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;⚫ ARCHIVE (3 items archived)&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;The hardest part of this build wasn't writing the rules. It was being specific enough about what "important" means to me that a model could apply it consistently.&lt;br&gt;
"Placement cell emails matter" is obvious. But what about a LinkedIn notification that happens to mention Microsoft because I follow Microsoft? What about a noreply@ from a company I applied to last week? What about an Unstop email — is it a daily digest (archive) or a status update on something I applied to (surface)?&lt;br&gt;
Every edge case forced me to articulate a preference I'd never actually put into words. By the time the skill was accurate, I understood my own email-reading heuristics better than before I started.&lt;br&gt;
Two other things clicked:&lt;/p&gt;

&lt;p&gt;A skill's description field is doing real work — it's not a comment for humans. Vague descriptions don't trigger reliably. Specific ones do.&lt;br&gt;
Explicit output formats make skills reusable. The four-bucket structure with emojis means I can scan the output in two seconds. An open-ended format would've given me paragraphs — which is what I was trying to escape.&lt;/p&gt;

&lt;p&gt;Skills are a forcing function for self-knowledge. I didn't expect that going in.&lt;/p&gt;

&lt;h2&gt;
  
  
  ClawCon Michigan
&lt;/h2&gt;

&lt;p&gt;I didn't attend ClawCon Michigan — I was running Gmail triage from Baharampur, West Bengal, which is a few time zones and an ocean away. But the community around it is what made me want to ship something for this challenge instead of just reading the announcement.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>openclawchallenge</category>
    </item>
    <item>
      <title>## Deploying My Fintech Project with AI Using Kuberns</title>
      <dc:creator>bnspopi</dc:creator>
      <pubDate>Wed, 04 Mar 2026 11:34:51 +0000</pubDate>
      <link>https://dev.to/bnspopi/-deploying-my-fintech-project-with-ai-using-kuberns-5ih</link>
      <guid>https://dev.to/bnspopi/-deploying-my-fintech-project-with-ai-using-kuberns-5ih</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/bnspopi" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3805678%2F04b0a6d0-4d03-482f-8d55-02a662237d1c.png" alt="bnspopi"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/bnspopi/-the-project-wepay-2972" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;## The Project: WePay&lt;/h2&gt;
      &lt;h3&gt;bnspopi ・ Mar 4&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#ai&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#devops&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#chatgpt&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#cloud&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>ai</category>
      <category>devops</category>
      <category>chatgpt</category>
      <category>cloud</category>
    </item>
    <item>
      <title>## The Project: WePay</title>
      <dc:creator>bnspopi</dc:creator>
      <pubDate>Wed, 04 Mar 2026 11:33:48 +0000</pubDate>
      <link>https://dev.to/bnspopi/-the-project-wepay-2972</link>
      <guid>https://dev.to/bnspopi/-the-project-wepay-2972</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F71zjpntb1eb65z9v7aw7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F71zjpntb1eb65z9v7aw7.png" alt=" " width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devops</category>
      <category>chatgpt</category>
      <category>cloud</category>
    </item>
  </channel>
</rss>
