skills/memos/SKILL.md
Use this skill whenever the user wants to work with the Memos REST API for memos, attachments, or activities, including creating, reading, querying, updating, deleting memos, managing memo comments/reactions/relations/attachments, listing and inspecting activities, or creating memos with hashtag-based tagging after checking existing tags from a Memos instance.
npx skillsauth add jtsang4/efficient-coding memosInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill combines two layers:
Scope is intentionally limited to:
It does not cover user management, auth setup beyond the local .env, shortcuts, identity providers, or instance settings. If the request drifts there, say the skill scope is limited instead of guessing unsupported commands.
scripts/memos.tsops, describe, and calllatest, recent, and searchlist-tags helper that aggregates existing tags, counts, recency, and sample memo snippetsreferences/api-summary.mdreferences/query-recipes.md.env contains:
MEMOS_BASE_URLMEMOS_ACCESS_TOKENbun run scripts/memos.ts config
MEMOS_BASE_URL may be either the instance root such as http://localhost:5230 or the API base such as http://localhost:5230/api/v1. The CLI normalizes both.
Use the high-level commands first when the user asked for a retrieval task, not a specific endpoint.
bun run scripts/memos.ts latest --count 5
bun run scripts/memos.ts recent --days 7 --window rolling --include-content
bun run scripts/memos.ts search --text agent --tag Thought --days 30
bun run scripts/memos.ts list-tags --limit 100 --sample-size 2
Use call when the user explicitly needs one documented endpoint or a write operation.
bun run scripts/memos.ts describe MemoService_UpdateMemo
bun run scripts/memos.ts call MemoService_UpdateMemo \
--path memo=YOUR_MEMO_ID \
--query updateMask=content,visibility \
--body '{"content":"Updated content","visibility":"PROTECTED"}'
call --paginate returns { operationId, pageCount, pages: [...] }, not a top-level { memos: [...] }. Flatten pages[*].memos before post-processing.displayTime first, then fall back to createTime.orderBy='display_time desc' plus local filtering. Do not assume the server-side filter field supports stable time semantics across versions.state=NORMAL so archived or deleted content does not silently leak into user-facing summaries.search --tag matches the memo tags array exactly. It is not a full-text hashtag parser over content.Memo.tags is extracted by the server from hashtags in content. Treat it as output-only unless the deployed API docs explicitly say otherwise.When the user asks questions like:
Thought tag 的 memo 有哪些Use:
latest, recent, or searchRead references/query-recipes.md when you need concrete examples or want to choose between rolling and calendar time windows.
When the user asks to create a memo with tags or hashtags:
bun run scripts/memos.ts list-tags ... first to inspect the existing tag vocabulary.search --tag ... on the likely choices to inspect prior memo context.content as hashtags, usually at the top, for example:{
"state": "NORMAL",
"visibility": "PRIVATE",
"content": "#memos #openclaw\n\nImplemented tag discovery before creating this memo."
}
MemoService_CreateMemo with that content body.Prefer reusing an existing tag when it clearly expresses the same concept. If the meaning is uncertain, inspect old memo examples first instead of inventing normalization rules.
When creating or updating a memo, if the content is too long for one memo:
MemoService_CreateMemoComment.Use this as the default fallback instead of truncating content silently.
When the user asks to create, update, delete, attach files, add reactions, or inspect one exact endpoint:
bun run scripts/memos.ts opsbun run scripts/memos.ts describe <operationId>bun run scripts/memos.ts call <operationId> ...This keeps the agent aligned with the documented API surface instead of inventing raw requests.
Path placeholders usually expect bare ids:
--path memo=0195c...--path attachment=abc123--path activity=evt_123Request bodies often expect full resource names:
memos/0195c...attachments/abc123If you accidentally pass a full resource name into a path flag, the CLI strips the leading path and keeps the last segment.
Patch endpoints such as:
AttachmentService_UpdateAttachmentMemoService_UpdateMemoneed --query updateMask=....
Without it, many updates fail or update less than expected.
Prefer @file.json for larger bodies:
bun run scripts/memos.ts call MemoService_CreateMemo --body @/tmp/memo.json
Use the helper for attachments instead of hand-building base64:
bun run scripts/memos.ts attachment-body --file /path/to/file --output /tmp/body.json
Then create the attachment:
bun run scripts/memos.ts call AttachmentService_CreateAttachment --body @/tmp/body.json
references/query-recipes.md for recent/latest/search workflows, time-window semantics, and memo post-processing examples.references/api-summary.md for the compact endpoint catalog, body hints, and pagination details.When using this skill for execution:
latest, recent, or search for retrieval tasks instead of hand-writing pagination logic each timetesting
Create professional SVG diagrams of any type — architecture diagrams, flowcharts, sequence diagrams, structural diagrams, mind maps, timelines, illustrative/conceptual diagrams, and more. Supports light (default) and dark themes. Use this skill whenever the user asks for any kind of technical or conceptual diagram, visualization of a system, process flow, data flow, component relationship, network topology, decision tree, org chart, state machine, or any visual representation of structure/logic/process. Also trigger when the user says "画个图" "画一个架构图" "diagram" "flowchart" "sequence diagram" "draw me a ..." or uploads content and asks to visualize it. Output is always a standalone .svg file.
development
Use when you have a spec or requirements for a multi-step task, before touching code
development
Manage Git worktrees. Use when asked to create/switch/list/merge/remove worktrees, to keep multiple branches in parallel directories, or to clean up worktrees safely during development.
development
Use when implementing any feature or bugfix, before writing implementation code