PuPu: Skill for Claude Code

.claude/skills/topic-optimizer/SKILL.md

topic-optimizer is a skill for Claude Code from haoxiang-xu/PuPu. It costs 94 tokens per session (1,016 once invoked), scanned A, original, Apache-2.0.

A measurement-based workflow for choosing and improving a GitHub repository's topics, which are searchable tags shown on its repository page. It records topic changes alongside repository traffic and download data.

In plain words
What is it for?
Use it to review topic performance, record traffic snapshots, change a small set of GitHub topics, measure search movement, and keep rollback information.
Why use it?
It prevents topic changes from being based only on guesswork and preserves before-and-after evidence. This matters because GitHub keeps traffic data for only a limited period.

Skill for Claude Code

Written for Claude Code: installed under .claude/.

This is haoxiang-xu/PuPu's own configuration. It tells Claude Code how to work on PuPu 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 PuPu configures →

Reuse

Borrowing it

Nothing to install: this file belongs to haoxiang-xu/PuPu. 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/haoxiang-xu/PuPu/main/.claude/skills/topic-optimizer/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/haoxiang-xu/PuPu

Made for: Claude Code.

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 topic-optimizer

README.md
[![agentmods](https://agentmods.dev/badge/skills/haoxiang-xu/pupu/topic-optimizer/github.svg)](https://agentmods.dev/skills/haoxiang-xu/pupu/topic-optimizer)
Your own site
<a href="https://agentmods.dev/skills/haoxiang-xu/pupu/topic-optimizer"><img src="https://agentmods.dev/badge/skills/haoxiang-xu/pupu/topic-optimizer/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 topic-optimizer

Your own site · 80×15
<a href="https://agentmods.dev/skills/haoxiang-xu/pupu/topic-optimizer"><img src="https://agentmods.dev/badge/skills/haoxiang-xu/pupu/topic-optimizer.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 94 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,016 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. Third-party audits
  • NVIDIA SkillSpector warn 7 Sept 2026
SkillSpector: 1 finding, up to high

These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →

  • high Anti-Refusal · line 26
    Skill instructs the agent to omit warnings, disclaimers, or ethical commentary. Stripping safety caveats hides risk from the user and is a common jailbreak preamble.
    Fix: Remove instructions that suppress warnings, disclaimers, or ethical commentary. Let the agent surface safety-relevant caveats to the user.
How audits are shown
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.00094 $0.01016
Opus 5 $0.00047 $0.00508
Sonnet 5 $0.00019 $0.00203
Haiku 4.5 $0.00009 $0.00102

Measured 9d ago against content hash 4ce66b5dad6b, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-08, from the pricing page.

Security

Grade A, and why

topic-optimizer 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 9d 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.

.claude/skills/topic-optimizer/SKILL.md · 43 lines

How it starts

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

PuPu Topic Optimizer

Iteratively optimize haoxiang-xu/PuPu's GitHub topics with measurement, not taste. Companion to growth-analyst (traffic/download collection lives there — reuse its snapshots when today's already exist in .claude/archive/growth/).

Core loop: measure → record → wait a full window → change few → repeat. A tag change without a recorded before/after snapshot is wasted — GitHub traffic retains only 14 days, so unrecorded effects are unrecoverable.

Data files (append-only, in .claude/archive/growth/)

File Content
topics-history.ndjson One JSON line per run: {date, topics:[...], volumes:{tag:repo_count}, traffic:{views14, uniques14, search_referrers:{src:{count,uniques}}}, stars, latest_release_dl}
YYYY-MM-DD-topics-change.md One per applied change: old set (= rollback set), new set, rationale, rollback command

Every run MUST append a history line, even when no change is made — no-change runs are the control data.

Procedure

  1. Collect — current topics: gh api repos/haoxiang-xu/PuPu --jq '.topics'. Traffic: reuse today's growth snapshot files if present, else fetch views/referrers (needs push access).
  2. Volumes — per-tag ecosystem size: gh api "search/repositories?q=topic:$t&per_page=1" --jq .total_count. Runs on every run, including no-change/PENDING runs — the history line requires it. ⚠️ Search API allows ~30 req/min: sleep 2.5 between calls, batch ≤25, on 403 wait 70s then resume. Core API (repos/...) is not affected.
  3. Record — append the history line BEFORE analyzing.
  4. Attribute — compare against prior history lines relative to the last change date. Effect metrics, in order of trust: search-referrer uniques (Google/Yandex/Bing) → 14d visitor uniques → stars delta → downloads/day. Minimum observation window: 14 days per change. Inside the window, verdict is PENDING — never judge early, never overlap two changes.
  5. Propose — after a full window, propose the next iteration: replace the worst performers with fresh candidates. ≤5 tag swaps per iteration after the initial cleanup (2026-08-21, 15 swaps — that one-time reset is the baseline, don't repeat its size). Confirm with the project owner before applying; always write the change file (with rollback set) before gh api -X PUT .../topics.
    • If the project owner explicitly insists on changing tags inside an open window: apply it (project owner overrides), but first mark the interrupted change's verdict CONFOUNDED in its change file, and start a fresh 14-day window from today. Never silently merge two windows.

Read the full file on GitHub · 43 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. 9d ago First seen · 43 lines · 94 tokens per session scan A 4ce66b5dad6b

Subscribe to this mod's changes

topic-optimizer is a skill published in the GitHub repository haoxiang-xu/PuPu (36 stars, last pushed yesterday), licensed Apache-2.0. It adds 94 tokens to every session and 1,016 once invoked, about $0.0005 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-30.

Related

Other skills, from other repositories

skill-creator

Create new Comis skills, modify and improve existing skills, and validate them against the platform's manifest schema. Use this skill whenever the user wants to create a skill from scratch, turn a workflow into a reusable skill, update or fix an existing skill, understand the skill format, or asks about how skills…

comisai/comis · 82 tokens

autonomy

Use when a task is more than a single step — a read/research fan-out, spawning sub-agents, running a DAG, scheduling your own work, or messaging your channel. Teaches when to route work through orchestrate(script), how to fan out with capability attenuation, how to read a denial, and the bounded contract you operate…

comisai/comis · 76 tokens

deep-research

MANDATORY: Conduct systematic, multi-angle web research before answering any request to understand or explain a topic properly, deeply, thoroughly, comprehensively, or beyond a short paragraph, even when general knowledge could produce an answer. Also use for comparisons, explicit research, current online information…

comisai/comis · 117 tokens

log-troubleshooting

Investigate and troubleshoot daemon logs at /.comis/logs/. Covers NDJSON log format, Pino level codes, field dictionary, and staged analysis strategies for efficient troubleshooting of large log files. Use this skill whenever the user asks about logs, errors, warnings, daemon issues, slow operations, debugging daemon…

comisai/comis · 89 tokens

find-skills

MANDATORY: For requests asking whether a skill or specialized capability exists, load this skill and run its catalog workflow before answering. This includes elliptical follow-ups such as 'find something that does' when the preceding turn names the task. Do not answer from general capabilities, search workspace…

comisai/comis · 67 tokens

image-generation

Generate images using structured prompts and optional reference images. Supports character design, scenes, product visualization, and any visual content creation. Use this skill when the user requests to generate, create, imagine, draw, or visualize images, characters, portraits, scenes, products, or any visual…

comisai/comis · 72 tokens