Markitdown
ImCa0/just-laws
Convert files and office documents to Markdown. An agent skill from ImCa0/just-laws.
Crosspost Wasp blog articles (MDX) to DEV.to and Medium. An agent skill from wasp-lang/wasp.
$ npx skills add wasp-lang/wasp --skill crossposting -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install wasp-lang/wasp crossposting --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/wasp-lang/wasp.git skills-src && mkdir -p .claude/skills && cp -r skills-src/web/.claude/skills/crossposting .claude/skills/crossposting && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "crossposting" agent skill from https://github.com/wasp-lang/wasp/tree/main/web/.claude/skills/crossposting into .claude/skills/crossposting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "crossposting", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/wasp-lang/wasp/tree/main/web/.claude/skills/crosspostingType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add wasp-lang/wasp --skill crossposting -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install wasp-lang/wasp crossposting --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/wasp-lang/wasp.git skills-src && mkdir -p .agents/skills && cp -r skills-src/web/.claude/skills/crossposting .agents/skills/crossposting && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "crossposting" agent skill from https://github.com/wasp-lang/wasp/tree/main/web/.claude/skills/crossposting into .agents/skills/crossposting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "crossposting", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add wasp-lang/wasp --skill crossposting -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install wasp-lang/wasp crossposting --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/wasp-lang/wasp.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/web/.claude/skills/crossposting .cursor/skills/crossposting && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "crossposting" agent skill from https://github.com/wasp-lang/wasp/tree/main/web/.claude/skills/crossposting into .cursor/skills/crossposting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "crossposting", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/wasp-lang/wasp.git --path web/.claude/skills/crossposting--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add wasp-lang/wasp --skill crossposting -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install wasp-lang/wasp crossposting --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/wasp-lang/wasp.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/web/.claude/skills/crossposting .gemini/skills/crossposting && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "crossposting" agent skill from https://github.com/wasp-lang/wasp/tree/main/web/.claude/skills/crossposting into .gemini/skills/crossposting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "crossposting", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install wasp-lang/wasp crosspostingInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add wasp-lang/wasp --skill crossposting -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/wasp-lang/wasp.git skills-src && mkdir -p .github/skills && cp -r skills-src/web/.claude/skills/crossposting .github/skills/crossposting && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "crossposting" agent skill from https://github.com/wasp-lang/wasp/tree/main/web/.claude/skills/crossposting into .github/skills/crossposting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "crossposting", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add wasp-lang/wasp --skill crossposting -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install wasp-lang/wasp crossposting --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/wasp-lang/wasp.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/web/.claude/skills/crossposting .opencode/skills/crossposting && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "crossposting" agent skill from https://github.com/wasp-lang/wasp/tree/main/web/.claude/skills/crossposting into .opencode/skills/crossposting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "crossposting", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
crosspostingCrosspost Wasp blog articles (MDX) to DEV.to and Medium. An agent skill from wasp-lang/wasp.
Crossposting is an agent skill from wasp-lang/wasp. Crosspost Wasp blog articles (MDX) to DEV.to and Medium.
Its SKILL.md is about 1.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including scripts (for example `README.md`, `scripts/convert-mdx.ts` and `scripts/medium-helpers.js`).
It sits in Documents & Office, covering Markdown. It works with YouTube. The repository describes itself as: The batteries-included full-stack framework for the AI era. Develop JS/TS web apps (React, Node.js, and Prisma) using declarative code that abstracts away complex full-stack… The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit c8a7939. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 3 files in scripts/ (TypeScript and JavaScript), which the agent can run.
Shell commands in SKILL.md call:
npxFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
medium.comAlso links to:
dev.toFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
DEVTO_API_KEYYOUTUBE_CLIENT_SECRETFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Crossposting loads about 1.1k tokens when it runs. Until then it costs about 17 tokens; SKILL.md has 514 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from wasp-lang/wasp at commit c8a7939, republished under its MIT licence (© wasp-lang). 514 words, ~1,132 tokens.
.claude/skills/crossposting/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.Converts a Wasp blog MDX file to clean markdown, HTML, and Medium-ready chunks. Output is saved to .claude/skills/crossposting/scripts/output/.
npx tsx .claude/skills/crossposting/scripts/convert-mdx.ts <path-to-mdx-file> [--publish-devto] [--update-devto <id>] [--upload-videos]Output files (always written):
<slug>.md — clean markdown (for DEV.to)<slug>.html — HTML (for Medium preview/reference)<slug>-medium-chunks.json — { title: string, chunks: string[] } pre-split at <h2> boundaries, pre-escaped for JS template literalsFlags:
--publish-devto — POST as draft to DEV.to (requires DEVTO_API_KEY)--update-devto <id> — PUT to existing DEV.to article (requires DEVTO_API_KEY)--upload-videos — upload local .mp4s to YouTube (unlisted), embed as {% youtube URL %} liquid tagsEnv vars: DEVTO_API_KEY (from https://dev.to/settings/extensions), YOUTUBE_CLIENT_ID + YOUTUBE_CLIENT_SECRET (saved in 1password for the users).
Notes:
canonical_url is auto-generated from MDX filename → wasp.sh/blog/...--upload-videos, local .mp4 videos become plain linksYOUTUBE_CLIENT_ID and YOUTUBE_CLIENT_SECRET to ~/.zshrcnpx tsx .claude/skills/crossposting/scripts/upload-youtube.ts --auth → authorize in browser (select @wasplang channel if prompted)~/.youtube-upload-tokens.jsonnpx tsx .claude/skills/crossposting/scripts/upload-youtube.ts --whoami. Wrong channel? Delete token file and re-auth.Use --publish-devto or --update-devto <id> flags. Requires DEVTO_API_KEY.
Paste HTML into Medium's editor via Chrome DevTools MCP. The user must be logged in to Medium using email login (not google oauth) with info@wasp-lang.dev.
Run the conversion script, if it hasn't been run yet (see usage above).
Images: Medium does not support webp. Convert webp images to jpg for later manual upload:
for f in static/img/<slug>/*.webp; do sips -s format jpeg "$f" --out ".claude/skills/crossposting/scripts/output/$(basename "${f%.webp}.jpg")"; donehttps://medium.com/new-storyThe human user must login to Medium with the info@wasp-lang.dev email and get the OTP sent to your email.
Do NOT use the fill tool — it puts text into the body paragraph instead. Use evaluate_script with the setMediumTitle function from scripts/medium-helpers.js.
setMediumTitle from scripts/medium-helpers.js.TITLE_PLACEHOLDER with the actual title (escape backticks and ${ sequences).evaluate_script with the resulting function string.Then press Enter to move cursor to the body area.
IMPORTANT: Do NOT use document.execCommand — it bypasses Medium's internal state and causes save errors. Always use synthetic ClipboardEvent paste.
IMPORTANT: Chunks are already pre-escaped for JS template literals and pre-processed for Medium (YouTube URLs, image placeholders). Inline each chunk string directly into the pasteMediumChunk function body where HTML_CHUNK_PLACEHOLDER appears. Do NOT base64-encode, store chunks in page variables, or add any intermediate encoding steps.
output/<slug>-medium-chunks.json — chunks are ready to paste as-is.evaluate_script with the pasteMediumChunk function from scripts/medium-helpers.js. Replace HTML_CHUNK_PLACEHOLDER directly with the chunk string content.[IMAGE: filename.jpg] markers with actual image uploads in Medium's editor<p> tags)© wasp-lang, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files (scripts) in web/.claude/skills/crossposting of wasp-lang/wasp.
Open the folder on GitHubat commit c8a7939
Crossposting next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Crossposting this skillwasp-lang/wasp | 19k | — | ~1.1k | Automated safety check: Pass | MIT | |
| MarkitdownImCa0/just-laws | 781 | 14 repos | ~3.2k | Automated safety check: Notes | MIT | |
| Add Related Resourcespingcap/docs | 616 | — | ~1.8k | Automated safety check: Pass | Custom licence | |
| Lecture To Mdysyecust/lecture-to-notes | 270 | — | ~3.9k | Automated safety check: Pass | Custom licence | |
| Gbro Series Vocabpyang5166/gbro-series-vocab | 162 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Markdown Converterintellectronica/agent-skills | 295 | 4 repos | ~492 | Automated safety check: Pass | CC0-1.0 |
ImCa0/just-laws
Convert files and office documents to Markdown. An agent skill from ImCa0/just-laws.
pingcap/docs
Produces and merges Related resources cards for TiDB docs pages using the RelatedResources and ResourceCard MDX components.
ysyecust/lecture-to-notes
把课堂视频(本地或 B 站/YouTube)、文字稿、课件三者(任意组合)整理成一份详细的中文 Markdown 课堂笔记,输出按课程标题命名的 {titlename}.md(首行为 文档标题)+ 相对路径图片。Markdown 工作流,与上游 lecture-to-notes 的 LaTeX/PDF 输出并行存在;上游 skill 完全不动。触发词:markdown 笔记、md 笔记、视频转…
pyang5166/gbro-series-vocab
追剧学英语 / Learn English vocabulary from TV series. An agent skill from pyang5166/gbro-series-vocab.
intellectronica/agent-skills
Convert documents and files to Markdown using markitdown. An agent skill from intellectronica/agent-skills.
steipete/agent-scripts
Markdown conversion: PDF, Office, HTML, data, OCR, audio, ZIP, YouTube.
wasp-lang/wasp
Generative Engine Optimization for AI search engines (ChatGPT, Claude, Perplexity).
wasp-lang/wasp
Transfer a blog post from Notion to the Wasp blog. An agent skill from wasp-lang/wasp.
wasp-lang/wasp
Review code changes for correctness, clarity, and potential issues.
Works with
Crosspost Wasp blog articles (MDX) to DEV.to and Medium. An agent skill from wasp-lang/wasp. Crossposting is an agent skill from wasp-lang/wasp.to and Medium.
Crossposting fits situations like: tasks that involve Markdown.
Run `npx skills add wasp-lang/wasp --skill crossposting -a claude-code`. Or copy the skill folder (web/.claude/skills/crossposting in wasp-lang/wasp) into .claude/skills/crossposting in your project. Claude Code loads it when a task matches its description.
Run `npx skills add wasp-lang/wasp --skill crossposting -a codex`. Or copy the skill folder (web/.claude/skills/crossposting in wasp-lang/wasp) into .agents/skills/crossposting in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add wasp-lang/wasp --skill crossposting -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/crossposting, .gemini/skills/crossposting, .github/skills/crossposting and .opencode/skills/crossposting in your project.
Going by SKILL.md and its folder, Crossposting needs TypeScript and JavaScript for the scripts in its folder, the command-line tools its instructions call (npx) and credentials named DEVTO_API_KEY and YOUTUBE_CLIENT_SECRET. Our summary lists: Node.js; A credential in DEVTO_API_KEY; A credential in YOUTUBE_CLIENT_SECRET.
SKILL.md names 2 domains. In commands or code: medium.com; the agent is likely to contact it when it follows the instructions. As links in the text: dev.to. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Crossposting is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.1k tokens (SKILL.md is roughly 4.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Crossposting: Markitdown (ImCa0/just-laws, 781 stars), Add Related Resources (pingcap/docs, 616 stars), Lecture To Md (ysyecust/lecture-to-notes, 270 stars) and Gbro Series Vocab (pyang5166/gbro-series-vocab, 162 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
wasp-lang (a GitHub organization) maintains it in wasp-lang/wasp, which has 18,762 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 7, 2026.
Source: wasp-lang/wasp on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.