Agent skill

Update Proposals

by txpipe in txpipe/dolos

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

Apache-2.0Auto-check passedSales & Support

Install Update Proposals

skills CLI
$ npx skills add txpipe/dolos --skill update-proposals -a claude-code

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

GitHub CLI
$ gh skill install txpipe/dolos update-proposals --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/update-proposals .claude/skills/update-proposals && 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
update-proposals
GitHub stars
138
Token cost
~1.6k tokens
SKILL.md length
583 words
Files
1
Skills in repo
7
Repo updated
First seen
Licence
Apache-2.0

At a glance

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

  • Works in 7 steps: Get the DBSync connection string → Query all governance proposals → Query enacted proposals with expected… → …
  • Tasks that involve Proposals and quotes
  • SKILL.md covers Step 1: Get the DBSync…, Step 2: Query all governance…, Step 3: Query enacted… and Step 4: Cross-reference…, plus 5 more sections
  • Calls cargo

What it does

Update Proposals is an agent skill from txpipe/dolos. Update hardcoded Conway governance proposal mappings in hacks.rs by querying 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 Sales & Support, covering Proposals and quotes. The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve Proposals and quotes

Example prompts

  • “/update-proposals”

Workflow steps

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

  1. Get the DBSync connection string
  2. Query all governance proposals
  3. Query enacted proposals with expected Ratified epoch
  4. Cross-reference against hacks.rs
  5. Determine if dropped/expired proposals need entries
  6. Add entries to hacks.rs
  7. Verify

What it can do on your machine

Read from SKILL.md and the folder at commit 48a5f87. 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

Update Proposals loads about 1.6k tokens when it runs. Until then it costs about 25 tokens; SKILL.md has 583 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~25
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 48a5f87, republished under its Apache-2.0 licence (© txpipe). 583 words, ~1,612 tokens.

