Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Execute Evernote primary workflow: Note Creation and Management. Use when creating notes, organizing content, managing notebooks, or implementing note-taking features. Trigger with phrases like "create evernote note", "evernote note workflow", "manage evernote notes", "evernote content".
.claude/skills/jeremylongshore-evernote-core-workflow-a/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 9% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 4% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 59% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 35% | 0% |
| case-05 | ✓→✗ | ▼ Worse | 39% | 0% |
Primary workflow for creating, organizing, and managing notes in Evernote. Covers CRUD operations, ENML formatting, notebook organization, and tag management.
evernote-install-auth setupBuild 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.
javascript// 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);
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"/.
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.
Manage notebooks with listNotebooks(), createNotebook(), and getDefaultNotebook(). Use notebook.stack to group notebooks into stacks. Implement ensureNotebook(name) to find-or-create by name.
See Implementation Guide for the full NoteService, NotebookService, and a combined workflow that creates meeting notes with checklists, appends content, and toggles todos.
NoteService class with create, read, update, and delete operationsNotebookService for notebook CRUD and stack organization<en-todo> elements| 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 |
For search and retrieval workflows, see evernote-core-workflow-b.
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.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | pass→pass | 24,212 | 27,542 | +14% | 1 | 1 | 0% | 4,314 | 5,141 | +19% | 0 | 0 | — |
case-02 | fail→pass | 27,511 | 21,055 | -23% | 1 | 1 | 0% | 3,985 | 4,339 | +9% | 0 | 0 | — |
case-03 | fail→pass | 34,917 | 25,134 | -28% | 1 | 1 | 0% | 5,756 | 5,990 | +4% | 0 | 0 | — |
case-04 | pass→pass | 16,040 | 9,183 | -43% | 1 | 1 | 0% | 2,470 | 2,379 | -4% | 0 | 0 | — |
case-05 | pass→fail | 15,496 | 11,588 | -25% | 1 | 1 | 0% | 2,232 | 3,095 | +39% | 0 | 0 | — |
case-06 | pass→pass | 13,489 | 8,371 | -38% | 1 | 1 | 0% | 2,534 | 2,627 | +4% | 0 | 0 | — |
case-07 | pass→pass | 14,865 | 8,861 | -40% | 1 | 1 | 0% | 2,743 | 2,594 | -5% | 0 | 0 | — |
case-08 | pass→pass | 11,911 | 7,646 | -36% | 1 | 1 | 0% | 2,177 | 2,369 | +9% | 0 | 0 | — |
case-09 | pass→pass | 8,030 | 5,484 | -32% | 1 | 1 | 0% | 1,198 | 1,654 | +38% | 0 | 0 | — |
case-10 | pass→pass | 9,481 | 5,732 | -40% | 1 | 1 | 0% | 1,873 | 2,033 | +9% | 0 | 0 | — |
case-11 | fail→pass | 6,920 | 6,603 | -5% | 1 | 1 | 0% | 1,399 | 2,231 | +59% | 0 | 0 | — |
case-12 | fail→pass | 11,675 | 7,131 | -39% | 1 | 1 | 0% | 1,739 | 2,354 | +35% | 0 | 0 | — |
case-13 | pass→pass | 12,471 | 12,505 | +0% | 1 | 1 | 0% | 1,978 | 2,864 | +45% | 0 | 0 | — |
case-14 | fail→fail | 19,663 | 18,151 | -8% | 1 | 1 | 0% | 3,279 | 3,702 | +13% | 0 | 0 | — |
case-15 | pass→pass | 20,325 | 14,523 | -29% | 1 | 1 | 0% | 3,290 | 4,037 | +23% | 0 | 0 | — |
case-16 | pass→pass | 11,885 | 12,765 | +7% | 1 | 1 | 0% | 2,411 | 3,847 | +60% | 0 | 0 | — |
case-17 | pass→pass | 15,048 | 9,305 | -38% | 1 | 1 | 0% | 2,280 | 2,717 | +19% | 0 | 0 | — |
case-18 | pass→pass | 11,915 | 7,849 | -34% | 1 | 1 | 0% | 1,634 | 2,033 | +24% | 0 | 0 | — |
case-19 | pass→pass | 16,724 | 17,335 | +4% | 1 | 1 | 0% | 3,536 | 3,670 | +4% | 0 | 0 | — |
case-20 | pass→pass | 12,331 | 7,967 | -35% | 1 | 1 | 0% | 1,854 | 2,586 | +39% | 0 | 0 | — |
case-21 | pass→pass | 16,266 | 12,968 | -20% | 1 | 1 | 0% | 2,396 | 3,513 | +47% | 0 | 0 | — |
case-22 | pass→pass | 14,872 | 15,235 | +2% | 1 | 1 | 0% | 3,067 | 3,958 | +29% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +14 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.