universal-dev-standards 3.5.1-beta.20 → 3.5.1-beta.22

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/bin/uds.js CHANGED
@@ -85,6 +85,7 @@ program
85
85
  .option('--beta', 'Check for beta version updates')
86
86
  .option('--skills', 'Install/update Skills for configured AI tools')
87
87
  .option('--commands', 'Install/update slash commands for configured AI tools')
88
+ .option('--debug', 'Show debug output for Skills/Commands detection')
88
89
  .action(updateCommand);
89
90
 
90
91
  program
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "universal-dev-standards",
3
- "version": "3.5.1-beta.20",
3
+ "version": "3.5.1-beta.22",
4
4
  "description": "CLI tool for adopting Universal Development Standards",
5
5
  "keywords": [
6
6
  "documentation",
@@ -534,11 +534,11 @@ async function handleSkillsConfiguration(manifest, projectPath, msg, common, spe
534
534
 
535
535
  // Validate skillsLocation if provided
536
536
  const validLocations = ['project', 'user'];
537
- const location = skillsLocation && validLocations.includes(skillsLocation) ? skillsLocation : 'project';
537
+ const level = skillsLocation && validLocations.includes(skillsLocation) ? skillsLocation : 'project';
538
538
 
539
539
  // Install to specified level (defaults to project)
540
- const installations = [{ agent: specificTool, location }];
541
- const spinner = ora(`Installing Skills for ${getAgentDisplayName(specificTool)} (${location} level)...`).start();
540
+ const installations = [{ agent: specificTool, level }];
541
+ const spinner = ora(`Installing Skills for ${getAgentDisplayName(specificTool)} (${level} level)...`).start();
542
542
  const result = await installSkillsToMultipleAgents(installations, null, projectPath);
543
543
  spinner.stop();
544
544
 
@@ -418,7 +418,7 @@ export async function updateCommand(options) {
418
418
  // Check for new features (Skills/Commands) not yet installed or outdated
419
419
  if (!options.standardsOnly) {
420
420
  const latestSkillsVersion = repoInfo.skills.version;
421
- const { missingSkills, outdatedSkills, missingCommands } = checkNewFeatures(projectPath, manifest, latestSkillsVersion);
421
+ const { missingSkills, outdatedSkills, missingCommands } = checkNewFeatures(projectPath, manifest, latestSkillsVersion, options.debug);
422
422
 
423
423
  if (missingSkills.length > 0 || outdatedSkills.length > 0 || missingCommands.length > 0) {
424
424
  if (!options.yes) {
@@ -1058,12 +1058,28 @@ async function updateCommandsOnly(projectPath, manifest) {
1058
1058
  * @param {string} projectPath - Project path
1059
1059
  * @param {Object} manifest - Manifest object
1060
1060
  * @param {string} latestSkillsVersion - Latest skills version from repository
1061
+ * @param {boolean} debug - Show debug output
1061
1062
  * @returns {{missingSkills: Array, outdatedSkills: Array, missingCommands: Array}}
1062
1063
  */
1063
- function checkNewFeatures(projectPath, manifest, latestSkillsVersion) {
1064
+ function checkNewFeatures(projectPath, manifest, latestSkillsVersion, debug = false) {
1064
1065
  const aiTools = manifest.aiTools || [];
1065
1066
 
1067
+ if (debug) {
1068
+ console.log();
1069
+ console.log(chalk.cyan('━'.repeat(50)));
1070
+ console.log(chalk.cyan.bold('🔍 Skills/Commands Detection Debug'));
1071
+ console.log(chalk.cyan('━'.repeat(50)));
1072
+ console.log(chalk.gray(` aiTools in manifest: ${JSON.stringify(aiTools)}`));
1073
+ console.log(chalk.gray(` declinedFeatures.skills: ${JSON.stringify(manifest.declinedFeatures?.skills || [])}`));
1074
+ console.log(chalk.gray(` declinedFeatures.commands: ${JSON.stringify(manifest.declinedFeatures?.commands || [])}`));
1075
+ console.log(chalk.gray(` manifest.skills.location: ${manifest.skills?.location || 'not set'}`));
1076
+ console.log();
1077
+ }
1078
+
1066
1079
  if (aiTools.length === 0) {
1080
+ if (debug) {
1081
+ console.log(chalk.yellow(' No aiTools in manifest, skipping detection'));
1082
+ }
1067
1083
  return { missingSkills: [], outdatedSkills: [], missingCommands: [] };
1068
1084
  }
1069
1085
 
@@ -1076,8 +1092,23 @@ function checkNewFeatures(projectPath, manifest, latestSkillsVersion) {
1076
1092
  const missingCommands = [];
1077
1093
 
1078
1094
  for (const tool of aiTools) {
1095
+ if (debug) {
1096
+ console.log(chalk.cyan(` Checking tool: ${tool}`));
1097
+ }
1098
+
1079
1099
  const config = getAgentConfig(tool);
1080
- if (!config) continue;
1100
+ if (!config) {
1101
+ if (debug) {
1102
+ console.log(chalk.red(` ✗ No config found for '${tool}' - skipping`));
1103
+ }
1104
+ continue;
1105
+ }
1106
+
1107
+ if (debug) {
1108
+ console.log(chalk.gray(` config.supportsSkills: ${config.supportsSkills}`));
1109
+ console.log(chalk.gray(` config.skills: ${config.skills ? 'defined' : 'null'}`));
1110
+ console.log(chalk.gray(` config.commands: ${config.commands ? 'defined' : 'null'}`));
1111
+ }
1081
1112
 
1082
1113
  // Check Skills support
1083
1114
  if (config.supportsSkills && config.skills) {
@@ -1092,8 +1123,20 @@ function checkNewFeatures(projectPath, manifest, latestSkillsVersion) {
1092
1123
  // (manifest records can be stale if user deleted the directory)
1093
1124
  const hasSkills = projectInfo?.installed || userInfo?.installed || usingMarketplace;
1094
1125
 
1126
+ if (debug) {
1127
+ console.log(chalk.gray(' Skills check:'));
1128
+ console.log(chalk.gray(` projectInfo?.installed: ${projectInfo?.installed || false}`));
1129
+ console.log(chalk.gray(` userInfo?.installed: ${userInfo?.installed || false}`));
1130
+ console.log(chalk.gray(` usingMarketplace: ${usingMarketplace}`));
1131
+ console.log(chalk.gray(` hasSkills: ${hasSkills}`));
1132
+ console.log(chalk.gray(` declinedSkills.includes('${tool}'): ${declinedSkills.includes(tool)}`));
1133
+ }
1134
+
1095
1135
  // Skip if user previously declined this tool's skills
1096
1136
  if (!hasSkills && !declinedSkills.includes(tool)) {
1137
+ if (debug) {
1138
+ console.log(chalk.green(' ✓ Added to missingSkills'));
1139
+ }
1097
1140
  missingSkills.push({
1098
1141
  agent: tool,
1099
1142
  displayName: getAgentDisplayName(tool),
@@ -1106,6 +1149,9 @@ function checkNewFeatures(projectPath, manifest, latestSkillsVersion) {
1106
1149
 
1107
1150
  // Skip marketplace (auto-updates) and unknown versions
1108
1151
  if (!usingMarketplace && installedVersion && installedVersion !== latestSkillsVersion) {
1152
+ if (debug) {
1153
+ console.log(chalk.yellow(` ✓ Added to outdatedSkills (${installedVersion} → ${latestSkillsVersion})`));
1154
+ }
1109
1155
  outdatedSkills.push({
1110
1156
  agent: tool,
1111
1157
  displayName: getAgentDisplayName(tool),
@@ -1115,8 +1161,17 @@ function checkNewFeatures(projectPath, manifest, latestSkillsVersion) {
1115
1161
  level: userInfo?.installed ? 'user' : 'project',
1116
1162
  path: installedInfo?.path
1117
1163
  });
1164
+ } else if (debug) {
1165
+ if (hasSkills) {
1166
+ console.log(chalk.gray(' - Skills already installed (hasSkills=true)'));
1167
+ }
1168
+ if (declinedSkills.includes(tool)) {
1169
+ console.log(chalk.gray(' - Previously declined by user'));
1170
+ }
1118
1171
  }
1119
1172
  }
1173
+ } else if (debug) {
1174
+ console.log(chalk.gray(' Skills: not supported or not configured'));
1120
1175
  }
1121
1176
 
1122
1177
  // Check Commands support
@@ -1126,17 +1181,47 @@ function checkNewFeatures(projectPath, manifest, latestSkillsVersion) {
1126
1181
  // Only trust actual file existence, not manifest records
1127
1182
  const hasCommands = cmdInfo?.installed;
1128
1183
 
1184
+ if (debug) {
1185
+ console.log(chalk.gray(' Commands check:'));
1186
+ console.log(chalk.gray(` cmdInfo?.installed: ${cmdInfo?.installed || false}`));
1187
+ console.log(chalk.gray(` hasCommands: ${hasCommands}`));
1188
+ console.log(chalk.gray(` declinedCommands.includes('${tool}'): ${declinedCommands.includes(tool)}`));
1189
+ }
1190
+
1129
1191
  // Skip if user previously declined this tool's commands
1130
1192
  if (!hasCommands && !declinedCommands.includes(tool)) {
1193
+ if (debug) {
1194
+ console.log(chalk.green(' ✓ Added to missingCommands'));
1195
+ }
1131
1196
  missingCommands.push({
1132
1197
  agent: tool,
1133
1198
  displayName: getAgentDisplayName(tool),
1134
1199
  path: config.commands.project
1135
1200
  });
1201
+ } else if (debug) {
1202
+ if (hasCommands) {
1203
+ console.log(chalk.gray(' - Commands already installed'));
1204
+ }
1205
+ if (declinedCommands.includes(tool)) {
1206
+ console.log(chalk.gray(' - Previously declined by user'));
1207
+ }
1136
1208
  }
1209
+ } else if (debug) {
1210
+ console.log(chalk.gray(' Commands: not supported'));
1211
+ }
1212
+
1213
+ if (debug) {
1214
+ console.log();
1137
1215
  }
1138
1216
  }
1139
1217
 
1218
+ if (debug) {
1219
+ console.log(chalk.cyan('━'.repeat(50)));
1220
+ console.log(chalk.cyan(`Result: ${missingSkills.length} missing Skills, ${outdatedSkills.length} outdated Skills, ${missingCommands.length} missing Commands`));
1221
+ console.log(chalk.cyan('━'.repeat(50)));
1222
+ console.log();
1223
+ }
1224
+
1140
1225
  return { missingSkills, outdatedSkills, missingCommands };
1141
1226
  }
1142
1227
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "version": "3.5.1-beta.20",
3
+ "version": "3.5.1-beta.22",
4
4
  "lastUpdated": "2026-01-19",
5
5
  "description": "Standards registry for universal-dev-standards with integrated skills and AI-optimized formats",
6
6
  "formats": {
@@ -48,14 +48,14 @@
48
48
  "standards": {
49
49
  "name": "universal-dev-standards",
50
50
  "url": "https://github.com/AsiaOstrich/universal-dev-standards",
51
- "version": "3.5.1-beta.20"
51
+ "version": "3.5.1-beta.22"
52
52
  },
53
53
  "skills": {
54
54
  "name": "universal-dev-standards",
55
55
  "url": "https://github.com/AsiaOstrich/universal-dev-standards",
56
56
  "localPath": "skills/claude-code",
57
57
  "rawUrl": "https://raw.githubusercontent.com/AsiaOstrich/universal-dev-standards/main/skills/claude-code",
58
- "version": "3.5.1-beta.20",
58
+ "version": "3.5.1-beta.22",
59
59
  "note": "Skills are now included in the main repository under skills/"
60
60
  }
61
61
  },