大模型应用
提交 Flows 应用认证前的最终校验与提交(检查…
在把 Flows 应用提交外部认证前,校验前三步产物(App-Brief、代码评审、设计评审)是否齐全达标,然后运行 CLI 打包并预填提交表单。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
提交 Flows 应用认证前的最终校验与特定
解决思路
- 先向用户打印前置检查清单:1) 仓库根目录存在 App-Brief.md 且所有必填 frontmatter 字段已填写;2) 最新的 reviews/code-review/feedback-round-<N>/code-review-report.md 已提交到 git 且报告 Must Fix open: 0;3) 最新的 reviews/design-review/feedback-round-<N>/design-review-report.md 已提交到 git 且 Average score ≥ 3.8;4) 认证产物已提交(apps submit 使用 git archive HEAD,会静默排除未提交文件);5) .cognite-bundles/ 中存在不早于 HEAD 的部署包。
- Step 0 空中通道预检:用 git ls-files 探测代码评审与设计评审报告是否存在(git ls-files 'reviews/code-review/' | grep -q 'code-review-report.md' 等)。若两份报告都在则跳到 Step 1;若 App-Brief.md 缺失则继续到 Step 1 让其按标准报错(空中通道不覆盖 App-Brief);若任一评审缺失,用 AskQuestion 提供三个选项:运行真实评审(退出并提示先跑 flows-code-review / flows-design-review,各约 20 分钟,推荐首次提交使用)、快速提交(写 SKIPPED 桩报告)、取消。
- 若用户选择快速提交:为每个缺失的评审按技能末尾的桩模板写入 reviews/code-review/feedback-round-0/code-review-report.md 和 reviews/design-review/feedback-round-0/design-review-report.md(round 0 是刻意的,真实评审从 feedback-round-1 开始,之后 sort -V | tail -1 会自动取更高轮次覆盖桩)。写完后提示用户执行 git add App-Brief.md reviews/ 与 git commit -m 'chore: certification artifacts (reviews skipped)',然后退出,让用户提交后重新运行本技能。
- Step 1 校验 App-Brief.md:运行 test -f App-Brief.md,缺失则报错提示先运行 flows-app-brief。解析文件顶部第一个 --- 与下一个 --- 之间的 YAML frontmatter,必填且非空的键:appName、customer、tier、owner、userRole、currentProblem、oneSentenceStory、successCriteria、userEvidence;任一缺失或为空则列出缺失字段并提示重新运行 flows-app-brief。可选字段(不阻塞):userCount、businessValue、milestones、repoUrl。
- Step 2 校验代码评审:用 git ls-files 'reviews/code-review/' | grep 'code-review-report.md' | sort -V | tail -1 找到最新已提交轮次报告,无结果则提示先运行 flows-code-review 并提交产物。解析该报告的 Summary 块:若含 ^- Status: SKIPPED$ 则标记为 SKIPPED(非 PASS 非 FAIL)并跳过数值检查;否则必须含 ^- Must Fix open: (\d+)$,为 0 则通过,否则提示仍有未解决 Must Fix 项,需重跑 flows-code-review 直到 Must Fix open: 0;若两者都不存在则提示报告缺少 Summary 块,需重跑 flows-code-review。
- Step 3 校验设计评审:用 git ls-files 'reviews/design-review/' | grep 'design-review-report.md' | sort -V | tail -1 找到最新已提交轮次报告,无结果则提示先运行 flows-design-review 并提交产物。解析 Summary 块:若含 ^- Status: SKIPPED$ 则标记为 SKIPPED 并跳过数值检查;否则必须含 ^- Average score: (\d+(?:\.\d+)?)$,数值 ≥ 3.8 则通过,否则提示低于发布阈值 3.8,需处理 Must Fix 与 Should Fix 项并在新反馈轮次重跑 flows-design-review。
- Step 4 校验认证产物已提交:apps submit 使用 git archive HEAD,未提交文件会被静默排除。用 git ls-files --error-unmatch 分别检查 App-Brief.md、最新代码评审报告路径、最新设计评审报告路径是否被跟踪。任一未提交则 BLOCK,提示这些认证文件未提交、会被静默遗漏,需执行 git add <missing files> 与 git commit -m 'chore: add certification artifacts' 后重跑本技能。若认证产物都已提交但工作区还有其他未提交改动则 WARN(不阻塞),提示这些改动不会出现在提交的源码归档中,若应属于认证需先提交。
- Step 5 校验部署包:用 ls .cognite-bundles/*.zip 2>/dev/null | head -1 检查。无部署包则 WARN(不阻塞),提示先运行 npx @cognite/cli apps deploy,使提交的源码归档与部署包来自同一份代码。若存在部署包,比较其 mtime 与 git log -1 --format=%ct HEAD:若早于 HEAD 则 WARN(不阻塞),提示部署包早于当前 HEAD,评审人会对比部署包与提交源码,若上次部署后有新提交会不匹配,需在提交前重跑 npx @cognite/cli apps deploy(仅 npm run build 不会刷新部署包,只有 apps deploy 会)。
- Step 6 打印通过/失败表格,包含五行:App-Brief.md complete(PASS/FAIL — 原因)、Code review Must Fix open: 0(PASS/FAIL/SKIPPED — 原因)、Design review average ≥ 3.8(PASS/FAIL/SKIPPED — 原因)、Certification artifacts committed(PASS/FAIL — 原因)、Deploy bundle present and current(PASS/WARN — 原因)。SKIPPED 仅适用于代码与设计评审行,且仅当 Step 0 空中通道写了桩时,渲染时注明 SKIPPED — user opted out via Step 0 air-hatch。若有任何 FAIL 则在此停止,不运行 CLI,并打印用户应运行的确切下一步技能;SKIPPED 行不阻塞,会进入 Step 7 并附加显式确认。
- Step 7 确认并提交:若有任何检查为 SKIPPED,在确认提示前加显式警告:以下评审为 SKIPPED:<列表>,Cognite 认证评审人会在提交报告中看到 SKIPPED 状态并在批准前要求真实评审,是否仍继续提交?否则(全部 PASS、警告可接受)使用标准确认提示:所有认证检查已通过,现在运行 npx @cognite/cli apps submit 吗?这会打包仓库并预填 Zendesk 提交表单。用户确认 yes 后运行 npx @cognite/cli@latest apps submit 并把输出流式展示给用户。
- Step 8 提交后交接:由于本技能通过 Bash 调用 apps submit,CLI 以非交互方式运行(process.stdout.isTTY === false),会跳过自动打开浏览器/文件管理器步骤,但仍打印文件列表、录屏提示和 Zendesk URL,用户需手动处理。CLI 结束后提示用户:1) 打开 CLI 输出中的 Zendesk URL(该 URL 需要在 support.cognite.com 登录,没有账号则先注册再访问);2) 在文件管理器中打开 dist/submit/ 并放入认证用户旅程的简短录屏;3) 把 dist/submit/ 中的每个文件(源码归档、部署包、录屏)附加到 Zendesk 工单;4) 若分支领先 origin 则推送提交。然后运行 git status --short --branch,若分支领先 origin 则在第 4 步下显式展示 ahead/behind 数量。
- 桩模板(Step 0 空中通道使用):代码评审桩写入 reviews/code-review/feedback-round-0/code-review-report.md,内容为标题 Code Review Report — Round 0、Status: SKIPPED — user opted out of flows-code-review at submit time、说明评审人会看到 SKIPPED 并要求真实运行、Summary 块含 Status: SKIPPED、Must Fix open: 0、Should Fix open: 0、Nit open: 0。设计评审桩写入 reviews/design-review/feedback-round-0/design-review-report.md,内容为标题 Design Review Report — Round 0、Status: SKIPPED — user opted out of flows-design-review walkthrough at submit time、说明评审人会看到 SKIPPED 并要求真实走查、Summary 块含 Status: SKIPPED、Average score: N/A。写入前若父目录不存在需先创建。
适用边界 · 注意事项
- 尚未完成 flows-app-brief、flows-code-review、flows-design-review 三步产物且不愿使用 SKIPPED 桩时,不应提交。
- App-Brief.md 缺失或必填字段不全时不能提交(空中通道不覆盖 App-Brief)。
- 代码评审仍有 Must Fix 未解决或设计评审平均分低于 3.8 时不能提交。