universal-dev-standards 5.3.0 → 5.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled/locales/zh-CN/CHANGELOG.md +17 -3
- package/bundled/locales/zh-CN/README.md +1 -1
- package/bundled/locales/zh-TW/CHANGELOG.md +17 -3
- package/bundled/locales/zh-TW/README.md +1 -1
- package/package.json +1 -1
- package/src/commands/update.js +83 -11
- package/src/utils/integration-generator.js +4 -6
- package/standards-registry.json +3 -3
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
source: ../../CHANGELOG.md
|
|
3
|
-
source_version: 5.3.
|
|
4
|
-
translation_version: 5.3.
|
|
5
|
-
last_synced: 2026-04-
|
|
3
|
+
source_version: 5.3.2
|
|
4
|
+
translation_version: 5.3.2
|
|
5
|
+
last_synced: 2026-04-27
|
|
6
6
|
status: current
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -17,6 +17,20 @@ status: current
|
|
|
17
17
|
|
|
18
18
|
## [Unreleased]
|
|
19
19
|
|
|
20
|
+
## [5.3.2] - 2026-04-27
|
|
21
|
+
|
|
22
|
+
> **修补版本发布**:Bug 修复 —— `uds update -y` 现在会自动安装/更新 Skills 和 Commands,不再只显示提示信息。
|
|
23
|
+
|
|
24
|
+
### 修复
|
|
25
|
+
- **`uds update --yes` / `-y`**(`cli/src/commands/update.js`):`--yes` 标志此前对 Skills 和 Commands 安装完全跳过,只显示「New features available」提示。现在与交互模式行为一致 —— 缺少的 Skills/Commands 立即安装,过时的直接更新,并同步刷新 manifest 与集成文件。修复了 `uds update -y` 让 `.claude/` Skills 保持不变而交互式 `uds update` 正常更新的行为差异。
|
|
26
|
+
|
|
27
|
+
## [5.3.1] - 2026-04-27
|
|
28
|
+
|
|
29
|
+
> **修补版本发布**:Bug 修复 —— `uds update` 后 `uds check` 不再误报「AGENTS.md 标准不同步」。
|
|
30
|
+
|
|
31
|
+
### 修复
|
|
32
|
+
- **`generateAgentsMdSummary()`**(`integration-generator.js`):移除导致 AGENTS.md 只列出 30 项标准的 `.slice(0, 30)` 截断。`uds check` 与 manifest 全量标准比对,截断导致永远误报 `30/64 out of sync`。现在列出全部已安装标准,check 正常通过。
|
|
33
|
+
|
|
20
34
|
## [5.3.0] - 2026-04-26
|
|
21
35
|
|
|
22
36
|
> **次版本发布**:四个新标准 + 一个新 Skill(XSPEC-085/064)—— `no-cicd-deployment`、`rollback-standards`、`cd-deployment-strategies`、`pipeline-security-gates`,以及无 CI/CD 环境的 `/deploy` Skill。标准总数:136。
|
|
@@ -14,7 +14,7 @@ status: current
|
|
|
14
14
|
|
|
15
15
|
> **语言**: [English](../../README.md) | [繁體中文](../zh-TW/README.md) | 简体中文
|
|
16
16
|
|
|
17
|
-
**版本**: 5.3.
|
|
17
|
+
**版本**: 5.3.2 | **发布日期**: 2026-04-13 | **授权**: [双重授权](../../LICENSE) (CC BY 4.0 + MIT)
|
|
18
18
|
|
|
19
19
|
语言无关、框架无关的软件项目文档标准。通过 AI 原生工作流,确保不同技术栈之间的一致性、质量和可维护性。
|
|
20
20
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
source: ../../CHANGELOG.md
|
|
3
|
-
source_version: 5.3.
|
|
4
|
-
translation_version: 5.3.
|
|
5
|
-
last_synced: 2026-04-
|
|
3
|
+
source_version: 5.3.2
|
|
4
|
+
translation_version: 5.3.2
|
|
5
|
+
last_synced: 2026-04-27
|
|
6
6
|
status: current
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -17,6 +17,20 @@ status: current
|
|
|
17
17
|
|
|
18
18
|
## [Unreleased]
|
|
19
19
|
|
|
20
|
+
## [5.3.2] - 2026-04-27
|
|
21
|
+
|
|
22
|
+
> **修補版本發布**:Bug 修復 —— `uds update -y` 現在會自動安裝/更新 Skills 和 Commands,不再只顯示提示訊息。
|
|
23
|
+
|
|
24
|
+
### 修復
|
|
25
|
+
- **`uds update --yes` / `-y`**(`cli/src/commands/update.js`):`--yes` 旗標先前對 Skills 和 Commands 安裝完全跳過,只顯示「New features available」提示。現在與互動模式行為一致 —— 缺少的 Skills/Commands 立即安裝,過時的直接更新,並同步刷新 manifest 與整合檔案。修復了 `uds update -y` 讓 `.claude/` Skills 保持不變而互動式 `uds update` 正常更新的行為差異。
|
|
26
|
+
|
|
27
|
+
## [5.3.1] - 2026-04-27
|
|
28
|
+
|
|
29
|
+
> **修補版本發布**:Bug 修復 —— `uds update` 後 `uds check` 不再誤報「AGENTS.md 標準不同步」。
|
|
30
|
+
|
|
31
|
+
### 修復
|
|
32
|
+
- **`generateAgentsMdSummary()`**(`integration-generator.js`):移除導致 AGENTS.md 只列出 30 項標準的 `.slice(0, 30)` 截斷。`uds check` 與 manifest 全量標準比對,截斷導致永遠誤報 `30/64 out of sync`。現在列出全部已安裝標準,check 正常通過。
|
|
33
|
+
|
|
20
34
|
## [5.3.0] - 2026-04-26
|
|
21
35
|
|
|
22
36
|
> **次版本發布**:四個新標準 + 一個新 Skill(XSPEC-085/064)—— `no-cicd-deployment`、`rollback-standards`、`cd-deployment-strategies`、`pipeline-security-gates`,以及無 CI/CD 環境的 `/deploy` Skill。標準總數:136。
|
|
@@ -14,7 +14,7 @@ status: current
|
|
|
14
14
|
|
|
15
15
|
> **語言**: [English](../../README.md) | 繁體中文 | [简体中文](../zh-CN/README.md)
|
|
16
16
|
|
|
17
|
-
**版本**: 5.3.
|
|
17
|
+
**版本**: 5.3.2 | **發布日期**: 2026-04-13 | **授權**: [雙重授權](../../LICENSE) (CC BY 4.0 + MIT)
|
|
18
18
|
|
|
19
19
|
語言無關、框架無關的軟體專案文件標準。透過 AI 原生工作流,確保不同技術堆疊之間的一致性、品質和可維護性。
|
|
20
20
|
|
package/package.json
CHANGED
package/src/commands/update.js
CHANGED
|
@@ -967,24 +967,96 @@ export async function updateCommand(options) {
|
|
|
967
967
|
writeManifest(manifest, projectPath);
|
|
968
968
|
}
|
|
969
969
|
} else {
|
|
970
|
-
// --yes mode:
|
|
971
|
-
|
|
972
|
-
|
|
970
|
+
// --yes mode: auto-install/update Skills and Commands (treat -y as confirming all prompts)
|
|
971
|
+
const skillsLocale = resolveLocale(manifest, projectPath);
|
|
972
|
+
let hasChanges = false;
|
|
973
|
+
|
|
973
974
|
if (missingSkills.length > 0) {
|
|
974
|
-
const
|
|
975
|
-
|
|
975
|
+
const spinner = ora(msg.installingNewSkills || 'Installing Skills...').start();
|
|
976
|
+
const result = await installSkillsToMultipleAgents(missingSkills, null, projectPath, skillsLocale);
|
|
977
|
+
if (!manifest.skills) manifest.skills = {};
|
|
978
|
+
manifest.skills.installed = true;
|
|
979
|
+
manifest.skills.version = repoInfo.skills.version;
|
|
980
|
+
manifest.skills.installations = [...(manifest.skills.installations || []), ...missingSkills];
|
|
981
|
+
if (result.allFileHashes) {
|
|
982
|
+
if (!manifest.skillHashes) manifest.skillHashes = {};
|
|
983
|
+
Object.assign(manifest.skillHashes, result.allFileHashes);
|
|
984
|
+
}
|
|
985
|
+
if (result.totalErrors === 0) {
|
|
986
|
+
spinner.succeed((msg.newSkillsInstalled || 'Installed Skills for {count} AI tools').replace('{count}', missingSkills.length));
|
|
987
|
+
} else {
|
|
988
|
+
spinner.warn((msg.newSkillsInstalledWithErrors || 'Installed Skills with {errors} errors').replace('{errors}', result.totalErrors));
|
|
989
|
+
}
|
|
990
|
+
hasChanges = true;
|
|
976
991
|
}
|
|
992
|
+
|
|
977
993
|
if (outdatedSkills.length > 0) {
|
|
978
|
-
const
|
|
979
|
-
|
|
994
|
+
const spinner = ora(msg.updatingSkills || 'Updating Skills...').start();
|
|
995
|
+
const result = await installSkillsToMultipleAgents(outdatedSkills, null, projectPath, skillsLocale);
|
|
996
|
+
if (!manifest.skills) manifest.skills = {};
|
|
997
|
+
manifest.skills.version = repoInfo.skills.version;
|
|
998
|
+
if (!manifest.skills.location && manifest.skills.installations?.length > 0) {
|
|
999
|
+
const levels = manifest.skills.installations.map(s => s.level).filter(Boolean);
|
|
1000
|
+
const uniqueLevels = [...new Set(levels)];
|
|
1001
|
+
manifest.skills.location = uniqueLevels.length === 1 ? uniqueLevels[0] : (uniqueLevels.length > 1 ? 'multiple' : undefined);
|
|
1002
|
+
}
|
|
1003
|
+
if (result.allFileHashes) {
|
|
1004
|
+
if (!manifest.skillHashes) manifest.skillHashes = {};
|
|
1005
|
+
Object.assign(manifest.skillHashes, result.allFileHashes);
|
|
1006
|
+
}
|
|
1007
|
+
if (result.totalErrors === 0) {
|
|
1008
|
+
spinner.succeed((msg.skillsUpdated || 'Updated Skills for {count} AI tools').replace('{count}', outdatedSkills.length));
|
|
1009
|
+
} else {
|
|
1010
|
+
spinner.warn((msg.skillsUpdatedWithErrors || 'Updated Skills with {errors} errors').replace('{errors}', result.totalErrors));
|
|
1011
|
+
}
|
|
1012
|
+
hasChanges = true;
|
|
980
1013
|
}
|
|
1014
|
+
|
|
981
1015
|
if (missingCommands.length > 0) {
|
|
982
|
-
const
|
|
983
|
-
|
|
1016
|
+
const spinner = ora(msg.installingNewCommands || 'Installing commands...').start();
|
|
1017
|
+
const result = await installCommandsToMultipleAgents(missingCommands, null, projectPath, skillsLocale);
|
|
1018
|
+
if (!manifest.commands) manifest.commands = {};
|
|
1019
|
+
manifest.commands.installed = true;
|
|
1020
|
+
manifest.commands.version = repoInfo.skills.version;
|
|
1021
|
+
manifest.commands.installations = [...(manifest.commands.installations || []), ...missingCommands];
|
|
1022
|
+
if (result.allFileHashes) {
|
|
1023
|
+
if (!manifest.commandHashes) manifest.commandHashes = {};
|
|
1024
|
+
replaceCommandHashesForUpdatedAgents(manifest.commandHashes, result.allFileHashes);
|
|
1025
|
+
}
|
|
1026
|
+
if (result.totalErrors === 0) {
|
|
1027
|
+
spinner.succeed((msg.newCommandsInstalled || 'Installed commands for {count} AI tools').replace('{count}', missingCommands.length));
|
|
1028
|
+
} else {
|
|
1029
|
+
spinner.warn((msg.newCommandsInstalledWithErrors || 'Installed commands with {errors} errors').replace('{errors}', result.totalErrors));
|
|
1030
|
+
}
|
|
1031
|
+
hasChanges = true;
|
|
984
1032
|
}
|
|
1033
|
+
|
|
985
1034
|
if (outdatedCommands.length > 0) {
|
|
986
|
-
const
|
|
987
|
-
|
|
1035
|
+
const spinner = ora(msg.updatingCommands || 'Updating Commands...').start();
|
|
1036
|
+
const result = await installCommandsToMultipleAgents(outdatedCommands, null, projectPath, skillsLocale);
|
|
1037
|
+
if (!manifest.commands) manifest.commands = {};
|
|
1038
|
+
manifest.commands.version = repoInfo.skills.version;
|
|
1039
|
+
if (result.allFileHashes) {
|
|
1040
|
+
if (!manifest.commandHashes) manifest.commandHashes = {};
|
|
1041
|
+
replaceCommandHashesForUpdatedAgents(manifest.commandHashes, result.allFileHashes);
|
|
1042
|
+
}
|
|
1043
|
+
if (result.totalErrors === 0) {
|
|
1044
|
+
spinner.succeed((msg.commandsUpdated || 'Updated Commands for {count} AI tools').replace('{count}', outdatedCommands.length));
|
|
1045
|
+
} else {
|
|
1046
|
+
spinner.warn((msg.commandsUpdatedWithErrors || 'Updated Commands with {errors} errors').replace('{errors}', result.totalErrors));
|
|
1047
|
+
}
|
|
1048
|
+
hasChanges = true;
|
|
1049
|
+
}
|
|
1050
|
+
|
|
1051
|
+
if (hasChanges) {
|
|
1052
|
+
if (missingSkills.length > 0 || outdatedSkills.length > 0) {
|
|
1053
|
+
const regenResult = regenerateIntegrations(projectPath, manifest);
|
|
1054
|
+
if (regenResult.updated.length > 0) {
|
|
1055
|
+
console.log(chalk.green(` ✓ ${msg.syncedIntegrations.replace('{count}', regenResult.updated.length)}`));
|
|
1056
|
+
}
|
|
1057
|
+
}
|
|
1058
|
+
refreshIntegrationBlockHashes(manifest, projectPath);
|
|
1059
|
+
writeManifest(manifest, projectPath);
|
|
988
1060
|
}
|
|
989
1061
|
}
|
|
990
1062
|
}
|
|
@@ -3183,7 +3183,7 @@ function detectBuildCommands(projectPath) {
|
|
|
3183
3183
|
}
|
|
3184
3184
|
|
|
3185
3185
|
/**
|
|
3186
|
-
* Generate a concise AGENTS.md summary file
|
|
3186
|
+
* Generate a concise AGENTS.md summary file
|
|
3187
3187
|
* Follows AAIF best practices: commands, testing, structure, style, git, boundaries
|
|
3188
3188
|
*
|
|
3189
3189
|
* @param {Object} config - Generation configuration
|
|
@@ -3192,7 +3192,7 @@ function detectBuildCommands(projectPath) {
|
|
|
3192
3192
|
* @param {string} [config.outputLanguage='english'] - Output language
|
|
3193
3193
|
* @param {Object} [config.standardOptions={}] - Standard options (workflow, merge_strategy, etc.)
|
|
3194
3194
|
* @param {string} [config.projectPath] - Project root path for detecting build tools
|
|
3195
|
-
* @returns {string} AGENTS.md content
|
|
3195
|
+
* @returns {string} AGENTS.md content
|
|
3196
3196
|
*/
|
|
3197
3197
|
export function generateAgentsMdSummary(config = {}) {
|
|
3198
3198
|
const {
|
|
@@ -3265,16 +3265,14 @@ export function generateAgentsMdSummary(config = {}) {
|
|
|
3265
3265
|
lines.push('');
|
|
3266
3266
|
|
|
3267
3267
|
if (installedStandards.length > 0) {
|
|
3268
|
-
lines.push('All standards are in `.standards/`.
|
|
3268
|
+
lines.push('All standards are in `.standards/`. Installed standards:');
|
|
3269
3269
|
lines.push('');
|
|
3270
3270
|
|
|
3271
|
-
// Group and show key standards (limited to keep within 150 lines)
|
|
3272
3271
|
const keyStandards = installedStandards
|
|
3273
3272
|
.filter(s => {
|
|
3274
3273
|
const name = basename(s);
|
|
3275
3274
|
return name.endsWith('.ai.yaml');
|
|
3276
|
-
})
|
|
3277
|
-
.slice(0, 30); // Limit to avoid exceeding 150 lines
|
|
3275
|
+
});
|
|
3278
3276
|
|
|
3279
3277
|
for (const std of keyStandards) {
|
|
3280
3278
|
const name = basename(std).replace('.ai.yaml', '');
|
package/standards-registry.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"version": "5.3.
|
|
3
|
+
"version": "5.3.2",
|
|
4
4
|
"lastUpdated": "2026-04-16",
|
|
5
5
|
"description": "Standards registry for universal-dev-standards with integrated skills and AI-optimized formats",
|
|
6
6
|
"formats": {
|
|
@@ -58,14 +58,14 @@
|
|
|
58
58
|
"standards": {
|
|
59
59
|
"name": "universal-dev-standards",
|
|
60
60
|
"url": "https://github.com/AsiaOstrich/universal-dev-standards",
|
|
61
|
-
"version": "5.3.
|
|
61
|
+
"version": "5.3.2"
|
|
62
62
|
},
|
|
63
63
|
"skills": {
|
|
64
64
|
"name": "universal-dev-standards",
|
|
65
65
|
"url": "https://github.com/AsiaOstrich/universal-dev-standards",
|
|
66
66
|
"localPath": "skills",
|
|
67
67
|
"rawUrl": "https://raw.githubusercontent.com/AsiaOstrich/universal-dev-standards/main/skills",
|
|
68
|
-
"version": "5.3.
|
|
68
|
+
"version": "5.3.2",
|
|
69
69
|
"note": "Skills are now included in the main repository under skills/"
|
|
70
70
|
}
|
|
71
71
|
},
|