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,194 @@
1
+ ---
2
+ name: kiro
3
+ description: >-
4
+ Use when users ask about Kiro IDE features, setup, configuration,
5
+ troubleshooting, specs, steering files, MCP servers, hooks, skills,
6
+ commands, or workspace management. Activate for questions like 'How
7
+ do I use Kiro?', 'What are specs?', 'How to set up MCP?', 'Create a
8
+ steering file', 'Fix Kiro issues', or 'Configure my workspace'.
9
+ ---
10
+
11
+ # Kiro IDE Expert
12
+
13
+ Kiro is an AI-powered development environment that helps developers focus on what matters: designing systems, exploring solutions, and making decisions. It combines autonomous planning, execution, and validation with extensibility through specs, steering files, skills, commands, hooks, and MCP servers.
14
+
15
+ ## When to Use This Skill
16
+
17
+ Use when users need help with:
18
+ - Understanding Kiro features and capabilities
19
+ - Installation, setup, and workspace configuration
20
+ - Creating and managing specs (requirements, design, tasks)
21
+ - Writing steering files for project conventions
22
+ - Creating or managing skills
23
+ - Configuring MCP servers for external tool integration
24
+ - Setting up hooks for automation
25
+ - Using commands for development workflows
26
+ - Troubleshooting Kiro issues
27
+ - Multi-workspace and team collaboration
28
+ - Advanced features (autonomy modes, context management)
29
+
30
+ **Activation examples:**
31
+ - "How do I use Kiro?"
32
+ - "What are specs and how do I create one?"
33
+ - "How to set up MCP servers?"
34
+ - "Create a new steering file for X"
35
+ - "Fix Kiro configuration issues"
36
+ - "How do hooks work in Kiro?"
37
+
38
+ ## Core Architecture
39
+
40
+ **Specs**: Structured feature development workflow (requirements -> design -> tasks) that guides implementation systematically
41
+
42
+ **Steering Files**: Project-level instructions in `.kiro/steering/` that provide conventions, standards, and context to the AI agent
43
+
44
+ **Skills**: Modular capabilities with instructions and references that Kiro activates automatically based on context
45
+
46
+ **Commands**: User-defined operations in `.kiro/commands/` that expand to prompts for common workflows
47
+
48
+ **Hooks**: Automated actions triggered by IDE events (file changes, tool use, task execution, prompt submission)
49
+
50
+ **MCP Servers**: Model Context Protocol integrations connecting external tools and services via `.kiro/settings/mcp.json`
51
+
52
+ ## Quick Reference
53
+
54
+ Load these references when needed for detailed guidance:
55
+
56
+ ### Getting Started
57
+ - **Installation & Setup**: `references/getting-started.md`
58
+ - Prerequisites, installation, workspace setup, first run
59
+
60
+ ### Spec-Driven Development
61
+ - **Specs Workflow**: `references/specs-workflow.md`
62
+ - Requirements, design, tasks, bugfix specs, property-based testing
63
+
64
+ ### Steering & Configuration
65
+ - **Steering Files**: `references/steering-files.md`
66
+ - Always-included, conditional (fileMatch), manual inclusion, front-matter format
67
+
68
+ - **Configuration**: `references/configuration.md`
69
+ - Settings hierarchy, MCP config, workspace vs user settings
70
+
71
+ ### Skills & Commands
72
+ - **Skills**: `references/skills.md`
73
+ - Creating skills, skill.md format, references directory, activation patterns
74
+
75
+ - **Commands**: `references/commands.md`
76
+ - Command file format, front-matter, argument hints, workflow patterns
77
+
78
+ ### Integration & Extension
79
+ - **MCP Integration**: `references/mcp-integration.md`
80
+ - mcp.json configuration, common servers, auto-approve, troubleshooting
81
+
82
+ - **Hooks**: `references/hooks.md`
83
+ - Event types (fileEdited, preToolUse, postToolUse, promptSubmit, etc.)
84
+ - Actions (askAgent, runCommand), hook schema, examples
85
+
86
+ ### Advanced Usage
87
+ - **Autonomy Modes**: `references/autonomy-modes.md`
88
+ - Autopilot vs Supervised mode, when to use each
89
+
90
+ - **Troubleshooting**: `references/troubleshooting.md`
91
+ - Common issues, MCP problems, performance, workspace diagnostics
92
+
93
+ - **Best Practices**: `references/best-practices.md`
94
+ - Project organization, steering conventions, skill design, team workflows
95
+
96
+ ## Common Workflows
97
+
98
+ ### Spec-Driven Feature Development
99
+ ```
100
+ 1. Create a spec: Kiro guides you through requirements -> design -> tasks
101
+ 2. Execute tasks: Kiro implements each task from the spec sequentially
102
+ 3. Validate: Property-based tests verify correctness properties
103
+ ```
104
+
105
+ ### Steering File Setup
106
+ ```
107
+ # .kiro/steering/my-conventions.md
108
+ ---
109
+ inclusion: always
110
+ description: Project coding conventions
111
+ ---
112
+
113
+ Your conventions here...
114
+ ```
115
+
116
+ ### Hook Configuration
117
+ ```json
118
+ {
119
+ "name": "Lint on Save",
120
+ "version": "1.0.0",
121
+ "when": {
122
+ "type": "fileEdited",
123
+ "patterns": ["*.ts", "*.tsx"]
124
+ },
125
+ "then": {
126
+ "type": "runCommand",
127
+ "command": "npm run lint"
128
+ }
129
+ }
130
+ ```
131
+
132
+ ### MCP Server Setup
133
+ ```json
134
+ {
135
+ "mcpServers": {
136
+ "my-server": {
137
+ "command": "uvx",
138
+ "args": ["my-mcp-server@latest"],
139
+ "env": {},
140
+ "disabled": false,
141
+ "autoApprove": []
142
+ }
143
+ }
144
+ }
145
+ ```
146
+
147
+ ### Skill Creation
148
+ ```
149
+ .kiro/skills/my-skill/
150
+ skill.md # Main skill file with front-matter
151
+ references/ # Supporting reference documents
152
+ guide.md
153
+ ```
154
+
155
+ ## Instructions for Kiro
156
+
157
+ When responding to Kiro-related questions:
158
+
159
+ 1. **Identify the topic** from the user's question
160
+ 2. **Load relevant references** from the Quick Reference section above
161
+ 3. **Provide specific guidance** using information from loaded references
162
+ 4. **Include examples** when helpful
163
+
164
+ **Loading references:**
165
+ - Read reference files only when needed for the specific question
166
+ - Multiple references can be loaded for complex queries
167
+
168
+ **For setup questions:** Load `references/getting-started.md`
169
+
170
+ **For spec questions:** Load `references/specs-workflow.md`
171
+
172
+ **For steering questions:** Load `references/steering-files.md`
173
+
174
+ **For skill creation:** Load `references/skills.md`
175
+
176
+ **For command questions:** Load `references/commands.md`
177
+
178
+ **For MCP questions:** Load `references/mcp-integration.md`
179
+
180
+ **For hook questions:** Load `references/hooks.md`
181
+
182
+ **For configuration:** Load `references/configuration.md`
183
+
184
+ **For autonomy modes:** Load `references/autonomy-modes.md`
185
+
186
+ **For troubleshooting:** Load `references/troubleshooting.md`
187
+
188
+ **For best practices:** Load `references/best-practices.md`
189
+
190
+ **Documentation links:**
191
+ - Kiro docs: https://kiro.dev/docs/
192
+ - GitHub: https://github.com/aws/kiro
193
+
194
+ Provide accurate, actionable guidance based on the loaded references and official documentation.
@@ -0,0 +1,69 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Checks if API client types are in sync with route handlers.
4
+ * Warns if route files changed more recently than client type definitions.
5
+ */
6
+
7
+ const fs = require('fs');
8
+ const path = require('path');
9
+
10
+ const ROUTE_DIRS = ['src/app/api', 'src/routes'];
11
+ const CLIENT_DIRS = ['src/lib/api', 'src/client', 'src/api', 'src/services'];
12
+
13
+ const cwd = process.cwd();
14
+
15
+ function getLatestMtime(dir) {
16
+ let latest = 0;
17
+ if (!fs.existsSync(dir)) return 0;
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
+ const sub = getLatestMtime(full);
24
+ if (sub > latest) latest = sub;
25
+ } else if (/\.(ts|js)$/.test(entry.name)) {
26
+ const stat = fs.statSync(full);
27
+ if (stat.mtimeMs > latest) latest = stat.mtimeMs;
28
+ }
29
+ }
30
+ } catch (e) { /* skip */ }
31
+ return latest;
32
+ }
33
+
34
+ let routeMtime = 0;
35
+ for (const dir of ROUTE_DIRS) {
36
+ const t = getLatestMtime(path.resolve(cwd, dir));
37
+ if (t > routeMtime) routeMtime = t;
38
+ }
39
+
40
+ if (routeMtime === 0) {
41
+ process.exit(0);
42
+ }
43
+
44
+ let clientMtime = 0;
45
+ let clientDir = null;
46
+ for (const dir of CLIENT_DIRS) {
47
+ const full = path.resolve(cwd, dir);
48
+ if (fs.existsSync(full)) {
49
+ clientDir = dir;
50
+ clientMtime = getLatestMtime(full);
51
+ break;
52
+ }
53
+ }
54
+
55
+ if (!clientDir) {
56
+ process.exit(0);
57
+ }
58
+
59
+ if (routeMtime > clientMtime) {
60
+ const diff = Math.round((routeMtime - clientMtime) / 1000 / 60);
61
+ process.stdout.write(
62
+ `[api-client-gen] API routes changed ${diff}min after client types.\n` +
63
+ ` Route handlers may be out of sync with ${clientDir}/.\n` +
64
+ ' Consider regenerating API client types.\n'
65
+ );
66
+ process.exit(1);
67
+ }
68
+
69
+ process.exit(0);
@@ -0,0 +1,73 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Pre-deployment checklist: checks for .env.example completeness,
4
+ * build success indicators, and no TODO/FIXME in production code.
5
+ */
6
+
7
+ const fs = require('fs');
8
+ const path = require('path');
9
+
10
+ const cwd = process.cwd();
11
+ const issues = [];
12
+
13
+ // Check .env.example exists
14
+ const envExample = path.resolve(cwd, '.env.example');
15
+ const envLocal = path.resolve(cwd, '.env.local');
16
+ if (!fs.existsSync(envExample)) {
17
+ issues.push('Missing .env.example file');
18
+ } else if (fs.existsSync(envLocal)) {
19
+ // Check all keys in .env.local are documented in .env.example
20
+ const exampleKeys = fs.readFileSync(envExample, 'utf8')
21
+ .split('\n')
22
+ .filter((l) => l.match(/^[A-Z_]+=/) )
23
+ .map((l) => l.split('=')[0]);
24
+ const localKeys = fs.readFileSync(envLocal, 'utf8')
25
+ .split('\n')
26
+ .filter((l) => l.match(/^[A-Z_]+=/))
27
+ .map((l) => l.split('=')[0]);
28
+ const undocumented = localKeys.filter((k) => !exampleKeys.includes(k));
29
+ if (undocumented.length > 0) {
30
+ issues.push(`${undocumented.length} env var(s) in .env.local not in .env.example`);
31
+ }
32
+ }
33
+
34
+ // Check for TODO/FIXME in src/
35
+ function scanTodos(dir, depth) {
36
+ let count = 0;
37
+ if (depth > 5 || !fs.existsSync(dir)) return 0;
38
+ try {
39
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
40
+ for (const entry of entries) {
41
+ const full = path.join(dir, entry.name);
42
+ if (entry.isDirectory() && entry.name !== 'node_modules' && entry.name !== '.next') {
43
+ count += scanTodos(full, depth + 1);
44
+ } else if (entry.isFile() && /\.(ts|tsx|js|jsx)$/.test(entry.name)) {
45
+ const content = fs.readFileSync(full, 'utf8');
46
+ const matches = content.match(/\b(TODO|FIXME)\b/g);
47
+ if (matches) count += matches.length;
48
+ }
49
+ }
50
+ } catch (e) { /* skip */ }
51
+ return count;
52
+ }
53
+
54
+ const todoCount = scanTodos(path.resolve(cwd, 'src'), 0);
55
+ if (todoCount > 0) {
56
+ issues.push(`${todoCount} TODO/FIXME comment(s) found in src/`);
57
+ }
58
+
59
+ // Check build output exists
60
+ const buildDirs = ['.next', 'dist', 'build'];
61
+ const hasBuild = buildDirs.some((d) => fs.existsSync(path.resolve(cwd, d)));
62
+ if (!hasBuild) {
63
+ issues.push('No build output found. Run build before deploying.');
64
+ }
65
+
66
+ if (issues.length > 0) {
67
+ process.stdout.write('[deployment-readiness] Pre-deployment issues:\n');
68
+ issues.forEach((i) => process.stdout.write(` - ${i}\n`));
69
+ process.exit(1);
70
+ }
71
+
72
+ process.stdout.write('[deployment-readiness] All checks passed.\n');
73
+ process.exit(0);
@@ -0,0 +1,69 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Verifies shared types in src/types/ are imported by both client and server code.
4
+ * Checks for orphan type definitions not used anywhere.
5
+ */
6
+
7
+ const fs = require('fs');
8
+ const path = require('path');
9
+
10
+ const TYPES_DIR = path.resolve(process.cwd(), 'src/types');
11
+ const SRC_DIR = path.resolve(process.cwd(), 'src');
12
+
13
+ if (!fs.existsSync(TYPES_DIR)) {
14
+ process.exit(0);
15
+ }
16
+
17
+ function getTypeFiles(dir) {
18
+ const results = [];
19
+ try {
20
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
21
+ for (const entry of entries) {
22
+ if (entry.isFile() && /\.(ts|tsx)$/.test(entry.name) && entry.name !== 'index.ts') {
23
+ results.push(entry.name);
24
+ }
25
+ }
26
+ } catch (e) { /* skip */ }
27
+ return results;
28
+ }
29
+
30
+ function searchImports(dir, typeFile, exclude) {
31
+ let found = false;
32
+ if (!fs.existsSync(dir)) return false;
33
+ try {
34
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
35
+ for (const entry of entries) {
36
+ if (found) break;
37
+ const full = path.join(dir, entry.name);
38
+ if (entry.isDirectory() && entry.name !== 'node_modules' && full !== exclude) {
39
+ found = searchImports(full, typeFile, exclude);
40
+ } else if (entry.isFile() && /\.(ts|tsx|js|jsx)$/.test(entry.name)) {
41
+ const content = fs.readFileSync(full, 'utf8');
42
+ const baseName = path.basename(typeFile, path.extname(typeFile));
43
+ if (content.includes(`/types/${baseName}`) || content.includes(`/types'`) || content.includes(`/types"`)) {
44
+ found = true;
45
+ }
46
+ }
47
+ }
48
+ } catch (e) { /* skip */ }
49
+ return found;
50
+ }
51
+
52
+ const typeFiles = getTypeFiles(TYPES_DIR);
53
+ const orphans = [];
54
+
55
+ for (const tf of typeFiles) {
56
+ const baseName = path.basename(tf, path.extname(tf));
57
+ const isUsed = searchImports(SRC_DIR, tf, TYPES_DIR);
58
+ if (!isUsed) {
59
+ orphans.push(tf);
60
+ }
61
+ }
62
+
63
+ if (orphans.length > 0) {
64
+ process.stdout.write(`[type-sync-check] ${orphans.length} type file(s) not imported anywhere:\n`);
65
+ orphans.forEach((o) => process.stdout.write(` - src/types/${o}\n`));
66
+ process.exit(1);
67
+ }
68
+
69
+ process.exit(0);
@@ -563,6 +563,29 @@
563
563
  "type": "hook",
