<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Willie</title>
    <description>The latest articles on Forem by Willie (@runkids).</description>
    <link>https://forem.com/runkids</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F786770%2F276ce9be-c3ef-4aa3-8e54-efafa6c4dfdc.png</url>
      <title>Forem: Willie</title>
      <link>https://forem.com/runkids</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/runkids"/>
    <language>en</language>
    <item>
      <title>How to Sync AI Skills Across Claude Code, OpenClaw, and Codex in 2 Minutes</title>
      <dc:creator>Willie</dc:creator>
      <pubDate>Mon, 09 Feb 2026 21:17:38 +0000</pubDate>
      <link>https://forem.com/runkids/how-to-sync-ai-skills-across-claude-code-openclaw-and-codex-in-2-minutes-226e</link>
      <guid>https://forem.com/runkids/how-to-sync-ai-skills-across-claude-code-openclaw-and-codex-in-2-minutes-226e</guid>
      <description>&lt;p&gt;You use Claude Code at work, Openclaw for side projects, and Codex for quick scripts.&lt;/p&gt;

&lt;p&gt;You have 20+ skills. They need to exist in all three tools.&lt;/p&gt;

&lt;p&gt;Here's how to set that up in under 2 minutes — and never manually copy a skill again.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Every AI CLI stores skills in a different directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/.claude/skills/          # Claude Code
~/.codex/skills/           # Codex CLI
~/.opencode/skills/        # OpenCode
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When you install a skill, you pick which tools get it. When you edit a skill in one tool, the others don't know. When you remove a skill from one tool, you might break the others.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The root cause&lt;/strong&gt;: there's no single source of truth. Skills are scattered.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Fix: One Source, Symlinks Everywhere
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/runkids/skillshare" rel="noopener noreferrer"&gt;skillshare&lt;/a&gt; keeps all your skills in one directory and creates symlinks to each AI CLI.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/.config/skillshare/skills/     ← single source
  ├── code-review/
  ├── react-guidelines/
  └── _team-repo/
        ├── frontend/
        └── testing/

~/.claude/skills/code-review → symlink to source
~/.codex/skills/code-review  → symlink to source
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Edit the source, every tool sees the change instantly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step-by-Step Setup
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Install
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# macOS / Linux&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/runkids/skillshare/main/install.sh | sh

&lt;span class="c"&gt;# Homebrew&lt;/span&gt;
brew &lt;span class="nb"&gt;install &lt;/span&gt;runkids/tap/skillshare

&lt;span class="c"&gt;# Windows PowerShell&lt;/span&gt;
irm https://raw.githubusercontent.com/runkids/skillshare/main/install.ps1 | iex
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Initialize
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;skillshare init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This does three things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creates &lt;code&gt;~/.config/skillshare/skills/&lt;/code&gt; (your source directory)&lt;/li&gt;
&lt;li&gt;Detects which AI CLIs you have installed&lt;/li&gt;
&lt;li&gt;Generates &lt;code&gt;config.yaml&lt;/code&gt; with your targets&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Output looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;✓ Created source directory
✓ Detected targets:
    claude  → ~/.claude
    codex   → ~/.codex/skills
✓ Config saved to ~/.config/skillshare/config.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Import existing skills
&lt;/h3&gt;

&lt;p&gt;Already have skills scattered across your AI CLIs? Collect them:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;skillshare collect &lt;span class="nt"&gt;--all&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This copies every skill from every detected target into the source directory. Duplicates are flagged so you can choose which to keep.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Sync
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;skillshare &lt;span class="nb"&gt;sync&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Done. Every target now has symlinks pointing to your source directory.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Synced 3 targets:
  claude   → 15 linked, 0 skipped, 0 removed
  codex    → 15 linked, 0 skipped, 0 removed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;From now on, this is the only command you need.&lt;/strong&gt; Made changes to your skills? &lt;code&gt;skillshare sync&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Day-to-Day Workflows
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Install a skill from GitHub
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;skillshare &lt;span class="nb"&gt;install &lt;/span&gt;anthropics/skills/skills/pdf
skillshare &lt;span class="nb"&gt;sync&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The skill is downloaded to your source directory, then synced to all targets.&lt;/p&gt;

&lt;h3&gt;
  
  
  Install a full team/org skill repo
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;skillshare &lt;span class="nb"&gt;install &lt;/span&gt;github.com/your-org/team-skills &lt;span class="nt"&gt;--track&lt;/span&gt;
skillshare &lt;span class="nb"&gt;sync&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;--track&lt;/code&gt; flag preserves &lt;code&gt;.git&lt;/code&gt;, so you can update later:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;skillshare update _team-skills   &lt;span class="c"&gt;# git pull&lt;/span&gt;
skillshare &lt;span class="nb"&gt;sync&lt;/span&gt;                  &lt;span class="c"&gt;# push changes to all targets&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Create a new skill
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;skillshare new my-custom-skill
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creates a &lt;code&gt;SKILL.md&lt;/code&gt; template in your source directory. Edit it, sync, and every AI CLI has it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scan for security threats
&lt;/h3&gt;

&lt;p&gt;Before syncing third-party skills to your AI agents, scan them:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;skillshare audit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This checks every installed skill for prompt injection, data exfiltration, destructive commands, and other threats. Critical findings block installation by default — no malicious skill reaches your AI agent without you explicitly approving it.&lt;/p&gt;

