Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add yaniv-golan/affinity-sdk --skill pipeline-historygit clone --depth 1 https://github.com/yaniv-golan/affinity-sdkWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/yaniv-golan/affinity-sdk/pipeline-history)<a href="https://agentmods.dev/skills/yaniv-golan/affinity-sdk/pipeline-history"><img src="https://agentmods.dev/badge/skills/yaniv-golan/affinity-sdk/pipeline-history/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/yaniv-golan/affinity-sdk/pipeline-history"><img src="https://agentmods.dev/badge/skills/yaniv-golan/affinity-sdk/pipeline-history.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00027 | $0.00787 |
| Opus 5 | $0.00014 | $0.00394 |
| Sonnet 5 | $0.00005 | $0.00157 |
| Haiku 4.5 | $0.00003 | $0.00079 |
Grade A, and why
pipeline-history scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 82 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Pipeline History Analysis
When to Use
- Historical pipeline analysis (how deals progressed over time)
- Funnel conversion rates (what % of deals reached each stage)
- Stage duration analysis (how long deals stay in each stage)
- Deal progression timelines (when did a deal move from X to Y)
Workflow
All commands use execute-read-command. Do not pass --json in argv — JSON output is automatic.
Step 1: Identify the Status Field
execute-read-command(command: "field ls", argv: ["--list-id", "YOUR_LIST_NAME"])
Look for a dropdown field tracking deal stages (typically named "Status", "Stage", or "Pipeline Stage"). Note its fieldId (e.g., field-260415).
Step 2: Export Current State
execute-read-command(command: "list export", argv: ["YOUR_LIST_NAME", "--field", "Status", "--max-results", "50"])
JSON output key is data.rows. Each row contains listEntryId, entityId, entityName, and current field values.
Step 3: Estimate API Cost (REQUIRED)
execute-read-command(command: "field history-bulk", argv: ["<field-id>", "--list-id", "YOUR_LIST_NAME", "--dry-run"])
Check estimatedApiCalls before proceeding. Each list entry = 1 API call.
Step 4: Fetch History
execute-read-command(command: "field history-bulk", argv: ["<field-id>", "--list-id", "YOUR_LIST_NAME", "--max-results", "50"])
For all entries (only after confirming cost via dry-run is acceptable):
execute-read-command(command: "field history-bulk", argv: ["<field-id>", "--list-id", "YOUR_LIST_NAME", "--all"])
Step 5: Analyze
Each row has: id, fieldId, entityId, listEntryId, entityName, actionType, value, changedAt, changerName.
Reconstruct transitions: Sort events per entity by changedAt. Each row's value is the value AT that point. Compare consecutive rows to derive old→new transitions.
Common analyses:
- Funnel conversion: Count distinct entities that ever had
value= each stage - Time-in-stage: Duration between consecutive
changedAttimestamps for the same entity - Stage transition matrix: Group by (previous value → current value) pairs
- Stalled deals: Entities with no change event in the last N days
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 12d ago First seen · 82 lines · 27 tokens per session scan A 8ad022dc41e8
pipeline-history is a skill published in the GitHub repository yaniv-golan/affinity-sdk (0 stars, last pushed 1mo ago), licensed MIT. It adds 27 tokens to every session and 787 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
merit-lhv
How to pull an LHV bank statement straight into Merit Aktiva without touching a file export — LHV's own MCP server returns camt.053 XML, which is exactly what Merit's bank-statement import accepts. Covers connecting LHV (OAuth2 + Smart-ID, read-only), the 31-day window, the multi-currency trap, and where the statement…
merit-payments-bank
How to record payments and reconcile the bank statement correctly in Merit Aktiva (maksed / pank) via the elnora-merit CLI. The core skill is choosing the right transaction type for each line — customer receipt, vendor/tax payment, other income, or other expenditure — plus bank-statement import, settlements…
merit-tsd
The Estonian TSD (tulu- ja sotsiaalmaksu deklaratsioon) annexes that are NOT payroll: lisa 5 (gifts, donations, entertainment/vastuvõtukulud) and lisa 6 (expenses unrelated to business — fines, sunniraha, tax-authority interest). Covers what makes a TSD mandatory for a month, the 22/78 gross-up, the exact e-MTA form…
merit-palk-employees
How to onboard employees and maintain contracts, contacts, and base salary agreements in Merit Palk via elnora-merit palk. Covers the sendemployees-vs-sendpayterms distinction, required import codes, and reading the employee / agreement lists. Use when: adding a new employee, creating a first contract, setting or…
merit-purchase-invoices
How to enter vendor bills (ostuarve) correctly in Merit Aktiva via the elnora-merit CLI — vendor resolution, invoice rows + VAT, posting straight to the ledger vs the approval queue (kinnitamata ostuarved / kinnitusring), purchase credit notes, and expense claims. For EU/foreign suppliers see the merit-reverse-charge…
merit-stripe
How Stripe payments must be set up and recorded in Merit Aktiva — the canonical clearing-account method. Stripe is a payment intermediary, not your bank: never book the bank deposit as revenue (it arrives NET of fees). Each Stripe payout is booked as ONE summary GL batch — gross card sales as revenue + output VAT…