agentsclimarketplace

Evernote core workflow b

Skill jeremylongshore/claude-code-plugins-plus-skills/plugins/saas-packs/evernote-pack/skills/evernote-core-workflow-b

425 plugins, 2,810 skills, 200 agents for Claude Code. Open-source marketplace at tonsofskills.com with the ccpi CLI package manager.

Install
npx -y skills add jeremylongshore/claude-code-plugins-plus-skills --skill evernote-core-workflow-b

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

What its author says it does

Copied from the file, not written here

'Execute Evernote secondary workflow: Search and Retrieval.

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

4.7 KB, ~1.0k tokens by cl100k_base, as published. Nobody here has run it

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.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.