hyb-oa-delivery-trellis-only 移除项目交付 Skill 并统一 Trellis-only 治理
这个提交包含在:
@@ -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));
|
||||
|
||||
在新工单中引用
屏蔽一个用户