learnship 1.9.9 → 1.9.10

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "learnship",
3
3
  "description": "Agentic engineering done right — 42 structured workflows, persistent memory across sessions, integrated learning partner, and impeccable UI design system. Works with Claude Code, Windsurf, Cursor, Gemini CLI, OpenCode, and Codex.",
4
- "version": "1.9.9",
4
+ "version": "1.9.10",
5
5
  "author": {
6
6
  "name": "Favio Vazquez",
7
7
  "email": "favio.vazquezp@gmail.com"
@@ -2,7 +2,7 @@
2
2
  "name": "learnship",
3
3
  "displayName": "learnship",
4
4
  "description": "Agentic engineering done right — 42 structured workflows, persistent memory across sessions, integrated learning partner, and impeccable UI design system.",
5
- "version": "1.9.9",
5
+ "version": "1.9.10",
6
6
  "logo": "assets/logo.png",
7
7
  "author": {
8
8
  "name": "Favio Vazquez",
package/bin/install.js CHANGED
@@ -608,23 +608,55 @@ function installClaudePlugins(skillsSrc, targetDir) {
608
608
  const dest = path.join(pluginSkillsDir, skillName);
609
609
 
610
610
  if (skillName === 'impeccable') {
611
- // impeccable: copy root SKILL.md (rewriting sibling paths → references/ paths),
612
- // then copy each sub-skill dir into references/
611
+ // impeccable: build a single inlined SKILL.md that contains all sub-skill
612
+ // content inline same pattern as agentic-learning.
613
+ // Claude Code cannot follow markdown reference links to sibling files, so
614
+ // the hollow index approach produced an "@impeccable isn't installed" error.
613
615
  fs.mkdirSync(dest, { recursive: true });
614
- let skillMdContent = fs.readFileSync(path.join(srcPath, 'SKILL.md'), 'utf8');
615
- // Rewrite repo-relative sibling links (e.g. adapt/SKILL.md) to post-install references/ paths
616
- skillMdContent = skillMdContent.replace(/\]\((?!references\/)([^/)][^)]*\/SKILL\.md)\)/g, '](references/$1)');
617
- fs.writeFileSync(path.join(dest, 'SKILL.md'), skillMdContent);
618
- const refsDest = path.join(dest, 'references');
619
- fs.mkdirSync(refsDest, { recursive: true });
620
- for (const sub of fs.readdirSync(srcPath, { withFileTypes: true })) {
621
- if (!sub.isDirectory()) continue;
622
- const subSrc = path.join(srcPath, sub.name);
623
- const subDest = path.join(refsDest, sub.name);
624
- if (fs.existsSync(path.join(subSrc, 'SKILL.md'))) {
625
- copyDir(subSrc, subDest, '', 'claude');
626
- }
616
+
617
+ // Read root frontmatter + intro (everything up to the ## Actions section)
618
+ const rootContent = fs.readFileSync(path.join(srcPath, 'SKILL.md'), 'utf8');
619
+ // Strip frontmatter, keep the prose intro + "After running" footer
620
+ const rootBody = rootContent.replace(/^---[\s\S]*?---\n/, '');
621
+
622
+ // Ordered sub-actions (defines appearance order in the inlined file)
623
+ const SUB_ACTION_ORDER = [
624
+ 'adapt', 'animate', 'audit', 'bolder', 'clarify', 'colorize',
625
+ 'critique', 'delight', 'distill', 'extract', 'frontend-design',
626
+ 'harden', 'normalize', 'onboard', 'optimize', 'polish', 'quieter',
627
+ 'teach-impeccable',
628
+ ];
629
+
630
+ // Build inlined sections by reading each sub-skill's body
631
+ const inlinedSections = [];
632
+ for (const subName of SUB_ACTION_ORDER) {
633
+ const subSkillPath = path.join(srcPath, subName, 'SKILL.md');
634
+ if (!fs.existsSync(subSkillPath)) continue;
635
+ const subContent = fs.readFileSync(subSkillPath, 'utf8');
636
+ // Strip YAML frontmatter, keep body only
637
+ const subBody = subContent.replace(/^---[\s\S]*?---\n/, '').trim();
638
+ // Also copy sub-skill directory (for Windsurf native skill support)
639
+ const subDest = path.join(dest, subName);
640
+ copyDir(path.join(srcPath, subName), subDest, '', 'claude');
641
+ inlinedSections.push(`\n## Action: \`${subName}\`\n\n${subBody}`);
627
642
  }
643
+
644
+ // Root frontmatter: keep original header but update description to remove
645
+ // the "Invoke with @impeccable" preamble that confused Claude Code's matcher
646
+ const inlinedSkillMd =
647
+ `---\nname: impeccable\ndescription: >\n` +
648
+ ` A design quality system for frontend interfaces. 18 focused actions for\n` +
649
+ ` auditing, refining, and elevating UI quality. Use when the user asks to\n` +
650
+ ` audit, critique, polish, improve, review, or refine a frontend interface.\n` +
651
+ ` Invoke with @impeccable followed by one of: adapt, animate, audit, bolder,\n` +
652
+ ` clarify, colorize, critique, delight, distill, extract, frontend-design,\n` +
653
+ ` harden, normalize, onboard, optimize, polish, quieter, or teach-impeccable.\n` +
654
+ `---\n\n` +
655
+ rootBody.replace(/## Actions[\s\S]*?---\n\n## How to use/, '## How to use') +
656
+ `\n\n` +
657
+ inlinedSections.join('\n\n');
658
+
659
+ fs.writeFileSync(path.join(dest, 'SKILL.md'), inlinedSkillMd);
628
660
  count++;
629
661
  } else {
630
662
  // agentic-learning and any future top-level skills — copy verbatim
@@ -1269,6 +1301,7 @@ if (process.env.LEARNSHIP_TEST_MODE) {
1269
1301
  parseJsonc,
1270
1302
  replacePaths,
1271
1303
  rewriteNewProject,
1304
+ installClaudePlugins,
1272
1305
  toHomePrefix,
1273
1306
  LEARNSHIP_CODEX_MARKER,
1274
1307
  CODEX_AGENT_SANDBOX,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "learnship",
3
- "version": "1.9.9",
3
+ "version": "1.9.10",
4
4
  "description": "Agentic engineering done right — 42 structured workflows, persistent memory across sessions, integrated learning partner, and impeccable UI design system.",
5
5
  "author": "Favio Vazquez",
6
6
  "homepage": "https://faviovazquez.github.io/learnship/",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "learnship",
3
- "version": "1.9.9",
3
+ "version": "1.9.10",
4
4
  "description": "Learn as you build. Build with intent. — A multi-platform agentic engineering system for Windsurf, Claude Code, Cursor, OpenCode, Gemini CLI, and Codex: spec-driven workflows, integrated learning, and production-grade design.",
5
5
  "keywords": [
6
6
  "agentic",