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.
- package/.claude-plugin/plugin.json +1 -1
- package/.cursor-plugin/plugin.json +1 -1
- package/bin/install.js +7 -4
- package/gemini-extension.json +1 -1
- package/learnship/templates/agents.md +17 -6
- package/learnship/workflows/execute-phase.md +7 -1
- package/learnship/workflows/new-project.md +38 -1
- package/package.json +1 -1
|
@@ -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.
|
|
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.
|
|
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
|
-
//
|
|
662
|
-
|
|
663
|
-
|
|
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;
|
package/gemini-extension.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "learnship",
|
|
3
|
-
"version": "2.0.
|
|
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
|
|
52
|
+
### 2. Minimal Fix, Surgical Change
|
|
50
53
|
|
|
51
|
-
Fix the root cause
|
|
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
|
|
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.
|
|
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.
|
|
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','
|
|
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.
|
|
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",
|