用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/foolhardy45/portfolio --skill favicon命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Arquitecto de Soluciones Principal y Consultor Tecnológico de Andru.ia. Diagnostica y traza la hoja de ruta óptima para proyectos de IA en español.
Security audit, hardening, threat modeling (STRIDE/PASTA), Red/Blue Team, OWASP checks, code review, incident response, and infrastructure security for any project.
Ingeniero de Sistemas de Andru.ia. Diseña, redacta y despliega nuevas habilidades (skills) dentro del repositorio siguiendo el Estándar de Diamante.
正在显示 SKILL.md
基于 SOC 职业分类
| name | favicon |
| argument-hint | ["path to source image"] |
| description | Generate favicons from a source image |
| allowed-tools | Bash(magick *), Bash(which *), Bash(cp *), Bash(mkdir *) |
| context | fork |
| risk | unknown |
| source | community |
| metadata | {"author":"Shpigford","version":"1.0"} |
Generate a complete set of favicons from the source image at $1 and update the project's HTML with the appropriate link tags.
First, verify ImageMagick v7+ is installed by running:
which magick
If not found, stop and instruct the user to install it:
brew install imagemagicksudo apt install imagemagick$1Note whether the source is an SVG file - if so, it will also be copied as favicon.svg.
Detect the project type and determine where static assets should be placed. Check in this order:
| Framework | Detection | Static Assets Directory |
|---|---|---|
| Rails | config/routes.rb exists | public/ |
| Next.js | next.config.* exists | public/ |
| Gatsby | gatsby-config.* exists | static/ |
| SvelteKit | svelte.config.* exists | static/ |
| Astro | astro.config.* exists | public/ |
| Hugo | hugo.toml or config.toml with Hugo markers | static/ |
| Jekyll | _config.yml with Jekyll markers | Root directory (same as index.html) |
| Vite | vite.config.* exists | public/ |
| Create React App | package.json has react-scripts dependency | public/ |
| Vue CLI | vue.config.* exists | public/ |
| Angular | angular.json exists | src/assets/ |
| Eleventy | .eleventy.js or eleventy.config.* exists | Check _site output or root |
| Static HTML | index.html in root | Same directory as index.html |
Important: If existing favicon files are found (e.g., favicon.ico, apple-touch-icon.png), use their location as the target directory regardless of framework detection.
Report the detected project type and the static assets directory that will be used.
When in doubt, ask: If you are not 100% confident about where static assets should be placed (e.g., ambiguous project structure, multiple potential locations, unfamiliar framework), use AskUserQuestionTool to confirm the target directory before proceeding. It's better to ask than to put files in the wrong place.
Find the app name from these sources (in priority order):
site.webmanifest - Check the detected static assets directory for an existing manifest and extract the name fieldpackage.json - Extract the name field if it existsconfig/application.rb - Extract the module name (e.g., module MyApp → "MyApp")Convert the name to title case if needed (e.g., "my-app" → "My App").
Check if the detected static assets directory exists. If not, create it.
Run these ImageMagick commands to generate all favicon files. Replace [STATIC_DIR] with the detected static assets directory from Step 2.
Important: The -background none flag must come BEFORE the input file to properly preserve transparency when rendering SVGs. Placing it after the input will result in a white background.
magick -background none "$1" \
\( -clone 0 -resize 16x16 \) \
\( -clone 0 -resize 32x32 \) \
\( -clone 0 -resize 48x48 \) \
-delete 0 -alpha on \
[STATIC_DIR]/favicon.ico
magick -background none "$1" -resize 96x96 -alpha on [STATIC_DIR]/favicon-96x96.png
magick -background none "$1" -resize 180x180 -alpha on [STATIC_DIR]/apple-touch-icon.png
magick -background none "$1" -resize 192x192 -alpha on [STATIC_DIR]/web-app-manifest-192x192.png
magick -background none "$1" -resize 512x512 -alpha on [STATIC_DIR]/web-app-manifest-512x512.png
If the source file has a .svg extension, copy it:
cp "$1" [STATIC_DIR]/favicon.svg
Create or update [STATIC_DIR]/site.webmanifest with this content (substitute the detected app name):
{
"name": "[APP_NAME]",
"short_name": "[APP_NAME]",
"icons": [
{
"src": "/web-app-manifest-192x192.png",
"sizes": "192x192",
"type": "image/png",
"purpose": "maskable"
},
{
"src": "/web-app-manifest-512x512.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "maskable"
}
],
"theme_color": "#ffffff",
"background_color": "#ffffff",
If site.webmanifest already exists in the static directory, preserve the existing theme_color, background_color, and display values while updating the name, short_name, and icons array.
Based on the detected project type, update the appropriate file. Adjust the href paths based on where the static assets directory is relative to the web root:
public/ or static/ and served from root → use /favicon.icosrc/assets/ → use /assets/favicon.ico./favicon.ico or just favicon.icoEdit app/views/layouts/application.html.erb. Find the <head> section and add/replace favicon-related tags with:
<link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="shortcut icon" href="/favicon.ico" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<meta name="apple-mobile-web-app-title" content="[APP_NAME]" />
<link rel="manifest" href="/site.webmanifest" />
Important:
<link rel="icon" type="image/svg+xml" href="/favicon.svg" /> line<link rel="icon", <link rel="shortcut icon", <link rel="apple-touch-icon", or <link rel="manifest" tags before adding the new ones<head> section, after <meta charset> and <meta name="viewport"> if presentEdit the detected layout file (app/layout.tsx or src/app/layout.tsx). Update or add the metadata export to include icons configuration:
export const metadata: Metadata = {
// ... keep existing metadata fields
icons: {
icon: [
{ url: '/favicon.ico' },
{ url: '/favicon-96x96.png', sizes: '96x96', type: 'image/png' },
{ url: '/favicon.svg', type: 'image/svg+xml' },
],
shortcut: '/favicon.ico',
apple: '/apple-touch-icon.png',
},
manifest: '/site.webmanifest',
appleWebApp: {
title: '[APP_NAME]',
},
};
Important:
{ url: '/favicon.svg', type: 'image/svg+xml' } entry from the icon arrayEdit the detected index.html file. Add the same HTML as Rails within the <head> section.
Skip HTML updates and inform the user they need to manually add the following to their HTML <head>:
<link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="shortcut icon" href="/favicon.ico" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<meta name="apple-mobile-web-app-title" content="[APP_NAME]" />
<link rel="manifest" href="/site.webmanifest" />
Report completion with: