EV

evernote-core-workflow-b

Implements a robust search and retrieval workflow for Evernote using note filters and metadata specifications.

Install

mkdir -p .claude/skills/evernote-core-workflow-b && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/8668" && unzip -o skill.zip -d .claude/skills/evernote-core-workflow-b && rm skill.zip

Installs to .claude/skills/evernote-core-workflow-b

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Execute Evernote secondary workflow: Search and Retrieval.
58 charsno explicit “when” trigger
Intermediate

Key capabilities

  • Build a SearchService wrapping findNotesMetadata()
  • Implement a fluent QueryBuilder class that chains operators
  • Use an async generator to iterate through large result sets page by page
  • Call noteStore.findRelated() to discover related notes, notebooks, and tags
  • Cache notebook and tag lookups, then map GUIDs to human-readable names

How it works

The skill uses a SearchService to wrap findNotesMetadata() with a NoteFilter and NotesMetadataResultSpec. It builds queries with a QueryBuilder and processes results with pagination and enrichment.

Inputs & outputs

You give it
Evernote search query terms, sort order, and notebook scope
You get back
Enriched search results with notebook and tag names

When to use evernote-core-workflow-b

  • Implement search functionality for Evernote
  • Filter notes by tags and notebooks
  • Retrieve note metadata via API
  • Build custom search query builders

About this skill

Evernote Core Workflow B: Search & Retrieval

Overview

Comprehensive search and retrieval workflow for Evernote, including search grammar, filters, pagination, related notes discovery, and result enrichment with notebook/tag names.

Prerequisites

  • Completed evernote-install-auth setup
  • Understanding of Evernote search grammar
  • Valid access token configured

Instructions

Step 1: Search Service Foundation

Build a SearchService wrapping findNotesMetadata(). Use NoteFilter for query terms, sort order, and notebook scope. Use NotesMetadataResultSpec to control which metadata fields are returned (title, dates, tags, notebook GUID).

const filter = new Evernote.NoteStore.NoteFilter({
  words: 'tag:urgent notebook:"Work"',
  ascending: false,
  order: Evernote.Types.NoteSortOrder.UPDATED
});

const spec = new Evernote.NoteStore.NotesMetadataResultSpec({
  includeTitle: true, includeUpdated: true,
  includeTagGuids: true, includeNotebookGuid: true
});

const result = await noteStore.findNotesMetadata(filter, 0, 50, spec);

Step 2: Advanced Search Grammar Builder

Implement a fluent QueryBuilder class that chains operators: notebook("Work"), tag("urgent"), intitle("meeting"), createdAfter(date), hasUncompletedTodos(), hasAttachments(). Call .build() to produce the query string. Use any: prefix for OR logic.

const query = new QueryBuilder()
  .notebook('Work')
  .tag('urgent')
  .lastNDays(7)
  .hasUncompletedTodos()
  .build();
// Result: 'notebook:"Work" tag:"urgent" created:day-7 todo:false'

Step 3: Paginated Search Results

Use an async generator to iterate through large result sets page by page. Track offset and compare against totalNotes to determine when to stop. Default page size of 50-100 balances API calls versus response size.

Step 4: Related Notes Discovery

Call noteStore.findRelated() with a RelatedQuery (by note GUID or plain text) and RelatedResultSpec to discover related notes, notebooks, and tags.

Step 5: Search Result Enrichment

Cache notebook and tag lookups, then map GUIDs to human-readable names. Return enriched results with notebookName, tags[], created, and updated fields.

For the full SearchService, QueryBuilder, pagination, and enrichment implementations, see Implementation Guide.

Search Grammar Quick Reference