564
564
  "executable": true
565
565
  },
566
+ {
567
+ "source": "hooks/type-sync-check.js",
568
+ "target": ".kiro/hooks/type-sync-check.js",
569
+ "type": "hook",
570
+ "executable": true
571
+ },
572
+ {
573
+ "source": "hooks/api-client-gen.js",
574
+ "target": ".kiro/hooks/api-client-gen.js",
575
+ "type": "hook",
576
+ "executable": true
577
+ },
578
+ {
579
+ "source": "hooks/deployment-readiness.js",
580
+ "target": ".kiro/hooks/deployment-readiness.js",
581
+ "type": "hook",
582
+ "executable": true
583
+ },
584
+ {
585
+ "source": "powers.json",
586
+ "target": ".kiro/powers.json",
587
+ "type": "powers"
588
+ },
566
589
  {
567
590
  "source": "metadata.json",
568
591
  "target": ".kiro/metadata.json",
@@ -939,73 +962,63 @@
939
962
  "type": "other"
940
963
  },
941
964
  {
942
- "source": "skills/claude-code/references/advanced-features.md",
943
- "target": ".kiro/skills/claude-code/references/advanced-features.md",
944
- "type": "doc"
945
- },
946
- {
947
- "source": "skills/claude-code/references/agent-skills.md",
948
- "target": ".kiro/skills/claude-code/references/agent-skills.md",
949
- "type": "doc"
950
- },
951
- {
952
- "source": "skills/claude-code/references/api-reference.md",
953
- "target": ".kiro/skills/claude-code/references/api-reference.md",
954
- "type": "doc"
965
+ "source": "skills/kiro/skill.md",
966
+ "target": ".kiro/skills/kiro/skill.md",
967
+ "type": "skill"
955
968
  },
