vault-operator-kr

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Vault Operator 빌더 (한글판)

Vault Operator Builder(韩文版)

이 스킬 자신은 매 실행마다 세컨드브레인을 관리하는 오퍼레이터가 아니다. 이 스킬은 오퍼레이터를 만들어주는 빌더다. 실행하면 대상자의 볼트와 커넥터에 맞춰 개인화된 오퍼레이터 프롬프트를 그 사람의 볼트 안에 생성하고, 자동 실행 스케줄까지 걸어준다.
렌더된 오퍼레이터는 데일리·프로젝트 노트뿐 아니라 폴더 인덱스 파일을 os-optimizer F9 형식으로 매 실행 순환 유지한다. 덕분에 대상자가 os-optimizer를 따로 돌리지 않아도 볼트가 상시 감사 통과 상태(발견가능성 체인 유지, frontmatter·em dash·시그니처 정합)로 유지된다. 코호트 배포처럼 여러 볼트에 같은 품질을 보장해야 할 때 특히 유효하다.
한 명(Michael)만을 위해 하드코딩된 예시가
references/example-filled-michael.md
에 있다. 이 스킬을 실행하면 그 예시와 같은 구조지만, 대상자 본인의 이름·Slack ID·볼트 경로·활성 프로젝트가 들어간 새 파일을 생성한다.
이 스킬은 네 단계를 순서대로 수행한다:
  1. 발견(Discover) — 대상자 볼트가 이미 알고 있는 것을 조용히 읽는다.
    Context/
    와
    CLAUDE.md
    에서 이름, 브랜드, 볼트 폴더 구조를 뽑아낸다.
  2. 부족한 것만 질문(Ask only the gaps) — 캐던스, 커넥터(라이브 프로브 결과 확인), DM 수신자, 예산, 시그니처 색. 1단계에서 이미 알아낸 것은 다시 묻지 않는다.
  3. 렌더링 후 저장(Render and save) — 개인화된 프롬프트를 대상자 볼트에 저장한다.
  4. 스케줄링(Schedule) —
    schedule
    스킬로 넘겨 자동 실행 트리거를 건다. 사용자가 직접
    /schedule create
    를 실행할 필요가 없게 한다.
此 skill 本身并不是每次执行都用于管理 Second Brain 的 Operator。它是一个用于创建 Operator 的 Builder。执行后,它会根据目标用户的 vault 和 connector,在该用户的 vault 内生成个性化 Operator prompt,并设置自动执行 schedule。
渲染后的 Operator 不仅维护每日笔记和项目笔记,还会在每次执行时循环维护文件夹索引文件的 os-optimizer F9 格式。这样,即使目标用户没有单独运行 os-optimizer,vault 也能持续保持审计通过状态(维持可发现性链,并确保 frontmatter、em dash 和签名一致)。在需要像 cohort 部署那样为多个 vault 保证相同质量时,尤其有效。
仅针对 Michael 硬编码的示例位于
references/example-filled-michael.md
。运行此 skill 时,将生成一个结构相同的新文件,但其中会填入目标用户本人的名称、Slack ID、vault 路径和活跃项目。
此 skill 按顺序执行四个阶段:
  1. 发现(Discover)——静默读取目标用户 vault 中已经包含的信息。从
    Context/
    和
    CLAUDE.md
    中提取名称、品牌和 vault 文件夹结构。
  2. 仅询问缺失项(Ask only the gaps)——询问 cadence、connector(确认实时 probe 结果)、DM 接收者、预算和签名颜色。对于第 1 阶段已经获知的信息,不会再次询问。
  3. 渲染并保存(Render and save)——将个性化 prompt 保存到目标用户的 vault。
  4. 调度(Schedule)——移交给
    schedule
    skill,设置自动执行触发器。用户无需亲自执行
    /schedule create
    。

참조 파일

参考文件

  • references/operator-prompt-template-kr.md
    — 파라미터화된 오퍼레이터 프롬프트 (
    {{PLACEHOLDER}}
    포함, 약 350줄).
  • references/connector-fragments-kr.md
    — 커넥터별 스플라이스 블록(Slack/Calendar/Gmail/Notion/ Drive/Firecrawl, Wiki 파이프라인, 프로젝트 README 단계).
  • references/os-optimizer-alignment-kr.md
    — 오퍼레이터 노트를 os-optimizer 감사에 상시 통과시키기 위한 형식 계약(frontmatter 스키마, 폴더 인덱스 형식, 조율 포인트). 대상자
    CLAUDE.md
    시드 기준.
  • references/example-filled-michael.md
    — 참고용 완성 예시(그대로 쓰지 않음, 위 안내 참고).
