requirements-doc
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseCahier des charges à partir des specs
基于 specs 生成需求规格说明书
Ce skill part d'un projet de specs (skill , et le prototype du skill s'il existe) et produit le cahier des charges de l'équipe de développement. Les sources sont en Markdown, une par partie. Le build les assemble en deux formats :
specs-uiprototype-ui- un document Markdown, pour un dépôt de code ou un outil de documentation ;
- une page HTML publiée comme artifact : sommaire qui suit la lecture, recherche par identifiant, pastilles RF / CA / NF / DT / RQ, diagrammes, thème clair et sombre, boutons « Copier le Markdown », pour le document entier ou une partie. La partie fonctionnelle et UI vient des specs par extraction (aucune réécriture), la partie technique (architecture, stack, infrastructure) est proposée puis validée avec la personne, et le découpage en lots porte des estimations en fourchettes avec leurs hypothèses.
Document et échanges en français. Code des scripts en anglais ; commentaires en français. désigne le dossier de ce skill ; les scripts se lancent depuis le dossier qui contient . Aucune dépendance : Node suffit.
<skill>specs/ui/本 skill 以 specs 项目为起点(使用 skill;若存在,则也使用 skill 的原型),为开发团队生成需求规格说明书。源文件采用 Markdown,每个部分对应一个文件。构建过程会将其汇编为两种格式:
specs-uiprototype-ui- 一份 Markdown 文档,用于代码仓库或文档工具;
- 一份作为 artifact 发布的 HTML 页面:目录会随阅读位置同步定位,支持按标识符搜索、RF / CA / NF / DT / RQ 徽章、图表、浅色与深色主题,并提供“复制 Markdown”按钮,可复制整个文档或单个部分。功能与 UI 部分通过提取方式直接来自 specs(不作改写);技术部分(架构、stack、基础设施)会先提出方案,再与用户确认;分 lot 拆分采用区间估算,并附估算假设。
文档和沟通使用法语。脚本代码使用英语;注释使用法语。 表示本 skill 的目录;脚本从包含 的目录运行。无需任何依赖:Node 即可。
<skill>specs/ui/Économiser les tokens (à lire en premier)
节省 tokens(首先阅读)
Les specs d'un produit pèsent souvent plus d'1 Mo de HTML ; le cahier des charges, 150 à 300 Ko de Markdown. Règles :
- est la mémoire : à lire en premier en reprise, et à s'en contenter tant que possible. Elle contient l'avancement par source, les contraintes, les décisions techniques DT, les hypothèses d'estimation et ce qui reste à valider. La tenir à jour à la fin de chaque étape, sous 150 lignes.
specs/requirements/REQUIREMENTS.md - Ne jamais lire le HTML des specs : en tire la matière en Markdown dans
extract.mjs(environ 7 fois plus court). Le modèle principal litspecs/requirements/sources/generated/etgenerated/inventaire.md, puis seulement les extraits utiles des lots (par morceaux).specs/ui/CONTEXTE.md - Ne jamais lire les documents assemblés (et
specs/requirements/requirements.md, nommés par.html→requirements.json), nioutput. On travaille dansspecs/requirements/publish/(une source par partie), puisspecs/requirements/sources/etbuild.mjs.check.mjs - Un fichier par partie : modifier une partie, c'est modifier sa source, pas relire le document.
- Déléguer au bon modèle :
| Rôle | Modèle | Tâches |
|---|---|---|
| Conception | modèle principal | Cadrage, questions, architecture, stack, infrastructure, lots et estimations, exigences non fonctionnelles, présentation, relecture, publication |
| Rédaction | | Critères d'acceptation d'un lot depuis |
| Exécution mécanique | | Lancer |
| Tâche | À lire |
|---|---|
| Toute étape | |
| Plan, identifiants, style | |
| Architecture, stack, infrastructure | |
| Lots et estimations | |
产品 specs 往往会占用超过 1 MB 的 HTML,而需求规格说明书约为 150 至 300 KB 的 Markdown。规则如下:
- 是记忆载体:续作时首先阅读,并尽可能只使用该文件。它包含各来源的进度、约束、技术决策 DT、估算假设以及尚待验证的事项。每一步结束时都要更新,并控制在 150 行以内。
specs/requirements/REQUIREMENTS.md - 绝不读取 specs 的 HTML:会从 specs 中提取内容并转换为 Markdown,保存到
extract.mjs(长度约缩短至七分之一)。主模型读取specs/requirements/sources/generated/和generated/inventaire.md,之后只按需读取各 lot 的相关片段(分块读取)。specs/ui/CONTEXTE.md - 绝不读取已汇编的文档(即 →
requirements.json所指向的output和specs/requirements/requirements.md),也不要读取.html。应在specs/requirements/publish/中开展工作(每个部分一个源文件),然后运行specs/requirements/sources/和build.mjs。check.mjs - 每个部分一个文件:修改某一部分时,应修改其源文件,而不是重新读取整个文档。
- 将任务委派给合适的模型:
| 角色 | 模型 | 任务 |
|---|---|---|
| 设计 | 主模型 | 项目界定、问题澄清、架构、stack、基础设施、lots 与估算、非功能需求、项目介绍、审校、发布 |
| 编写 | | 根据 |
| 机械执行 | | 运行 |
| 任务 | 需读取 |
|---|---|
| 每个步骤 | |
| 规划、标识符、样式 | |
| 架构、stack、基础设施 | |
| lots 与估算 | |
Étape 0 · Prérequis et préparation
步骤 0 · 前置条件与准备
Les livrables de la chaîne vivent dans à la racine du projet : (specs), (prototype), (ce cahier des charges). Un projet à l'ancienne disposition (, à la racine, , ) se range avec du skill ; d'ici là, les scripts lisent encore .
specs/specs/uispecs/prototypespecs/requirementsspecs-ui/cdc/cdc.jsonCDC.mdmigrate-layout.mjsspecs-uicdc.jsonIl faut un projet (avec ). Sinon, proposer d'abord les specs (skill ). D'autres documents fonctionnels donnés par la personne (brief, notes) se lisent au cadrage et se citent en documents de référence.
specs-uisources/site.jsonspecs-uish
node <skill>/scripts/init.mjs --specs specs/ui --out specs/requirements [--prototype specs/prototype]Le script crée (, , une source par partie avec les valeurs connues déjà remplies), un chapitre par lot dans , et lance l'extraction. Un dossier existant n'est pas écrasé : c'est une reprise.
specs/requirements/requirements.jsonREQUIREMENTS.md30-specs.md该工作流的交付物位于项目根目录的 下:(specs)、(原型)、(本需求规格说明书)。采用旧目录布局的项目(根目录下的 、、、)应使用 skill 的 进行迁移;完成迁移前,脚本仍读取 。
specs/specs/uispecs/prototypespecs/requirementsspecs-ui/cdc/cdc.jsonCDC.mdspecs-uimigrate-layout.mjscdc.json必须具备一个 项目(包含 )。否则,应先建议创建 specs(使用 skill)。用户提供的其他功能文档(brief、笔记)应在项目界定阶段读取,并列为参考文档。
specs-uisources/site.jsonspecs-uish
node <skill>/scripts/init.mjs --specs specs/ui --out specs/requirements [--prototype specs/prototype]脚本会创建 (包括 、,以及每个部分一个源文件并预先填入已知内容),在 中为每个 lot 创建一个章节,并启动提取。已有目录不会被覆盖:这属于续作。
specs/requirements/requirements.jsonREQUIREMENTS.md30-specs.mdÉtape 1 · Cadrage
步骤 1 · 项目界定
Lire et . Puis demander avec AskUserQuestion les contraintes qui pèsent sur la technique : hébergement imposé ou souhaité, compétences de l'équipe (langages, frameworks), sécurité et conformité (SSO, données en UE, audit), volumes attendus, budget d'infrastructure, échéance. Toujours une option « pas de contrainte ». Noter les réponses dans .
specs/ui/CONTEXTE.mdspecs/requirements/sources/generated/inventaire.mdREQUIREMENTS.md读取 和 。随后使用 AskUserQuestion 询问对技术方案有影响的约束:指定或期望的托管方式、团队技能(语言、frameworks)、安全与合规(SSO、EU 数据、审计)、预期负载量、基础设施预算、截止时间。始终提供“无约束”选项。将回答记录到 。
specs/ui/CONTEXTE.mdspecs/requirements/sources/generated/inventaire.mdREQUIREMENTS.mdÉtape 2 · Architecture, stack et infrastructure
步骤 2 · 架构、stack 与基础设施
Suivre :
references/architecture.md- lire les besoins techniques dans les règles RF et les écrans (temps réel, événements externes, traitements longs, exécution isolée, secrets, multi-tenant…), chacun rattaché à sa règle ;
- proposer 2 ou 3 options par décision structurante, avec une recommandation, par AskUserQuestion (4 questions par série, 2 séries au plus) ;
- noter chaque décision DT-xx dans , puis rédiger
REQUIREMENTS.md,60-architecture.mdet70-stack.md(hébergement, environnements, réseau, conteneurs, CI/CD, IaC et secrets, observabilité, sauvegardes, sécurité, coûts).80-infrastructure.md
Rien de technique ne s'écrit comme décidé sans validation : une recommandation non tranchée est notée « à valider ».
按照 执行:
references/architecture.md- 从 RF 规则和界面中读取技术需求(实时处理、外部事件、长时任务、隔离执行、secrets、多租户等),每项需求都关联到对应规则;
- 针对每项结构性决策提出 2 或 3 个方案,并给出推荐,通过 AskUserQuestion 确认(每组 4 个问题,最多 2 组);
- 将每项决策记录为 DT-xx 并写入 ,然后编写
REQUIREMENTS.md、60-architecture.md和70-stack.md(托管、环境、网络、容器、CI/CD、IaC 和 secrets、可观测性、备份、安全、成本)。80-infrastructure.md
未经确认,任何技术内容都不得写成已决定事项;尚未定夺的推荐方案应标记为“待确认”。
Étape 3 · Partie fonctionnelle
步骤 3 · 功能部分
- Critères d'acceptation : un rédacteur par lot, en parallèle, avec
sonnet, son fichierreferences/redacteur.mdet la sourcegenerated/lot-<lot>.mdà remplir. Lire leurs comptes rendus : une règle floue devient un point « À valider » ou une question à la personne.lots/<lot>-criteres.md - Le modèle principal rédige :
- ;
10-presentation.md - (matrice des rôles depuis les RF) ;
20-utilisateurs.md - (principes, composants, mobile, accessibilité ; les tokens sont générés) ;
40-interface.md - (chiffrées, en reprenant d'abord les valeurs des specs).
50-exigences-non-fonctionnelles.md
- 验收标准:每个 lot 安排一名 编写者并行处理,使用
sonnet、对应的references/redacteur.md文件以及待填写的generated/lot-<lot>.md源文件。阅读其报告:含义模糊的规则应转为“待确认”事项或向用户提问。lots/<lot>-criteres.md - 主模型编写:
- ;
10-presentation.md - (根据 RF 整理角色矩阵);
20-utilisateurs.md - (原则、组件、移动端、可访问性;tokens 会自动生成);
40-interface.md - (量化指标,优先沿用 specs 中的数值)。
50-exigences-non-fonctionnelles.md
Étape 4 · Lots, estimations, risques
步骤 4 · Lots、估算与风险
Suivre :
references/estimations.md- lots : lot 0 « Socle », puis les lots des specs ;
- estimations : par lot, objectif, périmètre, dépendances, livrables, critères de fin et fourchette en jours ; puis synthèse, hypothèses et planning () ;
gantt - risques et décisions : les risques RQ-xx vont dans (les points ouverts des specs y sont inclus automatiquement), les décisions produit datées dans
95-risques.md.99-annexes.md
按照 执行:
references/estimations.md- lots:lot 0“底座”,然后是 specs 中的各 lot;
- 估算:按 lot 列出目标、范围、依赖关系、交付物、完成标准以及以天为单位的区间;随后给出汇总、假设和排期();
gantt - 风险与决策:RQ-xx 风险写入 (specs 中的待决事项会自动纳入),带日期的产品决策写入
95-risques.md。99-annexes.md
Étape 5 · Construire, contrôler, publier
步骤 5 · 构建、检查与发布
sh
node <skill>/scripts/build.mjs specs/requirements
node <skill>/scripts/check.mjs specs/requirementscheck.mjs- les parties manquantes ;
- les gabarits non remplis ;
{{…}} - les liens internes cassés (ancres en ASCII) ;
- les identifiants cités sans définition ;
- les lots des specs absents du découpage ou sans fourchette ;
- les écrans de l'inventaire absents ;
- les diagrammes non refermés ;
- les identifiants en double.
Corriger jusqu'à zéro problème.
Le build écrit trois fichiers :
- : le document Markdown ;
specs/requirements/requirements.md - : la page complète, ouvrable en local, avec les diagrammes rendus ;
specs/requirements/requirements.html - : la même page sans enveloppe, pour l'outil Artifact (hors du dépôt git : elle se régénère).
specs/requirements/publish/requirements.html
Publier avec l'outil Artifact ( dit s'il y a quelque chose à publier et vers quelle URL). Le titre vient de la balise , et l'outil rend les diagrammes lui-même. Republier ce même fichier garde l'URL ; la noter dans → et dans , puis lancer (empreinte dans , à commiter). dit si l'artifact est en retard sur la page locale. La page ne peut pas faire télécharger de fichier (le lecteur l'interdit) : le Markdown se récupère par les boutons « Copier », ou dans le fichier local. Passer la version et le statut dans à chaque publication notable.
specs/requirements/publish/requirements.htmlprepare-publish.mjs specs/requirements<title>mermaidrequirements.jsonartifacts.requirementsREQUIREMENTS.mdprepare-publish.mjs specs/requirements --confirm.published.json--check.md00-titre.mdsh
node <skill>/scripts/build.mjs specs/requirements
node <skill>/scripts/check.mjs specs/requirementscheck.mjs- 缺失的部分;
- 未填写的 模板;
{{…}} - 失效的内部链接(ASCII 锚点);
- 被引用但未定义的标识符;
- 在拆分中缺失或没有估算区间的 specs lots;
- 清单中缺失的界面;
- 未正确闭合的图表;
- 重复的标识符。
修正直到没有任何问题。
构建过程会写入三个文件:
- :Markdown 文档;
specs/requirements/requirements.md - :完整页面,可直接在本地打开,并已渲染图表;
specs/requirements/requirements.html - :同一页面但不含外层包装,用于 Artifact 工具(不进入 git 仓库:需要重新生成)。
specs/requirements/publish/requirements.html
使用 Artifact 工具发布 ( 会说明是否有内容需要发布以及目标 URL)。标题取自 标签,工具会自行渲染 图表。再次发布同一文件会保留 URL;将其记录在 → 和 中,然后运行 (哈希指纹写入 ,需提交至版本库)。 会指出 artifact 是否落后于本地页面。页面不能提供文件下载功能(阅读器禁止此操作):Markdown 可通过“复制”按钮获取,或从本地 文件获取。每次有重要发布时,将版本和状态更新到 。
specs/requirements/publish/requirements.htmlprepare-publish.mjs specs/requirements<title>mermaidrequirements.jsonartifacts.requirementsREQUIREMENTS.mdprepare-publish.mjs specs/requirements --confirm.published.json--check.md00-titre.mdSpecs modifiées
Specs 更新
Relancer (la partie fonctionnelle suit seule), puis : il signale les nouveaux écrans absents et les liens cassés. Mettre à jour les critères des lots touchés (rédacteur), les lots et estimations, les risques ; noter la nouvelle version.
extract.mjs specs/requirementscheck.mjs重新运行 (功能部分会自动同步),然后运行 :它会指出新增但缺失的界面和失效链接。更新受影响 lot 的验收标准(由编写者完成)、lots、估算和风险;记录新版本。
extract.mjs specs/requirementscheck.mjsMaintenir pendant les développements
开发期间持续维护
Le cahier des charges vit dans le dépôt de l'application (), avec ses sources, le Markdown construit (, , que l'équipe et les agents lisent sans rien construire) et . La page HTML () se reconstruit et reste hors du dépôt, comme : l'ajouter au du projet. Il suit les specs, qui suivent l'implémentation (skill , étape 7).
specs/requirements/requirements.mdsources/generated/.published.jsonrequirements.htmlpublish/.gitignorespecs-uiIdentifiants stables. Le code et les tests citent les identifiants CA-…, RF-… et NF-… : un identifiant ne change jamais de sens et n'est jamais réutilisé.
- Un nouveau critère prend le numéro suivant du lot, même s'il s'insère au milieu de la liste.
- Un critère abandonné reste, barré et marqué « Retiré (date, raison) ».
- Un critère modifié garde son numéro si la vérification reste la même ; sinon il est retiré et remplacé.
Traçabilité avec le code. Un test cite le critère qu'il vérifie dans son nom (« CA-CONN-27 · refuse une clé d'API »).
sh
node <skill>/scripts/trace.mjs specs/requirements [--code apps,packages] [--write] [--strict]trace.mjsrequirements.jsoncodespecs/--writesources/generated/couverture.md<!-- include: generated/couverture.md -->--strictÀ chaque évolution : réextraire, mettre à jour les critères touchés, , , , monter la version dans , publier, et commiter les sources, le Markdown construit et avec les specs, dans le même changement.
buildchecktrace00-titre.md.published.json需求规格说明书与应用代码一同保存在仓库中(),包括源文件、构建后的 Markdown(、,团队和 agents 无需构建即可读取)以及 。HTML 页面()需要重新构建,并像 一样保留在仓库之外:应将其加入项目的 。需求规格说明书跟随 specs 更新,而 specs 跟随实现更新( skill,第 7 步)。
specs/requirements/requirements.mdsources/generated/.published.jsonrequirements.htmlpublish/.gitignorespecs-ui稳定标识符。 代码和测试会引用 CA-…、RF-… 和 NF-… 标识符:标识符的含义永不改变,也绝不复用。
- 新验收标准使用该 lot 的下一个编号,即使插入在列表中间也是如此。
- 废弃的验收标准仍会保留,但应加删除线,并标记为“已撤回(日期、原因)”。
- 修改后的验收标准若验证内容不变,则保留原编号;否则应撤回并替换。
与代码的可追溯性。 测试名称中会引用其验证的标准()。
CA-CONN-27 · refuse une clé d'APIsh
node <skill>/scripts/trace.mjs specs/requirements [--code apps,packages] [--write] [--strict]trace.mjsrequirements.jsoncodespecs/--writesources/generated/couverture.md<!-- include: generated/couverture.md -->--strict每次演进:重新提取、更新受影响的验收标准、运行 、运行 、运行 、在 中更新版本号、发布,并将源文件、构建后的 Markdown 和 与 specs 在同一次变更中提交。
buildchecktrace00-titre.md.published.json