Borrowing it
Nothing to install: this file belongs to motormetrics/motormetrics. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/motormetrics/motormetrics/main/.agents/skills/logo-management/SKILL.mdgit clone --depth 1 https://github.com/motormetrics/motormetricsWrote 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.
[](https://agentmods.dev/skills/motormetrics/motormetrics/logo-management)<a href="https://agentmods.dev/skills/motormetrics/motormetrics/logo-management"><img src="https://agentmods.dev/badge/skills/motormetrics/motormetrics/logo-management/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.
<a href="https://agentmods.dev/skills/motormetrics/motormetrics/logo-management"><img src="https://agentmods.dev/badge/skills/motormetrics/motormetrics/logo-management.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00050 | $0.01004 |
| Opus 5 | $0.00025 | $0.00502 |
| Sonnet 5 | $0.00010 | $0.00201 |
| Haiku 4.5 | $0.00005 | $0.00100 |
Grade A, and why
logo-management 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 11d 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.
const response = await fetch(url, { method: "HEAD" }); How it starts
The opening of the file, as written. The whole thing — 133 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Logo Management Skill
Logo package lives in packages/logos/.
packages/logos/
├── src/
│ ├── services/logo/ # fetch.ts, list.ts, download.ts
│ ├── infra/storage/ # Vercel Blob service
│ └── utils/normalize.ts # Brand name normalization
└── scripts/ # fetch-logos.ts, upload-to-blob.ts
Brand Name Normalization
// packages/logos/src/utils/normalize.ts
export function normalizeBrandName(brand: string): string {
return brand.toLowerCase().trim()
.replace(/\s+/g, "-") // Spaces → hyphens
.replace(/[^a-z0-9-]/g, "") // Remove special chars
.replace(/-+/g, "-"); // Dedupe hyphens
}
// Brand aliases for common variations
const BRAND_ALIASES: Record<string, string> = {
"mercedes": "mercedes-benz",
"vw": "volkswagen",
"landrover": "land-rover",
};
Logo Fetching
// packages/logos/src/services/logo/fetch.ts
export async function getLogoUrl(brand: string): Promise<string | null> {
const normalizedBrand = normalizeBrandName(brand);
const cacheKey = `logo:url:${normalizedBrand}`;
// Check Redis cache
const cached = await redis.get<string>(cacheKey);
if (cached) return cached;
// Try different extensions
for (const ext of ["svg", "png", "jpg"]) {
const url = `${LOGO_CDN_BASE}/${normalizedBrand}.${ext}`;
const response = await fetch(url, { method: "HEAD" });
if (response.ok) {
await redis.set(cacheKey, url, { ex: 7 * 24 * 60 * 60 });
return url;
}
}
return null;
}
Vercel Blob Storage
// packages/logos/src/infra/storage/blob.ts
import { put, list, del } from "@vercel/blob";
export class LogoBlobService {
async upload(brand: string, file: Buffer): Promise<string> {
const fileName = `logos/${normalizeBrandName(brand)}.png`;
const blob = await put(fileName, file, { access: "public", addRandomSuffix: false });
await redis.set(`logo:blob:${normalizeBrandName(brand)}`, blob.url, { ex: 7 * 24 * 60 * 60 });
return blob.url;
}
async list(): Promise<string[]> {
const { blobs } = await list({ prefix: "logos" });
return blobs.map(blob => blob.url);
}
async delete(brand: string): Promise<void> {
await del(`logos/${normalizeBrandName(brand)}.png`);
await redis.del(`logo:blob:${normalizeBrandName(brand)}`);
}
}
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.
- 11d ago First seen · 133 lines · 50 tokens per session scan A ed327b5ff9dd
logo-management is a skill published in the GitHub repository motormetrics/motormetrics (22 stars, last pushed yesterday), licensed MIT. It adds 50 tokens to every session and 1,004 once invoked, about $0.0003 per session on Opus 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-08-30.
Other skills, from other repositories
repro-public
Reproduce a bug in the public-facing rendered site (not the admin). Attach a container, start the demo dev server, drive public routes with agent-browser, and capture the reproduction as screenshots plus a replayable transcript.
easy-api-mcp
Teaches AI agents how to connect to the open-wa hosted MCP surface via Easy API.
praman-sap-cli
SAP UI5 test automation via Playwright CLI. Use when testing SAP Fiori apps, discovering UI5 controls, debugging Praman tests, or automating SAP workflows. Extends playwright-cli with SAP/UI5 awareness.
javascript-sandbox
Best practices for using the clodex built-in JavaScript sandbox for browser debugging, fetched-data processing, attachments, and mini-app orchestration within its bundled capability boundary.
hono-validation
Hono request validation with Zod, TypeBox, Valibot - type-safe input validation for JSON, forms, query params, and headers.
Debug
Use logging calls for in-depth debugging via local log files.