Phase 2(렌더링)를 시작하기 전에 위 두 참조 파일(템플릿 + 프래그먼트)을 모두 읽는다.

  • references/operator-prompt-template-kr.md
    ——参数化的 Operator prompt(包含
    {{PLACEHOLDER}}
    ,约 350 行)。
  • references/connector-fragments-kr.md
    ——各 connector 的 splice 块(Slack/Calendar/Gmail/Notion/Drive/Firecrawl、Wiki pipeline、项目 README 阶段)。
  • references/os-optimizer-alignment-kr.md
    ——确保 Operator 笔记始终通过 os-optimizer 审计的格式约定(frontmatter schema、文件夹索引格式和协调点)。以目标用户的
    CLAUDE.md
    为 seed。
  • references/example-filled-michael.md
    ——完整参考示例(不要直接使用,请参考以上说明)。
开始第 2 阶段(渲染)之前,必须读取上述两个参考文件(模板和 fragment)。

Phase 0 — 조용한 발견 (질문 없음, 쓰기 없음)

第 0 阶段——静默发现(不提问、不写入)

이 스킬은 대상자의 볼트 폴더가 연결된 상태(Cowork에서 그 폴더를 선택했거나, 로컬에서 그 볼트 안에 있을 때)에서 실행한다. 전부 파일시스템 읽기 전용 작업이다.
  1. cwd/연결된 폴더가 볼트인지 확인한다. 루트에
    CLAUDE.md
    가 있어야 한다. 없으면 대상자에게 세컨드브레인 볼트 폴더를 알려달라고 요청하고, 그 전에는 진행하지 않는다.
  2. 최상위 폴더 목록.
    Glob
    */
    .
    {{VAULT_ROOT}}
    은 이 폴더의 절대경로(끝에
    /
    포함)로 캐시한다.
  3. CLAUDE.md
    를 읽는다.
    시그니처 스타일, em-dash 규칙, 문체 규칙, 폴더 라우팅, Wiki 시스템(있으면
    raw/
    →
    Wiki/
    파이프라인 존재로 판단) 여부를 뽑아낸다. 폴더 인덱스 컨벤션도 확인한다: 폴더별 인덱스 파일명이
    README.md
    /
    Plot.md
    /
    index.md
    중 무엇인지 (
    Glob
    으로 실제 인덱스 파일을 찾아 확인). 명시가 없으면
    README.md
    를 기본값으로 캐시한다. 렌더된 오퍼레이터는 이 컨벤션으로 os-optimizer F9 형식의 폴더 인덱스를 매 실행 유지한다.
  4. Context/
    의 파일들을 읽는다.
    있는 것만:
    • Context/me.md
      — 소유자 이름, 역할 →
      {{OWNER_NAME}}
    • Context/business.md
      /
      Context/brand.md
      — 브랜드/조직명 →
      {{BRAND_NAME}}
      (없으면
      {{OWNER_NAME}}의 세컨드브레인
      으로 대체하고
      {{BRAND_WIKILINK}}
      는 빈 문자열)
    • Context/brand.md
      — 브랜드 색상 hex 코드가 있으면
      {{SIGNATURE_BG_COLOR}}
      후보로.
  5. 활성 프로젝트를 찾는다.
    Glob
    Projects/*/README.md
    . 각 프로젝트명을 모아
    {{ACTIVE_PROJECTS_BLOCK}}
    용 목록으로 캐시(각 줄
    - \
    Projects/{name}/README.md`: [[Projects/{name}]]
    형식). 하나도 없으면 빈 목록으로 두고
    {{PROJECT_README_STEP}}`은 connector-fragments-kr.md의 "비활성" 블록을 쓴다.
  6. Wiki 파이프라인 여부.
    Wiki/
    와
    raw/
    폴더가 모두 최상위 폴더 목록에 있으면 활성으로 간주. 없으면 비활성. 활성이면
    Glob
    Wiki/*/
    로 기존 토픽 폴더명을 모아
    {{WIKI_TOPICS_LIST}}
    로 캐시한다(예:
    ai-agents, ai-business, second-brain
    ). 하나도 없으면
    {{WIKI_TOPICS_LIST}}
    는 "아직 토픽 없음, 첫 아티클의 주제로 새로 만든다"로 둔다.
  7. 기타 캐시 값:
    • {{OPERATOR_NAME}}
      (기본값) ←
      {{BRAND_NAME}} 볼트 오퍼레이터
      .
    • {{OPERATOR_BASE_PATH}}
      ←
      Projects/Vault-Operator/
      (Projects/ 폴더가 있으면), 없으면 대상자에게 어디에 오퍼레이터 관련 파일을 둘지 한 번 물어본다.
    • {{SIGNATURE_BG_COLOR}}
      ← brand.md에서 못 찾으면
      #D2ECD0
      .
    • {{SIGNATURE_FG_COLOR}}
      ←
      #020309
      .
발견이 끝나면 4~6줄로 요약한다:
볼트에서 발견한 정보:
  • 소유자:
    {{OWNER_NAME}}
  • 브랜드:
    {{BRAND_NAME}}
  • 최상위 폴더:
    {count}
    개 (
    {list first 5}
    )
  • 활성 프로젝트:
    {count}
    개
  • Wiki/raw 파이프라인: {있음 | 없음}
  • 폴더 인덱스 컨벤션:
    {README.md | Plot.md | index.md | 없음 → README.md 기본값}
  • os-optimizer 정합 컨벤션: {CLAUDE.md에 있음 | 없음 → 시드 권장}
  • 오퍼레이터 경로(제안):
    {{OPERATOR_BASE_PATH}}