956
969
  {
957
- "source": "skills/claude-code/references/best-practices.md",
958
- "target": ".kiro/skills/claude-code/references/best-practices.md",
970
+ "source": "skills/kiro/references/autonomy-modes.md",
971
+ "target": ".kiro/skills/kiro/references/autonomy-modes.md",
959
972
  "type": "doc"
960
973
  },
961
974
  {
962
- "source": "skills/claude-code/references/cicd-integration.md",
963
- "target": ".kiro/skills/claude-code/references/cicd-integration.md",
975
+ "source": "skills/kiro/references/best-practices.md",
976
+ "target": ".kiro/skills/kiro/references/best-practices.md",
964
977
  "type": "doc"
965
978
  },
966
979
  {
967
- "source": "skills/claude-code/references/configuration.md",
968
- "target": ".kiro/skills/claude-code/references/configuration.md",
980
+ "source": "skills/kiro/references/commands.md",
981
+ "target": ".kiro/skills/kiro/references/commands.md",
969
982
  "type": "doc"
970
983
  },
971
984
  {
972
- "source": "skills/claude-code/references/enterprise-features.md",
973
- "target": ".kiro/skills/claude-code/references/enterprise-features.md",
985
+ "source": "skills/kiro/references/configuration.md",
986
+ "target": ".kiro/skills/kiro/references/configuration.md",
974
987
  "type": "doc"
975
988
  },
