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.
Files changed (191) hide show
  1. package/README.md +35 -0
  2. package/dist/index.js +771 -116
  3. package/dist/index.js.map +1 -1
  4. package/dist/presets/backend/hooks/api-schema-validate.js +75 -0
  5. package/dist/presets/backend/hooks/endpoint-test-coverage.js +77 -0
  6. package/dist/presets/backend/hooks/migration-safety-check.js +68 -0
  7. package/dist/presets/backend/manifest.json +48 -35
  8. package/dist/presets/backend/powers.json +40 -0
  9. package/dist/presets/backend/skills/kiro/references/autonomy-modes.md +26 -0
  10. package/dist/presets/backend/skills/kiro/references/best-practices.md +48 -0
  11. package/dist/presets/backend/skills/kiro/references/commands.md +61 -0
  12. package/dist/presets/backend/skills/kiro/references/configuration.md +41 -0
  13. package/dist/presets/backend/skills/kiro/references/getting-started.md +45 -0
  14. package/dist/presets/backend/skills/kiro/references/hooks.md +99 -0
  15. package/dist/presets/backend/skills/kiro/references/mcp-integration.md +53 -0
  16. package/dist/presets/backend/skills/kiro/references/skills.md +55 -0
  17. package/dist/presets/backend/skills/kiro/references/specs-workflow.md +62 -0
  18. package/dist/presets/backend/skills/kiro/references/steering-files.md +84 -0
  19. package/dist/presets/backend/skills/kiro/references/troubleshooting.md +42 -0
  20. package/dist/presets/backend/skills/kiro/skill.md +194 -0
  21. package/dist/presets/data-ai/hooks/data-drift-check.js +77 -0
  22. package/dist/presets/data-ai/hooks/experiment-log.js +87 -0
  23. package/dist/presets/data-ai/hooks/model-card-update.js +99 -0
  24. package/dist/presets/data-ai/manifest.json +48 -35
  25. package/dist/presets/data-ai/powers.json +34 -0
  26. package/dist/presets/data-ai/skills/kiro/references/autonomy-modes.md +26 -0
  27. package/dist/presets/data-ai/skills/kiro/references/best-practices.md +48 -0
  28. package/dist/presets/data-ai/skills/kiro/references/commands.md +61 -0
  29. package/dist/presets/data-ai/skills/kiro/references/configuration.md +41 -0
  30. package/dist/presets/data-ai/skills/kiro/references/getting-started.md +45 -0
  31. package/dist/presets/data-ai/skills/kiro/references/hooks.md +99 -0
  32. package/dist/presets/data-ai/skills/kiro/references/mcp-integration.md +53 -0
  33. package/dist/presets/data-ai/skills/kiro/references/skills.md +55 -0
  34. package/dist/presets/data-ai/skills/kiro/references/specs-workflow.md +62 -0
  35. package/dist/presets/data-ai/skills/kiro/references/steering-files.md +84 -0
  36. package/dist/presets/data-ai/skills/kiro/references/troubleshooting.md +42 -0
  37. package/dist/presets/data-ai/skills/kiro/skill.md +194 -0
  38. package/dist/presets/devops/hooks/container-scan.js +73 -0
  39. package/dist/presets/devops/hooks/cost-estimation.js +69 -0
  40. package/dist/presets/devops/hooks/terraform-plan-review.js +67 -0
  41. package/dist/presets/devops/manifest.json +48 -35
  42. package/dist/presets/devops/powers.json +40 -0
  43. package/dist/presets/devops/skills/kiro/references/autonomy-modes.md +26 -0
  44. package/dist/presets/devops/skills/kiro/references/best-practices.md +48 -0
  45. package/dist/presets/devops/skills/kiro/references/commands.md +61 -0
  46. package/dist/presets/devops/skills/kiro/references/configuration.md +41 -0
  47. package/dist/presets/devops/skills/kiro/references/getting-started.md +45 -0
  48. package/dist/presets/devops/skills/kiro/references/hooks.md +99 -0
  49. package/dist/presets/devops/skills/kiro/references/mcp-integration.md +53 -0
  50. package/dist/presets/devops/skills/kiro/references/skills.md +55 -0
  51. package/dist/presets/devops/skills/kiro/references/specs-workflow.md +62 -0
  52. package/dist/presets/devops/skills/kiro/references/steering-files.md +84 -0
  53. package/dist/presets/devops/skills/kiro/references/troubleshooting.md +42 -0
  54. package/dist/presets/devops/skills/kiro/skill.md +194 -0
  55. package/dist/presets/frontend/commands/test.md +1 -1
  56. package/dist/presets/frontend/hooks/accessibility-check.js +76 -0
  57. package/dist/presets/frontend/hooks/bundle-size-guard.js +71 -0
  58. package/dist/presets/frontend/hooks/component-test-reminder.js +71 -0
  59. package/dist/presets/frontend/manifest.json +48 -35
  60. package/dist/presets/frontend/powers.json +34 -0
  61. package/dist/presets/frontend/skills/kiro/references/autonomy-modes.md +26 -0
  62. package/dist/presets/frontend/skills/kiro/references/best-practices.md +48 -0
  63. package/dist/presets/frontend/skills/kiro/references/commands.md +61 -0
  64. package/dist/presets/frontend/skills/kiro/references/configuration.md +41 -0
  65. package/dist/presets/frontend/skills/kiro/references/getting-started.md +45 -0
  66. package/dist/presets/frontend/skills/kiro/references/hooks.md +99 -0
  67. package/dist/presets/frontend/skills/kiro/references/mcp-integration.md +53 -0
  68. package/dist/presets/frontend/skills/kiro/references/skills.md +55 -0
  69. package/dist/presets/frontend/skills/kiro/references/specs-workflow.md +62 -0
  70. package/dist/presets/frontend/skills/kiro/references/steering-files.md +84 -0
  71. package/dist/presets/frontend/skills/kiro/references/troubleshooting.md +42 -0
  72. package/dist/presets/frontend/skills/kiro/skill.md +194 -0
  73. package/dist/presets/fullstack/hooks/api-client-gen.js +69 -0
  74. package/dist/presets/fullstack/hooks/deployment-readiness.js +73 -0
  75. package/dist/presets/fullstack/hooks/type-sync-check.js +69 -0
  76. package/dist/presets/fullstack/manifest.json +48 -35
  77. package/dist/presets/fullstack/powers.json +46 -0
  78. package/dist/presets/fullstack/skills/kiro/references/autonomy-modes.md +26 -0
  79. package/dist/presets/fullstack/skills/kiro/references/best-practices.md +48 -0
  80. package/dist/presets/fullstack/skills/kiro/references/commands.md +61 -0
  81. package/dist/presets/fullstack/skills/kiro/references/configuration.md +41 -0
  82. package/dist/presets/fullstack/skills/kiro/references/getting-started.md +45 -0
  83. package/dist/presets/fullstack/skills/kiro/references/hooks.md +99 -0
  84. package/dist/presets/fullstack/skills/kiro/references/mcp-integration.md +53 -0
  85. package/dist/presets/fullstack/skills/kiro/references/skills.md +55 -0
  86. package/dist/presets/fullstack/skills/kiro/references/specs-workflow.md +62 -0
  87. package/dist/presets/fullstack/skills/kiro/references/steering-files.md +84 -0
  88. package/dist/presets/fullstack/skills/kiro/references/troubleshooting.md +42 -0
  89. package/dist/presets/fullstack/skills/kiro/skill.md +194 -0
  90. package/dist/presets/mobile/hooks/asset-optimization.js +58 -0
  91. package/dist/presets/mobile/hooks/platform-parity-check.js +73 -0
  92. package/dist/presets/mobile/hooks/release-checklist.js +83 -0
  93. package/dist/presets/mobile/manifest.json +48 -35
  94. package/dist/presets/mobile/powers.json +34 -0
  95. package/dist/presets/mobile/skills/kiro/references/autonomy-modes.md +26 -0
  96. package/dist/presets/mobile/skills/kiro/references/best-practices.md +48 -0
  97. package/dist/presets/mobile/skills/kiro/references/commands.md +61 -0
  98. package/dist/presets/mobile/skills/kiro/references/configuration.md +41 -0
  99. package/dist/presets/mobile/skills/kiro/references/getting-started.md +45 -0
  100. package/dist/presets/mobile/skills/kiro/references/hooks.md +99 -0
  101. package/dist/presets/mobile/skills/kiro/references/mcp-integration.md +53 -0
  102. package/dist/presets/mobile/skills/kiro/references/skills.md +55 -0
  103. package/dist/presets/mobile/skills/kiro/references/specs-workflow.md +62 -0
  104. package/dist/presets/mobile/skills/kiro/references/steering-files.md +84 -0
  105. package/dist/presets/mobile/skills/kiro/references/troubleshooting.md +42 -0
  106. package/dist/presets/mobile/skills/kiro/skill.md +194 -0
  107. package/package.json +1 -1
  108. package/dist/presets/backend/skills/claude-code/references/advanced-features.md +0 -399
  109. package/dist/presets/backend/skills/claude-code/references/agent-skills.md +0 -399
  110. package/dist/presets/backend/skills/claude-code/references/api-reference.md +0 -498
  111. package/dist/presets/backend/skills/claude-code/references/best-practices.md +0 -447
  112. package/dist/presets/backend/skills/claude-code/references/cicd-integration.md +0 -428
  113. package/dist/presets/backend/skills/claude-code/references/configuration.md +0 -480
  114. package/dist/presets/backend/skills/claude-code/references/enterprise-features.md +0 -472
  115. package/dist/presets/backend/skills/claude-code/references/getting-started.md +0 -252
  116. package/dist/presets/backend/skills/claude-code/references/hooks-and-plugins.md +0 -441
  117. package/dist/presets/backend/skills/claude-code/references/ide-integration.md +0 -316
  118. package/dist/presets/backend/skills/claude-code/references/mcp-integration.md +0 -386
  119. package/dist/presets/backend/skills/claude-code/references/slash-commands.md +0 -489
  120. package/dist/presets/backend/skills/claude-code/references/troubleshooting.md +0 -456
  121. package/dist/presets/backend/skills/claude-code/skill.md +0 -194
  122. package/dist/presets/data-ai/skills/claude-code/references/advanced-features.md +0 -399
  123. package/dist/presets/data-ai/skills/claude-code/references/agent-skills.md +0 -399
  124. package/dist/presets/data-ai/skills/claude-code/references/api-reference.md +0 -498
  125. package/dist/presets/data-ai/skills/claude-code/references/best-practices.md +0 -447
  126. package/dist/presets/data-ai/skills/claude-code/references/cicd-integration.md +0 -428
  127. package/dist/presets/data-ai/skills/claude-code/references/configuration.md +0 -480
  128. package/dist/presets/data-ai/skills/claude-code/references/enterprise-features.md +0 -472
  129. package/dist/presets/data-ai/skills/claude-code/references/getting-started.md +0 -252
  130. package/dist/presets/data-ai/skills/claude-code/references/hooks-and-plugins.md +0 -441
  131. package/dist/presets/data-ai/skills/claude-code/references/ide-integration.md +0 -316
  132. package/dist/presets/data-ai/skills/claude-code/references/mcp-integration.md +0 -386
  133. package/dist/presets/data-ai/skills/claude-code/references/slash-commands.md +0 -489
  134. package/dist/presets/data-ai/skills/claude-code/references/troubleshooting.md +0 -456
  135. package/dist/presets/data-ai/skills/claude-code/skill.md +0 -194
  136. package/dist/presets/devops/skills/claude-code/references/advanced-features.md +0 -399
  137. package/dist/presets/devops/skills/claude-code/references/agent-skills.md +0 -399
  138. package/dist/presets/devops/skills/claude-code/references/api-reference.md +0 -498
  139. package/dist/presets/devops/skills/claude-code/references/best-practices.md +0 -447
  140. package/dist/presets/devops/skills/claude-code/references/cicd-integration.md +0 -428
  141. package/dist/presets/devops/skills/claude-code/references/configuration.md +0 -480
  142. package/dist/presets/devops/skills/claude-code/references/enterprise-features.md +0 -472
  143. package/dist/presets/devops/skills/claude-code/references/getting-started.md +0 -252
  144. package/dist/presets/devops/skills/claude-code/references/hooks-and-plugins.md +0 -441
  145. package/dist/presets/devops/skills/claude-code/references/ide-integration.md +0 -316
  146. package/dist/presets/devops/skills/claude-code/references/mcp-integration.md +0 -386
  147. package/dist/presets/devops/skills/claude-code/references/slash-commands.md +0 -489
  148. package/dist/presets/devops/skills/claude-code/references/troubleshooting.md +0 -456
  149. package/dist/presets/devops/skills/claude-code/skill.md +0 -194
  150. package/dist/presets/frontend/skills/claude-code/references/advanced-features.md +0 -399
  151. package/dist/presets/frontend/skills/claude-code/references/agent-skills.md +0 -399
  152. package/dist/presets/frontend/skills/claude-code/references/api-reference.md +0 -498
  153. package/dist/presets/frontend/skills/claude-code/references/best-practices.md +0 -447
  154. package/dist/presets/frontend/skills/claude-code/references/cicd-integration.md +0 -428
  155. package/dist/presets/frontend/skills/claude-code/references/configuration.md +0 -480
  156. package/dist/presets/frontend/skills/claude-code/references/enterprise-features.md +0 -472
  157. package/dist/presets/frontend/skills/claude-code/references/getting-started.md +0 -252
  158. package/dist/presets/frontend/skills/claude-code/references/hooks-and-plugins.md +0 -441
  159. package/dist/presets/frontend/skills/claude-code/references/ide-integration.md +0 -316
  160. package/dist/presets/frontend/skills/claude-code/references/mcp-integration.md +0 -386
  161. package/dist/presets/frontend/skills/claude-code/references/slash-commands.md +0 -489
  162. package/dist/presets/frontend/skills/claude-code/references/troubleshooting.md +0 -456
  163. package/dist/presets/frontend/skills/claude-code/skill.md +0 -194
  164. package/dist/presets/fullstack/skills/claude-code/references/advanced-features.md +0 -399
  165. package/dist/presets/fullstack/skills/claude-code/references/agent-skills.md +0 -399
  166. package/dist/presets/fullstack/skills/claude-code/references/api-reference.md +0 -498
  167. package/dist/presets/fullstack/skills/claude-code/references/best-practices.md +0 -447
  168. package/dist/presets/fullstack/skills/claude-code/references/cicd-integration.md +0 -428
  169. package/dist/presets/fullstack/skills/claude-code/references/configuration.md +0 -480
  170. package/dist/presets/fullstack/skills/claude-code/references/enterprise-features.md +0 -472
  171. package/dist/presets/fullstack/skills/claude-code/references/getting-started.md +0 -252
  172. package/dist/presets/fullstack/skills/claude-code/references/hooks-and-plugins.md +0 -441
  173. package/dist/presets/fullstack/skills/claude-code/references/ide-integration.md +0 -316
  174. package/dist/presets/fullstack/skills/claude-code/references/mcp-integration.md +0 -386
  175. package/dist/presets/fullstack/skills/claude-code/references/slash-commands.md +0 -489
  176. package/dist/presets/fullstack/skills/claude-code/references/troubleshooting.md +0 -456
  177. package/dist/presets/fullstack/skills/claude-code/skill.md +0 -194
  178. package/dist/presets/mobile/skills/claude-code/references/advanced-features.md +0 -399
  179. package/dist/presets/mobile/skills/claude-code/references/agent-skills.md +0 -399
  180. package/dist/presets/mobile/skills/claude-code/references/api-reference.md +0 -498
  181. package/dist/presets/mobile/skills/claude-code/references/best-practices.md +0 -447
  182. package/dist/presets/mobile/skills/claude-code/references/cicd-integration.md +0 -428
  183. package/dist/presets/mobile/skills/claude-code/references/configuration.md +0 -480
  184. package/dist/presets/mobile/skills/claude-code/references/enterprise-features.md +0 -472
  185. package/dist/presets/mobile/skills/claude-code/references/getting-started.md +0 -252
  186. package/dist/presets/mobile/skills/claude-code/references/hooks-and-plugins.md +0 -441
  187. package/dist/presets/mobile/skills/claude-code/references/ide-integration.md +0 -316
  188. package/dist/presets/mobile/skills/claude-code/references/mcp-integration.md +0 -386
  189. package/dist/presets/mobile/skills/claude-code/references/slash-commands.md +0 -489
  190. package/dist/presets/mobile/skills/claude-code/references/troubleshooting.md +0 -456
  191. package/dist/presets/mobile/skills/claude-code/skill.md +0 -194
