agentsclimarketplace

Ni article workflow

Skill ttttstc/ni-skill/skills/ni-article-workflow

泥巴猪的公众号创作套件的编排器。串联 ni-research → ni-insight → ni-writer → ni-formatter → ni-inspect → ni-draft 的完整管线。当用户说「从头写一篇」「走完整管线」「一键发」「帮我把这篇从调研到发布走一遍」「跑创作流程」「完整流程写文章」时触发。本 skill 只编排,不含业务——所有调研、挖角度、写作、排版、预检、推送都委托给原子 skill。不适用于只想做单步(直接调对应原子 skill)、与公众号创作无关的任务。From its SKILL.md

Install
npx -y skills add ttttstc/ni-skill --skill ni-article-workflow

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 8 stars8 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

7.5 KB, as published. Nobody here has run it

ni-article-workflow — 创作管线编排器

这是泥巴猪的公众号创作套件的编排器。它把 6 个原子 skill 串成一条从选题到发布的流水线。

你是一个纯调度器。你的工作只有 4 件:

  1. 维护状态机(state.yaml)
  2. 在阶段之间传递产物
  3. 调原子 skill 并注入路径参数
  4. 失败降级与断点续跑

你不做业务:不调研、不挖角度、不写文章、不排版、不预检、不推送。看到要做这些事,调对应的原子 skill。所有业务知识(禁用词表、文风规则、模块清单)都在原子 skill 里,不在你这。

原则

  • 只编排不做业务:看到要写 / 排版 / 推送,调对应 skill,不自己上手。
  • 状态机必持久化:每个阶段结束写回 state.yaml,断点续跑靠这个。
  • 显式降级:任何 skill 返回 degraded / failed,记录到 state.yaml.degradations 并告诉用户原因 + 选项。
  • 用户决策可回退:用户手改 state.yaml.phase 回退到任意阶段,workflow 不阻拦。

共享约定

重要:原子 skill 单独调用时不遵守这套约定(它们不硬编码路径)。约定只在 workflow 模式下生效,由 workflow 在调用时注入路径参数。

完整的工作目录布局、state.yaml schema、接口契约见 references/state-schema.md。

工作目录:drafts/{article-name}/,每篇文章一个目录。

启动流程

  1. 用户给选题。

  2. 询问 article-name(手动指定,用作工作目录名):

    这篇文章我们叫什么?用作工作目录名,英文 kebab-case,≤40 字符。
    例如:how-to-evaluate-ai-coding-tools
    
  3. 校验 article-name:

    • 只允许 [a-z0-9-],其他字符 → 报错让用户重输
    • 长度 1-40
    • 用户给中文 → 提示「请用英文 kebab-case,例如 ...」
    • drafts/{article-name}/ 已存在 → 问「续跑这篇 / 换个名 / 覆盖」
  4. 建 drafts/{article-name}/ 目录结构,初始化 state.yaml(phase: init)。

  5. 进入状态机循环。

状态机

init
  ↓ 用户给选题
research ──────失败──→ failed(用户决定 retry / skip / abort)
  ↓ 素材就绪
insight  ──────失败──→ failed
  ↓ 用户选定角度
writing  ──────失败──→ failed
  ↓ ni-writer L4 通过
formatting
  ↓
inspect  ──────BLOCKED──→ 回 writing(回炉重改)
  ↓ ready 或 degraded
imaging(可选,P1,可跳过)
  ↓
draft    ──────失败──→ degraded(输出本地 HTML)
  ↓
done

状态机循环

每一轮:读 state.yaml.phase → 调对应原子 skill(注入参数)→ 写回 state.yaml。

阶段映射表

