首页 › skills-review › 先写宣言再写码:拆algorithmic-art

先写宣言再写码:官方algorithmic-art逐段拆解

概述

本期是 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.

“算法哲学是计算美学运动,然后通过代码表达。”这句话干了三件事:定义产出物(不是图片,是“运动”)、定义媒介(代码)、定义因果顺序(先哲学、后代码)。紧接着第二段给出两步流水线:

  1. Algorithmic Philosophy Creation (.md file)
  2. Express by creating p5.js generative art (.html + .js files)

注意产物清单写得非常具体:.md、.html、.js 三种文件扩展名直接写死。这是新手写 Skill 常漏的一课——不要只说“做什么”,要说“交什么”。模型对“交付物清单”的服从度远高于对抽象目标的服从度。

二、“你收到什么、你造什么、接下来谁接手”:一份交接协议

哲学创作阶段开头有一段结构非常工整的三连问:

这是全文最值得抄的一段设计。它在模型脑子里安装了一个明确的接口契约:输入是用户的模糊意愿("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 有三条,第三条最值得玩味:

直译:要求模型在写给自己的宣言里,反复强调“这是无数小时打磨的大师之作”。同时第一条又要求 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 与 FIXED/VARIABLE:模板纪律的教科书

第二阶段开头是一个带警告符号的强制动作:

⚠️ STEP 0: READ THE TEMPLATE FIRST ⚠️ Read templates/viewer.html using 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 时至少该带走一句话:把态度写进交给下游的文件里,把自由只留给你想让结果与众不同的那个变量。

参考来源

  1. anthropics/skills — Anthropic 官方 Skills 仓库 — algorithmic-art、brand-guidelines 等 example-skills 的源头仓库
  2. example-skills:algorithmic-art SKILL.md — 本文所有引文逐字取自本机 anthropic-agent-skills 插件缓存(example-skills/algorithmic-art),为该 Skill 完整正文
  3. example-skills:brand-guidelines SKILL.md — 同插件缓存,用于第九节的两种流派对比,引文同为一手读取
  4. 本机 anthropic-agent-skills 插件分发记录 — 佐证该 Skill 随官方插件面向所有用户分发(未引用任何未抓取的第三方数据,涉及下载量、Star 数均未给出,因本期未能交叉验证)

[!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 等场景全覆盖。

51学通信知识星球海报-扫码加入