Agent skill

Add Epoch Test

by txpipe in txpipe/dolos

Set up a new epochpots integration test with ground truth fixtures from DBSync

Apache-2.0Auto-check passedTesting & QA

Install Add Epoch Test

skills CLI
$ npx skills add txpipe/dolos --skill add-epoch-test -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install txpipe/dolos add-epoch-test --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/txpipe/dolos.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/add-epoch-test .claude/skills/add-epoch-test && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
add-epoch-test
GitHub stars
138
Token cost
~1.6k tokens
SKILL.md length
576 words
Files
1
Skills in repo
7
Repo updated
First seen
Licence
Apache-2.0

At a glance

Set up a new epochpots integration test with ground truth fixtures from DBSync

  • Works in 6 steps: Verify a seed exists → Generate ground truth fixtures → Add the test entry → …
  • Tasks that involve Integration testing
  • SKILL.md covers Key Concepts, Step 1: Verify a seed exists, Step 2: Generate ground truth… and Step 3: Add the test entry, plus 6 more sections
  • Calls cargo

What it does

Add Epoch Test is an agent skill from txpipe/dolos. Set up a new epochpots integration test with ground truth fixtures from DBSync

Its SKILL.md is about 1.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Testing & QA, covering Integration testing. The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve Integration testing

Example prompts

  • “/add-epoch-test”

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Verify a seed exists
  2. Generate ground truth fixtures
  3. Add the test entry
  4. Verify it compiles
  5. Run the test
  6. Run all tests to check for regressions

What it can do on your machine

Read from SKILL.md and the folder at commit 7e973ea. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • cargo

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Add Epoch Test loads about 1.6k tokens when it runs. Until then it costs about 24 tokens; SKILL.md has 576 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~24
When it runs · the whole SKILL.md, loaded when a task matches
~1.6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from txpipe/dolos at commit 7e973ea, republished under its Apache-2.0 licence (© txpipe). 576 words, ~1,608 tokens.

