Agent skill

Temporal Parameter Staleness

by PlamenTSV in PlamenTSV/plamen

Trigger Pattern interval|period|duration|delay|cooldown|lockperiod|timelock|deadline|maturity|expiry|getTime - Inject Into Breadth agents, depth-state-trace

MITAuto-check passed

Install Temporal Parameter Staleness

skills CLI
$ npx skills add PlamenTSV/plamen --skill temporal-parameter-staleness -a claude-code

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

GitHub CLI
$ gh skill install PlamenTSV/plamen temporal-parameter-staleness --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/PlamenTSV/plamen.git skills-src && mkdir -p .claude/skills && cp -r skills-src/agents/skills/daml/temporal-parameter-staleness .claude/skills/temporal-parameter-staleness && 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
temporal-parameter-staleness
GitHub stars
303
Token cost
~3.3k tokens
SKILL.md length
1,356 words
Files
1
Skills in repo
87
Repo updated
First seen
Licence
MIT

At a glance

Trigger Pattern interval|period|duration|delay|cooldown|lockperiod|timelock|deadline|maturity|expiry|getTime - Inject Into Breadth agents, depth-state-trace

  • Works in 5 steps: Enumerate Multi-Step (Multi-Transaction)… → Identify Cached Parameters → Model Staleness Impact → …
  • Pattern interval|period|duration|delay|cooldown|lockperiod|timelock|deadline|maturity|expiry|getTime - Inject Into Breadth agents
  • SKILL.md covers Step 1: Enumerate Multi-Step…, Step 2: Identify Cached…, Step 3: Model Staleness Impact and Step 3b: Update-Source Audit, plus 8 more sections
  • Needs NO_SUCH_KEY

What it does

Temporal Parameter Staleness is an agent skill from PlamenTSV/plamen. Trigger Pattern interval|period|duration|delay|cooldown|lockperiod|timelock|deadline|maturity|expiry|getTime - Inject Into Breadth agents, depth-state-trace

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

The repository describes itself as: Autonomous Web3 security audit agent for Claude Code. The licence is MIT.

When your agent uses it

  • Pattern interval|period|duration|delay|cooldown|lockperiod|timelock|deadline|maturity|expiry|getTime - Inject Into Breadth agents
  • Depth-state-trace

Example prompts

  • “/temporal-parameter-staleness”

Requirements

  • A credential in NO_SUCH_KEY

Workflow steps

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

  1. Enumerate Multi-Step (Multi-Transaction) Operations
  2. Identify Cached Parameters
  3. Model Staleness Impact
  4. Retroactive Application Analysis
  5. Assess Severity

What it can do on your machine

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

    No scripts in the folder and no shell commands in SKILL.md (its code samples are markdown).

    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 these keys or tokens, usually read from environment variables:

    • NO_SUCH_KEY

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

Context cost

Temporal Parameter Staleness loads about 3.3k tokens when it runs. Until then it costs about 47 tokens; SKILL.md has 1,356 words of instructions outside code blocks.

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

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 PlamenTSV/plamen at commit 795962b, republished under its MIT licence (© PlamenTSV). 1,356 words, ~3,335 tokens.

