evernote-hello-world
Get started quickly with a basic Evernote API implementation and ENML formatting guide.
Install
mkdir -p .claude/skills/evernote-hello-world && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/5484" && unzip -o skill.zip -d .claude/skills/evernote-hello-world && rm skill.zipInstalls to .claude/skills/evernote-hello-world
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Create a minimal working Evernote example.Key capabilities
- →Initialize authenticated Evernote client
- →Format content using ENML
- →Create notes programmatically
- →List notebooks and retrieve note data
- →Test API connectivity
How it works
The skill demonstrates the use of the Evernote NoteStore API to create notes formatted in ENML, a restricted XHTML subset.
Inputs & outputs
When to use evernote-hello-world
- →Initialize Evernote client
- →Test API setup
- →Create first note
- →Understand ENML format
About this skill
Evernote Hello World
Overview
Create your first Evernote note using the Cloud API, demonstrating ENML format and NoteStore operations.
Prerequisites
- Completed
evernote-install-authsetup - Valid access token (OAuth or Developer Token for sandbox)
- Development environment ready
Instructions
Step 1: Create Entry File
Initialize an authenticated Evernote client. Use a Developer Token for sandbox or an OAuth access token for production.
// hello-evernote.js
const Evernote = require('evernote');
const client = new Evernote.Client({
token: process.env.EVERNOTE_ACCESS_TOKEN,
sandbox: true // false for production
});
Step 2: Understand ENML Format
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 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>
Step 3: Create Your First Note
Build ENML content and call noteStore.createNote(). The returned object contains the guid, title, and created timestamp.
async 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;
}
Step 4: List Notebooks and Retrieve Notes
Use listNotebooks() to enumerate notebooks and getNote() with boolean flags to control what data is returned (content, resources, recognition, alternate data).
const 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.
Output
- Working code file with Evernote client initialization
- Successfully created note in your Evernote account
- Console output with note GUID and confirmation
Error Handling
| 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> |
Resources
Next Steps
Proceed to evernote-local-dev-loop for development workflow setup.
Examples
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.
When not to use it
- →Using forbidden HTML elements like script or form
- →Using class or id attributes in ENML
Prerequisites
Limitations
- →Only inline styles are allowed in ENML
- →Must include XML declaration and DOCTYPE
How it compares
It provides a minimal, working boilerplate that handles the specific XML requirements of the Evernote API.
Compared to similar skills
evernote-hello-world side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| evernote-hello-world (this skill) | 1 | 27d | Review | Beginner |
| dependency-upgrade | 26 | 5mo | Review | Intermediate |
| chrome-devtools | 41 | 7mo | Review | Intermediate |
| playwright-browser-automation | 29 | 7mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by jeremylongshore
View all by jeremylongshore →You might also like
dependency-upgrade
wshobson
Manage major dependency version upgrades with compatibility analysis, staged rollout, and comprehensive testing. Use when upgrading framework versions, updating major dependencies, or managing breaking changes in libraries.
chrome-devtools
mrgoonie
Browser automation, debugging, and performance analysis using Puppeteer CLI scripts. Use for automating browsers, taking screenshots, analyzing performance, monitoring network traffic, web scraping, form automation, and JavaScript debugging.
playwright-browser-automation
lackeyjb
Complete browser automation with Playwright. Auto-detects dev servers, writes clean test scripts to /tmp. Test pages, fill forms, take screenshots, check responsive design, validate UX, test login flows, check links, automate any browser task. Use when user wants to test websites, automate browser interactions, validate web functionality, or perform any browser-based testing.
svelte-expert
Raudbjorn
Expert Svelte/SvelteKit development assistant for building components, utilities, and applications. Use when creating Svelte components, SvelteKit applications, implementing reactive patterns, handling state management, working with stores, transitions, animations, or any Svelte/SvelteKit development task. Includes comprehensive documentation access, code validation with svelte-autofixer, and playground link generation.
nestjs-expert
davila7
Nest.js framework expert specializing in module architecture, dependency injection, middleware, guards, interceptors, testing with Jest/Supertest, TypeORM/Mongoose integration, and Passport.js authentication. Use PROACTIVELY for any Nest.js application issues including architecture decisions, testing strategies, performance optimization, or debugging complex dependency injection problems. If a specialized expert is a better fit, I will recommend switching and stop.
perf-lighthouse
tech-leads-club
Run Lighthouse audits locally via CLI or Node API, parse and interpret reports, set performance budgets. Use when measuring site performance, understanding Lighthouse scores, setting up budgets, or integrating audits into CI. Triggers on: lighthouse, run lighthouse, lighthouse score, performance audit, performance budget.