바꿀 게 있나요? (필드 이름을 말하거나, "이대로 좋다"고 하면 계속 진행합니다.)
수정 요청이 있으면 짧게 반영하고 캐시를 갱신한다. "이대로 좋다"면 바로 Phase 1로 간다. 위 항목들을 별도 질문으로 다시 묻지 않는다. Phase 1은 볼트가 알려줄 수 없는 것만 다룬다.

此 skill 必须在目标用户的 vault 文件夹已连接的情况下运行(在 Cowork 中选择了该文件夹,或在本地位于该 vault 内)。此阶段的所有操作均为文件系统只读操作。
  1. 确认 cwd/已连接文件夹是否为 vault。 根目录中必须存在
    CLAUDE.md
    。如果没有,则请目标用户提供 Second Brain vault 文件夹,并在此之前停止执行。
  2. 获取顶层文件夹列表。 使用
    Glob
    */
    。将
    {{VAULT_ROOT}}
    缓存为此文件夹的绝对路径(末尾包含
    /
    )。
  3. 读取
    CLAUDE.md
    。
    提取签名样式、em dash 规则、文体规则、文件夹路由,以及是否存在 Wiki 系统(如果存在,则根据是否存在
    raw/
    →
    Wiki/
    pipeline 判断)。还需确认文件夹索引约定:每个文件夹的索引文件名是
    README.md
    、
    Plot.md
    还是
    index.md
    (使用
    Glob
    查找实际索引文件并确认)。如果未明确指定,则缓存默认值
    README.md
    。渲染后的 Operator 会按照此约定,在每次执行时维护 os-optimizer F9 格式的文件夹索引。
  4. 读取
    Context/
    中的文件。
    仅处理存在的文件:
    • Context/me.md
      ——所有者名称、角色 →
      {{OWNER_NAME}}
    • Context/business.md
      /
      Context/brand.md
      ——品牌或组织名称 →
      {{BRAND_NAME}}
      (如果不存在,则使用
      {{OWNER_NAME}}的 Second Brain
      ,并将
      {{BRAND_WIKILINK}}
      设为空字符串)
    • Context/brand.md
      ——如果包含品牌颜色 hex code,则将其作为
      {{SIGNATURE_BG_COLOR}}
      候选值。
  5. 查找活跃项目。 使用
    Glob
    Projects/*/README.md
    。收集每个项目名称,并将其缓存为
    {{ACTIVE_PROJECTS_BLOCK}}
    所用列表(每行格式为
    - 
    Projects/{name}/README.md
    : [[Projects/{name}/]]
    )。如果没有项目,则使用空列表,并将
    {{PROJECT_README_STEP}}
    设置为 connector-fragments-kr.md 中的“禁用”块。
  6. 判断是否存在 Wiki pipeline。 如果顶层文件夹列表中同时存在
    Wiki/
    和
    raw/
    ,则视为启用;否则视为禁用。启用时,使用
    Glob
    Wiki/*/
    收集现有主题文件夹名称,并将其缓存为
    {{WIKI_TOPICS_LIST}}
    (例如
    ai-agents, ai-business, second-brain
    )。如果没有任何主题,则将
    {{WIKI_TOPICS_LIST}}
    设为“尚无主题,将以第一篇文章的主题新建”。
  7. 其他缓存值:
    • {{OPERATOR_NAME}}
      (默认值)←
      {{BRAND_NAME}} Vault Operator
      。
    • {{OPERATOR_BASE_PATH}}
      ←
      Projects/Vault-Operator/
      (如果存在
      Projects/
      文件夹);如果不存在,则向目标用户询问一次 Operator 相关文件应存放在哪里。
    • {{SIGNATURE_BG_COLOR}}
      ← 如果无法从 brand.md 中找到,则使用
      #D2ECD0
      。
    • {{SIGNATURE_FG_COLOR}}
      ←
      #020309
      。
发现完成后,用 4~6 行进行总结:
从 vault 中发现的信息:
  • 所有者:
    {{OWNER_NAME}}
  • 品牌:
    {{BRAND_NAME}}
  • 顶层文件夹:
    {count}
    个(
    {list first 5}
    )
  • 活跃项目:
    {count}
    个
  • Wiki/raw pipeline:{有 | 无}
  • 文件夹索引约定:
    {README.md | Plot.md | index.md | 无 → 默认 README.md}
  • os-optimizer 对齐约定:{CLAUDE.md 中有 | 无 → 建议采用 seed}
  • Operator 路径(建议):
    {{OPERATOR_BASE_PATH}}
有需要更改的内容吗?(说出字段名,或说“就这样”以继续。)
如果用户提出修改要求,则简要应用修改并更新缓存。如果用户回答“就这样”,则直接进入第 1 阶段。不要再次单独询问以上项目。 第 1 阶段只处理 vault 无法获知的信息。

Phase 1 — 부족한 것만 질문

