enhance-glyph
关于
This skill audits and improves existing R-based pictogram glyphs (for skills, agents, or teams) by diagnosing and fixing visual issues like poor proportions, readability, or unbalanced glow effects. It guides you through targeted modifications to the glyph function, re-rendering, and before/after comparison. Use it when a glyph renders poorly at small sizes, has an unclear metaphor, or after changes to palettes or the rendering pipeline.
快速安装
Claude Code
推荐npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/enhance-glyph在 Claude Code 中复制并粘贴此命令以安装该技能
技能文档
Enhance Glyph
Improve an existing pictogram glyph in the viz/ visualization layer — audit its current rendering, diagnose visual issues, apply targeted modifications, re-render, and compare before/after. Works for skill, agent, and team glyphs.
When to Use
- A glyph renders poorly at small sizes (details lost, shapes merge)
- A glyph's visual metaphor is unclear or doesn't match the entity it represents
- A glyph has proportion issues (too large, too small, off-center)
- The neon glow effect overpowers or underwhelms the glyph
- A glyph looks good in one palette but poor in others
- Batch improvement after adding new palettes or changing the rendering pipeline
Inputs
- Required: Entity type —
skill,agent, orteam - Required: Entity ID of the glyph to enhance (e.g.,
commit-changes,mystic,tending) - Required: Specific issue to address (readability, proportions, glow, palette compat)
- Optional: Reference glyph that demonstrates the desired quality level
- Optional: Target palette(s) to optimize for (default: all palettes)
Procedure
Step 1: Audit — Assess Current State
Examine the current glyph and identify specific issues.
- Locate the glyph function based on entity type:
- Skills:
viz/R/primitives*.R(19 domain-grouped files), mapped inviz/R/glyphs.R - Agents:
viz/R/agent_primitives.R, mapped inviz/R/agent_glyphs.R - Teams:
viz/R/team_primitives.R, mapped inviz/R/team_glyphs.R
- Skills:
- Read the glyph function to understand its structure:
- How many layers does it use?
- What primitives does it call?
- What are the scale factors and positioning?
- View the rendered output:
- Skills:
viz/public/icons/cyberpunk/<domain>/<skillId>.webp - Agents:
viz/public/icons/cyberpunk/agents/<agentId>.webp - Teams:
viz/public/icons/cyberpunk/teams/<teamId>.webp - If available, check 2-3 other palettes for cross-palette rendering
- View at both icon size (~48px in the graph) and panel size (~160px in the detail panel)
- Skills:
- Score the glyph on the quality dimensions:
Glyph Quality Dimensions:
+----------------+------+-----------------------------------------------+
| Dimension | 1-5 | Assessment Criteria |
+----------------+------+-----------------------------------------------+
| Readability | | Recognizable at 48px? Clear at 160px? |
| Proportions | | Well-centered? Good use of the 100x100 canvas?|
| Metaphor | | Does the shape clearly represent the entity? |
| Glow balance | | Glow enhances without overwhelming? |
| Palette compat | | Looks good across cyberpunk + viridis palettes?|
| Complexity | | Appropriate layer count (not too busy/sparse)? |
+----------------+------+-----------------------------------------------+
- Identify the 1-2 dimensions with the lowest scores — these are the enhancement targets
Got: A clear diagnosis of what's wrong with the glyph and which dimensions to improve. The audit should be specific: "proportions: glyph uses only 40% of canvas" not "looks bad."
If fail: If the glyph function is missing or the entity isn't in its *_glyphs.R mapping, the glyph may not have been created yet — use create-glyph instead.
Step 2: Diagnose — Root Cause Analysis
Determine why the identified issues exist.
- For readability issues:
- Too many fine details that merge at small sizes?
- Insufficient contrast between glyph elements?
- Lines too thin (< 1.5
sizeat s=1.0)? - Elements too close together?
- For proportion issues:
- Scale factor
stoo small or too large? - Center offset from (50, 50)?
- Elements extending beyond the safe area (10-90 range)?
- Scale factor
- For glow issues:
- Glyph stroke width interacts with
ggfx::with_outer_glow():- Thin lines: glow makes them fuzzy
- Thick fills: glow adds excessive bloom
- Multiple overlapping elements: compound glow creates hot spots
- Glyph stroke width interacts with
- For palette compatibility issues:
- Glyph uses hardcoded colors instead of
col/brightparameters? - Low-contrast palettes (cividis, mako) make the glyph invisible?
- The glyph relies on color variation that some palettes don't provide?
- Glyph uses hardcoded colors instead of
- Document the specific root cause for each issue
Got: Root causes that directly point to code changes. "The glyph is too small" -> "scale factor is 0.6 but should be 0.8." "Glow overwhelms" -> "three overlapping filled polygons each generate glow."
If fail: If the root cause isn't obvious from code inspection, render the glyph in isolation with different parameters to isolate the issue. Use render_glyph() with a single glyph to test.
Step 3: Modify — Apply Targeted Fixes
Edit the glyph function to address the diagnosed issues.
- Open the file containing the glyph function
- Apply modifications specific to the diagnosis:
- Scale/proportion: Adjust
smultiplier or element offsets - Readability: Simplify complex elements, increase stroke width, add spacing
- Glow balance: Reduce overlapping filled areas, use outlines where fills create bloom
- Palette compat: Ensure all colors derive from
col/brightparameters, add alpha for depth
- Scale/proportion: Adjust
- Follow the glyph function contract:
glyph_name <- function(cx, cy, s, col, bright) { # cx, cy = center (50, 50) # s = scale (1.0 = ~70% of canvas) # col = domain color, bright = brightened variant # Returns: list() of ggplot2 layers } - Preserve the function signature — do not change parameters
- Keep modifications minimal: fix the diagnosed issues, don't redesign the entire glyph
Got: A modified glyph function that addresses the specific issues identified in Steps 1-2. Changes are targeted and minimal — enhance, don't redesign.
If fail: If the modifications make other dimensions worse (e.g., fixing proportions breaks readability), revert and try a different approach. If the glyph needs a complete redesign, use create-glyph instead.
Step 4: Re-render — Generate Updated Icons
Render the modified glyph and verify the fix. Always use build.sh — it handles platform detection and R binary selection. See render-icon-pipeline for the full flag reference.
-
Re-render based on entity type:
# From project root — use --no-cache to force re-render of modified glyph bash viz/build.sh --only <domain> --no-cache # skills bash viz/build.sh --type agent --only <id> --no-cache # agents bash viz/build.sh --type team --only <id> --no-cache # teams -
Verify the output files exist at the expected path for each palette
-
Check file sizes — icons should be 2-15 KB (WebP):
- Under 2 KB: glyph may be too simple or rendering failed
- Over 15 KB: glyph may be too complex (too many layers)
Got: Fresh icon files generated for all palettes. File sizes are in the expected range.
If fail: If the build script errors, check the R console output for the specific error. Common causes: missing closing parenthesis in the glyph function, referencing undefined primitives, or returning non-list from the function. If rendering succeeds but output is blank, the glyph layers may be outside the canvas bounds.
Step 5: Compare — Before/After Verification
Verify the enhancement improved the target dimensions.
- Compare old and new renderings:
- View the cyberpunk palette version at both icon (48px) and panel (160px) sizes
- View at least 2 other palettes (one light like turbo, one dark like mako)
- Re-score the quality dimensions from Step 1:
- Target dimensions should improve by at least 1 point
- Non-target dimensions should not decrease
- If the glyph is used in the force-graph, test it there:
- Start the HTTP server:
python3 -m http.server 8080fromviz/ - Load the graph and find the entity node
- Verify the icon renders correctly at default zoom and when zoomed in
- Start the HTTP server:
- Document the changes made and the improvement achieved
Got: Measurable improvement on the target dimensions with no regression on others. The glyph looks better at both sizes and across palettes.
If fail: If improvement is marginal or regression occurs, revert the changes and reconsider the diagnosis. Sometimes the original glyph's limitations are inherent to the metaphor, not the implementation — in that case, the metaphor itself may need to change (escalate to create-glyph).
Validation Checklist
- Current glyph audited with specific issue diagnosis
- Root cause identified for each issue
- Modifications targeted to diagnosed issues (not over-edited)
- Glyph function contract preserved (signature unchanged)
- Icons re-rendered for all palettes
- Before/after comparison shows improvement on target dimensions
- No regression on non-target dimensions
- File sizes in expected range (2-15 KB WebP)
- Glyph renders correctly in force-graph context (if applicable)
Pitfalls
- Over-enhancement: Fixing one issue and then tweaking everything else. Stick to the diagnosed issues
- Breaking the contract: Changing the function signature breaks the rendering pipeline. The 5-parameter contract is immutable
- Palette-specific optimization: Making the glyph perfect for cyberpunk but poor for viridis. Always check 3+ palettes
- Ignoring small-size rendering: A beautiful 160px icon that becomes a blob at 48px is a failed enhancement
- Forgetting to re-render: Editing the function without running the build command means the changes aren't visible
- Wrong build command: Skills use
build-icons.R, agents usebuild-agent-icons.R, teams usebuild-team-icons.R
Related Skills
- create-glyph — create a new glyph from scratch (use when enhancement isn't enough)
- audit-icon-pipeline — detect which glyphs need enhancement across the pipeline
- render-icon-pipeline — run the full rendering pipeline after enhancements
- ornament-style-mono — visual design principles that apply to glyph composition
- chrysopoeia — value extraction methodology parallels glyph optimization (amplify gold, remove dross)
GitHub 仓库
相关推荐技能
content-collections
元Content Collections 是一个 TypeScript 优先的构建工具,可将本地 Markdown/MDX 文件转换为类型安全的数据集合。它专为构建博客、文档站和内容密集型 Vite+React 应用而设计,提供基于 Zod 的自动模式验证。该工具涵盖从 Vite 插件配置、MDX 编译到生产环境部署的完整工作流。
polymarket
元这个Claude Skill为开发者提供完整的Polymarket预测市场开发支持,涵盖API调用、交易执行和市场数据分析。关键特性包括实时WebSocket数据流,可监控实时交易、订单和市场动态。开发者可用它构建预测市场应用、实施交易策略并集成实时市场预测功能。
creating-opencode-plugins
元该Skill帮助开发者创建OpenCode插件,用于接入命令、文件、LSP等25+种事件。它提供了插件结构、事件API规范和JavaScript/TypeScript实现模式,适合需要拦截操作、扩展功能或自定义事件处理的场景。开发者可通过它快速构建响应式模块来增强OpenCode AI助手的能力。
sglang
元SGLang是一个专为LLM设计的高性能推理框架,特别适用于需要结构化输出的场景。它通过RadixAttention前缀缓存技术,在处理JSON、正则表达式、工具调用等具有重复前缀的复杂工作流时,能实现极速生成。如果你正在构建智能体或多轮对话系统,并追求远超vLLM的推理性能,SGLang是理想选择。
