Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Create a minimal working Evernote example. Use when starting a new Evernote integration, testing your setup, or learning basic Evernote API patterns. Trigger with phrases like "evernote hello world", "evernote example", "evernote quick start", "simple evernote code", "create first note".
.claude/skills/jeremylongshore-evernote-hello-world/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-13 | ✗→✓ | ▲ Improved | 14% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 51% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 31% | 0% |
| case-01 | ✓→✓ | = Same ✓ | 21% | 0% |
| case-02 | ✓→✓ | = Same ✓ | 58% | 0% |
Create your first Evernote note using the Cloud API, demonstrating ENML format and NoteStore operations.
evernote-install-auth setupInitialize an authenticated Evernote client. Use a Developer Token for sandbox or an OAuth access token for production.
javascript// hello-evernote.js const Evernote = require('evernote'); const client = new Evernote.Client({ token: process.env.EVERNOTE_ACCESS_TOKEN, sandbox: true // false for production });
Evernote uses ENML (Evernote Markup Language), a restricted XHTML subset. Every note must include the XML declaration, DOCTYPE, and <en-note> root element. Forbidden elements include <script>, <form>, <iframe>. Only inline styles are allowed (no class or id attributes).
xml<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd"> <en-note> <h1>Note Title</h1> <p>Content goes here</p> <en-todo checked="false"/> A task item </en-note>
Build ENML content and call noteStore.createNote(). The returned object contains the guid, title, and created timestamp.
javascriptasync function createHelloWorldNote() { const noteStore = client.getNoteStore(); const content = `<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd"> <en-note> <h1>Hello from Claude Code!</h1> <p>Created at: ${new Date().toISOString()}</p> </en-note>`; const note = new Evernote.Types.Note(); note.title = 'Hello World - Evernote API'; note.content = content; const createdNote = await noteStore.createNote(note); console.log('Note GUID:', createdNote.guid); return createdNote; }
Use listNotebooks() to enumerate notebooks and getNote() with boolean flags to control what data is returned (content, resources, recognition, alternate data).
javascriptconst noteStore = client.getNoteStore(); // List all notebooks const notebooks = await noteStore.listNotebooks(); notebooks.forEach(nb => console.log(`- ${nb.name} (${nb.guid})`)); // Retrieve a note with content const note = await noteStore.getNote(noteGuid, true, false, false, false); console.log('Title:', note.title);
For the complete working example with Python SDK, todo lists, and a combined workflow, see Implementation Guide.
| Error | Cause | Solution | |-------|-------|----------| | EDAMUserException: BAD_DATA_FORMAT | Invalid ENML content | Validate against ENML DTD; ensure XML declaration and DOCTYPE | | EDAMNotFoundException | Note or notebook not found | Check GUID is correct and note is not in trash | | EDAMSystemException: RATE_LIMIT_REACHED | Too many requests | Wait for rateLimitDuration seconds before retrying | | Missing DOCTYPE | ENML missing required header | Add <?xml ...?> and <!DOCTYPE ...> before <en-note> |
Proceed to evernote-local-dev-loop for development workflow setup.
Sandbox test: Create a note using a Developer Token with sandbox: true, verify it appears in your sandbox account at sandbox.evernote.com.
Production note: Switch to OAuth access token, set sandbox: false, create a note in a specific notebook using note.notebookGuid.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | pass→pass | 13,986 | 15,776 | +13% | 1 | 1 | 0% | 2,268 | 2,736 | +21% | 0 | 0 | — |
case-02 | pass→pass | 9,612 | 7,850 | -18% | 1 | 1 | 0% | 1,414 | 2,233 | +58% | 0 | 0 | — |
case-03 | pass→pass | 10,847 | 11,625 | +7% | 1 | 1 | 0% | 2,057 | 2,828 | +37% | 0 | 0 | — |
case-04 | pass→pass | 9,647 | 9,434 | -2% | 1 | 1 | 0% | 1,544 | 2,584 | +67% | 0 | 0 | — |
case-05 | pass→pass | 11,775 | 6,615 | -44% | 1 | 1 | 0% | 1,842 | 2,174 | +18% | 0 | 0 | — |
case-06 | pass→pass | 7,526 | 8,085 | +7% | 1 | 1 | 0% | 1,491 | 2,488 | +67% | 0 | 0 | — |
case-07 | fail→fail | 9,935 | 4,293 | -57% | 1 | 1 | 0% | 1,440 | 1,893 | +31% | 0 | 0 | — |
case-08 | pass→pass | 5,139 | 4,879 | -5% | 1 | 1 | 0% | 863 | 1,650 | +91% | 0 | 0 | — |
case-09 | pass→pass | 9,727 | 6,157 | -37% | 1 | 1 | 0% | 1,359 | 2,205 | +62% | 0 | 0 | — |
case-10 | pass→pass | 13,822 | 9,644 | -30% | 1 | 1 | 0% | 2,040 | 2,615 | +28% | 0 | 0 | — |
case-11 | pass→pass | 11,355 | 4,606 | -59% | 1 | 1 | 0% | 1,297 | 1,943 | +50% | 0 | 0 | — |
case-12 | pass→pass | 4,890 | 2,151 | -56% | 1 | 1 | 0% | 861 | 1,431 | +66% | 0 | 0 | — |
case-13 | fail→pass | 10,753 | 4,291 | -60% | 1 | 1 | 0% | 1,631 | 1,854 | +14% | 0 | 0 | — |
case-14 | pass→pass | 7,432 | 2,571 | -65% | 1 | 1 | 0% | 1,019 | 1,591 | +56% | 0 | 0 | — |
case-15 | fail→pass | 5,630 | 2,159 | -62% | 1 | 1 | 0% | 894 | 1,351 | +51% | 0 | 0 | — |
case-16 | fail→pass | 14,558 | 11,020 | -24% | 1 | 1 | 0% | 2,236 | 2,931 | +31% | 0 | 0 | — |
case-17 | pass→pass | 8,444 | 5,965 | -29% | 1 | 1 | 0% | 1,498 | 2,178 | +45% | 0 | 0 | — |
case-18 | pass→pass | 5,369 | 4,361 | -19% | 1 | 1 | 0% | 948 | 1,771 | +87% | 0 | 0 | — |
case-19 | pass→pass | 5,439 | 2,524 | -54% | 1 | 1 | 0% | 972 | 1,469 | +51% | 0 | 0 | — |
case-20 | pass→pass | 8,313 | 5,954 | -28% | 1 | 1 | 0% | 1,178 | 2,209 | +88% | 0 | 0 | — |
case-21 | pass→pass | 12,549 | 8,355 | -33% | 1 | 1 | 0% | 1,740 | 2,538 | +46% | 0 | 0 | — |
case-22 | pass→pass | 19,515 | 20,563 | +5% | 1 | 1 | 0% | 4,024 | 4,322 | +7% | 0 | 0 | — |
case-23 | pass→pass | 20,907 | 34,051 | +63% | 1 | 1 | 0% | 4,033 | 6,658 | +65% | 0 | 0 | — |
case-24 | pass→pass | 13,823 | 7,516 | -46% | 1 | 1 | 0% | 2,101 | 2,194 | +4% | 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. 24 cases were attempted. The headline lift of +13 percentage points is the difference between those two pass rates over the 24 comparable cases.
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.