Agent skill

Refresh Metadata

by juherr in juherr/awesome-ev-charging

Refresh the awesome-ev-charging project listing's metadata (stars, forks, pushedat, dormant/archived signals) and re-render it into README.md — the periodic maintenance pass, with no new repo to add…

CC0-1.0Auto-check passedDevelopment

Install Refresh Metadata

skills CLI
$ npx skills add juherr/awesome-ev-charging --skill refresh-metadata -a claude-code

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

GitHub CLI
$ gh skill install juherr/awesome-ev-charging refresh-metadata --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/juherr/awesome-ev-charging.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/refresh-metadata .claude/skills/refresh-metadata && 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
refresh-metadata
GitHub stars
175
Token cost
~1.9k tokens
SKILL.md length
885 words
Files
1
Skills in repo
2
Repo updated
First seen
Licence
CC0-1.0

At a glance

Refresh the awesome-ev-charging project listing's metadata (stars, forks, pushedat, dormant/archived signals) and re-render it into README.md — the periodic maintenance pass, with no new repo to add…

  • Works in 6 steps: Ingest → repos.csv → Enrich → repos.enriched.csv → Render → inject into README + standalone → …
  • Wants to refresh the metadata
  • SKILL.md covers Preconditions, The cache decision (do this…, Workflow and Golden rules
  • Calls mise, git and gh

What it does

Refresh Metadata is an agent skill from juherr/awesome-ev-charging. Refresh the awesome-ev-charging project listing's metadata (stars, forks, pushedat, dormant/archived signals) and re-render it into README.md — the periodic maintenance pass, with no new repo to add and no issue to close. Use this whenever the user wants to "refresh the metadata", "update the stars", "re-run the pipeline", "mets à jour la liste / les métadonnées", "rafraîchis le README", or otherwise bring the generated listing up to date with GitHub. Handles the cache-vs-TTL decision (whether to clear…

Its SKILL.md is about 1.9k 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 Development, covering Technical documentation. It works with GitHub. The repository describes itself as: Awesome list of tools for Electric Vehicles. The licence is CC0-1.0.

When your agent uses it

  • Wants to refresh the metadata
  • Update the stars
  • Re-run the pipeline
  • Mets à jour la liste / les métadonnées

Example prompts

  • “refresh the metadata”
  • “update the stars”
  • “re-run the pipeline”
  • “/refresh-metadata”

Requirements

  • Python 3

Workflow steps

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

  1. Ingest → repos.csv
  2. Enrich → repos.enriched.csv
  3. Render → inject into README + standalone
  4. Review the diff — expect broad drift
  5. Commit — one chore(data) commit
  6. Push only if authorized

What it can do on your machine

Read from SKILL.md and the folder at commit 2799ade. 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:

    • mise
    • git
    • gh
    • python

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

  • Network

    No URLs in SKILL.md. Its commands use git and gh, which can reach the network depending on how they are called.

    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

Refresh Metadata loads about 1.9k tokens when it runs. Until then it costs about 178 tokens; SKILL.md has 885 words of instructions outside code blocks.

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

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 juherr/awesome-ev-charging at commit 2799ade, republished under its CC0-1.0 licence (© juherr). 885 words, ~1,926 tokens.

Download SKILL.mdSave it as .claude/skills/refresh-metadata/SKILL.md (or your agent's skills folder).
name
refresh-metadata
description
Refresh the awesome-ev-charging project listing's metadata (stars, forks, pushed_at, dormant/archived signals) and re-render it into README.md — the periodic maintenance pass, with no new repo to add and no issue to close. Use this whenever the user wants to "refresh the metadata", "update the stars", "re-run the pipeline", "mets à jour la liste / les métadonnées", "rafraîchis le README", or otherwise bring the generated listing up to date with GitHub. Handles the cache-vs-TTL decision (whether to clear cache_github/ before re-fetching) that a plain re-run gets wrong. For ADDING or REMOVING a specific repo, use add-project instead. Never hand-edit README.md between the generated markers.

Refresh the awesome-ev-charging listing metadata

The published project listing (## Tools and Resources in README.md, between <!-- BEGIN GENERATED PROJECTS --> / <!-- END GENERATED PROJECTS -->) is generated from repos.enriched.csv by pipeline.py. Over time the upstream GitHub numbers drift — repos gain stars, get archived, or cross the DORMANT_DAYS threshold — so the listing needs a periodic refresh. This skill is that maintenance pass: re-fetch GitHub, re-classify only what changed, and re-render, in the correct order with one clean commit.

This is not add-project. There is no repo to make discoverable, no category to pin, no issue to close. If the goal is to add or remove one specific repo, use add-project instead — it handles the discovery + reconciliation steps this skill deliberately skips.

Read AGENTS.md in the repo root for the authoritative "why" behind the pipeline; this skill is the executable "how" for the refresh case.

Preconditions

  • mise trust has been run (mise pins Python 3.11 and auto-activates .venv).
  • gh auth token works — the mise tasks wire it in for the GitHub API and the GraphQL-only Stars lists (STARRED_LISTS), which are skipped when unauthenticated. Check with gh auth token >/dev/null && echo OK.

The cache decision (do this first — it's the whole point)

Nearly every GitHub read goes through a filesystem cache in cache_github/ with a 24h TTL (CACHE_TTL in pipeline.py). This is the step a naive re-run gets wrong: if the cache is fresh, ingest reads it and the metadata does not change — you'd just re-derive identical docs. Two reads bypass the cache and hit the API on every run (get_starred_repos_for_user, and the search pagination), so a fresh cache makes the run cheap and the rendered signals stable — it does not guarantee a byte-identical ingest.

So decide based on why you're refreshing:

  • You want fresh GitHub numbers (stars, pushed_at, newly-archived repos) — the cache must be older than the data you want, or cleared. Check its age:

    bash
    find cache_github -type f -printf '%T@\n' 2>/dev/null | sort -rn | head -1 \
      | awk -v now="$(date +%s)" '{ printf "newest cache file: %.1fh old (TTL 24h)\n", (now-$1)/3600 }'

    If the newest file is < 24h old and you need genuinely fresh numbers, clear the cache before ingesting:

    bash
    rm -rf cache_github/

    If it's already > 24h old, the TTL has expired — ingest will re-fetch on its own, no need to clear.

  • You only need to re-derive the docs from CSVs you (or a prior run) already produced — e.g. after tweaking render logic — then do not touch the cache and you can skip straight to render (Step 3). Hand-editing classifications.csv is not one of those cases: render reads repos.enriched.csv, not the classification cache, so keep the cache and re-run mise run enrich (incremental, so it's cheap) to carry the edit through, then render.

Don't clear a fresh cache reflexively. Clearing forces ~900 API calls and a longer run; only do it when you actually want newer-than-cache data. When in doubt, tell the user the cache age and let them choose.

Workflow

1. Ingest → repos.csv

Re-collects candidates from all four discovery sources and rebuilds every record (so stars, pushed_at, dormant, etc. reflect current GitHub — or the cache, per the decision above).

bash
mise run ingest
Show full SKILL.md (407 more words)Show less
2. Enrich → repos.enriched.csv
bash
mise run enrich
  • Enrichment is incremental: it reuses cached classifications keyed by pushed_at, so only repos whose upstream changed since the last run pay the LLM cost. A metadata refresh therefore re-classifies few repos, not all.
  • Never pass --refresh — it re-classifies everything and would blow away any hand-pinned classifications.csv cells. There is no repo-scoped form of it: the only reason to accept a full re-classification is to clear an empty classification a transient failure left behind.
  • This iterates all repos fetching READMEs and can take a few minutes. Run it in the background and wait for it to finish rather than polling tightly.
3. Render → inject into README + standalone
bash
python pipeline.py render --readme README.md

This replaces the text between the GENERATED markers in README.md and also rewrites the standalone legacy-projects.md. It aborts if the markers are missing or out of order.

4. Review the diff — expect broad drift

A refresh is expected to touch many rows: any repo whose pushed_at moved gets re-classified, and star/dormant changes reshuffle which block (Selection / collapsed Dormant / collapsed To refine) a repo lands in. So a large diff is normal, not a bug. Sanity-check that nothing regressed to an empty category unexpectedly and that the block moves look plausible:

bash
git --no-pager diff --stat
git --no-pager diff classifications.csv | grep -E '^\+' | grep -iE ',$|,\s*$' # rows that lost their category

If a repo unexpectedly went dormant or lost its classification, investigate before committing rather than baking a regression into the listing.

5. Commit — one chore(data) commit

Unlike add-project, there's no source change to split out — a pure refresh touches only generated, committed artifacts. The regenerable artifacts repos.csv, repos.enriched.csv, cache_github/, list.txt are git-ignored — never commit them. Commit only the durable, published files:

bash
git add classifications.csv README.md legacy-projects.md
git commit -m "chore(data): refresh project listing

Re-ran ingest + enrich + render. Refreshes N repos whose upstream metadata
(stars, pushed_at, dormant/archived) changed since the last run."

Fill in N from the diff. If the refresh also pulled in pipeline.py changes (e.g. you cleared cache and bumped a curation constant), that's really an add-project-shaped change — commit the code separately.

Conventions to honor:

  • Conventional Commits, in English.
  • No AI attribution — no Co-Authored-By: trailer naming an assistant, and no mention of one in the body, whichever assistant you are. Standing preference for this user.
6. Push only if authorized

Pushing to the default branch republishes the awesome list. Ask the user before pushing if they haven't clearly authorized it — outward-facing actions need confirmation.

Golden rules

  • ✅ Decide the cache question first — a fresh cache means "no real refresh".
  • ✅ Never edit README.md between the GENERATED markers by hand.
  • ✅ Never pass --refresh to enrich during a routine refresh — it destroys hand-pinned classifications.
  • ✅ Only commit classifications.csv, README.md, legacy-projects.md (+ pipeline.py if you changed a constant).
  • ✅ No AI/assistant references in commit messages.

© juherr, CC0-1.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 .agents/skills/refresh-metadata of juherr/awesome-ev-charging.

Open the folder on GitHubat commit 2799ade

Compare with similar skills

Refresh Metadata 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.

Refresh Metadata compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Refresh Metadata this skilljuherr/awesome-ev-charging175—~1.9kAutomated safety check: PassCC0-1.0
Update .NET OS Packagesdotnet/core22k—~2.3kAutomated safety check: PassMIT
Beautify GitHub Readmeoil-oil/beautify-github-readme1.8k—~4.1kAutomated safety check: PassMIT
Library Documentation Seekerwithkynam/vibecode-pro-max-kit1.1k2 repos~1kAutomated safety check: NotesMIT
Update .NET Supported OS Matrixdotnet/core22k—~4.1kAutomated safety check: PassMIT
Debate ReviewamElnagdy/review-skills1322 repos~986Automated safety check: PassMIT

Similar skills

  • Official

    Audits and updates os-packages.json files listing the Linux packages each .NET release needs per distro, then regenerates the Markdown from the JSON.

    22k GitHub stars~2.3k tokensUpdated 2 days ago
    DevelopmentAuto-check passed
  • Beautify GitHub Readme

    oil-oil/beautify-github-readme

    Redesign GitHub README homepages or create project-native pure SVG, hybrid SVG-composed PNG/WebP, and opt-in animated GIF assets.

    1.8k GitHub stars~4.1k tokensUpdated 3 days ago
    DevelopmentAuto-check passed
  • Library Documentation Seeker

    withkynam/vibecode-pro-max-kit

    Looks up library and framework documentation through Context7 first, with bundled Node scripts as a fallback that fetch and analyze llms.txt files.

    1.1k GitHub starsUsed in 2 repos~1k tokens
    DevelopmentAuto-check: notes
  • Official

    Audits and updates the supported-os.json files for .NET releases, checking them against upstream lifecycle data and regenerating the markdown with the release-notes tool.

    22k GitHub stars~4.1k tokensUpdated 2 days ago
    DevelopmentAuto-check passed
  • Debate Review

    amElnagdy/review-skills

    Two-model debate review of a GitHub PR, GitLab MR, Azure DevOps PR, or local working tree, posted as inline comments or printed.

    132 GitHub starsUsed in 2 repos~986 tokens
    DevelopmentAuto-check passed
  • Post Draft Review

    agent-substrate/substrate

    Posts pull request review findings as GitHub draft (pending) inline comments for a human to edit and submit, instead of publishing them straight to the PR author.

    4.5k GitHub stars~2.8k tokensUpdated today
    DevelopmentAuto-check passed

More from juherr/awesome-ev-charging

  • Add Project

    juherr/awesome-ev-charging

    Add a project/tool/repository to the awesome-ev-charging generated listing.

    175 GitHub stars~2.1k tokensUpdated 2 days ago
    Auto-check passed

Works with

Categories

Questions about Refresh Metadata

What does Refresh Metadata do?

Refresh the awesome-ev-charging project listing's metadata (stars, forks, pushedat, dormant/archived signals) and re-render it into README.md — the periodic maintenance pass, with no new repo to add…. Refresh Metadata is an agent skill from juherr/awesome-ev-charging.md — the periodic maintenance pass, with no new repo to add and no issue to close.

When should I use Refresh Metadata?

Refresh Metadata fits situations like: wants to refresh the metadata; update the stars; re-run the pipeline; mets à jour la liste / les métadonnées.

How do I install Refresh Metadata in Claude Code?

Run `npx skills add juherr/awesome-ev-charging --skill refresh-metadata -a claude-code`. Or copy the skill folder (.agents/skills/refresh-metadata in juherr/awesome-ev-charging) into .claude/skills/refresh-metadata in your project. Claude Code loads it when a task matches its description.

How do I install Refresh Metadata in Codex?

Run `npx skills add juherr/awesome-ev-charging --skill refresh-metadata -a codex`. Or copy the skill folder (.agents/skills/refresh-metadata in juherr/awesome-ev-charging) into .agents/skills/refresh-metadata in your project. Codex loads it when a task matches its description.

Can I use Refresh Metadata 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 juherr/awesome-ev-charging --skill refresh-metadata -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/refresh-metadata, .gemini/skills/refresh-metadata, .github/skills/refresh-metadata and .opencode/skills/refresh-metadata in your project.

What does Refresh Metadata need to run?

Going by SKILL.md and its folder, Refresh Metadata needs the command-line tools its instructions call (mise, git, gh and python). Our summary lists: Python 3.

Does Refresh Metadata access the network?

SKILL.md contains no URLs. Its commands use git and gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Refresh Metadata 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 Refresh Metadata use?

Refresh Metadata is published under the CC0-1.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Refresh Metadata use?

About 1.9k tokens (SKILL.md is roughly 7.7k 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 Refresh Metadata?

Skills that share tags, products or a category with Refresh Metadata: Update .NET OS Packages (dotnet/core, 22k stars), Beautify GitHub Readme (oil-oil/beautify-github-readme, 1.8k stars), Library Documentation Seeker (withkynam/vibecode-pro-max-kit, 1.1k stars) and Update .NET Supported OS Matrix (dotnet/core, 22k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Refresh Metadata?

juherr (a GitHub user) maintains it in juherr/awesome-ev-charging, which has 175 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 5, 2026.

Source: juherr/awesome-ev-charging on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.