learnship 2.0.10 → 2.0.11

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 — 49 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": "2.0.10",
4
+ "version": "2.0.11",
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 — 49 structured workflows, persistent memory across sessions, integrated learning partner, and impeccable UI design system.",
5
- "version": "2.0.10",
5
+ "version": "2.0.11",
6
6
  "logo": "assets/logo.png",
7
7
  "author": {
8
8
  "name": "Favio Vazquez",
package/bin/install.js CHANGED
@@ -658,10 +658,13 @@ function rewriteNewProject(content, platform) {
658
658
  content = content.replace('<!-- LEARNSHIP_PARALLEL_BLOCK -->', parallelBlock);
659
659
 
660
660
  // Platform-specific AGENTS.md note
661
- // Gemini CLI reads GEMINI.md automatically but NOT AGENTS.md — copy it so sessions have context
662
- const agentsMdNote = platform === 'gemini'
663
- ? `> **Gemini CLI** reads \`GEMINI.md\` automatically at session start, not \`AGENTS.md\`. Copy it now so every future session has project context:\n> \`\`\`bash\n> cp AGENTS.md GEMINI.md\n> git add GEMINI.md && git commit -m "docs: add GEMINI.md for Gemini CLI auto-loading"\n> \`\`\``
664
- : '';
661
+ // Claude Code reads CLAUDE.md as primary; Gemini CLI reads GEMINI.md — copy so sessions have context
662
+ let agentsMdNote = '';
663
+ if (platform === 'claude') {
664
+ agentsMdNote = `> **Claude Code** reads \`CLAUDE.md\` as its primary context file. Copy AGENTS.md now so every future session has project context:\n> \`\`\`bash\n> cp AGENTS.md CLAUDE.md\n> git add CLAUDE.md && git commit -m "docs: add CLAUDE.md for Claude Code auto-loading"\n> \`\`\`\n>\n> **Keep them in sync:** Whenever you update AGENTS.md (e.g. via \`execute-phase\`), also update CLAUDE.md: \`cp AGENTS.md CLAUDE.md\``;
665
+ } else if (platform === 'gemini') {
666
+ agentsMdNote = `> **Gemini CLI** reads \`GEMINI.md\` automatically at session start, not \`AGENTS.md\`. Copy it now so every future session has project context:\n> \`\`\`bash\n> cp AGENTS.md GEMINI.md\n> git add GEMINI.md && git commit -m "docs: add GEMINI.md for Gemini CLI auto-loading"\n> \`\`\`\n>\n> **Keep them in sync:** Whenever you update AGENTS.md (e.g. via \`execute-phase\`), also update GEMINI.md: \`cp AGENTS.md GEMINI.md\``;
667
+ }
665
668
  content = content.replace('<!-- LEARNSHIP_AGENTSMD_PLATFORM_NOTE -->', agentsMdNote);
666
669
 
667
670
  return content;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "learnship",
3
- "version": "2.0.10",
3
+ "version": "2.0.11",
4
4
  "description": "Agentic engineering done right — 49 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/",
@@ -21,6 +21,9 @@ collaborators with different strengths.
21
21
  The "why" matters more than the "what."
22
22
  - **Domain-aware, not domain-faking.** Know the domain of this project. When uncertain about
23
23
  domain concepts, say so rather than hallucinate. Getting it wrong here has real consequences.
24
+ - **Stop when confused, not after.** If something is ambiguous, surface it immediately. Present
25
+ the interpretations. Ask which one. Don't pick silently and run with it — that's how wrong
26
+ assumptions become wrong code.
24
27
  - **Learnings are first-class.** Every significant fix gets a "why it broke" and "what we
25
28
  learned." This is non-negotiable.
26
29
  - **Swearing is allowed when it lands.** Don't force it. Don't avoid it.
@@ -46,9 +49,13 @@ Decision-making heuristics for navigating ambiguity.
46
49
  When something is hard to implement, that's information about the design — not just an
47
50
  obstacle to power through. Investigate the resistance before routing around it.
48
51
 
49
- ### 2. Minimal Upstream Fix Over Downstream Workaround
52
+ ### 2. Minimal Fix, Surgical Change
50
53
 
51
- Fix the root cause. Don't patch symptoms. One fix, one place.
54
+ Fix the root cause, not the symptoms. One fix, one place. Touch only what you must — don't
55
+ "improve" adjacent code, comments, or formatting. Don't refactor things that aren't broken.
56
+ Match existing style, even if you'd do it differently. Every changed line should trace directly
57
+ to the request. When your changes create orphans (unused imports, dead variables), clean those
58
+ up — but don't remove pre-existing dead code unless asked.
52
59
 
53
60
  ### 3. Preserve Real-World Signal
54
61
 
@@ -70,15 +77,19 @@ future guardrails.
70
77
 
71
78
  When we disagree, the motivation is wanting the project to succeed — not being right.
72
79
 
73
- ### 7. One Moving Part at a Time
80
+ ### 7. One Thing at a Time, Nothing Extra
74
81
 
75
82
  When debugging or adding features, change one thing, verify, then move to the next.
76
- Multi-variable changes obscure what actually fixed the problem.
83
+ Multi-variable changes obscure what actually fixed the problem. Write the minimum code
84
+ that solves the stated problem — no speculative features, no abstractions for single-use
85
+ cases, no "flexibility" that wasn't requested. If 200 lines could be 50, rewrite.
77
86
 
78
- ### 8. Code Reads > Code Writes
87
+ ### 8. Understand First, Then Change
79
88
 
80
89
  Read existing code thoroughly before editing. Understand the current design before proposing
81
- changes. Most bugs come from not understanding what's already there. Read first, always.
90
+ changes. Most bugs come from not understanding what's already there. When something is
91
+ ambiguous and multiple interpretations exist, present them and ask — don't silently pick one.
92
+ If you're confused, stop. Name what's unclear. Ask.
82
93
 
83
94
  ### 9. Keep Copies in Sync
84
95
 
@@ -337,8 +337,14 @@ node -e "const fs=require('fs');if(!fs.existsSync('AGENTS.md')){process.exit(0);
337
337
 
338
338
  > If verification fails, restore the missing sections from `@./templates/agents.md` before committing.
339
339
 
340
+ **Sync platform-native copies (if they exist):**
341
+
342
+ ```bash
343
+ node -e "const fs=require('fs');const copies=[['CLAUDE.md','Claude Code'],['GEMINI.md','Gemini CLI']];if(!fs.existsSync('AGENTS.md'))process.exit(0);copies.forEach(([f,p])=>{if(fs.existsSync(f)){fs.copyFileSync('AGENTS.md',f);console.log('Synced AGENTS.md → '+f+' ('+p+')');}});"
344
+ ```
345
+
340
346
  ```bash
341
- git add AGENTS.md
347
+ git add AGENTS.md CLAUDE.md GEMINI.md 2>/dev/null
342
348
  git commit -m "docs: update AGENTS.md — phase [X] complete"
343
349
  ```
344
350
 
@@ -479,6 +479,43 @@ git add .planning/ROADMAP.md .planning/STATE.md .planning/REQUIREMENTS.md && git
479
479
 
480
480
  > **🔴 MANDATORY — This step must always be completed. Do not skip it, do not defer it, do not move to Step 9 without writing AGENTS.md to the project root. AGENTS.md is the persistent memory file that every future session depends on.**
481
481
 
482
+ **Substep 8a-pre — Check for existing context files.** Run this command now:
483
+
484
+ ```bash
485
+ node -e "const fs=require('fs');const files=['AGENTS.md','CLAUDE.md','GEMINI.md','.cursorrules'];const found=files.filter(f=>fs.existsSync(f));if(found.length){console.log('EXISTING: '+found.join(', '));}else{console.log('NONE FOUND');}"
486
+ ```
487
+
488
+ **If the command prints `EXISTING:`** — Ask the user:
489
+
490
+ ```
491
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
492
+ learnship ► EXISTING CONTEXT FILES DETECTED
493
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
494
+
495
+ I found existing context file(s): [list from command output]
496
+
497
+ What would you like to do?
498
+
499
+ 1. Replace (recommended for new learnship projects)
500
+ → Overwrite with learnship's AGENTS.md
501
+
502
+ 2. Merge
503
+ → Keep your existing content, add learnship sections
504
+
505
+ 3. Keep separate
506
+ → Write AGENTS.md alongside your existing file(s)
507
+
508
+ Reply 1, 2, or 3.
509
+ ```
510
+
511
+ > 🔴 **HARD GATE — Wait for the user's reply. Do NOT auto-decide.**
512
+
513
+ - **Replace (1):** Continue to substep 8a. The old files will be overwritten.
514
+ - **Merge (2):** Read the existing file(s) first, then in substep 8b, append learnship sections that are missing (Soul, Principles, Request Routing Protocol, etc.) while preserving the user's existing content at the top.
515
+ - **Keep separate (3):** Continue to substep 8a. Write `AGENTS.md` as a new file. Leave existing files untouched.
516
+
517
+ **If the command prints `NONE FOUND`:** Continue directly to substep 8a.
518
+
482
519
  **Substep 8a — Read the template.** Read `@./templates/agents.md` in full RIGHT NOW before writing anything. This is the canonical template. You need its exact content.
483
520
 
484
521
  > 🛑 **HARD GATE:** Did you just read `@./templates/agents.md`? If not, go back and read it now. The next substep requires copying sections verbatim from the template. You cannot do that without reading it first.
@@ -518,7 +555,7 @@ git add .planning/ROADMAP.md .planning/STATE.md .planning/REQUIREMENTS.md && git
518
555
  > 🔴 **HARD GATE — Run this verification command now. Do not skip it. Do not proceed without running it.**
519
556
 
520
557
  ```bash
521
- node -e "const fs=require('fs');if(!fs.existsSync('AGENTS.md')){console.log('AGENTS.md NOT FOUND');process.exit(1);}const f=fs.readFileSync('AGENTS.md','utf8');const required=['Soul','Principles','Request Routing Protocol','Platform Context','Current Phase','Project Structure','Tech Stack','Skills','Regressions'];const missing=required.filter(s=>!f.includes('## '+s));if(missing.length){console.log('AGENTS.md INCOMPLETE — missing sections:\\n'+missing.map(s=>' ## '+s).join('\\n'));process.exit(1);}const verbatim=['pair programmer','Direct, no fluff','Have opinions','Friction Is Signal','Minimal Upstream Fix','decision tree'];const missingV=verbatim.filter(s=>!f.includes(s));if(missingV.length){console.log('AGENTS.md TEMPLATE VIOLATION — these verbatim phrases are missing (did you rewrite instead of copy?):\\n'+missingV.join('\\n'));process.exit(1);}console.log('AGENTS.md VERIFIED OK — all '+required.length+' sections present, verbatim content intact');"
558
+ node -e "const fs=require('fs');if(!fs.existsSync('AGENTS.md')){console.log('AGENTS.md NOT FOUND');process.exit(1);}const f=fs.readFileSync('AGENTS.md','utf8');const required=['Soul','Principles','Request Routing Protocol','Platform Context','Current Phase','Project Structure','Tech Stack','Skills','Regressions'];const missing=required.filter(s=>!f.includes('## '+s));if(missing.length){console.log('AGENTS.md INCOMPLETE — missing sections:\\n'+missing.map(s=>' ## '+s).join('\\n'));process.exit(1);}const verbatim=['pair programmer','Direct, no fluff','Have opinions','Friction Is Signal','Surgical Change','Nothing Extra','Understand First','decision tree'];const missingV=verbatim.filter(s=>!f.includes(s));if(missingV.length){console.log('AGENTS.md TEMPLATE VIOLATION — these verbatim phrases are missing (did you rewrite instead of copy?):\\n'+missingV.join('\\n'));process.exit(1);}console.log('AGENTS.md VERIFIED OK — all '+required.length+' sections present, verbatim content intact');"
522
559
  ```
523
560
 
524
561
  > 🛑 **If the command prints `INCOMPLETE` or `TEMPLATE VIOLATION` or exits with code 1:** The AGENTS.md is broken. Re-read `@./templates/agents.md` and fix the missing sections or restore the verbatim content. Run the verification again. You MUST see `AGENTS.md VERIFIED OK` before continuing to Step 9.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "learnship",
3
- "version": "2.0.10",
3
+ "version": "2.0.11",
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",