@guru-ai-product/ai-product-kit 0.2.251117175346 → 0.2.251117191453

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/setup.js CHANGED
@@ -110,8 +110,8 @@ function ensureAgentsMd() {
110
110
  }
111
111
 
112
112
  const skills = collectSkillMetadata();
113
- const newSection = renderAgentsTemplateForSkills(skills);
114
- const updated = replaceSkillsSection(content, newSection);
113
+ const newTemplate = renderAgentsTemplateForSkills(skills);
114
+ const updated = mergeAgentsContent(content, newTemplate);
115
115
 
116
116
  if (updated !== content) {
117
117
  fs.writeFileSync(agentsPath, updated, 'utf8');
@@ -242,20 +242,104 @@ function generateSkillEntries(skills) {
242
242
  .join('\n\n');
243
243
  }
244
244
 
245
- function replaceSkillsSection(content, newSection) {
246
- const xmlRegex = /<skills_system[\s\S]*?<\/skills_system>/;
247
- if (xmlRegex.test(content)) {
248
- return content.replace(xmlRegex, newSection);
245
+ function mergeAgentsContent(existingContent, newTemplate) {
246
+ const templateParts = parseTemplate(newTemplate);
247
+ const existingParts = parseExistingContent(existingContent);
248
+
249
+ const parts = [];
250
+
251
+ if (existingParts.beforeProjectOverview) {
252
+ parts.push(existingParts.beforeProjectOverview);
253
+ }
254
+
255
+ if (existingParts.projectOverview) {
256
+ parts.push(existingParts.projectOverview);
257
+ } else if (templateParts.projectOverview) {
258
+ parts.push(templateParts.projectOverview);
259
+ }
260
+
261
+ if (templateParts.conventions) {
262
+ parts.push(templateParts.conventions);
263
+ }
264
+
265
+ if (templateParts.skillsBundleAccess) {
266
+ parts.push(templateParts.skillsBundleAccess);
267
+ }
268
+
269
+ if (templateParts.skillsSystem) {
270
+ parts.push(templateParts.skillsSystem);
271
+ }
272
+
273
+ if (templateParts.ruleComment) {
274
+ parts.push(templateParts.ruleComment);
275
+ }
276
+
277
+ if (existingParts.afterRuleComment) {
278
+ parts.push(existingParts.afterRuleComment);
279
+ }
280
+
281
+ return parts.join('\n\n').trim() + '\n';
282
+ }
283
+
284
+ function parseTemplate(template) {
285
+ const parts = {};
286
+
287
+ const projectOverviewMatch = template.match(/# Project Overview\s*\n([\s\S]*?)(?=\n## Conventions|<skills_system|$)/);
288
+ if (projectOverviewMatch) {
289
+ parts.projectOverview = `# Project Overview\n${projectOverviewMatch[1].trim()}`;
249
290
  }
250
291
 
251
- const htmlRegex = /<!-- SKILLS_TABLE_START -->[\s\S]*?<!-- SKILLS_TABLE_END -->/;
252
- if (htmlRegex.test(content)) {
253
- const inner = newSection
254
- .replace(/<skills_system[^>]*>/, '')
255
- .replace('</skills_system>', '')
256
- .trim();
257
- return content.replace(htmlRegex, `<!-- SKILLS_TABLE_START -->\n${inner}\n<!-- SKILLS_TABLE_END -->`);
292
+ const conventionsMatch = template.match(/## Conventions\s*\n([\s\S]*?)(?=\n## Skills Bundle Access|<skills_system|$)/);
293
+ if (conventionsMatch) {
294
+ parts.conventions = `## Conventions\n${conventionsMatch[1].trim()}`;
295
+ }
296
+
297
+ const skillsBundleAccessMatch = template.match(/## Skills Bundle Access\s*\n([\s\S]*?)(?=<skills_system|$)/);
298
+ if (skillsBundleAccessMatch) {
299
+ parts.skillsBundleAccess = `## Skills Bundle Access\n${skillsBundleAccessMatch[1].trim()}`;
300
+ }
301
+
302
+ const skillsSystemMatch = template.match(/<skills_system[\s\S]*?<\/skills_system>/);
303
+ if (skillsSystemMatch) {
304
+ parts.skillsSystem = skillsSystemMatch[0];
305
+ }
306
+
307
+ const ruleCommentMatch = template.match(/<!-- rule:[\s\S]*?-->/);
308
+ if (ruleCommentMatch) {
309
+ parts.ruleComment = ruleCommentMatch[0];
310
+ }
311
+
312
+ return parts;
313
+ }
314
+
315
+ function parseExistingContent(content) {
316
+ const parts = {};
317
+
318
+ const projectOverviewStart = content.search(/# Project Overview/);
319
+ if (projectOverviewStart === -1) {
320
+ const beforeConventions = content.split(/## Conventions|<skills_system/)[0].trim();
321
+ if (beforeConventions) {
322
+ parts.beforeProjectOverview = beforeConventions;
323
+ }
324
+ return parts;
325
+ }
326
+
327
+ if (projectOverviewStart > 0) {
328
+ parts.beforeProjectOverview = content.substring(0, projectOverviewStart).trim();
329
+ }
330
+
331
+ const projectOverviewMatch = content.substring(projectOverviewStart).match(/# Project Overview\s*\n([\s\S]*?)(?=\n## Conventions|<skills_system|$)/);
332
+ if (projectOverviewMatch) {
333
+ parts.projectOverview = `# Project Overview\n${projectOverviewMatch[1].trim()}`;
334
+ }
335
+
336
+ const ruleCommentMatch = content.match(/<!-- rule:[\s\S]*?-->/);
337
+ if (ruleCommentMatch) {
338
+ const afterRuleComment = content.substring(content.indexOf(ruleCommentMatch[0]) + ruleCommentMatch[0].length).trim();
339
+ if (afterRuleComment) {
340
+ parts.afterRuleComment = afterRuleComment;
341
+ }
258
342
  }
259
343
 
260
- return content.trimEnd() + '\n\n' + newSection + '\n';
344
+ return parts;
261
345
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@guru-ai-product/ai-product-kit",
3
- "version": "0.2.251117175346",
3
+ "version": "0.2.251117191453",
4
4
  "description": "Sync the AI Product Kit Skill bundle through npx without cloning the repository.",
5
5
  "bin": {
6
6
  "ai-product-kit": "bin/setup.js",
@@ -1,6 +1,6 @@
1
1
  # GURU AI Snapshot
2
2
 
3
- Last refreshed: 2025-11-17T09:53:46.654Z
3
+ Last refreshed: 2025-11-17T11:14:53.954Z
4
4
 
5
5
  | File | Last Modified (UTC) |
6
6
  | --- | --- |
@@ -1,6 +1,6 @@
1
1
  # GURU AI Snapshot
2
2
 
3
- Last refreshed: 2025-11-17T09:53:46.654Z
3
+ Last refreshed: 2025-11-17T11:14:53.954Z
4
4
 
5
5
  | File | Last Modified (UTC) |
6
6
  | --- | --- |
@@ -1,6 +1,6 @@
1
1
  # GURU AI Snapshot
2
2
 
3
- Last refreshed: 2025-11-17T09:53:46.654Z
3
+ Last refreshed: 2025-11-17T11:14:53.954Z
4
4
 
5
5
  | File | Last Modified (UTC) |
6
6
  | --- | --- |
@@ -1,10 +1,10 @@
1
1
  # GURU AI Snapshot
2
2
 
3
- Last refreshed: 2025-11-17T09:53:46.654Z
3
+ Last refreshed: 2025-11-17T11:14:53.954Z
4
4
 
5
5
  | File | Last Modified (UTC) |
6
6
  | --- | --- |
7
7
  | `scripts/check_agents.sh` | 2025-11-13T09:03:47.702Z |
8
8
  | `skill.ini` | 2025-11-13T09:47:02.793Z |
9
9
  | `SKILL.md` | 2025-11-13T10:06:33.764Z |
10
- | `template/AGENTS_TEMPLATE.md` | 2025-11-17T09:53:46.571Z |
10
+ | `template/AGENTS_TEMPLATE.md` | 2025-11-17T11:14:53.842Z |
@@ -1,6 +1,6 @@
1
1
  # GURU AI Snapshot
2
2
 
3
- Last refreshed: 2025-11-17T09:53:46.654Z
3
+ Last refreshed: 2025-11-17T11:14:53.954Z
4
4
 
5
5
  | File | Last Modified (UTC) |
6
6
  | --- | --- |
@@ -1,6 +1,6 @@
1
1
  # GURU AI Snapshot
2
2
 
3
- Last refreshed: 2025-11-17T09:53:46.654Z
3
+ Last refreshed: 2025-11-17T11:14:53.954Z
4
4
 
5
5
  | File | Last Modified (UTC) |
6
6
  | --- | --- |
@@ -1,6 +1,6 @@
1
1
  # GURU AI Snapshot
2
2
 
3
- Last refreshed: 2025-11-17T09:53:46.654Z
3
+ Last refreshed: 2025-11-17T11:14:53.954Z
4
4
 
5
5
  | File | Last Modified (UTC) |
6
6
  | --- | --- |
@@ -1,6 +1,6 @@
1
1
  # GURU AI Snapshot
2
2
 
3
- Last refreshed: 2025-11-17T09:53:46.654Z
3
+ Last refreshed: 2025-11-17T11:14:53.954Z
4
4
 
5
5
  | File | Last Modified (UTC) |
6
6
  | --- | --- |
@@ -1,6 +1,6 @@
1
1
  # GURU AI Snapshot
2
2
 
3
- Last refreshed: 2025-11-17T09:53:46.654Z
3
+ Last refreshed: 2025-11-17T11:14:53.954Z
4
4
 
5
5
  | File | Last Modified (UTC) |
6
6
  | --- | --- |
@@ -1,6 +1,6 @@
1
1
  # GURU AI Snapshot
2
2
 
3
- Last refreshed: 2025-11-17T09:53:46.654Z
3
+ Last refreshed: 2025-11-17T11:14:53.954Z
4
4
 
5
5
  | File | Last Modified (UTC) |
6
6
  | --- | --- |
@@ -1,6 +1,6 @@
1
1
  # GURU AI Snapshot
2
2
 
3
- Last refreshed: 2025-11-17T09:53:46.654Z
3
+ Last refreshed: 2025-11-17T11:14:53.954Z
4
4
 
5
5
  | File | Last Modified (UTC) |
6
6
  | --- | --- |