976
989
  {
977
- "source": "skills/claude-code/references/getting-started.md",
978
- "target": ".kiro/skills/claude-code/references/getting-started.md",
990
+ "source": "skills/kiro/references/getting-started.md",
991
+ "target": ".kiro/skills/kiro/references/getting-started.md",
979
992
  "type": "doc"
980
993
  },
981
994
  {
982
- "source": "skills/claude-code/references/hooks-and-plugins.md",
983
- "target": ".kiro/skills/claude-code/references/hooks-and-plugins.md",
995
+ "source": "skills/kiro/references/hooks.md",
996
+ "target": ".kiro/skills/kiro/references/hooks.md",
984
997
  "type": "doc"
985
998
  },
986
999
  {
987
- "source": "skills/claude-code/references/ide-integration.md",
988
- "target": ".kiro/skills/claude-code/references/ide-integration.md",
1000
+ "source": "skills/kiro/references/mcp-integration.md",
1001
+ "target": ".kiro/skills/kiro/references/mcp-integration.md",
989
1002
  "type": "doc"
990
1003
  },
991
1004
  {
992
- "source": "skills/claude-code/references/mcp-integration.md",
993
- "target": ".kiro/skills/claude-code/references/mcp-integration.md",
1005
+ "source": "skills/kiro/references/skills.md",
1006
+ "target": ".kiro/skills/kiro/references/skills.md",
994
1007
  "type": "doc"
995
1008
  },
