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.mdsource 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
setupevernote-install-auth - 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
class with create, read, update, and delete operationsNoteService- ENML content formatting and validation helpers
for notebook CRUD and stack organizationNotebookService- Tag management (add, remove, find-or-create)
- Checklist note support with
elements<en-todo>
Error Handling
| Error | Cause | Solution |
|---|---|---|
| Invalid ENML | Use helper; remove forbidden elements (, ) |
| Too many notebooks (250 max) | Clean up unused notebooks before creating |
| Missing title or content | Validate inputs before API call |
| 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.