universal-dev-standards 5.5.0 → 5.6.0

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.
Files changed (32) hide show
  1. package/bundled/ai/options/testing/integration-testing.ai.yaml +2 -2
  2. package/bundled/ai/options/testing/unit-testing.ai.yaml +2 -2
  3. package/bundled/ai/standards/browser-compatibility-standards.ai.yaml +63 -0
  4. package/bundled/ai/standards/contract-testing-standards.ai.yaml +62 -0
  5. package/bundled/ai/standards/cross-flow-regression.ai.yaml +61 -0
  6. package/bundled/ai/standards/full-coverage-testing.ai.yaml +192 -0
  7. package/bundled/ai/standards/release-readiness-gate.ai.yaml +77 -0
  8. package/bundled/ai/standards/testing.ai.yaml +20 -13
  9. package/bundled/core/accessibility-standards.md +58 -0
  10. package/bundled/core/branch-completion.md +4 -0
  11. package/bundled/core/browser-compatibility-standards.md +220 -0
  12. package/bundled/core/checkin-standards.md +1 -0
  13. package/bundled/core/contract-testing-standards.md +182 -0
  14. package/bundled/core/cross-flow-regression.md +190 -0
  15. package/bundled/core/flow-based-testing.md +135 -2
  16. package/bundled/core/full-coverage-testing.md +183 -0
  17. package/bundled/core/performance-standards.md +65 -0
  18. package/bundled/core/release-quality-manifest.md +56 -10
  19. package/bundled/core/release-readiness-gate.md +184 -0
  20. package/bundled/locales/zh-CN/CHANGELOG.md +3 -3
  21. package/bundled/locales/zh-CN/README.md +1 -1
  22. package/bundled/locales/zh-TW/CHANGELOG.md +3 -3
  23. package/bundled/locales/zh-TW/README.md +1 -1
  24. package/bundled/locales/zh-TW/core/browser-compatibility-standards.md +11 -0
  25. package/bundled/locales/zh-TW/core/contract-testing-standards.md +11 -0
  26. package/bundled/locales/zh-TW/core/cross-flow-regression.md +11 -0
  27. package/bundled/locales/zh-TW/core/release-readiness-gate.md +11 -0
  28. package/package.json +6 -6
  29. package/src/commands/check.js +43 -0
  30. package/src/commands/init.js +2 -1
  31. package/src/commands/update.js +10 -0
  32. package/standards-registry.json +60 -4
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  source: ../../CHANGELOG.md
3
- source_version: 5.5.0
4
- translation_version: 5.5.0
5
- last_synced: 2026-05-05
3
+ source_version: 5.6.0
4
+ translation_version: 5.6.0
5
+ last_synced: 2026-05-06
6
6
  status: current
7
7
  ---
8
8
 
@@ -14,7 +14,7 @@ status: current
14
14
 
15
15
  > **语言**: [English](../../README.md) | [繁體中文](../zh-TW/README.md) | 简体中文
16
16
 
17
- **版本**: 5.5.0 | **发布日期**: 2026-04-13 | **授权**: [双重授权](../../LICENSE) (CC BY 4.0 + MIT)
17
+ **版本**: 5.6.0 | **发布日期**: 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.5.0
4
- translation_version: 5.5.0
5
- last_synced: 2026-05-05
3
+ source_version: 5.6.0
4
+ translation_version: 5.6.0
5
+ last_synced: 2026-05-06
6
6
  status: current
7
7
  ---
8
8
 
@@ -14,7 +14,7 @@ status: current
14
14
 
15
15
  > **語言**: [English](../../README.md) | 繁體中文 | [简体中文](../zh-CN/README.md)
16
16
 
17
- **版本**: 5.5.0 | **發布日期**: 2026-04-13 | **授權**: [雙重授權](../../LICENSE) (CC BY 4.0 + MIT)
17
+ **版本**: 5.6.0 | **發布日期**: 2026-04-13 | **授權**: [雙重授權](../../LICENSE) (CC BY 4.0 + MIT)
18
18
 
19
19
  語言無關、框架無關的軟體專案文件標準。透過 AI 原生工作流,確保不同技術堆疊之間的一致性、品質和可維護性。
20
20
 
