learnship 1.9.6 → 1.9.8

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.6",
4
+ "version": "1.9.8",
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.6",
5
+ "version": "1.9.8",
6
6
  "logo": "assets/logo.png",
7
7
  "author": {
8
8
  "name": "Favio Vazquez",
package/bin/install.js CHANGED
@@ -497,6 +497,7 @@ function copyDir(srcDir, destDir, pathPrefix, platform) {
497
497
  } else if (entry.name.endsWith('.md')) {
498
498
  let c = fs.readFileSync(src, 'utf8');
499
499
  c = replacePaths(c, pathPrefix, platform);
500
+ if (entry.name === 'new-project.md') c = rewriteNewProject(c, platform);
500
501
  if (platform === 'opencode') c = convertToOpencode(c);
501
502
  // gemini agents converted separately; body ${VAR} escaping done there
502
503
  fs.writeFileSync(dest, c);
@@ -525,6 +526,31 @@ function replacePaths(content, pathPrefix, platform) {
525
526
  return c;
526
527
  }
527
528
 
529
+ /** Rewrite new-project.md markers with exact platform-specific content at install time */
530
+ function rewriteNewProject(content, platform) {
531
+ const dirName = getDirName(platform);
532
+ const label = getPlatformLabel(platform);
533
+
534
+ // Platform label block
535
+ const platformLabel = `You are running on **${label}**. Platform config directory: \`${dirName}/\``;
536
+ content = content.replace('<!-- LEARNSHIP_PLATFORM_LABEL -->', platformLabel);
537
+
538
+ // Gitignore command — exact single line, no conditionals
539
+ const gitignoreCmd = `grep -q '${dirName}/' .gitignore 2>/dev/null || echo '${dirName}/' >> .gitignore`;
540
+ content = content.replace('<!-- LEARNSHIP_GITIGNORE_CMD -->', gitignoreCmd);
541
+
542
+ // Parallel execution block — present question on all platforms except Windsurf
543
+ let parallelBlock;
544
+ if (platform === 'windsurf') {
545
+ parallelBlock = `**Group D — Parallel execution:**\n\nWindsurf does not support real subagents. Parallelization is automatically set to \`false\`.`;
546
+ } else {
547
+ parallelBlock = `**Group D — Parallel execution:**\n\n${label} supports real 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.`;
548
+ }
549
+ content = content.replace('<!-- LEARNSHIP_PARALLEL_BLOCK -->', parallelBlock);
550
+
551
+ return content;
552
+ }
553
+
528
554
  /** Install Claude Code / Windsurf commands (commands/learnship/ → target/commands/learnship/) */
529
555
  function installClaudeCommands(srcDir, targetDir, pathPrefix) {
530
556
  const destDir = path.join(targetDir, 'commands', 'learnship');
@@ -1235,6 +1261,7 @@ if (process.env.LEARNSHIP_TEST_MODE) {
1235
1261
  installCodexAgents,
1236
1262
  parseJsonc,
1237
1263
  replacePaths,
1264
+ rewriteNewProject,
1238
1265
  toHomePrefix,
1239
1266
  LEARNSHIP_CODEX_MARKER,
1240
1267
  CODEX_AGENT_SANDBOX,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "learnship",
3
- "version": "1.9.6",
3
+ "version": "1.9.8",
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/",
@@ -8,38 +8,7 @@ Initialize a new project with full context gathering, optional research, require
8
8
 
9
9
  ## Step 1: Setup
10
10
 
11
- **Detect the current platform** using environment variables and known platform indicators:
12
-
13
- ```bash
14
- # Detect platform via environment variables set by each AI tool
15
- if [ -n "$CLAUDE_CONFIG_DIR" ] || [ -n "$ANTHROPIC_API_KEY" ] || command -v claude >/dev/null 2>&1; then
16
- echo "CLAUDE"
17
- elif [ -n "$OPENCODE_CONFIG_DIR" ] || command -v opencode >/dev/null 2>&1; then
18
- echo "OPENCODE"
19
- elif [ -n "$GEMINI_API_KEY" ] || command -v gemini >/dev/null 2>&1; then
20
- echo "GEMINI"
21
- elif [ -n "$OPENAI_API_KEY" ] && command -v codex >/dev/null 2>&1; then
22
- echo "CODEX"
23
- elif [ -d "$HOME/.codeium" ] || [ -n "$WINDSURF_CONFIG_DIR" ]; then
24
- echo "WINDSURF"
25
- else
26
- echo "UNKNOWN"
27
- fi
28
- ```
29
-
30
- **If result is `UNKNOWN`:** Ask the user directly: "Which platform are you running? (Windsurf / Claude Code / OpenCode / Gemini CLI / Codex CLI)"
31
-
32
- Set `PLATFORM` to the detected value.
33
-
34
- Platform determines:
35
- - Which directory to add to `.gitignore` (so AI config files aren't tracked)
36
- - Whether to ask the parallelization question (Group D below)
37
- - The gitignore directory by platform:
38
- - **Windsurf** → `.windsurf/`
39
- - **Claude Code** → `.claude/`
40
- - **OpenCode** → `.opencode/`
41
- - **Gemini CLI** → `.gemini/`
42
- - **Codex CLI** → `.codex/`
11
+ <!-- LEARNSHIP_PLATFORM_LABEL -->
43
12
 
44
13
  Check if `.planning/PROJECT.md` already exists:
45
14
 
@@ -60,22 +29,11 @@ test -d .git && echo "HAS_GIT" || echo "NO_GIT"
60
29
  git init
61
30
  ```
62
31
 
63
- Add the platform config directory to `.gitignore` so AI platform files are not tracked in the project repo. Use the platform-specific directory detected above:
32
+ Add the platform config directory to `.gitignore` so AI platform files are not tracked in the project repo:
64
33
  ```bash
65
- # For Claude Code:
66
- grep -q '.claude/' .gitignore 2>/dev/null || echo '.claude/' >> .gitignore
67
- # For Windsurf:
68
- # grep -q '.windsurf/' .gitignore 2>/dev/null || echo '.windsurf/' >> .gitignore
69
- # For OpenCode:
70
- # grep -q '.opencode/' .gitignore 2>/dev/null || echo '.opencode/' >> .gitignore
71
- # For Gemini CLI:
72
- # grep -q '.gemini/' .gitignore 2>/dev/null || echo '.gemini/' >> .gitignore
73
- # For Codex CLI:
74
- # grep -q '.codex/' .gitignore 2>/dev/null || echo '.codex/' >> .gitignore
34
+ <!-- LEARNSHIP_GITIGNORE_CMD -->
75
35
  ```
76
36
 
77
- Run only the line matching the detected platform.
78
-
79
37
  Create the planning directory:
80
38
  ```bash
81
39
  mkdir -p .planning/research
@@ -109,15 +67,7 @@ Ask: "Which workflow agents should be enabled?"
109
67
  - **Plan Check** (recommended) — Verify plans achieve their goals before execution
110
68
  - **Verifier** (recommended) — Confirm deliverables match phase goals after execution
111
69
 
112
- **Group D — Parallel execution:**
113
-
114
- **If PLATFORM is `WINDSURF`:** Skip this question entirely. Set `parallelization: false` automatically. Windsurf does not support real subagents.
115
-
116
- **If PLATFORM is `CLAUDE`, `OPENCODE`, `GEMINI`, or `CODEX`:** Ask this question — these platforms support real subagents:
117
-
118
- Ask: "Do you want to enable parallel subagent execution?"
119
- - **No** (recommended default) — Plans execute sequentially, one at a time. Safer, easier to follow.
120
- - **Yes** — Each independent plan in a wave gets its own dedicated subagent with a fresh context budget. Faster, but uses more tokens.
70
+ <!-- LEARNSHIP_PARALLEL_BLOCK -->
121
71
 
122
72
  Ask: "Commit planning docs to git?"
123
73
  - **Yes** (recommended) — Planning docs tracked in version control
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "learnship",
3
- "version": "1.9.6",
3
+ "version": "1.9.8",
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",