@bjlee2024/claude-mem 13.4.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/.agents/plugins/marketplace.json +20 -0
- package/.codex-plugin/plugin.json +46 -0
- package/LICENSE +202 -0
- package/README.md +419 -0
- package/dist/npx-cli/index.js +10001 -0
- package/dist/opencode-plugin/index.js +67 -0
- package/openclaw/Dockerfile.e2e +46 -0
- package/openclaw/SKILL.md +462 -0
- package/openclaw/TESTING.md +279 -0
- package/openclaw/dist/index.js +15 -0
- package/openclaw/e2e-verify.sh +222 -0
- package/openclaw/install.sh +1653 -0
- package/openclaw/openclaw.plugin.json +98 -0
- package/openclaw/package.json +21 -0
- package/openclaw/src/index.test.ts +1124 -0
- package/openclaw/src/index.ts +1092 -0
- package/openclaw/test-e2e.sh +40 -0
- package/openclaw/test-install.sh +2086 -0
- package/openclaw/test-sse-consumer.js +98 -0
- package/openclaw/tsconfig.json +26 -0
- package/package.json +211 -0
- package/plugin/.claude-plugin/plugin.json +24 -0
- package/plugin/.codex-plugin/plugin.json +46 -0
- package/plugin/.mcp.json +12 -0
- package/plugin/hooks/bugfixes-2026-01-10.md +92 -0
- package/plugin/hooks/codex-hooks.json +74 -0
- package/plugin/hooks/hooks.json +87 -0
- package/plugin/modes/code--ar.json +24 -0
- package/plugin/modes/code--bn.json +24 -0
- package/plugin/modes/code--chill.json +8 -0
- package/plugin/modes/code--cs.json +24 -0
- package/plugin/modes/code--da.json +24 -0
- package/plugin/modes/code--de.json +24 -0
- package/plugin/modes/code--el.json +24 -0
- package/plugin/modes/code--es.json +24 -0
- package/plugin/modes/code--fi.json +24 -0
- package/plugin/modes/code--fr.json +24 -0
- package/plugin/modes/code--he.json +24 -0
- package/plugin/modes/code--hi.json +24 -0
- package/plugin/modes/code--hu.json +24 -0
- package/plugin/modes/code--id.json +24 -0
- package/plugin/modes/code--it.json +24 -0
- package/plugin/modes/code--ja.json +24 -0
- package/plugin/modes/code--ko.json +24 -0
- package/plugin/modes/code--nl.json +24 -0
- package/plugin/modes/code--no.json +24 -0
- package/plugin/modes/code--pl.json +24 -0
- package/plugin/modes/code--pt-br.json +24 -0
- package/plugin/modes/code--ro.json +24 -0
- package/plugin/modes/code--ru.json +24 -0
- package/plugin/modes/code--sv.json +24 -0
- package/plugin/modes/code--th.json +24 -0
- package/plugin/modes/code--tr.json +24 -0
- package/plugin/modes/code--uk.json +24 -0
- package/plugin/modes/code--ur.json +25 -0
- package/plugin/modes/code--vi.json +24 -0
- package/plugin/modes/code--zh.json +24 -0
- package/plugin/modes/code.json +139 -0
- package/plugin/modes/email-investigation.json +120 -0
- package/plugin/modes/law-study--chill.json +7 -0
- package/plugin/modes/law-study-CLAUDE.md +85 -0
- package/plugin/modes/law-study.json +120 -0
- package/plugin/modes/meme-tokens.json +125 -0
- package/plugin/package.json +46 -0
- package/plugin/scripts/bun-runner.js +216 -0
- package/plugin/scripts/context-generator.cjs +795 -0
- package/plugin/scripts/mcp-server.cjs +239 -0
- package/plugin/scripts/server-beta-service.cjs +9856 -0
- package/plugin/scripts/statusline-counts.js +40 -0
- package/plugin/scripts/version-check.js +69 -0
- package/plugin/scripts/worker-cli.js +19 -0
- package/plugin/scripts/worker-service.cjs +2368 -0
- package/plugin/scripts/worker-wrapper.cjs +2 -0
- package/plugin/skills/babysit/SKILL.md +87 -0
- package/plugin/skills/design-is/SKILL.md +312 -0
- package/plugin/skills/do/SKILL.md +45 -0
- package/plugin/skills/how-it-works/SKILL.md +22 -0
- package/plugin/skills/how-it-works/onboarding-explainer.md +17 -0
- package/plugin/skills/knowledge-agent/SKILL.md +80 -0
- package/plugin/skills/learn-codebase/SKILL.md +21 -0
- package/plugin/skills/make-plan/SKILL.md +67 -0
- package/plugin/skills/mem-search/SKILL.md +131 -0
- package/plugin/skills/oh-my-issues/SKILL.md +226 -0
- package/plugin/skills/pathfinder/SKILL.md +111 -0
- package/plugin/skills/smart-explore/SKILL.md +190 -0
- package/plugin/skills/timeline-report/SKILL.md +211 -0
- package/plugin/skills/version-bump/SKILL.md +68 -0
- package/plugin/skills/version-bump/scripts/generate_changelog.js +34 -0
- package/plugin/skills/weekly-digests/SKILL.md +262 -0
- package/plugin/skills/wowerpoint/SKILL.md +205 -0
- package/plugin/ui/assets/fonts/monaspace-radon-var.woff +0 -0
- package/plugin/ui/assets/fonts/monaspace-radon-var.woff2 +0 -0
- package/plugin/ui/claude-mem-logo-for-dark-mode.webp +0 -0
- package/plugin/ui/claude-mem-logo-stylized.png +0 -0
- package/plugin/ui/claude-mem-logomark.webp +0 -0
- package/plugin/ui/icon-thick-completed.svg +8 -0
- package/plugin/ui/icon-thick-investigated.svg +8 -0
- package/plugin/ui/icon-thick-learned.svg +12 -0
- package/plugin/ui/icon-thick-next-steps.svg +8 -0
- package/plugin/ui/viewer-bundle.js +65 -0
- package/plugin/ui/viewer.html +3145 -0
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: weekly-digests
|
|
3
|
+
description: Generate a serial week-by-week narrative digest of a project's full claude-mem timeline. Splits the timeline into per-ISO-week files, then runs one consecutive subagent per week — each receiving the prior week's carry-forward block — to produce one chapter per ISO week of data. Use when asked for "weekly digests", "week-by-week story", "serial timeline", or "narrative chapters" of a project's history.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Weekly Digests
|
|
7
|
+
|
|
8
|
+
Produce a serial, multi-chapter narrative digest of a project's complete claude-mem history. Differs from `timeline-report` (one long report) — this generates one digest *per ISO week*, with each subagent reading the prior week's carry-forward block so the story stays coherent.
|
|
9
|
+
|
|
10
|
+
**The chapter count equals the number of ISO weeks the timeline covers.** A project with 2 weeks of data produces 2 chapters; one with 30 weeks produces 30. There is no fixed length — count the weeks first, then drive the pipeline off that count.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
|
|
14
|
+
Trigger when the user asks for:
|
|
15
|
+
|
|
16
|
+
- "Weekly digests"
|
|
17
|
+
- "Week-by-week story"
|
|
18
|
+
- "Serial timeline"
|
|
19
|
+
- "Story chapters of [project]"
|
|
20
|
+
- "Run a digest for each week"
|
|
21
|
+
- "Continue the story week by week"
|
|
22
|
+
|
|
23
|
+
If the user wants a single sweeping report, use `timeline-report` instead. This skill is for serial chapter format.
|
|
24
|
+
|
|
25
|
+
## Prerequisites
|
|
26
|
+
|
|
27
|
+
- claude-mem worker running
|
|
28
|
+
- Project has at least one ISO week of observations (the pipeline degenerates gracefully — even N=1 works)
|
|
29
|
+
- A clean output directory the user is comfortable writing into
|
|
30
|
+
|
|
31
|
+
**Resolve the worker port** (do this once, reuse `$WORKER_PORT`):
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
WORKER_PORT="${CLAUDE_MEM_WORKER_PORT:-$(node -e "const fs=require('fs'),p=require('path'),os=require('os');const uid=(typeof process.getuid==='function'?process.getuid():77);const fallback=String(37700+(uid%100));try{const s=JSON.parse(fs.readFileSync(p.join(os.homedir(),'.claude-mem','settings.json'),'utf-8'));process.stdout.write(String(s.CLAUDE_MEM_WORKER_PORT||fallback));}catch{process.stdout.write(fallback);}" 2>/dev/null)}"
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Workflow
|
|
38
|
+
|
|
39
|
+
### Step 1: Determine the Project Name
|
|
40
|
+
|
|
41
|
+
Same worktree-detection pattern as `timeline-report`. In a worktree, the data source is the **parent project**:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
git_dir=$(git rev-parse --git-dir 2>/dev/null)
|
|
45
|
+
git_common_dir=$(git rev-parse --git-common-dir 2>/dev/null)
|
|
46
|
+
if [ "$git_dir" != "$git_common_dir" ]; then
|
|
47
|
+
parent_project=$(basename "$(dirname "$git_common_dir")")
|
|
48
|
+
else
|
|
49
|
+
parent_project=$(basename "$PWD")
|
|
50
|
+
fi
|
|
51
|
+
echo "$parent_project"
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Step 2: Fetch the Full Timeline and Save It
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
mkdir -p .scratch
|
|
58
|
+
curl -s "http://localhost:${WORKER_PORT}/api/context/inject?project=PROJECT_NAME&full=true" \
|
|
59
|
+
> .scratch/cm-timeline.md
|
|
60
|
+
wc -l .scratch/cm-timeline.md
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Sanity-check: confirm the file is non-empty and has the expected structure (preamble, then date headers like `### Mon DD, YYYY`, then numeric observation lines `<id> <time> <emoji> <title>` and session boundary lines `S<n> <prompt> (Mon DD at HH:MMpm)`).
|
|
64
|
+
|
|
65
|
+
### Step 3: Split the Timeline Into Per-ISO-Week Files
|
|
66
|
+
|
|
67
|
+
Write a Python script to `.scratch/split-timeline.py` that:
|
|
68
|
+
|
|
69
|
+
1. Parses date headers (`### Mon DD, YYYY`).
|
|
70
|
+
2. Groups days into ISO weeks via `date.isocalendar()` (Monday-start).
|
|
71
|
+
3. Emits one file per week to `docs/timeline-weeks/<YYYY>-W<NN>-<MonDD>-to-<MonDD>.md`, preserving each day's section verbatim.
|
|
72
|
+
4. Runs a dual-pass sanity check: total observations distributed must equal the count in the source file.
|
|
73
|
+
|
|
74
|
+
Output structure (filenames illustrative):
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
docs/timeline-weeks/
|
|
78
|
+
README.md # weekly index table
|
|
79
|
+
YYYY-W<NN>-MonDD-to-MonDD.md # one per ISO week the timeline covers
|
|
80
|
+
...
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Each weekly file should preserve the original daily sections verbatim. Do not paraphrase at this stage — the digest agents need raw fidelity.
|
|
84
|
+
|
|
85
|
+
**Count the resulting files** before launching the pipeline. That count is `TOTAL` and drives every subsequent step. Empty weeks (zero observations between active weeks) should be skipped — the pipeline only operates on weeks that have content.
|
|
86
|
+
|
|
87
|
+
### Step 4: Build the Weekly Index README
|
|
88
|
+
|
|
89
|
+
Write `docs/timeline-weeks/README.md` with a markdown table: Week | Dates | Observations | Sessions | File. This becomes the operator's roadmap and helps the agents understand pacing (peak weeks vs trough weeks).
|
|
90
|
+
|
|
91
|
+
### Step 5: Run the Consecutive Subagent Pipeline
|
|
92
|
+
|
|
93
|
+
**Critical: subagents run sequentially, NOT in parallel.** Each agent receives the prior agent's carry-forward block. This is the entire point of the skill — without it you have N disjoint summaries; with it you have an N-chapter serial narrative.
|
|
94
|
+
|
|
95
|
+
Create the output directory:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
mkdir -p docs/timeline-weeks/digests
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
For each week, in chronological order, dispatch a Task subagent (general-purpose) with this prompt template. **Wait for each agent to complete before launching the next.** Capture the carry-forward block from the result and inject it as `STORY_SO_FAR` into the next prompt.
|
|
102
|
+
|
|
103
|
+
#### Subagent Prompt Template
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
You are writing chapter {N} of {TOTAL} in a serial week-by-week digest of the {PROJECT} project's development history. Chapters 1 through {N-1} are written. {SPECIAL_NOTE: e.g. "This is the LARGEST week", "This is the TROUGH", "This is the FINAL chapter", "This is the ONLY chapter — both first AND final week"}.
|
|
107
|
+
|
|
108
|
+
**Source file (read in full):**
|
|
109
|
+
{ABSOLUTE_PATH_TO_WEEK_FILE}
|
|
110
|
+
|
|
111
|
+
**Output digest file (write):**
|
|
112
|
+
{ABSOLUTE_PATH_TO_DIGEST_FILE}
|
|
113
|
+
|
|
114
|
+
**Format key for the source file:**
|
|
115
|
+
- Numeric lines like `1 7:59p 🔵 Save hook file is empty` are observations (ID, time, type-emoji, title)
|
|
116
|
+
- `S##` lines are session boundaries (the user prompt that started the session)
|
|
117
|
+
- Emoji legend: 🎯session 🔴bugfix 🟣feature 🔄refactor ✅change 🔵discovery ⚖️decision 🚨security_alert 🔐security_note
|
|
118
|
+
|
|
119
|
+
**Story so far (carry-forward from Week {N-1}):**
|
|
120
|
+
|
|
121
|
+
{STORY_SO_FAR_BLOCK_OR_EMPTY_FOR_WEEK_1}
|
|
122
|
+
|
|
123
|
+
**Your digest must include:**
|
|
124
|
+
1. **Title line** — `# Week {N} ({WEEK_LABEL}): {DATE_RANGE} — [your chosen subtitle]`
|
|
125
|
+
2. **One-line tagline** — what this week is about, in plain English
|
|
126
|
+
3. **Narrative section** ({BUDGET}) — tell the story. Resolve threads from prior weeks where the data shows resolution. Introduce new arcs. Use specific observation details.
|
|
127
|
+
4. **Threads continued / opened / resolved** sections
|
|
128
|
+
5. **Cliffhanger / What's next**
|
|
129
|
+
6. **Carry-forward block** at the very bottom, fenced as ```carry-forward ... ``` — structured handoff for the next week's agent.
|
|
130
|
+
|
|
131
|
+
**CARRY-FORWARD DISCIPLINE:**
|
|
132
|
+
- Cap at ~350 words.
|
|
133
|
+
- AGGRESSIVELY PRUNE: drop arcs that didn't surface this week unless they're actively unresolved cliffhangers.
|
|
134
|
+
- Drop cast members absent 2+ weeks unless load-bearing for the long arc.
|
|
135
|
+
- Quality over completeness. The next agent inherits what you mention; mention judiciously.
|
|
136
|
+
|
|
137
|
+
Required carry-forward sub-sections:
|
|
138
|
+
- **Active arcs** — ongoing themes/projects the next agent should watch for
|
|
139
|
+
- **Cast** — notable named systems/people/tools (continuing + new)
|
|
140
|
+
- **Unresolved** — open questions or unfinished work
|
|
141
|
+
- **Tone notes** — how the story is being told (voice, perspective, register evolution)
|
|
142
|
+
|
|
143
|
+
**Tone rules:**
|
|
144
|
+
- Third-person narrator, sharp, observational. Not twee.
|
|
145
|
+
- AI is "Claude"; human is "{USER_FIRST_NAME}".
|
|
146
|
+
- Treat codebase components as characters — whatever the project's recurring named systems are (e.g. a worker, a queue, a process manager, a recurring bug, a flaky migration). Don't import names from another project; use what shows up in this project's observations.
|
|
147
|
+
- Don't manufacture drama. Name what's there.
|
|
148
|
+
- Track the user's prompt-register evolution week by week (frustration markers, escalation language, shifts in tone).
|
|
149
|
+
- Note meta-recursion if the project is reflexive about its own behavior (e.g. a tool that documents its own work, an AI agent debugging itself, a system that catches its own regressions).
|
|
150
|
+
- Watch for new villains or co-stars and name them.
|
|
151
|
+
- For trough/silent weeks: silence IS the story. Don't pad. Name what didn't happen.
|
|
152
|
+
- For surge weeks (>2,000 obs): pick 4-7 spine arcs and tell them well. Don't catalog.
|
|
153
|
+
|
|
154
|
+
**Important:** Do NOT speculate beyond what's in the source file.
|
|
155
|
+
|
|
156
|
+
After writing the file, return:
|
|
157
|
+
1. Path of the file you wrote
|
|
158
|
+
2. The carry-forward block verbatim
|
|
159
|
+
3. One-sentence summary of the week
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
#### Narrative Budget by Observation Count
|
|
163
|
+
|
|
164
|
+
Scale narrative length proportionally to the week's volume:
|
|
165
|
+
|
|
166
|
+
| Obs count | Narrative section budget |
|
|
167
|
+
| --- | --- |
|
|
168
|
+
| < 100 | 200–400 words |
|
|
169
|
+
| 100–500 | 300–600 words |
|
|
170
|
+
| 500–1,500 | 500–900 words |
|
|
171
|
+
| 1,500–3,000 | 700–1,100 words |
|
|
172
|
+
| 3,000+ | 800–1,300 words |
|
|
173
|
+
|
|
174
|
+
Pad these into the `{BUDGET}` slot of the prompt for each week.
|
|
175
|
+
|
|
176
|
+
#### The First Week
|
|
177
|
+
|
|
178
|
+
For Week 1, pass an empty `STORY_SO_FAR_BLOCK` and an instruction noting it's the origin chapter — the agent should establish initial cast, tone, and arcs for everyone after.
|
|
179
|
+
|
|
180
|
+
#### The Final Week
|
|
181
|
+
|
|
182
|
+
The final week gets a different ending: **no carry-forward block**. Instead, instruct the agent to write a `## Where We Are` section (~250 words) naming what's still open at the moment of writing. Tell the agent the project is ongoing — the digest stops; the story doesn't. Don't give the story a false ending.
|
|
183
|
+
|
|
184
|
+
#### When N = 1 (single-week project)
|
|
185
|
+
|
|
186
|
+
Apply BOTH treatments to the same chapter: empty `STORY_SO_FAR_BLOCK` AND `## Where We Are` instead of a carry-forward block. The agent is writing both the origin and the close in one pass. Don't reference prior or future chapters that don't exist.
|
|
187
|
+
|
|
188
|
+
### Step 6: Rename Files for Sortable Order
|
|
189
|
+
|
|
190
|
+
The agents write digests with names like `YYYY-W<NN>-digest.md`. These already sort chronologically by ISO week (until a project crosses a year boundary inside one project name), but **add a zero-padded numeric prefix** so the order is unambiguous to humans browsing or scripting against the directory:
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
cd docs/timeline-weeks/digests
|
|
194
|
+
total=$(ls *.md | wc -l | tr -d ' ')
|
|
195
|
+
width=${#total} # 1 for N<10, 2 for N<100, 3 for N<1000
|
|
196
|
+
[ "$width" -lt 2 ] && width=2 # always pad to at least 2 for readability
|
|
197
|
+
i=0
|
|
198
|
+
for f in *.md; do
|
|
199
|
+
printf -v prefix "%0${width}d" $i
|
|
200
|
+
mv "$f" "${prefix}-$f"
|
|
201
|
+
i=$((i+1))
|
|
202
|
+
done
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
Result for N=30: `00-...md` through `29-...md`. For N=4: `00-...md` through `03-...md`. For N=120: `000-...md` through `119-...md`. **Always zero-pad** — `1-...md` and `10-...md` sort wrong without it.
|
|
206
|
+
|
|
207
|
+
Do NOT also prepend the order number to the digest title line inside each file. The filename prefix is for sorting; the title stays clean: `# Week N (W##): Date — Subtitle`.
|
|
208
|
+
|
|
209
|
+
### Step 7: Report Completion
|
|
210
|
+
|
|
211
|
+
Tell the user:
|
|
212
|
+
- Total weeks digested (N)
|
|
213
|
+
- Output directory path
|
|
214
|
+
- Date range covered
|
|
215
|
+
- Any silent/trough weeks worth flagging
|
|
216
|
+
- A one-sentence capstone summarizing the arc — written by the final-chapter agent, or composed by the operator from the final agent's `## Where We Are` section.
|
|
217
|
+
|
|
218
|
+
## Pipeline Discipline
|
|
219
|
+
|
|
220
|
+
These rules emerged from running the pipeline end-to-end. Encode them every time:
|
|
221
|
+
|
|
222
|
+
1. **Sequential, not parallel.** The whole point is the carry-forward chain. Parallelism breaks it.
|
|
223
|
+
2. **Carry-forward is bounded.** It will bloat without active pruning. Tell every agent: cap ~350 words, drop dormant arcs, drop absent cast.
|
|
224
|
+
3. **Track register evolution explicitly.** The user's prompt-style across weeks is a story arc. Frustration markers shift over time (whatever they happen to be in this project's data). Name the shifts.
|
|
225
|
+
4. **Treat components as characters.** Whatever recurring named systems show up in the observations are this project's villains and co-stars. Stable cast across weeks builds narrative coherence.
|
|
226
|
+
5. **Honor silence.** Trough weeks (10–100 obs) are real chapters. Name what didn't happen. Don't pad.
|
|
227
|
+
6. **Don't manufacture drama.** Just observe the data. If the project is reflexive, the recursion is the drama; you don't need to add more.
|
|
228
|
+
7. **Final week: no false ending.** The digest stops; the project doesn't. Write `## Where We Are`, not "the end."
|
|
229
|
+
|
|
230
|
+
## Error Handling
|
|
231
|
+
|
|
232
|
+
- **Empty timeline**: project name wrong, or worker not running. `curl -s "http://localhost:${WORKER_PORT}/api/search?query=*&limit=1"` to verify.
|
|
233
|
+
- **Worker not running**: start it via your usual method or check `ps aux | grep worker-service`.
|
|
234
|
+
- **Subagent returns malformed carry-forward**: extract the carry-forward block by regex (` ```carry-forward ... ``` `) and pass forward verbatim. If missing, ask the agent to retry with the explicit instruction "your reply MUST include the carry-forward block fenced as ```carry-forward ... ``` at the very end."
|
|
235
|
+
- **One agent fails mid-pipeline**: retry that week with the same carry-forward. Don't skip — the chain breaks.
|
|
236
|
+
- **Carry-forward growing past ~500 words**: tighten the discipline instruction in subsequent prompts. Force pruning explicitly.
|
|
237
|
+
|
|
238
|
+
## Examples
|
|
239
|
+
|
|
240
|
+
### Long-running project (~30 weeks)
|
|
241
|
+
|
|
242
|
+
User: "Make weekly digests for [project] from beginning to end"
|
|
243
|
+
|
|
244
|
+
1. Resolve worker port, detect project name.
|
|
245
|
+
2. Fetch full timeline → `.scratch/cm-timeline.md`.
|
|
246
|
+
3. Run `.scratch/split-timeline.py` → N weekly files in `docs/timeline-weeks/` (e.g. 30).
|
|
247
|
+
4. Generate `docs/timeline-weeks/README.md` index.
|
|
248
|
+
5. Launch N subagents consecutively, one per week. Each gets the prior week's carry-forward. The first chapter starts with empty carry-forward; the final chapter writes `## Where We Are` instead of a carry-forward block.
|
|
249
|
+
6. Rename digests with zero-padded order prefix (`00-...md` through `29-...md`).
|
|
250
|
+
7. Report total chapters, date range, any troughs/peaks, and the one-line capstone the final agent produced.
|
|
251
|
+
|
|
252
|
+
### Short-lived project (~3 weeks)
|
|
253
|
+
|
|
254
|
+
Same flow, just smaller. N=3, so:
|
|
255
|
+
- Chapter 1: empty carry-forward, establish cast/tone/arcs.
|
|
256
|
+
- Chapter 2: receives chapter 1's carry-forward, builds on it.
|
|
257
|
+
- Chapter 3: receives chapter 2's carry-forward, BUT gets the final-chapter treatment (`## Where We Are` instead of carry-forward block).
|
|
258
|
+
- Filenames: `00-...md`, `01-...md`, `02-...md`.
|
|
259
|
+
|
|
260
|
+
### Single-week project (N=1)
|
|
261
|
+
|
|
262
|
+
Apply both first-and-final-chapter treatment to the only chapter: empty carry-forward, `## Where We Are` close, no inter-chapter references. Filename: `00-...md`.
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wowerpoint
|
|
3
|
+
description: Turn one document into a kawaii NotebookLM slide-deck PDF. Use for "wowerpoint this", "make a deck about <file>", "turn this report into slides", or any request to render a single document as shareable narrative slides.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Wowerpoint
|
|
7
|
+
|
|
8
|
+
One doc in, one PDF out. Slide-deck only — videos and podcasts from the same engine are noticeably worse and out of scope; refer the user to the `notebooklm` CLI directly if they want those.
|
|
9
|
+
|
|
10
|
+
## Triggers
|
|
11
|
+
|
|
12
|
+
- "Wowerpoint <file>"
|
|
13
|
+
- "Make a slide deck about <file>"
|
|
14
|
+
- "Turn this report into slides"
|
|
15
|
+
- "Kawaii-deck this"
|
|
16
|
+
|
|
17
|
+
## Setup (one-time per machine)
|
|
18
|
+
|
|
19
|
+
If `notebooklm auth check` returns 0 and `command -v jq` resolves, skip.
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
uv tool install --with playwright --force notebooklm-py
|
|
23
|
+
$(uv tool dir)/notebooklm-py/bin/playwright install chromium
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
`jq` is required by the workflow's JSON parsing; install if missing (`brew install jq` on macOS, or your distro's package manager).
|
|
27
|
+
|
|
28
|
+
Then the user authenticates interactively — do not script. Tell them to type `! notebooklm login` so the OAuth ENTER lands in their terminal.
|
|
29
|
+
|
|
30
|
+
## Workflow
|
|
31
|
+
|
|
32
|
+
### 1. The source doc
|
|
33
|
+
|
|
34
|
+
You need exactly one source doc. If it doesn't exist or is too thin to carry a deck, **write it first** — use mem-search and sequential thinking to make it comprehensive (long-form, narrative, several thousand words is normal). Do not paper over a weak source by adding more sources.
|
|
35
|
+
|
|
36
|
+
### 2. Auth pre-flight
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
notebooklm auth check 2>&1 | tail -5
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Exit 1 with `Run 'notebooklm login' to authenticate.` = halt and tell the user.
|
|
43
|
+
|
|
44
|
+
### 3. Create notebook, add the source
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
NOTEBOOK_ID=$(notebooklm create "<title>" --json | jq -r .notebook.id)
|
|
48
|
+
SOURCE_ID=$(notebooklm source add "<doc-path>" --notebook "$NOTEBOOK_ID" --json | jq -r .source.id)
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Title: H1 of the source doc, or its filename stem; append a date for dated work.
|
|
52
|
+
|
|
53
|
+
JSON envelope keys differ — `create` → `.notebook.id`, `source add` → `.source.id`, `generate` → `.task_id`. Wrong key = empty string = silent downstream failure.
|
|
54
|
+
|
|
55
|
+
### 4. Spawn the subagent
|
|
56
|
+
|
|
57
|
+
Generation takes ~10 minutes; never block on it. Use the template below with `run_in_background: true`.
|
|
58
|
+
|
|
59
|
+
### 5. End your turn
|
|
60
|
+
|
|
61
|
+
Print the notebook URL so the user can watch live:
|
|
62
|
+
|
|
63
|
+
```text
|
|
64
|
+
https://notebooklm.google.com/notebook/<NOTEBOOK_ID>
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
The subagent's completion notification fires when the file is on disk.
|
|
68
|
+
|
|
69
|
+
## Output path
|
|
70
|
+
|
|
71
|
+
Adjacent to the source, parallel filename:
|
|
72
|
+
|
|
73
|
+
```text
|
|
74
|
+
<source-dir>/<source-stem>-slides.pdf
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
If the source isn't somewhere that makes sense as an output location, default to `reports/<stem>-slides.pdf`.
|
|
78
|
+
|
|
79
|
+
## Share link (WOWerpoint Server)
|
|
80
|
+
|
|
81
|
+
After the PDF lands on disk, the subagent also POSTs it to the WOWerpoint Server, which converts the 16:9 deck into a 9:16 mobile twin and returns a share URL. The share URL is the primary deliverable to the user; the PDF on disk is the backup.
|
|
82
|
+
|
|
83
|
+
Required env (exported in the user's shell — the subagent inherits the parent's environment, so plain `export` is enough; no dotenv loader runs):
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
WOWERPOINT_API_BASE=https://wowerpoint-api.<subdomain>.workers.dev
|
|
87
|
+
WOWERPOINT_VIEWER_BASE=https://wowerpoint-viewer.<subdomain>.workers.dev
|
|
88
|
+
WOWERPOINT_UPLOAD_TOKEN=<token>
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
If any var is missing, skip the share-link step and just hand the PDF over.
|
|
92
|
+
|
|
93
|
+
Upload pattern (run AFTER the subagent confirms the PDF exists on disk). Capture the full response so empty `id` and `error` payloads are handled — `jq -r '.id'` returns the literal string `null` on a missing key, so always pipe through `.id // empty`:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
if [ -n "$WOWERPOINT_API_BASE" ] && [ -n "$WOWERPOINT_UPLOAD_TOKEN" ] && [ -n "$WOWERPOINT_VIEWER_BASE" ]; then
|
|
97
|
+
UPLOAD_JSON=$(curl -sS --connect-timeout 10 --max-time 30 -X POST "$WOWERPOINT_API_BASE/api/decks" \
|
|
98
|
+
-H "Authorization: Bearer $WOWERPOINT_UPLOAD_TOKEN" \
|
|
99
|
+
-F "file=@<OUTPUT_PATH>" \
|
|
100
|
+
-F "title=<TITLE>")
|
|
101
|
+
DECK_ID=$(printf '%s' "$UPLOAD_JSON" | jq -r '.id // empty')
|
|
102
|
+
API_ERROR=$(printf '%s' "$UPLOAD_JSON" | jq -r '.error // empty')
|
|
103
|
+
if [ -n "$API_ERROR" ] || [ -z "$DECK_ID" ]; then
|
|
104
|
+
echo "WOWerpoint upload warning: ${API_ERROR:-missing id}"
|
|
105
|
+
else
|
|
106
|
+
echo "Share URL: $WOWERPOINT_VIEWER_BASE/d/$DECK_ID"
|
|
107
|
+
fi
|
|
108
|
+
fi
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
The returned `id` is a kebab-case slug derived from the title with a random creature suffix (e.g. `tokenrouter-quest-hawk`, or `velvet-comet-tiger` if the title is empty or non-ASCII). The share URL is:
|
|
112
|
+
|
|
113
|
+
```text
|
|
114
|
+
$WOWERPOINT_VIEWER_BASE/d/<id>
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
It works immediately (shows a "still converting…" page that auto-reloads when ready). Conversion takes ~1–2 min per slide. Print the share URL in your final response.
|
|
118
|
+
|
|
119
|
+
## The prompt
|
|
120
|
+
|
|
121
|
+
One sentence. Default:
|
|
122
|
+
|
|
123
|
+
```text
|
|
124
|
+
Use kawaii characters to tell the story of <subject>. Keep it warm and clear.
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Replace `<subject>` with a one-phrase description from the source doc's H1 or the user's framing. If the user supplies their own prompt, pass it through verbatim — don't expand it.
|
|
128
|
+
|
|
129
|
+
## Subagent template (copy-paste, parameterize)
|
|
130
|
+
|
|
131
|
+
```text
|
|
132
|
+
You're handling NotebookLM slide-deck generation. Work in `<repo-absolute-path>`.
|
|
133
|
+
|
|
134
|
+
Context:
|
|
135
|
+
- The `notebooklm` CLI is installed and authenticated (parent verified with `notebooklm auth check`).
|
|
136
|
+
- A notebook and source already exist.
|
|
137
|
+
|
|
138
|
+
Inputs:
|
|
139
|
+
- Notebook ID: `<NOTEBOOK_ID>`
|
|
140
|
+
- Source ID: `<SOURCE_ID>`
|
|
141
|
+
- Generation prompt: `<PROMPT>`
|
|
142
|
+
- Output path: `<OUTPUT_PATH>`
|
|
143
|
+
- Deck title: `<TITLE>` (the notebook title, used by the share-link step)
|
|
144
|
+
|
|
145
|
+
Steps:
|
|
146
|
+
|
|
147
|
+
1. Wait for source: `notebooklm source wait <SOURCE_ID> -n <NOTEBOOK_ID> --timeout 600`
|
|
148
|
+
Exit 0 = ready, 1 = error, 2 = timeout. On timeout, run `notebooklm source list -n <NOTEBOOK_ID> --json` and report status.
|
|
149
|
+
|
|
150
|
+
2. Generate: `notebooklm generate slide-deck "<PROMPT>" --format detailed --length default --notebook <NOTEBOOK_ID> --json --retry 2`
|
|
151
|
+
Parse `task_id` from the JSON (key is `task_id` at top level).
|
|
152
|
+
On `GENERATION_FAILED` or "No result found for RPC ID": sleep 300, retry once, then give up.
|
|
153
|
+
|
|
154
|
+
3. Wait for artifact: `notebooklm artifact wait <task_id> -n <NOTEBOOK_ID> --timeout 1800`
|
|
155
|
+
|
|
156
|
+
4. Download: `notebooklm download slide-deck <OUTPUT_PATH> -a <task_id> -n <NOTEBOOK_ID>`
|
|
157
|
+
|
|
158
|
+
5. Verify: `ls -la <OUTPUT_PATH>` confirms the file exists.
|
|
159
|
+
|
|
160
|
+
6. Upload to WOWerpoint Server for a mobile share link. Skip silently if any of `WOWERPOINT_API_BASE`, `WOWERPOINT_UPLOAD_TOKEN`, or `WOWERPOINT_VIEWER_BASE` is unset. Otherwise:
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
if [ -n "$WOWERPOINT_API_BASE" ] && [ -n "$WOWERPOINT_UPLOAD_TOKEN" ] && [ -n "$WOWERPOINT_VIEWER_BASE" ]; then
|
|
164
|
+
UPLOAD_JSON=$(curl -sS --connect-timeout 10 --max-time 30 -X POST "$WOWERPOINT_API_BASE/api/decks" \
|
|
165
|
+
-H "Authorization: Bearer $WOWERPOINT_UPLOAD_TOKEN" \
|
|
166
|
+
-F "file=@<OUTPUT_PATH>" \
|
|
167
|
+
-F "title=<TITLE>")
|
|
168
|
+
DECK_ID=$(printf '%s' "$UPLOAD_JSON" | jq -r '.id // empty')
|
|
169
|
+
API_ERROR=$(printf '%s' "$UPLOAD_JSON" | jq -r '.error // empty')
|
|
170
|
+
if [ -n "$API_ERROR" ] || [ -z "$DECK_ID" ]; then
|
|
171
|
+
echo "WOWerpoint upload warning: ${API_ERROR:-missing id}"
|
|
172
|
+
else
|
|
173
|
+
echo "Share URL: $WOWERPOINT_VIEWER_BASE/d/$DECK_ID"
|
|
174
|
+
fi
|
|
175
|
+
fi
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
On warning, the PDF on disk is still a valid deliverable — do not retry the upload.
|
|
179
|
+
|
|
180
|
+
Report briefly (under 200 words):
|
|
181
|
+
- Final artifact ID
|
|
182
|
+
- Time per phase (source wait, generation, render wait, download)
|
|
183
|
+
- Output file path + size
|
|
184
|
+
- Share URL (if produced)
|
|
185
|
+
- Any retries or warnings
|
|
186
|
+
- Exact error message if any step failed
|
|
187
|
+
|
|
188
|
+
Do NOT poll status manually. The `wait` commands handle backoff.
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
## Failure modes
|
|
192
|
+
|
|
193
|
+
- **`pip: command not found`** — modern macOS doesn't ship pip on PATH. Use `uv tool install`.
|
|
194
|
+
- **`Playwright not installed`** — install `notebooklm-py` with `--with playwright`, then `playwright install chromium`.
|
|
195
|
+
- **`Run 'notebooklm login' to authenticate`** — only the user can complete OAuth.
|
|
196
|
+
- **`task_id` parsed as empty string** — wrong JSON envelope key. `generate` returns `{"task_id": "..."}` at top level.
|
|
197
|
+
- **Rate-limit (`GENERATION_FAILED` or "No result found for RPC ID")** — `--retry 2` handles transients; persistent failure means wait 5–10 minutes or fall back to the web UI.
|
|
198
|
+
- **Source upload denied for sensitive docs** — confirm before adding sources containing credentials, customer data, or unreleased product info. NotebookLM is a Google service.
|
|
199
|
+
- **`--length long` does not exist** — only `default|short`. If the user asks for "long slides," use `default` and explain.
|
|
200
|
+
- **No `--style` flag** — kawaii lives in the prompt text.
|
|
201
|
+
|
|
202
|
+
## Operational tips
|
|
203
|
+
|
|
204
|
+
- **Rerun cheaply** — once the notebook + source exist, regenerating with a different prompt only repeats generation + download. Reuse `NOTEBOOK_ID` and `SOURCE_ID`.
|
|
205
|
+
- **Web UI fallback** — if generation is rate-limited >30 minutes, open the notebook URL, trigger generation in the UI, then `notebooklm artifact list -n <NOTEBOOK_ID>` and `download`.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!-- Generated by Pixelmator Pro 3.6.17 -->
|
|
3
|
+
<svg width="328" height="327" viewBox="0 0 328 327" xmlns="http://www.w3.org/2000/svg">
|
|
4
|
+
<g id="icon-thick-completed">
|
|
5
|
+
<path id="Path" fill="#ee9443" stroke="none" d="M 102.143021 15.109985 C 124.399521 6.597839 146.838608 0.814148 170.500641 1.142517 C 178.716675 1.256592 184.928009 4.778809 188.221222 12.564148 C 192.131836 21.809204 187.675385 32.968201 178.308319 36.536194 C 174.499176 37.987122 170.210297 39.14447 166.207672 38.960144 C 145.084 37.987 126.251495 45.816895 108.085022 54.783447 C 101.013763 58.273621 94.376038 64.903625 90.303864 71.747437 C 81.249969 86.963745 68.683197 98.688721 56.224823 110.687927 C 45.194839 121.311401 37.752762 133.868042 36.270981 149.298157 C 35.333755 159.057739 38.918953 168.018066 43.269821 176.487732 C 48.642563 186.946594 49.607574 198.020325 49.348831 209.462341 C 49.229034 214.759338 49.297974 220.136719 50.076202 225.359192 C 51.13385 232.456848 55.144928 237.91803 61.378815 241.596008 C 63.383698 242.778992 65.430359 243.940247 67.574722 244.829956 C 83.763855 251.546753 97.238754 261.650269 108.032684 275.601196 C 114.748367 284.281067 123.325409 290.831177 135.135101 289.901917 C 140.699997 289.464111 146.271561 287.914001 151.622803 286.192444 C 165.21907 281.818298 178.989075 280.611023 193.001343 283.258057 C 210.095184 286.487305 222.947113 280.610168 232.088593 265.940796 C 239.656372 253.796753 250.168091 244.837585 262.412537 237.534668 C 267.629059 234.42334 272.271271 230.168091 276.676208 225.916443 C 284.850586 218.026672 283.26178 207.977478 281.815948 198.196411 C 280.216736 187.377869 282.084747 177.171692 285.330505 166.805542 C 287.769135 159.01709 289.746948 150.571228 289.354858 142.543823 C 288.898254 133.196045 281.958679 126.555603 274.813629 120.722412 C 262.907257 111.002075 253.400421 99.691772 251.609131 83.625122 C 251.074951 78.833923 250.541107 74.030701 250.329742 69.21875 C 250.08316 63.604675 247.759796 59.19043 243.079437 56.287903 C 238.852234 53.666321 234.389679 51.398193 229.921539 49.196228 C 216.848724 42.753784 213.950043 27.349976 224.305084 18.449036 C 229.938202 13.606995 236.862122 13.132141 243.201904 15.625 C 262.293976 23.132446 277.067566 35.448792 283.134338 55.910461 C 284.725006 61.275391 285.178131 67.024841 285.728149 72.639404 C 286.461243 80.122681 289.553528 86.273743 294.768616 91.602539 C 301.394287 98.372742 308.7612 104.675049 314.152252 112.343567 C 326.11319 129.357178 329.543671 148.192627 322.225342 168.220764 C 318.505066 178.402039 316.802551 188.827332 317.877289 199.604309 C 320.515808 226.062927 309.154083 246.001892 289.051666 261.865967 C 283.568481 266.193054 277.323334 269.67511 272.349426 274.495911 C 266.423248 280.239441 261.273407 286.837769 256.165253 293.361694 C 240.566223 313.284546 220.852509 323.559692 195.203339 318.922852 C 181.849915 316.508789 169.312592 318.014526 156.549927 322.340332 C 128.791275 331.749023 105.282944 322.742676 84.499405 304.061523 C 77.946136 298.171021 72.037766 291.539246 65.29071 285.896729 C 61.008255 282.315308 55.838928 279.71698 50.867279 277.050842 C 31.686432 266.764404 18.30217 251.817322 13.808723 230.139771 C 12.550957 224.072021 12.645752 217.592896 13.001595 211.352783 C 13.513565 202.374756 12.749832 193.795959 9.017151 185.506409 C 4.141502 174.678528 0.361565 163.461487 0.147591 151.46405 C -0.268478 128.135742 8.54351 108.351929 24.183197 91.418823 C 28.588943 86.648743 33.638489 82.456482 37.878265 77.55426 C 43.191925 71.4104 48.86821 65.311707 52.818863 58.30835 C 64.201996 38.129456 80.781326 24.276245 102.143021 15.109985 Z"/>
|
|
6
|
+
<path id="path1" fill="#ee9443" stroke="none" d="M 177.816132 152.815186 C 191.282013 135.84552 204.424072 119.072571 217.830627 102.513794 C 222.283875 97.013489 228.385834 94.391418 235.566132 95.916077 C 243.398834 97.579224 248.658691 102.725464 249.203705 110.510254 C 249.534729 115.238892 248.017639 120.987549 245.313232 124.874084 C 236.577667 137.427856 227.077362 149.466003 217.560394 161.455688 C 201.420685 181.788879 185.291229 202.139771 168.680969 222.086487 C 157.115097 235.975647 140.902039 236.160095 129.093536 222.542542 C 123.268402 215.825012 118.55864 208.046204 113.969971 200.373413 C 107.730713 189.940674 101.93927 179.349426 93.154266 170.614319 C 84.420303 161.930115 82.955887 151.667053 88.21373 143.463806 C 94.485153 133.679199 108.943008 130.570801 117.990814 138.286194 C 123.506119 142.989258 127.616531 149.584167 131.544327 155.840088 C 136.043503 163.006226 139.188934 171.028992 143.759659 178.141602 C 148.237061 185.108887 151.258911 185.276123 156.6017 179.125671 C 163.907013 170.715942 170.625488 161.796448 177.816132 152.815186 Z"/>
|
|
7
|
+
</g>
|
|
8
|
+
</svg>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!-- Generated by Pixelmator Pro 3.6.17 -->
|
|
3
|
+
<svg width="295" height="339" viewBox="0 0 295 339" xmlns="http://www.w3.org/2000/svg">
|
|
4
|
+
<g id="icon-thick-investigated">
|
|
5
|
+
<path id="Path" fill="#ee9443" stroke="none" d="M 229.062531 225.062622 C 215.534576 231.309692 201.815216 234.810913 187.17041 233.883606 C 178.072418 233.307495 169.25061 234.487427 160.747803 237.888306 C 145.74324 243.889832 130.520584 242.407349 115.103485 239.659485 C 109.520187 238.664368 103.463379 238.559448 97.913162 239.599182 C 91.193512 240.858032 89.857742 246.409546 94.159653 251.608093 C 108.427109 268.849121 103.655029 289.726685 82.846451 298.619263 C 75.620636 301.707153 67.625809 303.104218 59.888016 304.85791 C 50.282639 307.034882 42.764755 311.295197 38.593872 320.941223 C 36.690849 325.342377 33.301422 329.377228 29.783783 332.738495 C 24.606377 337.685913 18.155121 338.136719 11.659698 335.23761 C 5.209885 332.358826 1.559677 327.350647 0.947311 320.210785 C 0.345543 313.194427 1.801857 306.664551 5.316139 300.567902 C 15.429329 283.023499 30.555946 273.203247 50.673309 270.968628 C 53.301224 270.676636 55.950958 270.209106 58.475998 269.444458 C 62.971725 268.08313 63.602158 266.009277 60.836716 262.152527 C 58.420456 258.782776 55.391068 255.764587 53.461945 252.14856 C 44.128372 234.653442 57.2845 217.667847 72.544739 212.954956 C 79.150009 210.915039 86.189026 210.282532 93.028107 208.995117 C 95.427124 208.543579 97.817413 208.045532 101.645859 207.283081 C 99.327225 204.565735 97.793701 202.596069 96.082932 200.794678 C 90.028107 194.41925 83.471466 188.463745 77.908737 181.689087 C 64.844833 165.779236 59.591553 146.643127 58.248764 126.666382 C 56.229111 96.620117 63.289093 68.849243 82.57254 44.979126 C 101.736938 21.256409 126.399551 6.920532 156.699341 3.060181 C 182.104431 -0.176514 207.001221 1.754333 230.040924 14.175964 C 263.505798 32.21814 284.351563 60.22937 290.406555 97.555054 C 294.291138 121.501221 294.880157 146.098694 284.244659 169.16748 C 272.668884 194.275696 254.271667 212.81134 229.062531 225.062622 M 244.872559 167.361755 C 246.057373 165.964722 247.295471 164.60907 248.418304 163.163879 C 255.00592 154.684448 259.361908 145.55304 258.956238 134.328857 C 258.616425 124.927002 259.09082 115.463867 259.744476 106.06543 C 260.732086 91.865112 257.144501 79.826782 245.442902 70.771606 C 239.933441 66.508179 235.032104 61.463989 229.57312 57.128784 C 223.865021 52.595825 218.260376 47.610107 211.829315 44.375488 C 197.484528 37.160461 182.032745 35.63031 166.134003 37.822998 C 133.72908 42.292175 111.445908 59.614502 99.478043 90.057617 C 88.486908 118.016174 92.658325 152.151917 119.026199 172.237122 C 128.423401 179.395264 135.325684 188.393066 138.320084 199.993469 C 139.583832 204.889343 142.883499 205.848633 147.055222 204.817383 C 150.593048 203.942871 153.99028 202.495239 157.443268 201.282898 C 166.797211 197.998596 176.204132 196.039429 186.293915 197.625366 C 200.123383 199.799133 212.669403 197.077393 223.127808 186.812866 C 229.893097 180.172974 237.269012 174.155273 244.872559 167.361755 Z"/>
|
|
6
|
+
<path id="path1" fill="#ee9544" stroke="none" d="M 194.897339 64.336914 C 206.583221 62.468262 215.635437 67.409302 224.302734 73.749695 C 238.771729 84.334229 245.725098 99.028931 246.693542 116.427734 C 247.490143 130.739807 244.072723 144.22644 234.096741 155.157959 C 231.991882 157.464417 228.721863 159.032837 225.692261 160.098389 C 220.342163 161.980103 215.459534 160.512878 211.675232 156.238647 C 208.011444 152.100525 207.832611 147.407654 209.515137 142.262695 C 211.309143 136.776733 213.460236 131.214111 213.99173 125.547668 C 215.227661 112.370483 209.723846 103.750244 197.700653 98.094055 C 196.345306 97.456421 195.014587 96.766052 193.65506 96.137695 C 186.781982 92.961365 182.817017 87.529785 183.136108 80.035217 C 183.449127 72.68335 187.378235 67.224609 194.897339 64.336914 Z"/>
|
|
7
|
+
</g>
|
|
8
|
+
</svg>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!-- Generated by Pixelmator Pro 3.6.17 -->
|
|
3
|
+
<svg width="353" height="364" viewBox="0 0 353 364" xmlns="http://www.w3.org/2000/svg">
|
|
4
|
+
<g id="icon-thick-learned">
|
|
5
|
+
<path id="Path" fill="#ee9443" stroke="none" d="M 271.450684 172.584045 C 273.343445 194.098389 270.338623 213.959534 256.262817 230.760376 C 252.104553 235.723694 247.645813 240.591919 242.633789 244.650269 C 232.838013 252.582214 229.652893 262.937012 229.050354 274.968018 C 228.661987 282.721924 226.516724 290.377747 225.94397 298.135498 C 225.449341 304.836121 225.212036 311.767395 226.361206 318.334229 C 228.871155 332.677612 225.07959 343.24469 212.557495 350.703888 C 207.639648 353.633392 202.04071 356.192383 196.458435 357.085266 C 181.075195 359.545837 165.563293 361.335999 150.04187 362.707977 C 145.997742 363.06546 141.407715 361.596954 137.642151 359.778809 C 131.365173 356.747955 128.71936 350.93808 129.12146 344.070404 C 129.577759 336.276611 133.243103 330.086884 140.756226 327.561218 C 146.495178 325.631989 152.669922 324.627563 158.727783 324.105865 C 167.84021 323.321045 177.024475 323.407349 186.169434 322.949463 C 191.91217 322.661987 195.344666 320.123352 194.87439 316.190308 C 194.651306 314.324951 192.947021 311.528442 191.41864 311.149231 C 187.805725 310.252808 183.879272 310.225464 180.109924 310.423889 C 164.817383 311.229126 149.53717 312.139893 134.361572 309.125916 C 126.080383 307.481201 121.892212 303.087891 122.043091 294.73584 C 122.186279 286.804382 123.350037 278.892029 124.047974 270.969788 C 125.085876 259.190063 119.776184 250.632141 110.74762 243.601074 C 87.049316 225.145813 79.709412 200.221619 82.73822 171.335754 C 84.429932 155.201782 90.26416 140.769165 100.286255 127.994385 C 116.374084 107.487671 136.94043 94.488403 162.88501 90.460144 C 210.062683 83.135254 254.294556 110.859192 268.11322 156.55188 C 269.643311 161.611084 270.288879 166.937805 271.450684 172.584045 M 229.007874 152.54834 C 226.673096 149.528137 224.618286 146.232605 221.960144 143.530518 C 196.655273 117.807373 141.948364 118.612122 121.780273 161.978516 C 113.200989 180.426147 114.518372 198.947449 131.426208 214.280396 C 135.984802 218.414429 140.783691 222.509155 144.377563 227.422607 C 148.632446 233.239502 152.880615 239.557251 154.981812 246.325378 C 157.495972 254.423828 157.874573 263.211731 158.882996 271.735962 C 159.210083 274.501221 159.49585 276.862671 162.831787 276.897949 C 170.791077 276.981995 178.7771 277.295837 186.704102 276.778931 C 192.626343 276.3927 193.906555 274.412476 194.184692 268.340576 C 195.02771 249.935364 201.677063 234.233765 215.025269 221.240723 C 221.435242 215.001343 228.310364 208.625122 232.63623 200.98645 C 241.793823 184.815918 238.45636 168.581177 229.007874 152.54834 Z"/>
|
|
6
|
+
<path id="path1" fill="#ee9544" stroke="none" d="M 158.952759 45.972473 C 158.945435 36.99884 158.837341 28.518555 158.958923 20.041565 C 159.11438 9.20166 166.629822 1.291138 176.675232 1.163452 C 187.241089 1.029175 194.853088 8.555664 195.05896 19.830017 C 195.268127 31.288025 195.33667 42.761047 194.987427 54.212891 C 194.707092 63.401917 187.224182 69.711426 177.172668 69.998657 C 167.616699 70.271729 160.188049 64.1026 159.223083 54.933838 C 158.928345 52.13324 159.032532 49.290649 158.952759 45.972473 Z"/>
|
|
7
|
+
<path id="path2" fill="#ee9545" stroke="none" d="M 240.151184 71.347107 C 246.59021 62.467346 252.821167 53.886292 259.300049 45.496765 C 262.225586 41.708618 265.23053 37.781555 268.930237 34.835205 C 275.682922 29.457458 285.254028 30.138916 290.921997 35.658813 C 297.144104 41.718323 298.258545 50.611267 292.924316 57.851807 C 285.630554 67.752258 278.067322 77.481018 270.14032 86.879028 C 264.368225 93.722168 255.518311 94.755554 247.930908 90.422729 C 241.237549 86.600525 238.141602 79.260254 240.151184 71.347107 Z"/>
|
|
8
|
+
<path id="path3" fill="#ee9545" stroke="none" d="M 94.416748 92.876099 C 90.227112 90.332947 85.729736 88.465088 82.824646 85.186401 C 75.340088 76.739258 68.420776 67.77478 61.542114 58.812439 C 55.871338 51.42395 56.928345 40.84552 63.497803 35.31958 C 70.645935 29.306885 81.690857 29.472839 87.88501 36.621399 C 96.041443 46.034546 103.694641 55.912842 111.109131 65.92804 C 115.180664 71.427734 115.128906 77.757874 111.843018 83.856567 C 108.197205 90.623291 102.277527 93.223328 94.416748 92.876099 Z"/>
|
|
9
|
+
<path id="path4" fill="#ee9545" stroke="none" d="M 327.237671 111.158447 C 339.058167 106.002991 350.032959 112.776855 351.524292 123.386963 C 352.453918 130.000122 348.8396 138.183655 342.590576 140.844788 C 331.583923 145.53186 320.502625 150.078064 309.278198 154.209351 C 298.968567 158.004028 290.227539 154.146057 286.725098 144.919678 C 283.136841 135.467163 287.600891 126.236633 297.930237 122.201233 C 307.530823 118.450562 317.217163 114.919128 327.237671 111.158447 Z"/>
|
|
10
|
+
<path id="path5" fill="#ee9545" stroke="none" d="M 60.526978 150.6521 C 54.4599 155.095764 48.345764 154.328491 42.21698 151.939087 C 32.62677 148.200134 23.100098 144.298462 13.517639 140.539246 C 3.66449 136.673767 -0.680115 127.512268 2.923706 118.00708 C 6.397583 108.844604 15.713013 104.776245 25.429688 108.514954 C 36.124695 112.630127 46.721008 117.005798 57.320618 121.364258 C 68.805969 126.086914 70.452515 143.709595 60.526978 150.6521 Z"/>
|
|
11
|
+
</g>
|
|
12
|
+
</svg>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!-- Generated by Pixelmator Pro 3.6.17 -->
|
|
3
|
+
<svg width="357" height="313" viewBox="0 0 357 313" xmlns="http://www.w3.org/2000/svg">
|
|
4
|
+
<g id="icon-thick-next-steps">
|
|
5
|
+
<path id="Path" fill="#ee9443" stroke="none" d="M 200.028198 247.999878 C 203.073303 243.603943 206.331726 239.728516 208.700806 235.36969 C 218.712036 216.950195 234.256958 205.057983 253.007629 196.675293 C 261.606873 192.830933 269.038208 187.471008 275.130615 180.018494 C 279.957092 174.114502 285.902893 169.137756 291.181824 163.587646 C 295.72467 158.811523 295.22168 156.284851 290.264404 152.069214 C 283.299316 146.146301 277.047729 139.305542 269.71405 133.914185 C 259.545471 126.438721 248.661316 119.935608 238.07312 113.032043 C 225.191956 104.633545 215.358826 93.802551 209.51947 79.301819 C 205.608276 69.589478 198.034119 62.773132 189.394409 57.04071 C 183.433105 53.085449 177.413147 49.111145 171.991882 44.475891 C 164.665039 38.211365 161.635071 30.016052 163.611877 20.313538 C 165.687683 10.125061 172.308899 4.53772 182.131592 2.495544 C 188.943298 1.079346 195.326477 3.127258 200.339233 7.435852 C 217.818848 22.459961 236.578552 36.260437 246.636597 58.263916 C 252.342773 70.746948 262.274841 79.434937 274.695679 85.635864 C 288.199707 92.377563 299.427551 101.974426 309.528381 113.447876 C 316.54425 121.417175 326.085815 127.183044 334.598694 133.805176 C 338.40448 136.765747 342.611755 139.21698 346.364075 142.238159 C 356.84729 150.679016 358.031616 163.997253 348.114685 173.076172 C 340.322327 180.209961 331.37793 186.165588 322.568237 192.083252 C 315.148804 197.066956 308.533325 202.696533 303.18103 209.862244 C 296.429993 218.900635 287.445496 225.226379 277.306519 229.781006 C 259.982971 237.562988 247.425415 250.171631 237.15509 265.963928 C 226.294312 282.664246 212.651855 297.092407 196.101624 308.432434 C 189.276978 313.108704 181.674683 314.306396 173.818054 310.920776 C 161.332764 305.540527 157.06665 286.928406 166.708801 276.03363 C 172.108887 269.932007 179.637939 265.744568 186.038635 260.48877 C 190.777893 256.597168 195.244507 252.373657 200.028198 247.999878 Z"/>
|
|
6
|
+
<path id="path1" fill="#ee9443" stroke="none" d="M 182.439697 114.401611 C 192.385376 116.187073 200.552246 120.709717 208.724854 125.747681 C 218.74353 131.923584 229.402832 137.083313 239.908691 142.440063 C 251.755737 148.480591 255.919739 160.852478 249.511841 171.751831 C 245.387085 178.7677 234.322571 182.39679 224.101135 180.377991 C 214.380859 178.458069 206.876282 172.931091 199.753052 166.476563 C 195.467896 162.593628 191.099548 158.587891 186.145752 155.709106 C 179.250549 151.702148 175.2099 152.796387 169.784729 158.514954 C 163.854492 164.765686 158.470825 171.658264 151.925659 177.175903 C 139.299438 187.819885 121.911133 184.144409 111.615967 174.971741 C 107.548035 171.347229 104.287842 166.814453 100.674744 162.682129 C 99.471436 161.305847 98.377991 159.829102 97.126526 158.499878 C 88.845886 149.704407 80.265747 149.49585 71.393799 157.672119 C 66.258667 162.40448 61.163147 167.222351 55.667725 171.512207 C 45.10083 179.76123 32.94519 183.092163 19.60321 181.742432 C 10.085205 180.779602 2.704285 174.59082 0.872681 166.334473 C -1.18573 157.055786 1.656006 148.790833 8.964783 144.524475 C 11.899231 142.811523 15.435059 141.362427 18.758667 141.219116 C 31.253113 140.680237 40.451477 134.163147 49.517212 126.429016 C 55.239807 121.546997 61.704163 116.61322 68.694397 114.319214 C 86.340393 108.528625 102.878235 111.76001 117.033264 124.4021 C 120.881348 127.838867 124.439758 131.600647 128.299622 135.023376 C 133.139954 139.31543 136.620483 139.065918 141.27771 134.542419 C 144.860046 131.062988 148.452271 127.588074 152.164551 124.249634 C 160.650452 116.618225 170.508057 112.989624 182.439697 114.401611 Z"/>
|
|
7
|
+
</g>
|
|
8
|
+
</svg>
|