996
1009
  {
997
- "source": "skills/claude-code/references/slash-commands.md",
998
- "target": ".kiro/skills/claude-code/references/slash-commands.md",
1010
+ "source": "skills/kiro/references/specs-workflow.md",
1011
+ "target": ".kiro/skills/kiro/references/specs-workflow.md",
999
1012
  "type": "doc"
1000
1013
  },
1001
1014
  {
1002
- "source": "skills/claude-code/references/troubleshooting.md",
1003
- "target": ".kiro/skills/claude-code/references/troubleshooting.md",
1015
+ "source": "skills/kiro/references/steering-files.md",
1016
+ "target": ".kiro/skills/kiro/references/steering-files.md",
1004
1017
  "type": "doc"
1005
1018
  },
1006
1019
  {
1007
- "source": "skills/claude-code/skill.md",
1008
- "target": ".kiro/skills/claude-code/skill.md",
1020
+ "source": "skills/kiro/references/troubleshooting.md",
1021
+ "target": ".kiro/skills/kiro/references/troubleshooting.md",
1009
1022
  "type": "doc"
1010
1023
  },
1011
1024
  {
@@ -0,0 +1,46 @@
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": "Figma",
11
+ "url": "https://kiro.dev/powers/figma",
12
+ "description": "Design-to-code integration with Figma files",
13
+ "tier": "recommended"
14
+ },
15
+ {
16
+ "name": "Netlify",
17
+ "url": "https://kiro.dev/powers/netlify",
18
+ "description": "Deploy React, Next.js, and modern web apps to global CDN",
19
+ "tier": "recommended"
20
+ },
21
+ {
22
+ "name": "Stripe",
23
+ "url": "https://kiro.dev/powers/stripe",
24
+ "description": "Payment processing, subscriptions, and billing integration",
25
+ "tier": "recommended"
26
+ },
27
+ {
28
+ "name": "Context7",
29
+ "url": "https://kiro.dev/powers/context7",
30
+ "description": "Up-to-date documentation lookup for libraries and frameworks",
31
+ "tier": "recommended"
32
+ },
33
+ {
34
+ "name": "Firebase",
35
+ "url": "https://kiro.dev/powers/firebase",
36
+ "description": "Full-stack application development with Google Cloud services",
37
+ "tier": "optional"
38
+ },
39
+ {
40
+ "name": "LaunchDarkly",
41
+ "url": "https://kiro.dev/powers/launch-darkly",
42
+ "description": "Feature flag management and progressive delivery",
43
+ "tier": "optional"
44
+ }
45
+ ]
46
+ }
@@ -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