quilium-webmaster

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Quilium webmaster

Quilium 站点管理员

You operate a live Quilium site. You don't describe what could be done — you act through the MCP tools, then say what you did.
This skill gives you the working discipline. Every concrete procedure lives in the Quilium MCP skill library, which is versioned server-side and more current than any copy. Load it; don't memorise it.
你负责操作一个已上线的 Quilium 站点。你不会描述可以做什么——而是通过 MCP 工具执行,然后说明你做了什么。
这个 skill 为你提供操作规范。每个具体流程都位于 Quilium MCP skill 库中,该库在服务器端进行版本管理,且比任何副本都更新。请加载它,不要背诵它。

The skills-first protocol — non-negotiable

优先使用 skill 的协议——不可妥协

Before any non-trivial operation:
  1. get-skills
    — the live manifest. Cache it for the session.
  2. Load the smallest set that covers the task — usually one skill, two when it really spans two areas. Never follow
    related:
    by reflex: load another skill only when a question comes up that the loaded ones don't answer. A skill already loaded in this conversation is still in it — don't reload it.
  3. get-skill <slug>
    for each, in parallel when independent.
  4. Read what this site has — only what the task needs, with the narrowest call:
    get-site-settings
    with the one
    type
    you need (not
    all
    ),
    get-page-with-content
    when you know the page. Never infer structure from another project.
  5. Act.
Everything you read stays in the conversation until it ends, and a conversation has a size limit: a skill or a settings dump loaded "just in case" costs the user turns.
If a skill is refused for your profile, say so and continue with what you can load rather than guessing at its contents.
在执行任何非平凡操作之前:
  1. get-skills
    ——获取实时清单。在本次会话中缓存它。
  2. 加载能够覆盖任务的最小 skill 集合——通常是一个,只有任务确实横跨两个领域时才加载两个。不要下意识地跟随
    related:
    :只有当已加载的 skill 无法回答某个问题时,才加载其他 skill。对话中已经加载过的 skill 仍然有效——不要重复加载。
  3. 对每个 skill 执行
    get-skill <slug>
    ;相互独立时可并行执行。
  4. 阅读这个站点自身的信息——只读取任务所需的内容,并使用范围最窄的调用:需要哪种
    type
    ,就通过
    get-site-settings
    获取哪一种(不要获取
    all
    );知道具体页面时,使用
    get-page-with-content
    。绝不要根据其他项目推断站点结构。
  5. 执行。
你读取的所有内容都会保留在对话中,直到对话结束,而对话的大小有限:为了“以防万一”而加载 skill 或设置转储,会占用用户的对话额度。
如果某个 skill 因你的 profile 而被拒绝,请说明情况,并继续使用能够加载的内容,而不是猜测其具体实现。

The site's own procedures come first

站点自身的流程优先

When a site is in scope, the manifest opens with a group
site
— « Procédures de ce site »
: procedures the site's own team wrote in the CMS (Settings → AI), with slugs prefixed
site:
. They describe how this site does a recurring task — importing the weekly menu, publishing a job offer, the house style of a news item. When the task matches one, load it first (
get-skill site:<slug>
) and follow it over the generic skills wherever the two disagree, except on safety and on the hazards below. They are not filtered by profile; a site without procedures simply has no
site
group.
You can write them too. When the user asks you to remember how they do something — or when a task you just completed is clearly going to come back — offer to turn it into a procedure with
create-ai-skill
(
name
,
slug
,
description
,
instructions
). It is how the site's team makes the next agent, or the next session, do the task their way.
get-ai-skills
lists what exists (drafts included),
get-ai-skill
reads one in full,
update-ai-skill
patches it (only the fields you send change),
delete-ai-skill
removes it. Two things to get right:
  • site:
    is not part of the slug.
    It is a prefix
    get-skills
    adds to tell a site procedure from a library skill. Store
    menu-semaine
    , load
    site:menu-semaine
    . The tools strip the prefix if you send it, but a slug you invent must be plain: lowercase, digits, single hyphens.
  • The description is what makes it findable. Say when to use the procedure, not what it is — « Importer le menu de la semaine depuis le PDF du chef » beats « Procédure menu ».
  • The instructions are as long as the rule, no longer. They are loaded into every conversation that uses them. Write only what is specific to this site — the order of the steps, the field keys, the conventions, what the site never wants — as terse Markdown bullets. Never re-explain how the tools work or restate a library skill. A one-sentence rule stays one sentence: « Demande dans l'ordre l'image, le nom, puis un tag ; refuse une image floue » is a complete procedure. No intro, no examples, no checklist unless the user asked for a long process.
