本期是 Skills 生态拆解第2轮,单件深拆。对象是官方示例库里最“不像工具”的一件——algorithmic-art,一个让 Claude 生成 p5.js 生成艺术的 Skill。它出自 Anthropic 官方仓库 anthropics/skills,随 anthropic-agent-skills 插件分发(本文引用的 SKILL.md 全文,即逐字读取自本机该插件缓存中的 example-skills:algorithmic-art)。拆它的原因不是“能画画”,而是它是官方库里提示词工程密度最高的一篇:两阶段流水线、 manifesto 先行、模板常量/变量分离、种子随机、负面清单,几乎每个段落都是一种可复用的 SKILL.md 写法。本文逐段拆到句子级,最后提炼出五条你可以直接搬去写自己 Skill 的模式。
先把它放回官方示例库的坐标系里,和同库三件“表达层”Skill 对比:
| Skill | 定位 | 功能完整度 | 设计质量 | 实战效果 | 上手难度 | 社区活跃度 |
|---|---|---|---|---|---|---|
| algorithmic-art | 生成艺术/交互H5 | ★★★★★ | ★★★★★ | ★★★★ | ★★★★ | ★★★★★ |
| brand-guidelines | PPTX套官方品牌 | ★★★★ | ★★★★ | ★★★ | ★★★★★ | ★★★★ |
| canvas-design | 海报/封面视觉设计 | ★★★★ | ★★★★ | ★★★★ | ★★★★ | ★★★★ |
| theme-factory | 给作品套主题样式 | ★★★ | ★★★★ | ★★★ | ★★★★ | ★★★ |
四件都是官方示例,社区活跃度一栏评的是“随官方插件分发的含权量”,没有精确下载数可引——凡是给不出真实数字的地方,本文一律不给数字。下面进入正主。
SKILL.md 正文第一句是全文的题眼:
Algorithmic philosophies are computational aesthetic movements that are then expressed through code.
“算法哲学是计算美学运动,然后通过代码表达。”这句话干了三件事:定义产出物(不是图片,是“运动”)、定义媒介(代码)、定义因果顺序(先哲学、后代码)。紧接着第二段给出两步流水线:
- Algorithmic Philosophy Creation (.md file)
- Express by creating p5.js generative art (.html + .js files)
注意产物清单写得非常具体:.md、.html、.js 三种文件扩展名直接写死。这是新手写 Skill 常漏的一课——不要只说“做什么”,要说“交什么”。模型对“交付物清单”的服从度远高于对抽象目标的服从度。
哲学创作阶段开头有一段结构非常工整的三连问:
- What is received: Some subtle input or instructions by the user...
- What is created: An algorithmic philosophy/generative aesthetic movement.
- What happens next: The same version receives the philosophy and EXPRESSES IT IN CODE - creating p5.js sketches that are 90% algorithmic generation, 10% essential parameters.
这是全文最值得抄的一段设计。它在模型脑子里安装了一个明确的接口契约:输入是用户的模糊意愿("use as a foundation; it should not constrain creative freedom"),输出是一份哲学文件,然后同一个模型实例拿到这份文件进入第二阶段。90/10 这个配比是全篇的点睛之笔——九成工作量放在算法生成,一成留给可调参数。它实际上把“生成艺术”翻译成了模型能执行的工程配比。
对写 Skill 的启示:当你的任务天然分两步时,把每一步的输入/输出/交接物写成三连问,比写十句流程描述都管用。
Name the movement (1-2 words): "Organic Turbulence" / "Quantum Harmonics" / "Emergent Stillness"
先给美学运动起一个1-2词的名字。这不是文艺腔,是提示词技巧:命名是一个极低成本的计算锚点,一旦“Organic Turbulence(有机湍流)”这个名字被写下,后面所有4-6段宣言、所有参数选择都会向这个名字收敛。名字先立,风格就不会漂。
Skill 还给了五个完整示例——Organic Turbulence、Quantum Harmonics、Recursive Whispers、Field Dynamics、Stochastic Crystallization——每个都是“一句哲学 + 一段算法表达”的示范。注意示例末尾的括注:
These are condensed examples. The actual algorithmic philosophy should be 4-6 substantial paragraphs.
官方明确告诉你示例是压缩版,防止模型把示例当模板照抄导致千篇一律。示例要给,但要主动声明“这是压缩版”,这也是防套路化的标准手法。
哲学创作阶段的 CRITICAL GUIDELINES 有三条,第三条最值得玩味:
- Emphasize craftsmanship REPEATEDLY: The philosophy MUST stress multiple times that the final algorithm should appear as though it took countless hours to develop... repeat phrases like "meticulously crafted algorithm," "the product of deep computational expertise," "painstaking optimization," "master-level implementation."
直译:要求模型在写给自己的宣言里,反复强调“这是无数小时打磨的大师之作”。同时第一条又要求 Avoid redundancy(每个算法概念只说一次,不许车轱辘话)。
两条合起来看非常精妙:概念上禁止重复,但态度上要求重复。作者很清楚 LLM 的一个特性——你对质量说的每一句话都会稀释进后续所有生成里,说一次会被当客套话,说四次会变成生成时的先验。所以这个 Skill 让第一阶段的模型写宣言时,就得把“meticulously crafted”“painstaking optimization”这类工匠咒语埋进去,等第二阶段读宣言写代码时,这些词已经在上下文里等着发挥作用了。
这是全篇最可以直接搬走的一招:给下游的文件里,预埋你希望下游持有的态度词。
第二阶段前插入了一节独立的小节,标题是 DEDUCING THE CONCEPTUAL SEED:
The concept is a subtle, niche reference embedded within the algorithm itself - not always literal, always sophisticated... Think like a jazz musician quoting another song through algorithmic harmony - only those who know will catch it.
要求模型从用户原始请求里“推断一个概念种子”,把它作为看不见的 DNA 织进参数和行为里。用户说“给我画个海”,作品里可能藏着一套以潮汐周期为参数的振荡系统,但画面上没有任何海。
这段的存在说明作者对“AI 生成作品为什么显得平”有明确诊断:不是技术不够,是没有隐藏层。写内容类 Skill 的读者可以把这节直接抽象成“每件产出必须埋一个不解释的引用”,一行的成本,立刻拉开成品的档次。
第二阶段开头是一个带警告符号的强制动作:
⚠️ STEP 0: READ THE TEMPLATE FIRST ⚠️ Read
templates/viewer.htmlusing the Read tool... Use that file as the LITERAL STARTING POINT - not just inspiration
然后是全文工程含量最高的设计——把界面拆成“固定区”和“变量区”:
FIXED (always include exactly as shown): Layout structure... Anthropic branding... Seed section in sidebar... Actions section... VARIABLE (customize for each artwork): The entire p5.js algorithm... The parameters object... The Parameters section in sidebar...
紧接着是一组成对的负面/正面清单:
Avoid: ❌ Creating HTML from scratch ❌ Inventing custom styling... ❌ Using system fonts or dark themes Follow these practices: ✅ Copy the template's exact HTML structure ✅ Keep Anthropic branding...
这里的洞察是:生成艺术最容易失控的地方根本不是算法,是外观——模型每次都会重新发明一套深色主题 UI。所以作者把品牌骨架(侧栏、种子导航、按钮组、Anthropic 配色)焊死成常量,把算法和参数滑块留成变量。“保持什么/替换什么”用两张清单隔开,模型就没有自由发挥的灰色地带。你写任何要求输出格式稳定的 Skill,都应该有这张 FIXED/VARIABLE 对照表。
技术要求一节开头就搬出了 Art Blocks 模式:
Seeded Randomness (Art Blocks Pattern):
javascript let seed = 12345; // or hash from user input randomSeed(seed); noiseSeed(seed);
并在工艺要求里单列一条 Reproducibility:
Same seed ALWAYS produces identical output
种子随机是生成艺术圈的行业惯例(Art Blocks 平台的基本盘),但写进 Skill 的意义超出艺术圈:可复现是可测试的前提。同一个 seed 必须产出同一张图,意味着用户报 bug 时你才能定位,意味着“参数微调”才有意义。任何带随机性的 Skill(数据造数、测试用例、文案变体)都该抄这条。
参数设计部分同样有章法——不枚举“涟漪参数、波纹参数”,而是给一个通用思考框架:
focus on the properties the system needs to be tunable rather than thinking in terms of "pattern types"
数量、尺度、概率、比例、角度、阈值——六个调参维度,比任何参数模板都通用。
全文反复出现同一个句式:
The algorithm flows from the philosophy, not from a menu of options. avoid thinking "which pattern should I use?" and instead think "how to express this philosophy through code?"
连资源文件都不放过,generator_template.js 的注释里写着:
NOT a pattern menu - use these principles to build unique algorithms
这是整个 Skill 的哲学底线:禁止模型在“模式菜单”里点菜。一旦给出“如果用户要海洋就用方案C”,所有产出都会收敛到方案C。作者的解法是只给方向性原则——哲学是“有机涌现”就考虑累积与反馈,是“数学之美”就考虑比例与调和函数,是“受控混沌”就考虑边界内的随机——把选择权留给当次的模型。菜单产生平均分,罗盘产生风格。
结尾的 RESOURCES 一节只挂了两个文件:templates/viewer.html(REQUIRED STARTING POINT)和 templates/generator_template.js(参考实现)。这是 Skills 的渐进式披露标准玩法:SKILL.md 正文常驻上下文,附件按需 Read。
值得注意的对比是:这个 Skill 把流程全写进了正文(正文相当长,触发即全量加载),只把代码骨架放到附件。同库的 brand-guidelines 则是另一个极端——正文极薄,核心内容是几张色板数据和一行 Keywords: branding, corporate identity, visual identity... 的触发词列表,再靠 python-pptx 的 RGBColor 绑定具体工具。一个是“剧本全在正文、道具在后台”,一个是“正文只是索引、数据即正文”。两种流派没有对错,取决于你的流程是“每次都要全程在场”还是“查表即用”。
适合交给它:要“每次都不一样但成体系”的视觉产出;需要可交互、可调参、可分享的单文件 HTML 作品;给活动/文章配一批风格统一的生成图。
不适合:需要确定性输出的场景(同一指令必须同一结果);需要精确传达既定信息的插图(信息图、流程图,canvas-design 或专用图表工具更合适);对上下文预算极度敏感的长会话——这个 Skill 正文很长,一旦触发就是一笔固定的上下文开销。
# 方式一:从官方仓库克隆(仓库内目录层级以克隆结果为准)
git clone --depth 1 https://github.com/anthropics/skills
find skills -maxdepth 3 -name "SKILL.md" | grep algorithmic
cp -r <找到的algorithmic-art目录> ~/.claude/skills/
# 方式二:本机同款,经 anthropic-agent-skills 插件分发,随插件市场安装后即带 example-skills:algorithmic-art
flowchart TD
U["用户一句模糊需求"] --> P1["阶段一:造哲学"]
P1 --> N["命名美学运动"]
N --> M["写四至六段宣言md"]
M --> C["埋工匠咒语与概念种子"]
C --> P2["阶段二:写代码"]
P2 --> T0["STEP0 先读viewer模板"]
T0 --> FIX["保留固定区<br/>侧栏与品牌"]
FIX --> VAR["替换变量区<br/>算法与参数"]
VAR --> A["种子随机算法"]
A --> OUT["单文件HTML成品"]
固定区与变量区的边界,是这张图里唯一不能越线的地方:
flowchart TD
T["templates目录"] --> V["viewer.html<br/>固定骨架"]
T --> G["generator_template.js<br/>原则参考"]
V --> K1["品牌配色字体"]
V --> K2["种子导航与按钮"]
G --> K3["参数组织方式"]
G --> K4["种子随机写法"]
这个 Skill 表面上教模型画画,实际上是一份提示词工程的作业示范:它最大的发明不是任何一段算法,而是把“创作”拆成了“先立世界观、再交代码”的流水线,并且用重复、模板、种子和罗盘四种手段,把模型最容易飘的四个点逐一钉死。看完这一篇,你去写自己的 Skill 时至少该带走一句话:把态度写进交给下游的文件里,把自由只留给你想让结果与众不同的那个变量。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
