@rookiestar/eng-lang-tutor 1.1.5 → 1.1.7

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.

Potentially problematic release.


This version of @rookiestar/eng-lang-tutor might be problematic. Click here for more details.

package/SKILL.md CHANGED
@@ -250,15 +250,15 @@ The bot recognizes these natural language commands:
250
250
 
251
251
  ## Initialization Flow
252
252
 
253
- > See [templates/prompts/initialization.md](templates/prompts/initialization.md) for detailed onboarding templates.
253
+ > **CRITICAL:** You MUST follow [templates/prompts/initialization.md](templates/prompts/initialization.md) exactly. Display ALL options with numbers (1, 2, 3...). NEVER skip or abbreviate options.
254
254
 
255
- 6-step onboarding: Welcome → CEFR Level → Topic Interests → Tutor Style → Oral/Written Ratio → Schedule → Confirm
255
+ 7-step onboarding: Welcome → CEFR Level → Topic Interests → Tutor Style → Oral/Written Ratio → Schedule → Voice Teaching → Confirm
256
256
 
257
- **Step 6 Completion:** Set `initialized=true` + Create cron jobs for keypoint/quiz push times.
257
+ **Step 7 Completion:** Set `initialized=true` + Create cron jobs for keypoint/quiz push times.
258
258
 
259
259
  **State Fields:**
260
260
  - `initialized`: Boolean - Whether user completed onboarding
261
- - `onboarding_step`: Integer (0-6) - Current step
261
+ - `onboarding_step`: Integer (0-7) - Current step
262
262
 
263
263
  ---
264
264
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rookiestar/eng-lang-tutor",
3
- "version": "1.1.5",
3
+ "version": "1.1.7",
4
4
  "description": "English language tutor skill for OpenClaw - Learn authentic American English expressions with gamification",
5
5
  "keywords": [
6
6
  "english",
@@ -20,7 +20,7 @@ This documentation has been split into focused modules for easier navigation:
20
20
  |------|---------|
21
21
  | [prompts/keypoint_generation.md](prompts/keypoint_generation.md) | Knowledge point generation template, topic resources |
22
22
  | [prompts/quiz_generation.md](prompts/quiz_generation.md) | Quiz generation template with question types |
23
- | [prompts/initialization.md](prompts/initialization.md) | 6-step onboarding flow templates |
23
+ | [prompts/initialization.md](prompts/initialization.md) | 7-step onboarding flow templates |
24
24
 
25
25
  ### Display Templates
26
26
  | File | Purpose |
@@ -1,10 +1,16 @@
1
1
  # Initialization Flow Templates
2
2
 
3
- > Templates for the 6-step onboarding process when a new user starts.
3
+ > Templates for the 7-step onboarding process when a new user starts.
4
4
 
5
5
  **Related Files:**
6
6
  - [shared_enums.md](shared_enums.md) - CEFR levels, topics, tutor styles
7
7
 
8
+ **IMPORTANT Display Rules:**
9
+ - Every step MUST display ALL options with numbers (1, 2, 3...)
10
+ - Every step MUST show the recommended/default option clearly
11
+ - Model MUST NOT skip any options or abbreviate the list
12
+ - User can reply with number or text (both should work)
13
+
8
14
  ---
9
15
 
10
16
  ## Step 0: Welcome Message
@@ -31,19 +37,27 @@
31
37
  "type": "init_cefr",
32
38
  "step": 1,
33
39
  "display": {
34
- "title": "📊 Step 1/5: Your English Level",
40
+ "title": "📊 Step 1/7: Your English Level",
35
41
  "message": "What's your current English level?",
36
42
  "options": [
37
- "**A1-A2**: Beginner - Basic conversations, everyday words",
38
- "**B1-B2**: Intermediate - Work conversations, some idioms",
39
- "**C1-C2**: Advanced - Complex topics, nuanced expressions"
43
+ "**1.** A1-A2 - Beginner: Basic conversations, everyday words",
44
+ "**2.** B1-B2 - Intermediate: Work conversations, some idioms ⭐ Recommended",
45
+ "**3.** C1-C2 - Advanced: Complex topics, nuanced expressions"
40
46
  ],
41
- "prompt": "Reply with your level (e.g., **B1**, **B2**, **C1**)",
47
+ "default": "B1",
48
+ "prompt": "Reply with a number (1-3) or level (e.g., **2** or **B1**)",
42
49
  "hint": "💡 Not sure? Most working professionals are B1-B2. You can change this later."
43
50
  }
44
51
  }