Download SKILL.mdSave it as .claude/skills/update-proposals/SKILL.md (or your agent's skills folder).
name
update-proposals
description
Update hardcoded Conway governance proposal mappings in hacks.rs by querying DBSync

Update Hardcoded Proposal Mappings

Dolos doesn't implement DRep governance voting, so Conway proposal outcomes are hardcoded in crates/cardano/src/hacks.rs. When testing advances to new epochs, missing proposals cause wrong deposit refund timing and missed treasury withdrawals, leading to pot mismatches.

This skill walks through querying DBSync and updating hacks.rs accordingly.

Step 1: Get the DBSync connection string

Read xtask.toml at the repo root. The [dbsync] section has connection URLs per network:

toml
[dbsync]
mainnet_url = "postgresql://..."
preprod_url = "postgresql://..."
preview_url = "postgresql://..."

Use the appropriate URL for the target network.

Step 2: Query all governance proposals

Run this against DBSync to get the full proposal lifecycle:

sql
SELECT
    encode(tx.hash, 'hex') || '#' || gap.index::text AS proposal_id,
    gap.type::text AS proposal_type,
    b.epoch_no AS submitted_epoch,
    gap.ratified_epoch,
    gap.enacted_epoch,
    gap.dropped_epoch,
    gap.expired_epoch
FROM gov_action_proposal gap
JOIN tx ON tx.id = gap.tx_id
JOIN block b ON b.id = tx.block_id
ORDER BY b.epoch_no, gap.index;

Key columns:

  • proposal_id: The txhash#index format used in hacks.rs match arms
  • type: TreasuryWithdrawals, NewConstitution, NewCommittee, ParameterChange, HardForkInitiation, InfoAction
  • ratified_epoch: Non-null if the proposal was ratified (enactment follows at the next epoch). Use this when enacted_epoch is still NULL — the proposal is ratified but enactment hasn't happened yet at the current DBSync tip.
  • enacted_epoch: Non-null if the proposal was enacted on-chain
  • dropped_epoch: Non-null if the proposal was dropped (superseded by another)
  • expired_epoch: Non-null if the proposal expired without ratification

Step 3: Query enacted proposals with expected Ratified epoch

sql
SELECT
    encode(tx.hash, 'hex') || '#' || gap.index::text AS proposal_id,
    gap.type::text AS proposal_type,
    b.epoch_no AS submitted_epoch,
    gap.ratified_epoch,
    gap.enacted_epoch,
    COALESCE(gap.ratified_epoch, gap.enacted_epoch - 1)::text AS expected_ratified
FROM gov_action_proposal gap
JOIN tx ON tx.id = gap.tx_id
JOIN block b ON b.id = tx.block_id
WHERE gap.enacted_epoch IS NOT NULL OR gap.ratified_epoch IS NOT NULL
ORDER BY COALESCE(gap.enacted_epoch, gap.ratified_epoch), gap.index;

The formula is: Ratified(enacted_epoch - 1), or equivalently Ratified(ratified_epoch). Ratification happens one epoch before enactment in Conway governance. Include proposals where ratified_epoch is non-null but enacted_epoch is still NULL — these are ratified but awaiting enactment at the current tip, and still need Ratified entries in hacks.rs.

Step 4: Cross-reference against hacks.rs

Read crates/cardano/src/hacks.rs and find the network's outcome() function (e.g., pub mod mainnet). Compare every enacted proposal from Step 3 against existing match arms.

Check for:

  1. Missing entries: Enacted or ratified proposals not in hacks.rs. These return Unknown, never get enacted, and eventually expire -- causing wrong deposit refund timing and missed treasury withdrawals.
  2. Wrong Ratified epoch: Existing entries where the Ratified(N) doesn't match ratified_epoch (or enacted_epoch - 1 if ratified_epoch is NULL).
  3. Still-pending proposals: Proposals with no ratified_epoch, enacted_epoch, dropped_epoch, or expired_epoch yet. These correctly return Unknown and will need entries added later when resolved.
Show full SKILL.md (256 more words)Show less

Step 5: Determine if dropped/expired proposals need entries

Check dropped/expired proposals:

sql
SELECT
    encode(tx.hash, 'hex') || '#' || gap.index::text AS proposal_id,
    gap.type::text AS proposal_type,
    b.epoch_no AS submitted_epoch,
    gap.dropped_epoch,
    gap.expired_epoch
FROM gov_action_proposal gap
JOIN tx ON tx.id = gap.tx_id
JOIN block b ON b.id = tx.block_id
WHERE gap.enacted_epoch IS NULL
  AND (gap.dropped_epoch IS NOT NULL OR gap.expired_epoch IS NOT NULL)
ORDER BY b.epoch_no, gap.index;

Rules:

  • If dropped_epoch = expired_epoch + 1 (natural expiry), no entry needed. The Unknown outcome lets them expire via max_epoch, matching DBSync timing.
  • If a proposal was dropped early (superseded by another proposal of the same type), it may need Canceled(epoch) if the timing differs from natural expiry.
  • InfoAction proposals never need entries (they have no on-chain effect).

Step 6: Add entries to hacks.rs

Insert new match arms in the appropriate network module, before the _ => match protocol fallback. Group entries logically (by epoch or proposal type) and add a brief comment describing each:

rust
// Treasury Withdrawal for Catalyst Fund 14
"03f671791fd97011f30e4d6b76c9a91f4f6bcfb60ee37e5399b9545bb3f2757a#0" => {
    Ratified(597)
}

ProposalOutcome variants:

  • Ratified(epoch) -- proposal was ratified at this epoch, enacted at epoch+1
  • Canceled(epoch) -- proposal was canceled/superseded at this epoch
  • RatifiedCurrentEpoch -- pre-Conway (protocol 0-8) proposals that ratify in the epoch they're submitted
  • Unknown -- default for unresolved proposals; they expire naturally via max_epoch

Step 7: Verify

bash
cargo check -p dolos-cardano

Then run epoch tests that cover the affected epoch range:

bash
cargo test --test epoch_pots --release -- --nocapture

Reference: DBSync gov_action_proposal table

ColumnTypeDescription
idbigintPrimary key
tx_idbigintFK to tx -- the transaction containing the proposal
indexintIndex of the proposal within the transaction
typetextProposal type enum
ratified_epochintEpoch when ratified (null if not ratified). May be set before enacted_epoch if enactment hasn't happened yet at the current DBSync tip.
enacted_epochintEpoch when enacted (null if not enacted)
dropped_epochintEpoch when dropped/superseded (null if not dropped)
expired_epochintEpoch when expired (null if not expired)

Reference: Network magic values

Used in proposals::outcome() dispatch:

  • Mainnet: 764824073
  • Preprod: 1
  • Preview: 2

© 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/update-proposals of txpipe/dolos.

Open the folder on GitHubat commit 48a5f87

Compare with similar skills

Update Proposals 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.

Update Proposals compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Update Proposals this skilltxpipe/dolos138—~1.6kAutomated safety check: PassApache-2.0
Doc Coauthoringaws-samples/sample-strands-agent-with-agentcore19439 repos~3.2kAutomated safety check: PassMIT
Audit Onboarding Proposalhoangnb24/repository-harness1.2k—~4kAutomated safety check: PassMIT
No Negative EchoLB623/no-negative-echo893—~965Automated safety check: PassMIT
GEO Service Proposal Generatorzubair-trabzada/geo-seo-claude11k—~3kAutomated safety check: NotesMIT
Architectural ProposalsFritzAndFriends/SharpSite1452 repos~1.6kAutomated safety check: PassMIT

Similar skills

  • Doc Coauthoring

    aws-samples/sample-strands-agent-with-agentcore

    Official

    Guide users through a structured workflow for co-authoring documentation.

    194 GitHub starsUsed in 39 repos~3.2k tokens
    Sales & SupportAuto-check passed
  • Audit Onboarding Proposal

    hoangnb24/repository-harness

    Use only when the user explicitly invokes $audit-onboarding-proposal.

    1.2k GitHub stars~4k tokensUpdated 3 days ago
    Sales & SupportAuto-check passed
  • No Negative Echo

    LB623/no-negative-echo

    Prevent 此地无银三百两式 residue: finalize artifacts without echoing rejected session-only alternatives into labels, metadata, commits, PRs, or handoffs.

    893 GitHub stars~965 tokensUpdated 1 mo ago
    Sales & SupportAuto-check passed
  • GEO Service Proposal Generator

    zubair-trabzada/geo-seo-claude

    Builds a client-ready AI-search-optimization proposal from an existing GEO audit, with pricing tiers, an ROI estimate and a markdown document ready to send.

    11k GitHub stars~3k tokensUpdated yesterday
    Sales & SupportAuto-check: notes
  • Architectural Proposals

    FritzAndFriends/SharpSite

    How to write comprehensive architectural proposals that drive alignment before code is written

    145 GitHub starsUsed in 2 repos~1.6k tokens
    Sales & SupportAuto-check passed
  • Task Profile

    techwolf-ai/ai-first-toolkit

    Mine the user's Claude Code + Cowork session history into a structured task profile, what they do with AI, how often, how successfully where friction lives, then propose atomic skills that would…

    132 GitHub stars~3.6k tokensUpdated 8 days ago
    Sales & SupportAuto-check passed

More from txpipe/dolos

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

    138 GitHub stars~2.6k tokensUpdated yesterday
    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 yesterday
    Auto-check passed
  • Add Epoch Test

    txpipe/dolos

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

    138 GitHub stars~1.6k tokensUpdated yesterday
    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 yesterday
    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 yesterday
    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 yesterday
    Auto-check passed

Categories

Questions about Update Proposals

What does Update Proposals do?

Update hardcoded Conway governance proposal mappings in hacks.rs by querying DBSync. Update Proposals is an agent skill from txpipe/dolos.

When should I use Update Proposals?

Update Proposals fits situations like: tasks that involve Proposals and quotes.

How do I install Update Proposals in Claude Code?

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

How do I install Update Proposals in Codex?

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

Can I use Update Proposals 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 update-proposals -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/update-proposals, .gemini/skills/update-proposals, .github/skills/update-proposals and .opencode/skills/update-proposals in your project.

What does Update Proposals need to run?

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

Does Update Proposals 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 Update Proposals 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 Update Proposals use?

Update Proposals 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 Update Proposals 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 Update Proposals?

Skills that share tags, products or a category with Update Proposals: Doc Coauthoring (aws-samples/sample-strands-agent-with-agentcore, 194 stars), Audit Onboarding Proposal (hoangnb24/repository-harness, 1.2k stars), No Negative Echo (LB623/no-negative-echo, 893 stars) and GEO Service Proposal Generator (zubair-trabzada/geo-seo-claude, 11k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Update Proposals?

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 6, 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.