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.
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.
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.
1. Evidence is everywhere
2. The repo already exists
thisisprabha/picoclaw created March 2, 20263. Scope is small and finishable
4. It removes actual friction
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.
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
The repo is yours and dormant. Before I touch any code, confirm:
.then()) or plain function calls? The fluent style reads well but is less Python-idiomatic.