第 1 阶段——仅询问缺失项

Q1 — 캐던스

Q1——Cadence

AskUserQuestion
으로 묻는다:
  • 하루 2회 — 오전 9시 / 오후 9시. 기존 Michael 인스턴스의 실 운영값과 동일. 대부분의 1인 세컨드브레인에 적당.
  • 몇 시간마다 — 예: 4시간마다. 활동이 많은 경우.
  • 하루 1회 — 저활동 볼트에 적당.
  • 직접 입력 — cron 표현식이나 문구.
{{CADENCE_HUMAN}}
과
{{CADENCE_CRON}}
으로 저장한다 (예: 하루 2회 → "매일 오전 9시/오후 9시",
0 9,21 * * *
).
使用
AskUserQuestion
询问:
  • 每天 2 次——上午 9 点/下午 9 点。与现有 Michael 实例的实际运行值相同,适合大多数个人 Second Brain。
  • 每隔几小时——例如每 4 小时。适合活动频繁的情况。
  • 每天 1 次——适合低活跃度 vault。
  • 直接输入——cron 表达式或自然语言描述。
将结果保存为
{{CADENCE_HUMAN}}
和
{{CADENCE_CRON}}
(例如每天 2 次 → “每天上午 9 点/下午 9 点”,
0 9,21 * * *
)。

Q2 — 커넥터 (라이브로 프로브하고, 그냥 묻지 않는다)

Q2——Connector(实时 probe,不要直接询问)

체크리스트를 던지고 대상자의 대답을 그대로 믿지 않는다. 이 세션에 실제로 연결된 도구를 프로브한 다음 확인받는다.
不要只是列出 checklist,然后直接相信目标用户的回答。必须先实际 probe 当前会话中已连接的工具,再让用户确认。

2a — 감지

2a——检测

세션에서 사용 가능한 도구 이름을 살펴본다. 아래 접두어 패턴을 찾는다(네임스페이스 무관):
커넥터감지 신호읽기 전용 프로브
Slack
slack_*
(예:
slack_search_users
,
slack_read_channel
)
slack_search_users
또는 채널 목록 호출. 성공 = 인증 오류 없이 응답.
Google Calendar
list_events
list_events
를 오늘 하루로 호출.
Gmail
search_threads
좁은 범위(예: 최근 1일, limit 1)로 호출.
Notion
notion-search
per_page
를 작게 해서 호출.
Google Drive
list_recent_files
작은 범위로 호출.
Firecrawl
firecrawl_scrape
감지만 하고 실제 스크레이프 호출은 하지 않는다(불필요한 크레딧 소모 방지).
감지된 프로브를 한 배치로 병렬 실행한다. 배치 전후로 한 문장씩 내레이션한다.
  • ✅ 감지되고 프로브 성공 → 활성. 실제 MCP 접두어를
    {{*_MCP_NAME}}
    으로 캡처.
  • ⚠️ 감지됐지만 프로브 실패(인증 오류 등) → "연결은 됐지만 문제 있음"으로 표시. 정확한 오류를 보여주고 (a) 건너뛸지 (b) 대상자가 고친 뒤 다시 프로브할지 (c) 그래도 포함할지 물어본다.
  • ❌ 감지 안 됨 → 비활성. "추가할까요?"라고 묻지 않는다. 그건 별도 설치 작업이다.
查看会话中可用的工具名称,寻找以下前缀模式(与 namespace 无关):
Connector检测信号只读 probe
Slack
slack_*
(例如
slack_search_users
、
slack_read_channel
)
调用
slack_search_users
或频道列表。成功 = 未返回认证错误并正常响应。
Google Calendar
list_events
使用今天的完整日期调用
list_events
。
Gmail
search_threads
使用较窄范围调用,例如最近 1 天、limit 1。
Notion
notion-search
调用时将
per_page
设为较小值。
Google Drive
list_recent_files
使用较小范围调用。
Firecrawl
firecrawl_scrape
仅检测,不实际执行 scrape 调用,以免无谓消耗额度。
将检测到的 probe 放在一个批次中并行执行。批次执行前后各进行一句话说明。
  • ✅ 已检测到且 probe 成功 → 启用。捕获实际 MCP 前缀,并保存为
    {{*_MCP_NAME}}
    。
  • ⚠️ 已检测到但 probe 失败(例如认证错误)→ 标记为“已连接但存在问题”。准确显示错误,并询问用户:(a) 跳过;(b) 修复后重新 probe;(c) 仍然包含。
  • ❌ 未检测到 → 禁用。不要询问“是否添加?”,因为这属于单独的安装任务。

2b — 사용자 확인

2b——用户确认

요약 블록 하나로 보여준다:
감지된 커넥터:
  • ✅ Slack —
    {{SLACK_MCP_NAME}}
  • ✅ Google Calendar —
    {{CALENDAR_MCP_NAME}}
  • ❌ Gmail — 감지 안 됨
  • ❌ Notion — 감지 안 됨
  • ❌ Google Drive — 감지 안 됨
  • ❌ Firecrawl — 감지 안 됨
