kiro-kit 0.2.2 → 0.3.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.md +35 -0
- package/dist/index.js +771 -116
- package/dist/index.js.map +1 -1
- package/dist/presets/backend/hooks/api-schema-validate.js +75 -0
- package/dist/presets/backend/hooks/endpoint-test-coverage.js +77 -0
- package/dist/presets/backend/hooks/migration-safety-check.js +68 -0
- package/dist/presets/backend/manifest.json +48 -35
- package/dist/presets/backend/powers.json +40 -0
- package/dist/presets/backend/skills/kiro/references/autonomy-modes.md +26 -0
- package/dist/presets/backend/skills/kiro/references/best-practices.md +48 -0
- package/dist/presets/backend/skills/kiro/references/commands.md +61 -0
- package/dist/presets/backend/skills/kiro/references/configuration.md +41 -0
- package/dist/presets/backend/skills/kiro/references/getting-started.md +45 -0
- package/dist/presets/backend/skills/kiro/references/hooks.md +99 -0
- package/dist/presets/backend/skills/kiro/references/mcp-integration.md +53 -0
- package/dist/presets/backend/skills/kiro/references/skills.md +55 -0
- package/dist/presets/backend/skills/kiro/references/specs-workflow.md +62 -0
- package/dist/presets/backend/skills/kiro/references/steering-files.md +84 -0
- package/dist/presets/backend/skills/kiro/references/troubleshooting.md +42 -0
- package/dist/presets/backend/skills/kiro/skill.md +194 -0
- package/dist/presets/data-ai/hooks/data-drift-check.js +77 -0
- package/dist/presets/data-ai/hooks/experiment-log.js +87 -0
- package/dist/presets/data-ai/hooks/model-card-update.js +99 -0
- package/dist/presets/data-ai/manifest.json +48 -35
- package/dist/presets/data-ai/powers.json +34 -0
- package/dist/presets/data-ai/skills/kiro/references/autonomy-modes.md +26 -0
- package/dist/presets/data-ai/skills/kiro/references/best-practices.md +48 -0
- package/dist/presets/data-ai/skills/kiro/references/commands.md +61 -0
- package/dist/presets/data-ai/skills/kiro/references/configuration.md +41 -0
- package/dist/presets/data-ai/skills/kiro/references/getting-started.md +45 -0
- package/dist/presets/data-ai/skills/kiro/references/hooks.md +99 -0
- package/dist/presets/data-ai/skills/kiro/references/mcp-integration.md +53 -0
- package/dist/presets/data-ai/skills/kiro/references/skills.md +55 -0
- package/dist/presets/data-ai/skills/kiro/references/specs-workflow.md +62 -0
- package/dist/presets/data-ai/skills/kiro/references/steering-files.md +84 -0
- package/dist/presets/data-ai/skills/kiro/references/troubleshooting.md +42 -0
- package/dist/presets/data-ai/skills/kiro/skill.md +194 -0
- package/dist/presets/devops/hooks/container-scan.js +73 -0
- package/dist/presets/devops/hooks/cost-estimation.js +69 -0
- package/dist/presets/devops/hooks/terraform-plan-review.js +67 -0
- package/dist/presets/devops/manifest.json +48 -35
- package/dist/presets/devops/powers.json +40 -0
- package/dist/presets/devops/skills/kiro/references/autonomy-modes.md +26 -0
- package/dist/presets/devops/skills/kiro/references/best-practices.md +48 -0
- package/dist/presets/devops/skills/kiro/references/commands.md +61 -0
- package/dist/presets/devops/skills/kiro/references/configuration.md +41 -0
- package/dist/presets/devops/skills/kiro/references/getting-started.md +45 -0
- package/dist/presets/devops/skills/kiro/references/hooks.md +99 -0
- package/dist/presets/devops/skills/kiro/references/mcp-integration.md +53 -0
- package/dist/presets/devops/skills/kiro/references/skills.md +55 -0
- package/dist/presets/devops/skills/kiro/references/specs-workflow.md +62 -0
- package/dist/presets/devops/skills/kiro/references/steering-files.md +84 -0
- package/dist/presets/devops/skills/kiro/references/troubleshooting.md +42 -0
- package/dist/presets/devops/skills/kiro/skill.md +194 -0
- package/dist/presets/frontend/commands/test.md +1 -1
- package/dist/presets/frontend/hooks/accessibility-check.js +76 -0
- package/dist/presets/frontend/hooks/bundle-size-guard.js +71 -0
- package/dist/presets/frontend/hooks/component-test-reminder.js +71 -0
- package/dist/presets/frontend/manifest.json +48 -35
- package/dist/presets/frontend/powers.json +34 -0
- package/dist/presets/frontend/skills/kiro/references/autonomy-modes.md +26 -0
- package/dist/presets/frontend/skills/kiro/references/best-practices.md +48 -0
- package/dist/presets/frontend/skills/kiro/references/commands.md +61 -0
- package/dist/presets/frontend/skills/kiro/references/configuration.md +41 -0
- package/dist/presets/frontend/skills/kiro/references/getting-started.md +45 -0
- package/dist/presets/frontend/skills/kiro/references/hooks.md +99 -0
- package/dist/presets/frontend/skills/kiro/references/mcp-integration.md +53 -0
- package/dist/presets/frontend/skills/kiro/references/skills.md +55 -0
- package/dist/presets/frontend/skills/kiro/references/specs-workflow.md +62 -0
- package/dist/presets/frontend/skills/kiro/references/steering-files.md +84 -0
- package/dist/presets/frontend/skills/kiro/references/troubleshooting.md +42 -0
- package/dist/presets/frontend/skills/kiro/skill.md +194 -0
- package/dist/presets/fullstack/hooks/api-client-gen.js +69 -0
- package/dist/presets/fullstack/hooks/deployment-readiness.js +73 -0
- package/dist/presets/fullstack/hooks/type-sync-check.js +69 -0
- package/dist/presets/fullstack/manifest.json +48 -35
- package/dist/presets/fullstack/powers.json +46 -0
- package/dist/presets/fullstack/skills/kiro/references/autonomy-modes.md +26 -0
- package/dist/presets/fullstack/skills/kiro/references/best-practices.md +48 -0
- package/dist/presets/fullstack/skills/kiro/references/commands.md +61 -0
- package/dist/presets/fullstack/skills/kiro/references/configuration.md +41 -0
- package/dist/presets/fullstack/skills/kiro/references/getting-started.md +45 -0
- package/dist/presets/fullstack/skills/kiro/references/hooks.md +99 -0
- package/dist/presets/fullstack/skills/kiro/references/mcp-integration.md +53 -0
- package/dist/presets/fullstack/skills/kiro/references/skills.md +55 -0
- package/dist/presets/fullstack/skills/kiro/references/specs-workflow.md +62 -0
- package/dist/presets/fullstack/skills/kiro/references/steering-files.md +84 -0
- package/dist/presets/fullstack/skills/kiro/references/troubleshooting.md +42 -0
- package/dist/presets/fullstack/skills/kiro/skill.md +194 -0
- package/dist/presets/mobile/hooks/asset-optimization.js +58 -0
- package/dist/presets/mobile/hooks/platform-parity-check.js +73 -0
- package/dist/presets/mobile/hooks/release-checklist.js +83 -0
- package/dist/presets/mobile/manifest.json +48 -35
- package/dist/presets/mobile/powers.json +34 -0
- package/dist/presets/mobile/skills/kiro/references/autonomy-modes.md +26 -0
- package/dist/presets/mobile/skills/kiro/references/best-practices.md +48 -0
- package/dist/presets/mobile/skills/kiro/references/commands.md +61 -0
- package/dist/presets/mobile/skills/kiro/references/configuration.md +41 -0
- package/dist/presets/mobile/skills/kiro/references/getting-started.md +45 -0
- package/dist/presets/mobile/skills/kiro/references/hooks.md +99 -0
- package/dist/presets/mobile/skills/kiro/references/mcp-integration.md +53 -0
- package/dist/presets/mobile/skills/kiro/references/skills.md +55 -0
- package/dist/presets/mobile/skills/kiro/references/specs-workflow.md +62 -0
- package/dist/presets/mobile/skills/kiro/references/steering-files.md +84 -0
- package/dist/presets/mobile/skills/kiro/references/troubleshooting.md +42 -0
- package/dist/presets/mobile/skills/kiro/skill.md +194 -0
- package/package.json +1 -1
- package/dist/presets/backend/skills/claude-code/references/advanced-features.md +0 -399
- package/dist/presets/backend/skills/claude-code/references/agent-skills.md +0 -399
- package/dist/presets/backend/skills/claude-code/references/api-reference.md +0 -498
- package/dist/presets/backend/skills/claude-code/references/best-practices.md +0 -447
- package/dist/presets/backend/skills/claude-code/references/cicd-integration.md +0 -428
- package/dist/presets/backend/skills/claude-code/references/configuration.md +0 -480
- package/dist/presets/backend/skills/claude-code/references/enterprise-features.md +0 -472
- package/dist/presets/backend/skills/claude-code/references/getting-started.md +0 -252
- package/dist/presets/backend/skills/claude-code/references/hooks-and-plugins.md +0 -441
- package/dist/presets/backend/skills/claude-code/references/ide-integration.md +0 -316
- package/dist/presets/backend/skills/claude-code/references/mcp-integration.md +0 -386
- package/dist/presets/backend/skills/claude-code/references/slash-commands.md +0 -489
- package/dist/presets/backend/skills/claude-code/references/troubleshooting.md +0 -456
- package/dist/presets/backend/skills/claude-code/skill.md +0 -194
- package/dist/presets/data-ai/skills/claude-code/references/advanced-features.md +0 -399
- package/dist/presets/data-ai/skills/claude-code/references/agent-skills.md +0 -399
- package/dist/presets/data-ai/skills/claude-code/references/api-reference.md +0 -498
- package/dist/presets/data-ai/skills/claude-code/references/best-practices.md +0 -447
- package/dist/presets/data-ai/skills/claude-code/references/cicd-integration.md +0 -428
- package/dist/presets/data-ai/skills/claude-code/references/configuration.md +0 -480
- package/dist/presets/data-ai/skills/claude-code/references/enterprise-features.md +0 -472
- package/dist/presets/data-ai/skills/claude-code/references/getting-started.md +0 -252
- package/dist/presets/data-ai/skills/claude-code/references/hooks-and-plugins.md +0 -441
- package/dist/presets/data-ai/skills/claude-code/references/ide-integration.md +0 -316
- package/dist/presets/data-ai/skills/claude-code/references/mcp-integration.md +0 -386
- package/dist/presets/data-ai/skills/claude-code/references/slash-commands.md +0 -489
- package/dist/presets/data-ai/skills/claude-code/references/troubleshooting.md +0 -456
- package/dist/presets/data-ai/skills/claude-code/skill.md +0 -194
- package/dist/presets/devops/skills/claude-code/references/advanced-features.md +0 -399
- package/dist/presets/devops/skills/claude-code/references/agent-skills.md +0 -399
- package/dist/presets/devops/skills/claude-code/references/api-reference.md +0 -498
- package/dist/presets/devops/skills/claude-code/references/best-practices.md +0 -447
- package/dist/presets/devops/skills/claude-code/references/cicd-integration.md +0 -428
- package/dist/presets/devops/skills/claude-code/references/configuration.md +0 -480
- package/dist/presets/devops/skills/claude-code/references/enterprise-features.md +0 -472
- package/dist/presets/devops/skills/claude-code/references/getting-started.md +0 -252
- package/dist/presets/devops/skills/claude-code/references/hooks-and-plugins.md +0 -441
- package/dist/presets/devops/skills/claude-code/references/ide-integration.md +0 -316
- package/dist/presets/devops/skills/claude-code/references/mcp-integration.md +0 -386
- package/dist/presets/devops/skills/claude-code/references/slash-commands.md +0 -489
- package/dist/presets/devops/skills/claude-code/references/troubleshooting.md +0 -456
- package/dist/presets/devops/skills/claude-code/skill.md +0 -194
- package/dist/presets/frontend/skills/claude-code/references/advanced-features.md +0 -399
- package/dist/presets/frontend/skills/claude-code/references/agent-skills.md +0 -399
- package/dist/presets/frontend/skills/claude-code/references/api-reference.md +0 -498
- package/dist/presets/frontend/skills/claude-code/references/best-practices.md +0 -447
- package/dist/presets/frontend/skills/claude-code/references/cicd-integration.md +0 -428
- package/dist/presets/frontend/skills/claude-code/references/configuration.md +0 -480
- package/dist/presets/frontend/skills/claude-code/references/enterprise-features.md +0 -472
- package/dist/presets/frontend/skills/claude-code/references/getting-started.md +0 -252
- package/dist/presets/frontend/skills/claude-code/references/hooks-and-plugins.md +0 -441
- package/dist/presets/frontend/skills/claude-code/references/ide-integration.md +0 -316
- package/dist/presets/frontend/skills/claude-code/references/mcp-integration.md +0 -386
- package/dist/presets/frontend/skills/claude-code/references/slash-commands.md +0 -489
- package/dist/presets/frontend/skills/claude-code/references/troubleshooting.md +0 -456
- package/dist/presets/frontend/skills/claude-code/skill.md +0 -194
- package/dist/presets/fullstack/skills/claude-code/references/advanced-features.md +0 -399
- package/dist/presets/fullstack/skills/claude-code/references/agent-skills.md +0 -399
- package/dist/presets/fullstack/skills/claude-code/references/api-reference.md +0 -498
- package/dist/presets/fullstack/skills/claude-code/references/best-practices.md +0 -447
- package/dist/presets/fullstack/skills/claude-code/references/cicd-integration.md +0 -428
- package/dist/presets/fullstack/skills/claude-code/references/configuration.md +0 -480
- package/dist/presets/fullstack/skills/claude-code/references/enterprise-features.md +0 -472
- package/dist/presets/fullstack/skills/claude-code/references/getting-started.md +0 -252
- package/dist/presets/fullstack/skills/claude-code/references/hooks-and-plugins.md +0 -441
- package/dist/presets/fullstack/skills/claude-code/references/ide-integration.md +0 -316
- package/dist/presets/fullstack/skills/claude-code/references/mcp-integration.md +0 -386
- package/dist/presets/fullstack/skills/claude-code/references/slash-commands.md +0 -489
- package/dist/presets/fullstack/skills/claude-code/references/troubleshooting.md +0 -456
- package/dist/presets/fullstack/skills/claude-code/skill.md +0 -194
- package/dist/presets/mobile/skills/claude-code/references/advanced-features.md +0 -399
- package/dist/presets/mobile/skills/claude-code/references/agent-skills.md +0 -399
- package/dist/presets/mobile/skills/claude-code/references/api-reference.md +0 -498
- package/dist/presets/mobile/skills/claude-code/references/best-practices.md +0 -447
- package/dist/presets/mobile/skills/claude-code/references/cicd-integration.md +0 -428
- package/dist/presets/mobile/skills/claude-code/references/configuration.md +0 -480
- package/dist/presets/mobile/skills/claude-code/references/enterprise-features.md +0 -472
- package/dist/presets/mobile/skills/claude-code/references/getting-started.md +0 -252
- package/dist/presets/mobile/skills/claude-code/references/hooks-and-plugins.md +0 -441
- package/dist/presets/mobile/skills/claude-code/references/ide-integration.md +0 -316
- package/dist/presets/mobile/skills/claude-code/references/mcp-integration.md +0 -386
- package/dist/presets/mobile/skills/claude-code/references/slash-commands.md +0 -489
- package/dist/presets/mobile/skills/claude-code/references/troubleshooting.md +0 -456
- package/dist/presets/mobile/skills/claude-code/skill.md +0 -194
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Checks that experiment configs have corresponding log entries
|
|
4
|
+
* in the experiments/ directory.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
const fs = require('fs');
|
|
8
|
+
const path = require('path');
|
|
9
|
+
|
|
10
|
+
const CONFIG_DIRS = ['configs', 'config', 'experiments/configs', 'src/configs'];
|
|
11
|
+
const LOG_DIRS = ['experiments', 'experiments/logs', 'logs/experiments', 'mlruns'];
|
|
12
|
+
const CONFIG_EXTENSIONS = ['.yaml', '.yml', '.toml', '.json'];
|
|
13
|
+
|
|
14
|
+
const cwd = process.cwd();
|
|
15
|
+
|
|
16
|
+
function findConfigs(dir) {
|
|
17
|
+
const results = [];
|
|
18
|
+
if (!fs.existsSync(dir)) return results;
|
|
19
|
+
try {
|
|
20
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
21
|
+
for (const entry of entries) {
|
|
22
|
+
const full = path.join(dir, entry.name);
|
|
23
|
+
if (entry.isDirectory()) {
|
|
24
|
+
results.push(...findConfigs(full));
|
|
25
|
+
} else if (entry.isFile()) {
|
|
26
|
+
const ext = path.extname(entry.name).toLowerCase();
|
|
27
|
+
if (CONFIG_EXTENSIONS.includes(ext) && /experiment|exp|run/i.test(entry.name)) {
|
|
28
|
+
results.push(full);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
} catch (e) { /* skip */ }
|
|
33
|
+
return results;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
let configFiles = [];
|
|
37
|
+
for (const dir of CONFIG_DIRS) {
|
|
38
|
+
configFiles.push(...findConfigs(path.resolve(cwd, dir)));
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
if (configFiles.length === 0) {
|
|
42
|
+
process.exit(0);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Find log directories
|
|
46
|
+
let logDir = null;
|
|
47
|
+
for (const dir of LOG_DIRS) {
|
|
48
|
+
const full = path.resolve(cwd, dir);
|
|
49
|
+
if (fs.existsSync(full)) {
|
|
50
|
+
logDir = full;
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if (!logDir) {
|
|
56
|
+
process.stdout.write(
|
|
57
|
+
'[experiment-log] Experiment configs found but no experiments/ log directory.\n' +
|
|
58
|
+
' Create an experiments/ directory to track experiment results.\n'
|
|
59
|
+
);
|
|
60
|
+
process.exit(1);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Check each config has a corresponding log entry
|
|
64
|
+
const logEntries = new Set();
|
|
65
|
+
try {
|
|
66
|
+
const entries = fs.readdirSync(logDir, { withFileTypes: true });
|
|
67
|
+
for (const entry of entries) {
|
|
68
|
+
logEntries.add(path.basename(entry.name, path.extname(entry.name)).toLowerCase());
|
|
69
|
+
}
|
|
70
|
+
} catch (e) { /* skip */ }
|
|
71
|
+
|
|
72
|
+
const unlogged = [];
|
|
73
|
+
for (const config of configFiles) {
|
|
74
|
+
const baseName = path.basename(config, path.extname(config)).toLowerCase();
|
|
75
|
+
if (!logEntries.has(baseName)) {
|
|
76
|
+
unlogged.push(path.relative(cwd, config));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (unlogged.length > 0) {
|
|
81
|
+
process.stdout.write(`[experiment-log] ${unlogged.length} experiment config(s) without log entries:\n`);
|
|
82
|
+
unlogged.forEach((u) => process.stdout.write(` - ${u}\n`));
|
|
83
|
+
process.stdout.write(' Run experiments and log results before committing configs.\n');
|
|
84
|
+
process.exit(1);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
process.exit(0);
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Reminds to update model card when model files (.pkl, .pt, .h5, saved_model/)
|
|
4
|
+
* are modified.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
const fs = require('fs');
|
|
8
|
+
const path = require('path');
|
|
9
|
+
|
|
10
|
+
const MODEL_DIRS = ['models', 'src/models', 'artifacts', 'saved_models'];
|
|
11
|
+
const MODEL_EXTENSIONS = ['.pkl', '.pt', '.pth', '.h5', '.onnx', '.pb', '.safetensors'];
|
|
12
|
+
const MODEL_CARD_NAMES = ['MODEL_CARD.md', 'model_card.md', 'model-card.md', 'README.md'];
|
|
13
|
+
|
|
14
|
+
const cwd = process.cwd();
|
|
15
|
+
|
|
16
|
+
function findModelFiles(dir) {
|
|
17
|
+
const results = [];
|
|
18
|
+
if (!fs.existsSync(dir)) return results;
|
|
19
|
+
try {
|
|
20
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
21
|
+
for (const entry of entries) {
|
|
22
|
+
const full = path.join(dir, entry.name);
|
|
23
|
+
if (entry.isDirectory() && entry.name !== '__pycache__') {
|
|
24
|
+
// saved_model/ directories count as model artifacts
|
|
25
|
+
if (entry.name === 'saved_model' || entry.name === 'checkpoint') {
|
|
26
|
+
results.push(full);
|
|
27
|
+
} else {
|
|
28
|
+
results.push(...findModelFiles(full));
|
|
29
|
+
}
|
|
30
|
+
} else if (entry.isFile()) {
|
|
31
|
+
const ext = path.extname(entry.name).toLowerCase();
|
|
32
|
+
if (MODEL_EXTENSIONS.includes(ext)) {
|
|
33
|
+
results.push(full);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
} catch (e) { /* skip */ }
|
|
38
|
+
return results;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
let modelFiles = [];
|
|
42
|
+
for (const dir of MODEL_DIRS) {
|
|
43
|
+
modelFiles.push(...findModelFiles(path.resolve(cwd, dir)));
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (modelFiles.length === 0) {
|
|
47
|
+
process.exit(0);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Check if model card exists
|
|
51
|
+
let modelCardPath = null;
|
|
52
|
+
for (const dir of MODEL_DIRS) {
|
|
53
|
+
for (const name of MODEL_CARD_NAMES) {
|
|
54
|
+
const full = path.resolve(cwd, dir, name);
|
|
55
|
+
if (fs.existsSync(full)) {
|
|
56
|
+
modelCardPath = full;
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (modelCardPath) break;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Also check project root
|
|
64
|
+
if (!modelCardPath) {
|
|
65
|
+
for (const name of MODEL_CARD_NAMES.slice(0, -1)) {
|
|
66
|
+
const full = path.resolve(cwd, name);
|
|
67
|
+
if (fs.existsSync(full)) {
|
|
68
|
+
modelCardPath = full;
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if (!modelCardPath) {
|
|
75
|
+
process.stdout.write(
|
|
76
|
+
'[model-card-update] Model artifacts found but no model card exists.\n' +
|
|
77
|
+
' Create a MODEL_CARD.md documenting model details, metrics, and limitations.\n'
|
|
78
|
+
);
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Check if model files are newer than model card
|
|
83
|
+
const cardStat = fs.statSync(modelCardPath);
|
|
84
|
+
const newerModels = modelFiles.filter((f) => {
|
|
85
|
+
try {
|
|
86
|
+
const stat = fs.statSync(f);
|
|
87
|
+
return stat.mtimeMs > cardStat.mtimeMs;
|
|
88
|
+
} catch (e) { return false; }
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
if (newerModels.length > 0) {
|
|
92
|
+
process.stdout.write(
|
|
93
|
+
`[model-card-update] ${newerModels.length} model file(s) updated after model card.\n` +
|
|
94
|
+
` Update ${path.relative(cwd, modelCardPath)} with latest model information.\n`
|
|
95
|
+
);
|
|
96
|
+
process.exit(1);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
process.exit(0);
|
|
@@ -553,6 +553,29 @@
|
|
|
553
553
|
"type": "hook",
|
|
554
554
|
"executable": true
|
|
555
555
|
},
|
|
556
|
+
{
|
|
557
|
+
"source": "hooks/data-drift-check.js",
|
|
558
|
+
"target": ".kiro/hooks/data-drift-check.js",
|
|
559
|
+
"type": "hook",
|
|
560
|
+
"executable": true
|
|
561
|
+
},
|
|
562
|
+
{
|
|
563
|
+
"source": "hooks/model-card-update.js",
|
|
564
|
+
"target": ".kiro/hooks/model-card-update.js",
|
|
565
|
+
"type": "hook",
|
|
566
|
+
"executable": true
|
|
567
|
+
},
|
|
568
|
+
{
|
|
569
|
+
"source": "hooks/experiment-log.js",
|
|
570
|
+
"target": ".kiro/hooks/experiment-log.js",
|
|
571
|
+
"type": "hook",
|
|
572
|
+
"executable": true
|
|
573
|
+
},
|
|
574
|
+
{
|
|
575
|
+
"source": "powers.json",
|
|
576
|
+
"target": ".kiro/powers.json",
|
|
577
|
+
"type": "powers"
|
|
578
|
+
},
|
|
556
579
|
{
|
|
557
580
|
"source": "metadata.json",
|
|
558
581
|
"target": ".kiro/metadata.json",
|
|
@@ -674,73 +697,63 @@
|
|
|
674
697
|
"type": "other"
|
|
675
698
|
},
|
|
676
699
|
{
|
|
677
|
-
"source": "skills/
|
|
678
|
-
"target": ".kiro/skills/
|
|
679
|
-
"type": "
|
|
680
|
-
},
|
|
681
|
-
{
|
|
682
|
-
"source": "skills/claude-code/references/agent-skills.md",
|
|
683
|
-
"target": ".kiro/skills/claude-code/references/agent-skills.md",
|
|
684
|
-
"type": "doc"
|
|
685
|
-
},
|
|
686
|
-
{
|
|
687
|
-
"source": "skills/claude-code/references/api-reference.md",
|
|
688
|
-
"target": ".kiro/skills/claude-code/references/api-reference.md",
|
|
689
|
-
"type": "doc"
|
|
700
|
+
"source": "skills/kiro/skill.md",
|
|
701
|
+
"target": ".kiro/skills/kiro/skill.md",
|
|
702
|
+
"type": "skill"
|
|
690
703
|
},
|
|
691
704
|
{
|
|
692
|
-
"source": "skills/
|
|
693
|
-
"target": ".kiro/skills/
|
|
705
|
+
"source": "skills/kiro/references/autonomy-modes.md",
|
|
706
|
+
"target": ".kiro/skills/kiro/references/autonomy-modes.md",
|
|
694
707
|
"type": "doc"
|
|
695
708
|
},
|
|
696
709
|
{
|
|
697
|
-
"source": "skills/
|
|
698
|
-
"target": ".kiro/skills/
|
|
710
|
+
"source": "skills/kiro/references/best-practices.md",
|
|
711
|
+
"target": ".kiro/skills/kiro/references/best-practices.md",
|
|
699
712
|
"type": "doc"
|
|
700
713
|
},
|
|
701
714
|
{
|
|
702
|
-
"source": "skills/
|
|
703
|
-
"target": ".kiro/skills/
|
|
715
|
+
"source": "skills/kiro/references/commands.md",
|
|
716
|
+
"target": ".kiro/skills/kiro/references/commands.md",
|
|
704
717
|
"type": "doc"
|
|
705
718
|
},
|
|
706
719
|
{
|
|
707
|
-
"source": "skills/
|
|
708
|
-
"target": ".kiro/skills/
|
|
720
|
+
"source": "skills/kiro/references/configuration.md",
|
|
721
|
+
"target": ".kiro/skills/kiro/references/configuration.md",
|
|
709
722
|
"type": "doc"
|
|
710
723
|
},
|
|
711
724
|
{
|
|
712
|
-
"source": "skills/
|
|
713
|
-
"target": ".kiro/skills/
|
|
725
|
+
"source": "skills/kiro/references/getting-started.md",
|
|
726
|
+
"target": ".kiro/skills/kiro/references/getting-started.md",
|
|
714
727
|
"type": "doc"
|
|
715
728
|
},
|
|
716
729
|
{
|
|
717
|
-
"source": "skills/
|
|
718
|
-
"target": ".kiro/skills/
|
|
730
|
+
"source": "skills/kiro/references/hooks.md",
|
|
731
|
+
"target": ".kiro/skills/kiro/references/hooks.md",
|
|
719
732
|
"type": "doc"
|
|
720
733
|
},
|
|
721
734
|
{
|
|
722
|
-
"source": "skills/
|
|
723
|
-
"target": ".kiro/skills/
|
|
735
|
+
"source": "skills/kiro/references/mcp-integration.md",
|
|
736
|
+
"target": ".kiro/skills/kiro/references/mcp-integration.md",
|
|
724
737
|
"type": "doc"
|
|
725
738
|
},
|
|
726
739
|
{
|
|
727
|
-
"source": "skills/
|
|
728
|
-
"target": ".kiro/skills/
|
|
740
|
+
"source": "skills/kiro/references/skills.md",
|
|
741
|
+
"target": ".kiro/skills/kiro/references/skills.md",
|
|
729
742
|
"type": "doc"
|
|
730
743
|
},
|
|
731
744
|
{
|
|
732
|
-
"source": "skills/
|
|
733
|
-
"target": ".kiro/skills/
|
|
745
|
+
"source": "skills/kiro/references/specs-workflow.md",
|
|
746
|
+
"target": ".kiro/skills/kiro/references/specs-workflow.md",
|
|
734
747
|
"type": "doc"
|
|
735
748
|
},
|
|
736
749
|
{
|
|
737
|
-
"source": "skills/
|
|
738
|
-
"target": ".kiro/skills/
|
|
750
|
+
"source": "skills/kiro/references/steering-files.md",
|
|
751
|
+
"target": ".kiro/skills/kiro/references/steering-files.md",
|
|
739
752
|
"type": "doc"
|
|
740
753
|
},
|
|
741
754
|
{
|
|
742
|
-
"source": "skills/
|
|
743
|
-
"target": ".kiro/skills/
|
|
755
|
+
"source": "skills/kiro/references/troubleshooting.md",
|
|
756
|
+
"target": ".kiro/skills/kiro/references/troubleshooting.md",
|
|
744
757
|
"type": "doc"
|
|
745
758
|
},
|
|
746
759
|
{
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"powers": [
|
|
3
|
+
{
|
|
4
|
+
"name": "ClickHouse",
|
|
5
|
+
"url": "https://kiro.dev/powers/click-house",
|
|
6
|
+
"description": "High-performance analytics database for data pipelines",
|
|
7
|
+
"tier": "essential"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"name": "Context7",
|
|
11
|
+
"url": "https://kiro.dev/powers/context7",
|
|
12
|
+
"description": "Up-to-date documentation lookup for libraries and frameworks",
|
|
13
|
+
"tier": "recommended"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"name": "Exa",
|
|
17
|
+
"url": "https://kiro.dev/powers/exa",
|
|
18
|
+
"description": "Web search and research for finding datasets and papers",
|
|
19
|
+
"tier": "recommended"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"name": "Neon",
|
|
23
|
+
"url": "https://kiro.dev/powers/neon",
|
|
24
|
+
"description": "Serverless Postgres for ML feature stores",
|
|
25
|
+
"tier": "optional"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"name": "New Relic",
|
|
29
|
+
"url": "https://kiro.dev/powers/new-relic",
|
|
30
|
+
"description": "Observability and performance monitoring for ML services",
|
|
31
|
+
"tier": "optional"
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Autonomy Modes
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Kiro offers two modes for how the AI agent interacts with your workspace.
|
|
6
|
+
|
|
7
|
+
## Autopilot Mode
|
|
8
|
+
|
|
9
|
+
- Agent modifies files autonomously within the workspace
|
|
10
|
+
- Best for: routine tasks, well-defined changes, trusted workflows
|
|
11
|
+
- Changes are applied immediately
|
|
12
|
+
- Use when you trust the agent's judgment for the task
|
|
13
|
+
|
|
14
|
+
## Supervised Mode
|
|
15
|
+
|
|
16
|
+
- User has opportunity to review and revert changes after application
|
|
17
|
+
- Best for: complex refactors, unfamiliar codebases, learning
|
|
18
|
+
- Changes can be inspected before accepting
|
|
19
|
+
- Use when you want more control over modifications
|
|
20
|
+
|
|
21
|
+
## Choosing a Mode
|
|
22
|
+
|
|
23
|
+
- Start with Supervised for new projects or unfamiliar tasks
|
|
24
|
+
- Switch to Autopilot for repetitive, well-understood operations
|
|
25
|
+
- Use Supervised for security-sensitive changes
|
|
26
|
+
- Autopilot works well for spec task execution
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Best Practices
|
|
2
|
+
|
|
3
|
+
## Project Organization
|
|
4
|
+
|
|
5
|
+
- Keep `.kiro/` directory in version control
|
|
6
|
+
- Use consistent naming (kebab-case for directories)
|
|
7
|
+
- Document custom skills and commands in project README
|
|
8
|
+
- Share steering files across team via git
|
|
9
|
+
|
|
10
|
+
## Steering Conventions
|
|
11
|
+
|
|
12
|
+
- One topic per steering file
|
|
13
|
+
- Use "always" only for critical, universal rules
|
|
14
|
+
- Use "fileMatch" for language/framework-specific guidance
|
|
15
|
+
- Keep files concise (under 100 lines ideally)
|
|
16
|
+
- Include examples in steering content
|
|
17
|
+
|
|
18
|
+
## Skill Design
|
|
19
|
+
|
|
20
|
+
- Focus each skill on one domain
|
|
21
|
+
- Write clear activation descriptions
|
|
22
|
+
- Use references for detailed content
|
|
23
|
+
- Keep main skill.md as an overview/router
|
|
24
|
+
- Test activation with various phrasings
|
|
25
|
+
|
|
26
|
+
## Hook Patterns
|
|
27
|
+
|
|
28
|
+
- Use file hooks for linting and formatting
|
|
29
|
+
- Use postTaskExecution for test validation
|
|
30
|
+
- Use preToolUse for access control
|
|
31
|
+
- Keep hook commands fast (under 30 seconds)
|
|
32
|
+
- Log hook failures for debugging
|
|
33
|
+
|
|
34
|
+
## Team Workflows
|
|
35
|
+
|
|
36
|
+
- Standardize steering files across projects
|
|
37
|
+
- Share skills via presets or git submodules
|
|
38
|
+
- Document MCP server requirements in README
|
|
39
|
+
- Use specs for all non-trivial features
|
|
40
|
+
- Review spec documents before task execution
|
|
41
|
+
|
|
42
|
+
## Cost Management
|
|
43
|
+
|
|
44
|
+
- Use steering to keep responses focused
|
|
45
|
+
- Avoid overly broad "always" steering
|
|
46
|
+
- Disable unused MCP servers
|
|
47
|
+
- Use Supervised mode for exploratory work
|
|
48
|
+
- Keep skill references concise
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Commands
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Commands are user-defined operations in `.kiro/commands/` that expand to prompts. They provide shortcuts for common workflows.
|
|
6
|
+
|
|
7
|
+
## File Format
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
---
|
|
11
|
+
description: Brief description of what this command does
|
|
12
|
+
inclusion: manual
|
|
13
|
+
argument-hint: "[pattern]"
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Arguments
|
|
17
|
+
PATTERN: $1 (default: all)
|
|
18
|
+
|
|
19
|
+
## Workflow
|
|
20
|
+
1. Step one
|
|
21
|
+
2. Step two
|
|
22
|
+
3. Step three
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Front-Matter
|
|
26
|
+
|
|
27
|
+
Required fields:
|
|
28
|
+
- `description`: What the command does
|
|
29
|
+
|
|
30
|
+
Optional fields:
|
|
31
|
+
- `inclusion`: "manual" (default)
|
|
32
|
+
- `argument-hint`: Hint for arguments shown to user
|
|
33
|
+
|
|
34
|
+
## Arguments
|
|
35
|
+
|
|
36
|
+
Use `$1`, `$2`, etc. for positional arguments passed by the user.
|
|
37
|
+
|
|
38
|
+
## Nested Commands
|
|
39
|
+
|
|
40
|
+
Commands can be organized in subdirectories:
|
|
41
|
+
```
|
|
42
|
+
.kiro/commands/
|
|
43
|
+
test.md
|
|
44
|
+
fix/
|
|
45
|
+
types.md
|
|
46
|
+
test.md
|
|
47
|
+
fast.md
|
|
48
|
+
git/
|
|
49
|
+
cm.md
|
|
50
|
+
cp.md
|
|
51
|
+
pr.md
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Access nested commands with colon notation: `/fix:types`, `/git:cm`
|
|
55
|
+
|
|
56
|
+
## Best Practices
|
|
57
|
+
|
|
58
|
+
- Keep commands focused on one workflow
|
|
59
|
+
- Include clear step-by-step instructions
|
|
60
|
+
- Use argument hints to guide users
|
|
61
|
+
- Document default behavior when no arguments provided
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Configuration
|
|
2
|
+
|
|
3
|
+
## Settings Hierarchy
|
|
4
|
+
|
|
5
|
+
Settings are merged with precedence:
|
|
6
|
+
1. User-level: `~/.kiro/settings/mcp.json` (global)
|
|
7
|
+
2. Workspace-level: `.kiro/settings/mcp.json` (per project)
|
|
8
|
+
|
|
9
|
+
Workspace settings override user settings.
|
|
10
|
+
|
|
11
|
+
## MCP Configuration
|
|
12
|
+
|
|
13
|
+
File: `.kiro/settings/mcp.json`
|
|
14
|
+
|
|
15
|
+
```json
|
|
16
|
+
{
|
|
17
|
+
"mcpServers": {
|
|
18
|
+
"server-name": {
|
|
19
|
+
"command": "uvx",
|
|
20
|
+
"args": ["package-name@latest"],
|
|
21
|
+
"env": {
|
|
22
|
+
"API_KEY": "your-key"
|
|
23
|
+
},
|
|
24
|
+
"disabled": false,
|
|
25
|
+
"autoApprove": ["tool-name"]
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Key Settings
|
|
32
|
+
|
|
33
|
+
- `command`: Executable to run the MCP server
|
|
34
|
+
- `args`: Command-line arguments
|
|
35
|
+
- `env`: Environment variables passed to the server
|
|
36
|
+
- `disabled`: Enable/disable without removing config
|
|
37
|
+
- `autoApprove`: Tools that don't require user confirmation
|
|
38
|
+
|
|
39
|
+
## Multi-Root Workspaces
|
|
40
|
+
|
|
41
|
+
Each workspace folder can have its own `.kiro/settings/mcp.json`. Configs merge with later folders taking precedence.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Getting Started with Kiro
|
|
2
|
+
|
|
3
|
+
## Prerequisites
|
|
4
|
+
|
|
5
|
+
- Supported OS: Windows, macOS, Linux
|
|
6
|
+
- Internet connection for AI features
|
|
7
|
+
|
|
8
|
+
## Installation
|
|
9
|
+
|
|
10
|
+
Download Kiro from https://kiro.dev and install for your platform.
|
|
11
|
+
|
|
12
|
+
## First Run
|
|
13
|
+
|
|
14
|
+
1. Open Kiro
|
|
15
|
+
2. Open or create a workspace folder
|
|
16
|
+
3. Start chatting with the AI agent in the chat panel
|
|
17
|
+
|
|
18
|
+
## Workspace Setup
|
|
19
|
+
|
|
20
|
+
Kiro stores configuration in `.kiro/` at the workspace root:
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
.kiro/
|
|
24
|
+
settings/
|
|
25
|
+
mcp.json # MCP server configuration
|
|
26
|
+
steering/ # Steering files (conventions, rules)
|
|
27
|
+
skills/ # Custom skills
|
|
28
|
+
commands/ # Custom commands
|
|
29
|
+
hooks/ # Agent hooks
|
|
30
|
+
specs/ # Feature specs
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Authentication
|
|
34
|
+
|
|
35
|
+
- Sign in with your AWS account or supported identity provider
|
|
36
|
+
- API keys are managed automatically by the IDE
|
|
37
|
+
|
|
38
|
+
## Key Concepts
|
|
39
|
+
|
|
40
|
+
- **Chat**: Interact with the AI agent directly
|
|
41
|
+
- **Specs**: Structured feature development (requirements -> design -> tasks)
|
|
42
|
+
- **Steering**: Project-level instructions that guide the AI
|
|
43
|
+
- **Skills**: Modular capabilities activated by context
|
|
44
|
+
- **Hooks**: Automated actions on IDE events
|
|
45
|
+
- **MCP**: External tool integrations
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Hooks
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Hooks automate agent actions based on IDE events. When an event occurs, the specified action runs automatically.
|
|
6
|
+
|
|
7
|
+
## Event Types
|
|
8
|
+
|
|
9
|
+
- `fileEdited`: When a user saves a code file
|
|
10
|
+
- `fileCreated`: When a user creates a new file
|
|
11
|
+
- `fileDeleted`: When the user deletes a file
|
|
12
|
+
- `userTriggered`: Manual trigger by user
|
|
13
|
+
- `promptSubmit`: When a message is sent to the agent
|
|
14
|
+
- `agentStop`: When an agent execution completes
|
|
15
|
+
- `preToolUse`: Before a tool is executed
|
|
16
|
+
- `postToolUse`: After a tool is executed
|
|
17
|
+
- `preTaskExecution`: Before a spec task starts
|
|
18
|
+
- `postTaskExecution`: After a spec task completes
|
|
19
|
+
|
|
20
|
+
## Actions
|
|
21
|
+
|
|
22
|
+
- `askAgent`: Send a prompt to the agent
|
|
23
|
+
- `runCommand`: Execute a shell command
|
|
24
|
+
|
|
25
|
+
## Hook Schema
|
|
26
|
+
|
|
27
|
+
```json
|
|
28
|
+
{
|
|
29
|
+
"name": "Hook Name",
|
|
30
|
+
"version": "1.0.0",
|
|
31
|
+
"description": "Optional description",
|
|
32
|
+
"when": {
|
|
33
|
+
"type": "fileEdited",
|
|
34
|
+
"patterns": ["*.ts", "*.tsx"]
|
|
35
|
+
},
|
|
36
|
+
"then": {
|
|
37
|
+
"type": "runCommand",
|
|
38
|
+
"command": "npm run lint"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## File Events
|
|
44
|
+
|
|
45
|
+
Require `patterns` array with glob patterns:
|
|
46
|
+
```json
|
|
47
|
+
{
|
|
48
|
+
"when": {
|
|
49
|
+
"type": "fileEdited",
|
|
50
|
+
"patterns": ["*.ts", "*.tsx"]
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Tool Events
|
|
56
|
+
|
|
57
|
+
Require `toolTypes` array with categories or regex:
|
|
58
|
+
```json
|
|
59
|
+
{
|
|
60
|
+
"when": {
|
|
61
|
+
"type": "preToolUse",
|
|
62
|
+
"toolTypes": ["write"]
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Valid categories: `read`, `write`, `shell`, `web`, `spec`, `*`
|
|
68
|
+
|
|
69
|
+
## Examples
|
|
70
|
+
|
|
71
|
+
### Lint on Save
|
|
72
|
+
```json
|
|
73
|
+
{
|
|
74
|
+
"name": "Lint on Save",
|
|
75
|
+
"version": "1.0.0",
|
|
76
|
+
"when": { "type": "fileEdited", "patterns": ["*.ts"] },
|
|
77
|
+
"then": { "type": "runCommand", "command": "npm run lint" }
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Run Tests After Task
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"name": "Test After Task",
|
|
85
|
+
"version": "1.0.0",
|
|
86
|
+
"when": { "type": "postTaskExecution" },
|
|
87
|
+
"then": { "type": "runCommand", "command": "npm test" }
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Review Writes
|
|
92
|
+
```json
|
|
93
|
+
{
|
|
94
|
+
"name": "Review Writes",
|
|
95
|
+
"version": "1.0.0",
|
|
96
|
+
"when": { "type": "preToolUse", "toolTypes": ["write"] },
|
|
97
|
+
"then": { "type": "askAgent", "prompt": "Verify this follows coding standards" }
|
|
98
|
+
}
|
|
99
|
+
```
|