hyb-oa-delivery-trellis-only 移除项目交付 Skill 并统一 Trellis-only 治理
这个提交包含在:
@@ -39,7 +39,8 @@ const requiredCorePaths = [
|
||||
'docs/产品设计规则.md',
|
||||
'docs/产品口径.md',
|
||||
'AGENTS.md',
|
||||
'.agents/skills/hyb-oa-delivery/SKILL.md',
|
||||
'.trellis/workflow.md',
|
||||
'.trellis/spec/hyb-oa/index.md',
|
||||
];
|
||||
|
||||
function printHelp() {
|
||||
|
||||
@@ -440,7 +440,8 @@ export function evaluateBaseline({ root = repoRoot } = {}) {
|
||||
"docs/企微API能力目录.md",
|
||||
"docs/文档索引.md",
|
||||
"docs/文档事实源状态矩阵.md",
|
||||
".agents/skills/hyb-oa-delivery/SKILL.md",
|
||||
".trellis/workflow.md",
|
||||
".trellis/spec/hyb-oa/project-governance.md",
|
||||
WAPC2F_ISSUE,
|
||||
];
|
||||
|
||||
|
||||
@@ -19,10 +19,12 @@ const requiredSpecs = [
|
||||
];
|
||||
|
||||
const requiredDocMentions = [
|
||||
"AGENTS.md",
|
||||
"docs/Agent开发交付实践.md",
|
||||
"docs/文档索引.md",
|
||||
"docs/文档事实源状态矩阵.md",
|
||||
".agents/skills/hyb-oa-delivery/SKILL.md",
|
||||
".trellis/workflow.md",
|
||||
".trellis/spec/hyb-oa/index.md",
|
||||
];
|
||||
|
||||
const validTaskStatuses = new Set(["planning", "in_progress", "review", "completed"]);
|
||||
@@ -242,6 +244,31 @@ function checkDocsRegistration(result) {
|
||||
if (result.status === "PASS") pass(result, "docs_registration", `${requiredDocMentions.length} fact sources mention Trellis`);
|
||||
}
|
||||
|
||||
function checkRemovedProjectSkillReferences(result) {
|
||||
const removedSkill = ["hyb", "oa", "delivery"].join("-");
|
||||
const removedSkillPath = [".agents", "skills", removedSkill, "SKILL.md"].join("/");
|
||||
const removedSkillDir = [".agents", "skills", removedSkill].join("/");
|
||||
const legacyPriorityText = ["项目", "Skill 优先"].join(" ");
|
||||
const files = [
|
||||
"AGENTS.md",
|
||||
"docs/Agent开发交付实践.md",
|
||||
"docs/文档索引.md",
|
||||
"docs/文档事实源状态矩阵.md",
|
||||
"scripts/qa/audit-docs.mjs",
|
||||
"scripts/qa/check-process-contract.mjs",
|
||||
];
|
||||
|
||||
for (const file of files) {
|
||||
if (!exists(file)) continue;
|
||||
const text = readText(file);
|
||||
const staleTerms = [removedSkill, removedSkillPath, removedSkillDir, legacyPriorityText].filter((term) => text.includes(term));
|
||||
if (staleTerms.length > 0) {
|
||||
fail(result, "removed_project_skill.reference", `${file} still references removed project delivery skill`);
|
||||
}
|
||||
}
|
||||
if (result.status === "PASS") pass(result, "removed_project_skill", "current governance files are Trellis-only");
|
||||
}
|
||||
|
||||
function checkSensitiveData(result) {
|
||||
const scanFiles = [
|
||||
"AGENTS.md",
|
||||
@@ -270,6 +297,7 @@ try {
|
||||
checkCoreFiles(result);
|
||||
checkTaskContracts(result);
|
||||
checkDocsRegistration(result);
|
||||
checkRemovedProjectSkillReferences(result);
|
||||
checkSensitiveData(result);
|
||||
} catch (error) {
|
||||
fail(result, "exception", error instanceof Error ? error.message : String(error));
|
||||
|
||||
在新工单中引用
屏蔽一个用户