Equilibrium Labs Docs
v0.1
Changelog GitHub

Press Esc to close

Menu

Installing the skills

The skills follow the Agent Skills format: a directory containing a SKILL.md file with YAML frontmatter, optionally alongside a references/ folder of supporting documents the model loads only when it needs them. Installation is copying directories. There is no package manager, no build step, and nothing to configure.

Get the repository

BASH
git clone https://github.com/alfredbirkelund/equilibriumlabs.git

The skills live under skills/, one directory per skill. Each contains a SKILL.md; most also contain references/.

Install the whole pack

Skills can be installed at two scopes. Project scope puts them in .claude/skills inside a repository, where they apply to work in that repository only and can be committed so collaborators get them too. User scope puts them in ~/.claude/skills, where they are available in every project on the machine.

Project scope, macOS and Linux:

BASH
mkdir -p .claude/skills
cp -r equilibriumlabs/skills/*/ .claude/skills/

User scope, macOS and Linux:

BASH
mkdir -p ~/.claude/skills
cp -r equilibriumlabs/skills/*/ ~/.claude/skills/

The trailing slash on skills/*/ matters: it matches directories only, so the pack’s own README.md is not copied into the skills folder.

Project scope, Windows PowerShell:

POWERSHELL
New-Item -ItemType Directory -Force .claude\skills | Out-Null
Get-ChildItem equilibriumlabs\skills -Directory |
  Copy-Item -Destination .claude\skills -Recurse -Force

User scope, Windows PowerShell:

POWERSHELL
New-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null
Get-ChildItem equilibriumlabs\skills -Directory |
  Copy-Item -Destination "$HOME\.claude\skills" -Recurse -Force

Get-ChildItem -Directory is the equivalent of the */ glob: it selects the skill directories and skips the loose README.md.

Install individual skills

The skills are written to work independently and cross-reference each other by name where a handoff matters, so a partial install is a supported choice — a time-series project has no use for the panel skill. If a skill hands off to one you have not installed, the model simply proceeds without it.

BASH
cp -r equilibriumlabs/skills/panel-data ~/.claude/skills/
cp -r equilibriumlabs/skills/standard-errors-and-inference ~/.claude/skills/
POWERSHELL
Copy-Item equilibriumlabs\skills\panel-data "$HOME\.claude\skills" -Recurse -Force
Copy-Item equilibriumlabs\skills\standard-errors-and-inference "$HOME\.claude\skills" -Recurse -Force

A reasonable minimum for causal work on observational data is econometric-workflow, identification-strategy, and standard-errors-and-inference. Add panel-data or causal-designs when the data or the design calls for them, and series-identity whenever published statistics enter the analysis.

The catalogue in skills/README.md states what each skill is responsible for; the directory listing under skills/ is the definitive list of what is installable. The pack is v0.1, so both will change.

Verify the install

The structural check is that each installed directory contains a SKILL.md:

BASH
ls ~/.claude/skills
find ~/.claude/skills -name SKILL.md
POWERSHELL
Get-ChildItem "$HOME\.claude\skills"
Get-ChildItem "$HOME\.claude\skills" -Recurse -Filter SKILL.md | Select-Object FullName

The stronger check is to run the pack’s own validator against the installed copy. It takes an optional path argument, so it can be pointed at your skills directory rather than the repository:

BASH
python equilibriumlabs/tools/validate_skills.py ~/.claude/skills
POWERSHELL
python equilibriumlabs\tools\validate_skills.py "$HOME\.claude\skills"

It is dependency-free — standard library only — so no environment setup is needed. Note that it enforces this pack’s house rules as well as the format contract, so it will report problems on skills from other sources that are nonetheless perfectly valid.

The behavioural check is simplest of all: start a session and ask for a skill by name, for example “use the panel-data skill and tell me what it says about staggered adoption”. If the assistant can answer from the skill’s contents, it is installed and visible.

How activation works

A skill is not always loaded. The model sees only each skill’s name and description up front, and loads the body when the situation matches. The description is therefore the trigger, which is why the descriptions in this pack are long and name concrete vocabulary — “clustered standard errors”, “diff-in-diff”, “staggered rollout”, “is this real or nominal”. The intended behaviour is that panel-data loads when a panel appears and causal-designs loads when someone claims an effect, without anyone asking for either.

Two consequences are worth knowing. First, activation is a model judgement, not a rule engine: it is reliable, not deterministic. If a skill you expected did not fire, name it. Second, you can always invoke one explicitly — asking for identification-strategy by name loads it regardless of what the model inferred from the request.

Skills are one-way: they add instructions to the model’s context. They do not run code, read your data, or take actions on their own.

Updating

Pull and re-copy:

BASH
cd equilibriumlabs && git pull
cp -r skills/*/ ~/.claude/skills/
POWERSHELL
git -C equilibriumlabs pull
Get-ChildItem equilibriumlabs\skills -Directory |
  Copy-Item -Destination "$HOME\.claude\skills" -Recurse -Force

Copying updates files in place but does not remove anything. The pack is v0.1, and skill names may change before v1, so a rename upstream will leave the old directory behind and both versions will be visible to the model. If you are updating across a release that renamed or removed a skill, delete the installed pack first and copy it fresh.

Editing skills locally

The frontmatter contract is small:

YAML
---
name: skill-name              # lowercase, hyphens, must match the directory name
description: What it does...  # what it does AND when to use it; third person
license: CC-BY-4.0            # this pack's convention
---

If you fork the pack or write your own skills alongside it, run the validator before relying on the result:

BASH
python tools/validate_skills.py
python tools/validate_skills.py --json

It checks the required frontmatter keys, that name matches the directory, that the description falls within the length bounds the house style requires, that SKILL.md stays under the line limit, and that cross-references to sibling skills and internal links actually resolve. The --json form is for wiring it into your own checks. CI runs the same command on every push to main and on every pull request, and a pull request that fails it does not merge.

Corrections to the econometrics are the most valuable contribution the project can receive. If a rule is wrong, or has a well-known exception it fails to mention, open an issue on the repository.

Compatibility

The Agent Skills format is read by Claude Code and the Claude Agent SDK, and it is being adopted more widely. Because a skill is a Markdown file with YAML frontmatter and nothing else, it is also readable by any system you want to point at it — including pasting the contents into a context window by hand. This documentation does not claim support for any specific third-party tool; if your runtime reads the format, the pack works there, and if it does not, the files are still plain Markdown.

Next

Your first analysis walks through the difference the pack makes to a single request.

View source on GitHub