← ClaudeAtlas

padosoft-failure-visibilitylisted

Use this skill whenever code can fail and the caller has to find out — a write to disk or storage, an external call, a catch block, an endpoint that returns a body, a fetcher, a renderer, a chart that reduces an array — and whenever the user says something "silently did nothing", data disappeared without an error, a request returned 200 but the page is empty, a job later died on something that was reported as accepted, or a retry loop never fires. It covers the two halves of the same bug: an ignored return value, and a success status served over a failure. It also covers the decision trace, for when nobody can reconstruct why a user got the outcome they got. Do not use it for what goes inside a log line (padosoft-logging-discipline) or for retry and timeout policy.
padosoft/skills · ★ 1 · AI & Automation · score 80
Install: claude install-skill padosoft/skills
# Failure visibility Two symptoms, one bug: **the caller cannot tell success from failure.** 1. A call that failed, whose return value nobody looked at. 2. A failure served with a success status, or an empty body, or a `null`. Both leave a system that looks healthy while it loses work. --- ## 1. Never ignore the return value of a side-effecting call Many APIs report failure by **returning a value**, not by throwing — especially file and storage APIs, and HTTP clients configured not to throw. ```php $ok = Storage::disk($disk)->put($target, $content); if ($ok === false) { throw new RuntimeException("Unable to persist {$target} on disk {$disk}."); } ``` The shape to recognise: a controller calls `Storage::put(...)` without checking the return, the disk is configured with `throw => false`, a full disk returns `false`, **the controller answers `202 Accepted`**, and the job that comes later dies with "file not found". From the client's side, ingestion silently drops documents — and the only signal anyone gets arrives hours later, somewhere else. Applies to storage put/delete/copy/move/makeDirectory, `file_put_contents`, `copy`, `rename`, `unlink`, `mkdir`, and any library call that returns `false` on failure. **Never log and continue.** A log line is not a return path: the caller still believes it worked. ### Two related bans - **The `@` silencer** — `@mkdir(...)` hides the error and the return value in one character. - **World-writable permissions** — `0777` on a d