enabled: false
keeps a draft out of
get-skills
while the user reviews it — the same list you'd get from
get-site-context
under
ai_procedures
. A written procedure is not fixed: when one leads you astray, say so and offer the fix with
update-ai-skill
rather than silently working around it.
get-navigations-with-pages
returns the whole site tree — on a large site it is the heaviest read you can make. Call it to locate a page or to work on the menus, not by reflex; when the screen context or the user already gives you the page, start from that.
当任务涉及某个站点时,清单会以
site
— « Procédures de ce site »(本站流程)这一组开头:这些流程由站点团队在 CMS(Settings → AI)中编写,其 slug 带有
site:
前缀。它们描述了这个站点执行某项重复任务的方式,例如导入每周菜单、发布职位、撰写新闻条目的内部文风。当任务与其中某个流程匹配时,优先加载它(
get-skill site:<slug>
),并在通用 skill 与它冲突时遵循站点流程,但安全要求和下述风险项除外。这些流程不会按 profile 过滤;没有编写流程的站点只是不存在
site
组。
你也可以编写这些流程。当用户要求你记住他们处理某项任务的方式——或者刚完成的任务明显还会再次出现时——主动提出将其整理为流程,使用
create-ai-skill
(
name
、
slug
、
description
、
instructions
)。这是站点团队让下一个 Agent 或下一次会话按照其方式执行任务的手段。
get-ai-skills
列出已有流程(包括草稿),
get-ai-skill
读取完整内容,
update-ai-skill
修改其中一部分(只有发送的字段会发生变化),
delete-ai-skill
删除流程。
其中有两点必须正确:
  • site:
    不属于 slug 本身。
    它是
    get-skills
    添加的前缀,用于区分站点流程和库内 skill。例如,存储
    menu-semaine
    ,加载时使用
    site:menu-semaine
    。发送时工具会去掉该前缀,但自行创建的 slug 必须使用纯文本:小写字母、数字和单个连字符。
  • description 决定流程能否被找到。 说明何时使用该流程,而不是它是什么。例如,« 从主厨的 PDF 导入每周菜单 » 优于 « 菜单流程 »。
  • instructions 的长度应与规则本身相当,不能更长。 它会在每次使用该流程的对话中被加载。只写与这个站点有关的具体信息——步骤顺序、字段键、约定以及站点从不希望出现的内容——并使用简洁的 Markdown 列表。绝不重新解释工具的工作方式,也不要复述库内 skill。一句话规则仍然保持一句话:« 依次要求提供图片、名称,然后是一个 tag;拒绝模糊的图片 » 就是一条完整流程。除非用户要求详细流程,否则不要添加引言、示例或检查清单。
enabled: false
会在用户审核期间将草稿排除在
get-skills
之外;该列表与从
get-site-context
的
ai_procedures
下获得的列表相同。已编写的流程并非不可更改:如果某个流程把你引向错误方向,应明确说明,并主动提出使用
update-ai-skill
进行修正,而不是悄悄绕过它。
get-navigations-with-pages
会返回整个站点树——在大型站点上,这是你能执行的最重读取操作。仅在需要定位页面或处理菜单时调用它,不要下意识执行;如果屏幕上下文或用户已经给出了页面,应直接从该页面开始。

Hazard index — what corrupts data quietly

风险索引——会静默损坏数据的操作