@@ -0,0 +1,11 @@
1
+ ---
2
+ source: ../../../core/browser-compatibility-standards.md
3
+ source_version: 1.0.0
4
+ translation_version: 0.0.0
5
+ last_synced: 2026-05-05
6
+ ---
7
+
8
+ <!-- TODO: 待完整繁體中文翻譯 — Translation pending -->
9
+ <!-- See source: core/browser-compatibility-standards.md -->
10
+
11
+ > 此標準尚未完整翻譯。請參閱英文原文:[English](../../../core/browser-compatibility-standards.md)
@@ -0,0 +1,11 @@
1
+ ---
2
+ source: ../../../core/contract-testing-standards.md
3
+ source_version: 1.0.0
4
+ translation_version: 0.0.0
5
+ last_synced: 2026-05-05
6
+ ---
7
+
8
+ <!-- TODO: 待完整繁體中文翻譯 — Translation pending -->
9
+ <!-- See source: core/contract-testing-standards.md -->
10
+
11
+ > 此標準尚未完整翻譯。請參閱英文原文:[English](../../../core/contract-testing-standards.md)
@@ -0,0 +1,11 @@
1
+ ---
2
+ source: ../../../core/cross-flow-regression.md
3
+ source_version: 1.0.0
4
+ translation_version: 0.0.0
5
+ last_synced: 2026-05-05
6
+ ---
7
+
8
+ <!-- TODO: 待完整繁體中文翻譯 — Translation pending -->
9
+ <!-- See source: core/cross-flow-regression.md -->
10
+
11
+ > 此標準尚未完整翻譯。請參閱英文原文:[English](../../../core/cross-flow-regression.md)
@@ -0,0 +1,11 @@
1
+ ---
2
+ source: ../../../core/release-readiness-gate.md
3
+ source_version: 1.0.0
4
+ translation_version: 0.0.0
5
+ last_synced: 2026-05-05
6
+ ---
7
+
8
+ <!-- TODO: 待完整繁體中文翻譯 — Translation pending -->
9
+ <!-- See source: core/release-readiness-gate.md -->
10
+
11
+ > 此標準尚未完整翻譯。請參閱英文原文:[English](../../../core/release-readiness-gate.md)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "universal-dev-standards",
3
- "version": "5.5.0",
3
+ "version": "5.6.0",
4
4
  "description": "CLI tool for adopting Universal Development Standards",
5
5
  "keywords": [
6
6
  "documentation",
@@ -59,23 +59,23 @@
59
59
  "prepack": "node scripts/prepack.mjs"
60
60
  },
61
61
  "dependencies": {
62
- "@inquirer/prompts": "8.4.1",
62
+ "@inquirer/prompts": "^8.4.2",
63
63
  "chalk": "^5.3.0",
64
64
  "commander": "^14.0.0",
65
65
  "js-yaml": "^4.1.0",
66
- "ora": "^9.3.0"
66
+ "ora": "^9.4.0"
67
67
  },
68
68
  "devDependencies": {
69
69
  "@eslint/js": "^10.0.1",
70
- "@vitest/coverage-v8": "^4.1.2",
71
- "ajv": "^8.17.1",
70
+ "@vitest/coverage-v8": "^4.1.5",
71
+ "ajv": "^8.20.0",
72
72
  "ajv-formats": "^3.0.1",
73
73
  "eslint": "10.2.1",
74
74
  "glob": "^13.0.1",
75
75
  "globals": "17.5.0",
76
76
  "husky": "^9.1.7",
77
77
  "lint-staged": "^16.4.0",
78
- "vitest": "^4.1.2"
78
+ "vitest": "^4.1.5"
79
79
  },
