ergopti: Skill for Claude Code

.agents/skills/bulk-edit/SKILL.md

bulk-edit is a skill for Claude Code, Codex from adrienm7/ergopti. It costs 23 tokens per session (858 once invoked), scanned A, original, MIT.

A cautious method for rewriting many tracked files with a script instead of editing each one by hand. It uses stable text markers, a preview run, and safe handling of items the script does not recognise.

In plain words
What is it for?
Use it for repetitive or repository-wide edits, checking what will change before writing and leaving unmatched content unchanged.
Why use it?
Large automated edits can corrupt files or make the wrong changes when line numbers move or a pattern fails to match.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one. Also seen: installed under .agents/ (shared by several agents).

This is adrienm7/ergopti's own configuration. It tells Claude Code and Codex how to work on ergopti itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything ergopti configures →

Reuse

Borrowing it

Nothing to install: this file belongs to adrienm7/ergopti. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/adrienm7/ergopti/main/.agents/skills/bulk-edit/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/adrienm7/ergopti

Made for: Claude Code, Codex.

Wrote 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.

agentmods badge for bulk-edit

README.md
[![agentmods](https://agentmods.dev/badge/skills/adrienm7/ergopti/bulk-edit/github.svg)](https://agentmods.dev/skills/adrienm7/ergopti/bulk-edit)
Your own site
<a href="https://agentmods.dev/skills/adrienm7/ergopti/bulk-edit"><img src="https://agentmods.dev/badge/skills/adrienm7/ergopti/bulk-edit/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.

agentmods 80×15 button for bulk-edit

Your own site · 80×15
<a href="https://agentmods.dev/skills/adrienm7/ergopti/bulk-edit"><img src="https://agentmods.dev/badge/skills/adrienm7/ergopti/bulk-edit.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 23 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 858 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00023 $0.00858
Opus 5.5 $0.00009 $0.00343
Sonnet 5.5 $0.00005 $0.00172
Haiku 4.5 $0.00002 $0.00086

Measured 15d ago against content hash 29ee7f3a23f0, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

bulk-edit 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 15d 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.

.agents/skills/bulk-edit/SKILL.md · 92 lines

How it starts

The opening of the file, as written. The whole thing — 92 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Rewriting a tracked file with a script

A scripted rewrite is the right tool past a few dozen edits. It is also how a whole file gets silently corrupted in one command, so the discipline below is not optional. Every rule here comes from a rewrite that went wrong in this repo.

Never match by line number

Line numbers drift the moment anything above them changes — including your own earlier edits in the same session, and including a concurrent branch merge. Anchor on something stable: a heading, a function signature, a unique marker.

The corollary: if you plan the edit from an agent's report, that report's line numbers are already stale by the time you apply it. Re-derive them, or match on text.

Dry-run first, and make the dry-run informative

The script should be able to run without writing, and print enough to be judged: how many units it matched, how many it will change, how many it did not recognise, and the resulting size. An unmatched unit is the interesting number — it usually means the matcher is broken, not that the file is unusual.

Default unmatched units to keep unchanged. A matcher bug should cost you a missed improvement, never a deletion.

Refuse to write on detected corruption

Put the check inside the script, not in your head:

const mojibake = (result.match(/â€/g) || []).length;
if (mojibake > 0) {
	console.error(`REFUSING TO WRITE: ${mojibake} mojibake sequence(s)`);
	process.exit(1);
}

This exact guard exists because a rewrite of docs/PROJECT_MEMORY.md shipped 212 mojibake sequences into the canonical memory. The corruption entered upstream — the replacement blocks had been extracted with Get-Content without -Encoding UTF8, which decodes as ANSI on PowerShell 5.1 — and the write step copied it faithfully. A rewrite is only as clean as the data you feed it: check the input, then check the output.

Enforce the repository's LF contract

Normalize source text before matching and write LF, as declared by .gitattributes:

Read the full file on GitHub · 92 lines

Changes

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.

  1. 15d ago First seen · 92 lines · 23 tokens per session scan A 29ee7f3a23f0

Subscribe to this mod's changes

bulk-edit is a skill published in the GitHub repository adrienm7/ergopti (14 stars, last pushed today), licensed MIT. It adds 23 tokens to every session and 858 once invoked, about $0.0001 per session on Opus 5.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-10-14.

Related

Other skills, from other repositories

Dotfiles

Manage /.zshrc and a chosen set of /.config/ directories (you name them in Config.md) against a private GitHub dotfiles repo. Intents: Push (verify private remote, scan secrets), Pull (clone/diff), Sync, Restore (timestamped backup), Status, Backup (local timestamped copy). Security scan blocks .env, secrets, tokens…

danielmiessler/LifeOS · 125 tokens

conventional-commit

Rules for writing Conventional Commits messages in this project. MUST be invoked every time a commit is created.

JanDeDobbeleer/oh-my-posh · 26 tokens

python-release

Handle Python SDK release, build, bump, packaging metadata, PyPI client pin, uv.lock, nox/build workflow, and publish verification changes. Use for Python release process work or dependency pin bumps; do not use for ordinary Python feature implementation.

ComposioHQ/composio · 53 tokens

release-notes

Generate and publish concise, evidence-based notes in the body of the latest existing GitHub Release. Use only when the user explicitly invokes $release-notes or explicitly asks to update the latest existing GitHub Release body. Do not invoke for general release planning, changelog, tag, or version tasks.

kenryu42/cc-safety-net · 65 tokens

ratchet-files

Ratchet source file size so every file stays small enough for an agent to read whole: find every file over a token budget, split oversized files by concept, and set up the pre-commit ratchet that stops them from growing. Use when a commit is blocked because a file is over the size budget, when asked to find or split…

dzhng/skills · 0 tokens

git-guardrails-claude-code

A Claude Code setup that blocks selected destructive Git commands before they run. Git is a tool for tracking code changes; the blocked commands include pushing, deleting branches, discarding changes, and hard resets.

vinvcn/mattpocock-skills-zh-CN · 68 tokens