simba-skills 0.5.0 → 0.6.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.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "simba-skills",
3
- "version": "0.5.0",
4
- "description": "AI skills manager - central store with symlink-based distribution across 14+ coding agents",
3
+ "version": "0.6.0",
4
+ "description": "AI skills manager - central store with symlink-based distribution across 15+ coding agents",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -1,6 +1,6 @@
1
1
  import { defineCommand } from "citty"
2
2
  import { readdir, access, readFile } from "node:fs/promises"
3
- import { join, relative, resolve } from "node:path"
3
+ import { basename, join, relative, resolve } from "node:path"
4
4
  import * as p from "@clack/prompts"
5
5
  import matter from "gray-matter"
6
6
  import simpleGit from "simple-git"
@@ -268,9 +268,30 @@ export async function discoverSkills(basePath: string): Promise<DiscoveredSkill[
268
268
  }
269
269
  }
270
270
 
271
+ // Check if repo root itself is a skill (has SKILL.md at basePath)
272
+ // Only if no skills found via other strategies (prevents double-counting)
273
+ if (skills.length === 0) {
274
+ try {
275
+ const rootSkillMd = join(basePath, "SKILL.md")
276
+ await access(rootSkillMd)
277
+ const content = await readFile(rootSkillMd, "utf-8")
278
+ const { data } = matter(content)
279
+ const name = data.name || basename(basePath)
280
+
281
+ skills.push({
282
+ name,
283
+ path: basePath,
284
+ description: data.description,
285
+ })
286
+ } catch {
287
+ // No SKILL.md at root
288
+ }
289
+ }
290
+
271
291
  // Compute relativePath for each skill
272
292
  for (const skill of skills) {
273
- skill.relativePath = "./" + relative(basePath, skill.path)
293
+ const rel = relative(basePath, skill.path)
294
+ skill.relativePath = rel === "" ? "." : "./" + rel
274
295
  }
275
296
 
276
297
  return skills
@@ -19,6 +19,7 @@ const AGENT_DEFINITIONS: [string, string, string, string, string][] = [
19
19
  ["antigravity", "Antigravity", "Antigrav", "~/.gemini/antigravity/skills", ".agent/skills"],
20
20
  ["clawdbot", "Clawdbot", "Clawdbot", "~/.clawdbot/skills", "skills"],
21
21
  ["droid", "Droid", "Droid", "~/.factory/skills", ".factory/skills"],
22
+ ["pi", "pi", "pi", "~/.pi/agent/skills", ".pi/skills"],
22
23
  ];
23
24
 
24
25
  const DEFAULT_AGENTS: Record<string, Agent> = Object.fromEntries(