learnship 1.9.18 → 1.9.20
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.
|
|
4
|
+
"version": "1.9.20",
|
|
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.20",
|
|
6
6
|
"logo": "assets/logo.png",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "Favio Vazquez",
|
package/SKILL.md
CHANGED
|
@@ -70,6 +70,26 @@ Learning checkpoints:
|
|
|
70
70
|
|
|
71
71
|
The `impeccable` skill suite is always available for any UI work. Use its steering commands (`/audit`, `/critique`, `/polish`, `/colorize`, `/animate`, `/bolder`, `/quieter`, `/distill`, `/clarify`, `/optimize`, `/harden`, `/delight`, `/extract`, `/adapt`, `/onboard`, `/normalize`, `/teach-impeccable`) when reviewing or building user-facing interfaces.
|
|
72
72
|
|
|
73
|
+
## Mandatory Gate — No Project, No Work
|
|
74
|
+
|
|
75
|
+
**Before responding to any user message, check:**
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
Does .planning/PROJECT.md exist?
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
- **No** → The project has not been initialized. **Do NOT implement anything.** Tell the user:
|
|
82
|
+
|
|
83
|
+
> "This project hasn't been set up with learnship yet. Run `/new-project` to initialize it — that takes about 10 minutes and sets up the spec, roadmap, and phase structure before any code gets written.
|
|
84
|
+
>
|
|
85
|
+
> This is not optional: working without a spec means building the wrong thing. `/new-project` first."
|
|
86
|
+
|
|
87
|
+
Then stop. Do not offer to help with the task. Do not say "but I can also just fix it directly." Wait for the user to run `/new-project`.
|
|
88
|
+
|
|
89
|
+
- **Yes** → Continue normally. Apply the workflow routing logic from `AGENTS.md`.
|
|
90
|
+
|
|
91
|
+
**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.
|
|
92
|
+
|
|
73
93
|
## Key Behaviors
|
|
74
94
|
|
|
75
95
|
- **Context efficiency**: Reference file paths rather than inlining file contents. Load context fresh when needed rather than carrying it forward.
|
package/gemini-extension.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "learnship",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.20",
|
|
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/",
|
|
@@ -100,6 +100,10 @@ When a user sends a message — whether it's a vague idea, a specific bug report
|
|
|
100
100
|
|
|
101
101
|
### Decision tree — apply in order:
|
|
102
102
|
|
|
103
|
+
**0. Is `/new-project` currently in progress?**
|
|
104
|
+
|
|
105
|
+
If `.planning/PROJECT.md` does NOT exist but you are currently running `/new-project` (i.e., you have asked "What do you want to build?" and are waiting for answers, or you are in any step of the new-project ceremony): **the user's message is an answer to your workflow question, not a task to route.** Do NOT apply the routing protocol. Continue the `/new-project` ceremony from where you left off.
|
|
106
|
+
|
|
103
107
|
**1. Is there a `.planning/PROJECT.md`?**
|
|
104
108
|
- **No** → Stop. Tell the user: "No project found. Run `/new-project` to initialize." Do nothing else.
|
|
105
109
|
- **Yes** → Continue to step 2.
|
|
@@ -127,6 +131,7 @@ Always tell the user which workflow you're about to invoke and why, then wait fo
|
|
|
127
131
|
- User says "the login button is broken" → ❌ Don't fix it directly → ✅ Route to `/quick`
|
|
128
132
|
- User says "I want to add dark mode" → ❌ Don't start implementing → ✅ Route to `discuss-phase`
|
|
129
133
|
- User pastes a detailed spec → ❌ Don't treat it as a command to execute → ✅ Classify size, propose workflow, wait for yes
|
|
134
|
+
- `/new-project` asked "What do you want to build?" and user replies with a detailed description → ❌ Don't treat as a task to route → ✅ It is ANSWER_1. Record it and ask Exchange 2.
|
|
130
135
|
|
|
131
136
|
---
|
|
132
137
|
|
|
@@ -10,6 +10,8 @@ Initialize a new project with full context gathering, optional research, require
|
|
|
10
10
|
|
|
11
11
|
<!-- LEARNSHIP_PLATFORM_LABEL -->
|
|
12
12
|
|
|
13
|
+
> **Routing protocol suspended.** While this workflow is running, every user message is an answer to a workflow question — not a task to route. Do NOT apply the request routing protocol until `/new-project` is fully complete and `.planning/PROJECT.md` exists.
|
|
14
|
+
|
|
13
15
|
Check if `.planning/PROJECT.md` already exists:
|
|
14
16
|
|
|
15
17
|
```bash
|
|
@@ -18,6 +20,19 @@ python3 -c "import os; print('EXISTS' if os.path.exists('.planning/PROJECT.md')
|
|
|
18
20
|
|
|
19
21
|
**If EXISTS:** Stop. Project already initialized. Use the `progress` workflow to see where you are.
|
|
20
22
|
|
|
23
|
+
**Check for an existing codebase:**
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
python3 -c "
|
|
27
|
+
import os, pathlib
|
|
28
|
+
files = [p for p in pathlib.Path('.').rglob('*') if p.is_file() and not any(x in p.parts for x in ['.git', 'node_modules', '.planning', '__pycache__', '.venv'])]
|
|
29
|
+
print('HAS_CODE' if len(files) > 2 else 'BLANK')
|
|
30
|
+
print(f'{len(files)} files')
|
|
31
|
+
"
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**If HAS_CODE:** Note this internally as `EXISTING_CODEBASE = true`. You will scan the codebase briefly in Step 1b before questioning. Do NOT use existing code as an excuse to skip or shorten the questioning ceremony — the ceremony exists precisely because you need the user's intent, not just their code.
|
|
35
|
+
|
|
21
36
|
Check if git is initialized:
|
|
22
37
|
|
|
23
38
|
```bash
|
|
@@ -39,6 +54,16 @@ Create the planning directory:
|
|
|
39
54
|
mkdir -p .planning/research
|
|
40
55
|
```
|
|
41
56
|
|
|
57
|
+
## Step 1b: Existing Codebase Scan (only if EXISTING_CODEBASE = true)
|
|
58
|
+
|
|
59
|
+
If `EXISTING_CODEBASE = true`, do a quick structural scan before questioning so your follow-up questions are grounded in reality:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
find . -maxdepth 3 -not -path './.git/*' -not -path './node_modules/*' -not -path './.planning/*' -not -path './__pycache__/*' -not -path './.venv/*' | sort | head -40
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Note the tech stack, key directories, and any README content internally. Use this ONLY to ask sharper follow-up questions — never to infer the user's intent or skip ceremony steps.
|
|
66
|
+
|
|
42
67
|
## Step 2: Configuration
|
|
43
68
|
|
|
44
69
|
Ask the user the following questions to configure the project. Ask them in a conversational way — not all at once, but grouped naturally.
|
|
@@ -128,6 +153,8 @@ This step is **strictly sequential**. You must complete each numbered exchange f
|
|
|
128
153
|
Ask: **"What do you want to build?"**
|
|
129
154
|
|
|
130
155
|
> 🛑 STOP. Wait for the user's answer. Do not continue until you have received it. Record their answer internally as `ANSWER_1`.
|
|
156
|
+
>
|
|
157
|
+
> ⚠️ **A detailed answer to Exchange 1 does NOT satisfy Exchanges 2–4.** No matter how thorough ANSWER_1 is — a full paragraph, a spec dump, a wall of requirements — it is raw material for the follow-up questions, not a replacement for them. You still MUST ask Exchanges 2, 3, and 4 before proceeding to Step 4. The purpose of follow-ups is not to extract information the user forgot to mention — it is to pressure-test, sharpen, and surface blind spots in what they already said.
|
|
131
158
|
|
|
132
159
|
**Exchange 2 — First follow-up:**
|
|
133
160
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "learnship",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.20",
|
|
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",
|