ワンクリックで
lina-openspec-archive-changes
扫描并归档 LinaPro 仓库中已经完成的所有 OpenSpec 活跃变更;若任务已全部完成但存在可判定的归档异常,先自动修复并复验,再继续归档。 必须用户手动触发,禁止自动触发该技能。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
扫描并归档 LinaPro 仓库中已经完成的所有 OpenSpec 活跃变更;若任务已全部完成但存在可判定的归档异常,先自动修复并复验,再继续归档。 必须用户手动触发,禁止自动触发该技能。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
手动触发:为 LinaPro 主仓库及 apps/lina-plugins 子模块完成提交、PR 前 rebase、推送、创建 PR, 并在 PR 合并后恢复原始分支和同步 main。禁止自动触发。
审查 LinaPro 社区 GitHub Issues,并按项目规范和源码实现分类处理。 必须用户手动触发,禁止自动触发该技能。
只同步当前 git 工作区中有变化的 apps/lina-site/docs/ 中文 Markdown 文档到 apps/lina-site/i18n/en/docusaurus-plugin-content-docs/current/。 需要手动调用该技能,禁止自动调用。
检测 apps/lina-site/docs/ 中文主稿与 apps/lina-site/i18n/en/docusaurus-plugin-content-docs/current/ 英文翻译之间的缺漏和内容差异,并进行补全修复。当 docs/ 中新增或更新了文档、或需要全量同步审查时使用。 需要手动调用该技能,禁止自动调用。
用于处理用户对已有实现的反馈分诊与执行闭环:先判断是否需要纳入 OpenSpec 活跃变更或新建变更,再完成根因分析、实现、验证和必要测试。凡是用户针对已有实现反馈 Bug、缺陷、改进点、建议或实现遗漏,即使没有明确提到“反馈”或 OpenSpec,也必须使用本技能。
用于审查 LinaPro OpenSpec 工作流中的代码变更和规范合规性。在完成 /opsx:apply 任务、 完成 lina-feedback 反馈修复、执行 /opsx:archive 归档前必须使用;在用户要求代码审查、 规范合规检查,或明确调用 /lina-review 时也必须使用。
| name | lina-openspec-archive-changes |
| description | 扫描并归档 LinaPro 仓库中已经完成的所有 OpenSpec 活跃变更;若任务已全部完成但存在可判定的归档异常,先自动修复并复验,再继续归档。 必须用户手动触发,禁止自动触发该技能。 |
| compatibility | 依赖 OpenSpec CLI,要求在 LinaPro 仓库根目录执行。 |
扫描 openspec/changes/ 根目录下的活跃 OpenSpec 变更,将已经完成的变更执行归档,并清晰展示本次处理结果。
该技能需要手动调用触发。
openspec/changes/ 根目录下的一级子目录,并明确排除 openspec/changes/archive/。in-progress、状态无法读取且不能通过可判定异常修复恢复、任务文件无法安全判定或归档命令失败,就不要移动该变更目录。--no-validate 绕过校验。git status --short,了解是否已有用户改动。不要还原、整理或修改与归档无关的文件。openspec archive 前,必须先完成全部候选变更的完成态、任务清单、增量规范 header 匹配和插件规范目录预检。若任务已全部完成但存在可机械判定的异常,先自动修复、复验,再放入可归档列表;不可安全修复的只跳过该变更并记录原因,不阻塞其他已完成变更继续归档。apps/lina-plugins/<plugin-id>/下开发的具体业务插件能力时,归档前必须确认该变更的specs/能力目录以<plugin-id>开头;若能唯一识别插件 ID 和目标目录,应自动重命名修复,避免归档后把插件规范写入主框架通用能力目录。--no-validate 或手动移动目录绕过。“插件相关内容”指用户在apps/lina-plugins/<plugin-id>/下开发的具体业务插件功能及其 OpenSpec 规范,例如john-content-cms插件提供的 CMS 功能。不包括apps/lina-core中的插件宿主框架、插件生命周期、插件治理、pluginbridge、host service 或源码/动态插件运行时等主框架通用能力。
归档预检时必须按以下规则处理插件相关内容:
proposal.md、design.md、tasks.md、增量规范正文、涉及路径或plugin.yaml中的插件id识别<plugin-id>。openspec/changes/<change-name>/specs/<capability>/目录必须以<plugin-id>开头。允许直接使用<plugin-id>作为插件根能力目录,也允许使用<plugin-id>-<capability>承载插件内更细的能力;禁止使用cms、article-management、settings这类不带插件前缀的通用目录名。<plugin-id>前缀;不得把多个插件的业务规范合并进同一个无插件前缀的能力目录。openspec/specs/的插件规范目录必须仍然以<plugin-id>开头,例如openspec/specs/john-content-cms/spec.md或openspec/specs/john-content-cms-article/spec.md。plugin-framework、plugin-governance或plugin-host-service-extension,不要强行加某个业务插件 ID。<plugin-id>、当前specs/<capability>/不含插件前缀、目标目录不存在或可确认属于同一变更,则自动将目录重命名为specs/<plugin-id>-<capability>/或specs/<plugin-id>/,再重新检查 header 目标和 OpenSpec 校验。插件规范目录缺少插件前缀且无法安全自动修复:<capability>;只跳过该变更,不停止其他变更归档。一个变更只有在以下条件全部成立时,才视为可自动归档:
openspec/changes/<change-name>/,且 <change-name> 不是 archive。openspec status --change "<change-name>" --json 在自动修复后能正常执行。openspec status 返回的所有 artifact 都处于完成状态。常见完成值包括 done、complete、completed;若返回结构不包含 artifact 明细,则使用 openspec list --json 中该变更的 status 字段辅助判断,只有 complete、completed、done 视为完成。若状态异常仅由可修复的增量规范问题导致,应先修复再复验,而不是直接阻塞全局归档。tasks.md 中不存在未完成任务标记:
- [ ]- [未完成](若项目中出现中文任务标记)openspec list --json 提供 completedTasks 和 totalTasks,优先要求二者相等;若二者不等但tasks.md逐项扫描确认无未完成任务,记录CLI 任务统计与 tasks.md 不一致,并在该变更通过严格校验后继续归档。MODIFIED 和 REMOVED requirement header 必须能在当前 openspec/specs/<capability>/spec.md 中找到。缺失时进入自动修复流程;修复后仍缺失时说明 OpenSpec header 不匹配且无法安全自动修复:<capability>/<requirement>,并跳过该变更。specs/<capability>/目录必须满足“插件相关 OpenSpec 命名要求”,确保归档目标为openspec/specs/<plugin-id>.../而不是主框架通用目录。缺少插件前缀时优先按本技能的自动修复规则处理。如果 tasks.md 不存在,应将该变更标记为“无法判定任务完成情况”,并跳过自动归档。LinaPro 的 OpenSpec 变更应维护任务清单,缺失任务文件不适合自动处理。
在仓库根目录执行:
pwd
test -d openspec/changes
openspec --version
git status --short
若 openspec 不可用、当前目录不是仓库根目录,或 openspec/changes 不存在,停止执行并说明原因。
优先使用 OpenSpec CLI 获取状态摘要:
openspec list --json
同时用文件系统扫描作为兜底,确保不会漏掉 CLI 未列出的活跃目录:
find openspec/changes -mindepth 1 -maxdepth 1 -type d ! -name archive -exec basename {} \; | sort
合并两边得到的变更名,去重后按字母序处理。不要扫描 openspec/changes/archive/ 内部目录。
对每个候选变更执行:
openspec status --change "<change-name>" --json
并读取:
openspec/changes/<change-name>/tasks.md
记录以下信息:
changeName:变更名listStatus:openspec list --json 中的状态(如有)statusArtifacts:openspec status --json 中 artifact 的完成情况(如有)completedTasks / totalTasks:任务统计(如 CLI 提供)uncheckedTasks:从 tasks.md 扫描到的未完成任务数量pluginIds:识别到的业务插件 ID 列表(如有)pluginSpecNaming:插件相关specs/目录是否满足<plugin-id>前缀要求repairableAnomalies:任务已完成但可尝试自动修复的异常列表repairActions:已执行的自动修复动作和涉及文件postRepairValidation:修复后的校验、状态检查结果skipReason:若不可归档,记录明确原因推荐记录写法:
任务未完成:79/113tasks.md 中仍有 34 个未完成任务OpenSpec 状态未完成:in-progressOpenSpec 状态读取失败缺少 tasks.md,无法自动判定任务完成情况artifact 未完成:proposal, design插件规范目录缺少插件前缀:cms 应以 john-content-cms 开头已自动修复插件规范目录:cms → john-content-cms-cms已自动修复 OpenSpec header:article-management/文章管理 MODIFIED → ADDEDCLI 任务统计与 tasks.md 不一致,已按 tasks.md 复验继续归档OpenSpec header 不匹配且无法安全自动修复:<capability>/<requirement>归档失败:<错误摘要>执行任何归档命令前,必须先检查全部候选变更,并形成以下列表:
ready:已完成且无需修复的变更。repair-required:tasks.md已全部完成,但存在可机械判定异常的变更。skipped:任务未完成、无法判定完成态或异常无法安全修复的变更。预检内容包括:
openspec status --change "<change-name>" --json 能读取且所有 artifact 完成。tasks.md 存在且未包含未完成任务标记。openspec list --json 的 completedTasks 与 totalTasks 一致(如 CLI 提供)。specs/**/spec.md 中所有 MODIFIED/REMOVED requirement header 都存在于当前主规范对应 capability 的 openspec/specs/<capability>/spec.md。specs/<capability>/目录均以对应<plugin-id>开头;检查MODIFIED/REMOVED header 时也只能使用带插件前缀的openspec/specs/<capability>/spec.md作为目标,不得用历史遗留的无前缀插件目录放行。当tasks.md已全部完成但预检失败时,按以下顺序自动修复可判定异常:
specs/<capability>/重命名为specs/<plugin-id>-<capability>/;若<capability>已经等于插件根能力语义,也可以重命名为specs/<plugin-id>/。修复后重新按新 capability 检查 header。MODIFIED header 找不到基线 requirement:先检查是否是 capability 重命名、大小写、空格或标点导致的精确匹配问题;能确定目标 requirement 时,修正增量规范中的 capability 或 header 文本。若目标规范中确实不存在该 requirement,且该变更块表达的是新增能力、当前目标规范不存在同名 requirement,则将该块从 MODIFIED 调整为 ADDED。REMOVED header 找不到基线 requirement:若目标规范已经不存在该 requirement,且删除块没有迁移说明以外的有效新增语义,将该 REMOVED 块视为已完成的空操作并移除;若无法判断是否误删或目标 capability 错误,则跳过该变更。tasks.md不一致:当tasks.md扫描确认无未完成任务,且该变更严格校验通过时,记录差异并继续归档,不因 CLI 统计差异阻塞。自动修复必须满足以下安全条件:
tasks.md来伪造完成态,不把未完成任务改成完成。MODIFIED转ADDED或无效REMOVED空操作清理这类可解释修复。每个修复后的变更必须运行:
openspec validate "<change-name>" --strict
openspec status --change "<change-name>" --json
只有复验通过且完成态仍成立的变更才能进入归档列表。某个已完成变更修复失败时,只将该变更放入skipped并报告原因;除非出现 OpenSpec CLI 缺失、仓库根目录错误、openspec/changes缺失或全局命令无法执行这类环境级问题,否则不得停止其他已完成变更归档。
仅对通过完成判定和修复后复验的变更执行:
openspec archive -y "<change-name>"
说明:
-y 跳过交互确认,因为本技能已经完成自动检查。--no-validate。--skip-specs。只有当 OpenSpec CLI 明确提示该变更不需要同步 specs,或用户事先要求跳过 specs 时,才可以使用 --skip-specs。openspec/changes/<change-name>/,并记录归档路径。常见归档路径为 openspec/changes/archive/YYYY-MM-DD-<change-name>/。如果归档命令失败,记录为未归档,并保留错误摘要;不要手动 mv 目录来绕过 OpenSpec CLI。单个变更归档失败不应阻塞后续已通过预检和复验的变更继续归档,除非失败原因表明 OpenSpec CLI 或仓库状态整体不可用。
执行完成后,用中文输出结构化结果。必须包含:
推荐格式:
**自动归档结果**
扫描到 3 个活跃变更,自动修复 1 个,成功归档 2 个,跳过 1 个。
自动修复:
- `change-a`:`specs/cms/` → `specs/john-content-cms-cms/`,复验通过
成功归档:
- `change-a` → `openspec/changes/archive/2026-05-12-change-a/`
- `change-b` → `openspec/changes/archive/2026-05-12-change-b/`
未归档:
- `change-c`:任务未完成:5/8
若发生环境错误:
无法执行自动归档:未找到 OpenSpec CLI。
请先安装或修复 `openspec` 命令后再运行 `lina-openspec-archive-changes`。
tasks.md存在未完成项,以未完成为准并跳过;若tasks.md确认全部完成且严格校验通过,记录统计差异并继续归档。归档结束后,根据实际情况运行轻量验证:
openspec list --json
openspec validate --all
若 openspec validate --all 因仓库中既有未完成变更失败,不要把失败归咎于本次归档;在报告中说明失败范围和相关变更名。