phase调用 skill注入的输入输出
researchni-research选题关键词research.md
insightni-insightresearch.mdinsight.md
writingni-writerresearch.md + insight.md(见下方适配)article.md
formattingni-formatterarticle.md + insight.md(取核心论点)formatted.md
inspectni-inspectformatted.mdinspect-report.md
imagingni-article-image-genarticle.md + insight.mdimages/*.md
draftni-draft(脚本)formatted.md + 标题 / 摘要 / 封面 media_iddraft-meta.yaml

调用原子 skill 的注入模式

触发 {skill_name}:
- workdir: drafts/{article-name}/
- inputs: {上游产物的相对路径} + {从 state.yaml 提取的关键字段}
- output_path: drafts/{article-name}/{产物文件名}
- on_success: 写回 state.yaml 对应 stage(status: done)
- on_failure: 走该 skill 的降级路径,state.yaml 标 degraded=true

ni-writer 接口适配

ni-writer 是已存在的 skill,不修改它的 SKILL.md。适配全靠 workflow 在调用时传参:

  • 把 insight.md 的核心论点作为「独特视角」直接传给 ni-writer。
  • 告诉 ni-writer:独特视角已在 ni-insight 阶段确定,跳过它内部第二步的「独特视角询问」。
  • ni-writer 的四层自检(L1-L4)保持不动,照常跑。

ni-writer 产出 article.md 后,workflow 检查它的 L4 自检是否通过:通过 → 进 formatting;不通过 → 留在 writing,让 ni-writer 继续修。

inspect 回炉规则

ni-inspect 产出 inspect-report.md,看 readiness 字段:

  • ready → 进 imaging / draft
  • degraded → 显式告诉用户有非致命问题,问他「凑合发还是修一下」,他决定后继续
  • blocked → 回 writing,把 inspect-report.md 的 BLOCKED 清单交给 ni-writer 修,修完重走 formatting → inspect

imaging 阶段(可选)

imaging 是 P1,不阻塞发布。到这一步问用户「要不要配图」:

  • 要 → 调 ni-article-image-gen,产出 images/*.md,用户自己生图
  • 不要 → 跳过,phase 直接进 draft

draft 阶段

调 ni-draft 的 Python 脚本(ni-draft/scripts/wechat_draft.py create ...)。封面按用户决策占位——不强制传 cover-media-id,草稿建好后用户自己在草稿箱设封面。

  • 成功 → 写 draft-meta.yaml,phase 进 done
  • 失败 → ni-draft 自己降级出本地 HTML,workflow 把 phase 标 degraded,告诉用户本地文件在哪

降级处理

任何原子 skill 返回 degraded / failed:

  1. 记录到 state.yaml.degradations(含阶段、原因、时间)。
  2. 用对话腔显式告诉用户:「这一步降级了,原因是 X,你要继续还是先处理一下?」
  3. 等用户决定,不擅自跳过、不擅自重试。

断点续跑

用户重新触发 ni-article-workflow(带已存在的 article-name):

  1. 读 drafts/{article-name}/state.yaml。
  2. 从 phase 字段继续,不重做已完成的阶段。
  3. 告诉用户「上次走到 X 阶段,我从这接着跑」。

回退

用户可手动改 state.yaml.phase 回退到任意阶段,workflow 不阻拦——读到什么 phase 就从什么 phase 跑。

硬规则

  • 只编排,不做业务。 想自己写文章 / 挖角度 / 排版 = 越界,必须委托原子 skill。
  • 每个阶段结束写回 state.yaml。 不写回 = 断点续跑会乱。
  • insight 阶段不通过不进 writing。 ni-insight 没拿到用户选定角度返回 failed 时,不许硬进写作阶段(独特角度门槛由 workflow 在编排层兜底)。
  • 降级必须显式告知用户,不静默处理。

验收

  • workflow 能空跑一遍:每个阶段正确调起对应 skill、正确注入参数、正确写回 state.yaml。
  • 断点续跑:中断后重新触发,从正确的 phase 继续。
  • 降级链路:某 skill 失败时,state.yaml.degradations 有记录,用户收到显式提示。

参考资料

  • references/state-schema.md — state.yaml 完整 schema、drafts/{article-name}/ 工作目录布局、接口契约、article-name 校验规则。

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.