80
80
  "lint-staged": {
81
81
  "src/**/*.js": [
@@ -3,6 +3,7 @@ import { select } from '@inquirer/prompts';
3
3
  import ora from 'ora';
4
4
  import { existsSync, readFileSync } from 'fs';
5
5
  import { join, basename } from 'path';
6
+ import { execSync } from 'child_process';
6
7
  import { readManifest, writeManifest, isInitialized, copyStandard, copyIntegration } from '../utils/copier.js';
7
8
  import {
8
9
  getAllStandards,
@@ -360,6 +361,9 @@ export async function checkCommand(options = {}) {
360
361
  // Coverage report
361
362
  displayCoverageReport(manifest, msg, common, projectPath);
362
363
 
364
+ // XSPEC-178: Full coverage compliance check
365
+ checkFullCoverageCompliance(manifest, projectPath);
366
+
363
367
  // Workflow status
364
368
  displayWorkflowStatus(projectPath);
365
369
 
@@ -923,6 +927,45 @@ function displaySkillsStatus(manifest, projectPath, msg) {
923
927
  return { missingSkills, missingCommands };
924
928
  }
925
929
 
930
+ /**
931
+ * XSPEC-178: Check full-coverage-testing standard presence and STUB markers
932
+ */
933
+ function checkFullCoverageCompliance(manifest, projectPath) {
934
+ // Check 1: full-coverage-testing.ai.yaml presence
935
+ const fullCoveragePath = join(projectPath, '.standards', 'full-coverage-testing.ai.yaml');
936
+ const hasFullCoverage = existsSync(fullCoveragePath);
937
+
938
+ if (!hasFullCoverage) {
939
+ try {
940
+ const semver = manifest?.upstream?.version || '0.0.0';
941
+ const parts = semver.split('.').map(Number);
942
+ const isV5_5plus = parts[0] > 5 || (parts[0] === 5 && (parts[1] || 0) >= 5);
943
+ if (isV5_5plus) {
944
+ console.log(chalk.yellow(' ⚠ [XSPEC-178] full-coverage-testing.ai.yaml not found.'));
945
+ console.log(chalk.gray(' Run `uds update` to install the full-coverage testing standard.'));
946
+ console.log();
947
+ }
948
+ } catch { /* ignore semver parse errors */ }
949
+ }
950
+
951
+ // Check 2: STUB marker count (advisory)
952
+ const srcDir = join(projectPath, 'src');
953
+ if (existsSync(srcDir)) {
954
+ try {
955
+ const result = execSync(
956
+ `grep -rn "WARNING: STUB" "${srcDir}" --include="*.ts" --include="*.js" 2>/dev/null | wc -l`,
957
+ { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'ignore'] }
958
+ ).trim();
959
+ const stubCount = parseInt(result, 10) || 0;
960
+ if (stubCount > 0) {
961
+ console.log(chalk.yellow(` ⚠ [STUB] ${stubCount} STUB marker(s) found in src/.`));
962
+ console.log(chalk.gray(' Must be removed before UAT/production deployment (XSPEC-178).'));
963
+ console.log();
964
+ }
965
+ } catch { /* grep not available or src not scannable */ }
966
+ }
967
+ }
968
+
926
969
  /**
927
970
  * Display coverage report
928
971
  */
@@ -399,7 +399,8 @@ function buildNonInteractiveConfig(options, detected, projectPath) {
399
399
  workflow: options.workflow || 'github-flow',
400
400
  merge_strategy: options.mergeStrategy || 'squash',
401
401
  output_language: options.outputLang || 'english',
402
- test_levels: options.testLevels ? options.testLevels.split(',') : ['unit-testing', 'integration-testing', 'system-testing', 'e2e-testing']
402
+ test_levels: options.testLevels ? options.testLevels.split(',') : ['unit-testing', 'integration-testing', 'system-testing', 'e2e-testing'],
403
+ coverage_model: options.coverageModel || 'full-coverage'
403
404
  },
404
405
  skillsConfig,
405
406
  aiTools: aiToolsNormalized,
@@ -686,6 +686,16 @@ export async function updateCommand(options) {
686
686
  }
687
687
  }
688
688
 
689
+ // Migrate testing paradigm: pyramid thresholds → full-coverage (v5.5.0, XSPEC-178)
690
+ const isPreV5_5 = compareVersions(installedVersion, '5.5.0') < 0;
691
+ if (isPreV5_5) {
692
+ manifest.options = manifest.options || {};
693
+ manifest.options.coverage_model = manifest.options.coverage_model || 'full-coverage';
694
+ console.log();
695
+ console.log(chalk.yellow(msg.testParadigmMigrated || '⚠ Testing paradigm migrated: pyramid thresholds (UT≥80%/IT≥70%) → behavior-completeness full coverage (XSPEC-178)'));
696
+ console.log(chalk.cyan(msg.testParadigmNote || ' full-coverage-testing.ai.yaml installed. Review scripts/check-stubs.sh and scripts/check-anti-fake-tests.sh in your project.'));
697
+ }
698
+
689
699
  // Update manifest
690
700
  manifest.version = '3.3.0';
691
701
  manifest.upstream.version = latestVersion;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "version": "5.5.0",
3
+ "version": "5.6.0",
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.5.0"
61
+ "version": "5.6.0"
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.5.0",
68
+ "version": "5.6.0",
69
69
  "note": "Skills are now included in the main repository under skills/"
70
70
  }
71
71
  },
@@ -1042,7 +1042,7 @@
1042
1042
  },
