'Debug Evernote API issues with diagnostic tools and techniques.
Scanned 9/2/2026
Install to Claude Code
npx -y skills add jeremylongshore/tons-of-skills-marketplace --skill evernote-debug-bundle --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Evernote Debug Bundle?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/jeremylongshore-evernote-debug-bundle-tons-of-skills-marketplace)More formats (shields.io, HTML) on the badges page.
---
name: evernote-debug-bundle
description: 'Debug Evernote API issues with diagnostic tools and techniques.
Use when troubleshooting API calls, inspecting requests/responses,
or diagnosing integration problems.
Trigger with phrases like "debug evernote", "evernote diagnostic",
"troubleshoot evernote", "evernote logs", "inspect evernote".
'
allowed-tools: Read, Write, Edit, Bash(npm:*), Bash(node:*), Grep
version: 1.13.0
license: MIT
author: Jeremy Longshore <jeremy@intentsolutions.io>
tags:
- saas
- evernote
- api
- debugging
compatibility: Designed for Claude Code
---
# Evernote Debug Bundle
## Current State
!`node --version 2>/dev/null || echo 'N/A'`
!`python3 --version 2>/dev/null || echo 'N/A'`
## Overview
Comprehensive debugging toolkit for Evernote API integrations, including request/response logging, ENML validation with auto-fix, token inspection, and diagnostic CLI utilities.
## Prerequisites
- Evernote SDK installed
- Node.js environment
- Understanding of common Evernote errors (see `evernote-common-errors`)
## Instructions
### Step 1: Debug Logger
Create a logger that captures API method names, arguments (with token redaction), response times, and error details. Write to both console and file for post-mortem analysis.
```javascript
class EvernoteDebugLogger {
constructor(logFile = 'evernote-debug.log') {
this.logFile = logFile;
this.requests = [];
}
logRequest(method, args, response, duration, error) {
const entry = {
timestamp: new Date().toISOString(),
method,
duration: `${duration}ms`,
success: !error,
error: error?.message || error?.errorCode
};
this.requests.push(entry);
fs.appendFileSync(this.logFile, JSON.stringify(entry) + '\n');
}
}
```
### Step 2: Instrumented Client Wrapper
Wrap the NoteStore with a Proxy that automatically logs every API call, measures response time, and catches errors. This adds zero-config debugging to any existing integration.
```javascript
function instrumentNoteStore(noteStore, logger) {
return new Proxy(noteStore, {
get(target, prop) {
if (typeof target[prop] !== 'function') return target[prop];
return async (...args) => {
const start = Date.now();
try {
const result = await targetprop;
logger.logRequest(prop, args, result, Date.now() - start);
return result;
} catch (error) {
logger.logRequest(prop, args, null, Date.now() - start, error);
throw error;
}
};
}
});
}
```
### Step 3: ENML Validator
Validate ENML content against the DTD rules: check for XML declaration, DOCTYPE, `<en-note>` root, forbidden elements, and unclosed tags. Optionally auto-fix common issues (add missing headers, close tags, strip forbidden elements).
### Step 4: Token Inspector
Check token validity by calling `userStore.getUser()`. Report token owner, expiration date (`edam_expires`), account type, and remaining upload quota.
### Step 5: Diagnostic CLI
Create a CLI script with commands: `diagnose` (run all checks), `validate-enml <file>` (validate ENML content), `inspect-token` (show token info), `test-api` (verify API connectivity).
For the full debug logger, instrumented client, ENML auto-fixer, token inspector, and diagnostic CLI, see [Implementation Guide](references/implementation-guide.md).
## Output
- `EvernoteDebugLogger` with file and console output
- Proxy-based instrumented NoteStore wrapper
- ENML validator with auto-fix capability
- Token and account inspector utility
- Diagnostic CLI with `diagnose`, `validate-enml`, `inspect-token` commands
## Error Handling
| Issue | Diagnostic | Solution |
|-------|------------|----------|
| Auth failures | Run `inspect-token` to check expiration | Re-authenticate if expired |
| ENML errors | Run `validate-enml` on content | Auto-fix or manually correct |
| Rate limits | Check request frequency in debug log | Increase delay between calls |
| Missing data | Inspect response in debug log | Verify API parameters (withContent flags) |
## Resources
- [Error Handling](https://dev.evernote.com/doc/articles/error_handling.php)
- [ENML DTD](http://xml.evernote.com/pub/enml2.dtd)
- [API Reference](https://dev.evernote.com/doc/reference/)
## Next Steps
For rate limit handling, see `evernote-rate-limits`.
## Examples
**Request tracing**: Wrap NoteStore with the instrumented proxy, run your workflow, then review `evernote-debug.log` for slow calls (>2s), failed requests, and rate limit hits.
**ENML debugging**: Pipe note content through the ENML validator to find missing DOCTYPE, forbidden `<script>` tags, or unclosed elements. Use auto-fix mode to correct issues automatically.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!