agentsys 5.2.1 → 5.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.cursor/commands/audit-project-agents.md +454 -0
  4. package/.cursor/commands/audit-project-github.md +141 -0
  5. package/.cursor/commands/audit-project.md +330 -0
  6. package/.cursor/commands/consult.md +417 -0
  7. package/.cursor/commands/debate.md +381 -0
  8. package/.cursor/commands/delivery-approval.md +334 -0
  9. package/.cursor/commands/deslop.md +142 -0
  10. package/.cursor/commands/drift-detect.md +259 -0
  11. package/.cursor/commands/enhance.md +172 -0
  12. package/.cursor/commands/learn.md +165 -0
  13. package/.cursor/commands/next-task.md +519 -0
  14. package/.cursor/commands/perf.md +464 -0
  15. package/.cursor/commands/repo-map.md +124 -0
  16. package/.cursor/commands/ship-ci-review-loop.md +468 -0
  17. package/.cursor/commands/ship-deployment.md +348 -0
  18. package/.cursor/commands/ship-error-handling.md +265 -0
  19. package/.cursor/commands/ship.md +517 -0
  20. package/.cursor/commands/sync-docs.md +171 -0
  21. package/.cursor/commands/web-ctl.md +101 -0
  22. package/.cursor/skills/consult/SKILL.md +425 -0
  23. package/.cursor/skills/debate/SKILL.md +316 -0
  24. package/.cursor/skills/deslop/SKILL.md +204 -0
  25. package/.cursor/skills/discover-tasks/SKILL.md +297 -0
  26. package/.cursor/skills/drift-analysis/SKILL.md +324 -0
  27. package/.cursor/skills/enhance-agent-prompts/SKILL.md +277 -0
  28. package/.cursor/skills/enhance-claude-memory/SKILL.md +387 -0
  29. package/.cursor/skills/enhance-cross-file/SKILL.md +110 -0
  30. package/.cursor/skills/enhance-docs/SKILL.md +298 -0
  31. package/.cursor/skills/enhance-hooks/SKILL.md +554 -0
  32. package/.cursor/skills/enhance-orchestrator/SKILL.md +255 -0
  33. package/.cursor/skills/enhance-plugins/SKILL.md +319 -0
  34. package/.cursor/skills/enhance-prompts/SKILL.md +340 -0
  35. package/.cursor/skills/enhance-skills/SKILL.md +436 -0
  36. package/.cursor/skills/learn/SKILL.md +349 -0
  37. package/.cursor/skills/orchestrate-review/SKILL.md +260 -0
  38. package/.cursor/skills/perf-analyzer/SKILL.md +37 -0
  39. package/.cursor/skills/perf-baseline-manager/SKILL.md +30 -0
  40. package/.cursor/skills/perf-benchmarker/SKILL.md +52 -0
  41. package/.cursor/skills/perf-code-paths/SKILL.md +32 -0
  42. package/.cursor/skills/perf-investigation-logger/SKILL.md +41 -0
  43. package/.cursor/skills/perf-profiler/SKILL.md +42 -0
  44. package/.cursor/skills/perf-theory-gatherer/SKILL.md +35 -0
  45. package/.cursor/skills/perf-theory-tester/SKILL.md +36 -0
  46. package/.cursor/skills/repo-mapping/SKILL.md +83 -0
  47. package/.cursor/skills/sync-docs/SKILL.md +351 -0
  48. package/.cursor/skills/validate-delivery/SKILL.md +186 -0
  49. package/.cursor/skills/web-auth/SKILL.md +177 -0
  50. package/.cursor/skills/web-browse/SKILL.md +516 -0
  51. package/.kiro/agents/agent-enhancer.json +12 -0
  52. package/.kiro/agents/ci-fixer.json +13 -0
  53. package/.kiro/agents/ci-monitor.json +12 -0
  54. package/.kiro/agents/claudemd-enhancer.json +12 -0
  55. package/.kiro/agents/consult-agent.json +13 -0
  56. package/.kiro/agents/cross-file-enhancer.json +12 -0
  57. package/.kiro/agents/debate-orchestrator.json +13 -0
  58. package/.kiro/agents/delivery-validator.json +12 -0
  59. package/.kiro/agents/deslop-agent.json +12 -0
  60. package/.kiro/agents/docs-enhancer.json +12 -0
  61. package/.kiro/agents/exploration-agent.json +12 -0
  62. package/.kiro/agents/hooks-enhancer.json +11 -0
  63. package/.kiro/agents/implementation-agent.json +13 -0
  64. package/.kiro/agents/learn-agent.json +12 -0
  65. package/.kiro/agents/map-validator.json +11 -0
  66. package/.kiro/agents/perf-analyzer.json +12 -0
  67. package/.kiro/agents/perf-code-paths.json +11 -0
  68. package/.kiro/agents/perf-investigation-logger.json +12 -0
  69. package/.kiro/agents/perf-orchestrator.json +13 -0
  70. package/.kiro/agents/perf-theory-gatherer.json +12 -0
  71. package/.kiro/agents/perf-theory-tester.json +13 -0
  72. package/.kiro/agents/plan-synthesizer.json +12 -0
  73. package/.kiro/agents/planning-agent.json +12 -0
  74. package/.kiro/agents/plugin-enhancer.json +12 -0
  75. package/.kiro/agents/prompt-enhancer.json +12 -0
  76. package/.kiro/agents/reviewer-perf-test.json +11 -0
  77. package/.kiro/agents/reviewer-quality-security.json +11 -0
  78. package/.kiro/agents/simple-fixer.json +13 -0
  79. package/.kiro/agents/skills-enhancer.json +11 -0
  80. package/.kiro/agents/sync-docs-agent.json +13 -0
  81. package/.kiro/agents/task-discoverer.json +12 -0
  82. package/.kiro/agents/test-coverage-checker.json +12 -0
  83. package/.kiro/agents/web-session.json +12 -0
  84. package/.kiro/agents/worktree-manager.json +13 -0
  85. package/.kiro/skills/consult/SKILL.md +425 -0
  86. package/.kiro/skills/debate/SKILL.md +316 -0
  87. package/.kiro/skills/deslop/SKILL.md +204 -0
  88. package/.kiro/skills/discover-tasks/SKILL.md +297 -0
  89. package/.kiro/skills/drift-analysis/SKILL.md +324 -0
  90. package/.kiro/skills/enhance-agent-prompts/SKILL.md +277 -0
  91. package/.kiro/skills/enhance-claude-memory/SKILL.md +387 -0
  92. package/.kiro/skills/enhance-cross-file/SKILL.md +110 -0
  93. package/.kiro/skills/enhance-docs/SKILL.md +298 -0
  94. package/.kiro/skills/enhance-hooks/SKILL.md +554 -0
  95. package/.kiro/skills/enhance-orchestrator/SKILL.md +255 -0
  96. package/.kiro/skills/enhance-plugins/SKILL.md +319 -0
  97. package/.kiro/skills/enhance-prompts/SKILL.md +340 -0
  98. package/.kiro/skills/enhance-skills/SKILL.md +436 -0
  99. package/.kiro/skills/learn/SKILL.md +349 -0
  100. package/.kiro/skills/orchestrate-review/SKILL.md +260 -0
  101. package/.kiro/skills/perf-analyzer/SKILL.md +37 -0
  102. package/.kiro/skills/perf-baseline-manager/SKILL.md +30 -0
  103. package/.kiro/skills/perf-benchmarker/SKILL.md +52 -0
  104. package/.kiro/skills/perf-code-paths/SKILL.md +32 -0
  105. package/.kiro/skills/perf-investigation-logger/SKILL.md +41 -0
  106. package/.kiro/skills/perf-profiler/SKILL.md +42 -0
  107. package/.kiro/skills/perf-theory-gatherer/SKILL.md +35 -0
  108. package/.kiro/skills/perf-theory-tester/SKILL.md +36 -0
  109. package/.kiro/skills/repo-mapping/SKILL.md +83 -0
  110. package/.kiro/skills/sync-docs/SKILL.md +351 -0
  111. package/.kiro/skills/validate-delivery/SKILL.md +186 -0
  112. package/.kiro/skills/web-auth/SKILL.md +177 -0
  113. package/.kiro/skills/web-browse/SKILL.md +516 -0
  114. package/.kiro/steering/audit-project-agents.md +459 -0
  115. package/.kiro/steering/audit-project-github.md +146 -0
  116. package/.kiro/steering/audit-project.md +330 -0
  117. package/.kiro/steering/consult.md +422 -0
  118. package/.kiro/steering/debate.md +386 -0
  119. package/.kiro/steering/delivery-approval.md +339 -0
  120. package/.kiro/steering/deslop.md +149 -0
  121. package/.kiro/steering/drift-detect.md +264 -0
  122. package/.kiro/steering/enhance.md +177 -0
  123. package/.kiro/steering/learn.md +166 -0
  124. package/.kiro/steering/next-task.md +481 -0
  125. package/.kiro/steering/perf.md +469 -0
  126. package/.kiro/steering/repo-map.md +126 -0
  127. package/.kiro/steering/ship-ci-review-loop.md +473 -0
  128. package/.kiro/steering/ship-deployment.md +353 -0
  129. package/.kiro/steering/ship-error-handling.md +270 -0
  130. package/.kiro/steering/ship.md +522 -0
  131. package/.kiro/steering/sync-docs.md +178 -0
  132. package/.kiro/steering/web-ctl.md +106 -0
  133. package/AGENTS.md +5 -3
  134. package/CHANGELOG.md +25 -1
  135. package/README.md +6 -5
  136. package/agent-knowledge/AGENTS.md +32 -2
  137. package/agent-knowledge/acp-with-codex-gemini-copilot-claude.md +504 -0
  138. package/agent-knowledge/kiro-supervised-autopilot.md +400 -0
  139. package/agent-knowledge/resources/acp-with-codex-gemini-copilot-claude-sources.json +408 -0
  140. package/agent-knowledge/resources/kiro-supervised-autopilot-sources.json +135 -0
  141. package/bin/cli.js +176 -9
  142. package/lib/adapter-transforms.js +224 -1
  143. package/lib/cross-platform/index.js +9 -3
  144. package/lib/discovery/index.js +22 -0
  145. package/lib/platform/state-dir.js +16 -2
  146. package/package.json +1 -1
  147. package/scripts/dev-install.js +137 -1
  148. package/scripts/gen-adapters.js +66 -4
  149. package/site/content.json +1 -1
