evernote-hello-world
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".
Best use case
evernote-hello-world is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
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".
Teams using evernote-hello-world should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/evernote-hello-world/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How evernote-hello-world Compares
| Feature / Agent | evernote-hello-world | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
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".
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Evernote Hello World
## Overview
Create your first Evernote note using the Cloud API, demonstrating ENML format and NoteStore operations.
## Prerequisites
- Completed `evernote-install-auth` setup
- 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.
```javascript
// 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
<?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.
```javascript
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).
```javascript
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](references/implementation-guide.md).
## 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
- [Creating Notes](https://dev.evernote.com/doc/articles/creating_notes.php)
- [ENML Reference](https://dev.evernote.com/doc/articles/enml.php)
- [Core Concepts](https://dev.evernote.com/doc/articles/core_concepts.php)
- [API Reference](https://dev.evernote.com/doc/reference/)
## 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`.Related Skills
exa-hello-world
Create a minimal working Exa search example with real results. Use when starting a new Exa integration, testing your setup, or learning basic search, searchAndContents, and findSimilar patterns. Trigger with phrases like "exa hello world", "exa example", "exa quick start", "simple exa search", "first exa query".
evernote-webhooks-events
Implement Evernote webhook notifications and sync events. Use when handling note changes, implementing real-time sync, or processing Evernote notifications. Trigger with phrases like "evernote webhook", "evernote events", "evernote sync", "evernote notifications".
evernote-upgrade-migration
Upgrade Evernote SDK versions and migrate between API versions. Use when upgrading SDK, handling breaking changes, or migrating to newer API patterns. Trigger with phrases like "upgrade evernote sdk", "evernote migration", "update evernote", "evernote breaking changes".
evernote-security-basics
Implement security best practices for Evernote integrations. Use when securing API credentials, implementing OAuth securely, or hardening Evernote integrations. Trigger with phrases like "evernote security", "secure evernote", "evernote credentials", "evernote oauth security".
evernote-sdk-patterns
Advanced Evernote SDK patterns and best practices. Use when implementing complex note operations, batch processing, search queries, or optimizing SDK usage. Trigger with phrases like "evernote sdk patterns", "evernote best practices", "evernote advanced", "evernote batch operations".
evernote-reference-architecture
Reference architecture for Evernote integrations. Use when designing system architecture, planning integrations, or building scalable Evernote applications. Trigger with phrases like "evernote architecture", "design evernote system", "evernote integration pattern", "evernote scale".
evernote-rate-limits
Handle Evernote API rate limits effectively. Use when implementing rate limit handling, optimizing API usage, or troubleshooting rate limit errors. Trigger with phrases like "evernote rate limit", "evernote throttling", "api quota evernote", "rate limit exceeded".
evernote-prod-checklist
Production readiness checklist for Evernote integrations. Use when preparing to deploy Evernote integration to production, or auditing production readiness. Trigger with phrases like "evernote production", "deploy evernote", "evernote go live", "production checklist evernote".
evernote-performance-tuning
Optimize Evernote integration performance. Use when improving response times, reducing API calls, or scaling Evernote integrations. Trigger with phrases like "evernote performance", "optimize evernote", "evernote speed", "evernote caching".
evernote-observability
Implement observability for Evernote integrations. Use when setting up monitoring, logging, tracing, or alerting for Evernote applications. Trigger with phrases like "evernote monitoring", "evernote logging", "evernote metrics", "evernote observability".
evernote-multi-env-setup
Configure multi-environment setup for Evernote integrations. Use when setting up dev, staging, and production environments, or managing environment-specific configurations. Trigger with phrases like "evernote environments", "evernote staging", "evernote dev setup", "multiple environments evernote".
evernote-migration-deep-dive
Deep dive into Evernote data migration strategies. Use when migrating to/from Evernote, bulk data transfers, or complex migration scenarios. Trigger with phrases like "migrate to evernote", "migrate from evernote", "evernote data transfer", "bulk evernote migration".