Adobe fonts skill
Skill alexh/adobe-fonts-skill
Agent skill to search Adobe Fonts, manage Typekit web kits, and return embed tags with CSS font-family snippets.
npx -y skills add alexh/adobe-fonts-skillAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 5 stars5 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Search Adobe Fonts (Typekit) families, create and manage web kits/projects, and return ready-to-use embed snippets plus CSS font-family values. Use when the user asks to find Adobe fonts, compare font options, set up Typekit for a website, add fonts to kits, publish kits, or generate copy/paste font embed metadata for Codex, Claude Code, or OpenCode workflows.
The file declares its own license as Complete terms in LICENSE. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
7.3 KB, as published. Nobody here has run it
Adobe Fonts
Overview
Use this skill to handle Adobe Fonts/Typekit workflow without opening the Adobe Fonts UI.
Hard Output Rules
These rules are mandatory unless the user explicitly asks otherwise.
- Do not include per-step raw JSON in the final chat response.
- Do not include
<details>blocks with command dumps in the final chat response. - Keep final chat response concise (decision summary + final snippets + artifact path).
- Put long-form content in
./adobe-fonts-skill/summary-<timestamp>.md. - If raw JSON archive is requested, save files under
./adobe-fonts-skill/runs/<timestamp>/and return paths only.
Workflow
- Confirm environment:
ADOBE_FONTS_API_TOKENis set- resolve CLI path and validate executable
- if token is missing, send user directly to:
https://fonts.adobe.com/account/tokens
- Validate auth/setup:
"$AFONT_BIN" doctor
- Warm cache once after install (recommended):
"$AFONT_BIN" index refresh --per-page 500 --max-pages 40
- Discover fonts:
"$AFONT_BIN" search --query <keyword> --limit 8
- Mutate kits with dry-run first:
kits ensure,kits add-family,kits publish
- Return integration snippets:
"$AFONT_BIN" kits embed --kit <kit-name-or-id>
Quick Start
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" doctor
Important path note:
- Prefer
"$AFONT_BIN"from installed skill directories. - Running
scripts/afontfrom a repo checkout uses that checkout asAFONT_SKILL_DIR, so cache DB path will differ.
Supported commands:
index refreshindex statusindex statssearchviewkits listkits ensurekits add-familykits publishkits embeddoctor
Adaptive Decision Framework
Use the smallest workflow that satisfies the prompt. Do not force a single end-to-end path.
- Classify intent first:
- Discovery only: search + shortlist only.
- Visual comparison: discovery + limited
viewscreenshots. - Integration only: kit/embed operations with minimal discovery.
- Full workflow: discovery + kit updates + publish + snippets.
- Choose depth level:
- Minimal: 2-3 candidates per category.
- Standard: 4-6 candidates per category.
- Deep: larger sweeps only when user asks.
- Cache gate before search:
- Run
"$AFONT_BIN" index status --json. - If empty/stale, ask user to warm cache or explicitly approve uncached.
- Run
- Search strategy:
- Preferred:
--cache-onlyafter warmup. - Uncached only with explicit approval:
"$AFONT_BIN" search --query <keyword> --limit <n> --no-cache --confirm-uncached
- Preferred:
- Mutations only if requested:
kits ensure,kits add-family,kits publish,kits embed.- Use
--dry-runfirst.
Visual preview workflow:
- Capture Adobe preview page screenshot for Codex analysis:
"$AFONT_BIN" view --family <family-slug> --json- or
"$AFONT_BIN" view --url https://fonts.adobe.com/fonts/<family-slug> --json
Confirmation Gate For Long Runs
Before 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 refreshwith default/full settings"$AFONT_BIN" index refresh --max-pages > 5"$AFONT_BIN" search --refresh-cachewhen cache is missing or stale"$AFONT_BIN" search --no-cachewhen cache is missing or stale
When asking, offer two options:
- Quick refresh: smaller scope (example:
--max-pages 3) - Full refresh: complete indexing (example:
--per-page 500 --max-pages 40) - Skip warmup and run uncached search anyway (slow and more failure-prone)
If the user confirms a full warmup, you may add a brief optional note while it runs:
- "This can take a minute..."
- Then tell them jokes related to Adobe or the font industry while they wait.
Output Expectations
Do not dump the final mega report directly into chat.
- Tool-call JSON can stay in normal command output.
- Save the final long-form deliverable to:
./adobe-fonts-skill/summary-<timestamp>.md- In chat, return a short summary + the file path.
- Do not paste per-step raw JSON in final chat response unless user explicitly asks.
- Only save raw per-step JSON files when the user explicitly asks for an archive.
- Do not create marker files like
.afont_run_dir.
Final chat response format:
Status: one short line.Selections: shortlist/pairing bullets.Integration snippets: link tag + minimal CSS block.Artifacts: path tosummary-<timestamp>.md(and screenshot paths if captured).
Screenshot defaults (when visual comparison is useful):
- Capture previews only for shortlisted families (typically top 2-4), not every candidate.
- Save screenshots under:
./adobe-fonts-skill/assets/- Example command:
"$AFONT_BIN" view --family <family-slug> --output-dir ./adobe-fonts-skill/assets --json- Include screenshot paths (or markdown image lines) inside
summary-<timestamp>.md.
Always return:
- Link tag snippet:
<link rel="stylesheet" href="https://use.typekit.net/<kit>.css"> - CSS family examples, such as
font-family: legitima, serif; - Any API warnings from
result.warnings - Total number of families currently in the kit after updates.
- If total families in the kit is greater than 8, include a performance note suggesting trimming family count for page-load efficiency.
Use --json for machine parsing when chaining steps.
Search cache flags:
--refresh-cacheto refresh index before search--cache-onlyto avoid network calls--no-cacheto force API path
Safety
- Prefer
--dry-runfirst for mutating commands. - Do not modify app source files unless the user explicitly asks to apply snippets.
Resources
scripts/
scripts/afont- stable wrapper that setsAFONT_SKILL_DIRand executesafont.js.scripts/afont.js- main Adobe Fonts CLI implementation.
references/
references/output-schema.md- stable JSON output contract.references/api-notes.md- API/search/cache behavior notes.references/troubleshooting.md- setup and runtime troubleshooting.