Skip to content

Skill Constellations dataset v1.0

Latest

Choose a tag to compare

@FahdSeddik FahdSeddik released this 08 Oct 03:03

Skill Constellations dataset v1.0

This dataset is the dated copy network behind the Skill Constellations study of how agent skills spread on GitHub.
It dates each adoption of a skill lineage by a repository, links each copy to its source, and lists the commit history of every SKILL.md file.
The snapshot date is 2026-07-20.
All times are UTC in ISO 8601 form, and repositories are named by their GitSkills full_name.
The tables hold no author names, no email addresses and no commit messages.

Files

history

The table is stored in history.parquet.
The table has 16,222,844 rows.
Every first-parent change to a SKILL.md in the cloned repositories.
Rows are restricted to the repositories of the study population.
The population keeps valid SKILL.md files and drops forks, files with a wrong content hash and files first committed before 2025-10-01.
Rows that involve a withheld blob are removed.

Column Type Meaning
repository string GitSkills full_name of the repository
commit string Git commit hash
author_time string, UTC ISO 8601 Author time of the commit
commit_time string, UTC ISO 8601 Committer time of the commit
status string Change status of the file in the commit (A added, M modified, D deleted)
old_blob string Git blob hash of the SKILL.md before the commit (all zeros when the file was added)
new_blob string Git blob hash of the SKILL.md after the commit (all zeros when the file was deleted)
path string Path of the SKILL.md inside the repository

adoptions

The table is stored in adoptions.parquet and adoptions.csv.gz.
The table has 2,139,851 rows.
One row per adoption, the first appearance of a lineage in a repository.
It is dated at the later of the lineage time and the creation of the repository.
Mirrors are excluded.

Column Type Meaning
repository string GitSkills full_name of the adopting repository
path string Path of the SKILL.md at which the repository first held the lineage
blob string Git blob hash of the version held at that path
lineage integer Lineage identifier, joins to lineages
adopted_at string, UTC ISO 8601 Time of the adoption, never earlier than the creation of the repository
origin boolean TRUE for the first adoption of the lineage

lineages

The table is stored in lineages.parquet and lineages.csv.gz.
The table has 1,434,748 rows.
A lineage joins the versions of one skill across edits within one front matter name.
Identifiers follow the order of first adoption, then the smallest blob hash.
They are assigned after withholding and run from 1 to the number of lineages.

Column Type Meaning
lineage integer Lineage identifier
name string Normalised front matter name of the skill (empty when the skill has none)
versions integer Number of distinct versions (blobs) in the lineage
adopters integer Number of repositories that adopted the lineage
origin_repository string Repository of the first adoption (empty when the lineage has no dated adoption)
origin_at string, UTC ISO 8601 Time of the first adoption (empty when the lineage has no dated adoption)

copy_events

The table is stored in copy_events.parquet and copy_events.csv.gz.
The table has 18,282 rows.
A copy event is a commit that adds 10 or more skill files.
It is a bundle below 100 files and a bulk copy from 100 files.
One earlier adopter, the source, must already hold at least half of the existing lineages in the event, checked on a sample of at most 200 of them.
Identifiers follow time, then copier, then source, and are assigned after withholding.

Column Type Meaning
event integer Copy event identifier, joins to transmissions
copier string Repository that received the copies
source string Repository that the copies came from
at string, UTC ISO 8601 Time of the commit that made the copies
lineages integer Number of lineages copied from the source in the event
kind string bundle (10 or more skill files in one commit) or bulk (100 or more)

transmissions

The table is stored in transmissions.parquet and transmissions.csv.gz.
The table has 644,626 rows.
One row per lineage in a copy event that the source held before the copy.

Column Type Meaning
lineage integer Lineage identifier, joins to lineages
source string Repository that held the lineage and was the source of the copy
copier string Repository that copied the lineage
at string, UTC ISO 8601 Time of the copy
event integer Copy event identifier, joins to copy_events

Withheld records

Lineages that hold a version confirmed malicious by MalSkills are removed from every table.
Every history row whose old or new blob belongs to such a lineage or to the malicious class is removed as well.
85 lineages are withheld.
6,203 history rows are withheld.
258 adoption rows are withheld.
32 transmission rows are withheld.
No other information about withheld records is published.

Source and citation

The data derive from GitSkills (DOI 10.5281/zenodo.21875637), released under CC BY 4.0.
Please cite GitSkills together with this dataset.

License

This release is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0).
You may share and adapt the data for any purpose, including commercial use.
You must give appropriate credit, link to the license, and indicate if you made changes.
You must not suggest that the licensor endorses you or your use.
The license text is at creativecommons.org/licenses/by/4.0/legalcode.
The LICENSE file holds the attribution line.

Integrity

SHA256SUMS holds the SHA-256 checksum of every other file in this directory.