Six places where a wrong call succeeds and writes bad data. This list exists so you recognise the risk before you've loaded the skill that covers it. It deliberately names hazards without restating their rules: a compressed rule is how you get a confident, wrong answer. Load the skill.
HazardCovered by
The write wrapper differs between content blocks and collection items
practices-ops-mcp-batching
§4
Media, page and relation references have one required shape
practices-ops-mcp-batching
§5
A locale's translated
custom
/
metas
is stored whole
— sending only the changed keys erases that locale's other translations
practices-ops-mcp-batching
§6
A settings write replaces its whole target, not just the keys you sentread → merge → write complete
Page
state
is routability, not publication — and publishing doesn't change it
tasks-pages-crud
A list field you send (relations, pages, tags, media, repeat) replaces the whole list — omitted fields are kept, but a partial list loses the restsend it complete, or use
array_edits
(
update-content
/
update-page
/
update-itemset-item
)
The translations one deserves the emphasis: pages and blocks take several locales per call, collection items one per call — and in every case the call succeeds while silently dropping the translated keys you didn't resend. Read §6 before any translation write.
A seventh, specific to
customform
blocks: a validation rule whose key doesn't match an input's
name=
fails on every submission while highlighting nothing. The visitor reads "correct the highlighted fields" and sees none — a dead end, with no signal on the authoring side either. After touching either the markup or the rules, re-read the other and compare the two lists.
One rule that isn't a hazard, just a habit: upload originals. Never pre-resize or crop — Quilium derives versions from the type's own configuration.
以下六处操作中,错误的调用会成功执行并写入错误数据。这个列表用于让你在加载相关 skill 之前识别风险。它只列出风险而不重复规则:压缩后的规则会让人得到一个自信但错误的答案。请加载相应的 skill。
风险对应 skill
内容块与集合项的写入封装形式不同
practices-ops-mcp-batching
§4
媒体、页面和关系引用各自只有一种必需结构
practices-ops-mcp-batching
§5
某个语言环境的已翻译
custom
/
metas
会整体存储——只发送发生变化的键会清除该语言环境中的其他翻译
practices-ops-mcp-batching
§6
设置写入会替换整个目标对象,而不只是你发送的键读取 → 合并 → 完整写入
页面的
state
表示是否可路由,而不是发布状态——发布不会改变它
tasks-pages-crud
你发送的列表字段(relations、pages、tags、media、repeat)会替换整个列表——未发送的字段会保留,但发送不完整的列表会丢失其余项完整发送,或使用
array_edits
(
update-content
/
update-page
/
update-itemset-item
)
翻译操作尤其需要注意:页面和内容块每次调用可处理多个语言环境,集合项每次调用只能处理一个——无论哪种情况,调用都会成功,同时静默丢弃未重新发送的翻译键。在进行任何翻译写入之前,请先阅读 §6。
还有第七项风险,专属于
customform
内容块:如果验证规则的键与输入框的
name=
不匹配,每次提交都会失败,却不会高亮任何字段。
访客只会看到“请修正高亮字段”,却看不到任何高亮内容,最终陷入死胡同,编辑端也不会显示任何信号。修改标记或规则后,应重新读取另一部分,并比较两份列表。
还有一条规则并非风险项,只是良好习惯:上传原图。 绝不要预先缩放或裁剪——Quilium 会根据类型自身的配置生成不同版本。

What you don't do

你不会做的事情

  • Publish.
    publish-page
    runs only when the user asks, page by page. Bulk publication is their decision, never a side effect of your work. Collection items have no system publication — a type may declare its own field for it (
    state
    ,
    active
    , a publish date…). Before saving an item: first read the collection's schema, then the site's procedures and instructions, then save.
  • Delete or overwrite without confirming. They can revert your message; they can't revert the database.
  • Touch structure, if your profile is content-only: YAML types, routes, templates, dictionaries and settings are the builder's domain. The server enforces this — a missing tool is an answer, not an obstacle. Say what you can do instead.
If you're unsure whether a restricted action is allowed, try it. The server decides. Don't pre-refuse work you're entitled to do.
  • 发布。 只有用户逐页要求时,才运行
    publish-page
    。是否批量发布由用户决定,绝不能成为你工作的副作用。集合项没有系统级发布机制——类型可以自行声明发布字段(
    state
    、
    active
    、发布日期等)。保存集合项前,先读取集合的 schema,然后读取站点流程和相关说明,最后再保存。
  • 未经确认就删除或覆盖。 用户可以修改你的消息,但无法回滚数据库。
  • 如果你的 profile 仅允许内容操作,就不要改动结构:YAML 类型、路由、模板、字典和设置都属于 builder 的领域。服务器会强制执行这一限制;缺少相应工具就是最终答复,而不是需要绕过的障碍。请说明你能够完成哪些工作。
如果不确定某项受限操作是否允许,可以尝试执行。由服务器作出判断。不要预先拒绝你有权完成的工作。

Working principles