1043
1043
  "category": "skill",
1044
1044
  "skillName": "testing-guide",
1045
- "description": "Testing pyramid and recommended coverage ratios (70/20/7/3)",
1045
+ "description": "Testing structure, FIRST principles, AAA pattern, and framework options. Coverage policy superseded by full-coverage-testing (XSPEC-178).",
1046
1046
  "options": {
1047
1047
  "test_level": {
1048
1048
  "default": null,
@@ -1088,6 +1088,18 @@
1088
1088
  }
1089
1089
  }
1090
1090
  },
1091
+ {
1092
+ "id": "full-coverage-testing",
1093
+ "name": "Full Coverage Testing Standards",
1094
+ "nameZh": "全覆蓋測試標準",
1095
+ "source": {
1096
+ "human": "core/testing-standards.md",
1097
+ "ai": "ai/standards/full-coverage-testing.ai.yaml"
1098
+ },
1099
+ "category": "skill",
1100
+ "skillName": "testing-guide",
1101
+ "description": "Behavior-completeness full coverage paradigm: ratchet CI, anti-fake-test rules (no tautology/business-logic mock), STUB marker protocol (pre-push + deploy gates), @ac traceability. Replaces pyramid thresholds (XSPEC-178)."
1102
+ },
1091
1103
  {
1092
1104
  "id": "documentation-structure",
1093
1105
  "name": "Documentation Structure",
@@ -2580,6 +2592,50 @@
2580
2592
  },
2581
2593
  "category": "deployment",
2582
2594
  "description": "Machine-readable per-release Quality Manifest aggregating all gate results (coverage, mutation, CVE, SAST, E2E, container scan, SBOM, LLM hallucination). Auto-generated by CI; customer-shareable."
2595
+ },
2596
+ {
2597
+ "id": "release-readiness-gate",
2598
+ "name": "Release Readiness Gate",
2599
+ "nameZh": "釋出準備閘門",
2600
+ "source": {
2601
+ "human": "core/release-readiness-gate.md",
2602
+ "ai": "ai/standards/release-readiness-gate.ai.yaml"
2603
+ },
2604
+ "category": "deployment",
2605
+ "description": "Single aggregated release gate covering 16 quality dimensions (Security, a11y, Performance, Contract, DB Migration, Cross-flow Regression, Operational Readiness, i18n, Browser Compat, Capacity, Compliance, Docs, Rollback, Smoke, Feature Flags, Multi-Gate Flow). Tiered sign-off template with RQM integration."
2606
+ },
2607
+ {
2608
+ "id": "contract-testing-standards",
2609
+ "name": "Contract Testing Standards",
2610
+ "nameZh": "合約測試標準",
2611
+ "source": {
2612
+ "human": "core/contract-testing-standards.md",
2613
+ "ai": "ai/standards/contract-testing-standards.ai.yaml"
2614
+ },
2615
+ "category": "testing",
2616
+ "description": "Consumer-driven contract testing (Pact/Spring Cloud Contract): consumer-driven flow, schema matchers, N-1 backward compatibility window, can-i-deploy release gate. Applies to projects with API consumers."
2617
+ },
2618
+ {
2619
+ "id": "cross-flow-regression",
2620
+ "name": "Cross-Flow Regression",
2621
+ "nameZh": "跨流程回歸測試",
2622
+ "source": {
2623
+ "human": "core/cross-flow-regression.md",
2624
+ "ai": "ai/standards/cross-flow-regression.ai.yaml"
2625
+ },
2626
+ "category": "testing",
2627
+ "description": "Cross-flow regression complementing per-flow Multi-Gate: Critical User Journey (CUJ) suite, sequential state threading, inter-flow state contamination detection. CUJ pass rate ≥ 95% required per release."
2628
+ },
2629
+ {
2630
+ "id": "browser-compatibility-standards",
2631
+ "name": "Browser Compatibility Standards",
2632
+ "nameZh": "瀏覽器相容性標準",
2633
+ "source": {
2634
+ "human": "core/browser-compatibility-standards.md",
2635
+ "ai": "ai/standards/browser-compatibility-standards.ai.yaml"
2636
+ },
2637
+ "category": "testing",
2638
+ "description": "Browser/device support matrix (Tier-1/2/3), Playwright matrix config, viewport coverage (360/768/1280px), real iOS device testing, release gate. Applies to frontend/web projects; N/A for CLI/backend."
2583
2639
  }
2584
2640
  ]
2585
2641
  }