frog

A command for finding Tink harnesses that may be unused or redundant and proposing their removal.

In plain words
What is it for?
Use it to review harness health, inspect the evidence, and approve selected cleanup actions.
Why use it?
It keeps the collection of project instructions and tools smaller without deleting anything automatically.

Command for Claude Code

Install

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.

agentmods
npx agentmods add commands/dotoricode/tink-harness/frog
Clone the repo
git clone --depth 1 https://github.com/dotoricode/tink-harness

Made for: Claude Code.

Per session 11 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,832 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
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 $0.00011 $0.01832
Opus 5 $0.00005 $0.00916
Sonnet 5 $0.00002 $0.00366
Haiku 4.5 $0.00001 $0.00183

Measured yesterday against content hash 2e6e604ea488, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

frog 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 yesterday.

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/commands/tink/frog.md · 112 lines

How it starts

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

/tink:frog

Find harnesses that are probably unused or redundant, then ask before removing them.

Purpose

Keep Tink small. A large harness set defeats the point.

Interaction policy

Always call the AskUserQuestion tool for choice prompts. Do not render text format. Do not ask the user to type a number inline.

Map prompt content to AskUserQuestion fields:

  • question: the full question text
  • header: max 12-character tag (e.g. "진행 방식", "정리 방식")
  • label: 1–5 word option name. Add "(권장)" if recommended.
  • description: explanatory text for the option

Use Korean field values when .tink/config.json language is ko or auto with Korean input; use English otherwise.

Procedure

  1. Read .tink/harnesses/index.json. 1b. Prepare the harness health summary:
    • If .tink/tools/generate-harness-lifecycle-summary.mjs exists, run node .tink/tools/generate-harness-lifecycle-summary.mjs from the repo root before ranking candidates.
    • If the generator is missing, continue with the compact evidence below and say the health summary is unavailable.
    • Treat the generated .tink/maintenance/harness-lifecycle.json as a report, not as approval or reusable memory.
  2. Check compact evidence if available:
    • .tink/runs/ summaries
    • .tink/maintenance/ledger.jsonl
    • .tink/maintenance/weave-queue.json
    • .tink/maintenance/harness-lifecycle.json or another lifecycle summary that follows .tink/schemas/harness-lifecycle.schema.json
    • .tink/rules/index.json
    • references in memory files
    • recent git history touching harness files as weak context only 2b. Check .tink/runs/ accumulation against TTL config:
    • Count files in .tink/runs/
    • Find the oldest file by its date prefix
    • If count exceeds config.runs_ttl_count (default: 20) OR oldest file is more than config.runs_ttl_days (default: 30) days before today: → Include a "runs/ 정리 후보" section in the frog output alongside harness candidates → Propose moving files outside the TTL window to .tink/archive/ (not deletion) → Apply the same approval rules: show an operation-specific payload with op ID, files, and rollback path → If .tink/archive/ does not exist, include creating it in the operation payload
    • Do not recommend archiving the most recent runs_ttl_count files regardless of age.
  3. Treat .tink/current/notes.md as weak evidence unless it is clearly from the same active conversation. If uncertain, label it stale current candidate.
  4. Grade evidence before recommending action:
    • strong: multiple run or ledger records show non-use, repeated rejection, replacement, or accepted alternative
    • medium: one run or ledger record plus clear overlap or memory evidence
    • weak: static index, git-only evidence, stale current notes, or model judgment If a lifecycle summary is present, treat it as a health summary, not as authority. Use its confidence, evidence_grade, evidence_handles, and safe_next_action to explain the recommendation. A low-confidence or weak lifecycle entry must default to keep, observe, or needs evidence. Sort lifecycle-backed candidates first by evidence strength, then by recommendation: frog_candidate, merge_candidate, weave, observe, keep. 4b. When invoked without a specific target, the health summary's judgment IS the default agenda - do not wait for the user to name harnesses:
    • every harness whose lifecycle recommendation is frog_candidate, merge_candidate, or weave appears in the proposal with its evidence grade and reason;
    • harnesses judged keep or observe are compressed into one line (그 외 N개: 유지/관찰);
    • the same applies to overlap findings (겹침 점검): harnesses flagged as overlapping each other are proposed as one merge/retire group, not listed separately. 4c. Check for retired generic built-ins. code-change, bug-fix, research, review, and docs were retired from the default set - generic work now runs on the base run without a harness. If any of them remain in .tink/harnesses/:
    • unmodified leftovers: recommend npx tink-harness@latest update, which removes them automatically; offer direct removal only as the fallback when update is not possible;
    • user-modified leftovers (preserved by update): propose either narrowing them into a clearly-named user harness (specific use_when, kind: "synthesized") or deleting them, with the user's modifications quoted as evidence.
  5. Identify candidates:
    • never used with strong evidence
    • not used recently with strong evidence
    • overlaps strongly with another harness
    • too broad to guide behavior (a generic-purpose harness is a retirement candidate by default policy: the default set is specialized-only)
    • repeatedly ignored during /tink:cast
  6. For each candidate, show evidence grade and recommendation:
    • keep
    • merge into another harness
    • delete
    • rewrite via /tink:weave 6a. If .tink/memory/candidate/ exists, also review stale draft entries: a candidate with no supporting run, ledger, or friction evidence after 30+ days, or one superseded by an approved memory or harness change, should be proposed for a move to .tink/memory/rejected/ with a one-line reason. Promotion of live candidates belongs to /tink:weave; frog only clears the stale ones. Apply the same approval rules as other operations. 6b. If .tink/rules/index.json exists, also inspect rule quality:
    • keep: concrete when, reason, and useful checks or include_paths
    • rewrite: too broad, unclear reason, or missing verification
    • split: one rule mixes unrelated paths, tasks, or risks
    • merge: multiple rules cover the same when, include_paths, and checks
    • needs evidence: weak or no run, ledger, friction, or user-correction evidence Prefer keep, rewrite, split, merge, or needs evidence before any removal proposal. Report rule recommendations separately from harness recommendations.
  7. Only strong evidence may recommend delete. Medium evidence may recommend merge or hone. Weak evidence must default to keep or needs evidence. Lifecycle recommendations follow the same rule: frog_candidate means "prepare a cleanup review," not "delete." Deletion, archive, merge, harness edit, rule update, and memory save still need the normal approval payload.
  8. For each non-keep action, prepare an operation-specific approval payload with exact files, op ID, evidence handles, and rollback.
  9. If the recommendation is weave, write or present a weave handoff packet and, after approval, add it to .tink/maintenance/weave-queue.json:
    • id
    • target harness
    • evidence
    • proposed direction
    • affected files
    • approval status
  10. Ask for approval before changing files.
  11. If approved, remove or merge surgically, update .tink/harnesses/index.json, and append the approval/result to .tink/maintenance/ledger.jsonl.

Read the full file on GitHub · 112 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. yesterday First seen · 112 lines · 11 tokens per session scan A 2e6e604ea488

Subscribe to this mod's changes

frog is a command published in the GitHub repository dotoricode/tink-harness (1 stars, last pushed 1mo ago), licensed MIT. It adds 11 tokens to every session and 1,832 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.