Claude-code-plugins-plus-skills evernote-core-workflow-a

install
source · Clone the upstream repo
git clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/jeremylongshore/claude-code-plugins-plus-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/saas-packs/evernote-pack/skills/evernote-core-workflow-a" ~/.claude/skills/jeremylongshore-claude-code-plugins-plus-skills-evernote-core-workflow-a && rm -rf "$T"
manifest: plugins/saas-packs/evernote-pack/skills/evernote-core-workflow-a/SKILL.md
source content

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

ErrorCauseSolution
BAD_DATA_FORMAT
Invalid ENMLUse
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 contentValidate inputs before API call
INVALID_USER
Token expiredRe-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.