@pencil-agent/nano-pencil 2.0.1 → 2.0.3
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/README.md +267 -267
- package/dist/build-meta.json +3 -3
- package/dist/core/export-html/AGENT.md +11 -11
- package/dist/core/export-html/template.css +971 -971
- package/dist/core/export-html/template.html +54 -54
- package/dist/core/model/custom-providers.js +1 -1
- package/dist/core/model-registry.js +5 -5
- package/dist/extensions/builtin/AGENT.md +115 -115
- package/dist/extensions/builtin/browser/AGENT.md +17 -17
- package/dist/extensions/builtin/browser/agent-workspace/agent_helpers.py +12 -12
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/amazon/product-search.md +198 -198
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/archive-org/scraping.md +341 -341
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/arxiv/scraping.md +311 -311
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/arxiv-bulk/scraping.md +333 -333
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/atlas/overview.md +70 -70
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/booking-com/scraping.md +578 -578
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/capterra/scraping.md +440 -440
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/centilebrain/generate-estimates.md +110 -110
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/coingecko/scraping.md +325 -325
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/coinmarketcap/scraping.md +463 -463
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/coursera/scraping.md +360 -360
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/craigslist/scraping.md +390 -390
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/crossref/scraping.md +568 -568
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/dev-to/scraping.md +323 -323
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/duckduckgo/scraping.md +349 -349
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/ebay/scraping.md +435 -435
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/etsy/scraping.md +506 -506
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/eventbrite/scraping.md +363 -363
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/expedia/automation.md +168 -168
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/facebook/groups.md +236 -236
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/facebook/pages.md +295 -295
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/framer/editor.md +108 -108
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/fred/scraping.md +493 -493
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/g2/scraping.md +580 -580
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/genius/scraping.md +511 -511
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/github/repo-actions.md +65 -65
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/github/scraping.md +184 -184
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/glassdoor/scraping.md +543 -543
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/gmail/compose.md +122 -122
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/goodreads/scraping.md +461 -461
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/gutenberg/scraping.md +383 -383
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/hackernews/scraping.md +243 -243
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/howlongtobeat/scraping.md +473 -473
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/imdb/scraping.md +271 -271
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/itch-io/scraping.md +436 -436
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/job-boards/indeed-glassdoor.md +1021 -1021
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/letterboxd/scraping.md +349 -349
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/linkedin/invitation-manager.md +109 -109
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/loom/folder-enumeration.md +170 -170
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/macrotrends/scraping.md +537 -537
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/medium/article-hydration.md +120 -120
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/medium/scraping.md +414 -414
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/metacritic/scraping.md +477 -477
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/musicbrainz/scraping.md +478 -478
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/nasa/scraping.md +339 -339
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/news-aggregation/multi-source.md +205 -205
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/open-library/scraping.md +472 -472
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/openalex/scraping.md +470 -470
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/openstreetmap/scraping.md +490 -490
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/package-registries/npm-pypi.md +478 -478
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/polymarket/scraping.md +234 -234
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/producthunt/scraping.md +307 -307
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/pubmed/scraping.md +421 -421
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/quora/scraping.md +364 -364
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/rawg/scraping.md +352 -352
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/reddit/scraping.md +124 -124
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/rest-countries/scraping.md +233 -233
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/sec-edgar/scraping.md +361 -361
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/README.md +36 -36
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/embedded-apps.md +72 -72
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/knowledge-base.md +109 -109
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/polaris-inputs.md +137 -137
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/soundcloud/scraping.md +362 -362
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/spotify/scraping.md +339 -339
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/stackoverflow/scraping.md +435 -435
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/steam/scraping.md +575 -575
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/substack/scraping.md +338 -338
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/thetechgeeks/pricing.md +52 -52
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/tiktok/upload.md +107 -107
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/tradingview/scraping.md +309 -309
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/trello/boards-and-lists.md +88 -88
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/trustpilot/scraping.md +375 -375
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/walmart/scraping.md +444 -444
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/wayback-machine/scraping.md +306 -306
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/weather/scraping.md +398 -398
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/wellfound/scraping.md +596 -596
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/world-bank/scraping.md +356 -356
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/xiaohongshu/scraping.md +84 -84
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/youtube/scraping.md +418 -418
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/zillow/scraping.md +433 -433
- package/dist/extensions/builtin/browser/browser.md +73 -73
- package/dist/extensions/builtin/browser/install.md +142 -142
- package/dist/extensions/builtin/browser/interaction-skills/connection.md +48 -48
- package/dist/extensions/builtin/browser/interaction-skills/cookies.md +3 -3
- package/dist/extensions/builtin/browser/interaction-skills/cross-origin-iframes.md +3 -3
- package/dist/extensions/builtin/browser/interaction-skills/dialogs.md +64 -64
- package/dist/extensions/builtin/browser/interaction-skills/downloads.md +3 -3
- package/dist/extensions/builtin/browser/interaction-skills/drag-and-drop.md +3 -3
- package/dist/extensions/builtin/browser/interaction-skills/dropdowns.md +3 -3
- package/dist/extensions/builtin/browser/interaction-skills/iframes.md +3 -3
- package/dist/extensions/builtin/browser/interaction-skills/network-requests.md +3 -3
- package/dist/extensions/builtin/browser/interaction-skills/print-as-pdf.md +3 -3
- package/dist/extensions/builtin/browser/interaction-skills/profile-sync.md +90 -90
- package/dist/extensions/builtin/browser/interaction-skills/screenshots.md +17 -17
- package/dist/extensions/builtin/browser/interaction-skills/scrolling.md +3 -3
- package/dist/extensions/builtin/browser/interaction-skills/shadow-dom.md +3 -3
- package/dist/extensions/builtin/browser/interaction-skills/tabs.md +69 -69
- package/dist/extensions/builtin/browser/interaction-skills/uploads.md +1 -1
- package/dist/extensions/builtin/browser/interaction-skills/viewport.md +3 -3
- package/dist/extensions/builtin/browser/src/browser_harness/AGENT.md +15 -15
- package/dist/extensions/builtin/browser/src/browser_harness/__init__.py +8 -8
- package/dist/extensions/builtin/browser/src/browser_harness/_ipc.py +90 -90
- package/dist/extensions/builtin/browser/src/browser_harness/admin.py +722 -722
- package/dist/extensions/builtin/browser/src/browser_harness/daemon.py +328 -328
- package/dist/extensions/builtin/browser/src/browser_harness/helpers.py +396 -396
- package/dist/extensions/builtin/browser/src/browser_harness/run.py +103 -103
- package/dist/extensions/builtin/debug/index.js +9 -9
- package/dist/extensions/builtin/discipline/skills/brainstorming/SKILL.md +33 -33
- package/dist/extensions/builtin/discipline/skills/executing-plans/SKILL.md +25 -25
- package/dist/extensions/builtin/discipline/skills/finishing-development-branch/SKILL.md +25 -25
- package/dist/extensions/builtin/discipline/skills/receiving-code-review/SKILL.md +22 -22
- package/dist/extensions/builtin/discipline/skills/requesting-code-review/SKILL.md +31 -31
- package/dist/extensions/builtin/discipline/skills/systematic-debugging/SKILL.md +28 -28
- package/dist/extensions/builtin/discipline/skills/test-driven-development/SKILL.md +32 -32
- package/dist/extensions/builtin/discipline/skills/using-git-worktrees/SKILL.md +25 -25
- package/dist/extensions/builtin/discipline/skills/verification-before-completion/SKILL.md +27 -27
- package/dist/extensions/builtin/discipline/skills/writing-plans/SKILL.md +26 -26
- package/dist/extensions/builtin/goal/README.md +67 -67
- package/dist/extensions/builtin/goal/index.js +6 -6
- package/dist/extensions/builtin/grub/README.md +112 -112
- package/dist/extensions/builtin/link-world/agent-workspace/README.md +16 -16
- package/dist/extensions/builtin/link-world/internet-search/internet-search.md +65 -65
- package/dist/extensions/builtin/link-world/link-world-agent.md +82 -82
- package/dist/extensions/builtin/link-world/linkworld.md +313 -313
- package/dist/extensions/builtin/link-world/network-routing/network-routing.md +67 -67
- package/dist/extensions/builtin/loop/README.md +92 -92
- package/dist/extensions/builtin/mcp/figma-design.md +68 -68
- package/dist/extensions/builtin/mcp/mcp-management.md +85 -85
- package/dist/extensions/builtin/recap/AGENT.md +15 -15
- package/dist/extensions/builtin/sal/README.md +72 -72
- package/dist/extensions/builtin/security-audit/README.md +289 -289
- package/dist/extensions/builtin/team/AGENT.md +112 -112
- package/dist/extensions/builtin/team/TESTING.md +299 -299
- package/dist/extensions/builtin/token-save/README.md +56 -56
- package/dist/extensions/optional/AGENT.md +10 -10
- package/dist/modes/interactive/controllers/input-submit-controller.js +2 -2
- package/dist/modes/interactive/controllers/stream-render-controller.js +2 -2
- package/dist/modes/interactive/interactive-mode.js +19 -19
- package/dist/modes/interactive/theme/dark.json +85 -85
- package/dist/modes/interactive/theme/light.json +84 -84
- package/dist/modes/interactive/theme/theme-schema.json +335 -335
- package/dist/modes/interactive/theme/warm.json +81 -81
- package/dist/node_modules/@pencil-agent/ai/dist/cli.js +0 -0
- package/dist/node_modules/@pencil-agent/ai/dist/models.generated.js +1 -1
- package/docs/ACP/345/215/217/350/256/256/351/233/206/346/210/220/345/274/200/345/217/221/346/226/207/346/241/243.md +851 -0
- package/docs/SDK-TESTING.md +364 -0
- package/docs/codex-goal-command-impl.md +1055 -1055
- package/docs/codex-goal-vs-grub.md +500 -500
- package/docs/custom-provider.md +27 -27
- package/docs/extensions.md +27 -27
- package/docs/keybindings.md +27 -27
- package/docs/loop /351/207/215/346/236/204/345/256/214/346/210/220/346/200/273/347/273/223.md" +250 -250
- package/docs/loop /351/207/215/346/236/204/345/256/214/346/210/220/346/212/245/345/221/212.md" +122 -122
- package/docs/loop /351/207/215/346/236/204/346/226/271/346/241/210.md" +1222 -1222
- package/docs/loop /351/207/215/346/236/204/346/226/271/346/241/210/345/256/236/347/216/260/346/212/245/345/221/212.md" +158 -158
- package/docs/loop /351/207/215/346/236/204/346/226/271/346/241/210/345/257/271/346/257/224/345/210/206/346/236/220.md" +128 -128
- package/docs/loop /351/207/215/346/236/204/350/256/241/345/210/222.md" +320 -320
- package/docs/loop-usage-examples.md +214 -214
- package/docs/mem-core/346/212/200/346/234/257/346/226/207/346/241/243.md +593 -0
- package/docs/models.md +27 -27
- package/docs/packages.md +27 -27
- package/docs/pi-design-philosophy.md +457 -457
- package/docs/planmode.md +1987 -1987
- package/docs/prompt-templates.md +27 -27
- package/docs/providers.md +27 -27
- package/docs/sdk.md +27 -27
- package/docs/skills.md +27 -27
- package/docs/startup-performance-optimization.md +301 -0
- package/docs/themes.md +27 -27
- package/docs/tui.md +27 -27
- package/docs//350/256/244/347/237/245/345/234/260/345/233/276.md +47 -0
- package/package.json +190 -190
- package/docs/cc-agent-design.md +0 -1297
- package/docs/cc-tui-design.md +0 -1333
- package/docs/nanoPencil-/345/255/246/344/271/240/350/256/241/345/210/222.md +0 -170
- package/docs/scan-report.md +0 -3820
- package/docs//345/257/271/346/240/207Claude-Code.md +0 -1775
- package/docs//351/230/277/351/207/214/345/267/264/345/267/264/350/264/242/346/212/245/345/210/206/346/236/220/344/271/246.md +0 -261
|
@@ -1,215 +1,215 @@
|
|
|
1
|
-
# Loop Extension Usage Examples
|
|
2
|
-
|
|
3
|
-
## Basic Usage
|
|
4
|
-
|
|
5
|
-
### Session-Scoped Loops (Default)
|
|
6
|
-
|
|
7
|
-
Session-scoped loops are cleared when you close the session.
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
# Check the build every 10 minutes (default)
|
|
11
|
-
/loop check the build
|
|
12
|
-
|
|
13
|
-
# Run a command every 5 minutes
|
|
14
|
-
/loop 5m /grub status
|
|
15
|
-
|
|
16
|
-
# Check PR reviews every 20 minutes
|
|
17
|
-
/loop every 20m Review test failures
|
|
18
|
-
|
|
19
|
-
# Remind to drink water every 30 minutes
|
|
20
|
-
/loop Drink water every 30m --name hydrate --max 8 --quiet
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
### Durable Loops (Persistent Across Sessions)
|
|
24
|
-
|
|
25
|
-
Durable loops are saved to `.nanopencil/loop-tasks.json` and resume when you reopen the project.
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
# Monitor build status every 5 minutes, persists across sessions
|
|
29
|
-
/loop Check build status every 5m --durable
|
|
30
|
-
|
|
31
|
-
# Check for new commits every hour
|
|
32
|
-
/loop 1h Check for new commits --durable
|
|
33
|
-
|
|
34
|
-
# Daily status check at 9 AM
|
|
35
|
-
/loop Daily status check --durable --name daily-check
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
## Managing Loops
|
|
39
|
-
|
|
40
|
-
### List All Loops
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
/loop list
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
Output:
|
|
47
|
-
```
|
|
48
|
-
[Loop] 3 scheduled tasks:
|
|
49
|
-
- build-monitor (abc123) every 5m next in 3m [durable] Check build status
|
|
50
|
-
- hydrate (def456) every 30m next in 15m [quiet, max 2/8] Drink water every 30m
|
|
51
|
-
- ghi789 every 10m next in 8m /grub status
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### Get Loop Status
|
|
55
|
-
|
|
56
|
-
```bash
|
|
57
|
-
/loop status build-monitor
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
Output:
|
|
61
|
-
```
|
|
62
|
-
[Loop] build-monitor (abc123) — scheduled
|
|
63
|
-
Every: 5m
|
|
64
|
-
Kind: prompt (durable)
|
|
65
|
-
Next run: Sat Apr 18 2025 01:05:00 GMT+0800 (in 3m)
|
|
66
|
-
Last run: Sat Apr 18 2025 01:00:00 GMT+0800
|
|
67
|
-
Run count: 5
|
|
68
|
-
Input: Check build status
|
|
69
|
-
Last output: Build is green
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
### Pause and Resume
|
|
73
|
-
|
|
74
|
-
```bash
|
|
75
|
-
/loop pause build-monitor
|
|
76
|
-
/loop resume build-monitor
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
### Run Immediately
|
|
80
|
-
|
|
81
|
-
```bash
|
|
82
|
-
/loop run build-monitor
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
### Cancel a Loop
|
|
86
|
-
|
|
87
|
-
```bash
|
|
88
|
-
/loop cancel build-monitor
|
|
89
|
-
# or by ID
|
|
90
|
-
/loop cancel abc123
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
### Clear All Loops
|
|
94
|
-
|
|
95
|
-
```bash
|
|
96
|
-
/loop clear
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
## Advanced Features
|
|
100
|
-
|
|
101
|
-
### Named Loops
|
|
102
|
-
|
|
103
|
-
```bash
|
|
104
|
-
/loop Check build every 5m --name build-monitor
|
|
105
|
-
/loop pause build-monitor
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
### Maximum Runs
|
|
109
|
-
|
|
110
|
-
```bash
|
|
111
|
-
/loop Drink water every 30m --name hydrate --max 8 --quiet
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
### Quiet Mode
|
|
115
|
-
|
|
116
|
-
Suppresses per-tick UI messages (errors and terminal events still surface):
|
|
117
|
-
|
|
118
|
-
```bash
|
|
119
|
-
/loop 5m Check system status --quiet
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
### Combining Flags
|
|
123
|
-
|
|
124
|
-
```bash
|
|
125
|
-
/loop Check build every 5m --name build-monitor --durable --quiet
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
## Durable vs Session-Scoped Loops
|
|
129
|
-
|
|
130
|
-
| Feature | Session-Scoped | Durable |
|
|
131
|
-
|---------|---------------|---------|
|
|
132
|
-
| Persistence | Lost when session closes | Saved to disk |
|
|
133
|
-
| Multi-process safety | N/A (per-process) | Protected by lock |
|
|
134
|
-
| Use case | Temporary tasks | Long-running monitoring |
|
|
135
|
-
| Storage | In-memory | `.nanopencil/loop-tasks.json` |
|
|
136
|
-
|
|
137
|
-
## Real-World Examples
|
|
138
|
-
|
|
139
|
-
### Development Workflow
|
|
140
|
-
|
|
141
|
-
```bash
|
|
142
|
-
# Monitor build status while developing
|
|
143
|
-
/loop npm run build --name build-check
|
|
144
|
-
|
|
145
|
-
# Run tests every time you save
|
|
146
|
-
/loop npm test --name test-checker --quiet
|
|
147
|
-
|
|
148
|
-
# Check for linting errors
|
|
149
|
-
/loop npm run lint --name linter --durable
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
### Project Monitoring
|
|
153
|
-
|
|
154
|
-
```bash
|
|
155
|
-
# Check for new git commits
|
|
156
|
-
/loop git pull --name git-update --durable
|
|
157
|
-
|
|
158
|
-
# Monitor dependencies
|
|
159
|
-
/loop npm outdated --name deps-check --durable
|
|
160
|
-
|
|
161
|
-
# Check server health
|
|
162
|
-
/loop curl http://localhost:3000/health --name health-check --durable
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
### Productivity
|
|
166
|
-
|
|
167
|
-
```bash
|
|
168
|
-
# Take breaks
|
|
169
|
-
/loop Take a break every hour --name break-reminder --max 4
|
|
170
|
-
|
|
171
|
-
# Daily standup reminder
|
|
172
|
-
/loop Daily standup every 24h --name standup --durable
|
|
173
|
-
|
|
174
|
-
# Code review reminder
|
|
175
|
-
/loop Review pending PRs every 2h --name pr-review --durable
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
## Troubleshooting
|
|
179
|
-
|
|
180
|
-
### Loop Not Running
|
|
181
|
-
|
|
182
|
-
1. Check if loop is paused: `/loop status <name>`
|
|
183
|
-
2. Check if max runs reached: look at run count in status
|
|
184
|
-
3. Check if session is idle: loops only run when agent is idle
|
|
185
|
-
|
|
186
|
-
### Durable Loop Not Persisting
|
|
187
|
-
|
|
188
|
-
1. Check if `.nanopencil/loop-tasks.json` exists
|
|
189
|
-
2. Verify you used `--durable` flag
|
|
190
|
-
3. Check file permissions on project directory
|
|
191
|
-
|
|
192
|
-
### Multiple Instances Triggering Same Loop
|
|
193
|
-
|
|
194
|
-
The scheduler lock prevents this. If you see multiple triggers:
|
|
195
|
-
1. Check if lock file exists: `.nanopencil/loop-scheduler.lock`
|
|
196
|
-
2. Manually remove lock file if necessary
|
|
197
|
-
3. Restart nanoPencil
|
|
198
|
-
|
|
199
|
-
## File Locations
|
|
200
|
-
|
|
201
|
-
```
|
|
202
|
-
<nanopencil>
|
|
203
|
-
├── .nanopencil/
|
|
204
|
-
│ ├── loop-tasks.json # Durable loop storage
|
|
205
|
-
│ └── loop-scheduler.lock # Scheduler lock file
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
## Best Practices
|
|
209
|
-
|
|
210
|
-
1. **Use meaningful names**: `--name` makes it easier to manage loops
|
|
211
|
-
2. **Set appropriate intervals**: Don't poll too frequently (minimum 1m)
|
|
212
|
-
3. **Use durable for long-running tasks**: `--durable` for tasks that should survive session restarts
|
|
213
|
-
4. **Use max runs for finite tasks**: `--max` for tasks that should auto-cancel
|
|
214
|
-
5. **Use quiet for frequent tasks**: `--quiet` reduces UI noise
|
|
1
|
+
# Loop Extension Usage Examples
|
|
2
|
+
|
|
3
|
+
## Basic Usage
|
|
4
|
+
|
|
5
|
+
### Session-Scoped Loops (Default)
|
|
6
|
+
|
|
7
|
+
Session-scoped loops are cleared when you close the session.
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Check the build every 10 minutes (default)
|
|
11
|
+
/loop check the build
|
|
12
|
+
|
|
13
|
+
# Run a command every 5 minutes
|
|
14
|
+
/loop 5m /grub status
|
|
15
|
+
|
|
16
|
+
# Check PR reviews every 20 minutes
|
|
17
|
+
/loop every 20m Review test failures
|
|
18
|
+
|
|
19
|
+
# Remind to drink water every 30 minutes
|
|
20
|
+
/loop Drink water every 30m --name hydrate --max 8 --quiet
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Durable Loops (Persistent Across Sessions)
|
|
24
|
+
|
|
25
|
+
Durable loops are saved to `.nanopencil/loop-tasks.json` and resume when you reopen the project.
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# Monitor build status every 5 minutes, persists across sessions
|
|
29
|
+
/loop Check build status every 5m --durable
|
|
30
|
+
|
|
31
|
+
# Check for new commits every hour
|
|
32
|
+
/loop 1h Check for new commits --durable
|
|
33
|
+
|
|
34
|
+
# Daily status check at 9 AM
|
|
35
|
+
/loop Daily status check --durable --name daily-check
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Managing Loops
|
|
39
|
+
|
|
40
|
+
### List All Loops
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
/loop list
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Output:
|
|
47
|
+
```
|
|
48
|
+
[Loop] 3 scheduled tasks:
|
|
49
|
+
- build-monitor (abc123) every 5m next in 3m [durable] Check build status
|
|
50
|
+
- hydrate (def456) every 30m next in 15m [quiet, max 2/8] Drink water every 30m
|
|
51
|
+
- ghi789 every 10m next in 8m /grub status
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Get Loop Status
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
/loop status build-monitor
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Output:
|
|
61
|
+
```
|
|
62
|
+
[Loop] build-monitor (abc123) — scheduled
|
|
63
|
+
Every: 5m
|
|
64
|
+
Kind: prompt (durable)
|
|
65
|
+
Next run: Sat Apr 18 2025 01:05:00 GMT+0800 (in 3m)
|
|
66
|
+
Last run: Sat Apr 18 2025 01:00:00 GMT+0800
|
|
67
|
+
Run count: 5
|
|
68
|
+
Input: Check build status
|
|
69
|
+
Last output: Build is green
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Pause and Resume
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
/loop pause build-monitor
|
|
76
|
+
/loop resume build-monitor
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Run Immediately
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
/loop run build-monitor
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Cancel a Loop
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
/loop cancel build-monitor
|
|
89
|
+
# or by ID
|
|
90
|
+
/loop cancel abc123
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Clear All Loops
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
/loop clear
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Advanced Features
|
|
100
|
+
|
|
101
|
+
### Named Loops
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
/loop Check build every 5m --name build-monitor
|
|
105
|
+
/loop pause build-monitor
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Maximum Runs
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
/loop Drink water every 30m --name hydrate --max 8 --quiet
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Quiet Mode
|
|
115
|
+
|
|
116
|
+
Suppresses per-tick UI messages (errors and terminal events still surface):
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
/loop 5m Check system status --quiet
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Combining Flags
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
/loop Check build every 5m --name build-monitor --durable --quiet
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Durable vs Session-Scoped Loops
|
|
129
|
+
|
|
130
|
+
| Feature | Session-Scoped | Durable |
|
|
131
|
+
|---------|---------------|---------|
|
|
132
|
+
| Persistence | Lost when session closes | Saved to disk |
|
|
133
|
+
| Multi-process safety | N/A (per-process) | Protected by lock |
|
|
134
|
+
| Use case | Temporary tasks | Long-running monitoring |
|
|
135
|
+
| Storage | In-memory | `.nanopencil/loop-tasks.json` |
|
|
136
|
+
|
|
137
|
+
## Real-World Examples
|
|
138
|
+
|
|
139
|
+
### Development Workflow
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
# Monitor build status while developing
|
|
143
|
+
/loop npm run build --name build-check
|
|
144
|
+
|
|
145
|
+
# Run tests every time you save
|
|
146
|
+
/loop npm test --name test-checker --quiet
|
|
147
|
+
|
|
148
|
+
# Check for linting errors
|
|
149
|
+
/loop npm run lint --name linter --durable
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Project Monitoring
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
# Check for new git commits
|
|
156
|
+
/loop git pull --name git-update --durable
|
|
157
|
+
|
|
158
|
+
# Monitor dependencies
|
|
159
|
+
/loop npm outdated --name deps-check --durable
|
|
160
|
+
|
|
161
|
+
# Check server health
|
|
162
|
+
/loop curl http://localhost:3000/health --name health-check --durable
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Productivity
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
# Take breaks
|
|
169
|
+
/loop Take a break every hour --name break-reminder --max 4
|
|
170
|
+
|
|
171
|
+
# Daily standup reminder
|
|
172
|
+
/loop Daily standup every 24h --name standup --durable
|
|
173
|
+
|
|
174
|
+
# Code review reminder
|
|
175
|
+
/loop Review pending PRs every 2h --name pr-review --durable
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## Troubleshooting
|
|
179
|
+
|
|
180
|
+
### Loop Not Running
|
|
181
|
+
|
|
182
|
+
1. Check if loop is paused: `/loop status <name>`
|
|
183
|
+
2. Check if max runs reached: look at run count in status
|
|
184
|
+
3. Check if session is idle: loops only run when agent is idle
|
|
185
|
+
|
|
186
|
+
### Durable Loop Not Persisting
|
|
187
|
+
|
|
188
|
+
1. Check if `.nanopencil/loop-tasks.json` exists
|
|
189
|
+
2. Verify you used `--durable` flag
|
|
190
|
+
3. Check file permissions on project directory
|
|
191
|
+
|
|
192
|
+
### Multiple Instances Triggering Same Loop
|
|
193
|
+
|
|
194
|
+
The scheduler lock prevents this. If you see multiple triggers:
|
|
195
|
+
1. Check if lock file exists: `.nanopencil/loop-scheduler.lock`
|
|
196
|
+
2. Manually remove lock file if necessary
|
|
197
|
+
3. Restart nanoPencil
|
|
198
|
+
|
|
199
|
+
## File Locations
|
|
200
|
+
|
|
201
|
+
```
|
|
202
|
+
<nanopencil>
|
|
203
|
+
├── .nanopencil/
|
|
204
|
+
│ ├── loop-tasks.json # Durable loop storage
|
|
205
|
+
│ └── loop-scheduler.lock # Scheduler lock file
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## Best Practices
|
|
209
|
+
|
|
210
|
+
1. **Use meaningful names**: `--name` makes it easier to manage loops
|
|
211
|
+
2. **Set appropriate intervals**: Don't poll too frequently (minimum 1m)
|
|
212
|
+
3. **Use durable for long-running tasks**: `--durable` for tasks that should survive session restarts
|
|
213
|
+
4. **Use max runs for finite tasks**: `--max` for tasks that should auto-cancel
|
|
214
|
+
5. **Use quiet for frequent tasks**: `--quiet` reduces UI noise
|
|
215
215
|
6. **Monitor loops**: Regularly check `/loop list` to ensure loops are working as expected
|