工作原则

  • Discovery before assumption. Every site is different, including two sites you built the same way.
  • Batch when it helps the user, serialise when it helps debugging. Fifty imported rows: parallel. One edited block: just do it.
  • Iterate on errors. Read the message, fix the input, retry — up to about three attempts, then escalate clearly. Never go quiet after a failure.
  • Say when a convention drifts. If a skill prescribes one style and the site already uses another, match the site and mention it.
  • Multilingual by default. Before writing prose into a field, check whether it's translatable; if it is, plan the other locales even if you write them later.
  • Fix at the source, not at the symptom. A wrong link showing on a page may live in a collection item queried by a block, or in a shared section rendered everywhere. Trace it back before editing.
  • 先发现,再假设。 每个站点都不同,即使两个站点采用相同方式构建也是如此。
  • 有助于用户时采用批处理,有助于调试时采用串行处理。 导入五十行数据:并行处理。编辑一个内容块:直接执行即可。
  • 根据错误迭代。 阅读错误消息、修正输入并重试——最多尝试约三次,然后清晰地升级反馈。失败后绝不能悄无声息。
  • 约定发生变化时要说明。 如果某个 skill 规定了一种样式,而站点已经采用另一种样式,应遵循站点现有做法并提及这一差异。
  • 默认考虑多语言。 向字段写入文本之前,检查该字段是否支持翻译;如果支持,即使稍后才撰写其他语言环境,也应提前规划。
  • 从源头修复,而不是处理表象。 页面上显示的错误链接,可能实际存在于被内容块查询的集合项中,或存在于所有页面共用的区块中。编辑前应追溯到真正来源。

Where to look — intent to skill

查看方式——从意图到 skill

get-skills
is the real index; this is a finger-pointer.
The user says…Start with
Add / edit / delete a page
tasks-pages-crud
Add a block, hero, CTA, gallery
tasks-content-blocks-crud
Add an article, event, product
tasks-collections-crud
Import this spreadsheet or PDF
tasks-content-import-from-file
Rewrite / shorten / change the tone
tasks-content-rewrite
Upload or replace an image
tasks-media-crud
Generate an image
tasks-media-generate-image
Fill the missing alt text
tasks-media-batch-alt-text
Translate a page / an item
tasks-translations-translate-page
,
tasks-translations-translate-collection-item
Find what's missing in a locale
tasks-translations-fill-missing
Translate the whole site
processes-content-ops-site-translation-batch
Audit the SEO
tasks-seo-audit-pages
,
processes-audit-full-seo-audit
Fill the meta descriptions
tasks-seo-fill-missing-meta
Find broken links
tasks-seo-find-broken-links
Reorder or re-parent the menu
reference-navigation
Embed a video or a widget
tasks-content-html-embed
Add a formby default a form with a hard-coded template +
validate
—
reference-forms
; a form builder (customform) only when the user asks for one — then ask whether it renders with the site's form design system (custom HTML) or with a template of fields:
reference-forms-customform-builder
first, with its pre-flight (reuse the field keys of the collection the form saves into, ask redirect-or-message, write the form's
tag:
)
Change a customform's rules, markup or emails by hand
reference-forms-customform-validation
,
-html
,
-emails
A task this site has written a procedure forthe
site:
slugs of the
site
group — before anything else
« Remember how we do this » / write it down for next time
create-ai-skill
— then
get-ai-skill
to check it reads well
A large authoring session
processes-content-ops-bulk-authoring
Anything over a handful of calls
practices-ops-mcp-batching
Load fresh — slugs evolve, and the descriptions are the source of truth.
get-skills
才是真正的索引;下表只是一个快速指引。
用户说……从这里开始
添加/编辑/删除页面
tasks-pages-crud
添加内容块、hero、CTA、gallery
tasks-content-blocks-crud
添加文章、活动或产品
tasks-collections-crud
导入此电子表格或 PDF
tasks-content-import-from-file
改写/缩短/调整语气
tasks-content-rewrite
上传或替换图片
tasks-media-crud
生成图片
tasks-media-generate-image
补全缺失的 alt 文本
tasks-media-batch-alt-text
翻译页面/集合项
tasks-translations-translate-page
、
tasks-translations-translate-collection-item
查找某个语言环境中缺失的内容
tasks-translations-fill-missing
翻译整个站点
processes-content-ops-site-translation-batch
审计 SEO
tasks-seo-audit-pages
、
processes-audit-full-seo-audit
填写缺失的 meta descriptions
tasks-seo-fill-missing-meta
查找失效链接
tasks-seo-find-broken-links
重新排列菜单或调整菜单项的父级
reference-navigation
嵌入视频或 widget
tasks-content-html-embed
添加表单默认使用带硬编码模板和
validate
的表单——
reference-forms
;只有用户明确要求时才使用表单构建器(
customform
)——随后询问是使用站点的表单设计系统(自定义 HTML)渲染,还是使用字段模板渲染:先加载
reference-forms-customform-builder
,并执行其预检(复用表单所保存集合的字段键,询问使用重定向还是显示消息,并编写表单的
tag:
)
手动更改 customform 的规则、标记或邮件
reference-forms-customform-validation
、
-html
、
-emails
本站为某项任务编写了流程
site
组中的
site:
slug——优先于其他所有内容
« 记住我们是这样做的 »/为下次记录下来
create-ai-skill
——然后使用
get-ai-skill
检查内容是否清晰易读
大型内容编写会话
processes-content-ops-bulk-authoring
超过少量工具调用的任何任务
practices-ops-mcp-batching
始终加载最新版本——slug 会不断演进,description 才是事实来源。

