Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Read, summarize, propose edits, and write back changes to Markdown todo files using line-stable bot markers without altering task identity or completing tasks.
Read, summarize, propose edits, and write back changes to Markdown todo files using line-stable bot markers without altering task identity or completing tasks.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Operate on todolist-md: a Markdown-first todo viewer/editor. The app does not contain an AI; the bot reads/writes Markdown.
Markdown is the system of record. Itโs fine to discuss in chat, but final answers/decisions must be written into Markdown. Use only bot markers of this form. <!-- bot: ... --> Do not introduce other syntaxes (no Question[id=...], no custom metadata blocks). Preserve task identity. todolist-md derives task IDs from Markdown line positions. Some storage backends also have a stable identity key (e.g. Drive fileId, local path, S3 bucket+key). Do not โreplaceโ a file in a way that changes its identity key unless the user explicitly accepts it. Keep write-back edits line-stable. Avoid adding/removing lines inside an existing task item or its description blockquote. Prefer single-line, in-place edits (edit text on an existing line). Last review stamp (Option B: top-of-file header line) Goal: a single line near the top recording last bot review time. Rule: never insert a new line once the header exists. Only update the existing header line. If the header does not exist, you may insert it at the very top only if the user explicitly opted into Option B. Canonical format: <!-- bot: last_review --> 2026-02-04T15:39Z root=<rootFolderId> model=<model> Never complete tasks without explicit user confirmation.
Tasks use GFM checkboxes: - [ ] and - [x] Optional tags: #tag Optional due date: due:YYYY-MM-DD Optional description: a blockquote directly under the task
Ask once, then persist the answers (in memory/config) for future runs. Q: storageKind? A: google-drive | local-folder | s3 | other Q: What is the stable identity key for files? Drive: fileId Local: path S3: bucket+key Q: Where is the root? Drive: rootFolderId Local: root directory path S3: bucket + optional prefix
When a Drive folder contains many .md files, not all of them should necessarily be AI-reviewed. Recommendation (simple + app-controlled): The Chrome app should write a small per-file config key/marker so the agent can know whether a file is opted-in. Two easy options:
Create a config file in the same folder: .todolist-md.config.json Example: { "ai": { "enabled": true, "include": ["*.md"], "exclude": ["todoapp.md"], "botSuggestedSectionTitle": "Tasks (bot-suggested)" } } The agent should: Download .todolist-md.config.json when it changes. Only review files that match include/exclude rules.
Add a single line near the top of the markdown file: <!-- bot: ai_enabled --> true The agent should only review files containing that marker.
Do not call an LLM unless a file changed. Use code-first change detection.
For each .md under root, compare modifiedTime/size (or etag when available) against a local state file. If unchanged since last scan: skip (no download, no LLM).
Only for changed files: Download the file Extract open tasks (- [ ]) and relevant context (Optional) call the LLM on the extracted subset, not the full document
Before writing back, compute a hash; if no changes, do not write.
For each reviewed file, update (not append) the top-of-file header line: <!-- bot: last_review --> <ISO_UTC> root=<rootFolderId> model=<model>
<!-- bot: suggested --> for bot-suggested sections <!-- bot: question --> for in-file Q/A <!-- bot: digest --> for summaries/digests <!-- bot: note --> for short audit notes (optional)
When you want LLM help but must keep Drive as the source of truth (and keep costs low), use the two-stage flow:
Goal: generate a compact JSON request for the OpenClaw agent runtime (LLM), without calling any LLM from the Node script. What happens: List folder files (cheap; no downloads) Compare each file's modifiedTime/size against a local state file Download only changed .md Extract only open tasks (- [ ] ..., max N lines) Write llm_request.json Command example (single file): node skills/todolist-md-clawdbot/scripts/todolist_drive_folder_agent.mjs \ --folderId <rootFolderId> \ --onlyName vyond.md \ --mode prepare \ --requestOut outputs/todolist-md/vyond_llm_request.json
Goal: take a suggestions JSON (produced by the agent runtime) and write it back only to a dedicated bot section. Rules: Update only under: ## Tasks (bot-suggested) <!-- bot: suggested --> Never mark tasks complete. Use Drive API overwrite update by fileId (no duplicates). Use a revision gate (headRevisionId) to avoid overwriting while you edit in Chrome. Suggestions JSON shape: { "schema": "todolist-md.llm_suggestions.v1", "items": [ { "fileId": "...", "name": "vyond.md", "suggested_markdown": "- [ ] ...\n > <!-- bot: note --> ..." } ] } Command example: node skills/todolist-md-clawdbot/scripts/todolist_drive_folder_agent.mjs \ --folderId <rootFolderId> \ --mode apply \ --suggestionsIn outputs/todolist-md/vyond_llm_suggestions.json
Example: if a folder has 50 Markdown files, but only 1 changed: LLM is called only for that 1 file. The prompt includes only extracted open tasks (- [ ] ...), not the entire Markdown.
If you want to keep tasks clean while preserving history: Append an entry to ## Bot Log. Replace the original Q/A line in-place with a short placeholder: > <!-- bot: question --> (archived to Bot Log)
Summarize in chat for fast feedback. Optionally write a digest into Markdown as a single comment line: <!-- bot: digest --> Top 3 next actions: 1) โฆ 2) โฆ 3) โฆ
Always mark bot-written content with <!-- bot: ... -->. Never delete/add lines inside an existing task item or description block. Never mark tasks complete unless the user explicitly confirms.
Writing, remixing, publishing, visual generation, and marketing content production.
Largest current source with strong distribution and engagement signals.