npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

openclaw-twitter-skill

v1.2.0

Published

OpenClaw agent skill for stable automated Twitter (X) posting via browser tools. Standardized 5-step workflow with login check, content validation, screenshot confirmation, and error reporting.

Readme

OpenClaw Twitter Skill

npm version License: MIT

Stable, automated Twitter (X) posting skill for OpenClaw agents.

Problem

OpenClaw agents can control Chrome via browser tools, but Twitter posting is unreliable — login checks fail, buttons don't get clicked, content gets lost. This skill standardizes the entire process into a battle-tested 5-step workflow.

The 5-Step Workflow

Step 1  →  Navigate to x.com/compose/post  (direct URL, never sidebar)
Step 2  →  Verify login (compose box visible?)
Step 3  →  Type content (type(), not paste)
Step 4  →  Screenshot → user confirms content
Step 5  →  Click Post → verify success toast

Installation

As an OpenClaw Skill

Copy SKILL.md to your agent's skills directory:

npm install -g openclaw-twitter-skill

# Copy the skill file
cp "$(npm root -g)/openclaw-twitter-skill/SKILL.md" ~/.agents/skills/twitter-post/SKILL.md

CLI Usage

# Simulate the full posting workflow
oct-post post "Hello from OpenClaw! 🚀 #AI #Automation"

# Validate content against posting rules
oct-post validate "Testing content #test #openclaw"

# Dry run (validate only, don't mark as ready)
oct-post post "Draft tweet #draft" --dry-run

# Show workflow info
oct-post info

# Help
oct-post --help

Content Guidelines

| Rule | Spec | |------|------| | Mode | New post only (no replies) | | Length | < 200 characters recommended (280 max) | | Emoji | 1–3, placed naturally | | Hashtags | 1–3 relevant tags (supports CJK: #人工智能) | | Links | Only if user explicitly provides them | | Media | Text-only by default; image upload requires user interaction |

Error Handling

  • Not logged in → Stop immediately, ask user to login in Chrome
  • Post failed → Screenshot + specific error description
  • Never retry silently → Always report what happened
  • Never skip screenshot → User must confirm before posting
  • One retry max → Only for server errors, with 30s wait

Key Lessons

  1. Always use /compose/post direct URL (sidebar buttons break across UI updates)
  2. Use type() not paste (Twitter CSP may block clipboard)
  3. Screenshot before posting (biggest reliability win)
  4. Wait 1–1.5s for Post button to enable after typing
  5. One post per session (don't chain without spacing)
  6. Check success toast, not URL change
  7. Use snapshot() for logic checks, screenshot() for user confirmation

Development

# Run tests
npm test

# Test CLI locally
node index.js post "Test tweet #dev" --dry-run
node index.js validate "Check this content #test"

Release

Push a version tag to trigger auto-release:

npm version patch   # or minor / major
git push origin main --tags

GitHub Actions will:

  1. Create a GitHub Release with auto-generated notes
  2. Publish to NPM (requires NPM_TOKEN secret in repo settings)

License

MIT