@@ -0,0 +1,75 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Validates that route handler files export proper HTTP method handlers
4
+ * and use input validation (checks for zod/joi imports in route files).
5
+ */
6
+
7
+ const fs = require('fs');
8
+ const path = require('path');
9
+
10
+ const ROUTE_DIRS = ['src/app/api', 'src/routes', 'routes', 'api'];
11
+ const ROUTE_FILES = ['route.ts', 'route.js', 'index.ts', 'index.js'];
12
+ const VALIDATION_PATTERNS = [/from\s+['"]zod['"]/, /from\s+['"]joi['"]/, /require\(['"]zod['"]\)/, /require\(['"]joi['"]\)/];
13
+ const HTTP_METHODS = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'];
14
+
15
+ const cwd = process.cwd();
16
+ const issues = [];
17
+
18
+ function findRouteFiles(dir) {
19
+ const results = [];
20
+ if (!fs.existsSync(dir)) return results;
21
+ try {
22
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
23
+ for (const entry of entries) {
24
+ const full = path.join(dir, entry.name);
25
+ if (entry.isDirectory()) {
26
+ results.push(...findRouteFiles(full));
27
+ } else if (ROUTE_FILES.includes(entry.name)) {
28
+ results.push(full);
29
+ }
30
+ }
31
+ } catch (e) { /* skip */ }
32
+ return results;
33
+ }
34
+
35
+ let routeFiles = [];
36
+ for (const dir of ROUTE_DIRS) {
37
+ routeFiles.push(...findRouteFiles(path.resolve(cwd, dir)));
38
+ }
39
+
40
+ if (routeFiles.length === 0) {
41
+ process.exit(0);
42
+ }
43
+
44
+ for (const file of routeFiles) {
45
+ const content = fs.readFileSync(file, 'utf8');
46
+ const rel = path.relative(cwd, file);
47
+
48
+ // Check for exported HTTP method handlers
49
+ const hasMethod = HTTP_METHODS.some((m) =>
50
+ new RegExp(`export\\s+(async\\s+)?function\\s+${m}\\b`).test(content)
51
+ );
52
+ if (!hasMethod) {
53
+ issues.push(`${rel}: No exported HTTP method handler found (GET, POST, etc.)`);
54
+ continue;
55
+ }
56
+
57
+ // Check for input validation on POST/PUT/PATCH handlers
58
+ const hasMutation = ['POST', 'PUT', 'PATCH'].some((m) =>
59
+ new RegExp(`export\\s+(async\\s+)?function\\s+${m}\\b`).test(content)
60
+ );
61
+ if (hasMutation) {
62
+ const hasValidation = VALIDATION_PATTERNS.some((p) => p.test(content));
63
+ if (!hasValidation) {
64
+ issues.push(`${rel}: Mutation handler without input validation (zod/joi not imported)`);
65
+ }
66
+ }
67
+ }
68
+
69
+ if (issues.length > 0) {
70
+ process.stdout.write('[api-schema-validate] Issues found:\n');
71
+ issues.forEach((i) => process.stdout.write(` - ${i}\n`));
72
+ process.exit(1);
73
+ }
74
+
75
+ process.exit(0);
@@ -0,0 +1,77 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Checks that API route files in src/app/api/ or routes/ have corresponding test files.
4
+ */
5
+
6
+ const fs = require('fs');
7
+ const path = require('path');
8
+
9
+ const ROUTE_DIRS = ['src/app/api', 'src/routes', 'routes'];
10
+ const TEST_DIRS = ['__tests__', 'tests', 'test'];
11
+ const ROUTE_FILES = ['route.ts', 'route.js', 'index.ts', 'index.js'];
12
+
13
+ const cwd = process.cwd();
14
+
15
+ function findRoutes(dir) {
16
+ const results = [];
17
+ if (!fs.existsSync(dir)) return results;
18
+ try {
19
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
20
+ for (const entry of entries) {
21
+ const full = path.join(dir, entry.name);
22
+ if (entry.isDirectory()) {
23
+ results.push(...findRoutes(full));
24
+ } else if (ROUTE_FILES.includes(entry.name)) {
25
+ results.push({ file: full, dir: path.dirname(full) });
26
+ }
27
+ }
28
+ } catch (e) { /* skip */ }
29
+ return results;
30
+ }
31
+
32
+ let routes = [];
33
+ for (const dir of ROUTE_DIRS) {
34
+ routes.push(...findRoutes(path.resolve(cwd, dir)));
35
+ }
36
+
37
+ if (routes.length === 0) {
38
+ process.exit(0);
39
+ }
40
+
41
+ const missing = [];
42
+
43
+ for (const route of routes) {
44
+ const routeDir = route.dir;
45
+ const routeRel = path.relative(cwd, routeDir);
46
+ const routeName = path.basename(routeDir);
47
+
48
+ // Look for test files in various locations
49
+ const testPatterns = [
50
+ path.join(routeDir, `route.test.ts`),
51
+ path.join(routeDir, `route.test.js`),
52
+ path.join(routeDir, `${routeName}.test.ts`),
53
+ path.join(routeDir, `${routeName}.test.js`),
54
+ ];
55
+
56
+ // Also check parent __tests__ directories
57
+ for (const testDir of TEST_DIRS) {
58
+ testPatterns.push(path.join(routeDir, '..', testDir, `${routeName}.test.ts`));
59
+ testPatterns.push(path.join(routeDir, '..', testDir, `${routeName}.test.js`));
60
+ }
61
+
62
+ const hasTest = testPatterns.some((t) => fs.existsSync(t));
63
+ if (!hasTest) {
64
+ missing.push(routeRel);
65
+ }
66
+ }
67
+
68
+ if (missing.length > 0) {
69
+ process.stdout.write(`[endpoint-test-coverage] ${missing.length} API route(s) without tests:\n`);
70
+ missing.slice(0, 10).forEach((m) => process.stdout.write(` - ${m}\n`));
71
+ if (missing.length > 10) {
72
+ process.stdout.write(` ... and ${missing.length - 10} more\n`);
73
+ }
74
+ process.exit(1);
75
+ }
76
+
77
+ process.exit(0);
@@ -0,0 +1,68 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Scans migration files for dangerous operations (DROP TABLE, DROP COLUMN, TRUNCATE)
4
+ * and warns before execution.
5
+ */
6
+
7
+ const fs = require('fs');
8
+ const path = require('path');
9
+
10
+ const MIGRATION_DIRS = ['prisma/migrations', 'drizzle', 'migrations', 'db/migrations', 'src/db/migrations'];
11
+ const DANGEROUS_PATTERNS = [
12
+ { pattern: /DROP\s+TABLE/gi, label: 'DROP TABLE' },
13
+ { pattern: /DROP\s+COLUMN/gi, label: 'DROP COLUMN' },
14
+ { pattern: /ALTER\s+TABLE\s+\S+\s+DROP/gi, label: 'ALTER TABLE DROP' },
15
+ { pattern: /TRUNCATE/gi, label: 'TRUNCATE' },
16
+ { pattern: /DELETE\s+FROM\s+\S+\s*;/gi, label: 'DELETE without WHERE' },
17
+ ];
18
+ const SQL_EXTENSIONS = ['.sql', '.ts', '.js'];
19
+
20
+ const cwd = process.cwd();
21
+ const warnings = [];
22
+
23
+ function findMigrationFiles(dir) {
24
+ const results = [];
25
+ if (!fs.existsSync(dir)) return results;
26
+ try {
27
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
28
+ for (const entry of entries) {
29
+ const full = path.join(dir, entry.name);
30
+ if (entry.isDirectory()) {
31
+ results.push(...findMigrationFiles(full));
32
+ } else if (SQL_EXTENSIONS.includes(path.extname(entry.name).toLowerCase())) {
33
+ results.push(full);
34
+ }
35
+ }
36
+ } catch (e) { /* skip */ }
37
+ return results;
38
+ }
39
+
40
+ let migrationFiles = [];
41
+ for (const dir of MIGRATION_DIRS) {
42
+ migrationFiles.push(...findMigrationFiles(path.resolve(cwd, dir)));
43
+ }
44
+
45
+ if (migrationFiles.length === 0) {
46
+ process.exit(0);
47
+ }
48
+
49
+ for (const file of migrationFiles) {
50
+ const content = fs.readFileSync(file, 'utf8');
51
+ const rel = path.relative(cwd, file);
52
+
53
+ for (const { pattern, label } of DANGEROUS_PATTERNS) {
54
+ const matches = content.match(pattern);
55
+ if (matches) {
56
+ warnings.push(`${rel}: Contains ${label} (${matches.length} occurrence(s))`);
57
+ }
58
+ }
59
+ }
60
+
61
+ if (warnings.length > 0) {
62
+ process.stdout.write('[migration-safety-check] Dangerous operations detected:\n');
63
+ warnings.forEach((w) => process.stdout.write(` - ${w}\n`));
64
+ process.stdout.write(' Review these changes carefully before applying.\n');
65
+ process.exit(1);
66
+ }
67
+
68
+ process.exit(0);
@@ -523,6 +523,29 @@
523
523
  "type": "hook",
524
524
  "executable": true
525
525
  },
526
+ {
527
+ "source": "hooks/api-schema-validate.js",
528
+ "target": ".kiro/hooks/api-schema-validate.js",
529
+ "type": "hook",
530
+ "executable": true
531
+ },
532
+ {
533
+ "source": "hooks/migration-safety-check.js",
534
+ "target": ".kiro/hooks/migration-safety-check.js",
535
+ "type": "hook",
536
+ "executable": true
537
+ },
538
+ {
539
+ "source": "hooks/endpoint-test-coverage.js",
540
+ "target": ".kiro/hooks/endpoint-test-coverage.js",
541
+ "type": "hook",
542
+ "executable": true
543
+ },
544
+ {
545
+ "source": "powers.json",
546
+ "target": ".kiro/powers.json",
547
+ "type": "powers"
548
+ },
526
549
  {
527
550
  "source": "metadata.json",
528
551
  "target": ".kiro/metadata.json",
@@ -864,73 +887,63 @@
864
887
  "type": "other"
865
888
  },
866
889
  {
867
- "source": "skills/claude-code/references/advanced-features.md",
868
- "target": ".kiro/skills/claude-code/references/advanced-features.md",
869
- "type": "doc"
870
- },
871
- {
872
- "source": "skills/claude-code/references/agent-skills.md",
873
- "target": ".kiro/skills/claude-code/references/agent-skills.md",
874
- "type": "doc"
875
- },
876
- {
877
- "source": "skills/claude-code/references/api-reference.md",
878
- "target": ".kiro/skills/claude-code/references/api-reference.md",
879
- "type": "doc"
890
+ "source": "skills/kiro/skill.md",
891
+ "target": ".kiro/skills/kiro/skill.md",
892
+ "type": "skill"
880
893
  },
881
894
  {
882
- "source": "skills/claude-code/references/best-practices.md",
883
- "target": ".kiro/skills/claude-code/references/best-practices.md",
895
+ "source": "skills/kiro/references/autonomy-modes.md",
896
+ "target": ".kiro/skills/kiro/references/autonomy-modes.md",
884
897
  "type": "doc"
885
898
  },
886
899
  {
887
- "source": "skills/claude-code/references/cicd-integration.md",
888
- "target": ".kiro/skills/claude-code/references/cicd-integration.md",
900
+ "source": "skills/kiro/references/best-practices.md",
901
+ "target": ".kiro/skills/kiro/references/best-practices.md",
889
902
  "type": "doc"
890
903
  },
891
904
  {
892
- "source": "skills/claude-code/references/configuration.md",
893
- "target": ".kiro/skills/claude-code/references/configuration.md",
905
+ "source": "skills/kiro/references/commands.md",
906
+ "target": ".kiro/skills/kiro/references/commands.md",
894
907
  "type": "doc"
895
908
  },
896
909
  {
897
- "source": "skills/claude-code/references/enterprise-features.md",
898
- "target": ".kiro/skills/claude-code/references/enterprise-features.md",
910
+ "source": "skills/kiro/references/configuration.md",
911
+ "target": ".kiro/skills/kiro/references/configuration.md",
899
912
  "type": "doc"
900
913
  },
901
914
  {
902
- "source": "skills/claude-code/references/getting-started.md",
903
- "target": ".kiro/skills/claude-code/references/getting-started.md",
915
+ "source": "skills/kiro/references/getting-started.md",
916
+ "target": ".kiro/skills/kiro/references/getting-started.md",
904
917
  "type": "doc"
905
918
  },
906
919
  {
907
- "source": "skills/claude-code/references/hooks-and-plugins.md",
908
- "target": ".kiro/skills/claude-code/references/hooks-and-plugins.md",
920
+ "source": "skills/kiro/references/hooks.md",
921
+ "target": ".kiro/skills/kiro/references/hooks.md",
909
922
  "type": "doc"
910
923
  },
911
924
  {
912
- "source": "skills/claude-code/references/ide-integration.md",
913
- "target": ".kiro/skills/claude-code/references/ide-integration.md",
925
+ "source": "skills/kiro/references/mcp-integration.md",
926
+ "target": ".kiro/skills/kiro/references/mcp-integration.md",
914
927
  "type": "doc"
915
928
  },
916
929
  {
917
- "source": "skills/claude-code/references/mcp-integration.md",
918
- "target": ".kiro/skills/claude-code/references/mcp-integration.md",
930
+ "source": "skills/kiro/references/skills.md",
931
+ "target": ".kiro/skills/kiro/references/skills.md",
919
932
  "type": "doc"
920
933
  },
921
934
  {
922
- "source": "skills/claude-code/references/slash-commands.md",
923
- "target": ".kiro/skills/claude-code/references/slash-commands.md",
935
+ "source": "skills/kiro/references/specs-workflow.md",
936
+ "target": ".kiro/skills/kiro/references/specs-workflow.md",
924
937
  "type": "doc"
925
938
  },
926
939
  {
927
- "source": "skills/claude-code/references/troubleshooting.md",
928
- "target": ".kiro/skills/claude-code/references/troubleshooting.md",
940
+ "source": "skills/kiro/references/steering-files.md",
941
+ "target": ".kiro/skills/kiro/references/steering-files.md",
929
942
  "type": "doc"
930
943
  },
931
944
  {
932
- "source": "skills/claude-code/skill.md",
933
- "target": ".kiro/skills/claude-code/skill.md",
945
+ "source": "skills/kiro/references/troubleshooting.md",
946
+ "target": ".kiro/skills/kiro/references/troubleshooting.md",
934
947
  "type": "doc"
935
948
  },
936
949
  {
@@ -0,0 +1,40 @@
1
+ {
2
+ "powers": [
3
+ {
4
+ "name": "Supabase",
5
+ "url": "https://kiro.dev/powers/supabase",
6
+ "description": "Backend-as-a-service with Postgres, auth, and real-time subscriptions",
7
+ "tier": "essential"
8
+ },
9
+ {
10
+ "name": "Neon",
11
+ "url": "https://kiro.dev/powers/neon",
12
+ "description": "Serverless Postgres with branching and autoscaling",
13
+ "tier": "recommended"
14
+ },
15
+ {
16
+ "name": "Postman",
17
+ "url": "https://kiro.dev/powers/postman",
18
+ "description": "API testing and collection management",
19
+ "tier": "recommended"
20
+ },
21
+ {
22
+ "name": "Context7",
23
+ "url": "https://kiro.dev/powers/context7",
24
+ "description": "Up-to-date documentation lookup for libraries and frameworks",
25
+ "tier": "recommended"
26
+ },
27
+ {
28
+ "name": "Stripe",
29
+ "url": "https://kiro.dev/powers/stripe",
30
+ "description": "Payment processing, subscriptions, and billing integration",
31
+ "tier": "optional"
32
+ },
33
+ {
34
+ "name": "Snyk",
35
+ "url": "https://kiro.dev/powers/snyk",
36
+ "description": "Security scanning and vulnerability detection for dependencies",
37
+ "tier": "optional"
38
+ }
39
+ ]
40
+ }
@@ -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