&lt;p&gt;Skills are also scanned automatically during &lt;code&gt;skillshare install&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pull back edits from a specific tool
&lt;/h3&gt;

&lt;p&gt;You tweaked a skill in codex's UI. Pull the change back to source:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;skillshare collect codex
skillshare &lt;span class="nb"&gt;sync&lt;/span&gt;             &lt;span class="c"&gt;# propagate to other targets&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Check status
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;skillshare status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Shows which targets are in sync, which have drifted, and which skills are unlinked.&lt;/p&gt;

&lt;h3&gt;
  
  
  Preview before syncing
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;skillshare diff
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Shows exactly what &lt;code&gt;sync&lt;/code&gt; will do — which symlinks will be created, updated, or removed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cross-Machine Sync
&lt;/h2&gt;

&lt;p&gt;If your source directory is a git repo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Machine A&lt;/span&gt;
skillshare push

&lt;span class="c"&gt;# Machine B&lt;/span&gt;
skillshare pull
skillshare &lt;span class="nb"&gt;sync&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or just version-control &lt;code&gt;~/.config/skillshare/&lt;/code&gt; as part of your dotfiles.&lt;/p&gt;

&lt;h2&gt;
  
  
  Project-Scoped Skills
&lt;/h2&gt;

&lt;p&gt;For skills that should live inside a specific repo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;your-project
skillshare init &lt;span class="nt"&gt;-p&lt;/span&gt;                              &lt;span class="c"&gt;# Creates .skillshare/&lt;/span&gt;
skillshare &lt;span class="nb"&gt;install &lt;/span&gt;org/skills/skills/react &lt;span class="nt"&gt;-p&lt;/span&gt;   &lt;span class="c"&gt;# Install to project&lt;/span&gt;
skillshare &lt;span class="nb"&gt;sync&lt;/span&gt;                                 &lt;span class="c"&gt;# Sync to targets&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Commit &lt;code&gt;.skillshare/&lt;/code&gt; to git. Teammates clone the repo and run &lt;code&gt;skillshare sync&lt;/code&gt; — everyone gets the same skills, in every AI tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Web Dashboard
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;skillshare ui
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Opens a web dashboard at &lt;code&gt;http://localhost:19420&lt;/code&gt; for visual skill management — browsing, installing, syncing, and searching skills without the terminal.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Config File
&lt;/h2&gt;

&lt;p&gt;Everything is controlled by &lt;code&gt;~/.config/skillshare/config.yaml&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;source&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/Users/you/.config/skillshare/skills&lt;/span&gt;
&lt;span class="na"&gt;sync_mode&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;merge&lt;/span&gt;    &lt;span class="c1"&gt;# merge (per-skill symlinks) or symlink (whole directory)&lt;/span&gt;
&lt;span class="na"&gt;targets&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;claude&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/Users/you/.claude&lt;/span&gt;
  &lt;span class="na"&gt;codex&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/Users/you/.codex/skills&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Want to add a new AI CLI? Add a target. Want to remove one? Delete the entry. Then &lt;code&gt;sync&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick Reference
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;skillshare init&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Create config + detect targets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;skillshare sync&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sync source → all targets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;skillshare install &amp;lt;source&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Install skill from GitHub/local path&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;skillshare collect [target]&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Import skills from target(s) to source&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;skillshare list&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;List skills in source&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;skillshare status&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Show sync status&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;skillshare diff&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Preview what sync will change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;skillshare search &amp;lt;query&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Search skills on GitHub&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;skillshare audit [name]&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Scan skills for security threats&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;skillshare new &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Create a new skill template&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;skillshare update --all&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Update all tracked repos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;skillshare push&lt;/code&gt; / &lt;code&gt;pull&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Cross-machine git sync&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;skillshare ui&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Open web dashboard&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Migration from Other Tools
&lt;/h2&gt;

&lt;p&gt;If you're already using &lt;code&gt;npx skills&lt;/code&gt; or manual management:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;skillshare init          &lt;span class="c"&gt;# detect your AI CLIs&lt;/span&gt;
skillshare collect &lt;span class="nt"&gt;--all&lt;/span&gt; &lt;span class="c"&gt;# import everything&lt;/span&gt;
skillshare &lt;span class="nb"&gt;sync&lt;/span&gt;          &lt;span class="c"&gt;# symlink to all targets&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Full migration guide: &lt;a href="https://skillshare.runkids.cc/docs/guides/migration" rel="noopener noreferrer"&gt;skillshare.runkids.cc/docs/guides/migration&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Architectural comparison: &lt;a href="https://skillshare.runkids.cc/docs/guides/comparison" rel="noopener noreferrer"&gt;skillshare.runkids.cc/docs/guides/comparison&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;skillshare&lt;/strong&gt; is open source (MIT), written in Go, and supports 40+ AI CLI targets.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/runkids/skillshare" rel="noopener noreferrer"&gt;github.com/runkids/skillshare&lt;/a&gt;&lt;br&gt;
Docs: &lt;a href="https://skillshare.runkids.cc" rel="noopener noreferrer"&gt;skillshare.runkids.cc&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you found this useful, a ⭐ on GitHub would help others find it too.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>tutorial</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