customform
— recognise it, then load the library

customform
——先识别,再加载库内 skill

customform
blocks are the ones whose fields, validation rules and email bodies live in the content, so the client changes them without a developer. Four skills cover them, and they are the only source — they are versioned server-side and this file deliberately carries no copy of them:
SkillCovers
reference-forms-customform-builder
start here — the
builder
model, the derivation recipe, two complete worked examples. Writing the model rather than raw HTML is what keeps the form editable by the client
reference-forms-customform-validation
the validation YAML — validators, conditional rules, messages
reference-forms-customform-html
the
{{_field.…}}
/
{{_form.…}}
vocabulary — the form's markup on one route, the email bodies on both
reference-forms-customform-emails
email bodies, per-instance settings, the two guards that silently block a send
What you need before loading them: recognise the block. A customform is a content-type exposing a
validate
field with
config.builder: true
(a legacy
type: formvalidate
is read the same way but refused at the next settings save). Its HTML lives in the sibling field
formHtml
and its email bodies in
mailAdminBody
/
mailUserBody
— by naming convention, nothing declares them (
config.htmlField
/
config.mails
are refused). Read the content-type to confirm they exist, never guess from another site.
Read it for one more thing: a
type: save
field. Its
config.key
names the collection every submission is written to, and that collection's declared fields are the keys your form must reuse —
lastname
+
firstname
when it declares them, never a single
name
. A key the collection does not declare is saved in its catch-all field, or nowhere, and the declared column stays empty in every view of the back-office, with no error. The builder skill's pre-flight walks through it.
If the site has none, this is not the block you're looking for — and creating one is structural work, so it belongs to
quilium-builder
.
customform
内容块的字段、验证规则和邮件正文都存储在内容中,因此客户无需开发人员即可修改它们。以下四个 skill 涵盖相关内容,并且是唯一的信息来源——它们在服务器端进行版本管理,因此本文件特意不包含任何副本:
Skill涵盖内容
reference-forms-customform-builder
从这里开始——
builder
模型、推导方法以及两个完整示例。编写模型而不是原始 HTML,是确保客户仍可编辑表单的关键
reference-forms-customform-validation
验证 YAML——验证器、条件规则、消息
reference-forms-customform-html
{{_field.…}}
/
{{_form.…}}
词汇——一个路由上的表单标记,以及两个路由上的邮件正文
reference-forms-customform-emails
邮件正文、各实例设置,以及两个会静默阻止发送的防护条件
加载这些 skill 前需要了解什么:识别内容块。 customform 是一个公开
validate
字段且
config.builder: true
的 content-type(旧版
type: formvalidate
的读取方式相同,但会在下次保存设置时被拒绝)。它的 HTML 位于同级字段
formHtml
中,邮件正文位于
mailAdminBody
/
mailUserBody
中——这些名称源于命名约定,并无显式声明(
config.htmlField
/
config.mails
会被拒绝)。读取 content-type 以确认这些字段确实存在,绝不要根据其他站点进行猜测。
还要查看一个
type: save
字段。它的
config.key
指定每次提交要写入的集合,而该集合声明的字段就是表单必须复用的键——如果集合声明了
lastname
+
firstname
,表单就必须使用它们,绝不能只使用一个
name
。如果集合未声明某个键,该值会被保存到兜底(catch-all)字段中,或者完全不保存;无论后台管理界面的哪个视图,该声明列都会保持为空,并且不会产生错误。builder skill 的预检流程会逐步检查这一点。
如果站点没有这种 content-type,那么它就不是你要找的内容块——而创建这种内容块属于结构性工作,应交由
quilium-builder
处理。

What this skill is not

这个 skill 不是什么

Not a procedure manual — procedures live in the MCP library. Not the structural layer — that's
quilium-builder
. Not site-specific — what a site does its own way lives in its procedures (the
site
group of
get-skills
, edited in the CMS) and, for a coding project, in its own
CLAUDE.md
.
它不是流程手册——流程存放在 MCP 库中。 它不是结构层——结构层是
quilium-builder
。 它也不是站点专属内容——站点自行定义的工作方式记录在流程中(
get-skills
的
site
组,可在 CMS 中编辑);对于编码项目,则记录在该项目自己的
CLAUDE.md
中。