Download SKILL.mdSave it as .claude/skills/temporal-parameter-staleness/SKILL.md (or your agent's skills folder).
name
temporal-parameter-staleness
description
Trigger Pattern interval|period|duration|delay|cooldown|lock_period|timelock|deadline|maturity|expiry|getTime - Inject Into Breadth agents, depth-state-trace

TEMPORAL_PARAMETER_STALENESS Skill (DAML)

Trigger Pattern: interval|period|duration|delay|cooldown|lock_period|timelock|deadline|maturity|expiry|valid_until|getTime Inject Into: Breadth agents, depth-state-trace Finding prefix: [DML-TPS-N] Rules referenced: R2, R8, R10, R13, R14

Cached parameters in multi-step (multi-transaction) operations become stale when an authority changes the source between steps. On DAML, time is read with getTime : Update Time inside a choice, returning ledger time (a record time the submitter does NOT choose; it is bounded by the transaction's ledger-time window). A deadline/duration is a template field (Time or a RelTime/Int of seconds); a value is "cached" when a choice copies a config field into a successor contract at Step 1, and Step N reads the cached copy instead of re-fetching the live config. There are no slots/epochs/blocks — time is the ledger Time value. This skill is the staleness/cross-transaction lens; ENSURE_INVARIANTS §4 is the single-choice deadline-enforcement boundary lens — cross-reference, do not duplicate.


Step 1: Enumerate Multi-Step (Multi-Transaction) Operations

Find all operations that span multiple transactions, typically a Propose/Accept or initiate/complete pattern:

OperationStep 1 (Initiate)Wait ConditionStep N (Complete)Time Source
{op_name}{Propose choice / create}{deadline / cooldown}{Accept / Complete choice}getTime (ledger time)

For each multi-step operation:

  • What parameters/fields are read and copied into a successor contract at Step 1?
  • What fields are re-fetched from the live config at Step N?
  • What fields are USED at Step N but NOT re-fetched (cached, possibly stale)?
  • Is time read via getTime (ledger time) or taken from a caller-supplied Time argument? A caller-supplied time lets the caller choose "now" — always a finding.
DAML Time Semantics
SourceTypeWho ControlsNotes
getTimeTime (in Update/Script)Ledger (record time, within the tx ledger-time window)The ONLY trustworthy "now" inside a choice
Caller-supplied Time/RelTime argumentchoice argumentThe submitting partyNOT trustworthy as "now" — the caller picks it
A deadline : Time field on a contracttemplate fieldWhoever authorized the createOnly enforced if a choice compares it to getTime

Critical property: within a single transaction (one choice and its consequences), all getTime calls return the same Time — there is no intra-transaction time variation. Multi-step time attacks require separate transactions.


Step 2: Identify Cached Parameters

For each parameter used across steps:

Parameter (field)Source ContractCopied Into (Step 1 successor)Cached?Authority-Changeable? (which choice)Re-Fetched at Step N?

DAML caching patterns:

  • Snapshot into successor: a Propose choice copies config.feeRate/config.deadline into the Proposal contract; Accept reads the Proposal's copy, not the live config.
  • Cached deadline: a Proposal stores deadline = addRelTime now period computed at Step 1; if period later changes in config, the Proposal's deadline is stale.
  • Re-fetch pattern: Step N does cfg <- fetchByKey @Config ... and reads live values — no staleness for those fields.

Red flags: a field is copied into the Step-1 successor AND an authority can change the source config AND Step N does NOT re-fetch the source.


Step 3: Model Staleness Impact

For each cached parameter that can become stale:

Scenario A: Parameter INCREASES between steps
1. Party initiates at Step 1 — successor contract stores param = X
2. Authority exercises a setter choice: config param = X + delta
3. Party completes at Step N — uses cached X from the successor
4. Impact: {what happens with stale X when live config is X + delta}

Scenario B: Parameter DECREASES between steps
1. Party initiates at Step 1 — successor stores param = X
2. Authority setter: config param = X - delta
3. Party completes at Step N — uses cached X
4. Impact: {what happens with stale X when live config is X - delta}

BOTH directions are mandatory — increase and decrease often differ.

DAML-Specific Staleness Vectors
VectorDescriptionSeverity Modifier
Stale snapshot in successorProposal/initiate contract holds a copied config field; Accept never re-fetches the live config.HIGH if it governs value movement; MEDIUM otherwise
Cached absolute deadlinedeadline computed at Step 1 from a period that later changes; the Proposal's deadline no longer matches policy.Medium if the deadline is safety-critical
Caller-supplied timeA choice compares against a Time passed as an argument instead of getTime.High — the caller chooses "now", defeating the gate
Config archived mid-operationThe config contract a Step-N choice fetches/fetchByKeyes is archived between steps.High — Step N aborts CONTRACT_NOT_FOUND / NO_SUCH_KEY (liveness brick)
Retroactive rate-at-completeStep N reads the LIVE config rate (not the Step-1 snapshot), so an authority change retroactively alters all pending operations.Medium–High depending on who is harmed

Step 3b: Update-Source Audit

For each parameter updated from another contract (a price/rate feed contract fetched in a choice):

  • Is the source the correct representation of what this parameter tracks?
  • Is the source contract's identity validated? Can a forged config/feed ContractId be substituted via a caller-supplied argument (cross-reference CID_CAPABILITY_SAFETY)?
  • Should the parameter be fixed for a period (per epoch) rather than re-read every completion?
  • Which choice updates it, who controls that choice, and what is the protocol state if it is never exercised (no refresh)?

Step 4: Retroactive Application Analysis

For fee/rate/deadline fields that apply to existing in-flight state:

Parameter (field)Set By (choice)Applies ToRetroactive?Impact

DAML retroactive patterns:

  • Config setter: an authority archives+recreates the config with a new feeRate. All pending completions that re-fetch the live config now use the new rate — retroactively changes returns for parties who initiated under the old rate.
  • Cooldown/period setter: changing cooldownPeriod in config makes parties who already initiated wait longer/shorter — retroactive on in-flight Proposals (if Step N recomputes from live period).
  • Rate-at-complete pattern: if Step N reads the live config field (not the Step-1 snapshot), any authority change between steps applies retroactively.

Rule 2 direction check: can the authority's change make a party-facing choice behave unexpectedly (e.g. setting cooldownPeriod = 0 removes a withdrawal-delay protection; setting maxWithdrawal = 0 blocks all withdrawals)? Does the change retroactively affect parties in active operations?


Show full SKILL.md (513 more words)Show less

Step 5: Assess Severity

For each staleness issue:

  • Who is affected? (one party, all parties with pending operations, the protocol)
  • Is the impact bounded? (capped by a field range, an ensure, a max delay)
  • Can it be exploited intentionally? (authority times a setter to a specific ledger to harm a pending operation)
  • Is there a recovery path? (cancel + re-initiate; an authority override choice)
  • Ledger precision: how precisely can an attacker time exploitation relative to the deadline?
Severity Assessment (Rule 10 — Worst-State)

Use worst realistic operational state:

Severity assessed at: pending_ops=MAX, rate_delta=MAX_RATE-MIN_RATE, value=$XX
Rationale: protocol designed for up to {N} concurrent pending operations per documentation

Key Questions (must answer all)

  1. What multi-step (multi-transaction) operations exist? (Propose/Accept, initiate/complete)
  2. For each cached field: can an authority change the source between steps?
  3. What happens if a delay DECREASES after initiation? (parties complete too early relative to new policy)
  4. What happens if a delay INCREASES after initiation? (parties locked longer than expected)
  5. Are fees/rates applied retroactively to in-flight operations, or only to new ones?
  6. Is there a max field range bounding the staleness impact (an ensure)?
  7. DAML-specific: does any time comparison use getTime (ledger time) or a caller-supplied Time?
  8. DAML-specific: can the config contract a Step-N choice fetches be archived between steps (CONTRACT_NOT_FOUND / NO_SUCH_KEY brick)?
  9. DAML-specific: is there a refresh/update choice for an external feed? What if it is never exercised?
  10. DAML-specific: does a Step-1 snapshot vs Step-N re-fetch decision change which value (stale-cached vs retroactive-live) governs the outcome?

Common False Positives

  • Immutable config: if the config has no setter choice (or the setter's controller is revoked/governance), no staleness
  • Bounded ranges: if an ensure limits the change magnitude, impact may be Low
  • Cancellable operations: if parties can archive a pending Proposal and re-initiate, reduced severity
  • Two-step authority change: if config changes themselves require a Propose/Accept delay, parties have time to react
  • Same-transaction operations: choices completing in one transaction cannot have time staleness between steps
  • Re-fetch at completion: if Step N re-fetches the live config (not a Step-1 snapshot), no staleness for that field

Instantiation Parameters

{TEMPLATES}        - Templates to analyze
{MULTI_STEP_OPS}   - Identified multi-step (Propose/Accept) operations
{CACHED_PARAMS}    - Fields snapshotted into Step-1 successors
{AUTHORITY_PARAMS} - Authority-changeable config fields
{DELAY_PARAMS}     - Deadline/cooldown fields (Time / RelTime / seconds)
{FEE_PARAMS}       - Fee/rate fields that may apply retroactively
{TIME_SOURCE}      - getTime (ledger time) vs caller-supplied Time argument

Output Schema

FieldRequiredDescription
multi_step_opsyesMulti-transaction operations found
cached_paramsyesFields snapshotted across steps (into which successor)
staleness_vectorsyesHow cached fields can become stale
retroactive_feesyesFees/rates applied retroactively
time_source_audityesgetTime vs caller-supplied, and whether appropriate
config_archival_risksyesConfig contracts that could be archived mid-operation
findingyesCONFIRMED / REFUTED / CONTESTED
evidenceyesCode locations with line numbers
step_executionyesStatus for each step

Finding Template

markdown
**ID**: [DML-TPS-N]
**Verdict**: CONFIRMED / PARTIAL / REFUTED / CONTESTED
**Step Execution**: ✓1,2,3,3b,4,5 | ✗(reasons) | ?(uncertain)
**Rules Applied**: [R2:___, R8:___, R10:___, R13:___, R14:___]
**Severity**: Critical/High/Medium/Low/Info
**Location**: {Module}.daml:LineN (template X, choice Y)
**Title**: {stale cached field / caller-supplied time / retroactive rate / config-archival brick}
**Description**: {which field is cached at Step 1, which authority changes it, why Step N is stale}
**Impact**: {quantified at worst-state — who is harmed by the stale/retroactive value}
**PoC steer**: multi-transaction Script — initiate (snapshot field), authority `submit` changes config, complete and assert the stale value governs (or the live value retroactively applies); for caller-supplied time, `submit` a past/future Time and show the gate passes; `passTime`/`setTime` for deadline windows.

Step Execution Checklist (MANDATORY)

StepRequiredCompleted?Notes
1. Enumerate Multi-Step OperationsYES
2. Identify Cached ParametersYES
3. Model Staleness Impact (both directions)YES
3b. Update-Source AuditYES
4. Retroactive Application AnalysisYES
5. Assess SeverityYES
Cross-Reference Markers

After Step 2: if cached fields are authority-changeable → MUST complete Step 3 with BOTH increase and decrease scenarios. After Step 3: if any time comparison uses a caller-supplied Time instead of getTime → FLAG (the caller chooses "now"). After Step 3b: if the source config/feed is referenced by a caller-supplied ContractId → cross-reference CID_CAPABILITY_SAFETY. After Step 4: cross-reference SEMI_TRUSTED_ROLES for the authority choices that change these fields, and ENSURE_INVARIANTS §4 for single-choice deadline enforcement.

© PlamenTSV, MIT. 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 agents/skills/daml/temporal-parameter-staleness of PlamenTSV/plamen.

Open the folder on GitHubat commit 795962b

Compare with similar skills

Temporal Parameter Staleness 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.

Temporal Parameter Staleness compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Temporal Parameter Staleness this skillPlamenTSV/plamen303—~3.3kAutomated safety check: PassMIT
Bio Temporal Genomics Periodicity DetectionGPTomics/bioSkills1.2k1 repos~5.3kAutomated safety check: PassMIT
Temporal Golang Prosickn33/agentic-awesome-skills47k2 repos~2.3kAutomated safety check: PassMIT
Temporal Developerlatitude-dev/latitude-llm4.7k—~1.5kAutomated safety check: PassMIT
Temporal Python Testingwshobson/agents40k12 repos~1.2kAutomated safety check: PassMIT
Bio Temporal Genomics Temporal ClusteringGPTomics/bioSkills1.2k1 repos~5.2kAutomated safety check: PassMIT

Similar skills

  • Discovers a periodic signal of UNKNOWN period in time-series omics data and puts a defensible significance on it, especially when sampling is IRREGULAR (dropped timepoints, pooled harvests) so…

    1.2k GitHub starsUsed in 1 repo~5.3k tokens
    Research & ScienceAuto-check passed
  • Temporal Golang Pro

    sickn33/agentic-awesome-skills

    A skill your agent uses when building durable distributed systems with Temporal Go SDK.

    47k GitHub starsUsed in 2 repos~2.3k tokens
    Backend & APIsAuto-check passed
  • Temporal Developer

    latitude-dev/latitude-llm

    This skill should be used when the user asks to "create a Temporal workflow", "write a Temporal activity", "debug stuck workflow", "fix non-determinism error", "Temporal Python", "Temporal…

    4.7k GitHub stars~1.5k tokensUpdated yesterday
    Backend & APIsAuto-check passed
  • Test Temporal workflows with pytest, time-skipping, and mocking strategies.

    40k GitHub starsUsed in 12 repos~1.2k tokens
    Testing & QAAuto-check passed
  • Clusters temporally variable genes by expression-profile SHAPE (not significance) using Mfuzz fuzzy c-means, TCseq, DEGreport degPatterns, and tslearn DTW/soft-DTW.

    1.2k GitHub starsUsed in 1 repo~5.2k tokens
    Research & ScienceAuto-check passed
  • Performs set operations on genomic intervals - intersect (-wa/-wb/-wo/-wao/-loj/-c/-v/-u), subtract (-A), merge (-d, -c/-o), complement, cluster, multiinter, unionbedg, map, and groupby - with…

    1.2k GitHub starsUsed in 1 repo~3.9k tokens
    Research & ScienceAuto-check passed

More from PlamenTSV/plamen

All 87 skills in this repo
  • Audit Prep

    PlamenTSV/plamen

    Prepare Solidity projects for a security audit — test coverage, test quality, NatSpec docs, code hygiene, dependency health, best-practice enforcement, deployment readiness, and project…

    303 GitHub stars~3.7k tokensUpdated 12 days ago
    Auto-check passed
  • Verification Protocol

    PlamenTSV/plamen

    Trigger Pattern Always (used by all verifier agents) - Inject Into security-verifier agents (Phase 5)

    303 GitHub stars~3.5k tokensUpdated 12 days ago
    Auto-check passed
  • Ability Analysis

    PlamenTSV/plamen

    Trigger Pattern Always (Aptos Move) - foundational security check - Inject Into Breadth agents, depth agents

    303 GitHub stars~3.3k tokensUpdated 12 days ago
    Auto-check passed
  • Ability Analysis

    PlamenTSV/plamen

    Trigger Pattern Always (Sui Move) -- foundational security check - Inject Into Breadth agents, depth agents

    303 GitHub stars~3.2k tokensUpdated 12 days ago
    Auto-check passed
  • Account Lifecycle

    PlamenTSV/plamen

    Trigger Pattern ACCOUNTCLOSING flag detected (close/CloseAccount usage) - Inject Into Breadth agents, depth agents

    303 GitHub stars~1.2k tokensUpdated 12 days ago
    Auto-check passed
  • Account Validation

    PlamenTSV/plamen

    Trigger Pattern Always required for Solana audits - Inject Into Breadth agents, depth agents

    303 GitHub stars~1.7k tokensUpdated 12 days ago
    Auto-check passed

Questions about Temporal Parameter Staleness

What does Temporal Parameter Staleness do?

Trigger Pattern interval|period|duration|delay|cooldown|lockperiod|timelock|deadline|maturity|expiry|getTime - Inject Into Breadth agents, depth-state-trace. Temporal Parameter Staleness is an agent skill from PlamenTSV/plamen.

When should I use Temporal Parameter Staleness?

Temporal Parameter Staleness fits situations like: pattern interval|period|duration|delay|cooldown|lockperiod|timelock|deadline|maturity|expiry|getTime - Inject Into Breadth agents; depth-state-trace.

How do I install Temporal Parameter Staleness in Claude Code?

Run `npx skills add PlamenTSV/plamen --skill temporal-parameter-staleness -a claude-code`. Or copy the skill folder (agents/skills/daml/temporal-parameter-staleness in PlamenTSV/plamen) into .claude/skills/temporal-parameter-staleness in your project. Claude Code loads it when a task matches its description.

How do I install Temporal Parameter Staleness in Codex?

Run `npx skills add PlamenTSV/plamen --skill temporal-parameter-staleness -a codex`. Or copy the skill folder (agents/skills/daml/temporal-parameter-staleness in PlamenTSV/plamen) into .agents/skills/temporal-parameter-staleness in your project. Codex loads it when a task matches its description.

Can I use Temporal Parameter Staleness 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 PlamenTSV/plamen --skill temporal-parameter-staleness -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/temporal-parameter-staleness, .gemini/skills/temporal-parameter-staleness, .github/skills/temporal-parameter-staleness and .opencode/skills/temporal-parameter-staleness in your project.

What does Temporal Parameter Staleness need to run?

Going by SKILL.md and its folder, Temporal Parameter Staleness needs credentials named NO_SUCH_KEY. Our summary lists: A credential in NO_SUCH_KEY.

Does Temporal Parameter Staleness 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 Temporal Parameter Staleness 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 Temporal Parameter Staleness use?

Temporal Parameter Staleness is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Temporal Parameter Staleness use?

About 3.3k tokens (SKILL.md is roughly 13k 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 Temporal Parameter Staleness?

Skills that share tags, products or a category with Temporal Parameter Staleness: Bio Temporal Genomics Periodicity Detection (GPTomics/bioSkills, 1.2k stars), Temporal Golang Pro (sickn33/agentic-awesome-skills, 47k stars), Temporal Developer (latitude-dev/latitude-llm, 4.7k stars) and Temporal Python Testing (wshobson/agents, 40k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Temporal Parameter Staleness?

PlamenTSV (a GitHub user) maintains it in PlamenTSV/plamen, which has 303 GitHub stars. The repository holds 87 skills in this directory. The repository was last updated on September 26, 2026.

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