@fernado03/zoo-flow 0.7.15 → 0.8.0

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fernado03/zoo-flow",
3
3
  "description": "Workflow control plane for Zoo Code.",
4
- "version": "0.7.15",
4
+ "version": "0.8.0",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "zoo-flow": "bin/zoo-flow.js"
@@ -0,0 +1,8 @@
1
+ ---
2
+ description: "Teach a topic over multiple stateful sessions. Tracks mission, glossary, resources, and learning records. Use when user asks to be taught a topic, wants to learn something, or mentions ongoing study."
3
+ argument-hint: "What would you like to learn about?"
4
+ ---
5
+
6
+ Skill: `.roo/skills/productivity/teach/SKILL.md`
7
+
8
+ $ARGUMENTS
@@ -26,22 +26,47 @@ Stateful. Treat current directory as the teaching workspace.
26
26
 
27
27
  Topic mix varies: theoretical → knowledge-heavy; practical → skills-heavy.
28
28
 
29
+ ### Fluency vs Storage Strength
30
+
31
+ You should be careful to split between two types of learning:
32
+
33
+ - **Fluency strength**: in-the-moment retrieval of knowledge
34
+ - **Storage strength**: long-term retention of knowledge
35
+
36
+ Fluency can give the user an illusory sense of mastery, but storage strength is the real goal. Try to design lessons which build long-term retention by desirable difficulty:
37
+
38
+ - Using retrieval practice (recall from memory)
39
+ - Spacing (distributing practice over time)
40
+ - Interleaving (mixing up different but related topics in practice - for skill practice only)
41
+
29
42
  ## Lessons
30
43
 
31
44
  A lesson is the main thing you produce — the unit in which knowledge and skills reach the user. Each lesson is one self-contained HTML file, saved to `./lessons/` and titled `0001-<dash-case-name>.html`, where the number increments each time.
32
45
 
33
- A lesson should be beautiful clean, readable typography and layout since the user will return to these later to review.
46
+ A lesson should be **beautiful** - clean, readable typography and layout since the user will return to these later to review. Think Tufte.
47
+
48
+ The lesson should be short, and completable very quickly. Learners' working memory is very small, and we need to stay within it. But each lesson should give the user a single tangible win that they can build on. It should be directly tied to the mission, and should be in the user's zone of proximal development.
49
+
50
+ If possible, open the lesson file for the user by running a CLI command.
34
51
 
35
- The lesson should teach ONE THING only. It should be completable very quickly, but give the user a tangible win that they can build on. It should be directly tied to the mission, and should be in the user's zone of proximal development.
52
+ Each lesson should link via HTML anchors to other lessons and reference documents.
36
53
 
37
- Make opening a lesson as easy as possible ideally a single CLI command the user can run to open the HTML file in their browser.
54
+ Each lesson should recommend a primary source for the user to read or watch. This should be the most high-quality, high-trust resource you found on the topic.
55
+
56
+ Each lesson should contain a reminder to ask followup questions to the agent. The agent is their teacher, and can assist with anything that's unclear.
38
57
 
39
58
  ## Mission first
40
59
 
41
60
  If `MISSION.md` missing or vague, interview before teaching. No mission = no grounding, abstract exercises, no signal for what's next.
42
61
 
62
+ Missions may change as the user develops more skills and knowledge. This is normal - make sure to update the `MISSION.md` and add a learning record to capture the change. Confirm with the user before changing the mission.
63
+
43
64
  ## Zone of proximal development
44
65
 
66
+ The user may specify an exact thing they want to learn. If they don't, figure out their zone of proximal development.
67
+
68
+ Each lesson, the user should always feel as if they are being challenged 'just enough'.
69
+
45
70
  Pick next topic by:
46
71
  1. Read `learning-records/`.
47
72
  2. Align to `MISSION.md`.
@@ -49,10 +74,12 @@ Pick next topic by:
49
74
 
50
75
  User says "I already know X" → record in `learning-records/`.
51
76
 
52
- ## Knowledge loop
77
+ ## Knowledge
53
78
 
54
79
  Knowledge should first be gathered from trusted resources. Use `RESOURCES.md` to keep track of them. Lessons should be littered with citations - links to external resources to back up any claim made. This increases the trustworthiness of the lesson, and gives the user a path to acquire more knowledge if they want to go deeper.
55
80
 
81
+ For acquiring knowledge, difficulty is the enemy. It eats working memory you need for understanding.
82
+
56
83
  1. Pull from `RESOURCES.md`.
57
84
  2. Write HTML explainer to local file. Beautiful, glossary-correct. Litter with citations linking external resources backing every claim. Interactive: "try this" callouts to apply the knowledge.
58
85
  3. Give one-line CLI command to open it.
@@ -61,13 +88,15 @@ Knowledge should first be gathered from trusted resources. Use `RESOURCES.md` to
61
88
 
62
89
  ## Skills
63
90
 
64
- Skills should be taught through interactive lessons. There are several tools at your disposal:
91
+ For skill acquisition, difficulty is the tool. Effortful retrieval is what builds storage strength. Skills should be taught through interactive lessons. There are several tools at your disposal:
65
92
 
66
93
  - Interactive lessons, using quizzes and light in-browser tasks
67
94
  - Lessons which guide the user through a list of real-world steps to take (for instance, yoga poses)
68
95
  - In-agent quizzes, where you ask the user scenario-based questions about what they've learned
69
96
 
70
- Every exercise closes a tight feedback loop.
97
+ Each of these should be based on a **feedback loop**, where the user receives feedback on their performance. This feedback loop should be as tight as possible, giving feedback immediately - and ideally automatically.
98
+
99
+ For quizzes, each answer should be exactly the same number of words (and characters, if possible). Don't give the user any clues about the answer through formatting.
71
100
 
72
101
  ## Wisdom
73
102