Agent Skills: Evernote Core Workflow A: Note Creation & Management

|

UncategorizedID: jeremylongshore/claude-code-plugins-plus-skills/evernote-core-workflow-a

Install this agent skill to your local

pnpm dlx add-skill https://github.com/jeremylongshore/claude-code-plugins-plus-skills/tree/HEAD/plugins/saas-packs/evernote-pack/skills/evernote-core-workflow-a

Skill Files

Browse the full folder contents for evernote-core-workflow-a.

Download Skill

Loading file tree…

plugins/saas-packs/evernote-pack/skills/evernote-core-workflow-a/SKILL.md

Skill Metadata

Name
evernote-core-workflow-a
Description
|

Evernote Core Workflow A: Note Creation & Management

Overview

Primary workflow for creating, organizing, and managing notes in Evernote. Covers CRUD operations, ENML formatting, notebook organization, and tag management.

Prerequisites

  • Completed evernote-install-auth setup
  • Understanding of ENML format
  • Valid access token configured

Instructions

Step 1: Note Creation Service

Build a NoteService class that wraps NoteStore operations. Key methods: createNote() with ENML wrapping, createTextNote() for plain text, createChecklistNote() for <en-todo> items. Always sanitize titles (max 255 chars, no newlines) and wrap content in the required ENML envelope.

// Wrap raw HTML in required ENML envelope
function wrapInENML(content) {
  return `<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">
<en-note>${content}</en-note>`;
}

const note = new Evernote.Types.Note();
note.title = 'Meeting Notes';
note.content = wrapInENML('<p>Discussion points...</p>');
note.tagNames = ['meeting', 'team'];
const created = await noteStore.createNote(note);

Step 2: Note Retrieval and Reading

Use getNote(guid, withContent, withResources, withRecognition, withAltData) to control response size. Extract plain text from ENML by stripping tags. Check for uncompleted todos with /<en-todo\s+checked="false"/.

Step 3: Note Updates

Update notes by fetching metadata, modifying fields, and calling noteStore.updateNote(). Append content by inserting before the closing </en-note> tag. Add tags via note.tagNames array. Move notes between notebooks by changing note.notebookGuid.

Step 4: Note Organization

Manage notebooks with listNotebooks(), createNotebook(), and getDefaultNotebook(). Use notebook.stack to group notebooks into stacks. Implement ensureNotebook(name) to find-or-create by name.

Step 5: Complete Workflow Example

See Implementation Guide for the full NoteService, NotebookService, and a combined workflow that creates meeting notes with checklists, appends content, and toggles todos.

Output

  • NoteService class with create, read, update, and delete operations
  • ENML content formatting and validation helpers
  • NotebookService for notebook CRUD and stack organization
  • Tag management (add, remove, find-or-create)
  • Checklist note support with <en-todo> elements

Error Handling

| Error | Cause | Solution | |-------|-------|----------| | BAD_DATA_FORMAT | Invalid ENML | Use wrapInENML() helper; remove forbidden elements (<script>, <form>) | | LIMIT_REACHED | Too many notebooks (250 max) | Clean up unused notebooks before creating | | DATA_REQUIRED | Missing title or content | Validate inputs before API call | | INVALID_USER | Token expired | Re-authenticate user via OAuth flow |

Resources

Next Steps

For search and retrieval workflows, see evernote-core-workflow-b.

Examples

Meeting notes workflow: Create a note with attendees, discussion points, and <en-todo> action items in a "Work" notebook. Append follow-up items after the meeting. Tag with meeting and team.

Bulk note import: Read Markdown files from disk, convert to ENML using htmlToENML(), and create notes in a designated notebook with automatic tag assignment.