Agent skill to search Adobe Fonts, manage Typekit web kits, and return embed tags with CSS font-family snippets.
SaferSkills independently audited adobe-fonts-skill (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Use this skill to handle Adobe Fonts/Typekit workflow without opening the Adobe Fonts UI.
These rules are mandatory unless the user explicitly asks otherwise.
<details> blocks with command dumps in the final chat response../adobe-fonts-skill/summary-<timestamp>.md../adobe-fonts-skill/runs/<timestamp>/ and return paths only.ADOBE_FONTS_API_TOKEN is sethttps://fonts.adobe.com/account/tokens"$AFONT_BIN" doctor"$AFONT_BIN" index refresh --per-page 500 --max-pages 40"$AFONT_BIN" search --query <keyword> --limit 8kits ensure, kits add-family, kits publish"$AFONT_BIN" kits embed --kit <kit-name-or-id>Resolve a working CLI path first (recommended from any project directory):
if [ -z "${AFONT_BIN:-}" ]; then
for p in \
"$HOME/.agents/skills/adobe-fonts-skill/scripts/afont" \
"$HOME/.codex/skills/adobe-fonts-skill/scripts/afont" \
"$HOME/.claude/skills/adobe-fonts-skill/scripts/afont" \
"$HOME/.opencode/skills/adobe-fonts-skill/scripts/afont"
do
if [ -x "$p" ]; then
export AFONT_BIN="$p"
break
fi
done
fi
if [ -z "${AFONT_BIN:-}" ] || [ ! -x "$AFONT_BIN" ]; then
echo "afont CLI not found. Reinstall skill: npx skills add alexh/adobe-fonts-skill -a codex -g -y" >&2
return 1 2>/dev/null || exit 1
fi
"$AFONT_BIN" doctorImportant path note:
"$AFONT_BIN" from installed skill directories.scripts/afont from a repo checkout uses that checkout as AFONT_SKILL_DIR, so cache DB path will differ.Supported commands:
index refreshindex statusindex statssearchviewkits listkits ensurekits add-familykits publishkits embeddoctorUse the smallest workflow that satisfies the prompt. Do not force a single end-to-end path.
view screenshots."$AFONT_BIN" index status --json.--cache-only after warmup."$AFONT_BIN" search --query <keyword> --limit <n> --no-cache --confirm-uncachedkits ensure, kits add-family, kits publish, kits embed.--dry-run first.Visual preview workflow:
"$AFONT_BIN" view --family <family-slug> --json"$AFONT_BIN" view --url https://fonts.adobe.com/fonts/<family-slug> --jsonBefore running potentially long index operations, ask for user confirmation. Also ask before running uncached API searches (--no-cache) when doctor/index status reports empty or stale cache. Do not describe uncached searches as "efficient" when cache is empty/stale; label them as slower and less reliable.
Treat these as long-running and confirm first:
"$AFONT_BIN" index refresh with default/full settings"$AFONT_BIN" index refresh --max-pages > 5"$AFONT_BIN" search --refresh-cache when cache is missing or stale"$AFONT_BIN" search --no-cache when cache is missing or staleWhen asking, offer two options:
--max-pages 3)--per-page 500 --max-pages 40)If the user confirms a full warmup, you may add a brief optional note while it runs:
Do not dump the final mega report directly into chat.
./adobe-fonts-skill/summary-<timestamp>.md.afont_run_dir.Final chat response format:
Status: one short line.Selections: shortlist/pairing bullets.Integration snippets: link tag + minimal CSS block.Artifacts: path to summary-<timestamp>.md (and screenshot paths if captured).Screenshot defaults (when visual comparison is useful):
./adobe-fonts-skill/assets/"$AFONT_BIN" view --family <family-slug> --output-dir ./adobe-fonts-skill/assets --jsonsummary-<timestamp>.md.Always return:
<link rel="stylesheet" href="https://use.typekit.net/<kit>.css">font-family: legitima, serif;result.warningsUse --json for machine parsing when chaining steps.
Search cache flags:
--refresh-cache to refresh index before search--cache-only to avoid network calls--no-cache to force API path--dry-run first for mutating commands.scripts/afont - stable wrapper that sets AFONT_SKILL_DIR and executes afont.js.scripts/afont.js - main Adobe Fonts CLI implementation.references/output-schema.md - stable JSON output contract.references/api-notes.md - API/search/cache behavior notes.references/troubleshooting.md - setup and runtime troubleshooting.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.