이대로 오퍼레이터에 쓸까요? (예 / 직접 조정)
"직접 조정"이면 개별 항목을 끌 수 있게 한다(단, 감지되지 않은 걸 켜지는 못한다. 그건 먼저 그 MCP를 연결해야 한다).
읽기 전용 프로브만 한다. 감지 단계에서 쓰기/전송 도구(DM 보내기, 게시 등)는 절대 호출하지 않는다.
显示一个汇总块:
已检测到的 connector:
  • ✅ Slack —
    {{SLACK_MCP_NAME}}
  • ✅ Google Calendar —
    {{CALENDAR_MCP_NAME}}
  • ❌ Gmail — 未检测到
  • ❌ Notion — 未检测到
  • ❌ Google Drive — 未检测到
  • ❌ Firecrawl — 未检测到
要按此配置用于 Operator 吗?(例如 / 手动调整)
如果用户选择“手动调整”,则允许逐项开关 connector(但不能启用未检测到的 connector,必须先连接相应的 MCP)。
只执行只读 probe。检测阶段绝不能调用写入或发送工具(发送 DM、发布内容等)。

Q3 — Slack DM 수신자 (Slack이 활성일 때만)

Q3——Slack DM 接收者(仅当 Slack 已启用时)

오퍼레이터가 사람의 대응이 필요한 항목을 찾으면 누구에게 1:1 DM으로 알릴까요? 딱 한 명만. 채널이나 그룹은 안 됩니다.
slack_search_users
로 이름을 검색해 Slack user ID를 확인하고
{{SLACK_USER_ID}}
로 저장한다. Slack이 비활성이면 이 질문을 건너뛴다.
如果 Operator 找到需要人工响应的事项,应向谁发送 1:1 DM 提醒?只能指定一个人。 不能是频道或群组。
使用
slack_search_users
搜索姓名并确认 Slack user ID,将其保存为
{{SLACK_USER_ID}}
。如果 Slack 未启用,则跳过此问题。

Q4 — 예산

Q4——预算

AskUserQuestion
으로 묻는다:
  • Light — 읽기 25 / 쓰기 15 / DM 3 / 하우스키핑 5. 1인 볼트, 하루 2회 캐던스에 적당(기본값).
  • 기본 — 읽기 50 / 쓰기 30 / DM 5 / 하우스키핑 10.
  • Heavy — 읽기 100 / 쓰기 60 / DM 10 / 하우스키핑 20. 활동이 많거나 캐던스가 잦을 때.
  • 직접 입력.
{{BUDGET_READS}}
,
{{BUDGET_WRITES}}
,
{{BUDGET_DMS}}
,
{{BUDGET_HOUSEKEEPING}}
으로 저장한다.
使用
AskUserQuestion
询问:
  • Light——读取 25 / 写入 15 / DM 3 / housekeeping 5。适合个人 vault 和每天 2 次的 cadence(默认值)。
  • 标准——读取 50 / 写入 30 / DM 5 / housekeeping 10。
  • Heavy——读取 100 / 写入 60 / DM 10 / housekeeping 20。适合活动频繁或 cadence 较高的情况。
  • 直接输入。
将结果保存为
{{BUDGET_READS}}
、
{{BUDGET_WRITES}}
、
{{BUDGET_DMS}}
和
{{BUDGET_HOUSEKEEPING}}
。

Q5 — 시그니처 색 (Phase 0에서 못 찾았을 때만)

Q5——签名颜色(仅当第 0 阶段未找到时)

Context/brand.md
에서 이미 색을 찾았으면 건너뛴다. 아니면:
오퍼레이터가 수정한 모든 파일 하단에 색깔 있는 span으로 서명을 남깁니다. 배경색을 고르세요(기본값:
#D2ECD0
, 민트 그린).
{{SIGNATURE_BG_COLOR}}
,
{{SIGNATURE_FG_COLOR}}
(
#020309
)로 저장.

如果已经从
Context/brand.md
找到颜色,则跳过此步骤。否则询问:
Operator 修改的所有文件底部都会留下带颜色的 span 签名。请选择背景色(默认值:
#D2ECD0
,薄荷绿)。
将结果保存为
{{SIGNATURE_BG_COLOR}}
和
{{SIGNATURE_FG_COLOR}}
(
#020309
)。

Phase 2 — 렌더링