@@ -194,6 +194,62 @@ function cleanAll() {
194
194
  }
195
195
  }
196
196
 
197
+ // Clean Kiro (project-scoped in CWD)
198
+ const cwd = process.cwd();
199
+ const kiroDir = path.join(cwd, '.kiro');
200
+ if (fs.existsSync(kiroDir)) {
201
+ const knownSteeringNames = new Set(discovery.getKiroSteeringMappings(SOURCE_DIR).map(([name]) => `${name}.md`));
202
+ const kiroSteeringDir = path.join(kiroDir, 'steering');
203
+ if (fs.existsSync(kiroSteeringDir)) {
204
+ let removedCount = 0;
205
+ for (const f of fs.readdirSync(kiroSteeringDir).filter(f => f.endsWith('.md'))) {
206
+ if (knownSteeringNames.has(f)) {
207
+ fs.unlinkSync(path.join(kiroSteeringDir, f));
208
+ removedCount++;
209
+ }
210
+ }
211
+ if (removedCount > 0) log(` Removed ${removedCount} Kiro steering files`);
212
+ }
213
+ const kiroAgentsDir = path.join(kiroDir, 'agents');
214
+ if (fs.existsSync(kiroAgentsDir)) {
215
+ const knownAgentFiles = new Set();
216
+ for (const plugin of PLUGINS) {
217
+ const srcAgentsDir = path.join(SOURCE_DIR, 'plugins', plugin, 'agents');
218
+ if (!fs.existsSync(srcAgentsDir)) continue;
219
+ for (const f of fs.readdirSync(srcAgentsDir).filter(f => f.endsWith('.md'))) {
220
+ knownAgentFiles.add(f.replace(/\.md$/, '.json'));
221
+ }
222
+ }
223
+ let removedCount = 0;
224
+ for (const f of fs.readdirSync(kiroAgentsDir).filter(f => f.endsWith('.json'))) {
225
+ if (knownAgentFiles.has(f)) {
226
+ fs.unlinkSync(path.join(kiroAgentsDir, f));
227
+ removedCount++;
228
+ }
229
+ }
230
+ if (removedCount > 0) log(` Removed ${removedCount} Kiro agent files`);
231
+ }
232
+ const kiroSkillsDir = path.join(kiroDir, 'skills');
233
+ if (fs.existsSync(kiroSkillsDir)) {
234
+ const knownSkillNames = new Set();
235
+ for (const plugin of PLUGINS) {
236
+ const srcSkillsDir = path.join(SOURCE_DIR, 'plugins', plugin, 'skills');
237
+ if (!fs.existsSync(srcSkillsDir)) continue;
238
+ for (const d of fs.readdirSync(srcSkillsDir, { withFileTypes: true })) {
239
+ if (d.isDirectory()) knownSkillNames.add(d.name);
240
+ }
241
+ }
242
+ let removedCount = 0;
243
+ for (const entry of fs.readdirSync(kiroSkillsDir, { withFileTypes: true })) {
244
+ if (entry.isDirectory() && knownSkillNames.has(entry.name)) {
245
+ fs.rmSync(path.join(kiroSkillsDir, entry.name), { recursive: true, force: true });
246
+ removedCount++;
247
+ }
248
+ }
249
+ if (removedCount > 0) log(` Removed ${removedCount} Kiro skill dirs`);
250
+ }
251
+ }
252
+
197
253
  // Clean ~/.agentsys