45
52
  ```
46
53
 
54
+ **Input Mapping:**
55
+ | User Input | Value |
56
+ |------------|-------|
57
+ | 1, A1, A2, beginner | A2 |
58
+ | 2, B1, B2, intermediate | B1 |
59
+ | 3, C1, C2, advanced | C1 |
60
+
47
61
  ---
48
62
 
49
63
  ## Step 2: Topic Preferences
@@ -53,23 +67,35 @@
53
67
  "type": "init_topics",
54
68
  "step": 2,
55
69
  "display": {
56
- "title": "🎯 Step 2/5: Your Interests",
57
- "message": "Which topics interest you most?",
58
- "topics": [
59
- "🎬 movies - TV shows, films",
60
- "📰 news - Current events",
61
- "🎮 gaming - Video games",
62
- "⚽ sports - Sports & fitness",
63
- "🏢 workplace - Office & business",
64
- "💬 social - Friends & parties",
65
- "🏠 daily_life - Shopping, restaurants"
70
+ "title": "🎯 Step 2/7: Your Interests",
71
+ "message": "Which topics interest you most? (Select multiple)",
72
+ "options": [
73
+ "**1.** 🎬 movies - TV shows, films",
74
+ "**2.** 📰 news - Current events",
75
+ "**3.** 🎮 gaming - Video games",
76
+ "**4.** ⚽ sports - Sports & fitness",
77
+ "**5.** 🏢 workplace - Office & business ⭐ Popular",
78
+ "**6.** 💬 social - Friends & parties",
79
+ "**7.** 🏠 daily_life - Shopping, restaurants"
66
80
  ],
67
- "prompt": "List your interests (e.g., **movies workplace gaming**)",
68
- "example": "Example: **movies workplace gaming**"
81
+ "default": "workplace, social, daily_life",
82
+ "prompt": "Reply with numbers (e.g., **1 5 6** or **movies workplace social**)",
83
+ "hint": "💡 Select 2-4 topics. Popular combo: 5 6 7 (workplace + social + daily_life)"
69
84
  }
70
85
  }
71
86
  ```
72
87
 
88
+ **Input Mapping:**
89
+ | User Input | Value |
90
+ |------------|-------|
91
+ | 1, movies | movies |
92
+ | 2, news | news |
93
+ | 3, gaming | gaming |
94
+ | 4, sports | sports |
95
+ | 5, workplace | workplace |
96
+ | 6, social | social |
97
+ | 7, daily, daily_life | daily_life |
98
+
73
99
  ---
74
100
 
75
101
  ## Step 3: Tutor Style
@@ -79,19 +105,28 @@
79
105
  "type": "init_style",
80
106
  "step": 3,
81
107
  "display": {
82
- "title": "🎭 Step 3/5: Tutor Style",
108
+ "title": "🎭 Step 3/7: Tutor Style",
83
109
  "message": "How should I teach you?",
84
110
  "options": [
85
- "😄 **humorous** - Fun examples, jokes, pop culture",
86
- "📚 **rigorous** - Detailed explanations, grammar focus",
87
- "😎 **casual** - Short & sweet, everyday language",
88
- "👔 **professional** - Business-focused, formal contexts"
111
+ "**1.** 😄 humorous - Fun examples, jokes, pop culture ⭐ Recommended",
112
+ "**2.** 📚 rigorous - Detailed explanations, grammar focus",
113
+ "**3.** 😎 casual - Short & sweet, everyday language",
114
+ "**4.** 👔 professional - Business-focused, formal contexts"
89
115
  ],
90
- "prompt": "Reply with: **humorous**, **rigorous**, **casual**, or **professional**"
116
+ "default": "humorous",
117
+ "prompt": "Reply with a number (1-4) or style name (e.g., **1** or **humorous**)"
91
118
  }
92
119
  }
