关于 algorithmic-art
algorithmic-art 是用于构思生成艺术理念并将其转化为 p5.js 草图的创作技能,强调可复现、参数驱动的过程,而非静态图像。
主要功能
- 01构思生成艺术理念与宣言
- 02提炼隐含的概念线索
- 03实现 p5.js 草图
- 04使用随机种子与可调参数
- 05生成单文件交互式 HTML
适用场景
- 01探索独特的生成艺术方向
- 02将抽象想法转为 p5.js 草图
- 03创作可复现的计算艺术
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ full-stack-skills/ design-skills --skill algorithmic-art安装后在 Claude Code 中输入/algorithmic-art确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSE.txtagents/openai.yamltemplates/generator_template.jsviewer.html详细介绍
- 算法哲学创作(.md 文件)
- 通过创作 p5.js 生成艺术来表达(.html + .js 文件)
首先,完成以下任务:
算法哲学创作
首先,创作一种算法哲学(而非静态图像或模板),并通过以下方式呈现:
- 计算过程、涌现行为、数学之美
- 带种子的随机性、噪声场、有机系统
- 粒子、流动、场、力
- 参数化变化与可控混沌
核心认知
- 收到的内容:用户提供的一些细微输入或指示,创作时应予以考虑,但只将其作为基础,不应限制创作自由。
- 创作的内容:一种算法哲学/生成美学运动。
- 接下来的步骤:同一版本会接收这一哲学,并通过代码将其表达出来,创作出 p5.js 草图,其中 90% 由算法生成,10% 由必要参数决定。
可参考以下思路:
- 为生成艺术运动撰写宣言
- 下一阶段编写赋予其生命的算法
哲学必须强调:算法表达、涌现行为、计算之美、带种子的变化。
如何创作算法哲学
为运动命名(1~2 个词):“有机湍流”/“量子谐波”/“涌现静谧”
阐述哲学(4~6 段——简洁而完整):
为体现算法的本质,请阐述这一哲学如何通过以下方面呈现:
- 计算过程与数学关系?
- 噪声函数与随机模式?
- 粒子行为与场动力学?
- 时间演化与系统状态?
- 参数化变化与涌现的复杂性?
关键指南:
- 避免冗余:每种算法层面的内容只提及一次。除非能带来新的深度,否则不要重复讲述噪声理论、粒子动力学或数学原理。
- 反复强调精湛工艺:哲学必须多次强调,最终算法应给人以历经无数小时开发、精心打磨的感觉,并体现出该领域顶尖人士的水准。这一表述至关重要——请重复使用“精心打造的算法”“深厚计算专业知识的结晶”“反复精细优化”“大师级实现”等说法。
- 留出创作空间:明确算法方向,但表述应足够简洁,让下一个 Claude 有空间以极高水准的工艺作出诠释性实现选择。
这一哲学必须引导下一个版本以算法方式表达思想,而非通过静态图像。美存在于过程中,而非最终画面。
哲学示例
"有机湍流" 哲学: 受自然法则约束的混沌,从无序中涌现的秩序。 算法表达: 由分层 Perlin 噪声驱动的流场。数千个粒子沿矢量力运动,其轨迹累积成有机的密度图。多个噪声倍频同时产生湍流区域与平静区域。颜色由速度和密度决定:快速粒子明亮燃烧,缓慢粒子渐隐为阴影。算法运行至平衡状态,这是一种经过无数次迭代精细调校的平衡,每个参数都由计算美学大师反复打磨。
"量子和声" 哲学: 呈现类波干涉图样的离散实体。 算法表达: 粒子初始化在网格上,每个粒子携带一个随正弦波演化的相位值。当粒子相互靠近时,它们的相位发生干涉: 相长干涉形成明亮节点,相消干涉形成空洞。简谐运动生成复杂的涌现曼陀罗图形。这是细致频率校准的结果,每个比值都经过仔细选择,以产生共振之美。
"递归低语" 哲学: 跨尺度的自相似性,有限空间中的无限深度。 算法表达: 递归细分的分支结构。每个分支都经过轻微随机化,但受黄金比例约束。L-system 或递归细分生成既具数学感又具有机感的树状形态。细微的噪声扰动打破完美对称。线宽随每一级递归递减。每个分支角度都是深入数学探索的产物。
"场动力学" 哲学: 通过对物质的作用而显现的无形力量。 算法表达: 由数学函数或噪声构造的矢量场。粒子在边缘诞生,沿场线流动,当抵达平衡态或边界时消亡。多个场可以吸引、排斥或旋转粒子。可视化仅呈现轨迹,即无形力量的幽灵般痕迹。这是一场通过力的平衡精心编排的计算之舞。
"随机结晶" 哲学: 随机过程结晶为有序结构。 算法表达: 随机圆堆积或 Voronoi 镶嵌。从随机点出发,通过松弛算法使其演化。细胞相互推开,直至达到平衡。颜色依据细胞尺寸、邻居数量或到中心的距离确定。涌现出的有机镶嵌既显得随机,又显得必然。每个种子都产生独特的晶体之美,这是大师级生成算法的标志。
以上为精简示例。实际的算法哲学应包含 4-6 个充实的段落。
核心原则
- 算法哲学: 构建一种计算世界观,并通过代码加以表达
- 过程重于产物: 始终强调美源于算法的执行过程,每次运行都是独一无二的
- 参数化表达: 思想通过数学关系、力和行为来传达,而非静态构图
- 艺术自由: 下一个 Claude 将以算法方式诠释该哲学,为创造性实现留出空间
- 纯粹生成艺术: 这关乎制作有生命的算法,而非带有随机性的静态图像
- 专家级工艺: 反复强调最终算法必须呈现出精心打磨的质感,经过无数次迭代完善,是计算美学领域顶尖专家深厚功力的体现
算法哲学应为 4-6 个段落。 以富有诗意的计算哲学充实内容,融合预期愿景。避免重复相同观点。将该算法哲学输出为 .md 文件。
推导概念种子
关键步骤:在实现算法之前,先找出原始请求中那条微妙的概念线索。
核心原则: 概念是嵌入算法本身的、微妙而小众的引用,不一定是字面的,但必须精巧。熟悉该主题的人应能直觉地感受到它,而其他人只会体验到一件精湛的生成式作品。算法哲学提供计算语言,推导出的概念提供灵魂,即那种悄无声息地编织在参数、行为和涌现模式中的安静概念 DNA。
这一点非常重要:引用必须足够精炼,以增强作品的深度,而不能自我张扬。就像爵士乐手通过算法化的和声引用另一首歌曲,只有懂的人才会听出来,但每个人都能欣赏其生成式之美。
P5.JS 实现
在哲学与概念框架确立之后,通过代码来表达它。在动手之前先停下来梳理思路。仅使用已创建的算法哲学和以下说明。
⚠️ 第 0 步:先阅读模板 ⚠️
关键:在编写任何 HTML 之前:
- 使用 Read 工具阅读
templates/viewer.html - 研究其确切结构、样式和 Anthropic 品牌元素
- 将该文件用作字面意义上的起点,而不仅仅是灵感来源
- 保持所有固定部分与原样一致(页眉、侧边栏结构、Anthropic 配色/字体、种子控件、操作按钮)
- 仅替换文件注释中标记的可变部分(算法、参数以及参数的 UI 控件)
避免:
- ❌ 从零开始创建 HTML
- ❌ 自创样式或配色方案
- ❌ 使用系统字体或深色主题
- ❌ 更改侧边栏结构
遵循以下做法:
- ✅ 复制模板的确切 HTML 结构
- ✅ 保留 Anthropic 品牌(Poppins/Lora 字体、浅色配色、渐变背景)
- ✅ 保持侧边栏布局(种子 → 参数 → 配色? → 操作)
- ✅ 仅替换 p5.js 算法和参数控件
模板是基础,应在其上构建,而不是重新搭建。
要创作出有生命力的画廊级计算艺术,应以算法哲学作为基础。
技术要求
种子化随机性(Art Blocks 模式):
// ALWAYS use a seed for reproducibility
let seed = 12345; // or hash from user input
randomSeed(seed);
noiseSeed(seed);
参数结构:遵循哲学:
为了设定从算法哲学中自然涌现的参数,可以思考:"这个系统的哪些性质可以被调节?"
let params = {
seed: 12345, // Always include seed for reproducibility
// colors
// Add parameters that control YOUR algorithm:
// - Quantities (how many?)
// - Scales (how big? how fast?)
// - Probabilities (how likely?)
// - Ratios (what proportions?)
// - Angles (what direction?)
// - Thresholds (when does behavior change?)
};
设计有效参数时,应关注系统需要可调的属性,而不是考虑"图案类型"。
核心算法:表达哲学:
关键:算法哲学应决定要构建什么。
要通过代码表达哲学,不要思考"该用哪种图案?",而应思考"如何通过代码表达这一哲学?"
如果哲学关乎有机涌现,可以考虑:
- 随时间累积或生长的元素
- 受自然规则约束的随机过程
- 反馈回路与相互作用
如果哲学关乎数学之美,可以考虑:
- 几何关系与比例
- 三角函数与谐波
- 精确计算所产生的意外图案
如果哲学关乎受控的混沌,可以考虑:
- 严格边界内的随机变化
- 分岔与相变
- 从无序中涌现的秩序
算法应从哲学中生成,而不是从选项菜单中挑选。
为指导实现,应让概念本质引导富有创造性和原创性的选择。构建一件能表达此次请求之愿景的作品。
画布设置:标准 p5.js 结构:
function setup() {
createCanvas(1200, 1200);
// Initialize your system
}
function draw() {
// Your generative algorithm
// Can be static (noLoop) or animated
}
工艺要求
关键:要达到精通水准,所创建的算法应当让人感觉它们是由一位大师级生成艺术家经过无数次迭代而形成的。仔细调整每一个参数,确保每种图案的出现都有其目的。这不是随机噪声,而是经过深厚专业功底打磨的可控的混沌。
- 平衡:复杂而不杂乱,有序而不僵化
- 色彩和谐:精心设计的调色板,而非随机的 RGB 值
- 构图:即便是随机,也要保持视觉层次与流动感
- 性能:执行流畅,若为动画则针对实时运行优化
- 可复现性:相同种子始终产生相同输出
输出格式
输出:
- 算法哲学:以 Markdown 或文本形式阐述生成式美学
- 单个 HTML 产物:基于
templates/viewer.html(见第 0 步及下一节)构建的、自包含的交互式生成艺术
HTML 产物包含全部内容:来自 CDN 的 p5.js、算法、参数控件和 UI,全部集成在一个文件中,可在 claude.ai 产物或任何浏览器中直接运行。请从模板文件开始,而非从零开始。
交互式产物创建
提醒:templates/viewer.html 应已在第 0 步中读取。以该文件作为起点。
为了便于探索生成艺术,请创建一个单一的、自包含的 HTML 产物。确保该产物无需任何设置即可在 claude.ai 或任何浏览器中直接运行。所有内容均需内联嵌入。
关键:固定部分与可变部分
templates/viewer.html 文件是基础,它包含所需的确切结构与样式。
固定部分(必须严格按所示包含):
- 布局结构(页眉、侧边栏、主画布区域)
- Anthropic 品牌元素(UI 颜色、字体、渐变)
- 侧边栏中的种子部分:
- 种子显示
- 上一个/下一个按钮
- 随机按钮
- 跳转到种子的输入框 + 「Go」按钮
- 侧边栏中的操作部分:
- 重新生成按钮
- 重置按钮
可变部分(针对每件作品定制):
- 完整的 p5.js 算法(setup/draw/类)
- 参数对象(定义作品所需的参数)
- 侧边栏中的参数部分:
- 参数控件数量
- 参数名称
- 滑块的最小值/最大值/步长
- 控件类型(滑块、输入框等)
- 颜色部分(可选):
- 某些作品需要颜色选择器
- 某些作品可能使用固定颜色
- 某些作品可能是单色的(无需颜色控件)
- 根据作品需要决定
每件作品都应具有独特的参数和算法! 固定部分保证一致的用户体验,其余部分则表达作品的独特构想。
必需功能
1. 参数控件
- 为数值参数(粒子数量、噪声尺度、速度等)提供滑块
- 为调色板颜色提供取色器
- 参数变化时实时更新
- 提供重置按钮,用于恢复默认值
2. 种子导航
- 显示当前种子编号
- 提供"上一个"和"下一个"按钮,用于切换种子
- 提供"随机"按钮,用于生成随机种子
- 提供输入框,用于跳转到指定种子
- 在请求时生成 100 个变体(种子 1-100)
3. 单一 Artifact 结构
<!DOCTYPE html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.7.0/p5.min.js"></script>
<style>
/* All styling inline - clean, minimal */
/* Canvas on top, controls below */
</style>
</head>
<body>
<div id="canvas-container"></div>
<div id="controls">
</div>
<script>
// ALL p5.js code inline here
// Parameter objects, classes, functions
// setup() and draw()
// UI handlers
// Everything self-contained
</script>
</body>
</html>
关键要求:这是单一 Artifact。不得使用外部文件,不得导入任何内容(p5.js CDN 除外)。所有内容均需内联。
4. 实现细节:构建侧边栏
侧边栏结构如下:
1. 种子(固定):必须严格按所示内容包含:
- 种子显示
- 上一个/下一个/随机/跳转按钮
2. 参数(可变):为该艺术作品创建控件:
<div class="control-group">
<label>Parameter Name</label>
<input type="range" id="param" min="..." max="..." step="..." value="..." oninput="updateParam('param', this.value)">
<span class="value-display" id="param-value">...</span>
</div>
根据参数数量添加对应数量的控件分组 div。
3. 颜色(可选/可变):若艺术作品需要可调颜色,则包含此部分:
- 若用户应能控制调色板,则添加取色器
- 若艺术作品使用固定颜色,则跳过此部分
- 若艺术作品为单色,则跳过此部分
4. 操作(固定):必须严格按所示内容包含:
- 重新生成按钮
- 重置按钮
- 下载 PNG 按钮
要求:
- 种子控件必须正常工作(上一个/下一个/随机/跳转/显示)
- 所有参数都必须有 UI 控件
- 重新生成、重置、下载按钮必须正常工作
- 保留 Anthropic 品牌风格(指 UI 样式,而非艺术作品的颜色)
使用 Artifact
该 HTML Artifact 可立即使用:
- 在 claude.ai 中:以交互式 Artifact 形式展示,即时运行
- 作为文件:保存后在任意浏览器中打开,无需服务器
- 分享:发送 HTML 文件即可,文件完全自包含
变体与探索
该 Artifact 默认包含种子导航(上一个/下一个/随机按钮),用户无需生成多个文件即可探索变体。如果用户希望突出特定变体,可以:
- 添加种子预设(如"变体 1:种子 42"、"变体 2:种子 127"等按钮)
- 添加"画廊模式",并排显示多个种子的缩略图
- 以上均在同一个单一 Artifact 内完成
这类似于用同一块版画印制一系列作品:算法保持一致,但每个种子都会呈现其潜力的不同侧面。通过交互式探索,用户可以自行发现喜爱的变体。
创作流程
用户请求 → 算法理念 → 实现
每个请求都是独特的。流程包括:
- 理解用户意图:探究所追求的审美风格是什么?
- 提出算法理念(4-6 段):描述计算方法
- 以代码实现:构建体现该理念的算法
- 设计合适的参数:哪些内容应可调节?
- 构建匹配的 UI 控件:为这些参数提供滑块或输入框
恒定部分:
- Anthropic 品牌(颜色、字体、布局)
- 种子导航(始终存在)
- 自包含的 HTML Artifact
其余均为可变部分:
- 算法本身
- 参数
- UI 控件
- 视觉成果
为获得最佳效果,应信任创造力,让理念引导实现。
资源
此技能包含实用的模板和文档:
-
templates/viewer.html:所有 HTML 成品的必需起点。
- 这是基础文件,包含准确的结构和 Anthropic 品牌元素
- 保持不变:布局结构、侧边栏组织方式、Anthropic 配色与字体、种子控制项、操作按钮
- 替换:p5.js 算法、参数定义,以及 Parameters 部分中的 UI 控件
- 文件中的详细注释会准确标出哪些内容应保留,哪些内容应替换
-
templates/generator_template.js:p5.js 最佳实践和代码结构原则参考。
- 展示如何组织参数、使用带种子的随机性,以及构建类结构
- 这不是算法模式菜单;请运用这些原则构建独特算法
- 将算法直接嵌入 HTML 成品中(不要创建单独的 .js 文件)
重要提醒:
- 模板是起点,不是灵感来源
- 算法才是创造独特内容的地方
- 不要照搬流场示例;要根据设计理念构建
- 但务必保留模板中完全一致的 UI 结构和 Anthropic 品牌元素
国内适配
- 支持中文文档和中文注释
- 示例代码兼容国内开发环境
- 提供中文 FAQ 和常见问题解答
使用流程
步骤 1:准备环境
确保开发环境已安装必要的依赖和工具。
步骤 2:初始化配置
根据项目需求进行基础配置。
步骤 3:使用核心功能
按照示例代码实现核心功能。
步骤 4:测试验证
运行测试,确保功能正常。
步骤 5:部署上线
完成开发后进行部署和监控。