jeremylongshore / evernote-core-workflow-a
Install for your project team
Run this command in your project directory to install the skill for your entire team:
mkdir -p .claude/skills/evernote-core-workflow-a && curl -L -o skill.zip "https://fastmcp.me/Skills/Download/2396" && unzip -o skill.zip -d .claude/skills/evernote-core-workflow-a && rm skill.zip
Project Skills
This skill will be saved in .claude/skills/evernote-core-workflow-a/ and checked into git. All team members will have access to it automatically.
Important: Please verify the skill by reviewing its instructions before using it.
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".
0 views
0 installs
Skill Content
---
name: evernote-core-workflow-a
description: |
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".
allowed-tools: Read, Write, Edit, Bash(npm:*), Grep
version: 1.0.0
license: MIT
author: Jeremy Longshore <jeremy@intentsolutions.io>
compatible-with: claude-code, codex, openclaw
---
# 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.
```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);
```
### 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](references/implementation-guide.md) 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
- [Creating Notes](https://dev.evernote.com/doc/articles/creating_notes.php)
- [ENML Reference](https://dev.evernote.com/doc/articles/enml.php)
- [Note Types Reference](https://dev.evernote.com/doc/reference/)
## 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.