[
  {
    "id": "use-prompts-in-claude-code",
    "title": "Call your Tiddly prompts as slash commands in Claude Code",
    "body": "Once Tiddly's prompt MCP server is connected (Settings → AI Integration), every saved prompt is invocable in Claude Code as a slash command. Type `/` to browse — Claude Code lists every prompt from connected MCP servers alongside its built-in commands. Pick one and pass arguments space-separated, e.g. `/pr-review 456`. Build prompts once in Tiddly, run them from any project.",
    "categories": ["prompts", "mcp"],
    "audience": "power",
    "priority": 5,
    "relatedDocs": [
      { "label": "Prompts", "path": "/docs/features/prompts" },
      { "label": "CLI MCP setup", "path": "/docs/cli/mcp" }
    ]
  },
  {
    "id": "use-prompts-in-claude-desktop",
    "title": "Attach a Tiddly prompt to a Claude Desktop conversation",
    "body": "Once the Prompt MCP server is connected, click the `+` below the message input in Claude Desktop and pick a saved Tiddly prompt from the menu. Fill in arguments, then click \"Add prompt\" — the rendered prompt joins your message as an attachment Claude can read and act on. Claude Desktop treats prompts as attachments rather than executable commands — a Claude Desktop choice, not a Tiddly limitation.",
    "categories": ["prompts", "mcp"],
    "audience": "power",
    "priority": 5,
    "relatedDocs": [
      { "label": "Prompts", "path": "/docs/features/prompts" },
      { "label": "CLI MCP setup", "path": "/docs/cli/mcp" }
    ]
  },
  {
    "id": "use-prompts-in-codex",
    "title": "Use Tiddly prompts in Codex via Skills",
    "body": "Codex doesn't support invoking MCP prompts directly. Workaround: export them as Agent Skills. Tag prompts with `skill` in Tiddly, then open Settings → AI Integration, pick Codex, and run the displayed `tiddly skills configure` command. Codex surfaces the exported skills as `$skill-name` invocations or auto-selects them based on task context. Same template behavior as MCP prompts, different invocation surface.",
    "categories": ["prompts", "cli", "mcp"],
    "audience": "power",
    "priority": 5,
    "relatedDocs": [
      { "label": "CLI Skills", "path": "/docs/cli/skills" },
      { "label": "CLI MCP setup", "path": "/docs/cli/mcp" }
    ]
  },
  {
    "id": "global-search-shortcut",
    "title": "Search across all your content",
    "body": "Press `{{shortcut:app.focusSearch}}` (outside an input) to open the global search dialog. It searches bookmarks, notes, and prompts together and ranks results by relevance — unlike the in-filter search, which is scoped to the current filter.",
    "categories": ["shortcuts"],
    "audience": "beginner",
    "priority": 5,
    "shortcutId": "app.focusSearch",
    "starter": true,
    "starterPriority": 3
  },
  {
    "id": "connect-ai-tool-to-content",
    "title": "Let your AI assistant read and edit your bookmarks and notes",
    "body": "Open Settings → AI Integration, pick your AI tool (Claude Desktop, Claude Code, Codex, Antigravity), and run the displayed `tiddly mcp configure` command. Your AI assistant can then search, read, and edit your bookmarks and notes directly — no copy-paste, no exporting. Ask it *\"find the article I saved about transformers\"* or *\"fix the typo in my last meeting note\"* and it goes straight at your library.",
    "categories": ["cli", "mcp", "bookmarks", "notes"],
    "audience": "all",
    "priority": 8,
    "relatedDocs": [{ "label": "CLI MCP setup", "path": "/docs/cli/mcp" }]
  },
  {
    "id": "editor-command-menu",
    "title": "Open the editor command menu",
    "body": "Press `{{shortcut:editor.commandMenu}}` anywhere in a note or prompt to open a filterable menu of every editor action — including formatting, save, discard, reading mode, version history, and the table of contents. Great for when you forget an editor shortcut.",
    "categories": ["editor", "notes", "prompts"],
    "audience": "all",
    "priority": 10,
    "areas": ["/app/notes", "/app/prompts"],
    "shortcutId": "editor.commandMenu"
  },
  {
    "id": "note-slash-commands",
    "title": "Use slash commands in the note and prompt editors",
    "body": "Type `/` at the start of a line — or after a space mid-line — to open a menu of common formatting: headings, lists, code blocks, callouts, and more. In the prompt editor, the menu also includes Jinja2 building blocks (variables, if blocks) so you can scaffold a template without retyping braces.",
    "categories": ["notes", "prompts", "editor"],
    "audience": "beginner",
    "priority": 10,
    "areas": ["/app/notes", "/app/prompts"],
    "relatedDocs": [{ "label": "Keyboard shortcuts", "path": "/docs/features/shortcuts" }],
    "starter": true,
    "starterPriority": 1
  },
  {
    "id": "auto-configure-mcp",
    "title": "Set up MCP for every AI tool with one command",
    "body": "Run `tiddly mcp configure` with no arguments to set up every detected AI tool at once. The CLI finds Claude Desktop, Claude Code, Codex, and Antigravity, mints a dedicated token per tool/server, and writes entries for both the Content MCP and Prompt MCP servers. Any custom MCP entries you've added by hand are left untouched.",
    "categories": ["cli", "mcp"],
    "audience": "beginner",
    "priority": 15,
    "relatedDocs": [{ "label": "CLI MCP setup", "path": "/docs/cli/mcp" }]
  },
  {
    "id": "combine-and-or-filters",
    "title": "Use filter groups to mix AND and OR",
    "body": "Tiddly filters use a two-level structure: tags inside the same group must all match (AND), and any matching group wins (OR). So two groups `[python, tutorial]` and `[javascript, guide]` together mean \"Python tutorials *or* JavaScript guides\" — one filter, two related topics, no duplication. Add another group from the filter builder when \"OR something else\" is what you want.",
    "categories": ["filters"],
    "audience": "power",
    "priority": 15,
    "relatedDocs": [{ "label": "Tags & filters", "path": "/docs/features/tags-filters" }]
  },
  {
    "id": "generate-prompt-arguments",
    "title": "Let AI fill in prompt arguments from your `{{ placeholders }}`",
    "body": "After drafting a template with `{{ placeholders }}`, click the sparkle icon in the Arguments header. AI scans the template and proposes a name, description, and required setting for every placeholder you haven't already defined. Or click the sparkle on a single row to fill just that argument's empty fields.",
    "categories": ["prompts", "ai"],
    "audience": "beginner",
    "priority": 15,
    "areas": ["/app/prompts"],
    "minTier": "pro"
  },
  {
    "id": "palette-shortcut",
    "title": "Open the command palette",
    "body": "Press `{{shortcut:app.commandPalette}}` to open the command palette — works even while typing in an input. Jump to any sidebar filter, settings page, or New Note / New Bookmark / New Prompt action without touching the mouse. Type to filter the list.",
    "categories": ["shortcuts"],
    "audience": "beginner",
    "priority": 15,
    "shortcutId": "app.commandPalette",
    "starter": true,
    "starterPriority": 2
  },
  {
    "id": "preview-prompt-as-sandbox",
    "title": "Try a prompt before agents use it",
    "body": "On any saved prompt, click `Preview` to fill in argument values and render the template. Two uses: see the exact text the agent will receive (handy for checking how Jinja whitespace renders after substitution), or copy the rendered output to paste into ChatGPT, Cursor, or anywhere outside MCP.",
    "categories": ["prompts"],
    "audience": "beginner",
    "priority": 15,
    "areas": ["/app/prompts"]
  },
  {
    "id": "rename-tag-everywhere",
    "title": "Rename a tag once to update it across everything",
    "body": "From Settings → Tags, renaming a tag rewrites it across every bookmark, note, prompt, and saved filter in one operation. For example, consolidate `js` and `javascript` (or fix a typo) without editing items one by one.",
    "categories": ["tags"],
    "audience": "power",
    "priority": 15,
    "relatedDocs": [{ "label": "Tags & filters", "path": "/docs/features/tags-filters" }]
  },
  {
    "id": "save-tag-combo-as-filter",
    "title": "Save a recurring tag combo as a one-click sidebar filter",
    "body": "If you keep picking the same tags to find the same slice of content, click `+ Filter` at the bottom of the sidebar to save the combination as a permanent view. Saved filters live in the sidebar for one-click access; they can also restrict to a content type or pin a default sort.",
    "categories": ["filters"],
    "audience": "beginner",
    "priority": 15,
    "relatedDocs": [{ "label": "Tags & filters", "path": "/docs/features/tags-filters" }]
  },
  {
    "id": "schedule-auto-archive",
    "title": "Set bookmarks and notes to archive themselves",
    "body": "For reference material with a known expiration — a project plan, a temporary doc, an event page — open the bookmark or note and click its \"Auto-archive: None\" pill. Presets for 1 week, end of month, 3/6/12 months, or custom. The item drops out of your active list automatically once the date passes.",
    "categories": ["bookmarks", "notes"],
    "audience": "power",
    "priority": 15,
    "areas": ["/app/bookmarks", "/app/notes"]
  },
  {
    "id": "audit-ai-edits-via-history",
    "title": "Audit and undo AI edits with version history",
    "body": "When AI assistants edit your notes or prompts via MCP, every change is logged in version history with the source `MCP`. Open the History sidebar (`{{shortcut:app.toggleHistorySidebar}}`) to see what the agent changed, view the diff for each save, and restore any previous version. Hand edit access to AI without losing oversight — every change is diffable and restorable.",
    "categories": ["notes", "prompts", "ai", "mcp"],
    "audience": "power",
    "priority": 18,
    "shortcutId": "app.toggleHistorySidebar"
  },
  {
    "id": "search-dialog-vs-filter-search",
    "title": "The search dialog ranks by relevance; in-filter search doesn't",
    "body": "Tiddly has two search surfaces. The search dialog (press `{{shortcut:app.focusSearch}}`) ranks results by relevance — the closer your query matches, the higher it lands. The search input inside a saved filter or list view doesn't rank; it just filters the list and keeps it in the filter's chosen sort. Use the dialog when you remember *what* you're looking for; use in-filter search when you're narrowing *within* a sort.",
    "categories": ["search", "shortcuts"],
    "audience": "all",
    "priority": 18,
    "shortcutId": "app.focusSearch",
    "relatedDocs": [{ "label": "Search", "path": "/docs/features/search" }]
  },
  {
    "id": "ai-sees-prompt-metadata",
    "title": "Agents pick and fill prompts based on names, descriptions, and args",
    "body": "When an AI assistant fetches a prompt via MCP, it reads everything: prompt name, description, argument names, argument descriptions, and required/optional flags. The AI uses all of it to decide whether to invoke the prompt and what to pass for each argument. Vague text leads to the wrong prompt getting picked or arguments filled with garbage — give each field a meaningful description.",
    "categories": ["prompts", "mcp"],
    "audience": "power",
    "priority": 20
  },
  {
    "id": "bring-your-own-api-key",
    "title": "Use your own API key for higher AI limits and model choice",
    "body": "In Settings → AI Configuration, paste a Google, OpenAI, or Anthropic key per use case. BYOK keys get a higher daily limit than the platform default and let you pick a specific model from a curated allowlist. Keys live in browser localStorage only — never on the server.",
    "categories": ["ai", "account"],
    "audience": "power",
    "priority": 20,
    "minTier": "pro",
    "relatedDocs": [{ "label": "AI features", "path": "/docs/features/ai" }]
  },
  {
    "id": "editor-find-and-replace",
    "title": "Find, replace, and regex inside a note or prompt",
    "body": "`⌘+F` opens an editor search panel with regex, case-sensitive, and replace toggles — enough to refactor a long note without leaving edit mode. Walk through matches with `⌘+G` (next) and `⌘+⇧+G` (previous).",
    "categories": ["editor", "notes", "prompts"],
    "audience": "beginner",
    "priority": 20,
    "shortcut": ["Mod", "F"]
  },
  {
    "id": "export-to-json",
    "title": "Export your library to JSON for backup or scripting",
    "body": "`tiddly export --output backup.json` writes every bookmark, note, and prompt to a single JSON file. Use `--types bookmark,note` to scope; `--include-archived` to include archived items. Default output is stdout — pipe into `jq` to filter or transform.",
    "categories": ["cli"],
    "audience": "power",
    "priority": 20,
    "relatedDocs": [{ "label": "CLI reference", "path": "/docs/cli/reference" }]
  },
  {
    "id": "group-filters-into-collections",
    "title": "Tame a long filter sidebar with Collections",
    "body": "When you accumulate enough saved filters to make the sidebar messy, click `+ Collection` to make a group and drag filters into it. One Collection per project or context (Work, Personal, Research) keeps things scannable. Removing a Collection moves its filters back to the sidebar root — your filters aren't deleted.",
    "categories": ["filters"],
    "audience": "beginner",
    "priority": 20,
    "relatedDocs": [{ "label": "Tags & filters", "path": "/docs/features/tags-filters" }]
  },
  {
    "id": "link-content-for-context",
    "title": "Link bookmarks, notes, and prompts together — no new tags needed",
    "body": "From any item, the \"Link content\" button attaches related notes, prompts, or bookmarks. Linked items appear as clickable chips you can navigate through later — handy for binding meeting notes to a source article, a code-review prompt to a style-guide note, or any cluster of related items without inventing tags to group them.",
    "categories": ["bookmarks", "notes", "prompts"],
    "audience": "power",
    "priority": 20
  },
  {
    "id": "prompt-template-arguments",
    "title": "Define prompt arguments with double-brace placeholders",
    "body": "Prompts are Jinja2 templates. Wrap a placeholder in double braces — e.g. `{{ topic }}` — then add a matching row in the Arguments panel before saving. At invocation time, agents and the run dialog prompt for argument values.",
    "categories": ["prompts"],
    "audience": "beginner",
    "priority": 20,
    "areas": ["/app/prompts"],
    "relatedDocs": [{ "label": "Prompts", "path": "/docs/features/prompts" }],
    "starter": true,
    "starterPriority": 4
  },
  {
    "id": "quick-create-linked-content",
    "title": "Create a linked bookmark, note, or prompt without losing your place",
    "body": "Open the link picker on any item and click one of the \"Create linked\" icon buttons (note, bookmark, or prompt). A fresh detail page opens pre-linked back to the item you came from. Save and close — you land back in the source with the new link already wired up. For capturing related items mid-flow without the \"I'll link it later\" trap.",
    "categories": ["notes", "bookmarks", "prompts"],
    "audience": "power",
    "priority": 20
  },
  {
    "id": "reading-mode-toggle",
    "title": "Read your note rendered without losing your place",
    "body": "Press `{{shortcut:editor.toggleReadingMode}}` to switch a note or prompt between raw markdown editing and a fully rendered Milkdown preview. Scroll position is preserved across the toggle, so you can read formatted then jump back to where you were typing.",
    "categories": ["editor", "notes", "prompts"],
    "audience": "beginner",
    "priority": 20,
    "shortcutId": "editor.toggleReadingMode",
    "starter": true,
    "starterPriority": 2
  },
  {
    "id": "required-vs-optional-args",
    "title": "Required arguments fail loudly; optional ones default to empty",
    "body": "A required argument must be supplied at render time — missing it raises an error. An optional one defaults to empty string and the prompt still renders. Make an argument required when you want the agent to fail loudly if it forgets context; make it optional when the prompt should still render usefully without it.",
    "categories": ["prompts"],
    "audience": "beginner",
    "priority": 20,
    "areas": ["/app/prompts"]
  },
  {
    "id": "search-from-extension",
    "title": "Find a saved bookmark without leaving the page you're on",
    "body": "From the Chrome extension popup, click the Search tab next to Save — type to query across bookmark titles, descriptions, URLs, and scraped page content. Filter by tag; sort by relevance, last used, or date modified.",
    "categories": ["extension"],
    "audience": "power",
    "priority": 20
  },
  {
    "id": "shortcuts-dialog",
    "title": "Find any shortcut",
    "body": "Forget a shortcut? Press `{{shortcut:app.showShortcuts}}` from anywhere — even mid-typing — to open the full shortcuts dialog. Find what you need, close, get back to work.",
    "categories": ["shortcuts"],
    "audience": "beginner",
    "priority": 20,
    "shortcutId": "app.showShortcuts"
  },
  {
    "id": "sparkle-generate-metadata",
    "title": "One sparkle click fills every empty metadata field",
    "body": "Click the sparkle icon on any title, description, or (prompt) name field to fill in whichever of those fields are still empty. On a fresh bookmark with no title or description, one click generates both. Saves a step on bookmarks where the auto-fetch missed.",
    "categories": ["ai", "bookmarks", "notes", "prompts"],
    "audience": "beginner",
    "priority": 20,
    "minTier": "pro"
  },
  {
    "id": "tag-click-to-filter",
    "title": "Click any tag chip on a card to filter by it",
    "body": "Tags rendered on bookmark, note, and prompt cards are clickable. Click one to add it to the current view's filter — faster than opening the filter input and typing the tag.",
    "categories": ["tags"],
    "audience": "beginner",
    "priority": 20
  },
  {
    "id": "whitespace-control-jinja",
    "title": "Keep optional Jinja blocks from leaving blank lines",
    "body": "Add a `-` inside a Jinja tag (`{%- if optional_arg %}…{%- endif %}`) to strip surrounding whitespace. Without it, an empty optional block leaves a blank line in the rendered prompt. The slash menu's \"If block (trim)\" entry inserts the dashed form for you.",
    "categories": ["prompts"],
    "audience": "power",
    "priority": 20,
    "areas": ["/app/prompts"]
  },
  {
    "id": "extension-keyboard-save",
    "title": "Save the current page without leaving the keyboard",
    "body": "Press `{{shortcut:extension.openPopup}}` to open the Tiddly popup, then hit Enter to save — focus lands on the Save button automatically. On restricted pages like `chrome://newtab/` the popup opens to Search with the input focused, so you can find a bookmark without touching the mouse either. Rebind the shortcut at `chrome://extensions/shortcuts` if it conflicts.",
    "categories": ["extension", "shortcuts"],
    "audience": "all",
    "priority": 22,
    "shortcutId": "extension.openPopup",
    "relatedDocs": [{ "label": "Chrome extension", "path": "/docs/extensions/chrome" }]
  },
  {
    "id": "cmd-click-link-raw-editor",
    "title": "Follow a markdown link without switching to reading mode",
    "body": "In the raw markdown editor, hold `⌘` and click a `[text](url)` link to open the URL. The editor explicitly suppresses Cmd+click-to-add-cursor over a link, so the link opens cleanly.",
    "categories": ["editor", "notes", "prompts"],
    "audience": "beginner",
    "priority": 25
  },
  {
    "id": "cmd-click-new-tab",
    "title": "Open a card in a new tab to keep your list in place",
    "body": "Use `{{shortcut:card.openInNewTab}}` on any bookmark, note, or prompt card to open its detail page in a new tab. Same affordance as a browser link.",
    "categories": ["shortcuts"],
    "audience": "power",
    "priority": 25,
    "shortcutId": "card.openInNewTab"
  },
  {
    "id": "collapse-sidebar",
    "title": "Free up screen space for long notes",
    "body": "Press `{{shortcut:app.toggleSidebar}}` to collapse or expand the main sidebar. Works even while typing.",
    "categories": ["shortcuts"],
    "audience": "power",
    "priority": 25,
    "shortcutId": "app.toggleSidebar"
  },
  {
    "id": "extension-default-tags",
    "title": "Pre-tag every save by setting default tags in the Chrome extension",
    "body": "Open the extension settings and pick default tags (e.g., `reading-list`). They're pre-selected on every save — clear them with the inline Clear link if a particular page doesn't fit.",
    "categories": ["extension"],
    "audience": "beginner",
    "priority": 25
  },
  {
    "id": "jinja-filters",
    "title": "Transform argument values with Jinja2 filters",
    "body": "Use the pipe syntax to transform argument values inline: `{{ name | upper }}` uppercases; `{{ note | default(\"(no notes)\", true) }}` substitutes a fallback when the arg is empty or unset (the second argument is required — without it, `default` only fires on undefined, but optional args default to `\"\"`). Chain filters: `{{ name | lower | replace(\"_\", \" \") }}`.",
    "categories": ["prompts"],
    "audience": "power",
    "priority": 25,
    "areas": ["/app/prompts"]
  },
  {
    "id": "link-shortcut-wraps-selection",
    "title": "Convert selected text within editor to a link",
    "body": "Highlight some text, press `{{shortcut:editor.insertLink}}`, and Tiddly turns it into `[selected](url)` with the URL field pre-selected so you can paste the destination immediately. Works in the note and prompt editors.",
    "categories": ["editor", "notes", "prompts"],
    "audience": "beginner",
    "priority": 25,
    "shortcutId": "editor.insertLink"
  },
  {
    "id": "multi-cursor-above-below",
    "title": "Edit parallel lines at once with multi-cursors",
    "body": "Hold `⌘+⌥` and press the up or down arrow to add a second (or third) cursor on the line above or below. Type once and the same edit lands on every cursor — useful for editing list items or import statements in lockstep.",
    "categories": ["editor"],
    "audience": "power",
    "priority": 25,
    "shortcut": ["Mod", "Alt", "↑/↓"]
  },
  {
    "id": "per-directory-mcp-scope",
    "title": "Keep work and personal accounts separate with `--scope directory`",
    "body": "Run `tiddly mcp configure --scope directory` (or the same flag on `skills configure`) inside a project to restrict Tiddly access to that directory only. Claude Code writes to `~/.claude.json` under the project key; Codex writes `.codex/config.toml` in the cwd; skills land in `.claude/skills/` or `.agents/skills/`.",
    "categories": ["cli"],
    "audience": "power",
    "priority": 25,
    "relatedDocs": [{ "label": "CLI MCP setup", "path": "/docs/cli/mcp" }]
  },
  {
    "id": "pin-default-sort-per-filter",
    "title": "Each saved filter remembers its own sort order",
    "body": "Set a sort field and direction on a filter and Tiddly persists it. Set \"Reading List\" to `created_at` ascending (oldest first), \"Inbox\" to `last_used_at` descending — each opens in its own order without you toggling the sort every time.",
    "categories": ["filters"],
    "audience": "power",
    "priority": 25
  },
  {
    "id": "restore-older-version",
    "title": "Undo any edit by restoring an earlier version",
    "body": "Open History on any note or prompt to see every saved revision with diffs. Click Restore on an older version and the current content is replaced — restoration creates a new version, so nothing is ever truly lost. Available via the toolbar History icon or `{{shortcut:app.toggleHistorySidebar}}`.",
    "categories": ["notes", "prompts", "editor"],
    "audience": "beginner",
    "priority": 25,
    "shortcutId": "app.toggleHistorySidebar",
    "relatedDocs": [{ "label": "Versioning", "path": "/docs/features/versioning" }]
  },
  {
    "id": "save-with-extension",
    "title": "Skip copy-pasting URLs — save with the Tiddly Chrome extension",
    "body": "The Tiddly Bookmarks extension saves the page you're on with one click. Works in Chrome, Edge, Brave, Arc, and other Chromium browsers. Pair with default tags in extension settings to pre-tag every save.",
    "categories": ["extension", "bookmarks"],
    "audience": "beginner",
    "priority": 25,
    "relatedDocs": [{ "label": "Chrome extension", "path": "/docs/extensions/chrome" }]
  },
  {
    "id": "shift-cmd-click-silent-open",
    "title": "Peek at a bookmark without bumping its last-used timestamp",
    "body": "Use `{{shortcut:bookmark.openLinkSilent}}` on a bookmark's title, favicon, or URL to open it without updating `last_used_at`. Useful when \"Recently used\" is your default sort and you don't want a one-off peek to reshuffle the list.",
    "categories": ["bookmarks"],
    "audience": "power",
    "priority": 25,
    "shortcutId": "bookmark.openLinkSilent"
  },
  {
    "id": "tiddly-status",
    "title": "Run `tiddly status` to see everything in one shot",
    "body": "`tiddly status` prints CLI version, login status, API latency, content counts, MCP server config across user and directory scopes, and installed skills — all read-only, no files modified. Use `--path /your/project` to inspect a different directory's project-scoped config.",
    "categories": ["cli"],
    "audience": "beginner",
    "priority": 25,
    "relatedDocs": [{ "label": "CLI reference", "path": "/docs/cli/reference" }]
  },
  {
    "id": "toc-jump-around",
    "title": "Open the Table of Contents to jump around long notes",
    "body": "Press `{{shortcut:editor.toggleToc}}` to open the ToC sidebar. It lists every heading in the note — click one to scroll the editor to that line and place the cursor there. Combine with `⌘+⌥+G` for non-heading jumps.",
    "categories": ["editor", "notes"],
    "audience": "power",
    "priority": 25,
    "shortcutId": "editor.toggleToc"
  },
  {
    "id": "paste-page-content",
    "title": "Improve search for bookmarks of login-only pages",
    "body": "Login-protected pages — an internal Google Doc, a Confluence page, a paywalled article — don't auto-scrape, so the bookmark's Page Content stays empty and full-text search can't match it. Fix: expand the section under the bookmark and paste your own text (highlights, excerpt, summary). The Chrome extension scrapes from your already-signed-in tab and usually handles this for you; manual paste is the fallback.",
    "categories": ["bookmarks"],
    "audience": "power",
    "priority": 30,
    "areas": ["/app/bookmarks"]
  },
  {
    "id": "bookmark-paste-url",
    "title": "Save a bookmark by pasting its URL",
    "body": "Copy a URL anywhere, then press `{{shortcut:bookmark.pasteUrl}}` from the All Content view (or any saved-filter, archived, or trash view) — outside an input field. The new-bookmark form opens pre-filled with the URL; title and description get auto-fetched.",
    "categories": ["bookmarks", "shortcuts"],
    "audience": "beginner",
    "priority": 30,
    "areas": ["/app/content"],
    "shortcutId": "bookmark.pasteUrl",
    "relatedDocs": [{ "label": "Keyboard shortcuts", "path": "/docs/features/shortcuts" }],
    "starter": true,
    "starterPriority": 5
  },
  {
    "id": "comma-add-tag",
    "title": "Add and remove tags from the keyboard alone",
    "body": "When inline-editing tags on a note, bookmark, or prompt, press `,` (or Enter) to commit the current tag and keep the input open for the next one. Press Backspace on an empty input to remove the previous tag.",
    "categories": ["tags"],
    "audience": "power",
    "priority": 30
  },
  {
    "id": "drag-sidebar",
    "title": "Reorder the sidebar — including built-in views — by dragging",
    "body": "The entire sidebar is draggable, including All Content, Archived, Trash, and the Command Palette entry. Pin the views you use most to the top, drop filters into and out of Collections, and the order is saved per-account.",
    "categories": ["filters", "account"],
    "audience": "power",
    "priority": 30
  },
  {
    "id": "full-width-layout",
    "title": "Switch to a wider content view",
    "body": "Press `{{shortcut:app.toggleWidth}}` (no modifiers, outside inputs) to flip between centered and full-width content layout. Useful for wider notes, code-heavy prompts, or scanning long bookmark lists.",
    "categories": ["shortcuts"],
    "audience": "power",
    "priority": 30,
    "shortcutId": "app.toggleWidth"
  },
  {
    "id": "jinja-comment",
    "title": "Leave non-rendering notes in a prompt with `{# ... #}`",
    "body": "`{# this is a comment #}` is a Jinja2 comment — invisible in the rendered output. Useful for leaving instructions to your future self (\"regenerate after schema migration\") without polluting what the agent sees.",
    "categories": ["prompts"],
    "audience": "power",
    "priority": 30,
    "areas": ["/app/prompts"]
  },
  {
    "id": "pick-model-per-use-case",
    "title": "Route cheap AI calls to small models, save big models for high-stakes",
    "body": "BYOK lets you pick a model per use case from a curated allowlist. Suggestions is configurable today; Transform, Auto-Complete, and Chat are coming soon. Route cheap calls (tag suggestions) to a smaller model and reserve a larger model for higher-stakes cases.",
    "categories": ["ai", "account"],
    "audience": "power",
    "priority": 30,
    "minTier": "pro"
  },
  {
    "id": "save-and-close",
    "title": "Save and close the editor in one keystroke",
    "body": "`{{shortcut:page.save}}` saves and stays in the editor; `{{shortcut:page.saveAndClose}}` saves and closes the editor view in one keystroke. Both also live in the `{{shortcut:editor.commandMenu}}` palette.",
    "categories": ["editor", "notes", "prompts"],
    "audience": "power",
    "priority": 30,
    "shortcutId": "page.saveAndClose"
  },
  {
    "id": "sort-tags-by-usage",
    "title": "Sort tags by usage count to surface your favorites",
    "body": "The Settings → Tags sort dropdown supports Count desc/asc in addition to Name. Sort by Count desc to see your most-used tags first — useful for deciding which tags to promote into saved filters.",
    "categories": ["tags"],
    "audience": "power",
    "priority": 30
  },
  {
    "id": "view-toggles",
    "title": "Tune the editor view from the keyboard with `⌥+Z/L/M/T`",
    "body": "`{{shortcut:editor.toggleWordWrap}}` toggles word wrap, `{{shortcut:editor.toggleLineNumbers}}` toggles line numbers, `{{shortcut:editor.toggleMonoFont}}` toggles monospace font, and `{{shortcut:editor.toggleToc}}` opens the Table of Contents sidebar. Preferences persist across sessions.",
    "categories": ["editor"],
    "audience": "power",
    "priority": 30
  },
  {
    "id": "click-checkbox-raw-editor",
    "title": "Toggle checkboxes in the raw markdown editor by clicking them",
    "body": "Tick off a `- [ ]` task without switching to reading mode — just click the `[ ]` or `[x]` glyph and it flips. The markdown updates immediately and saves like any other edit. Useful for checklists you want to read and edit in the same view.",
    "categories": ["editor", "notes", "prompts"],
    "audience": "beginner",
    "priority": 35,
    "areas": ["/app/notes", "/app/prompts"]
  },
  {
    "id": "claude-summarize-bookmark-content",
    "title": "Ask Claude to rewrite a bookmark's content for better search hits",
    "body": "Page Content feeds full-text search — but the auto-scrape is often noisy boilerplate that buries the keywords you'd actually search for. Ask an MCP-connected agent (Claude, etc.) to read the bookmark, write a dense summary keyed on the terms you'd reach for later, and save it back via the `update_item` tool. Replaces the raw scrape with something denser and more findable.",
    "categories": ["bookmarks", "mcp", "ai"],
    "audience": "power",
    "priority": 35,
    "areas": ["/app/bookmarks"]
  },
  {
    "id": "jump-to-line",
    "title": "Jump to a specific line in the editor",
    "body": "Press `⌘+⌥+G` to open a small \"go to line\" prompt. Pair with line numbers (`{{shortcut:editor.toggleLineNumbers}}`) on long notes to navigate quickly.",
    "categories": ["editor"],
    "audience": "power",
    "priority": 35,
    "shortcut": ["Mod", "Alt", "G"]
  },
  {
    "id": "shift-click-linked-chip",
    "title": "Open a linked bookmark inside Tiddly with `Shift+click`",
    "body": "When a bookmark is linked from another note, prompt, or bookmark, clicking the chip opens the URL in a new tab. Hold `Shift` while clicking instead to navigate to the bookmark's detail page in Tiddly — useful when you want to edit metadata or relationships.",
    "categories": ["bookmarks"],
    "audience": "power",
    "priority": 35
  },
  {
    "id": "search-quoted-phrase",
    "title": "Sharpen search results with quoted phrases, `-term`, and `OR`",
    "body": "Wrap a phrase in quotes — e.g. `\"machine learning\"` — to match it exactly. Use `-term` to exclude matches (`python -django`). Use `OR` to widen across synonyms (`python OR ruby`). Combine them: `\"web framework\" -django OR rails`. Without operators, words become AND clauses and stemming may match variants like `learn` for `learning`.",
    "categories": ["search"],
    "audience": "all",
    "priority": 40,
    "areas": ["/app/content"],
    "relatedDocs": [{ "label": "Search", "path": "/docs/features/search" }],
    "starter": true,
    "starterPriority": 6
  },
  {
    "id": "shortcut-select-next-occurrence",
    "title": "Select the next match — or every match — to rename them together",
    "body": "With your cursor on a word in a note or prompt, press `{{shortcut:editor.selectNextOccurrence}}` to extend the selection to the next match — repeat to add more, then type once and they all rename together. Use `⌘+⇧+L` instead to grab every match in one shot.",
    "categories": ["shortcuts", "editor"],
    "audience": "power",
    "priority": 50,
    "areas": ["/app/notes", "/app/prompts"],
    "shortcutId": "editor.selectNextOccurrence",
    "relatedDocs": [{ "label": "Keyboard shortcuts", "path": "/docs/features/shortcuts" }]
  }
]