Download SKILL.mdSave it as .claude/skills/add-epoch-test/SKILL.md (or your agent's skills folder).
name
add-epoch-test
description
Set up a new epoch_pots integration test with ground truth fixtures from DBSync

Add an Epoch Pots Test

Epoch pots tests compare dolos ledger output against DBSync ground truth for a specific epoch. Each test needs: fixture CSVs from DBSync, a fixtures directory, and a test entry using the epoch_test! macro.

Key Concepts

  • subject_epoch: The epoch being tested. Dolos runs up to subject_epoch + 1 so that the subject epoch completes fully.
  • performance_epoch: subject_epoch - 2. This is the epoch whose rewards, delegation, and stake snapshots are compared. Cardano uses a 2-epoch lag for reward distribution.
  • snapshot_epoch: Same as performance_epoch. Used in delegation/stake fixture filenames (e.g., delegation-248.csv for subject epoch 250).
  • seed: A pre-built dolos state directory that the test copies and resumes from, to avoid replaying the entire chain. Seeds are configured in xtask.toml under [seeds].

Step 1: Verify a seed exists

Check xtask.toml for seeds and the constant arrays in tests/epoch_pots/main.rs:

rust
const MAINNET_SEED_EPOCHS: &[u64] = &[200, 270, 300, 340];
const PREVIEW_SEED_EPOCHS: &[u64] = &[500, 700];
const PREPROD_SEED_EPOCHS: &[u64] = &[200];

The test picks the nearest lower seed. If no seed is available at or below the subject epoch, you need to create one first (see "Creating a new seed" below).

Step 2: Generate ground truth fixtures

Run the xtask ground-truth generate command. The output goes directly into the fixtures directory:

bash
# Create the fixtures directory
mkdir -p tests/epoch_pots/fixtures/{network}-{subject_epoch}

# Generate all ground truth CSVs
cargo run -p xtask -- ground-truth generate \
  --network {network} \
  --subject-epoch {subject_epoch} \
  --output-dir tests/epoch_pots/fixtures/{network}-{subject_epoch}

This queries DBSync (connection from xtask.toml [dbsync] section) and writes:

FileContent
epochs.csvTreasury, reserves, rewards, utxo, fees, nonce, block_count for epochs 1..=subject
pparams.csvProtocol parameters for epochs 1..=subject
eras.csvEra boundaries (protocol version, start epoch, lengths)
delegation-{perf}.csvPer-pool total stake at performance_epoch
stake-{perf}.csvPer-account stake/pool pairs at performance_epoch
rewards.csvPer-account rewards (leader/member) at performance_epoch

Where {perf} = subject_epoch - 2.

You can regenerate individual datasets with --only-* flags:

bash
cargo run -p xtask -- ground-truth generate \
  --network mainnet --subject-epoch 450 \
  --output-dir tests/epoch_pots/fixtures/mainnet-450 \
  --only-rewards

Available flags: --only-eras, --only-epochs, --only-pparams, --only-delegation, --only-stake, --only-rewards.

Step 3: Add the test entry

Edit tests/epoch_pots/main.rs. Add an epoch_test! invocation in the test functions section at the bottom, maintaining order by epoch number:

rust
epoch_test!(test_{network}_{subject}, fixtures_{network}_{subject}, "{network}", {subject}, {perf});

Example for mainnet epoch 450 (performance epoch 448):

rust
epoch_test!(test_mainnet_450, fixtures_mainnet_450, "mainnet", 450, 448);

The macro arguments are:

  1. Test function name: test_{network}_{subject_epoch}
  2. Fixture module name: fixtures_{network}_{subject_epoch} (unused legacy, but must be unique)
  3. Network string: "mainnet", "preprod", or "preview"
  4. Subject epoch number
  5. Snapshot/performance epoch number (subject - 2)

Step 4: Verify it compiles

bash
cargo test --test epoch_pots --no-run
Show full SKILL.md (238 more words)Show less

Step 5: Run the test

bash
# Run the specific test
DOLOS_SEED_DIR=/path/to/seeds cargo test --test epoch_pots test_{network}_{subject} --release -- --nocapture

# The DOLOS_SEED_DIR should contain directories like mainnet-200/, mainnet-300/, etc.
# Each seed directory must have a state/ subdirectory with the dolos state.

The test:

  1. Copies the nearest seed's state/ to a temp directory
  2. Replays from the Mithril snapshot immutable files up to subject_epoch + 1
  3. Dumps dolos epochs, pparams, eras, delegation, stake, and rewards CSVs
  4. Compares each against the ground truth fixtures
  5. Reports diffs (up to 20 per dataset)

Set EPOCH_POTS_KEEP_DIR=1 to preserve the temp directory for debugging.

Step 6: Run all tests to check for regressions

bash
DOLOS_SEED_DIR=/path/to/seeds cargo test --test epoch_pots --release -- --nocapture

Creating a new seed

If no seed covers the target epoch range, create one. A seed is just the dolos state/ directory at a specific epoch.

  1. Create a test instance that stops at the seed epoch:
bash
cargo xtask test-instance create --network mainnet --epoch {seed_epoch}
  1. Wait for it to sync (exits with "forced stop epoch reached").

  2. Copy the state to the seeds directory:

bash
mkdir -p /path/to/seeds/mainnet-{seed_epoch}
cp -r {instances_root}/test-mainnet-{seed_epoch}/data/state /path/to/seeds/mainnet-{seed_epoch}/state
  1. Update xtask.toml to register the seed:
toml
[seeds]
mainnet = "/path/to/seeds/mainnet-{seed_epoch}"
  1. Add the seed epoch to the constant array in tests/epoch_pots/main.rs:
rust
const MAINNET_SEED_EPOCHS: &[u64] = &[200, 270, 300, 340, {seed_epoch}];

Fixture directory structure

tests/epoch_pots/fixtures/{network}-{subject_epoch}/
├── epochs.csv              # Multi-row: all epochs 1..=subject
├── pparams.csv             # Multi-row: all epochs 1..=subject
├── eras.csv                # Era boundaries
├── delegation-{perf}.csv   # Per-pool totals
├── stake-{perf}.csv        # Per-account stake (can be very large)
└── rewards.csv             # Per-account rewards

Common issues

DBSync timeout on large queries: Stake and rewards queries for mainnet can be very large. If they timeout, retry or use --only-stake / --only-rewards separately.

Missing seed: If the test panics with "no seed available for {network} <= {epoch}", you need to create a seed at or below the subject epoch.

Large fixture files: Stake CSVs for mainnet can be 100MB+. These are checked into the repo under tests/epoch_pots/fixtures/. Consider whether the epoch is worth testing (milestone epochs, era boundaries, known bug points are good candidates).

© txpipe, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/add-epoch-test of txpipe/dolos.

Open the folder on GitHubat commit 7e973ea

Compare with similar skills

Add Epoch Test next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Add Epoch Test compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Add Epoch Test this skilltxpipe/dolos138—~1.6kAutomated safety check: PassApache-2.0
Plugin Testingpolyipseity/obsidian-terminal948—~828Automated safety check: PassAGPL-3.0
Create Modulecartography-cncf/cartography4.1k—~2.5kAutomated safety check: PassApache-2.0
Td Integration Testmarcus/td251—~1.2kAutomated safety check: PassMIT
Integration E2E Testingshinpr/claude-code-workflows691—~3.5kAutomated safety check: PassMIT
JS-in-HTML Testingliaohch3/claude-tap3.3k—~924Automated safety check: PassMIT

Similar skills

  • Plugin Testing

    polyipseity/obsidian-terminal

    Skill for testing Obsidian plugin features in this repository.

    948 GitHub stars~828 tokensUpdated 4 days ago
    Testing & QAAuto-check passed
  • Create Module

    cartography-cncf/cartography

    Author a new Cartography intel module end-to-end (entry point, sync GET/TRANSFORM/LOAD/CLEANUP, declarative data model, integration test, schema docs).

    4.1k GitHub stars~2.5k tokensUpdated today
    Testing & QAAuto-check passed
  • Write integration tests for the td-sync admin API using the TestHarness in internal/api/testharnesstest.go.

    251 GitHub stars~1.2k tokensUpdated 7 days ago
    Testing & QAAuto-check passed
  • Integration E2E Testing

    shinpr/claude-code-workflows

    Integration and E2E test design principles, ROI calculation, test skeleton specification, and review criteria.

    691 GitHub stars~3.5k tokensUpdated 6 days ago
    Testing & QAAuto-check passed
  • JS-in-HTML Testing

    liaohch3/claude-tap

    Tests JavaScript embedded in an HTML file in two layers: pytest checks of the logic ported to Python, and Playwright runs in a real browser for the DOM.

    3.3k GitHub stars~924 tokensUpdated 15 days ago
    Testing & QAAuto-check passed
  • Crosvm Testing

    google/crosvm

    Official

    Skill to assist with running tests and managing test VMs in the crosvm repository.

    1.3k GitHub stars~847 tokensUpdated today
    Testing & QAAuto-check passed

More from txpipe/dolos

  • Systematic workflow for debugging Cardano ledger epoch pots mismatches in Dolos.

    138 GitHub stars~2.6k tokensUpdated today
    Auto-check passed
  • Update Docs

    txpipe/dolos

    Reconcile the user-facing documentation under docs/content/ with the current source-of-truth in the codebase.

    138 GitHub stars~2.1k tokensUpdated today
    Auto-check passed
  • Add a missing pointer address mapping to hacks.rs by looking up the stake credential in DBSync

    138 GitHub stars~840 tokensUpdated today
    Auto-check passed
  • Dolos Pipeline

    txpipe/dolos

    Architecture of the Dolos processing pipeline — WorkUnit lifecycle, executor modes, CardanoWorkUnit variants, WorkBuffer state machine, and sequencing.

    138 GitHub stars~2.2k tokensUpdated today
    Auto-check passed
  • Ledger Gotchas

    txpipe/dolos

    Reference of non-obvious Cardano ledger behaviors that have caused bugs in Dolos.

    138 GitHub stars~2.8k tokensUpdated today
    Auto-check passed
  • Update Proposals

    txpipe/dolos

    Update hardcoded Conway governance proposal mappings in hacks.rs by querying DBSync

    138 GitHub stars~1.6k tokensUpdated today
    Auto-check passed

Categories

Questions about Add Epoch Test

What does Add Epoch Test do?

Set up a new epochpots integration test with ground truth fixtures from DBSync. Add Epoch Test is an agent skill from txpipe/dolos.

When should I use Add Epoch Test?

Add Epoch Test fits situations like: tasks that involve Integration testing.

How do I install Add Epoch Test in Claude Code?

Run `npx skills add txpipe/dolos --skill add-epoch-test -a claude-code`. Or copy the skill folder (skills/add-epoch-test in txpipe/dolos) into .claude/skills/add-epoch-test in your project. Claude Code loads it when a task matches its description.

How do I install Add Epoch Test in Codex?

Run `npx skills add txpipe/dolos --skill add-epoch-test -a codex`. Or copy the skill folder (skills/add-epoch-test in txpipe/dolos) into .agents/skills/add-epoch-test in your project. Codex loads it when a task matches its description.

Can I use Add Epoch Test in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add txpipe/dolos --skill add-epoch-test -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/add-epoch-test, .gemini/skills/add-epoch-test, .github/skills/add-epoch-test and .opencode/skills/add-epoch-test in your project.

What does Add Epoch Test need to run?

Going by SKILL.md and its folder, Add Epoch Test needs the command-line tools its instructions call (cargo).

Does Add Epoch Test access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Add Epoch Test safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Add Epoch Test use?

Add Epoch Test is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Add Epoch Test use?

About 1.6k tokens (SKILL.md is roughly 6.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Add Epoch Test?

Skills that share tags, products or a category with Add Epoch Test: Plugin Testing (polyipseity/obsidian-terminal, 948 stars), Create Module (cartography-cncf/cartography, 4.1k stars), Td Integration Test (marcus/td, 251 stars) and Integration E2E Testing (shinpr/claude-code-workflows, 691 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Add Epoch Test?

txpipe (a GitHub organization) maintains it in txpipe/dolos, which has 138 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 8, 2026.

Source: txpipe/dolos on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.