/SKILL.md
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.
npx skillsauth add alexh/adobe-fonts adobe-fonts-skillInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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" doctor
Important 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.development
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.
development
Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.
development
Run, watch, debug, and extend OpenClaw QA testing with qa-lab and qa-channel. Use when Codex needs to execute the repo-backed QA suite, inspect live QA artifacts, debug failing scenarios, add new QA scenarios, or explain the OpenClaw QA workflow. Prefer the live OpenAI lane with regular openai/gpt-5.4 in fast mode; do not use gpt-5.4-pro or gpt-5.4-mini unless the user explicitly overrides that policy.
development
End-to-end Parallels smoke, upgrade, and rerun workflow for OpenClaw across macOS, Windows, and Linux guests. Use when Codex needs to run, rerun, debug, or interpret VM-based install, onboarding, gateway smoke tests, latest-release-to-main upgrade checks, fresh snapshot retests, or optional Discord roundtrip verification under Parallels.