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 +1 -1
- package/src/commands/init.js +20 -6
- package/src/utils/skills-installer.js +30 -9
- package/standards-registry.json +3 -3
package/package.json
CHANGED
package/src/commands/init.js
CHANGED
|
@@ -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
|
-
//
|
|
916
|
-
|
|
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:
|
|
919
|
-
merge_strategy:
|
|
920
|
-
commit_language:
|
|
921
|
-
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
|
-
//
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
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 {
|
package/standards-registry.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"version": "3.5.1-beta.
|
|
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.
|
|
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.
|
|
58
|
+
"version": "3.5.1-beta.8",
|
|
59
59
|
"note": "Skills are now included in the main repository under skills/"
|
|
60
60
|
}
|
|
61
61
|
},
|