第 2 阶段——渲染

  1. references/operator-prompt-template-kr.md
    를 읽는다.
  2. references/connector-fragments-kr.md
    를 읽는다.
  3. 모든
    {{PLACEHOLDER}}
    를 캡처된 값으로 치환한다. 커넥터별 자리(
    {{SLACK_BOOTSTRAP_LINE}}
    ,
    {{SLACK_PULL_BULLET}}
    ,
    {{CALENDAR_BOOTSTRAP_LINE}}
    ,
    {{CALENDAR_PULL_BULLET}}
    ,
    {{GMAIL_BOOTSTRAP_LINE}}
    ,
    {{GMAIL_PULL_BULLET}}
    ,
    {{NOTION_BOOTSTRAP_LINE}}
    ,
    {{NOTION_PULL_BULLET}}
    ,
    {{DRIVE_BOOTSTRAP_LINE}}
    ,
    {{DRIVE_PULL_BULLET}}
    ,
    {{LINK_INGESTION_BLOCK}}
    ,
    {{RAW_WIKI_SWEEP_BLOCK}}
    ,
    {{SLACK_ESCALATION_STEP}}
    ,
    {{PROJECT_README_STEP}}
    ,
    {{ENABLED_CONNECTORS_LINE}}
    ,
    {{MCP_BLOCK}}
    )는:
    • 활성 커넥터 → connector-fragments-kr.md의 활성 블록을 스플라이스하고, 그 안에 중첩된 placeholder(
      {{OWNER_NAME}}
      등)를 다시 한번 치환한다.
    • 비활성 → 비활성 블록으로 대체(대부분 "이 단계를 생략한다"는 한 줄).
  4. {{RAW_GLOB_BULLET}}
    : Wiki 파이프라인 활성이면
    - Glob 패턴 raw/*.md로 컴파일 대기 중인 raw 클리핑 목록을 확인한다.
    줄을 넣고, 비활성이면 통째로 삭제한다.
  5. 괄호로 "(Slack 활성 시)", "(Wiki 파이프라인 활성 시)" 등으로 표시된 하드 룰/실패 처리 문장은 해당 커넥터가 비활성이면 그 문장(괄호 포함)을 통째로 삭제한다. 활성이면 괄호 표시만 지우고 문장은 남긴다.
  6. 경로 파생값을 만든다:
    • {{OWNER_EMAIL_SUFFIX}}
      = 이메일을 알면
      , 이메일 {{OWNER_EMAIL}}
      , 모르면 빈 문자열.
    • {{BRAND_WIKILINK}}
      = 브랜드명이 있으면
      , [[{{BRAND_NAME}}]] 브랜드
      , 없으면 빈 문자열.
  7. 정합성 검사. 렌더링된 결과에서
    {{
    가 남아있는지 스캔한다. 남아있으면 저장 전에 고치거나 대상자에게 알린다.
대상자에게 짧은 미리보기(제목, 캐던스 줄, 활성 커넥터 목록, MCP 블록)를 보여주고 예/아니오로 "저장할까요?"를 묻는다.

  1. 读取
    references/operator-prompt-template-kr.md
    。
  2. 读取
    references/connector-fragments-kr.md
    。
  3. 使用捕获到的值替换所有
    {{PLACEHOLDER}}
    。各 connector 的占位符(
    {{SLACK_BOOTSTRAP_LINE}}
    、
    {{SLACK_PULL_BULLET}}
    、
    {{CALENDAR_BOOTSTRAP_LINE}}
    、
    {{CALENDAR_PULL_BULLET}}
    、
    {{GMAIL_BOOTSTRAP_LINE}}
    、
    {{GMAIL_PULL_BULLET}}
    、
    {{NOTION_BOOTSTRAP_LINE}}
    、
    {{NOTION_PULL_BULLET}}
    、
    {{DRIVE_BOOTSTRAP_LINE}}
    、
    {{DRIVE_PULL_BULLET}}
    、
    {{LINK_INGESTION_BLOCK}}
    、
    {{RAW_WIKI_SWEEP_BLOCK}}
    、
    {{SLACK_ESCALATION_STEP}}
    、
    {{PROJECT_README_STEP}}
    、
    {{ENABLED_CONNECTORS_LINE}}
    、
    {{MCP_BLOCK}}
    )处理如下:
    • 已启用的 connector → splice connector-fragments-kr.md 中的启用块,并再次替换块内嵌套的 placeholder(例如
      {{OWNER_NAME}}
      )。
    • 未启用的 connector → 替换为禁用块(大多数情况下是一行“省略此阶段”)。
  4. {{RAW_GLOB_BULLET}}
    :如果 Wiki pipeline 已启用,则加入一行
    - 检查等待编译的 raw 剪辑列表,Glob 模式为 raw/*.md。
    ;如果未启用,则整行删除。
  5. 对于以括号标注的条件性硬规则或失败处理语句,例如“(Slack 启用时)”“(Wiki pipeline 启用时)”:如果对应 connector 未启用,则删除整条语句(包括括号);如果已启用,则仅移除括号标记并保留正文。
  6. 生成路径派生值:
    • 如果已知邮箱,则
      {{OWNER_EMAIL_SUFFIX}}
      =
      , 邮箱 {{OWNER_EMAIL}}
      ;否则为空字符串。
    • 如果存在品牌名称,则
      {{BRAND_WIKILINK}}
      =
      , [[{{BRAND_NAME}}]] 品牌
      ;否则为空字符串。
  7. 一致性检查。 扫描渲染结果中是否仍存在
    {{
    。如果存在,则在保存前修复或告知目标用户。
向目标用户显示一个简短预览,包括标题、cadence 行、已启用的 connector 列表和 MCP 块,然后以是/否方式询问“是否保存?”。

Phase 3 — 저장

第 3 阶段——保存

예라고 하면:
  • Write
    도구로 대상자 볼트의 로컬 파일시스템에 쓴다.
  • 경로:
    {{VAULT_ROOT}}{{OPERATOR_BASE_PATH}}operator-prompt.md
    .
  • Read
    로 다시 읽어 내용이 실제로 있는지 확인한다.
  • 없다면 함께 생성:
    {{OPERATOR_BASE_PATH}}task-list/Tasks.md
    (빈 스켈레톤:
    ## Slack Seen
    ,
    ## Slack Escalated
    ,
    ## Link Ingested
    ,
    ## Raw Compiled
    ,
    ## Index Refreshed
    ,
    ## Housekeeping Queue
    ,
    Last run: 없음
    — 비활성 커넥터의 섹션은 뺀다.
    ## Index Refreshed
    는 커넥터와 무관하게 항상 포함한다),
    {{OPERATOR_BASE_PATH}}operator-logs/
    폴더(빈 채로 둬도 됨, 첫 실행 때 리포트가 여기 쌓인다).
이미 파일이 있으면 덮어쓰기 전에 확인한다.

如果用户回答“是”:
  • 使用
    Write
    工具将文件写入目标用户 vault 的本地文件系统。
  • 路径:
    {{VAULT_ROOT}}{{OPERATOR_BASE_PATH}}operator-prompt.md
    。
  • 使用
    Read
    再次读取文件,确认内容确实已经写入。
  • 如果文件不存在,则同时创建
    {{OPERATOR_BASE_PATH}}task-list/Tasks.md
    (空 skeleton:
    ## Slack 已查看
    、
    ## Slack 已升级
    、
    ## 链接已摄取
    、
    ## Raw 已编译
    、
    ## 索引已刷新
    、
    ## Housekeeping 队列
    、
    上次运行:无
    ——省略未启用 connector 对应的章节。
    ## 索引已刷新
    无论 connector 配置如何都始终保留),以及
    {{OPERATOR_BASE_PATH}}operator-logs/
    文件夹(可以为空,首次执行时报告会累积在这里)。
如果文件已经存在,则在覆盖前请求确认。

Phase 4 — 스케줄링 ("저장했다"에서 멈추지 않는다)

第 4 阶段——调度(不要停在“已保存”)

프롬프트를 저장한 직후, 즉시
Skill
도구로
schedule
스킬을 호출한다.
"저장했습니다"에서 멈추지 않는다. 대상자에게 직접
/schedule create
를 하라고 넘기지 않는다.
保存 prompt 后,立即使用
Skill
工具调用
schedule
skill。
不要停在“已保存”。不要让目标用户自行执行
/schedule create
。

캐던스 → cron 매핑

Cadence → cron 映射

캐던스cron
하루 2회(09:00/21:00)
0 9,21 * * *
몇 시간마다(4시간)
0 */4 * * *
하루 1회
0 9 * * *
(다른 시각을 원하면 물어본다)
직접 입력사용자가 입력한 값 그대로
CadenceCron
每天 2 次(09:00/21:00)
0 9,21 * * *
每隔几小时(4 小时)
0 */4 * * *
每天 1 次
0 9 * * *
(如果需要其他时间,则询问用户)
直接输入原样使用用户输入的值

