@lifeaitools/rdc-skills 0.9.18 → 0.9.19

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,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifeaitools/rdc-skills",
3
- "version": "0.9.18",
3
+ "version": "0.9.19",
4
4
  "description": "RDC typed-agent dispatch skill suite for Claude Code — plan, build, review, overnight builds",
5
5
  "keywords": [
6
6
  "claude-code",
@@ -639,6 +639,42 @@ async function main() {
639
639
  info('[2.5] Codex — skipped (no .agents/ found; use --codex-root <path>)');
640
640
  }
641
641
 
642
+ // 2.7. Symlinks in regen-root/.claude/skills/ (FS MCP + claude.ai access)
643
+ if (codexRoot) {
644
+ const skillsLinkDir = path.join(codexRoot, '.claude', 'skills');
645
+ const skillsSrc = path.join(repoRoot, 'skills');
646
+ fs.mkdirSync(skillsLinkDir, { recursive: true });
647
+ let linked = 0;
648
+ for (const entry of fs.readdirSync(skillsSrc, { withFileTypes: true })) {
649
+ if (!entry.isDirectory()) continue;
650
+ if (!fs.existsSync(path.join(skillsSrc, entry.name, 'SKILL.md'))) continue;
651
+ const linkPath = path.join(skillsLinkDir, entry.name);
652
+ const target = path.join(skillsSrc, entry.name);
653
+ try {
654
+ if (fs.existsSync(linkPath) || (() => { try { fs.lstatSync(linkPath); return true; } catch { return false; } })()) {
655
+ fs.rmSync(linkPath, { recursive: true, force: true });
656
+ }
657
+ } catch {}
658
+ try {
659
+ if (process.platform === 'win32') {
660
+ const winLink = linkPath.replace(/\//g, '\\');
661
+ const winTarget = target.replace(/\//g, '\\');
662
+ execSync(`cmd /c mklink /J "${winLink}" "${winTarget}"`, { stdio: 'pipe' });
663
+ } else {
664
+ fs.symlinkSync(target, linkPath, 'dir');
665
+ }
666
+ linked++;
667
+ } catch {}
668
+ }
669
+ if (linked > 0) {
670
+ ok(`[2.7] Symlinks — ${linked} skill link(s) in ${skillsLinkDir}`);
671
+ } else {
672
+ info('[2.7] Symlinks — no rdc skill links created (skills may already be linked)');
673
+ }
674
+ } else {
675
+ info('[2.7] Symlinks — skipped (no codex root found)');
676
+ }
677
+
642
678
  // 3. Hook files
643
679
  const hookCount = copyDir(hooksSrc, hooksDst, '.js');
644
680
  ok(`[3/6] Hook files — ${hookCount} file(s) → ${hooksDst}`);