agentinit 1.7.0 → 1.8.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 (152) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +127 -104
  3. package/dist/agents/Agent.d.ts +56 -0
  4. package/dist/agents/Agent.d.ts.map +1 -1
  5. package/dist/agents/Agent.js +133 -22
  6. package/dist/agents/Agent.js.map +1 -1
  7. package/dist/agents/AiderAgent.d.ts +9 -0
  8. package/dist/agents/AiderAgent.d.ts.map +1 -0
  9. package/dist/agents/AiderAgent.js +138 -0
  10. package/dist/agents/AiderAgent.js.map +1 -0
  11. package/dist/agents/ClaudeAgent.d.ts +4 -0
  12. package/dist/agents/ClaudeAgent.d.ts.map +1 -1
  13. package/dist/agents/ClaudeAgent.js +37 -18
  14. package/dist/agents/ClaudeAgent.js.map +1 -1
  15. package/dist/agents/ClaudeDesktopAgent.d.ts +5 -0
  16. package/dist/agents/ClaudeDesktopAgent.d.ts.map +1 -1
  17. package/dist/agents/ClaudeDesktopAgent.js +36 -2
  18. package/dist/agents/ClaudeDesktopAgent.js.map +1 -1
  19. package/dist/agents/ClineAgent.d.ts +8 -0
  20. package/dist/agents/ClineAgent.d.ts.map +1 -0
  21. package/dist/agents/ClineAgent.js +42 -0
  22. package/dist/agents/ClineAgent.js.map +1 -0
  23. package/dist/agents/CodexCliAgent.d.ts +4 -0
  24. package/dist/agents/CodexCliAgent.d.ts.map +1 -1
  25. package/dist/agents/CodexCliAgent.js +42 -8
  26. package/dist/agents/CodexCliAgent.js.map +1 -1
  27. package/dist/agents/CopilotAgent.d.ts +9 -0
  28. package/dist/agents/CopilotAgent.d.ts.map +1 -0
  29. package/dist/agents/CopilotAgent.js +135 -0
  30. package/dist/agents/CopilotAgent.js.map +1 -0
  31. package/dist/agents/CursorAgent.d.ts +4 -4
  32. package/dist/agents/CursorAgent.d.ts.map +1 -1
  33. package/dist/agents/CursorAgent.js +36 -43
  34. package/dist/agents/CursorAgent.js.map +1 -1
  35. package/dist/agents/DroidAgent.d.ts +5 -0
  36. package/dist/agents/DroidAgent.d.ts.map +1 -1
  37. package/dist/agents/DroidAgent.js +42 -18
  38. package/dist/agents/DroidAgent.js.map +1 -1
  39. package/dist/agents/GeminiCliAgent.d.ts +4 -0
  40. package/dist/agents/GeminiCliAgent.d.ts.map +1 -1
  41. package/dist/agents/GeminiCliAgent.js +40 -8
  42. package/dist/agents/GeminiCliAgent.js.map +1 -1
  43. package/dist/agents/MarkdownRulesAgent.d.ts +13 -0
  44. package/dist/agents/MarkdownRulesAgent.d.ts.map +1 -0
  45. package/dist/agents/MarkdownRulesAgent.js +53 -0
  46. package/dist/agents/MarkdownRulesAgent.js.map +1 -0
  47. package/dist/agents/RooCodeAgent.d.ts +9 -0
  48. package/dist/agents/RooCodeAgent.d.ts.map +1 -0
  49. package/dist/agents/RooCodeAgent.js +135 -0
  50. package/dist/agents/RooCodeAgent.js.map +1 -0
  51. package/dist/agents/WindsurfAgent.d.ts +9 -0
  52. package/dist/agents/WindsurfAgent.d.ts.map +1 -0
  53. package/dist/agents/WindsurfAgent.js +127 -0
  54. package/dist/agents/WindsurfAgent.js.map +1 -0
  55. package/dist/agents/ZedAgent.d.ts +9 -0
  56. package/dist/agents/ZedAgent.d.ts.map +1 -0
  57. package/dist/agents/ZedAgent.js +130 -0
  58. package/dist/agents/ZedAgent.js.map +1 -0
  59. package/dist/cli.js +30724 -11949
  60. package/dist/cli.js.map +1 -1
  61. package/dist/commands/apply.d.ts +10 -0
  62. package/dist/commands/apply.d.ts.map +1 -1
  63. package/dist/commands/apply.js +152 -3
  64. package/dist/commands/apply.js.map +1 -1
  65. package/dist/commands/detect.d.ts.map +1 -1
  66. package/dist/commands/detect.js +25 -0
  67. package/dist/commands/detect.js.map +1 -1
  68. package/dist/commands/init.js +1 -1
  69. package/dist/commands/init.js.map +1 -1
  70. package/dist/commands/mcp.d.ts +2 -7
  71. package/dist/commands/mcp.d.ts.map +1 -1
  72. package/dist/commands/mcp.js +594 -105
  73. package/dist/commands/mcp.js.map +1 -1
  74. package/dist/commands/plugins.d.ts +3 -0
  75. package/dist/commands/plugins.d.ts.map +1 -0
  76. package/dist/commands/plugins.js +309 -0
  77. package/dist/commands/plugins.js.map +1 -0
  78. package/dist/commands/revert.d.ts +7 -0
  79. package/dist/commands/revert.d.ts.map +1 -0
  80. package/dist/commands/revert.js +48 -0
  81. package/dist/commands/revert.js.map +1 -0
  82. package/dist/commands/rules.d.ts +3 -0
  83. package/dist/commands/rules.d.ts.map +1 -0
  84. package/dist/commands/rules.js +354 -0
  85. package/dist/commands/rules.js.map +1 -0
  86. package/dist/commands/skills.d.ts +3 -0
  87. package/dist/commands/skills.d.ts.map +1 -0
  88. package/dist/commands/skills.js +190 -0
  89. package/dist/commands/skills.js.map +1 -0
  90. package/dist/commands/sync.d.ts +1 -0
  91. package/dist/commands/sync.d.ts.map +1 -1
  92. package/dist/commands/sync.js +26 -2
  93. package/dist/commands/sync.js.map +1 -1
  94. package/dist/commands/verifyMcp.js +1 -1
  95. package/dist/commands/verifyMcp.js.map +1 -1
  96. package/dist/core/agentDetector.d.ts.map +1 -1
  97. package/dist/core/agentDetector.js +8 -2
  98. package/dist/core/agentDetector.js.map +1 -1
  99. package/dist/core/agentManager.d.ts.map +1 -1
  100. package/dist/core/agentManager.js +12 -0
  101. package/dist/core/agentManager.js.map +1 -1
  102. package/dist/core/gitignoreManager.d.ts +8 -0
  103. package/dist/core/gitignoreManager.d.ts.map +1 -0
  104. package/dist/core/gitignoreManager.js +114 -0
  105. package/dist/core/gitignoreManager.js.map +1 -0
  106. package/dist/core/managedState.d.ts +42 -0
  107. package/dist/core/managedState.d.ts.map +1 -0
  108. package/dist/core/managedState.js +194 -0
  109. package/dist/core/managedState.js.map +1 -0
  110. package/dist/core/pluginManager.d.ts +134 -0
  111. package/dist/core/pluginManager.d.ts.map +1 -0
  112. package/dist/core/pluginManager.js +845 -0
  113. package/dist/core/pluginManager.js.map +1 -0
  114. package/dist/core/projectSkills.d.ts +19 -0
  115. package/dist/core/projectSkills.d.ts.map +1 -0
  116. package/dist/core/projectSkills.js +105 -0
  117. package/dist/core/projectSkills.js.map +1 -0
  118. package/dist/core/projectStandards.d.ts +18 -0
  119. package/dist/core/projectStandards.d.ts.map +1 -0
  120. package/dist/core/projectStandards.js +50 -0
  121. package/dist/core/projectStandards.js.map +1 -0
  122. package/dist/core/propagator.d.ts +9 -1
  123. package/dist/core/propagator.d.ts.map +1 -1
  124. package/dist/core/propagator.js +197 -36
  125. package/dist/core/propagator.js.map +1 -1
  126. package/dist/core/rulesApplicator.d.ts +0 -4
  127. package/dist/core/rulesApplicator.d.ts.map +1 -1
  128. package/dist/core/rulesApplicator.js +8 -39
  129. package/dist/core/rulesApplicator.js.map +1 -1
  130. package/dist/core/rulesTemplateLoader.js +2 -2
  131. package/dist/core/rulesTemplateLoader.js.map +1 -1
  132. package/dist/core/skillsManager.d.ts +61 -0
  133. package/dist/core/skillsManager.d.ts.map +1 -0
  134. package/dist/core/skillsManager.js +419 -0
  135. package/dist/core/skillsManager.js.map +1 -0
  136. package/dist/types/index.d.ts +19 -0
  137. package/dist/types/index.d.ts.map +1 -1
  138. package/dist/types/index.js.map +1 -1
  139. package/dist/types/plugins.d.ts +161 -0
  140. package/dist/types/plugins.d.ts.map +1 -0
  141. package/dist/types/plugins.js +2 -0
  142. package/dist/types/plugins.js.map +1 -0
  143. package/dist/types/skills.d.ts +50 -0
  144. package/dist/types/skills.d.ts.map +1 -0
  145. package/dist/types/skills.js +2 -0
  146. package/dist/types/skills.js.map +1 -0
  147. package/package.json +7 -2
  148. package/dist/agentinit-1.7.0.tgz +0 -0
  149. package/dist/registry/mcpRegistry.d.ts +0 -12
  150. package/dist/registry/mcpRegistry.d.ts.map +0 -1
  151. package/dist/registry/mcpRegistry.js +0 -114
  152. package/dist/registry/mcpRegistry.js.map +0 -1