93
120
  ```
94
121
 
122
+ **Input Mapping:**
123
+ | User Input | Value |
124
+ |------------|-------|
125
+ | 1, humorous, funny | humorous |
126
+ | 2, rigorous, serious | rigorous |
127
+ | 3, casual, relaxed | casual |
128
+ | 4, professional, formal | professional |
129
+
95
130
  ---
96
131
 
97
132
  ## Step 4: Oral/Written Ratio
@@ -101,18 +136,28 @@
101
136
  "type": "init_ratio",
102
137
  "step": 4,
103
138
  "display": {
104
- "title": "💬 Step 4/5: Speaking vs Writing",
139
+ "title": "💬 Step 4/7: Speaking vs Writing",
105
140
  "message": "What do you want to focus on?",
106
141
  "options": [
107
- "🗣️ **Mostly speaking** - Daily conversations, casual chat",
108
- "⚖️ **Balanced** - Mix of speaking and writing",
109
- "✍️ **Mostly writing** - Emails, formal documents"
142
+ "**1.** 🗣️ Mostly speaking (80%) - Daily conversations, casual chat",
143
+ "**2.** ⚖️ Balanced (50%) - Mix of speaking and writing",
144
+ "**3.** ✍️ Mostly writing (20%) - Emails, formal documents"
110
145
  ],
111
- "prompt": "Reply with a number 0-100 for speaking focus (e.g., **70** = 70% speaking)"
146
+ "default": "70",
147
+ "prompt": "Reply with a number (1-3) or percentage 0-100 (e.g., **1** or **70**)",
148
+ "hint": "💡 Recommended: 70% speaking (most learners want to speak better)"
112
149
  }
113
150
  }
114
151
  ```
115
152
 
153
+ **Input Mapping:**
154
+ | User Input | Value |
155
+ |------------|-------|
156
+ | 1, mostly speaking | 80 |
157
+ | 2, balanced | 50 |
158
+ | 3, mostly writing | 20 |
159
+ | 0-100 (number) | that number |
160
+
116
161
  ---
117
162
 
118
163
  ## Step 5: Schedule Configuration
@@ -122,18 +167,30 @@
122
167
  "type": "init_schedule",
123
168
  "step": 5,
124
169
  "display": {
125
- "title": "⏰ Step 5/5: Schedule Your Learning",
170
+ "title": "⏰ Step 5/7: Schedule Your Learning",
126
171
  "message": "When should I send you daily content?",
172
+ "options": [
173
+ "**1.** Morning person: Keypoint 06:45, Quiz 22:45 ⭐ Recommended",
174
+ "**2.** Late riser: Keypoint 08:00, Quiz 23:00",
175
+ "**3.** Custom times (you specify)"
176
+ ],
127
177
  "defaults": {
128
- "keypoint": "☀️ **Keypoint** (morning lesson): Default **06:45**",
129
- "quiz": "🌙 **Quiz** (evening practice): Default **22:45**"
178
+ "keypoint": "06:45",
179
+ "quiz": "22:45"
130
180
  },
131
- "prompt": "Reply with times in 24-hour format (e.g., **07:00 21:30**) or press Enter for defaults.",
132
- "hint": "💡 Quiz time must be later than keypoint time. Example: '07:00 21:30' or just press Enter for defaults."
181
+ "prompt": "Reply with a number (1-3) or custom times (e.g., **1** or **07:00 21:30**)",
182
+ "hint": "💡 Quiz time must be later than keypoint time. Press Enter for defaults."
133
183
  }
134
184
  }
135
185
  ```
136
186
 
187
+ **Input Mapping:**
188
+ | User Input | Keypoint | Quiz |
189
+ |------------|----------|------|
190
+ | 1, default, enter | 06:45 | 22:45 |
191
+ | 2, late | 08:00 | 23:00 |
192
+ | 3, HH:MM HH:MM | first time | second time |
193
+
137
194
  **Validation Rules:**
138
195
  - Both times must be in HH:MM format (24-hour)
139
196
  - Quiz time must be later than keypoint time
@@ -142,12 +199,72 @@
142
199
 
143
200
  ---
144
201
 
145
- ## Step 6: Confirmation
202
+ ## Step 6: Voice Teaching Configuration
146
203
 
147
204
  ```json
