@sk8metal/michi-cli 0.0.1

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.
Files changed (99) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +465 -0
  3. package/dist/scripts/config/config-schema.d.ts +707 -0
  4. package/dist/scripts/config/config-schema.d.ts.map +1 -0
  5. package/dist/scripts/config/config-schema.js +100 -0
  6. package/dist/scripts/config/config-schema.js.map +1 -0
  7. package/dist/scripts/config-interactive.d.ts +10 -0
  8. package/dist/scripts/config-interactive.d.ts.map +1 -0
  9. package/dist/scripts/config-interactive.js +357 -0
  10. package/dist/scripts/config-interactive.js.map +1 -0
  11. package/dist/scripts/confluence-sync.d.ts +54 -0
  12. package/dist/scripts/confluence-sync.d.ts.map +1 -0
  13. package/dist/scripts/confluence-sync.js +407 -0
  14. package/dist/scripts/confluence-sync.js.map +1 -0
  15. package/dist/scripts/create-project.d.ts +12 -0
  16. package/dist/scripts/create-project.d.ts.map +1 -0
  17. package/dist/scripts/create-project.js +244 -0
  18. package/dist/scripts/create-project.js.map +1 -0
  19. package/dist/scripts/jira-sync.d.ts +39 -0
  20. package/dist/scripts/jira-sync.d.ts.map +1 -0
  21. package/dist/scripts/jira-sync.js +549 -0
  22. package/dist/scripts/jira-sync.js.map +1 -0
  23. package/dist/scripts/list-projects.d.ts +7 -0
  24. package/dist/scripts/list-projects.d.ts.map +1 -0
  25. package/dist/scripts/list-projects.js +61 -0
  26. package/dist/scripts/list-projects.js.map +1 -0
  27. package/dist/scripts/markdown-to-confluence.d.ts +19 -0
  28. package/dist/scripts/markdown-to-confluence.d.ts.map +1 -0
  29. package/dist/scripts/markdown-to-confluence.js +121 -0
  30. package/dist/scripts/markdown-to-confluence.js.map +1 -0
  31. package/dist/scripts/multi-project-estimate.d.ts +27 -0
  32. package/dist/scripts/multi-project-estimate.d.ts.map +1 -0
  33. package/dist/scripts/multi-project-estimate.js +202 -0
  34. package/dist/scripts/multi-project-estimate.js.map +1 -0
  35. package/dist/scripts/phase-runner.d.ts +19 -0
  36. package/dist/scripts/phase-runner.d.ts.map +1 -0
  37. package/dist/scripts/phase-runner.js +260 -0
  38. package/dist/scripts/phase-runner.js.map +1 -0
  39. package/dist/scripts/pr-automation.d.ts +12 -0
  40. package/dist/scripts/pr-automation.d.ts.map +1 -0
  41. package/dist/scripts/pr-automation.js +45 -0
  42. package/dist/scripts/pr-automation.js.map +1 -0
  43. package/dist/scripts/pre-flight-check.d.ts +15 -0
  44. package/dist/scripts/pre-flight-check.d.ts.map +1 -0
  45. package/dist/scripts/pre-flight-check.js +244 -0
  46. package/dist/scripts/pre-flight-check.js.map +1 -0
  47. package/dist/scripts/resource-dashboard.d.ts +7 -0
  48. package/dist/scripts/resource-dashboard.d.ts.map +1 -0
  49. package/dist/scripts/resource-dashboard.js +100 -0
  50. package/dist/scripts/resource-dashboard.js.map +1 -0
  51. package/dist/scripts/setup-existing-project.d.ts +13 -0
  52. package/dist/scripts/setup-existing-project.d.ts.map +1 -0
  53. package/dist/scripts/setup-existing-project.js +334 -0
  54. package/dist/scripts/setup-existing-project.js.map +1 -0
  55. package/dist/scripts/utils/config-loader.d.ts +20 -0
  56. package/dist/scripts/utils/config-loader.d.ts.map +1 -0
  57. package/dist/scripts/utils/config-loader.js +291 -0
  58. package/dist/scripts/utils/config-loader.js.map +1 -0
  59. package/dist/scripts/utils/config-validator.d.ts +34 -0
  60. package/dist/scripts/utils/config-validator.d.ts.map +1 -0
  61. package/dist/scripts/utils/config-validator.js +286 -0
  62. package/dist/scripts/utils/config-validator.js.map +1 -0
  63. package/dist/scripts/utils/confluence-hierarchy.d.ts +47 -0
  64. package/dist/scripts/utils/confluence-hierarchy.d.ts.map +1 -0
  65. package/dist/scripts/utils/confluence-hierarchy.js +516 -0
  66. package/dist/scripts/utils/confluence-hierarchy.js.map +1 -0
  67. package/dist/scripts/utils/feature-name-validator.d.ts +25 -0
  68. package/dist/scripts/utils/feature-name-validator.d.ts.map +1 -0
  69. package/dist/scripts/utils/feature-name-validator.js +113 -0
  70. package/dist/scripts/utils/feature-name-validator.js.map +1 -0
  71. package/dist/scripts/utils/project-meta.d.ts +23 -0
  72. package/dist/scripts/utils/project-meta.d.ts.map +1 -0
  73. package/dist/scripts/utils/project-meta.js +50 -0
  74. package/dist/scripts/utils/project-meta.js.map +1 -0
  75. package/dist/scripts/validate-phase.d.ts +17 -0
  76. package/dist/scripts/validate-phase.d.ts.map +1 -0
  77. package/dist/scripts/validate-phase.js +234 -0
  78. package/dist/scripts/validate-phase.js.map +1 -0
  79. package/dist/scripts/workflow-orchestrator.d.ts +35 -0
  80. package/dist/scripts/workflow-orchestrator.d.ts.map +1 -0
  81. package/dist/scripts/workflow-orchestrator.js +130 -0
  82. package/dist/scripts/workflow-orchestrator.js.map +1 -0
  83. package/dist/src/cli.d.ts +11 -0
  84. package/dist/src/cli.d.ts.map +1 -0
  85. package/dist/src/cli.js +229 -0
  86. package/dist/src/cli.js.map +1 -0
  87. package/docs/config-reference.md +666 -0
  88. package/docs/customization-guide.md +432 -0
  89. package/docs/multi-project.md +233 -0
  90. package/docs/new-project-setup.md +576 -0
  91. package/docs/phase-automation.md +361 -0
  92. package/docs/quick-reference.md +291 -0
  93. package/docs/setup.md +404 -0
  94. package/docs/tasks-template.md +550 -0
  95. package/docs/testing.md +202 -0
  96. package/docs/workflow.md +342 -0
  97. package/env.example +44 -0
  98. package/mcp.json.example +14 -0
  99. package/package.json +97 -0
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Michi CLI Tool
4
+ * AI駆動開発ワークフロー自動化コマンドラインツール
5
+ */
6
+ import { Command } from 'commander';
7
+ /**
8
+ * CLIツールを作成
9
+ */
10
+ export declare function createCLI(): Command;
11
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoCpC;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CA2LnC"}
@@ -0,0 +1,229 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Michi CLI Tool
4
+ * AI駆動開発ワークフロー自動化コマンドラインツール
5
+ */
6
+ import { Command } from 'commander';
7
+ import { syncTasksToJIRA } from '../scripts/jira-sync.js';
8
+ import { syncToConfluence } from '../scripts/confluence-sync.js';
9
+ import { runPhase } from '../scripts/phase-runner.js';
10
+ import { validatePhase } from '../scripts/validate-phase.js';
11
+ import { runPreFlightCheck } from '../scripts/pre-flight-check.js';
12
+ import { listProjects } from '../scripts/list-projects.js';
13
+ import { createResourceDashboard } from '../scripts/resource-dashboard.js';
14
+ import { WorkflowOrchestrator } from '../scripts/workflow-orchestrator.js';
15
+ import { configInteractive } from '../scripts/config-interactive.js';
16
+ import { validateAndReport } from '../scripts/utils/config-validator.js';
17
+ import { config } from 'dotenv';
18
+ // 環境変数読み込み
19
+ config();
20
+ const packageJson = {
21
+ name: '@michi/cli',
22
+ version: '1.0.0'
23
+ };
24
+ /**
25
+ * 環境変数から承認ゲートのロールリストを取得
26
+ * @param envVar 環境変数名
27
+ * @param defaultValue デフォルト値(環境変数が存在しない場合)
28
+ * @returns ロール名の配列
29
+ */
30
+ function getApprovalGates(envVar, defaultValue) {
31
+ const envValue = process.env[envVar];
32
+ if (!envValue) {
33
+ return defaultValue;
34
+ }
35
+ // カンマ区切りを配列に変換し、空白をトリム
36
+ return envValue.split(',').map(role => role.trim()).filter(role => role.length > 0);
37
+ }
38
+ /**
39
+ * CLIツールを作成
40
+ */
41
+ export function createCLI() {
42
+ const program = new Command();
43
+ program
44
+ .name('michi')
45
+ .description('🛣️ Michi(道) - Managed Intelligent Comprehensive Hub for Integration')
46
+ .version(packageJson.version);
47
+ // jira:sync コマンド
48
+ program
49
+ .command('jira:sync')
50
+ .description('Sync tasks.md to JIRA Epic/Stories')
51
+ .argument('<feature>', 'Feature name')
52
+ .action(async (feature) => {
53
+ try {
54
+ await syncTasksToJIRA(feature);
55
+ }
56
+ catch (error) {
57
+ console.error('❌ JIRA sync failed:', error instanceof Error ? error.message : error);
58
+ process.exit(1);
59
+ }
60
+ });
61
+ // confluence:sync コマンド
62
+ program
63
+ .command('confluence:sync')
64
+ .description('Sync spec to Confluence')
65
+ .argument('<feature>', 'Feature name')
66
+ .argument('[type]', 'Document type (requirements, design)', 'requirements')
67
+ .action(async (feature, type) => {
68
+ try {
69
+ await syncToConfluence(feature, type);
70
+ }
71
+ catch (error) {
72
+ console.error('❌ Confluence sync failed:', error instanceof Error ? error.message : error);
73
+ process.exit(1);
74
+ }
75
+ });
76
+ // phase:run コマンド
77
+ program
78
+ .command('phase:run')
79
+ .description('Run complete phase workflow')
80
+ .argument('<feature>', 'Feature name')
81
+ .argument('<phase>', 'Phase name (requirements, design, tasks)')
82
+ .action(async (feature, phase) => {
83
+ const validPhases = ['requirements', 'design', 'tasks'];
84
+ if (!validPhases.includes(phase)) {
85
+ console.error(`❌ Invalid phase. Must be: ${validPhases.join(', ')}`);
86
+ process.exit(1);
87
+ }
88
+ try {
89
+ const result = await runPhase(feature, phase);
90
+ if (result.success) {
91
+ console.log('\n✅ Phase completed');
92
+ }
93
+ else {
94
+ console.log('\n❌ Phase incomplete (check errors above)');
95
+ process.exit(1);
96
+ }
97
+ }
98
+ catch (error) {
99
+ console.error('❌ Phase execution failed:', error instanceof Error ? error.message : error);
100
+ process.exit(1);
101
+ }
102
+ });
103
+ // validate:phase コマンド
104
+ program
105
+ .command('validate:phase')
106
+ .description('Validate phase completion')
107
+ .argument('<feature>', 'Feature name')
108
+ .argument('<phase>', 'Phase name (requirements, design, tasks)')
109
+ .action(async (feature, phase) => {
110
+ const validPhases = ['requirements', 'design', 'tasks'];
111
+ if (!validPhases.includes(phase)) {
112
+ console.error(`❌ Invalid phase. Must be: ${validPhases.join(', ')}`);
113
+ process.exit(1);
114
+ }
115
+ try {
116
+ const result = validatePhase(feature, phase);
117
+ process.exit(result.valid ? 0 : 1);
118
+ }
119
+ catch (error) {
120
+ console.error('❌ Validation failed:', error instanceof Error ? error.message : error);
121
+ process.exit(1);
122
+ }
123
+ });
124
+ // preflight コマンド
125
+ program
126
+ .command('preflight')
127
+ .description('Run pre-flight checks')
128
+ .argument('[phase]', 'Check phase (confluence, jira, all)', 'all')
129
+ .action(async (phase) => {
130
+ const validPhases = ['confluence', 'jira', 'all'];
131
+ if (!validPhases.includes(phase)) {
132
+ console.error(`❌ Invalid phase. Must be: ${validPhases.join(', ')}`);
133
+ process.exit(1);
134
+ }
135
+ try {
136
+ const result = await runPreFlightCheck(phase);
137
+ process.exit(result.valid ? 0 : 1);
138
+ }
139
+ catch (error) {
140
+ console.error('❌ Pre-flight check failed:', error instanceof Error ? error.message : error);
141
+ process.exit(1);
142
+ }
143
+ });
144
+ // project:list コマンド
145
+ program
146
+ .command('project:list')
147
+ .description('List all projects')
148
+ .action(async () => {
149
+ try {
150
+ await listProjects();
151
+ }
152
+ catch (error) {
153
+ console.error('❌ Failed to list projects:', error instanceof Error ? error.message : error);
154
+ process.exit(1);
155
+ }
156
+ });
157
+ // project:dashboard コマンド
158
+ program
159
+ .command('project:dashboard')
160
+ .description('Create resource dashboard')
161
+ .action(async () => {
162
+ try {
163
+ await createResourceDashboard();
164
+ }
165
+ catch (error) {
166
+ console.error('❌ Failed to create dashboard:', error instanceof Error ? error.message : error);
167
+ process.exit(1);
168
+ }
169
+ });
170
+ // workflow:run コマンド
171
+ program
172
+ .command('workflow:run')
173
+ .description('Run complete workflow')
174
+ .requiredOption('--feature <name>', 'Feature name')
175
+ .action(async (options) => {
176
+ try {
177
+ const workflowConfig = {
178
+ feature: options.feature,
179
+ stages: ['requirements', 'design', 'tasks', 'implement', 'test', 'release'],
180
+ approvalGates: {
181
+ requirements: getApprovalGates('APPROVAL_GATES_REQUIREMENTS', ['pm', 'director']),
182
+ design: getApprovalGates('APPROVAL_GATES_DESIGN', ['architect', 'director']),
183
+ release: getApprovalGates('APPROVAL_GATES_RELEASE', ['sm', 'director'])
184
+ }
185
+ };
186
+ const orchestrator = new WorkflowOrchestrator(workflowConfig);
187
+ await orchestrator.run();
188
+ }
189
+ catch (error) {
190
+ console.error('❌ Workflow failed:', error instanceof Error ? error.message : error);
191
+ process.exit(1);
192
+ }
193
+ });
194
+ // config:interactive コマンド
195
+ program
196
+ .command('config:interactive')
197
+ .alias('config:init')
198
+ .description('Interactive configuration setup for .kiro/config.json')
199
+ .action(async () => {
200
+ try {
201
+ await configInteractive();
202
+ }
203
+ catch (error) {
204
+ console.error('❌ Configuration setup failed:', error instanceof Error ? error.message : error);
205
+ process.exit(1);
206
+ }
207
+ });
208
+ // config:validate コマンド
209
+ program
210
+ .command('config:validate')
211
+ .description('Validate .kiro/config.json')
212
+ .action(async () => {
213
+ try {
214
+ const valid = validateAndReport();
215
+ process.exit(valid ? 0 : 1);
216
+ }
217
+ catch (error) {
218
+ console.error('❌ Validation failed:', error instanceof Error ? error.message : error);
219
+ process.exit(1);
220
+ }
221
+ });
222
+ return program;
223
+ }
224
+ // CLI実行(直接実行時)
225
+ if (import.meta.url === `file://${process.argv[1]}`) {
226
+ const program = createCLI();
227
+ program.parse();
228
+ }
229
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}