apple-browsers: Skill for Claude Code

.claude/skills/ddg-drk-add-icon/SKILL.md

ddg-drk-add-icon is a skill for Claude Code from duckduckgo/apple-browsers. It costs 173 tokens per session (2,782 once invoked), scanned A, original, Apache-2.0.

A list of coding practices to avoid, including global state, shared singleton objects, and unhandled errors in asynchronous code. It pairs common mistakes with safer dependency-injection and error-handling patterns.

In plain words
What is it for?
Use it during code reviews or development when working with dependencies, shared state, asynchronous operations, and UI updates.
Why use it?
It highlights designs that are difficult to test, debug, or maintain. Developers can use it as a checklist when reviewing implementation choices.

Skill for Claude Code

Written for Claude Code: installed under .claude/.

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

Reuse

Borrowing it

Nothing to install: this file belongs to duckduckgo/apple-browsers. 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/duckduckgo/apple-browsers/main/.claude/skills/ddg-drk-add-icon/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/duckduckgo/apple-browsers

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 ddg-drk-add-icon

README.md
[![agentmods](https://agentmods.dev/badge/skills/duckduckgo/apple-browsers/ddg-drk-add-icon/github.svg)](https://agentmods.dev/skills/duckduckgo/apple-browsers/ddg-drk-add-icon)
Your own site
<a href="https://agentmods.dev/skills/duckduckgo/apple-browsers/ddg-drk-add-icon"><img src="https://agentmods.dev/badge/skills/duckduckgo/apple-browsers/ddg-drk-add-icon/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 ddg-drk-add-icon

Your own site · 80×15
<a href="https://agentmods.dev/skills/duckduckgo/apple-browsers/ddg-drk-add-icon"><img src="https://agentmods.dev/badge/skills/duckduckgo/apple-browsers/ddg-drk-add-icon.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 173 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,782 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. 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.00173 $0.02782
Opus 5.5 $0.00069 $0.01113
Sonnet 5.5 $0.00035 $0.00556
Haiku 4.5 $0.00017 $0.00278

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

Security

Grade A, and why

ddg-drk-add-icon scanned grade A with 1 finding 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 23d 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.

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

1. **Get the file locally.** If input is a URL, `curl -fL -o /tmp/<basename> <url>`. If local, just note the path. When given multiple URLs, you may run the `curl`s in parallel.
.claude/skills/ddg-drk-add-icon/SKILL.md · 131 lines

How it starts

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

ddg-drk-add-icon

Overview

Imports one or more SVGs into the DesignResourcesKitIcons Swift package at SharedPackages/Infrastructure/DesignResourcesKitIcons. For each icon, three things must always change together:

  1. An *.imageset/ (or *.symbolset/ for Recolorable) directory under DesignSystemImages.xcassets/{Category}/{Size}/ containing the SVG.
  2. A Contents.json in that directory — format differs by category.
  3. A public static var accessor in the matching DesignSystemImages+Glyphs.swift / +Color.swift / +Recolorable.swift, inserted alphabetically inside the right SizeN enum.

Forgetting any of the three leaves the icon unusable.

Inputs

  • Required: one or more local paths and/or http(s) URLs to SVGs. A single icon is just a list of length one — treat the singular and batch cases the same way.
  • Optional, only if a filename doesn't follow convention: category, size, accessor name (per-icon).

Inputs may mix local paths and URLs in the same invocation, and may span multiple categories/sizes — they don't have to be homogeneous.

Filename convention (drives everything else)

Category Filename Example
Glyph Title-Case-{size}.svg Pin-Remove-12.svg
Color Title-Case-Color-{size}.svg Chat-Color-12.svg
Recolorable lower-case-recolorable-{size}.svg check-recolorable-24.svg

Allowed sizes: Glyph 12/16/20/24, Color 12/16/24/32/42/72/96/128, Recolorable 24.

If the file you were given doesn't match, rename it to match before continuing. Don't invent new size buckets — confirm with the user instead.

Steps

Run steps 1–6 for each input icon in the list (they're independent — fetch all first, then process). Step 7 is a single verification pass at the end.

  1. Get the file locally. If input is a URL, curl -fL -o /tmp/<basename> <url>. If local, just note the path. When given multiple URLs, you may run the curls in parallel.
  2. Parse the filename to derive:
    • Category (Glyph / Color / Recolorable — by presence of -Color- or -Recolorable-).
    • Size (trailing number before .svg).
    • Base name (everything before the category/size suffix).
    • Accessor name = base name lowerCamelCased. For Color, drop the Color suffix from the variable name but keep it in the resource name (e.g. Chat-Color-12.svg → accessor chat, resource .chatColor12). For Recolorable, same shape — drop Recolorable from the variable name but keep it in the resource (e.g. check-recolorable-24.svg → accessor check, resource .checkRecolorable24). For Glyph, no suffix to drop — the whole base name becomes the camelCased variable and the resource is <variable><size> (e.g. Pin-Remove-12.svg → accessor pinRemove, resource .pinRemove12).
  3. Create the imageset/symbolset directory:
    • Glyph: SharedPackages/Infrastructure/DesignResourcesKitIcons/Sources/DesignResourcesKitIcons/DesignSystemImages.xcassets/Glyphs/{size}px/{Filename-without-.svg}.imageset/
    • Color: same root, Color/{size}px/...imageset/ — exception: Color/32x/ (no p, matches existing repo state).
    • Recolorable: Recolorable/{size}px/{Title-Cased-filename-without-.svg}.symbolset/ — the directory is Title-Case (e.g. Check-Recolorable-24.symbolset/) to match how Glyph and Color imageset directories are cased. (The existing check-recolorable-24.svg SVG predates this convention; new icons should follow it.)
  4. Copy the SVG into that directory. If needed, rename the SVG to match the imageset/symbolset directory name (e.g. drop Check-Recolorable-24.svg inside Check-Recolorable-24.symbolset/). he filename field in Contents.json (next step) must reference the SVG file name exactly.
  5. Write Contents.json in that same directory. Use the variant for the category:

Read the full file on GitHub · 131 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. 23d ago Changed · -2 lines 5e8db56edcf4
  2. 2mo ago First seen · 133 lines · 173 tokens per session scan A 05eca2570849

Subscribe to this mod's changes

ddg-drk-add-icon is a skill published in the GitHub repository duckduckgo/apple-browsers (270 stars, last pushed today), licensed Apache-2.0. It adds 173 tokens to every session and 2,782 once invoked, about $0.0007 per session on Opus 5.5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-01.

Related

ddg-drk-add-icon compared with skills from other repositories

ddg-drk-add-icon next to 6 skills from other repositories
ModTypeStarsLast pushLicenceScanTokensWorks with
ddg-drk-add-iconduckduckgo/apple-browsersSkill270todayApache-2.0A173Claude Code
cli-anything-nsloggerHKUDS/CLI-AnythingSkill58k1mo agoApache-2.0A36Claude Code, Codex
review-prsoniqo/speech-swiftSkill1.3kyesterdayApache-2.0A71Claude Code
time-bomb-radarTerryc21/radar-suiteSkill2017d agoApache-2.0A80Claude Code
radar-suite-axis-classificationTerryc21/radar-suiteSkill2017d agoApache-2.0A77Claude Code
swift-focusengine-promhaviv/Swift-FocusEngine-Agent-SkillSkill222mo agoMITA74Claude Code, Codex
crash-risk-auditcruisediary/apple-app-review-skillsSkill206mo agoMITA45Claude Code, Codex