Setup

Follow the steps below to start using the Effect TS skills in both Claude Code and Codex.

How this works

At its core, a skill is a folder containing a SKILL.md file. Claude Code looks for skills in ~/.claude/skills, and Codex looks for them in ~/.agents/skills. For a skill to work, its folder needs to be in both of these locations.

You could copy the skill folders into those two locations, but then you would have three copies of every skill, the one in your clone plus one in each agent's directory. Every time I update or add a skill, you would have to copy the latest folders into both places by hand. If you miss even one, your agent keeps working from an outdated skill without you realizing it.

A symlink avoids all of that. Instead of copying a skill folder, you create a symlink, which works like a shortcut that points to the folder's real location. As far as Claude Code and Codex are concerned, the skill sits in their skills directory, but the symlink quietly redirects them to the actual folder in your clone. You keep a single copy of each skill in your clone, and both agents read through the symlinks to reach it.

Because there is only ever one copy, making sure you always have the latest version is simple. When you run git pull in your clone, the updated files are the same files both agents already point at, so they see the changes right away. There is nothing to re-copy and nothing that can fall out of sync.

Step 1: Clone the repo

After purchasing the Effect skills, you would have received an email inviting your GitHub account to collaborate on the effect-ts-skills repo. Once you accept that invitation, clone the repo into a folder of your choice:

git clone https://github.com/effective-software/effect-ts-skills.git ~/effect-ts-skills

This clones the repo to ~/effect-ts-skills, which is the path the rest of the commands on this page point to. If you clone it somewhere else, swap in your own path wherever you see ~/effect-ts-skills below.

Step 2: Link the skills to your agent

Each code snippet below creates one symlink per skill inside that agent's skills directory. Run the one for the agent you use. If you use both Claude Code and Codex, run both.

For Claude Code

mkdir -p ~/.claude/skills
for skill in ~/effect-ts-skills/*/; do
  ln -sfn "$skill" ~/.claude/skills/"$(basename "$skill")"
done

For Codex

mkdir -p ~/.agents/skills
for skill in ~/effect-ts-skills/*/; do
  ln -sfn "$skill" ~/.agents/skills/"$(basename "$skill")"
done

Taking the Claude Code block line by line (the Codex block is identical except it links into ~/.agents/skills):

  • mkdir -p ~/.claude/skills creates the skills directory. The -p flag creates any missing parent folders and stays silent if the directory already exists, so this is safe whether or not the folder is already there.
  • for skill in ~/effect-ts-skills/*/; do ... done loops over every folder in your clone. The trailing slash in */ matches directories only, so each skill folder is picked up while loose files and hidden folders like .git are skipped.
  • ln -sfn "$skill" ~/.claude/skills/"$(basename "$skill")" creates the symlink:
    • ln makes a link.
    • -s makes it a symbolic link, a pointer to the folder rather than a copy.
    • -f forces it, replacing any existing link of the same name. This is what makes the command safe to re-run.
    • -n replaces an existing symlinked directory instead of creating the new link inside it.
    • "$skill" is the full path to the skill folder in your clone, which is what the link points to.
    • "$(basename "$skill")" keeps only the final folder name, like effect-atom, so the link is created under the same name inside the agent's directory.

Step 3: Verify

Confirm the links are in place. Run the line for your agent:

For Claude Code

ls -la ~/.claude/skills

For Codex

ls -la ~/.agents/skills

ls lists what is in the directory. -l shows the long format, one entry per line, and -a includes entries whose names start with a dot. For a symlink, the long format prints an arrow pointing to the real folder in your clone, which is how you confirm the link is set up correctly.

You should see each skill pointing back to your clone. Restart your agent so it picks up the new skills.

Staying up to date

Whenever I add new skills or expand existing ones, I'll send you an email. Then you can run the command below for your agent, which updates your clone with the latest changes and refreshes the links:

For Claude Code

cd ~/effect-ts-skills && git pull && for skill in */; do
  ln -sfn "$PWD/$skill" ~/.claude/skills/"$(basename "$skill")"
done

For Codex

cd ~/effect-ts-skills && git pull && for skill in */; do
  ln -sfn "$PWD/$skill" ~/.agents/skills/"$(basename "$skill")"
done

This changes into your clone, pulls the latest changes with git pull, then refreshes the links. The $PWD prefix turns each folder into a full path, since the loop now runs from inside the clone. Updates to existing skills would show up from git pull alone, but re-running the link step also picks up any brand-new skills automatically, so you never have to think about which kind of update it was.