musubi-sdd 5.7.2 → 5.9.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/README.ja.md +74 -0
- package/README.md +129 -0
- package/bin/musubi-config.js +230 -0
- package/bin/musubi-orchestrate.js +16 -0
- package/bin/musubi-release.js +415 -0
- package/bin/musubi-workflow.js +76 -7
- package/package.json +6 -2
- package/src/ai/advanced-ai.js +877 -0
- package/src/ai/index.js +52 -0
- package/src/enterprise/index.js +40 -0
- package/src/enterprise/multi-tenant.js +913 -0
- package/src/generators/changelog-generator.js +344 -0
- package/src/index.js +28 -0
- package/src/integrations/codegraph-mcp.js +538 -4
- package/src/integrations/enterprise-integrations.js +930 -0
- package/src/managers/package-manager.js +470 -0
- package/src/managers/workflow-mode-manager.js +290 -0
- package/src/managers/workflow.js +110 -12
- package/src/orchestration/builtin-skills.js +303 -0
- package/src/orchestration/index.js +20 -0
- package/src/orchestration/skill-registry.js +3 -0
- package/src/schemas/project-schema.json +296 -0
- package/src/validators/constitution-level-manager.js +387 -0
- package/src/validators/constitutional-validator.js +386 -161
- package/src/validators/project-validator.js +322 -0
package/README.ja.md
CHANGED
|
@@ -71,6 +71,80 @@ musubi init --windsurf # Windsurf IDE
|
|
|
71
71
|
|
|
72
72
|
---
|
|
73
73
|
|
|
74
|
+
## 📊 v5.9.0 の新機能
|
|
75
|
+
|
|
76
|
+
### Phase 1-4 エンタープライズ機能 🏢
|
|
77
|
+
|
|
78
|
+
大規模プロジェクトとモノレポ対応のエンタープライズ機能を大幅追加。
|
|
79
|
+
|
|
80
|
+
#### ワークフロー柔軟性(Phase 1)
|
|
81
|
+
|
|
82
|
+
- **3つのワークフローモード**: `small`(バグ修正)、`medium`(機能追加)、`large`(設計変更)
|
|
83
|
+
- **自動検出**: フィーチャー名パターンからモード自動選択
|
|
84
|
+
- **`musubi-release`**: CHANGELOG自動生成付きリリースCLI
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
# コミットからCHANGELOGを生成
|
|
88
|
+
musubi-release
|
|
89
|
+
|
|
90
|
+
# フィーチャーのモードを検出
|
|
91
|
+
musubi-workflow mode --detect "feat: ユーザー認証"
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
#### モノレポ対応(Phase 2)
|
|
95
|
+
|
|
96
|
+
- **パッケージレジストリ**: `steering/packages.yml` で依存関係管理
|
|
97
|
+
- **依存関係グラフ**: Mermaidダイアグラム生成で可視化
|
|
98
|
+
- **カバレッジ追跡**: パッケージ別テストカバレッジレポート
|
|
99
|
+
|
|
100
|
+
#### 憲法レベル管理(Phase 3)
|
|
101
|
+
|
|
102
|
+
- **3つの適用レベル**: `critical`(ブロック)、`advisory`(警告)、`flexible`(提案)
|
|
103
|
+
- **レベル別検証**: 条項の重要度に応じた異なる適用
|
|
104
|
+
- **プロジェクト別オーバーライド**: プロジェクトタイプ別カスタムレベル
|
|
105
|
+
|
|
106
|
+
| レベル | 条項 | 動作 |
|
|
107
|
+
|--------|------|------|
|
|
108
|
+
| Critical | CONST-001, 002, 003, 005, 009 | ワークフローをブロック |
|
|
109
|
+
| Advisory | CONST-004, 006, 007 | 警告のみ |
|
|
110
|
+
| Flexible | CONST-008 | 提案として表示 |
|
|
111
|
+
|
|
112
|
+
#### プロジェクト設定(Phase 4)
|
|
113
|
+
|
|
114
|
+
- **`musubi-config`**: 設定管理用新CLI
|
|
115
|
+
- **スキーマ検証**: AJVによるv2.0スキーマ検証
|
|
116
|
+
- **自動マイグレーション**: v1.0設定をv2.0に自動アップグレード
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
musubi-config validate # project.yml を検証
|
|
120
|
+
musubi-config migrate # v2.0 にマイグレーション
|
|
121
|
+
musubi-config show # 有効な設定を表示
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
#### オーケストレーター統合
|
|
125
|
+
|
|
126
|
+
プログラムアクセス用の5つの組み込みスキル:
|
|
127
|
+
|
|
128
|
+
| スキル | カテゴリ | 用途 |
|
|
129
|
+
|--------|----------|------|
|
|
130
|
+
| `release-manager` | release | CHANGELOG生成 |
|
|
131
|
+
| `workflow-mode-manager` | workflow | モード検出・管理 |
|
|
132
|
+
| `package-manager` | configuration | パッケージ・依存関係分析 |
|
|
133
|
+
| `constitution-level-manager` | validation | レベル別検証 |
|
|
134
|
+
| `project-config-manager` | configuration | 設定検証・マイグレーション |
|
|
135
|
+
|
|
136
|
+
```javascript
|
|
137
|
+
const { workflowModeSkill } = require('musubi-sdd/src/orchestration');
|
|
138
|
+
|
|
139
|
+
const result = await workflowModeSkill.execute({
|
|
140
|
+
action: 'detect',
|
|
141
|
+
featureName: 'fix: 軽微なバグ'
|
|
142
|
+
});
|
|
143
|
+
console.log(result.detectedMode); // 'small'
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
74
148
|
## 📊 v5.6.0 の新機能
|
|
75
149
|
|
|
76
150
|
### エンタープライズスケール分析 & Rustマイグレーション支援 🏢🦀
|
package/README.md
CHANGED
|
@@ -71,6 +71,135 @@ musubi init --windsurf # Windsurf IDE
|
|
|
71
71
|
|
|
72
72
|
---
|
|
73
73
|
|
|
74
|
+
## 📊 What's New in v5.9.0
|
|
75
|
+
|
|
76
|
+
### Phase 1-4 Enterprise Features 🏢
|
|
77
|
+
|
|
78
|
+
Major update with enterprise-ready features for large-scale projects and monorepo support.
|
|
79
|
+
|
|
80
|
+
#### Workflow Flexibility (Phase 1)
|
|
81
|
+
|
|
82
|
+
- **3 Workflow Modes**: `small` (bug fixes), `medium` (features), `large` (architecture)
|
|
83
|
+
- **Auto-detection**: Smart mode selection based on feature name patterns
|
|
84
|
+
- **`musubi-release`**: New CLI for release automation with CHANGELOG generation
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
# Generate CHANGELOG from commits
|
|
88
|
+
musubi-release
|
|
89
|
+
|
|
90
|
+
# Show detected mode for a feature
|
|
91
|
+
musubi-workflow mode --detect "feat: user authentication"
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
#### Monorepo Support (Phase 2)
|
|
95
|
+
|
|
96
|
+
- **Package Registry**: `steering/packages.yml` for dependency management
|
|
97
|
+
- **Dependency Graphs**: Mermaid diagram generation for visualization
|
|
98
|
+
- **Coverage Tracking**: Per-package test coverage reporting
|
|
99
|
+
|
|
100
|
+
#### Constitution Level Management (Phase 3)
|
|
101
|
+
|
|
102
|
+
- **3 Enforcement Levels**: `critical` (blocking), `advisory` (warnings), `flexible` (suggestions)
|
|
103
|
+
- **Level-aware Validation**: Different enforcement based on article importance
|
|
104
|
+
- **Project Overrides**: Custom levels per project type
|
|
105
|
+
|
|
106
|
+
| Level | Articles | Behavior |
|
|
107
|
+
|-------|----------|----------|
|
|
108
|
+
| Critical | CONST-001, 002, 003, 005, 009 | Blocks workflow |
|
|
109
|
+
| Advisory | CONST-004, 006, 007 | Warnings only |
|
|
110
|
+
| Flexible | CONST-008 | Suggestions |
|
|
111
|
+
|
|
112
|
+
#### Project Configuration (Phase 4)
|
|
113
|
+
|
|
114
|
+
- **`musubi-config`**: New CLI for configuration management
|
|
115
|
+
- **Schema Validation**: v2.0 schema with AJV validation
|
|
116
|
+
- **Auto-migration**: Upgrade v1.0 configs to v2.0
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
musubi-config validate # Validate project.yml
|
|
120
|
+
musubi-config migrate # Migrate to v2.0
|
|
121
|
+
musubi-config show # Show effective config
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
#### Orchestrator Integration
|
|
125
|
+
|
|
126
|
+
5 new built-in skills for programmatic access:
|
|
127
|
+
|
|
128
|
+
| Skill | Category | Usage |
|
|
129
|
+
|-------|----------|-------|
|
|
130
|
+
| `release-manager` | release | CHANGELOG generation |
|
|
131
|
+
| `workflow-mode-manager` | workflow | Mode detection & management |
|
|
132
|
+
| `package-manager` | configuration | Package & dependency analysis |
|
|
133
|
+
| `constitution-level-manager` | validation | Level-aware validation |
|
|
134
|
+
| `project-config-manager` | configuration | Config validation & migration |
|
|
135
|
+
|
|
136
|
+
```javascript
|
|
137
|
+
const { workflowModeSkill } = require('musubi-sdd/src/orchestration');
|
|
138
|
+
|
|
139
|
+
const result = await workflowModeSkill.execute({
|
|
140
|
+
action: 'detect',
|
|
141
|
+
featureName: 'fix: minor bug'
|
|
142
|
+
});
|
|
143
|
+
console.log(result.detectedMode); // 'small'
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## 📊 What's New in v5.8.0
|
|
149
|
+
|
|
150
|
+
### CodeGraph MCP v0.8.0 Integration 🔗
|
|
151
|
+
|
|
152
|
+
Major update to CodeGraph MCP integration with expanded language support and new features.
|
|
153
|
+
|
|
154
|
+
#### 16 Language Support (NEW: Kotlin, Swift, Scala, Lua)
|
|
155
|
+
|
|
156
|
+
- **Python, TypeScript, JavaScript** - Full AST analysis
|
|
157
|
+
- **Rust, Go, Java, PHP, C#** - Enterprise language support
|
|
158
|
+
- **C, C++, HCL (Terraform)** - System and infrastructure code
|
|
159
|
+
- **Ruby** - Dynamic language support
|
|
160
|
+
- **Kotlin** (NEW) - `.kt`, `.kts` files with classes, interfaces, functions
|
|
161
|
+
- **Swift** (NEW) - `.swift` files with classes, structs, protocols
|
|
162
|
+
- **Scala** (NEW) - `.scala`, `.sc` files with traits, objects
|
|
163
|
+
- **Lua** (NEW) - `.lua` files with functions, table assignments
|
|
164
|
+
|
|
165
|
+
#### File Watching & Auto Re-indexing
|
|
166
|
+
|
|
167
|
+
- **`codegraph-mcp watch`** - Real-time file monitoring
|
|
168
|
+
- **Debounce configuration** - Configurable delay (default: 1.0s)
|
|
169
|
+
- **Community detection** - Optional `--community` flag after re-index
|
|
170
|
+
|
|
171
|
+
#### Enhanced MCP Tools (14 Tools)
|
|
172
|
+
|
|
173
|
+
| Category | Tools |
|
|
174
|
+
|----------|-------|
|
|
175
|
+
| **Graph Query** | `query_codebase`, `find_dependencies`, `find_callers`, `find_callees`, `find_implementations`, `analyze_module_structure` |
|
|
176
|
+
| **Code Retrieval** | `get_code_snippet`, `read_file_content`, `get_file_structure` |
|
|
177
|
+
| **GraphRAG** | `global_search`, `local_search` |
|
|
178
|
+
| **Management** | `suggest_refactoring`, `reindex_repository`, `execute_shell_command` |
|
|
179
|
+
|
|
180
|
+
#### Security & Performance (v0.7.3)
|
|
181
|
+
|
|
182
|
+
- **Security fixes**: Path traversal and command injection protection
|
|
183
|
+
- **Connection pooling**: Improved database performance
|
|
184
|
+
- **Caching**: Faster repeated queries
|
|
185
|
+
|
|
186
|
+
```javascript
|
|
187
|
+
// Use CodeGraph MCP integration
|
|
188
|
+
const { CodeGraphIntegration } = require('musubi-sdd');
|
|
189
|
+
|
|
190
|
+
const cg = new CodeGraphIntegration('/path/to/repo');
|
|
191
|
+
await cg.indexRepository();
|
|
192
|
+
|
|
193
|
+
// File watching (v0.7.0+)
|
|
194
|
+
await cg.startWatch({ debounce: 2.0, community: true });
|
|
195
|
+
|
|
196
|
+
// Query codebase
|
|
197
|
+
const results = await cg.queryCodebase('authentication');
|
|
198
|
+
const callers = await cg.findCallers('UserService::login');
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
74
203
|
## 📊 What's New in v5.6.0
|
|
75
204
|
|
|
76
205
|
### Enterprise-Scale Analysis & Rust Migration Support 🏢🦀
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* musubi-config CLI
|
|
5
|
+
*
|
|
6
|
+
* Manage project configuration (project.yml)
|
|
7
|
+
* - validate: Validate project.yml against schema
|
|
8
|
+
* - migrate: Migrate v1.0 to v2.0
|
|
9
|
+
* - show: Display effective configuration
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
const { Command } = require('commander');
|
|
13
|
+
const { ProjectValidator } = require('../src/validators/project-validator');
|
|
14
|
+
const chalk = require('chalk');
|
|
15
|
+
|
|
16
|
+
const program = new Command();
|
|
17
|
+
|
|
18
|
+
program
|
|
19
|
+
.name('musubi-config')
|
|
20
|
+
.description('MUSUBI Project Configuration Manager')
|
|
21
|
+
.version('1.0.0');
|
|
22
|
+
|
|
23
|
+
program
|
|
24
|
+
.command('validate')
|
|
25
|
+
.description('Validate project.yml against schema')
|
|
26
|
+
.option('-d, --dir <path>', 'Project directory', process.cwd())
|
|
27
|
+
.option('--strict', 'Treat warnings as errors')
|
|
28
|
+
.action(async options => {
|
|
29
|
+
try {
|
|
30
|
+
const validator = new ProjectValidator(options.dir);
|
|
31
|
+
const result = await validator.validateConfig();
|
|
32
|
+
|
|
33
|
+
console.log('\n📋 Project Configuration Validation\n');
|
|
34
|
+
console.log(`Schema Version: ${result.schemaVersion}`);
|
|
35
|
+
console.log(`Valid: ${result.valid ? chalk.green('✓ Yes') : chalk.red('✗ No')}`);
|
|
36
|
+
|
|
37
|
+
if (result.needsMigration) {
|
|
38
|
+
console.log(chalk.yellow('\n⚠️ Migration recommended: v1.0 → v2.0'));
|
|
39
|
+
console.log(' Run: musubi-config migrate');
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (result.errors.length > 0) {
|
|
43
|
+
console.log(chalk.red('\n❌ Errors:'));
|
|
44
|
+
result.errors.forEach(err => {
|
|
45
|
+
console.log(` • ${err.path}: ${err.message}`);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (result.warnings.length > 0) {
|
|
50
|
+
console.log(chalk.yellow('\n⚠️ Warnings:'));
|
|
51
|
+
result.warnings.forEach(warn => {
|
|
52
|
+
console.log(` • ${warn.path}: ${warn.message}`);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if (result.valid && result.errors.length === 0) {
|
|
57
|
+
console.log(chalk.green('\n✅ Configuration is valid'));
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const exitCode = result.errors.length > 0 || (options.strict && result.warnings.length > 0) ? 1 : 0;
|
|
61
|
+
process.exit(exitCode);
|
|
62
|
+
} catch (error) {
|
|
63
|
+
console.error(chalk.red(`Error: ${error.message}`));
|
|
64
|
+
process.exit(1);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
program
|
|
69
|
+
.command('migrate')
|
|
70
|
+
.description('Migrate project.yml from v1.0 to v2.0')
|
|
71
|
+
.option('-d, --dir <path>', 'Project directory', process.cwd())
|
|
72
|
+
.option('--dry-run', 'Show changes without saving')
|
|
73
|
+
.action(async options => {
|
|
74
|
+
try {
|
|
75
|
+
const validator = new ProjectValidator(options.dir);
|
|
76
|
+
const result = await validator.migrateToV2();
|
|
77
|
+
|
|
78
|
+
console.log('\n📦 Project Configuration Migration\n');
|
|
79
|
+
|
|
80
|
+
if (!result.migrated) {
|
|
81
|
+
console.log(chalk.green(result.message));
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
console.log(chalk.cyan('Migration changes:'));
|
|
86
|
+
console.log(` • schema_version: 1.0 → 2.0`);
|
|
87
|
+
console.log(` • package_type: ${result.config.package_type}`);
|
|
88
|
+
console.log(` • workflow.mode: ${result.config.workflow?.mode}`);
|
|
89
|
+
console.log(` • workflow.auto_detect_mode: ${result.config.workflow?.auto_detect_mode}`);
|
|
90
|
+
console.log(` • constitution section added`);
|
|
91
|
+
|
|
92
|
+
if (options.dryRun) {
|
|
93
|
+
console.log(chalk.yellow('\n[Dry run] No changes saved'));
|
|
94
|
+
} else {
|
|
95
|
+
await validator.saveConfig(result.config);
|
|
96
|
+
console.log(chalk.green('\n✅ Migration complete'));
|
|
97
|
+
console.log(` Backup saved to: steering/project.yml.backup`);
|
|
98
|
+
}
|
|
99
|
+
} catch (error) {
|
|
100
|
+
console.error(chalk.red(`Error: ${error.message}`));
|
|
101
|
+
process.exit(1);
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
program
|
|
106
|
+
.command('show')
|
|
107
|
+
.description('Display effective configuration')
|
|
108
|
+
.option('-d, --dir <path>', 'Project directory', process.cwd())
|
|
109
|
+
.option('--json', 'Output as JSON')
|
|
110
|
+
.action(async options => {
|
|
111
|
+
try {
|
|
112
|
+
const validator = new ProjectValidator(options.dir);
|
|
113
|
+
const report = await validator.generateReport();
|
|
114
|
+
|
|
115
|
+
if (options.json) {
|
|
116
|
+
console.log(JSON.stringify(report, null, 2));
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
console.log('\n📊 Effective Project Configuration\n');
|
|
121
|
+
console.log(`Project: ${report.projectRoot}`);
|
|
122
|
+
console.log(`Schema Version: ${report.effective.schema_version}`);
|
|
123
|
+
console.log(`Package Type: ${report.effective.package_type}`);
|
|
124
|
+
console.log(`Workflow Mode: ${report.effective.workflow_mode}`);
|
|
125
|
+
console.log(`Coverage Threshold: ${report.effective.coverage_threshold || 80}%`);
|
|
126
|
+
|
|
127
|
+
if (report.effective.constitution_overrides) {
|
|
128
|
+
console.log('\nConstitution Overrides:');
|
|
129
|
+
Object.entries(report.effective.constitution_overrides).forEach(([key, value]) => {
|
|
130
|
+
console.log(` • ${key}: ${JSON.stringify(value)}`);
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
console.log('\nValidation:');
|
|
135
|
+
console.log(` Valid: ${report.validation.valid ? 'Yes' : 'No'}`);
|
|
136
|
+
console.log(` Errors: ${report.validation.errors.length}`);
|
|
137
|
+
console.log(` Warnings: ${report.validation.warnings.length}`);
|
|
138
|
+
} catch (error) {
|
|
139
|
+
console.error(chalk.red(`Error: ${error.message}`));
|
|
140
|
+
process.exit(1);
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
program
|
|
145
|
+
.command('init')
|
|
146
|
+
.description('Create a new project.yml with v2.0 schema')
|
|
147
|
+
.option('-d, --dir <path>', 'Project directory', process.cwd())
|
|
148
|
+
.option('-n, --name <name>', 'Project name')
|
|
149
|
+
.option('-t, --type <type>', 'Package type', 'application')
|
|
150
|
+
.action(async options => {
|
|
151
|
+
try {
|
|
152
|
+
const fs = require('fs-extra');
|
|
153
|
+
const path = require('path');
|
|
154
|
+
const yaml = require('js-yaml');
|
|
155
|
+
|
|
156
|
+
const projectRoot = options.dir;
|
|
157
|
+
const configPath = path.join(projectRoot, 'steering/project.yml');
|
|
158
|
+
|
|
159
|
+
if (await fs.pathExists(configPath)) {
|
|
160
|
+
console.log(chalk.yellow('project.yml already exists. Use "migrate" to upgrade.'));
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
await fs.ensureDir(path.join(projectRoot, 'steering'));
|
|
165
|
+
|
|
166
|
+
const projectName = options.name || path.basename(projectRoot);
|
|
167
|
+
const config = {
|
|
168
|
+
schema_version: '2.0',
|
|
169
|
+
project_name: projectName,
|
|
170
|
+
description: `${projectName} project`,
|
|
171
|
+
version: '0.1.0',
|
|
172
|
+
package_type: options.type,
|
|
173
|
+
languages: ['javascript'],
|
|
174
|
+
frameworks: [],
|
|
175
|
+
conventions: {
|
|
176
|
+
architecture_pattern: 'unknown',
|
|
177
|
+
directory_structure: {},
|
|
178
|
+
},
|
|
179
|
+
steering: {
|
|
180
|
+
auto_update: { enabled: false, frequency: 'on-demand' },
|
|
181
|
+
excluded_paths: ['node_modules/**', 'dist/**', '.git/**'],
|
|
182
|
+
memories: {
|
|
183
|
+
enabled: true,
|
|
184
|
+
path: 'steering/memories/',
|
|
185
|
+
max_file_size_kb: 500,
|
|
186
|
+
retention_days: 365,
|
|
187
|
+
},
|
|
188
|
+
},
|
|
189
|
+
agents: {
|
|
190
|
+
default_language: 'en',
|
|
191
|
+
bilingual_output: { enabled: false, languages: ['en'] },
|
|
192
|
+
output: {
|
|
193
|
+
gradual_generation: true,
|
|
194
|
+
progress_indicators: true,
|
|
195
|
+
large_file_splitting: false,
|
|
196
|
+
split_threshold_lines: 300,
|
|
197
|
+
},
|
|
198
|
+
},
|
|
199
|
+
workflow: {
|
|
200
|
+
mode: 'medium',
|
|
201
|
+
auto_detect_mode: true,
|
|
202
|
+
testing: {
|
|
203
|
+
required: true,
|
|
204
|
+
coverage_threshold: 80,
|
|
205
|
+
},
|
|
206
|
+
quality_gates: [],
|
|
207
|
+
},
|
|
208
|
+
constitution: {
|
|
209
|
+
level_config: 'steering/rules/constitution-levels.yml',
|
|
210
|
+
overrides: {},
|
|
211
|
+
},
|
|
212
|
+
custom_rules: [],
|
|
213
|
+
metadata: {
|
|
214
|
+
created_at: new Date().toISOString(),
|
|
215
|
+
musubi_version: require('../package.json').version,
|
|
216
|
+
},
|
|
217
|
+
};
|
|
218
|
+
|
|
219
|
+
await fs.writeFile(configPath, yaml.dump(config, { indent: 2 }), 'utf8');
|
|
220
|
+
|
|
221
|
+
console.log(chalk.green('\n✅ Created steering/project.yml (v2.0 schema)'));
|
|
222
|
+
console.log(` Project: ${projectName}`);
|
|
223
|
+
console.log(` Type: ${options.type}`);
|
|
224
|
+
} catch (error) {
|
|
225
|
+
console.error(chalk.red(`Error: ${error.message}`));
|
|
226
|
+
process.exit(1);
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
|
|
230
|
+
program.parse();
|
|
@@ -30,6 +30,7 @@ const {
|
|
|
30
30
|
TriageCategory,
|
|
31
31
|
TriageStrategy,
|
|
32
32
|
AgentCapability,
|
|
33
|
+
getBuiltInSkills,
|
|
33
34
|
} = require('../src/orchestration');
|
|
34
35
|
|
|
35
36
|
const {
|
|
@@ -145,6 +146,21 @@ async function loadSkills(projectPath) {
|
|
|
145
146
|
}
|
|
146
147
|
}
|
|
147
148
|
|
|
149
|
+
// Add built-in Phase 1-4 skills
|
|
150
|
+
const builtInSkills = getBuiltInSkills();
|
|
151
|
+
for (const skill of builtInSkills) {
|
|
152
|
+
skills.set(skill.id, {
|
|
153
|
+
name: skill.name,
|
|
154
|
+
description: skill.description,
|
|
155
|
+
keywords: skill.tags || [],
|
|
156
|
+
categories: [skill.category],
|
|
157
|
+
execute: skill.execute,
|
|
158
|
+
version: skill.version,
|
|
159
|
+
inputs: skill.inputs,
|
|
160
|
+
outputs: skill.outputs,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
|
|
148
164
|
return skills;
|
|
149
165
|
}
|
|
150
166
|
|