@@ -0,0 +1,354 @@
1
+ import ora from 'ora';
2
+ import { green, yellow, red, cyan, dim } from 'kleur/colors';
3
+ import { logger } from '../utils/logger.js';
4
+ import { RulesParser } from '../core/rulesParser.js';
5
+ import { AgentManager } from '../core/agentManager.js';
6
+ import { TOKEN_COUNT_THRESHOLDS } from '../constants/index.js';
7
+ import { readFileIfExists, writeFile } from '../utils/fs.js';
8
+ // ── Token display helpers ──────────────────────────────────────────────────
9
+ function colorizeTokenCount(tokenCount) {
10
+ if (tokenCount <= TOKEN_COUNT_THRESHOLDS.LOW)
11
+ return green(tokenCount.toString());
12
+ if (tokenCount <= TOKEN_COUNT_THRESHOLDS.MEDIUM)
13
+ return yellow(tokenCount.toString());
14
+ return red(tokenCount.toString());
15
+ }
16
+ function colorizeTokenDiff(diff) {
17
+ if (diff === 0)
18
+ return '\u00b10';
19
+ if (diff > 0)
20
+ return green(`+${diff}`);
21
+ return red(`${diff}`);
22
+ }
23
+ // ── Agent / path resolution helpers ────────────────────────────────────────
24
+ /**
25
+ * Resolve target agents from CLI options.
26
+ * When --agent is supplied, returns only those agents.
27
+ * When --global is set, validates that --agent is also present.
28
+ * Otherwise auto-detects agents in the current project.
29
+ */
30
+ async function resolveTargetAgents(agentManager, options, cwd) {
31
+ if (options.global && !options.agent?.length) {
32
+ logger.error('--global flag requires --agent to specify target agent(s)');
33
+ logger.info('Example: agentinit rules add --global --agent claude --template git');
34
+ process.exit(1);
35
+ }
36
+ if (options.agent?.length) {
37
+ const agents = [];
38
+ for (const id of options.agent) {
39
+ const agent = agentManager.getAgentById(id);
40
+ if (!agent) {
41
+ logger.error(`Unknown agent: ${id}`);
42
+ logger.info(`Supported agents: ${agentManager.getSupportedAgentIds().join(', ')}`);
43
+ process.exit(1);
44
+ }
45
+ if (options.global && !agent.supportsGlobalRules()) {
46
+ logger.error(`Agent ${agent.name} does not support global rules`);
47
+ process.exit(1);
48
+ }
49
+ agents.push(agent);
50
+ }
51
+ return agents;
52
+ }
53
+ // Auto-detect
54
+ const detected = await agentManager.detectAgents(cwd);
55
+ if (detected.length === 0) {
56
+ logger.warning('No AI coding agents detected in this project');
57
+ logger.info('Supported agents:');
58
+ agentManager.getAllAgents().forEach(a => {
59
+ logger.info(` - ${a.name} (${a.id})`);
60
+ });
61
+ logger.info('');
62
+ logger.info('To target a specific agent, use: --agent <agent-id>');
63
+ process.exit(0);
64
+ }
65
+ return detected.map(d => d.agent);
66
+ }
67
+ function getRulesConfigPath(agent, projectPath, isGlobal) {
68
+ return isGlobal ? agent.getGlobalRulesPath() : agent.getProjectRulesPath(projectPath);
69
+ }
70
+ function buildAppliedRules(sections) {
71
+ const merged = sections.flatMap(section => section.rules);
72
+ return {
73
+ templateRules: merged,
74
+ rawRules: [],
75
+ fileRules: [],
76
+ remoteRules: [],
77
+ merged,
78
+ sections,
79
+ };
80
+ }
81
+ // ── Command registration ───────────────────────────────────────────────────
82
+ export function registerRulesCommand(program) {
83
+ const rules = program
84
+ .command('rules')
85
+ .description('Manage agent rules');
86
+ // ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
87
+ // rules add
88
+ // ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
89
+ rules
90
+ .command('add')
91
+ .description('Add rules to agent configuration')
92
+ .option('-t, --template <templates...>', 'Rule templates to apply (comma-separated values accepted)')
93
+ .option('-r, --raw <rules...>', 'Raw rule strings')
94
+ .option('-f, --file <path>', 'Load rules from a file')
95
+ .option('--remote <url>', 'Load rules from a remote URL')
96
+ .option('--auth <token>', 'Authentication token for remote rules (Bearer token)')
97
+ .option('-a, --agent <agents...>', 'Target specific agent(s)')
98
+ .option('-g, --global', 'Apply rules globally')
99
+ .action(async (options) => {
100
+ logger.title('📏 AgentInit - Rules');
101
+ const cwd = process.cwd();
102
+ const isGlobal = !!options.global;
103
+ // 1. Build RulesConfig from options
104
+ const templates = [];
105
+ if (options.template) {
106
+ for (const val of options.template) {
107
+ templates.push(...val.split(',').map((t) => t.trim()).filter(Boolean));
108
+ }
109
+ }
110
+ const rulesConfig = {
111
+ templates,
112
+ rawRules: options.raw || [],
113
+ };
114
+ if (options.file) {
115
+ rulesConfig.fileRules = options.file;
116
+ }
117
+ if (options.remote) {
118
+ const remote = { url: options.remote };
119
+ if (options.auth)
120
+ remote.auth = options.auth;
121
+ rulesConfig.remoteRules = remote;
122
+ }
123
+ if (templates.length === 0 && rulesConfig.rawRules.length === 0 && !rulesConfig.fileRules && !rulesConfig.remoteRules) {
124
+ logger.info('No rules specified. Use one of:');
125
+ logger.info(' --template <templates...> Rule templates (git, write_docs, use_git_worktrees, use_subagents, use_linter, write_tests)');
126
+ logger.info(' --raw <rules...> Raw rule strings');
127
+ logger.info(' --file <path> Load rules from a file');
128
+ logger.info(' --remote <url> Load rules from a remote URL');
129
+ logger.info('');
130
+ logger.info('Example: agentinit rules add --template git,write_tests');
131
+ return;
132
+ }
133
+ const spinner = ora('Processing rules...').start();
134
+ try {
135
+ // 2. Process rules
136
+ const rulesParser = new RulesParser();
137
+ // Validate template IDs
138
+ if (templates.length > 0) {
139
+ const invalid = rulesParser.validateTemplateIds(templates);
140
+ if (invalid.length > 0) {
141
+ spinner.fail(`Unknown rule templates: ${invalid.join(', ')}`);
142
+ logger.info('Available templates: git, write_docs, use_git_worktrees, use_subagents, use_linter, write_tests');
143
+ process.exit(1);
144
+ }
145
+ }
146
+ const appliedRules = await rulesParser.processRules(rulesConfig);
147
+ if (appliedRules.merged.length === 0) {
148
+ spinner.warn('No rules to apply');
149
+ return;
150
+ }
151
+ // 3. Resolve target agents
152
+ spinner.text = 'Resolving agents...';
153
+ const agentManager = new AgentManager();
154
+ const agents = await resolveTargetAgents(agentManager, options, cwd);
155
+ // 4. Apply rules to each agent
156
+ const results = [];
157
+ for (const agent of agents) {
158
+ if (!agent.capabilities.rules) {
159
+ logger.warning(`${agent.name}: Rules not supported, skipping`);
160
+ continue;
161
+ }
162
+ spinner.text = `Applying rules to ${agent.name}...`;
163
+ let result;
164
+ if (isGlobal) {
165
+ result = await agent.applyGlobalRules(appliedRules);
166
+ }
167
+ else {
168
+ result = await agent.applyRules(cwd, appliedRules);
169
+ }
170
+ results.push({ agent, result });
171
+ }
172
+ if (results.length === 0) {
173
+ spinner.warn('No agents with rules support found');
174
+ return;
175
+ }
176
+ spinner.succeed('Rules applied successfully!');
177
+ // 5. Report results
178
+ logger.info('');
179
+ // Summarise sections
180
+ const allSections = results.flatMap(r => r.result.mergedSections || []);
181
+ const uniqueSections = Array.from(new Map(allSections.map(s => [s.templateId, s])).values());
182
+ const totalExisting = results.reduce((s, r) => s + (r.result.existingCount || 0), 0);
183
+ const totalNew = results.reduce((s, r) => s + (r.result.newlyAppliedCount || 0), 0);
184
+ if (totalExisting > 0) {
185
+ const existingSectionCount = uniqueSections.filter(section => section.rules.some(rule => results.some(r => r.result.existingRules?.includes(rule)))).length;
186
+ logger.info(`Already exists (${existingSectionCount} section${existingSectionCount !== 1 ? 's' : ''}):`);
187
+ uniqueSections.forEach(section => {
188
+ const existingRulesInSection = section.rules.filter(rule => results.some(r => r.result.existingRules?.includes(rule)));
189
+ if (existingRulesInSection.length > 0) {
190
+ logger.info(` - ${section.templateName} (${existingRulesInSection.length} rules)`);
191
+ }
192
+ });
193
+ }
194
+ if (totalNew > 0) {
195
+ if (totalExisting > 0)
196
+ logger.info('');
197
+ const newSectionCount = uniqueSections.filter(section => section.rules.some(rule => results.some(r => r.result.newlyApplied?.includes(rule)))).length;
198
+ logger.info(`Applied (${newSectionCount} section${newSectionCount !== 1 ? 's' : ''}):`);
199
+ uniqueSections.forEach(section => {
200
+ const newRulesInSection = section.rules.filter(rule => results.some(r => r.result.newlyApplied?.includes(rule)));
201
+ if (newRulesInSection.length > 0) {
202
+ logger.info(` - ${section.templateName} (${newRulesInSection.length} rules)`);
203
+ }
204
+ });
205
+ }
206
+ // Per-agent breakdown
207
+ logger.info('');
208
+ logger.info(isGlobal ? 'Agents (global):' : 'Agents:');
209
+ for (const { agent, result } of results) {
210
+ logger.info(` - ${agent.name}`);
211
+ if (result.rulesApplied > 0) {
212
+ if (result.totalFileTokens && result.totalFileTokens > 0) {
213
+ const totalColored = colorizeTokenCount(result.totalFileTokens);
214
+ const diffColored = colorizeTokenDiff(result.tokenDiff || 0);
215
+ logger.info(` Total File: ${totalColored} tokens (${diffColored})`);
216
+ }
217
+ if (result.configPath) {
218
+ logger.info(` Config: ${result.configPath}`);
219
+ }
220
+ if (result.totalFileTokens && result.totalFileTokens > 30000) {
221
+ logger.warning(` Config file is overweight (>30k tokens). Consider reducing rules.`);
222
+ }
223
+ }
224
+ if (!result.success && result.errors?.length) {
225
+ for (const err of result.errors) {
226
+ logger.error(` ${err}`);
227
+ }
228
+ }
229
+ }
230
+ }
231
+ catch (error) {
232
+ spinner.fail('Failed to apply rules');
233
+ logger.error(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`);
234
+ process.exit(1);
235
+ }
236
+ });
237
+ // ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
238
+ // rules list (alias: ls)
239
+ // ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
240
+ rules
241
+ .command('list')
242
+ .alias('ls')
243
+ .description('List rules configured for each agent')
244
+ .option('-a, --agent <agents...>', 'Filter by specific agent(s)')
245
+ .option('-g, --global', 'List global rules')
246
+ .action(async (options) => {
247
+ logger.title('📏 AgentInit - Rules');
248
+ const cwd = process.cwd();
249
+ const isGlobal = !!options.global;
250
+ const agentManager = new AgentManager();
251
+ const agents = await resolveTargetAgents(agentManager, options, cwd);
252
+ let foundAny = false;
253
+ for (const agent of agents) {
254
+ if (!agent.capabilities.rules) {
255
+ continue;
256
+ }
257
+ const configPath = getRulesConfigPath(agent, cwd, isGlobal);
258
+ if (!configPath)
259
+ continue;
260
+ const content = await readFileIfExists(configPath);
261
+ if (!content) {
262
+ logger.info(`\n ${cyan(agent.name)} ${dim('(no rules config found)')}`);
263
+ continue;
264
+ }
265
+ const sections = agent.extractExistingSections(content);
266
+ if (sections.length === 0) {
267
+ logger.info(`\n ${cyan(agent.name)} ${dim('(no rules sections found)')}`);
268
+ continue;
269
+ }
270
+ foundAny = true;
271
+ logger.info(`\n ${cyan(agent.name)}`);
272
+ logger.info(` Config: ${configPath}`);
273
+ for (const section of sections) {
274
+ logger.info(`\n ${green(section.templateName)} ${dim(`(${section.rules.length} rules)`)}`);
275
+ for (const rule of section.rules) {
276
+ logger.info(` - ${rule}`);
277
+ }
278
+ }
279
+ }
280
+ if (!foundAny) {
281
+ logger.info('');
282
+ logger.info('No rules found. Add rules with:');
283
+ logger.info(' agentinit rules add --template git,write_tests');
284
+ }
285
+ });
286
+ // ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
287
+ // rules remove [names...] (alias: rm)
288
+ // ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
289
+ rules
290
+ .command('remove [names...]')
291
+ .alias('rm')
292
+ .description('Remove rule sections by template ID (e.g. git, write_docs)')
293
+ .option('-a, --agent <agents...>', 'Target specific agent(s)')
294
+ .option('-g, --global', 'Remove from global rules')
295
+ .action(async (names, options) => {
296
+ logger.title('📏 AgentInit - Rules');
297
+ if (!names || names.length === 0) {
298
+ logger.error('Please specify rule section name(s) to remove.');
299
+ logger.info('Usage: agentinit rules remove <name...>');
300
+ logger.info('');
301
+ logger.info('Section names correspond to template IDs (e.g. git, write_docs, use_linter)');
302
+ logger.info('Run "agentinit rules list" to see current sections.');
303
+ return;
304
+ }
305
+ const cwd = process.cwd();
306
+ const isGlobal = !!options.global;
307
+ const agentManager = new AgentManager();
308
+ const agents = await resolveTargetAgents(agentManager, options, cwd);
309
+ const spinner = ora('Removing rules...').start();
310
+ let totalRemoved = 0;
311
+ try {
312
+ for (const agent of agents) {
313
+ if (!agent.capabilities.rules) {
314
+ continue;
315
+ }
316
+ const configPath = getRulesConfigPath(agent, cwd, isGlobal);
317
+ if (!configPath)
318
+ continue;
319
+ const content = await readFileIfExists(configPath);
320
+ if (!content)
321
+ continue;
322
+ const sections = agent.extractExistingSections(content);
323
+ if (sections.length === 0)
324
+ continue;
325
+ // Normalise lookup: names are matched against templateId
326
+ const namesToRemove = new Set(names.map(n => n.toLowerCase().replace(/\s+/g, '_')));
327
+ const remaining = sections.filter(s => !namesToRemove.has(s.templateId));
328
+ const removed = sections.filter(s => namesToRemove.has(s.templateId));
329
+ if (removed.length === 0) {
330
+ continue;
331
+ }
332
+ const updatedContent = await agent.applyRulesConfig(configPath, buildAppliedRules(remaining), content);
333
+ await writeFile(configPath, updatedContent);
334
+ totalRemoved += removed.length;
335
+ for (const s of removed) {
336
+ logger.info(` ${agent.name}: removed ${green(s.templateName)} (${s.rules.length} rules)`);
337
+ }
338
+ }
339
+ if (totalRemoved === 0) {
340
+ spinner.warn('No matching rule sections found to remove');
341
+ logger.info('Run "agentinit rules list" to see current sections.');
342
+ }
343
+ else {
344
+ spinner.succeed(`Removed ${totalRemoved} rule section${totalRemoved !== 1 ? 's' : ''}`);
345
+ }
346
+ }
347
+ catch (error) {
348
+ spinner.fail('Failed to remove rules');
349
+ logger.error(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`);
350
+ process.exit(1);
351
+ }
352
+ });
353
+ }
354
+ //# sourceMappingURL=rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/commands/rules.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerSkillsCommand(program: Command): void;
3
+ //# sourceMappingURL=skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/commands/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgN5D"}
@@ -0,0 +1,190 @@
1
+ import ora from 'ora';
2
+ import { relative } from 'path';
3
+ import { green } from 'kleur/colors';
4
+ import { logger } from '../utils/logger.js';
5
+ import { SkillsManager } from '../core/skillsManager.js';
6
+ import { AgentManager } from '../core/agentManager.js';
7
+ export function registerSkillsCommand(program) {
8
+ const skills = program
9
+ .command('skills')
10
+ .description('Manage agent skills');
11
+ // --- skills add <source> ---
12
+ skills
13
+ .command('add <source>')
14
+ .description('Add skills from a GitHub repo or local path')
15
+ .option('-g, --global', 'Install skills globally')
16
+ .option('-a, --agent <agents...>', 'Target specific agent(s)')
17
+ .option('-s, --skill <names...>', 'Install only specific skills by name')
18
+ .option('-l, --list', 'List available skills from the source without installing')
19
+ .option('--copy', 'Copy skill files instead of symlinking')
20
+ .option('-y, --yes', 'Skip confirmation prompts')
21
+ .action(async (source, options) => {
22
+ logger.title('📦 AgentInit - Skills');
23
+ const agentManager = new AgentManager();
24
+ const skillsManager = new SkillsManager(agentManager);
25
+ // If --list, discover and display skills from source, then return
26
+ if (options.list) {
27
+ const spinner = ora('Discovering skills...').start();
28
+ try {
29
+ const resolved = skillsManager.resolveSource(source);
30
+ let repoPath;
31
+ let tempDir = null;
32
+ if (resolved.type === 'github') {
33
+ if (!resolved.url) {
34
+ spinner.fail(`Invalid source: ${source}`);
35
+ return;
36
+ }
37
+ tempDir = await skillsManager.cloneRepo(resolved.url);
38
+ repoPath = tempDir;
39
+ }
40
+ else {
41
+ const { resolve: resolvePath } = await import('path');
42
+ repoPath = resolvePath(resolved.path || source);
43
+ }
44
+ const skills = await skillsManager.discoverSkills(repoPath);
45
+ spinner.stop();
46
+ if (skills.length === 0) {
47
+ logger.info('No skills found in the source.');
48
+ return;
49
+ }
50
+ logger.info(`Found ${green(String(skills.length))} skill(s):\n`);
51
+ logger.info(' Name Description');
52
+ logger.info(' ────────────────── ──────────────────────────────────');
53
+ for (const skill of skills) {
54
+ const name = skill.name.padEnd(18);
55
+ logger.info(` ${green(name)} ${skill.description}`);
56
+ }
57
+ // Clean up temp dir if cloned
58
+ if (tempDir) {
59
+ const { promises: fs } = await import('fs');
60
+ await fs.rm(tempDir, { recursive: true, force: true }).catch(() => { });
61
+ }
62
+ }
63
+ catch (error) {
64
+ spinner.fail('Failed to discover skills');
65
+ logger.error(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`);
66
+ }
67
+ return;
68
+ }
69
+ // Install skills
70
+ const spinner = ora('Installing skills...').start();
71
+ try {
72
+ const result = await skillsManager.addFromSource(source, process.cwd(), {
73
+ global: options.global,
74
+ agents: options.agent,
75
+ skills: options.skill,
76
+ copy: options.copy,
77
+ yes: options.yes,
78
+ });
79
+ if (result.installed.length === 0 && result.skipped.length === 0) {
80
+ spinner.warn('No skills found in the source.');
81
+ return;
82
+ }
83
+ const uniqueInstallCount = new Set(result.installed.map(item => `${item.path}:${item.skill.name}`)).size;
84
+ spinner.succeed(`Installed ${green(String(uniqueInstallCount))} skill(s)`);
85
+ // Show per-path breakdown
86
+ const byPath = new Map();
87
+ for (const item of result.installed) {
88
+ const path = item.path;
89
+ const existing = byPath.get(path) || {
90
+ agents: new Set(),
91
+ skills: new Set(),
92
+ };
93
+ existing.agents.add(agentManager.getAgentById(item.agent)?.name || item.agent);
94
+ existing.skills.add(item.skill.name);
95
+ byPath.set(path, existing);
96
+ }
97
+ for (const [path, details] of byPath) {
98
+ logger.info(` ${relative(process.cwd(), path) || path}`);
99
+ logger.info(` Agents: ${[...details.agents].join(', ')}`);
100
+ logger.info(` Skills: ${green(String(details.skills.size))} installed (${[...details.skills].join(', ')})`);
101
+ }
102
+ // Show skipped skills
103
+ if (result.skipped.length > 0) {
104
+ logger.info('');
105
+ logger.warn(`Skipped ${result.skipped.length} skill(s):`);
106
+ for (const skip of result.skipped) {
107
+ logger.info(` ${skip.skill.name}: ${skip.reason}`);
108
+ }
109
+ }
110
+ logger.success('Skills installation complete.');
111
+ }
112
+ catch (error) {
113
+ spinner.fail('Failed to install skills');
114
+ logger.error(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`);
115
+ }
116
+ });
117
+ // --- skills list (alias: ls) ---
118
+ skills
119
+ .command('list')
120
+ .alias('ls')
121
+ .description('List installed skills')
122
+ .option('-g, --global', 'List only global skills')
123
+ .option('-a, --agent <agents...>', 'Filter by specific agent(s)')
124
+ .action(async (options) => {
125
+ logger.title('📦 AgentInit - Skills');
126
+ const agentManager = new AgentManager();
127
+ const skillsManager = new SkillsManager(agentManager);
128
+ const installed = await skillsManager.listInstalled(process.cwd(), {
129
+ global: options.global,
130
+ agents: options.agent,
131
+ });
132
+ if (installed.length === 0) {
133
+ logger.info('No skills installed.');
134
+ return;
135
+ }
136
+ // Group by agent
137
+ const byAgent = new Map();
138
+ for (const skill of installed) {
139
+ const list = byAgent.get(skill.agent) || [];
140
+ list.push(skill);
141
+ byAgent.set(skill.agent, list);
142
+ }
143
+ for (const [agent, agentSkills] of byAgent) {
144
+ logger.info(`\n ${green(agent)}`);
145
+ for (const skill of agentSkills) {
146
+ const symlink = skill.isSymlink ? ' (symlink)' : '';
147
+ const scope = skill.scope === 'global' ? ' [global]' : '';
148
+ logger.info(` ${green(skill.name)} - ${skill.description}${scope}${symlink}`);
149
+ }
150
+ }
151
+ });
152
+ // --- skills remove [names...] (alias: rm) ---
153
+ skills
154
+ .command('remove [names...]')
155
+ .alias('rm')
156
+ .description('Remove installed skills by name')
157
+ .option('-g, --global', 'Remove from global scope')
158
+ .option('-a, --agent <agents...>', 'Target specific agent(s)')
159
+ .option('-y, --yes', 'Skip confirmation prompts')
160
+ .action(async (names, options) => {
161
+ logger.title('📦 AgentInit - Skills');
162
+ if (!names || names.length === 0) {
163
+ if (!options.yes) {
164
+ logger.error('Please specify skill name(s) to remove.');
165
+ logger.info('Usage: agentinit skills remove <name...>');
166
+ return;
167
+ }
168
+ }
169
+ const agentManager = new AgentManager();
170
+ const skillsManager = new SkillsManager(agentManager);
171
+ const result = await skillsManager.remove(names, process.cwd(), {
172
+ global: options.global,
173
+ agents: options.agent,
174
+ yes: options.yes,
175
+ });
176
+ if (result.removed.length > 0) {
177
+ logger.success(`Removed ${green(String(result.removed.length))} skill(s).`);
178
+ for (const entry of result.removed) {
179
+ logger.info(` ${entry}`);
180
+ }
181
+ }
182
+ if (result.notFound.length > 0) {
183
+ logger.warn(`Not found: ${result.notFound.join(', ')}`);
184
+ }
185
+ if (result.removed.length === 0 && result.notFound.length === 0) {
186
+ logger.info('Nothing to remove.');
187
+ }
188
+ });
189
+ }
190
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/commands/skills.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  interface SyncOptions {
2
2
  dryRun?: boolean;
3
3
  backup?: boolean;
4
+ agent?: string[];
4
5
  }
5
6
  export declare function syncCommand(options: SyncOptions): Promise<void>;
6
7
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAIA,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAoDrE"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAOA,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA0ErE"}