트리거 페이로드

触发器 Payload

  • cron 표현식 — 위 표에서.
  • 작업 디렉터리 — 대상자의 볼트 루트(
    {{VAULT_ROOT}}
    ). 오퍼레이터는 반드시 이 볼트 안에서 돌아야 파일 경로가 맞는다.
  • 프롬프트 —
    "오퍼레이터를 실행하라. {{VAULT_ROOT}}{{OPERATOR_BASE_PATH}}operator-prompt.md를 읽고 그대로 정확히 실행하라. 한 번의 실행 = 하나의 리포트. 끝나면 멈춘다."
  • 트리거 이름 —
    {{OPERATOR_HANDLE}}-{{CADENCE_TAG}}
    (슬러그화, 예:
    vault-operator-kr-daily2x
    ).
  • 설명 —
    "{{OPERATOR_NAME}} — {{CADENCE_HUMAN}}"
    .
schedule
스킬이 타임존 확인, cron 재확인 등 자체 확인 절차를 진행하게 둔다. 그 스킬이 설치돼 있지 않으면, 정확한 cron 표현식과 붙여넣을 프롬프트를 텍스트로 안내한다. 트리거가 실제로 걸리지 않았는데 걸린 것처럼 말하지 않는다.
  • Cron 表达式——使用上表中的值。
  • 工作目录——目标用户的 vault 根目录(
    {{VAULT_ROOT}}
    )。Operator 必须始终在此 vault 中运行,才能使用正确的文件路径。
  • Prompt——“运行 Operator。读取
    {{VAULT_ROOT}}{{OPERATOR_BASE_PATH}}operator-prompt.md
    ,并严格按原样执行。一次执行 = 一份报告。完成后停止。”
  • 触发器名称——
    {{OPERATOR_HANDLE}}-{{CADENCE_TAG}}
    (slug 化,例如
    vault-operator-kr-daily2x
    )。
  • 描述——“
    {{OPERATOR_NAME}}
    —
    {{CADENCE_HUMAN}}
    ”。
