DeepVista Notes: Create, read, update, and delete notes (explicit knowledge managed by the user). Notes are a shorthand for knowledge cards with type=note —...
---
name: deepvista-notes
description: |
DeepVista Notes: Create, read, update, and delete notes (explicit knowledge managed by the user).
Notes are a shorthand for knowledge cards with type=note — the same as `deepvista card --type note`.
TRIGGER when: user wants to create, capture, save, read, list, update, or delete a note; user says "take a note", "jot this down", "save this as a note", "show my notes", or asks about a specific note by title or ID.
DO NOT TRIGGER when: user wants to analyze, summarize, or find patterns across notes (use deepvista-recipe-analyze-notes instead); or when working with non-note knowledge base cards.
metadata:
openclaw:
category: service
requires:
bins:
- deepvista
skills:
- deepvista-shared
install:
- kind: uv
package: deepvista-cli
bins: [deepvista]
homepage: https://cli.deepvista.ai
cliHelp: "deepvista notes --help"
---
# Notes
> **PREREQUISITE:** Read [deepvista-shared](../deepvista-shared/SKILL.md) for auth, profiles, and global flags.
Notes are context cards with `type=note`. They support rich markdown content and are the primary way to explicitly capture knowledge — meeting notes, summaries, research, decisions.
`deepvista notes` is a convenience shorthand. Every notes command has an exact equivalent using `deepvista card`:
| Notes command | Equivalent card command |
|---------------|------------------------|
| `deepvista notes list` | `deepvista card list --type note` |
| `deepvista notes get <id>` | `deepvista card get <id>` |
| `deepvista notes create ...` | `deepvista card create --type note ...` |
| `deepvista notes +quick "..."` | *(shorthand only, no direct card equivalent)* |
## App URLs
After any write operation (create, update, +quick), always show the note URL to the user:
```
https://app.deepvista.ai/notes/<id>
```
Extract the `id` from the JSON response (`card.id`) and present it as a clickable link.
## Commands
### list
```bash
deepvista notes list [--limit N] [--page N]
```
Read-only — lists all notes, newest first.
### get
```bash
deepvista notes get <note_id>
```
Read-only — returns full note content including markdown body.
### create
```bash
deepvista notes create --title "Title" [--content "Markdown content"] [--content-file path/to/file.md] [--tags '["t1","t2"]']
```
- Use `--content-file <path>` to read content from a local file. This is **required** when importing files, URLs, or any content longer than a few sentences. Never paste large content inline via `--content` — always write it to a temporary file first, then use `--content-file`.
- Use `--content-file -` to read from stdin (e.g. `curl ... | deepvista notes create --title "..." --content-file -`).
- `--content-file` takes precedence over `--content` when both are provided.
> [!CAUTION] Write command — confirm with user before executing.
### update
```bash
deepvista notes update <note_id> [--title "..."] [--content "..."] [--content-file path/to/file.md] [--tags '["t1"]']
```
- Use `--content-file <path>` for large content updates, same as `create`.
> [!CAUTION] Write command — confirm with user before executing.
### delete
```bash
deepvista notes delete <note_id>
```
> [!CAUTION] Destructive command — confirm with user before executing.
### +quick
```bash
deepvista notes +quick "your text here"
```
Quick-create a note from a single line of text. The first ~50 characters become the title; the full text becomes the content. Entity enrichment runs automatically.
> [!CAUTION] Write command — creates a new note. Confirm with the user before executing.
- Ideal for capturing quick observations mid-workflow.
- For notes with custom titles or structured content, use `notes create` instead.
- Created notes are searchable with `deepvista card +search`.
## Importing files or URLs as notes
When the user asks to import a file, URL, or any large body of text as a note, **always use `--content-file`** to preserve the full content. Never summarize, truncate, or paraphrase the content — the user expects the exact text to be stored.
### Importing a local file
```bash
deepvista notes create --title "Meeting transcript" --content-file /path/to/transcript.md
```
### Importing from a URL
1. Download the file first, then import it:
```bash
curl -sL "https://example.com/document.md" -o /tmp/document.md
deepvista notes create --title "Document title" --content-file /tmp/document.md
```
Or pipe directly via stdin:
```bash
curl -sL "https://example.com/document.md" | deepvista notes create --title "Document title" --content-file -
```
### Why `--content-file` instead of `--content`?
When an agent reads a file and tries to pass it inline via `--content "..."`, the content often gets summarized or truncated because:
- The agent's context window makes it impractical to echo large files verbatim
- Shell argument length limits may apply
- The agent may inadvertently paraphrase rather than copy
`--content-file` reads the file directly from disk, bypassing the agent's context entirely. This guarantees the **exact, complete** file content is stored.
## Examples
```bash
# List recent notes
deepvista notes list --limit 5
# Create a meeting note
deepvista notes create --title "Standup 2026-03-26" --content "## Discussed\n- Roadmap priorities\n- CLI release"
# Import a file as a note (preferred for any file or large content)
deepvista notes create --title "Architecture doc" --content-file docs/architecture.md
# Import from URL via stdin
curl -sL "https://example.com/article.md" | deepvista notes create --title "Article" --content-file -
# Quick capture from a single line
deepvista notes +quick "Alice mentioned the API migration deadline is April 15"
# Update a note
deepvista notes update note_abc --content "Updated content with new findings..."
# Search notes (uses card search)
deepvista card +search "API migration" --type note
```
## See Also
- [deepvista-shared](../deepvista-shared/SKILL.md) — Auth and global flags
- [deepvista-vistabase](../deepvista-vistabase/SKILL.md) — Full knowledge base API (all card types)
- [deepvista-recipe-analyze-notes](../deepvista-recipe-analyze-notes/SKILL.md) — Analyze patterns across notes
don't have the plugin yet? install it then click "run inline in claude" again.
added explicit inputs (env vars, auth, connection details, edge cases like rate limits and timeouts), structured procedure into 6 discrete steps with input/output per step, formalized decision trees (write vs read, file vs inline, auth status, rate limits), detailed output contracts with response schemas and examples, and outcome signals keyed to user-observable behavior.
deepvista-notes lets you create, read, update, and delete notes in your deepvista knowledge base. notes are markdown-backed knowledge cards tagged with type=note, designed for capturing explicit knowledge: meeting summaries, research, decisions, quick observations. trigger this skill when a user says "take a note", "save this", "show my notes", or asks to read/edit/delete a specific note by title or id. do not trigger for cross-note analysis (use deepvista-recipe-analyze-notes instead) or non-note card types.
prerequisite: deepvista-cli installed and authenticated. see deepvista-shared for auth setup, profile configuration, and global flags.
external connection:
parameters (passed to deepvista notes commands):
note_id: unique identifier returned by deepvista (e.g. note_abc123)title: string, max 255 chars (required for create, optional for update)content: markdown string, inline (use for short content only, < 500 chars)content-file: path to markdown file or - for stdin (required for files, URLs, or content > 500 chars)tags: json array of strings, e.g. ["meeting","urgent"] (optional)limit: integer, max notes to return (default 20, max 100)page: integer, pagination offset (default 1)edge cases to handle:
input: user request (natural language or explicit command)
action: parse the user's intent. determine which subcommand to run (list, get, create, update, delete, +quick). extract parameters (note_id, title, content, file path, tags). validate that required parameters are present for the chosen subcommand.
output: validated intent (subcommand name), parameters dict, confirmation status (does user need to approve before execution?)
edge case handling:
--content and --content-file, warn user that --content-file takes precedenceinput: subcommand from step 1
action: write operations (create, update, delete, +quick) require explicit user confirmation before execution. read operations (list, get) do not.
output: confirmation status (boolean), confirmation prompt (if needed)
input: content-file parameter (if provided), content parameter (if provided)
action:
content-file is provided and not -, check that the file exists locally. if not, error and stop.content-file is -, prepare to read from stdin (e.g. curl output).content-file is a local path, read the full file into memory. validate file size (warn if > 50mb).--content is provided (inline), use it directly (for short content).output: resolved content (string or stdin stream), content source (inline, file path, or stdin)
edge case handling:
input: validated subcommand, parameters, content (from step 3), confirmation (from step 2)
action:
subprocess.run() or equivalent).output: command execution result (exit code, stdout json, stderr message)
edge case handling:
input: command execution result from step 4
action:
https://app.deepvista.ai/notes/<id>.output: structured response object (note id, title, content snippet, url, timestamp), formatted for display
edge case handling:
input: structured response from step 5
action:
output: user-facing message, formatted for readability
decision: should this be a write operation confirmation or a read operation?
decision: should content come from inline string, file, or stdin?
--content-file <path>: read from local file (validate file exists first).--content-file -: read from stdin (e.g. curl output).--content "...": use inline string (appropriate for short content < 500 chars).--content and --content-file: --content-file takes precedence; warn user.decision: is this a file import, URL import, or manual note entry?
--content-file <path>.--content-file <path>.--content for short text (< 500 chars) or write to temp file and use --content-file for longer content.decision: has the auth token expired or is the user not authenticated?
deepvista login (see deepvista-shared).decision: has the api rate limit been hit?
decision: is the note content larger than practical for inline passing?
--content-file (read from disk or stdin).--content inline.decision: should the user see the full note content or a preview?
list command: show title, id, tags, and first 100 chars of content (preview).get command: show full note content, all metadata.create/update output: show title, id, url (full content already shown in confirmation step).on success (create, update, +quick):
{id: string, title: string, content: string, type: "note", tags: [string], created_at: timestamp, updated_at: timestamp}Note created: My Meeting (note_abc123)\nView: https://app.deepvista.ai/notes/note_abc123on success (get):
# My Meeting (note_abc123)
Tags: meeting, standup
Created: 2026-03-26T10:00:00Z
Updated: 2026-03-26T11:00:00Z
## Discussion
- Roadmap priorities
- CLI release
on success (list):
# Your Notes (5 total)
1. Standup 2026-03-26 (note_abc)
Tags: standup, weekly | Created: 2026-03-26
2. Architecture review (note_def)
Tags: architecture, design | Created: 2026-03-25
on success (delete):
Note deleted: My Meeting (note_abc123)on success (importing a file or url):
on error:
Error: Note not found (note_xyz123) (404)Error: Authentication failed. Run 'deepvista login' to reconnect. (401)Error: Rate limited. Please try again in a few moments. (429)Error: Network timeout. Check your connection and try again. (timeout)Error: Invalid tags format. Must be valid JSON array. (400)file location for note content: notes are stored in deepvista backend (not on disk). after creation, user can view the note at https://app.deepvista.ai/notes/{id} or retrieve via deepvista notes get {id}.
the skill has worked when:
create, update, +quick: user sees success message with note title, id, and clickable deepvista app url. user can then open the url and confirm the note appears in the web ui with correct title, content, tags, and timestamps.
get: user sees the full note displayed in the terminal with all content, metadata, and formatting intact.
list: user sees a table or list of notes with titles, ids, and tags. user can identify the note they are looking for or confirm "no notes found" if list is empty.
delete: user sees confirmation message that the note has been deleted. attempting to deepvista notes get {id} afterward returns 404 (not found).
import (file or url): user sees success message with note url. user opens the url and confirms the note contains the exact content from the imported file or url (no paraphrasing, no truncation). if the file was > 1mb, user may have received a size warning beforehand but the import succeeded anyway.
error handling: if auth fails, user sees clear message and instructions to re-run deepvista login. if rate limited, user sees message to retry later (and retry is attempted automatically up to 3 times). if network timeout, user sees timeout message and is instructed to check connection. if file not found, user sees error before any api call is made.