universal-dev-standards 5.7.2 → 5.8.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "universal-dev-standards",
3
- "version": "5.7.2",
3
+ "version": "5.8.0",
4
4
  "description": "CLI tool for adopting Universal Development Standards",
5
5
  "keywords": [
6
6
  "documentation",
@@ -414,10 +414,9 @@ export async function updateCommand(options) {
414
414
  let resolvedStd = std;
415
415
  if (!std.includes('/') && !std.includes('.')) {
416
416
  const entry = allStdsDisplay.find(r => r.id === std);
417
- if (entry) {
418
- const src = getStandardSource(entry, displayFormat);
419
- if (src) resolvedStd = src;
420
- }
417
+ if (!entry) continue; // Skip unrecognized IDs (e.g. stale AI tool names)
418
+ const src = getStandardSource(entry, displayFormat);
419
+ if (src) resolvedStd = src;
421
420
  }
422
421
  const fileName = resolvedStd.split('/').pop();
423
422
  const displayPath = getStandardTargetDir(resolvedStd) + '/' + fileName;
@@ -476,10 +475,9 @@ export async function updateCommand(options) {
476
475
  let sourcePath = std;
477
476
  if (!std.includes('/') && !std.includes('.')) {
478
477
  const entry = allStdsUpdate.find(r => r.id === std);
479
- if (entry) {
480
- const src = getStandardSource(entry, updateFormat);
481
- if (src) sourcePath = src;
482
- }
478
+ if (!entry) continue; // Skip unrecognized IDs (e.g. stale AI tool names)
479
+ const src = getStandardSource(entry, updateFormat);
480
+ if (src) sourcePath = src;
483
481
  }
484
482
  const result = await copyStandard(sourcePath, getStandardTargetDir(sourcePath), projectPath);
485
483
  if (result.success) {
@@ -645,10 +643,9 @@ export async function updateCommand(options) {
645
643
  let resolvedPath = std;
646
644
  if (!std.includes('/') && !std.includes('.')) {
647
645
  const entry = allStdsHash.find(r => r.id === std);
648
- if (entry) {
649
- const src = getStandardSource(entry, hashFormat);
650
- if (src) resolvedPath = src;
651
- }
646
+ if (!entry) continue; // Skip unrecognized IDs (e.g. stale AI tool names)
647
+ const src = getStandardSource(entry, hashFormat);
648
+ if (src) resolvedPath = src;
652
649
  }
653
650
  const fileName = basename(resolvedPath);
654
651
  const relativePath = (resolvedPath.includes('options/')
@@ -758,10 +755,9 @@ export async function updateCommand(options) {
758
755
  let resolvedStd = std;
759
756
  if (!std.includes('/') && !std.includes('.')) {
760
757
  const entry = allStdsTrack.find(r => r.id === std);
761
- if (entry) {
762
- const src = getStandardSource(entry, trackFormat);
763
- if (src) resolvedStd = src;
764
- }
758
+ if (!entry) continue; // Skip unrecognized IDs (e.g. stale AI tool names)
759
+ const src = getStandardSource(entry, trackFormat);
760
+ if (src) resolvedStd = src;
765
761
  }
766
762
  const fileName = basename(resolvedStd);
767
763
  const relativePath = resolvedStd.includes('options/')
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "version": "5.7.2",
4
- "lastUpdated": "2026-04-16",
3
+ "version": "5.8.0",
4
+ "lastUpdated": "2026-05-12",
5
5
  "description": "Standards registry for universal-dev-standards with integrated skills and AI-optimized formats",
6
6
  "formats": {
7
7
  "ai": {
@@ -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.7.2"
61
+ "version": "5.8.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.7.2",
68
+ "version": "5.8.0",
69
69
  "note": "Skills are now included in the main repository under skills/"
70
70
  }
71
71
  },
@@ -1668,7 +1668,31 @@
1668
1668
  },
1669
1669
  "category": "reference",
1670
1670
  "skillName": null,
1671
- "description": "AC-to-test traceability matrix, coverage calculation, and spec generation quality rules"
1671
+ "description": "AC-to-test traceability matrix, coverage calculation (with not_implemented gate), and spec generation quality rules"
1672
+ },
1673
+ {
1674
+ "id": "feature-manifest-standard",
1675
+ "name": "Feature Manifest Standard",
1676
+ "nameZh": "功能盤點清單標準",
1677
+ "source": {
1678
+ "human": "core/feature-manifest-standard.md",
1679
+ "ai": "ai/standards/feature-manifest-standard.ai.yaml"
1680
+ },
1681
+ "category": "reference",
1682
+ "skillName": null,
1683
+ "description": "Machine-readable FM-NNN feature inventory format for migration/refactoring projects; FEATURE_STUB protocol and completeness gates"
1684
+ },
1685
+ {
1686
+ "id": "behavior-snapshot",
1687
+ "name": "Behavior Snapshot Standard",
1688
+ "nameZh": "行為快照標準",
1689
+ "source": {
1690
+ "human": "core/behavior-snapshot.md",
1691
+ "ai": "ai/standards/behavior-snapshot.ai.yaml"
1692
+ },
1693
+ "category": "reference",
1694
+ "skillName": null,
1695
+ "description": "HTTP golden-file snapshot format for migration parity verification and refactoring characterization (Gate 0/1 protocol)"
1672
1696
  },
1673
1697
  {
1674
1698
  "id": "change-batching",