由
schedule
skill 自行执行时区确认、cron 复核等检查流程。如果该 skill 尚未安装,则以文本形式提供准确的 cron 表达式和可供粘贴的 prompt。如果触发器实际上没有设置成功,绝不能声称其已经设置成功。

마무리 안내

结束提示

한 짧은 문단으로 알린다:
오퍼레이터 프롬프트를
{{OPERATOR_BASE_PATH}}operator-prompt.md
에 저장했고, {{CADENCE_HUMAN}}(cron
{cron}
)으로 스케줄을 걸었습니다. 다음 tick에 첫 실행이 돌아갑니다.
/schedule list
나
/schedule update
로 언제든 관리할 수 있습니다.
멈춘다. 다른 후속 제안을 하지 않는다.

用一段简短文字告知用户:
已将 Operator prompt 保存到
{{OPERATOR_BASE_PATH}}operator-prompt.md
,并按 {{CADENCE_HUMAN}}(cron
{cron}
)设置了 schedule。下一次 tick 将运行首次执行。 可以随时使用
/schedule list
或
/schedule update
管理。
然后停止,不提供其他后续建议。

이 빌더 스킬의 하드 룰

此 Builder skill 的硬规则

  • 발견이 먼저다.
    Context/
    와
    CLAUDE.md
    를 읽기 전에는 아무것도 묻지 않는다. 볼트가 이미 담고 있는 값은 절대 다시 묻지 않는다.
  • 볼트 콘텐츠는 로컬 우선. 커넥터 프로브를 제외한 모든 볼트 읽기/쓰기는
    Glob
    ,
    Read
    ,
    Write
    로 로컬 파일시스템에 대해 한다.
  • 묻지 말고 프로브한다. Q2(커넥터)에서 "Slack 있어요?"라고 절대 묻지 않는다. 감지한다.
  • 항상 스케줄링으로 마무리한다. Phase 4는 필수다. 저장 → 같은 실행 안에서
    schedule
    스킬 호출까지.
  • CLAUDE.md
    를 절대 수정하지 않는다.
    그 파일은 런타임에 오퍼레이터가 참조만 한다.
  • 비활성 커넥터는 완전히 지운다. Slack과 Notion만 켰다면 Gmail, Google Drive, Firecrawl은 렌더링된 프롬프트 어디에도 등장하면 안 된다.
  • 폴더 인덱스 스윕은 항상 켠다. 6.5 폴더 인덱스 스윕은 커넥터와 무관한 코어 기능이다. 커넥터 구성이 어떻든 렌더된 프롬프트에서 이 단계를 제거하지 않는다.
  • 렌더링 후
    {{
    잔존 여부를 한 번 검사한다.
    저장 전에 미치환 placeholder를 잡아낸다.
  • 기본값을 기본으로. 대상자가 "Light 예산"을 골랐으면 개별 예산 필드를 하나하나 캐묻지 않는다.
  • 대상자 본인의 정보로만 채운다. Michael이나 다른 특정 인물의 이름, Slack ID, 이메일, 볼트 경로가 새로 생성되는 프롬프트에 절대 섞여 들어가지 않는다. 예시 파일(example-filled-michael.md) 은 참고용일 뿐 값의 출처가 아니다.
  • 发现优先。 在读取
    Context/
    和
    CLAUDE.md
    之前不要提出任何问题。绝不能再次询问 vault 已经包含的值。
  • vault 内容本地优先。 除 connector probe 外,所有 vault 读取和写入操作都通过
    Glob
    、
    Read
    和
    Write
    在本地文件系统上完成。
  • 不要询问,而是 probe。 在 Q2(connector)中绝不能直接询问“是否使用 Slack?”,必须先检测。
  • 始终以调度结束。 第 4 阶段是必需步骤:保存 → 在同一次执行中调用
    schedule
    skill。
  • 绝不修改
    CLAUDE.md
    。
    该文件只在运行时由 Operator 引用。
  • 完全删除未启用的 connector。 如果只启用 Slack 和 Notion,那么渲染后的 prompt 中任何位置都不得出现 Gmail、Google Drive 或 Firecrawl。
  • 始终启用文件夹索引 sweep。 6.5 文件夹索引 sweep 是与 connector 无关的核心功能。无论 connector 如何配置,都不能从渲染后的 prompt 中删除此阶段。
  • 渲染后检查一次是否存在
    {{
    残留。
    保存前捕获所有未替换的 placeholder。
  • 默认值就是默认值。 如果目标用户选择了“Light 预算”,则不要逐个追问各项预算字段。
  • 只能使用目标用户本人的信息。 创建新 prompt 时,绝不能混入 Michael 或其他特定人员的名称、Slack ID、邮箱或 vault 路径。示例文件 example-filled-michael.md 仅供参考,不能作为数据来源。