@dvcrn/poststash
BSchedule posts and threads to Threads and X via PostStash
Install
agr install @dvcrn/poststash --target claudeWrites 4 files into .claude/skills/, pinned to git-acea362e.
- .claude/skills/poststash/README.md
- .claude/skills/poststash/SKILL.md
- .claude/skills/poststash/package.json
- .claude/skills/poststash/tsconfig.json
Document
name: poststash description: "Schedule posts and threads to Threads and X via PostStash" homepage: https://poststash.com/docs/api
PostStash Skill
Schedule posts and threads to Threads and X directly from your OpenClaw agent.
Setup
- Get an API key from the PostStash dashboard
- Set the environment variable:
POSTSTASH_API_KEY=ps_live_... - Install:
clawhub install poststash
API key format: ps_live_ followed by 64 hex characters.
Tools
poststash.schedule_to_threads
Schedule a single post to Threads.
Input:
text(string, required) — Post content (max 500 characters)scheduled_at(string, optional) — ISO 8601 timestamp; defaults to nowstatus(string, optional) —"Ready"(publishes at scheduled_at) or"Draft"(saves without scheduling); defaults to"Ready"
Output:
post_id— UUID of the scheduled postcontent— Post textschedule— Scheduled timestamp (ISO 8601)status— Post status (Ready,Draft,Published,Failed)platforms— Array of target platforms
poststash.schedule_to_x
Schedule a single post to X (Twitter).
Input: Same as schedule_to_threads.
Output: Same as schedule_to_threads.
poststash.schedule_thread
Schedule a thread (2–20 posts) to Threads or X.
Input:
platform(string, required) —"threads"or"x"posts(array, required) — Array of{ text: string }objects (2–20 items)scheduled_at(string, optional) — ISO 8601 timestamp; defaults to nowstatus(string, optional) —"Ready"or"Draft"; defaults to"Ready"
Output:
thread_id— UUID grouping all thread postsposts— Array of scheduled post objects withid,content,thread_position
poststash.get_post
Fetch a scheduled or published post along with its analytics.
Input:
post_id(string, required) — Post UUID from a schedule response
Output:
post— Full post object (id,content,platforms,schedule,status,published,sent_at)analytics— Array of per-platform analytics withmetrics(views, likes, replies, reposts, quotes)
poststash.list_posts
List posts for your account (scoped to the context of your API key).
Input:
status(string, optional) — Filter by"Draft","Ready","Published", or"Failed"published(boolean, optional) —trueorfalselimit(number, optional) — Results per page (default: 20, max: 100)offset(number, optional) — Pagination offset (default: 0)
Output:
posts— Array of post objectstotal— Total number of matching postslimit/offset— Pagination info
Example Agent Usage
const result = await agent.invoke({
tools: ["poststash.schedule_to_threads"],
input: "Schedule a post about AI to Threads tomorrow at 2pm",
});
const thread = await agent.invoke({
tools: ["poststash.schedule_thread"],
input: "Create a 3-part thread on building in public on X, schedule for Friday 10am",
});
Repository README
Describes dvcrn/openclaw-skills-marketplace as a whole, which may contain artifacts other than this one. Where this artifact had no useful description of its own, its summary was taken from here.
OpenClaw Skills Marketplace For Claude
This repository is an automatic conversion of openclaw/skills into the Claude Skills marketplace format so the skills can be installed and used directly in Claude.
It takes the OpenClaw skill corpus and rewrites it into a Claude-compatible marketplace with:
- a root marketplace manifest at
.claude-plugin/marketplace.json - one Claude plugin per OpenClaw skill under
plugins/ - a generation report at
reports/generate-marketplace.json
Use In Claude
Add this marketplace in Claude with:
/plugin marketplace add dvcrn/openclaw-skills-marketplace
Then install any generated plugin from the marketplace:
/plugin install <plugin-name>@openclaw-skills
Example:
/plugin install 0x-professor--agentic-mcp-server-builder@openclaw-skills
What This Repo Does
The generator reads canonical OpenClaw source skills from:
openclaw-skills/skills/<owner>/<slug>/
Each source skill is expected to contain:
_meta.jsonSKILL.mdor lowercaseskill.md
The conversion process:
- maps each OpenClaw skill to one Claude plugin
- normalizes lowercase
skill.mdtoSKILL.md - extracts Claude plugin root assets like
agents/,hooks/,.mcp.json,.lsp.json, andsettings.json - preserves nested
skills/trees when a source package already behaves like a multi-skill plugin - skips malformed inputs and records them in
reports/generate-marketplace.json
Regenerate The Entire Marketplace
To rebuild the full marketplace from the openclaw-skills submodule:
mise run generate
That regenerates:
.claude-plugin/marketplace.jsonplugins/<plugin-id>/...reports/generate-marketplace.json
The generator replaces previous generated output under .claude-plugin/, plugins/, and reports/ on each run.
If you want the explicit underlying task name, this still works too:
mise run generate_marketplace
For small development runs:
python3 scripts/generate_marketplace.py --source openclaw-skills/skills --output . --limit 10
Validate And Test
Run the generator tests:
mise run test
Validate the generated marketplace:
claude plugin validate .
Notes
- Plugin ids are generated as
<owner>--<slug>after sanitization. - Nested source
skills/directories are preserved as plugin content rather than treated as separate top-level source skills. - The upstream OpenClaw source is included as the
openclaw-skillssubmodule.
Trustgrade B
- passBody integrity
Whether the stored document is plausibly the kind of file the artifact declares, rather than something fetched by mistake.
- passType matchnot applicable to this artifact type
Whether the artifact is really the kind of thing its metadata claims it is.
- passFreshness
How long since the source repository was last pushed to.
- passPrompt injection
Scans the artifact's own text for instructions aimed at your agent rather than at you.
- warnLicenseno SPDX license detected
Whether the source repository declares an SPDX license permissive enough to redistribute.
How the grade is calculated
Each check contributes 0 points when it passes, 1 when it warns, and 2 when it fails. The total maps to a letter:
- Aevery check passed
- Bone warning
- Ctwo warnings
- Dprompt injection or body integrity failed, or three warnings
- Fone of those failed, and something else is wrong
These are automated hygiene checks, not a security audit, and not a dependency or vulnerability scan. A grade of A means nothing was flagged — not that the artifact is safe.
Versions
git-acea362e56f82026-07-31