OperatorExampleDescription
notebook:notebook:"Work"Restrict to notebook
tag:tag:urgentHas tag
-tag:-tag:archivedExclude tag
intitle:intitle:meetingWord in title
created:created:day-7Created within last 7 days
updated:updated:weekUpdated this week
todo:todo:falseHas uncompleted todos
resource:resource:image/*Has attachment type
any:any: term1 term2Match ANY term (default is AND)

Output

  • SearchService with text search, notebook search, and tag search
  • Fluent QueryBuilder for composing search grammar queries
  • Async generator for paginated results
  • Related notes discovery via findRelated()
  • Enriched results with notebook and tag names

Error Handling

ErrorCauseSolution
RATE_LIMIT_REACHEDToo many search callsAdd delay between paginated requests
BAD_DATA_FORMATInvalid search grammar syntaxValidate query with QueryBuilder
QUOTA_REACHEDSearch quota exceededReduce search frequency, cache results

Resources

Next Steps

For error handling patterns, see evernote-common-errors.

Examples

Find action items: Search for notes with uncompleted todos from the past week using QueryBuilder().thisWeek().hasUncompletedTodos().build(). Enrich results with notebook names.

Meeting search: Find all notes titled "meeting" in the "Work" notebook from the last 30 days, paginate through results, and export titles with tags.

Prerequisites

Completed `evernote-install-auth` setupUnderstanding of Evernote search grammarValid access token configured

Limitations

  • Rate limits can be reached with too many search calls
  • Invalid search grammar syntax causes errors
  • Search quota can be exceeded

How it compares

This workflow provides a structured approach to building complex Evernote searches, unlike manual keyword searches.

Compared to similar skills

evernote-core-workflow-b side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
evernote-core-workflow-b (this skill)027dReviewIntermediate
identify-vault-protocol17moNo flagsIntermediate
openevidence-core-workflow-a127dReviewIntermediate
biopython17moReviewIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

More by jeremylongshore

View all by jeremylongshore

analyzing-logs

jeremylongshore

Analyze application logs to detect performance issues, identify error patterns, and improve stability by extracting key insights.

14123

ollama-setup

jeremylongshore

Configure auto-configure Ollama when user needs local LLM deployment, free AI alternatives, or wants to eliminate hosted API costs. Trigger phrases: "install ollama", "local AI", "free LLM", "self-hosted AI", "replace OpenAI", "no API costs". Use when appropriate context detected. Trigger with relevant phrases based on skill purpose.

1167

backtesting-trading-strategies

jeremylongshore

Backtest crypto and traditional trading strategies against historical data. Calculates performance metrics (Sharpe, Sortino, max drawdown), generates equity curves, and optimizes strategy parameters. Use when user wants to test a trading strategy, validate signals, or compare approaches. Trigger with phrases like "backtest strategy", "test trading strategy", "historical performance", "simulate trades", "optimize parameters", or "validate signals".

1071

generating-database-seed-data

jeremylongshore

Process this skill enables AI assistant to generate realistic test data and database seed scripts for development and testing environments. it uses faker libraries to create realistic data, maintains relational integrity, and allows configurable data volumes. u... Use when working with databases or data models. Trigger with phrases like 'database', 'query', or 'schema'.

1033

cursor-codebase-indexing

jeremylongshore

Execute set up and optimize Cursor codebase indexing. Triggers on "cursor index setup", "codebase indexing", "index codebase", "cursor semantic search". Use when working with cursor codebase indexing functionality. Trigger with phrases like "cursor codebase indexing", "cursor indexing", "cursor".

885

testing-mobile-apps

jeremylongshore

Execute mobile app testing on iOS and Android devices/simulators. Use when performing specialized testing. Trigger with phrases like "test mobile app", "run iOS tests", or "validate Android functionality".

810

You might also like

identify-vault-protocol

tradingstrategy-ai

Identify an unknown vault protocol based on its smart contract address

15

openevidence-core-workflow-a

jeremylongshore

Execute OpenEvidence clinical query workflow for point-of-care decisions. Use when implementing real-time clinical decision support, building EHR-integrated evidence lookups, or point-of-care queries. Trigger with phrases like "openevidence clinical query", "point of care", "quick clinical lookup", "evidence search".

11

biopython

davila7

Primary Python toolkit for molecular biology. Preferred for Python-based PubMed/NCBI queries (Bio.Entrez), sequence manipulation, file parsing (FASTA, GenBank, FASTQ, PDB), advanced BLAST workflows, structures, phylogenetics. For quick BLAST, use gget. For direct REST API, use pubmed-database.

10

reference-sdk

parcadei

Check reference SDK implementations using btca ask

10

apollo-hello-world

jeremylongshore

Create a minimal working Apollo.io example. Use when starting a new Apollo integration, testing your setup, or learning basic Apollo API patterns. Trigger with phrases like "apollo hello world", "apollo example", "apollo quick start", "simple apollo code", "test apollo api".

00

juicebox-migration-deep-dive

jeremylongshore

Advanced Juicebox data migration strategies. Use when migrating from other recruiting platforms, performing bulk data imports, or implementing complex data transformation pipelines. Trigger with phrases like "juicebox data migration", "migrate to juicebox", "juicebox import", "juicebox bulk migration".

00

Search skills

Search the agent skills registry