198
254
  if (fs.existsSync(AGENTSYS_DIR)) {
199
255
  fs.rmSync(AGENTSYS_DIR, { recursive: true, force: true });
@@ -417,6 +473,83 @@ function installCodex() {
417
473
  return true;
418
474
  }
419
475
 
476
+ function installKiro() {
477
+ log('Installing for Kiro...');
478
+
479
+ const cwd = process.cwd();
480
+ const skillsDir = path.join(cwd, '.kiro', 'skills');
481
+ const steeringDir = path.join(cwd, '.kiro', 'steering');
482
+ const agentsDir = path.join(cwd, '.kiro', 'agents');
483
+
484
+ fs.mkdirSync(skillsDir, { recursive: true });
485
+ fs.mkdirSync(steeringDir, { recursive: true });
486
+ fs.mkdirSync(agentsDir, { recursive: true });
487
+
488
+ // Copy to ~/.agentsys first (Kiro needs local files for transforms)
489
+ copyToAgentSys();
490
+
491
+ // Install skills
492
+ let skillCount = 0;
493
+ for (const plugin of PLUGINS) {
494
+ const srcSkillsDir = path.join(SOURCE_DIR, 'plugins', plugin, 'skills');
495
+ if (!fs.existsSync(srcSkillsDir)) continue;
496
+ const entries = fs.readdirSync(srcSkillsDir, { withFileTypes: true }).filter(d => d.isDirectory());
497
+ for (const entry of entries) {
498
+ if (!/^[a-zA-Z0-9_-]+$/.test(entry.name)) continue;
499
+ const srcPath = path.join(srcSkillsDir, entry.name, 'SKILL.md');
500
+ if (!fs.existsSync(srcPath)) continue;
501
+ const destDir = path.join(skillsDir, entry.name);
502
+ fs.mkdirSync(destDir, { recursive: true });
503
+ let content = fs.readFileSync(srcPath, 'utf8');
504
+ content = transforms.transformSkillForKiro(content, {
505
+ pluginInstallPath: path.join(AGENTSYS_DIR, 'plugins', plugin)
506
+ });
507
+ fs.writeFileSync(path.join(destDir, 'SKILL.md'), content);
508
+ skillCount++;
509
+ }
510
+ }
511
+ log(` [OK] ${skillCount} skills`);
512
+
513
+ // Install commands as steering files
514
+ const steeringMappings = discovery.getKiroSteeringMappings(SOURCE_DIR);
515
+ let steeringCount = 0;
516
+ for (const [steeringName, plugin, sourceFile, description] of steeringMappings) {
517
+ const srcPath = path.join(SOURCE_DIR, 'plugins', plugin, 'commands', sourceFile);
518
+ if (!fs.existsSync(srcPath)) continue;
519
+ let content = fs.readFileSync(srcPath, 'utf8');
520
+ content = transforms.transformCommandForKiro(content, {
521
+ pluginInstallPath: path.join(AGENTSYS_DIR, 'plugins', plugin),
522
+ name: steeringName,
523
+ description
524
+ });
525
+ fs.writeFileSync(path.join(steeringDir, `${steeringName}.md`), content);
526
+ steeringCount++;
527
+ }
528
+ log(` [OK] ${steeringCount} steering files`);
529
+
530
+ // Install agents as JSON
531
+ let agentCount = 0;
532
+ for (const plugin of PLUGINS) {
533
+ const srcAgentsDir = path.join(SOURCE_DIR, 'plugins', plugin, 'agents');
534
+ if (!fs.existsSync(srcAgentsDir)) continue;
535
+ const agentFiles = fs.readdirSync(srcAgentsDir).filter(f => f.endsWith('.md'));
536
+ for (const agentFile of agentFiles) {
537
+ const agentName = agentFile.replace(/\.md$/, '');
538
+ const srcPath = path.join(srcAgentsDir, agentFile);
539
+ let content = fs.readFileSync(srcPath, 'utf8');
540
+ const jsonContent = transforms.transformAgentForKiro(content, {
541
+ pluginInstallPath: path.join(AGENTSYS_DIR, 'plugins', plugin)
542
+ });
543
+ fs.writeFileSync(path.join(agentsDir, `${agentName}.json`), jsonContent);
544
+ agentCount++;
545
+ }
546
+ }
547
+ log(` [OK] ${agentCount} agents`);
548
+
549
+ log('Kiro installation complete.');
550
+ return true;
551
+ }
552
+
420
553
  let agentSysCopied = false;
421
554
  function copyToAgentSys() {
422
555
  if (agentSysCopied) return;
@@ -456,7 +589,7 @@ function main() {
456
589
  }
457
590
 
458
591
  // Determine which tools to install
459
- const validTools = ['claude', 'opencode', 'codex'];
592
+ const validTools = ['claude', 'opencode', 'codex', 'kiro'];
460
593
  let tools = args.filter(a => validTools.includes(a.toLowerCase())).map(a => a.toLowerCase());
461
594
 
462
595
  if (tools.length === 0) {
@@ -479,6 +612,9 @@ function main() {
479
612
  case 'codex':
480
613
  results.codex = installCodex();
481
614
  break;
615
+ case 'kiro':
616
+ results.kiro = installKiro();
617
+ break;
482
618
  }
483
619
  console.log();
484
620
  }
@@ -120,6 +120,68 @@ function computeAdapters() {
120
120
  process.exit(1);
121
121
  }
122
122
 
123
+ // --- Kiro adapters ---
124
+ const KIRO_PLUGIN_ROOT_PLACEHOLDER = '{{PLUGIN_INSTALL_PATH}}';
125
+
126
+ // Kiro steering files (from commands)
127
+ const kiroSteeringMappings = discovery.getKiroSteeringMappings(ROOT_DIR);
128
+ for (const [steeringName, plugin, sourceFile, description] of kiroSteeringMappings) {
129
+ const srcPath = path.join(ROOT_DIR, 'plugins', plugin, 'commands', sourceFile);
130
+ if (!fs.existsSync(srcPath)) continue;
131
+
132
+ let content = fs.readFileSync(srcPath, 'utf8');
133
+ content = transforms.transformCommandForKiro(content, {
134
+ pluginInstallPath: KIRO_PLUGIN_ROOT_PLACEHOLDER,
135
+ name: steeringName,
136
+ description
137
+ });
138
+
139
+ const relPath = normalizePath(path.join('adapters', 'kiro', 'steering', `${steeringName}.md`));
140
+ files.set(relPath, content);
141
+ }
142
+
143
+ // Kiro agents (JSON)
144
+ for (const pluginName of plugins) {
145
+ const srcAgentsDir = path.join(ROOT_DIR, 'plugins', pluginName, 'agents');
146
+ if (!fs.existsSync(srcAgentsDir)) continue;
147
+
148
+ const agentFiles = fs.readdirSync(srcAgentsDir).filter(f => f.endsWith('.md'));
149
+ for (const agentFile of agentFiles) {
150
+ const srcPath = path.join(srcAgentsDir, agentFile);
151
+ let content = fs.readFileSync(srcPath, 'utf8');
152
+
153
+ const jsonContent = transforms.transformAgentForKiro(content, {
154
+ pluginInstallPath: KIRO_PLUGIN_ROOT_PLACEHOLDER
155
+ });
156
+
157
+ const agentName = agentFile.replace(/\.md$/, '');
158
+ const relPath = normalizePath(path.join('adapters', 'kiro', 'agents', `${agentName}.json`));
159
+ files.set(relPath, jsonContent);
160
+ }
161
+ }
162
+
163
+ // Kiro skills
164
+ for (const pluginName of plugins) {
165
+ const srcSkillsDir = path.join(ROOT_DIR, 'plugins', pluginName, 'skills');
166
+ if (!fs.existsSync(srcSkillsDir)) continue;
167
+
168
+ const skillDirs = fs.readdirSync(srcSkillsDir, { withFileTypes: true })
169
+ .filter(d => d.isDirectory());
170
+ for (const skillDir of skillDirs) {
171
+ const skillName = skillDir.name;
172
+ const srcSkillPath = path.join(srcSkillsDir, skillName, 'SKILL.md');
173
+ if (!fs.existsSync(srcSkillPath)) continue;
174
+
175
+ let content = fs.readFileSync(srcSkillPath, 'utf8');
176
+ content = transforms.transformSkillForKiro(content, {
177
+ pluginInstallPath: KIRO_PLUGIN_ROOT_PLACEHOLDER
178
+ });
179
+
180
+ const relPath = normalizePath(path.join('adapters', 'kiro', 'skills', skillName, 'SKILL.md'));
181
+ files.set(relPath, content);
182
+ }
183
+ }
184
+
123
185
  const staleFiles = [];
124
186
  for (const [relPath, newContent] of files) {
125
187
  const absPath = path.resolve(ROOT_DIR, relPath);
@@ -162,7 +224,7 @@ function findOrphanedAdapters(generatedFiles) {
162
224
 
163
225
  if (entry.isDirectory()) {
164
226
  scanDirectory(absPath, relPath);
165
- } else if (entry.isFile() && entry.name.endsWith('.md') && !EXCLUDED_FILES.has(entry.name)) {
227
+ } else if (entry.isFile() && (entry.name.endsWith('.md') || entry.name.endsWith('.json')) && !EXCLUDED_FILES.has(entry.name)) {
166
228
  if (!generatedFiles.has(relPath)) {
167
229
  orphans.push(relPath);
168
230
  }
@@ -170,8 +232,8 @@ function findOrphanedAdapters(generatedFiles) {
170
232
  }
171
233
  }
172
234
 
173
- // Scan opencode/ and codex/ subdirectories
174
- for (const subdir of ['opencode', 'codex']) {
235
+ // Scan opencode/, codex/, and kiro/ subdirectories
236
+ for (const subdir of ['opencode', 'codex', 'kiro']) {
175
237
  const dir = path.join(ADAPTERS_DIR, subdir);
176
238
  const relativeBase = normalizePath(path.join('adapters', subdir));
177
239
  scanDirectory(dir, relativeBase);
@@ -213,7 +275,7 @@ function main(args) {
213
275
  }
214
276
 
215
277
  if (!dryRun) {
216
- console.log(`[OK] Generating adapters: ${files.size} files across OpenCode and Codex`);
278
+ console.log(`[OK] Generating adapters: ${files.size} files across OpenCode, Codex, and Kiro`);
217
279
  }
218
280
 
219
281
  const changedFiles = [];
package/site/content.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "url": "https://agent-sh.github.io/agentsys",
6
6
  "repo": "https://github.com/agent-sh/agentsys",
7
7
  "npm": "https://www.npmjs.com/package/agentsys",
8
- "version": "5.2.1",
8
+ "version": "5.3.1",
9
9
  "author": "Avi Fenesh",
10
10
  "author_url": "https://github.com/avifenesh"
11
11
  },