Agent Skills: Evernote Debug Bundle

|

UncategorizedID: jeremylongshore/claude-code-plugins-plus-skills/evernote-debug-bundle

Install this agent skill to your local

pnpm dlx add-skill https://github.com/jeremylongshore/claude-code-plugins-plus-skills/tree/HEAD/plugins/saas-packs/evernote-pack/skills/evernote-debug-bundle

Skill Files

Browse the full folder contents for evernote-debug-bundle.

Download Skill

Loading file tree…

plugins/saas-packs/evernote-pack/skills/evernote-debug-bundle/SKILL.md

Skill Metadata

Name
evernote-debug-bundle
Description
|

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.

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.

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 target[prop](...args);
          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.

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

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.

Evernote Debug Bundle Skill | Agent Skills