universal-dev-standards 3.5.1-beta.6 → 3.5.1-beta.8

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": "3.5.1-beta.6",
3
+ "version": "3.5.1-beta.8",
4
4
  "description": "CLI tool for adopting Universal Development Standards",
5
5
  "keywords": [
6
6
  "documentation",
@@ -384,6 +384,9 @@ export async function initCommand(options) {
384
384
  return k;
385
385
  });
386
386
 
387
+ // Assign normalized AI tools to manifest variable
388
+ aiTools = aiToolsNormalized;
389
+
387
390
  // Check if only skills-compatible tools are detected
388
391
  const hasSkillsCompatibleTool = aiToolsNormalized.some(t => t === 'claude-code' || t === 'opencode');
389
392
  const onlySkillsCompatibleTools = aiToolsNormalized.every(t => t === 'claude-code' || t === 'opencode');
@@ -462,6 +465,17 @@ export async function initCommand(options) {
462
465
  };
463
466
  }
464
467
  }
468
+
469
+ // Auto-install commands for detected agents that support commands
470
+ // This matches the interactive mode behavior where commands are checked by default
471
+ const commandsSupportedAgents = aiToolsNormalized.filter(tool => {
472
+ const config = getAgentConfig(tool);
473
+ return config?.commands !== null;
474
+ });
475
+
476
+ if (commandsSupportedAgents.length > 0) {
477
+ skillsConfig.commandsInstallations = commandsSupportedAgents;
478
+ }
465
479
  }
466
480
 
467
481
  // Configuration summary
@@ -912,13 +926,13 @@ export async function initCommand(options) {
912
926
  // Create manifest
913
927
  const repoInfo = getRepositoryInfo();
914
928
 
915
- // Only record options for standards that were actually copied
916
- const standardsToCopyIds = new Set(standardsToCopy.map(s => s.id));
929
+ // Always record options as user preferences (for Skills and future updates)
930
+ // Even when standards aren't copied locally (minimal scope), options should be preserved
917
931
  const manifestOptions = {
918
- workflow: standardsToCopyIds.has('git-workflow') ? (standardOptions.workflow || null) : null,
919
- merge_strategy: standardsToCopyIds.has('git-workflow') ? (standardOptions.merge_strategy || null) : null,
920
- commit_language: standardsToCopyIds.has('commit-message') ? (standardOptions.commit_language || null) : null,
921
- test_levels: standardsToCopyIds.has('testing') ? (standardOptions.test_levels || []) : []
932
+ workflow: standardOptions.workflow || null,
933
+ merge_strategy: standardOptions.merge_strategy || null,
934
+ commit_language: standardOptions.commit_language || null,
935
+ test_levels: standardOptions.test_levels || []
922
936
  };
923
937
 
924
938
  // Build integrationConfigs for manifest
@@ -473,16 +473,37 @@ export function getInstalledSkillsInfoForAgent(agent, level, projectPath = null)
473
473
 
474
474
  const manifestPath = join(targetDir, '.manifest.json');
475
475
 
476
+ // Check if manifest exists
476
477
  if (!existsSync(manifestPath)) {
477
- // Skills exist but no manifest
478
- return {
479
- installed: true,
480
- version: null,
481
- source: 'unknown',
482
- agent,
483
- level,
484
- path: targetDir
485
- };
478
+ // No manifest - check if there are actual skill files (SKILL.md in subdirectories)
479
+ try {
480
+ const entries = readdirSync(targetDir, { withFileTypes: true });
481
+ const skillDirs = entries.filter(e => e.isDirectory() && !e.name.startsWith('.'));
482
+
483
+ // Check if any subdirectory contains a SKILL.md file
484
+ const hasSkillFiles = skillDirs.some(dir => {
485
+ const skillFile = join(targetDir, dir.name, 'SKILL.md');
486
+ return existsSync(skillFile);
487
+ });
488
+
489
+ if (!hasSkillFiles) {
490
+ // Empty directory or no valid skills - not installed
491
+ return null;
492
+ }
493
+
494
+ // Has skill files but no manifest
495
+ return {
496
+ installed: true,
497
+ version: null,
498
+ source: 'unknown',
499
+ agent,
500
+ level,
501
+ path: targetDir
502
+ };
503
+ } catch {
504
+ // Error reading directory - assume not installed
505
+ return null;
506
+ }
486
507
  }
487
508
 
488
509
  try {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "version": "3.5.1-beta.6",
3
+ "version": "3.5.1-beta.8",
4
4
  "lastUpdated": "2026-01-15",
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.6"
51
+ "version": "3.5.1-beta.8"
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.6",
58
+ "version": "3.5.1-beta.8",
59
59
  "note": "Skills are now included in the main repository under skills/"
60
60
  }
61
61
  },