learnship 2.0.8 → 2.0.9

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.8",
4
+ "version": "2.0.9",
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.8",
5
+ "version": "2.0.9",
6
6
  "logo": "assets/logo.png",
7
7
  "author": {
8
8
  "name": "Favio Vazquez",
package/SKILL.md CHANGED
@@ -106,6 +106,16 @@ Does .planning/PROJECT.md exist?
106
106
 
107
107
  **This gate applies to ALL messages** — bug reports, feature requests, "quick fixes", detailed specs, anything. The only exception: if the user is currently mid-ceremony in `/new-project` (i.e., they are answering your questions), their messages are workflow answers, not tasks to route.
108
108
 
109
+ ## `/new-project` Ceremony Enforcement
110
+
111
+ When running `/new-project`, these are non-negotiable hard gates. Violating any of them produces a broken project:
112
+
113
+ 1. **Research = 5 separate files.** If the user chooses research, you MUST create exactly 5 files in `.planning/research/`: `STACK.md`, `FEATURES.md`, `ARCHITECTURE.md`, `PITFALLS.md`, `SUMMARY.md`. Do NOT write a single monolithic research file. After writing all 5, run the `node -e` verification command from the workflow. If it fails, fix the files before proceeding.
114
+
115
+ 2. **AGENTS.md = copy from template.** Read `@./templates/agents.md` BEFORE writing AGENTS.md. Sections marked "copy VERBATIM" must be copied word-for-word — do not rewrite, summarize, or rephrase them. After writing, run the `node -e` verification command. If it fails, fix AGENTS.md before proceeding.
116
+
117
+ 3. **Done = STOP.** After displaying the Step 9 done banner, **STOP completely**. Do NOT automatically start `/discuss-phase 1`. Do NOT say "Let me start Phase 1" or "Now starting Phase 1." Wait for the user to type their next command.
118
+
109
119
  ## Key Behaviors
110
120
 
111
121
  - **Context efficiency**: Reference file paths rather than inlining file contents. Load context fresh when needed rather than carrying it forward.
@@ -47,9 +47,13 @@ When the user runs `/new-project`, execute these **9 mandatory steps in order**.
47
47
 
48
48
  2. **After Step 4 (PROJECT.md confirmed):** Do NOT write REQUIREMENTS.md or ROADMAP.md. First ask: "Before I write the requirements — do you want me to research the domain ecosystem first?" Wait for reply.
49
49
 
50
- 3. **After Step 7 (roadmap approved):** Do NOT display the done banner or suggest next steps. Generate AGENTS.md (Step 8) first.
50
+ 3. **Research = 5 separate files.** If the user chooses research, create exactly 5 files in `.planning/research/`: `STACK.md`, `FEATURES.md`, `ARCHITECTURE.md`, `PITFALLS.md`, `SUMMARY.md`. Do NOT write a single monolithic research file. Run the `node -e` verification command from the workflow — it must print `RESEARCH VERIFIED OK` before proceeding.
51
51
 
52
- 4. **Step 9 next step is `/discuss-phase 1` not `/plan-phase`.** The phase loop is: `discuss-phase` → `plan-phase` → `execute-phase` → `verify-work`. `discuss-phase` is mandatory first — it writes the CONTEXT.md that planning depends on.
52
+ 4. **After Step 7 (roadmap approved):** Do NOT display the done banner or suggest next steps. Generate AGENTS.md (Step 8) first.
53
+
54
+ 5. **AGENTS.md = copy from template.** Read `@./templates/agents.md` BEFORE writing. Sections marked "copy VERBATIM" (Soul, Principles, Request Routing Protocol, Platform Context, Skills, Regressions) must be copied word-for-word. Run the `node -e` verification — it must print `AGENTS.md VERIFIED OK` before proceeding.
55
+
56
+ 6. **Step 9 = STOP.** After displaying the done banner, **STOP completely**. Do NOT automatically start `/discuss-phase 1`. Do NOT say "Let me start Phase 1." Wait for the user's next message. The next step is `/discuss-phase 1` — **start here, not `/plan-phase`**. The phase loop is: `discuss-phase` → `plan-phase` → `execute-phase` → `verify-work`.
53
57
 
54
58
  **Routing protocol suspended during `/new-project`.** Every user message while the ceremony is in progress is an answer to a workflow question, not a task to route.
55
59
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "learnship",
3
- "version": "2.0.8",
3
+ "version": "2.0.9",
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/",
@@ -298,46 +298,56 @@ Ask: **"Before I write the requirements — do you want me to research the domai
298
298
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
299
299
  ```
300
300
 
301
- Run 4 research passes sequentially. Each writes a file to `.planning/research/` with **mandatory sections** as specified below. Do not write freeform prose each file must contain the required `##` headers.
301
+ **You MUST create exactly 5 separate markdown files.** Do NOT write a single monolithic research file. Do NOT combine multiple files into one. Each file is a separate write operation.
302
302
 
303
- 1. **STACK.md** Standard tech stack for this domain
304
- - Required sections: `## Recommended Stack`, `## Alternatives Considered`, `## What NOT to Use` (with reasons), `## Versions`
305
- 2. **FEATURES.md** — What features exist in this domain
306
- - Required sections: `## Table Stakes` (must-haves), `## Differentiators` (nice-to-haves), `## Anti-Features` (what to avoid)
307
- 3. **ARCHITECTURE.md** — How systems in this domain are typically structured
308
- - Required sections: `## Component Boundaries`, `## Data Flow`, `## Build Order` (suggested sequence), `## Integration Points`
309
- 4. **PITFALLS.md** — Common mistakes and prevention strategies
310
- - Required sections: `## Common Mistakes`, `## Warning Signs`, `## Prevention Strategies`
303
+ Create the research directory first:
311
304
 
312
- After all four complete, synthesize into `.planning/research/SUMMARY.md`:
313
- - Required sections: `## Recommended Stack`, `## Table Stakes Features`, `## Key Architecture Decisions`, `## Top Pitfalls`
305
+ ```bash
306
+ node -e "require('fs').mkdirSync('.planning/research',{recursive:true})"
307
+ ```
308
+
309
+ Now create each file one at a time. After writing each file, move to the next.
310
+
311
+ **File 1 of 5 — Write `.planning/research/STACK.md` now:**
312
+ Research the standard tech stack for this domain. The file MUST contain these exact `##` headers:
313
+ - `## Recommended Stack`
314
+ - `## Alternatives Considered`
315
+ - `## What NOT to Use` (with reasons)
316
+ - `## Versions`
317
+
318
+ **File 2 of 5 — Write `.planning/research/FEATURES.md` now:**
319
+ Research what features exist in this domain. The file MUST contain these exact `##` headers:
320
+ - `## Table Stakes` (must-haves)
321
+ - `## Differentiators` (nice-to-haves)
322
+ - `## Anti-Features` (what to avoid)
323
+
324
+ **File 3 of 5 — Write `.planning/research/ARCHITECTURE.md` now:**
325
+ Research how systems in this domain are typically structured. The file MUST contain these exact `##` headers:
326
+ - `## Component Boundaries`
327
+ - `## Data Flow`
328
+ - `## Build Order` (suggested sequence)
329
+ - `## Integration Points`
330
+
331
+ **File 4 of 5 — Write `.planning/research/PITFALLS.md` now:**
332
+ Research common mistakes and prevention strategies. The file MUST contain these exact `##` headers:
333
+ - `## Common Mistakes`
334
+ - `## Warning Signs`
335
+ - `## Prevention Strategies`
336
+
337
+ **File 5 of 5 — Write `.planning/research/SUMMARY.md` now:**
338
+ Synthesize the 4 files above into a summary. The file MUST contain these exact `##` headers:
339
+ - `## Recommended Stack`
340
+ - `## Table Stakes Features`
341
+ - `## Key Architecture Decisions`
342
+ - `## Top Pitfalls`
314
343
 
315
- **Post-research verification (cross-platform):**
344
+ > 🔴 **HARD GATE — Run this verification command now. Do not skip it. Do not proceed without running it.**
316
345
 
317
346
  ```bash
318
- node -e "
319
- const fs=require('fs'),path=require('path');
320
- const dir='.planning/research/';
321
- const checks={
322
- 'STACK.md':['Recommended Stack','What NOT to Use'],
323
- 'FEATURES.md':['Table Stakes','Differentiators'],
324
- 'ARCHITECTURE.md':['Component Boundaries','Data Flow'],
325
- 'PITFALLS.md':['Common Mistakes','Prevention Strategies'],
326
- 'SUMMARY.md':['Recommended Stack','Top Pitfalls']
327
- };
328
- const missing=[];
329
- for(const[file,sections]of Object.entries(checks)){
330
- const fp=path.join(dir,file);
331
- if(!fs.existsSync(fp)){missing.push(file+' MISSING');continue;}
332
- const c=fs.readFileSync(fp,'utf8');
333
- for(const s of sections){if(!c.includes('## '+s))missing.push(file+': missing ## '+s);}
334
- }
335
- if(missing.length){console.log('RESEARCH INCOMPLETE:\\n'+missing.join('\\n'));process.exit(1);}
336
- console.log('RESEARCH VERIFIED OK');
337
- "
347
+ node -e "const fs=require('fs'),path=require('path');const dir='.planning/research/';const checks={'STACK.md':['Recommended Stack','What NOT to Use'],'FEATURES.md':['Table Stakes','Differentiators'],'ARCHITECTURE.md':['Component Boundaries','Data Flow'],'PITFALLS.md':['Common Mistakes','Prevention Strategies'],'SUMMARY.md':['Recommended Stack','Top Pitfalls']};const missing=[];for(const[file,sections]of Object.entries(checks)){const fp=path.join(dir,file);if(!fs.existsSync(fp)){missing.push(file+' MISSING');continue;}const c=fs.readFileSync(fp,'utf8');for(const s of sections){if(!c.includes('## '+s))missing.push(file+': missing ## '+s);}}if(missing.length){console.log('RESEARCH INCOMPLETE:\\n'+missing.join('\\n'));process.exit(1);}console.log('RESEARCH VERIFIED OK — all 5 files present with required sections');"
338
348
  ```
339
349
 
340
- > 🛑 If verification fails, fix the missing files or sections before proceeding. Do not skip research verification.
350
+ > 🛑 **If the command prints `RESEARCH INCOMPLETE` or exits with code 1:** Go back and create or fix the missing files. Then run the verification again. You MUST see `RESEARCH VERIFIED OK` before continuing. Do NOT proceed to Step 6 without a passing verification.
341
351
 
342
352
  Display key findings:
343
353
  ```
@@ -435,63 +445,49 @@ git add .planning/ROADMAP.md .planning/STATE.md .planning/REQUIREMENTS.md && git
435
445
 
436
446
  > **🔴 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.**
437
447
 
438
- Start by reading `@./templates/agents.md` in full. This is the **canonical template**. The generated AGENTS.md must follow its exact structure.
439
-
440
- **Sections to copy VERBATIM (do not rewrite, do not summarize, do not rephrase):**
441
- - `## Soul — Who We Are Together` (entire section including Voice & Character and Relationship Model)
442
- - `## Principles How We Operate` (all 10 principles, verbatim)
443
- - `## Platform Context` (the learnship key facts block, verbatim)
444
- - `## SkillsOperational Knowledge` (CHANGELOG Discipline and Decisions Register, verbatim)
445
- - `## RegressionsWhat Broke and What We Learned` (the empty starter block, verbatim)
446
-
447
- **Sections to FILL IN with project-specific information:**
448
-
449
- **Title** Replace `[PROJECT NAME]` with the actual project name.
450
-
451
- **Current Phase** block:
452
- ```
453
- Milestone: v1.0 — [Milestone Name from PROJECT.md]
454
- Phase: 1 [Phase 1 name from ROADMAP.md]
455
- Status: planning
456
- Last updated: [today's date]
457
- ```
458
-
459
- **Project Structure** — derive from the project description and any existing directories:
460
- ```bash
461
- find . -maxdepth 2 -not -path './.git/*' -not -path './node_modules/*' -not -path './.planning/*' -type d | sort | head -20
462
- # PowerShell: Get-ChildItem -Directory -Recurse -Depth 2 | Where-Object { $_.FullName -notmatch '\.git|node_modules|\.planning' } | Select-Object -First 20
463
- ```
464
-
465
- Populate the `## Project Structure` tree with real directories and one-line descriptions.
466
-
467
- **Tech Stack**use the research output (if research was run) or the user's stated stack:
468
- - Language + version
469
- - Framework
470
- - Key libraries (the 3-5 most important)
471
- - How to run the dev server
472
- - How to run tests
473
-
474
- **You may ADD project-specific sections** (e.g., Conventions, Content Sources, Definition of Done) **after** the Tech Stack section and **before** Skills. But you must NEVER remove, rename, or replace the template sections listed above.
475
-
476
- **Verification checklist (run before committing):**
477
- - [ ] File starts with `# AGENTS.md — [Project Name]`
478
- - [ ] `## Soul — Who We Are Together` exists with Voice & Character and Relationship Model
479
- - [ ] `## Principles — How We Operate` exists with all 10 numbered principles
480
- - [ ] `## Request Routing Protocol` exists with decision tree
481
- - [ ] `## Platform Context` exists with the 7-step phase loop
482
- - [ ] `## Current Phase` exists with milestone, phase, status, and date
483
- - [ ] `## Project Structure` exists with a directory tree
484
- - [ ] `## Tech Stack` exists with language, framework, libraries, dev server, tests
485
- - [ ] `## Skills — Operational Knowledge` exists with CHANGELOG Discipline and Decisions Register
486
- - [ ] `## Regressions — What Broke and What We Learned` exists at the end
487
-
488
- **Automated verification (cross-platform — run this, do not skip):**
448
+ **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.
449
+
450
+ > 🛑 **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.
451
+
452
+ **Substep 8bWrite AGENTS.md.** Create the file `AGENTS.md` at the project root. The file structure MUST follow the template exactly. Here is the required section order:
453
+
454
+ 1. `# AGENTS.md[Project Name]` replace `[PROJECT NAME]` with the actual project name
455
+ 2. `## SoulWho We Are Together` **copy VERBATIM from the template** including all of Voice & Character and Relationship Model. Do not rewrite, summarize, or rephrase any of it.
456
+ 3. `## Principles — How We Operate` — **copy VERBATIM from the template**. All 10 numbered principles, word for word.
457
+ 4. `## Request Routing Protocol` — **copy VERBATIM from the template**. The entire decision tree and examples.
458
+ 5. `## Platform Context` — **copy VERBATIM from the template**. The learnship key facts block.
459
+ 6. `## Current Phase` **FILL IN** with project-specific data:
460
+ ```
461
+ **Milestone:** v1.0 — [Milestone Name from PROJECT.md]
462
+ **Phase:** 1 — [Phase 1 name from ROADMAP.md]
463
+ **Status:** planning
464
+ **Last updated:** [today's date]
465
+ ```
466
+ 7. `## Project Structure` — **FILL IN** by scanning existing directories:
467
+ ```bash
468
+ node -e "const{readdirSync,statSync}=require('fs'),{join}=require('path');const walk=(d,dep=0)=>{if(dep>2)return;try{readdirSync(d).filter(f=>!f.startsWith('.')&&f!=='node_modules').forEach(f=>{const p=join(d,f);if(statSync(p).isDirectory()){console.log(' '.repeat(dep*2)+'├── '+f+'/');walk(p,dep+1);}});}catch{}};walk('.');"
469
+ ```
470
+ Populate the tree with real directories and one-line descriptions.
471
+ 8. `## Tech Stack` **FILL IN** using research output (if available) or user's stated stack:
472
+ - Language + version
473
+ - Framework
474
+ - Key libraries (the 3-5 most important)
475
+ - How to run the dev server
476
+ - How to run tests
477
+ 9. `## Skills Operational Knowledge` **copy VERBATIM from the template**. CHANGELOG Discipline, Decisions Register, and Solutions Store sections.
478
+ 10. `## Regressions — What Broke and What We Learned` — **copy VERBATIM from the template**. The empty starter block.
479
+
480
+ **You may ADD project-specific sections** (e.g., Conventions, Content Sources, Definition of Done) **after** Tech Stack and **before** Skills. But you must NEVER remove, rename, or replace the 10 sections listed above.
481
+
482
+ **Substep 8c Verify AGENTS.md.** Run this command now. Do not skip it.
483
+
484
+ > 🔴 **HARD GATE Run this verification command now. Do not skip it. Do not proceed without running it.**
489
485
 
490
486
  ```bash
491
- 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);}console.log('AGENTS.md VERIFIED OK — all '+required.length+' mandatory sections present');"
487
+ 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');"
492
488
  ```
493
489
 
494
- > 🛑 If verification fails, fix the missing sections before committing. Do NOT proceed to Step 9 with an incomplete AGENTS.md. Re-read `@./templates/agents.md` and add the missing sections.
490
+ > 🛑 **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.
495
491
 
496
492
  **If `commit_mode` is `auto`:**
497
493
  ```bash
@@ -502,6 +498,8 @@ git add AGENTS.md && git commit -m "docs: add AGENTS.md with project context"
502
498
 
503
499
  ## Step 9: Done
504
500
 
501
+ Display this banner and then **STOP. Do not continue. Do not run any other workflow. Do not start Phase 1.**
502
+
505
503
  ```
506
504
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
507
505
  learnship ► PROJECT INITIALIZED ✓
@@ -534,16 +532,26 @@ After verify-work passes: `/review` for multi-persona code review, `/ship` to te
534
532
  > **Platform detected:** `[PLATFORM]` — parallelization is `[true/false]`
535
533
  ```
536
534
 
535
+ > 🔴 **HARD STOP — `/new-project` is now complete. This workflow is FINISHED.**
536
+ >
537
+ > **Do NOT automatically start `/discuss-phase 1`.** Do NOT run any phase workflow. Do NOT begin implementing Phase 1. Do NOT say "Let me start Phase 1" or "Now starting Phase 1" or anything similar.
538
+ >
539
+ > The user must explicitly type `/discuss-phase 1` (or another command) in a **new message** to continue. Your only job now is to display the banner above and wait.
540
+ >
541
+ > If the user's next message is a new task or question, apply the Request Routing Protocol from AGENTS.md — the routing suspension from Step 1 is now lifted.
542
+
537
543
  ---
538
544
 
539
545
  ## Learning Checkpoint
540
546
 
541
547
  Read `learning_mode` from `.planning/config.json`.
542
548
 
543
- **If `auto`:** Offer this now:
549
+ **If `auto`:** Offer this after the done banner (still within this message, but AFTER the banner):
544
550
 
545
551
  > 💡 **Learning moment:** You've just defined what you're building. Want to validate your mental model before coding starts?
546
552
  >
547
553
  > `@agentic-learning brainstorm [your project topic]` — Talk through the design and surface any blind spots before the first line of code.
548
554
 
549
555
  **If `manual`:** Add a quiet note: *"Tip: `@agentic-learning brainstorm [topic]` is available whenever you want to think through the design."*
556
+
557
+ **After displaying the learning checkpoint, STOP. Wait for the user's next message.**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "learnship",
3
- "version": "2.0.8",
3
+ "version": "2.0.9",
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",