148
205
  {
149
- "type": "init_confirm",
206
+ "type": "init_voice",
150
207
  "step": 6,
208
+ "display": {
209
+ "title": "🔊 Step 6/7: Voice Teaching",
210
+ "message": "Would you like audio versions of knowledge points for listening practice?",
211
+ "options": [
212
+ "**1.** 🔊 Yes - Enable voice teaching ⭐ Recommended",
213
+ "**2.** 🔇 No - Text only, no audio"
214
+ ],
215
+ "speed_options": {
216
+ "description": "If yes, choose your preferred speech speed:",
217
+ "options": [
218
+ "**1.** Very slow (0.5x) - Beginner shadowing",
219
+ "**2.** Slow (0.7x) - Learning pronunciation",
220
+ "**3.** Normal (0.9x) - Daily learning ⭐ Recommended",
221
+ "**4.** Fast (1.3x) - Listening challenge",
222
+ "**5.** Very fast (1.7x) - Advanced training"
223
+ ]
224
+ },
225
+ "default": "yes 3",
226
+ "prompt": "Reply with **1** or **2**. If yes, also pick speed (e.g., **1** or **1 3** or **yes 3**)",
227
+ "hint": "💡 Recommended: Yes with normal speed (option 3). Great for commute listening!"
228
+ }
229
+ }
230
+ ```
231
+
232
+ **Input Mapping:**
233
+ | User Input | Enabled | Speed |
234
+ |------------|---------|-------|
235
+ | 1, yes, y | true | 0.9 (default) |
236
+ | 2, no, n | false | - |
237
+ | 1 3, yes 3 | true | 0.9 |
238
+ | 1 1, yes 1 | true | 0.5 |
239
+ | 1 2, yes 2 | true | 0.7 |
240
+ | 1 4, yes 4 | true | 1.3 |
241
+ | 1 5, yes 5 | true | 1.7 |
242
+
243
+ **State Update:**
244
+ ```json
245
+ {
246
+ "tts_settings": {
247
+ "enabled": true,
248
+ "provider": "edge-tts",
249
+ "speed": 0.9,
250
+ "voices": {
251
+ "narrator": null,
252
+ "dialogue_a": null,
253
+ "dialogue_b": null
254
+ }
255
+ }
256
+ }
257
+ ```
258
+ - If `voices` values are null, use provider defaults
259
+
260
+ ---
261
+
262
+ ## Step 7: Confirmation
263
+
264
+ ```json
265
+ {
266
+ "type": "init_confirm",
267
+ "step": 7,
151
268
  "display": {
152
269
  "title": "✅ All Set! Here's Your Profile:",
153
270
  "summary": {
@@ -155,14 +272,23 @@
155
272
  "topics": "🎯 Topics: {top_topics}",
156
273
  "style": "🎭 Style: {tutor_style}",
157
274
  "focus": "💬 Focus: {oral_ratio}% speaking",
158
- "schedule": "⏰ Schedule: Keypoint at {keypoint_time}, Quiz at {quiz_time}"
275
+ "schedule": "⏰ Schedule: Keypoint at {keypoint_time}, Quiz at {quiz_time}",
276
+ "voice": "🔊 Voice: {voice_status}"
159
277
  },
160
- "prompt": "Does this look right? Reply **yes** to confirm or **change** to adjust.",
278
+ "options": [
279
+ "**1.** ✅ Yes, confirm and start learning",
280
+ "**2.** ✏️ Change something"
281
+ ],
282
+ "prompt": "Reply with **1** or **yes** to confirm, or **2** to adjust.",
161
283
  "footer": "───────────────────\n🚀 Your first lesson starts tomorrow!"
162
284
  }
163
285
  }
164
286
  ```
165
287
 
288
+ **Voice Status Display:**
289
+ - If enabled: "Enabled, {speed_desc} speed"
290
+ - If disabled: "Disabled (text only)"
291
+
166
292
  ---
167
293
 
168
294
  ## Completion
@@ -184,9 +310,9 @@
184
310
 
185
311
  ---
186
312
 
187
- ## Cron Job Creation (after Step 6 confirmation)
313
+ ## Cron Job Creation (after Step 7 confirmation)
188
314
 
189
- After user confirms with "yes", MUST execute the following bash commands to create cron jobs:
315
+ After user confirms with "yes" or "1", MUST execute the following bash commands to create cron jobs:
190
316
 
191
317
  ```bash
192
318
  # Parse times from schedule