← Back to sketch
Open source

Picoclaw

June 8, 2026 · 5 min read

Every time you build a cron, a skill, or a publish pipeline, you write the same six-step verification chain. File exists. Non-empty. Has body content. HTTP 200. Live body verified. Then you ship. Then the script rots silently for three months because nobody wants to copy-paste boilerplate into the next project.

That is the exact pain that Picoclaw solves. Not a new framework. Just a tiny, reusable guardrail that automates the checks you are already doing by hand.

The Pattern That Won't Die

Open any project in Prabha's suite and the same sequence appears. In md_to_warehouse.py it is the body-destruction guardrail. In the cron health checker it is the silent-failure detector. In the App Store upload script it is the live-URL verifier.

# Step 1: file exists
ls -la "$TARGET_PATH"
# Step 2: non-empty
wc -l "$TARGET_PATH"
# Step 3: has body content
grep -c "<body" "$TARGET_PATH"
# Step 4: HTTP 200
curl -sI "$LIVE_URL" | head -1
# Step 5: live body verified
curl -s "$LIVE_URL" | grep -c "content"
# Step 6: git clean before declaring done
git status --short

That is not paranoia. It is what happened when a script wrote HTML to the wrong directory, declared success, and the user clicked a 404. It is what happened when a markdown converter received an .html input, escaped every tag, and published an empty body for six hours before anyone noticed.

The checks work. What breaks is human discipline. Every single pipeline eventually skips a step under pressure, and every skipped step is a failure mode you have already seen before.

What Picoclaw Actually Does

Think of it as a linter for deployment sanity. You declare what you expect, Picoclaw checks it, and the output is either pass or a concise diagnostic. No DSL. No YAML manifest. Just a small Python callable or a shell snippet you paste at the end of any script.

from picoclaw import FileCheck, HttpCheck, GitCheck

pipeline = FileCheck("$REPO/sketch/*.html") \
    .then(HttpCheck("https://user.github.io/repo/sketch/")) \
    .then(GitCheck.clean())

result = pipeline.run()
if not result.ok:
    print(result.failures)
    exit(1)

The API surface is deliberately thin. It is not trying to be a CI platform. It is trying to be the thing you would have written yourself if you were not rushing to ship.

Why Revive It Now

1. Evidence is everywhere

2. The repo already exists

3. Scope is small and finishable

4. It removes actual friction

Honest Trade-offs

Picoclaw does not replace CI/CD. GitHub Actions, Buildkite, and friends handle orchestration. Picoclaw handles the moment when you are scripting locally and do not want to wire up an entire platform just to verify that a file exists before you tweet about it.

Picoclaw is not a testing framework. It will not mock your API, stub your database, or generate coverage reports. It checks real filesystems and real live URLs. Use it where the stakes are real and the checks are mechanical.

Picoclaw might be overkill for one-off scripts. If you are running a quick Python notebook, copy-pasting six lines is fine. Where this pays off is in anything that runs unattended: crons, scheduled reporters, and automated publishers.

Proposed File Layout

picoclaw/
  picoclaw/
    __init__.py
    checks.py        # FileCheck, HttpCheck, GitCheck, CompositeCheck
    results.py       # Result dataclass with .ok, .failures, .summary
  tests/
    test_checks.py   # parameterized: exists, empty, http 200, http 404, dirty git
  README.md          # install, two-line example, when to use / when not to use
  pyproject.toml     # standard, no over-engineering

What Needs a Decision

The repo is yours and dormant. Before I touch any code, confirm:


Sourced from vault research + session history + cron audit.
Verified against agent-tina-hard-rules and research-to-web-publishing skills.