skills/fastnote-cli-operator/SKILL.md
Operate the FastNote local notebook through natural language by mapping requests to note CRUD, search, pin, and tag commands. Use this whenever the user wants to create, list, inspect, update, pin, unpin, delete, or review FastNote notes or tags, even if they never mention the CLI. Execute the bundled zero-dependency script directly instead of relying on the project package runtime.
npx skillsauth add hexbee/hello-skills fastnote-cli-operatorInstall 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.
Use this skill to turn natural-language FastNote requests into direct local note operations.
scripts/fastnote_cli.pyMap user intent onto one of these commands:
listget <id>createupdate <id>delete <id>pin <id> --value true|falsetagslist returns note summaries to keep agent context small.
get returns the full note, including content.
For long or multi-line note bodies, prefer --content-file or --content-stdin over --content.
update as full replacement.delete immediately when the user is explicit that no confirmation is needed, such as "delete note 12 now" or "remove 12, no need to confirm".true and false.--content-file or --content-stdin to avoid shell length, quoting, and newline issues.Run the bundled script with Python from any shell:
python skills/fastnote-cli-operator/scripts/fastnote_cli.py <command> ...
If needed, pass an explicit database path:
python skills/fastnote-cli-operator/scripts/fastnote_cli.py --db /absolute/path/to/fastnote.sqlite3 <command> ...
If --db is omitted, the script resolves the default FastNote database path by platform:
%LOCALAPPDATA%\FastNote\fastnote.sqlite3~/Library/Application Support/FastNote/fastnote.sqlite3~/.local/share/FastNote/fastnote.sqlite3The script itself is cross-platform. Avoid shell-specific wrappers unless the user explicitly asks for one.
Always reply in two parts:
Examples:
Inbox with tags work, urgent."Then include the JSON payload in a fenced json block.
For context efficiency:
list returns id, title, preview, is_pinned, created_at, updated_at, and tagsget returns the full note object, including contentOn every run, the script includes a meta object with:
db_path: the exact SQLite file path in usedb_initialized: whether this run created the database file for first usedata_dir_created: whether this run created the parent data directorybackup_reminder: a reminder to back up the database file regularlyWhen db_initialized is true, tell the user plainly that:
Keep this explanation short but explicit. The point is transparency and trust, not verbosity.
Use this template on first use, adapting only the path:
This is the first time this FastNote skill has been used on this machine, so it created a local SQLite database for your notes.
Database path: <db_path>
Your data stays on this machine. Back up this SQLite file periodically if you want to avoid accidental data loss.
On later runs, if it helps the task, you can use this shorter template:
FastNote database in use: <db_path>
Remember to back up this SQLite file periodically.
Example 1 User: "Create a pinned note titled sprint plan with content finalize API scope and tags work, planning" Action:
python skills/fastnote-cli-operator/scripts/fastnote_cli.py create --title "sprint plan" --content "finalize API scope" --tag work --tag planning --pinned true
Example 1b User: "Create a note from this long draft" Action:
python skills/fastnote-cli-operator/scripts/fastnote_cli.py create --title "draft" --content-file /absolute/path/to/draft.txt --pinned false
Example 2 User: "Show pinned notes tagged work" Action:
python skills/fastnote-cli-operator/scripts/fastnote_cli.py list --tag work --pinned true
Example 3 User: "Set note 7 to unpinned" Action:
python skills/fastnote-cli-operator/scripts/fastnote_cli.py pin 7 --value false
Example 4 User: "Update note 5 title to Draft v2 and content to Updated body, keep it unpinned, tags todo and urgent" Action:
python skills/fastnote-cli-operator/scripts/fastnote_cli.py update 5 --title "Draft v2" --content "Updated body" --tag todo --tag urgent --pinned false
When the content comes from stdin:
python skills/fastnote-cli-operator/scripts/fastnote_cli.py update 5 --title "Draft v2" --content-stdin --tag todo --pinned false
testing
Diagnose and fix Docker image pull failures on macOS with OrbStack, especially Docker Hub EOF/TLS/manifest errors caused by system proxies, Clash/CyberClash/Mihomo/Surge-style TUN mode, fake-ip DNS such as 198.18.0.x, or unstable registry access. Use when `docker pull` or `docker manifest inspect` fails with EOF, SSL_ERROR_SYSCALL, failed to fetch anonymous token, failed to resolve reference, failed to copy, or registry-1.docker.io/auth.docker.io connectivity confusion.
development
Generate and revise job resumes from raw notes, existing resumes, career histories, or profile snippets. Use when Codex needs to create, redesign, tighten, or review a resume/CV, especially for Chinese or English A4 resumes, PDF/HTML output, first-screen hiring signal, skill ordering, pagination balance, header/contact layout, or reframing an engineering background for AI-focused roles.
development
Convert a public webpage URL into Markdown and save it as a reusable `.md` file with the bundled script. Prefer `https://r.jina.ai/<url>` first, and only fallback to `https://markdown.new/` if `r.jina.ai` is unavailable. Use this whenever the user wants to turn a public webpage, article, documentation page, blog post, release note, or reference URL into Markdown for reading, archiving, summarizing, extraction, RAG prep, or downstream agent reuse, even if they do not explicitly mention markdown or saving a file.
tools
Design agent-usable SaaS tool systems using six reusable tool shapes (Search, Summarize, Draft, Update, Notify, Approve) plus connectors and policy guardrails. Use when turning SaaS features into reliable agent actions with clear contracts, permissions, audit trails, and approval gates.