Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Alterlab Qca

ASecurity

Runs Qualitative Comparative Analysis — crisp-set (csQCA), multi-value (mvQCA), and fuzzy-set (fsQCA) — for small-to-medium-N configurational research: calibrating raw data into set membership, building and refining a truth table, and Boolean minimization into conservative / parsimonious / intermediate solutions with consistency and coverage. Because there is no maintained Python QCA library, it shells out to R's QCA package (calibrate, truthTable, minimize) via Rscript and documents that dep...

158 stars
0 votes
0 copies
0 views
Added 10/6/2026
datapythonshellbashexpressapi

Works with

api

Security Analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned 10/6/2026

$npx -y skills add NVlabs/Skill2Env --skill alterlab-qca --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Alterlab Qca?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Alterlab Qca
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/nvlabs-alterlab-qca/badge)](https://www.skillsdirectory.com/skills/nvlabs-alterlab-qca)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: alterlab-qca
description: "Runs Qualitative Comparative Analysis — crisp-set (csQCA), multi-value (mvQCA), and fuzzy-set (fsQCA) — for small-to-medium-N configurational research: calibrating raw data into set membership, building and refining a truth table, and Boolean minimization into conservative / parsimonious / intermediate solutions with consistency and coverage. Because there is no maintained Python QCA library, it shells out to R's QCA package (calibrate, truthTable, minimize) via Rscript and documents that dependency honestly rather than faking a Python API. Use when the request mentions QCA, fsQCA, csQCA, configurational or set-theoretic analysis, necessary/sufficient conditions, truth tables, or calibration of conditions. For net-effect estimation of a single treatment prefer alterlab-causal-inference; for interpretive analysis prefer alterlab-qualitative-methods. Part of the AlterLab Academic Skills suite."
license: MIT
allowed-tools: Read Bash(Rscript:*)
compatibility: "Requires R with the QCA package (install.packages('QCA'); optionally SetMethods). NO maintained Python QCA library exists, so this skill shells to R via Rscript — declare R as a dependency. No API key. On the Anthropic API (no runtime install) document the R requirement and degrade gracefully."
metadata:
    skill-author: AlterLab
    version: "1.0.0"
    depends_on: "alterlab-ssci-design-gate (configurational vs net-effects), alterlab-qualitative-methods; audited by alterlab-ssci-inference-gate"
---

# QCA — Set-Theoretic, Configurational, Equifinal

**Skill type: ANALYSIS MODULE.** Qualitative Comparative Analysis (Ragin) treats cases as
**configurations** of conditions and asks which combinations are consistently sufficient (or
necessary) for an outcome. It is not net-effects regression: it assumes **equifinality** (several
paths to the same outcome), **conjunctural** causation (conditions work in combination), and
**asymmetry** (the path to Y is not the mirror of the path to not-Y).

## Core Mission

```
QCA IS ABOUT COMBINATIONS AND SET RELATIONS, NOT AVERAGE MARGINAL EFFECTS. CALIBRATE, THEN MINIMIZE.
```

## When to Use This Skill

- "Run a fuzzy-set QCA / fsQCA on my configurational data."
- "Which combinations of conditions are sufficient for the outcome?"
- "Calibrate these variables into set membership and build a truth table."
- "Test necessary and sufficient conditions across my ~20 cases."

### Does NOT Trigger

| The request is really about… | Route to | Why not this skill |
|---|---|---|
| The net effect of one treatment (DiD/IV/RDD/regression) | `alterlab-causal-inference` | Correlational/marginal effects, not set relations. |
| Whether a configurational design is even appropriate | `alterlab-ssci-design-gate` | Design routing, upstream. |
| Interpretive/thematic analysis of qualitative data | `alterlab-qualitative-methods` | Not set-theoretic. |
| Plain descriptive statistics | `alterlab-statistical-analysis` | No calibration/minimization. |

## The R path (verified — QCA package, no Python equivalent)

There is **no maintained Python QCA library** (the only PyPI option, `scpQCA`, is stale and
non-standard). The field standard is Adrian Dușa's R **`QCA`** package. Shell to it via `Rscript`.
The three verified calls:

```r
library(QCA)

# 1. Calibrate raw columns into fuzzy (or crisp) set membership.
#    thresholds for the direct method = c(exclusion, crossover, inclusion), ascending.
df$A <- calibrate(raw$A, type = "fuzzy", thresholds = c(4, 6, 8))

# 2. Build the truth table.
#    incl.cut = consistency cutoff; n.cut = min frequency for an observed row.
tt <- truthTable(df, outcome = "OUT", conditions = c("A","B","C"),
                 incl.cut = 0.80, n.cut = 1, show.cases = TRUE, sort.by = "incl")

# 3. Boolean minimization.
#    conservative = no remainders; parsimonious = include "?"; intermediate = supply dir.exp.
sol_c <- minimize(tt, details = TRUE)                       # conservative
sol_p <- minimize(tt, include = "?", details = TRUE)        # parsimonious
sol_i <- minimize(tt, include = "?", dir.exp = c(A=1,B=1,C=1), details = TRUE)  # intermediate
```

Fit parameters printed: **inclS** (sufficiency consistency), **PRI**, **covS** (raw coverage),
**covU** (unique coverage); necessity uses **inclN**, **RoN**. `pof()` tests parameters of fit for
a specific expression; `SetMethods` adds necessity/sufficiency XY plots, robustness, and
clustered-data diagnostics. Full runnable template and the calibration guidance:
`references/qca_in_r.md`.

## The discipline QCA demands

1. **Calibration is a theoretical act, not a mechanical one.** Anchor the three thresholds
   (full-out, crossover, full-in) on substantive knowledge; **avoid membership exactly 0.5** (it is
   undefined for logical operations). Justify each anchor.
2. **Report both the parsimonious and intermediate solutions**, and be explicit about which logical
   remainders (counterfactuals) the intermediate solution used — that is where analytic choices hide.
3. **Consistency before coverage.** A solution term needs high sufficiency consistency (inclS,
   commonly ≥ .80) before its coverage is worth interpreting; report PRI to catch simultaneous
   subset relations in Y and not-Y.
4. **Necessity and sufficiency are separate analyses** — test necessary conditions before minimizing
   for sufficiency; do not read a sufficiency solution as a necessity claim.

## Output Template

```
CALIBRATION:  <per condition: anchors (excl, crossover, incl) + justification>
TRUTH TABLE:  <rows, incl.cut, n.cut, contradictions handled>
SOLUTIONS:    conservative / parsimonious / intermediate (state remainders used)
FIT:          per term inclS, PRI, covS, covU; overall solution consistency + coverage
CLAIM:        configurational (combinations X are sufficient for Y); NOT "X raises Y on average"
```

## References

- `references/qca_in_r.md` — full runnable Rscript template, calibration guidance, fit-parameter glossary, and the graceful-degradation note when R is unavailable.

Part of the AlterLab Academic Skills suite.

Attribution

NVlabsNVlabs
View sourceSee grades on GitHubMore from NVlabs →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Rank Tracker

This skill helps you track, analyze, and report on keyword ranking positions over time. It monitors both traditional SERP rankings and AI/GEO visibility to provide comprehensive search performance insights.

1821 votes

Youtube Competitor Analyzer

Find and analyze YouTube competitor channels using YouTube Data API v3. Discover competitors through keyword search, category matching, content similarity, and related channel discovery. Compare metrics, content strategies, and market positioning. Use when users want to (1) Find competitors for their YouTube channel, (2) Analyze competitor performance metrics, (3) Compare their channel against competitors, (4) Identify content gaps and opportunities, (5) Benchmark against similar creators, (6...

31 votes

Xlsx

Use this skill any time a spreadsheet file is the primary input or output. This means any task where the user wants to: open, read, edit, or fix an existing .xlsx, .xlsm, .xltx, .csv, or .tsv file (e.g., adding columns, computing formulas, formatting, charting, cleaning messy data); create a new spreadsheet from scratch or from other data sources; or convert between tabular file formats. Trigger especially when the user references a spreadsheet file by name or path — even casually (like \"the...

1798860 votes

Weather Fetcher

Instructions for fetching current weather temperature data for Karachi, Pakistan from wttr.in API

671710 votes

Weather

Get current weather and forecasts (no API key required).

486960 votes
View all in data →