devtolisted
Install: claude install-skill magnusrodseth/dotfiles
# Dev.to
Publish markdown to Dev.to through the Forem API. Authenticated as `magnusrodseth` (user id `3803258`).
The key lives in 1Password at `op://Private/Dev.to API Key/credential` on the personal account (`my.1password.eu`). **Never read it into a variable that gets printed, never paste it into a URL, never echo it.** `scripts/devto.sh` resolves it per call and keeps it out of stdout.
## The two rules that matter
**Draft first, always.** `published` defaults to `false`. Create the draft, hand the user the edit URL, let them read it rendered in Dev.to's own editor. Publishing is a separate command.
**Publishing is close to irreversible.** The Forem API has **no DELETE endpoint**. Once published, an article mints a public URL that gets crawled, cached and syndicated within minutes. `unpublish` hides it from the site but does not undo distribution. Treat `publish` as outward-facing: confirm explicitly with the user before running it, every time, even if they authorized a publish earlier in the session.
## Commands
```bash
S=~/.claude/skills/devto/scripts/devto.sh
bash $S whoami # verify auth
bash $S list [published|unpublished|all] # your articles, id + title + state
bash $S get <id> # one article as JSON
bash $S draft <file.md> [--title T] [--tags "a,b,c"] [--description D] [--canonical URL]
bash $S update <id> <file.md> [same flags]
bash $S publish <id> # GATED: confirm with the user