learnship 1.9.8 → 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.
- package/.claude-plugin/plugin.json +1 -1
- package/.cursor-plugin/plugin.json +1 -1
- package/bin/install.js +59 -19
- package/gemini-extension.json +1 -1
- package/package.json +1 -1
|
@@ -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.
|
|
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.
|
|
5
|
+
"version": "1.9.10",
|
|
6
6
|
"logo": "assets/logo.png",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "Favio Vazquez",
|
package/bin/install.js
CHANGED
|
@@ -539,12 +539,19 @@ function rewriteNewProject(content, platform) {
|
|
|
539
539
|
const gitignoreCmd = `grep -q '${dirName}/' .gitignore 2>/dev/null || echo '${dirName}/' >> .gitignore`;
|
|
540
540
|
content = content.replace('<!-- LEARNSHIP_GITIGNORE_CMD -->', gitignoreCmd);
|
|
541
541
|
|
|
542
|
-
//
|
|
542
|
+
// Platforms that support real parallel subagents (verified against official docs)
|
|
543
|
+
// Windsurf: no subagents at all
|
|
544
|
+
// Gemini CLI: subagents exist but parallel execution is not yet shipped (GitHub issues #14963/#17749)
|
|
545
|
+
const supportsParallel = platform === 'claude' || platform === 'opencode' || platform === 'codex';
|
|
546
|
+
|
|
547
|
+
// Parallel execution block
|
|
543
548
|
let parallelBlock;
|
|
544
|
-
if (
|
|
545
|
-
parallelBlock = `**Group D — Parallel execution:**\n\
|
|
549
|
+
if (supportsParallel) {
|
|
550
|
+
parallelBlock = `**Group D — Parallel execution:**\n\n${label} supports real parallel subagents. Ask:\n\n"Do you want to enable parallel subagent execution?"\n- **No** (recommended default) — Plans execute sequentially, one at a time. Safer, easier to follow.\n- **Yes** — Each independent plan in a wave gets its own dedicated subagent with a fresh context budget. Faster, but uses more tokens.`;
|
|
551
|
+
} else if (platform === 'gemini') {
|
|
552
|
+
parallelBlock = `**Group D — Parallel execution:**\n\nGemini CLI supports subagents but only runs them sequentially — parallel execution is not yet available. Parallelization is automatically set to \`false\`.`;
|
|
546
553
|
} else {
|
|
547
|
-
parallelBlock = `**Group D — Parallel execution:**\n\n${label}
|
|
554
|
+
parallelBlock = `**Group D — Parallel execution:**\n\n${label} does not support real subagents. Parallelization is automatically set to \`false\`.`;
|
|
548
555
|
}
|
|
549
556
|
content = content.replace('<!-- LEARNSHIP_PARALLEL_BLOCK -->', parallelBlock);
|
|
550
557
|
|
|
@@ -601,23 +608,55 @@ function installClaudePlugins(skillsSrc, targetDir) {
|
|
|
601
608
|
const dest = path.join(pluginSkillsDir, skillName);
|
|
602
609
|
|
|
603
610
|
if (skillName === 'impeccable') {
|
|
604
|
-
// impeccable:
|
|
605
|
-
//
|
|
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.
|
|
606
615
|
fs.mkdirSync(dest, { recursive: true });
|
|
607
|
-
|
|
608
|
-
//
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
const
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
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}`);
|
|
620
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);
|
|
621
660
|
count++;
|
|
622
661
|
} else {
|
|
623
662
|
// agentic-learning and any future top-level skills — copy verbatim
|
|
@@ -1262,6 +1301,7 @@ if (process.env.LEARNSHIP_TEST_MODE) {
|
|
|
1262
1301
|
parseJsonc,
|
|
1263
1302
|
replacePaths,
|
|
1264
1303
|
rewriteNewProject,
|
|
1304
|
+
installClaudePlugins,
|
|
1265
1305
|
toHomePrefix,
|
|
1266
1306
|
LEARNSHIP_CODEX_MARKER,
|
|
1267
1307
|
CODEX_AGENT_SANDBOX,
|
package/gemini-extension.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "learnship",
|
|
3
|
-
"version": "1.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.
|
|
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",
|