Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Install and configure Evernote SDK and OAuth authentication. Use when setting up a new Evernote integration, configuring API keys, or initializing Evernote in your project. Trigger with phrases like "install evernote", "setup evernote", "evernote auth", "configure evernote API", "evernote oauth".
.claude/skills/jeremylongshore-evernote-install-auth/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | -31% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 59% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 3% | 0% |
| case-14 | ✗→✓ | ▲ Improved | -19% | 0% |
| case-18 | ✗→✓ | ▲ Improved | -28% | 0% |
Set up the Evernote SDK and configure OAuth 1.0a authentication for accessing the Evernote Cloud API. Covers API key provisioning, SDK installation, OAuth flow implementation, and connection verification.
consumerKey and consumerSecret credentialsbashset -euo pipefail # Node.js npm install evernote # Python pip install evernote
bashcat << 'EOF' >> .env EVERNOTE_CONSUMER_KEY=your-consumer-key EVERNOTE_CONSUMER_SECRET=your-consumer-secret EVERNOTE_SANDBOX=true EOF
javascriptconst Evernote = require('evernote'); const client = new Evernote.Client({ consumerKey: process.env.EVERNOTE_CONSUMER_KEY, consumerSecret: process.env.EVERNOTE_CONSUMER_SECRET, sandbox: process.env.EVERNOTE_SANDBOX === 'true', china: false });
Set up request token acquisition, user authorization redirect, and callback handling. Alternatively, use a developer token for sandbox testing to skip the OAuth flow entirely.
Create an authenticated client, access getUserStore(), and call getUser() to confirm authentication succeeds.
For the complete OAuth callback implementation, developer token setup, Python client initialization, and token expiration handling, see OAuth flow reference.
| Error | Cause | Resolution | |-------|-------|------------| | Invalid consumer key | Wrong or unapproved key | Verify key in the developer portal | | OAuth signature mismatch | Incorrect consumer secret | Check secret matches the portal value | | Token expired | Access token older than 1 year | Re-authenticate the user via OAuth | | Rate limit reached | Too many API calls | Implement exponential backoff | | Permission denied | Insufficient API key scope | Request additional permissions |
Sandbox quickstart: Obtain a developer token from sandbox.evernote.com/api/DeveloperToken.action. Set EVERNOTE_DEV_TOKEN in .env and initialize the client with sandbox: true to skip the full OAuth flow during development.
Production OAuth: Request an API key from the developer portal, implement the OAuth 1.0a flow with an HTTPS callback URL, store the access token securely alongside its edam_expires timestamp, and schedule token refresh before expiration.
After successful auth, proceed to evernote-hello-world for the first note creation.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 14,143 | 13,943 | -1% | 1 | 1 | 0% | 2,216 | 2,872 | +30% | 0 | 0 | — |
case-02 | fail→fail | 15,433 | 21,844 | +42% | 1 | 1 | 0% | 3,045 | 4,342 | +43% | 0 | 0 | — |
case-03 | pass→pass | 7,430 | 2,146 | -71% | 1 | 1 | 0% | 1,164 | 1,113 | -4% | 0 | 0 | — |
case-04 | fail→pass | 12,729 | 3,241 | -75% | 1 | 1 | 0% | 1,760 | 1,223 | -31% | 0 | 0 | — |
case-05 | pass→pass | 7,507 | 3,840 | -49% | 1 | 1 | 0% | 1,331 | 1,316 | -1% | 0 | 0 | — |
case-06 | pass→pass | 5,361 | 4,971 | -7% | 1 | 1 | 0% | 998 | 1,577 | +58% | 0 | 0 | — |
case-07 | pass→pass | 12,234 | 9,237 | -24% | 1 | 1 | 0% | 2,336 | 2,300 | -2% | 0 | 0 | — |
case-08 | fail→pass | 5,172 | 4,277 | -17% | 1 | 1 | 0% | 898 | 1,426 | +59% | 0 | 0 | — |
case-09 | fail→pass | 17,198 | 11,018 | -36% | 1 | 1 | 0% | 2,627 | 2,706 | +3% | 0 | 0 | — |
case-10 | pass→pass | 12,121 | 7,023 | -42% | 1 | 1 | 0% | 1,959 | 2,104 | +7% | 0 | 0 | — |
case-11 | pass→pass | 16,290 | 15,521 | -5% | 1 | 1 | 0% | 2,236 | 3,162 | +41% | 0 | 0 | — |
case-12 | pass→pass | 17,451 | 14,023 | -20% | 1 | 1 | 0% | 2,448 | 2,947 | +20% | 0 | 0 | — |
case-13 | pass→pass | 9,684 | 1,811 | -81% | 1 | 1 | 0% | 1,362 | 1,054 | -23% | 0 | 0 | — |
case-14 | fail→pass | 9,615 | 1,447 | -85% | 1 | 1 | 0% | 1,289 | 1,039 | -19% | 0 | 0 | — |
case-15 | pass→pass | 7,575 | 3,253 | -57% | 1 | 1 | 0% | 1,037 | 1,370 | +32% | 0 | 0 | — |
case-16 | pass→pass | 6,415 | 2,649 | -59% | 1 | 1 | 0% | 1,104 | 1,140 | +3% | 0 | 0 | — |
case-17 | pass→pass | 4,681 | 2,765 | -41% | 1 | 1 | 0% | 699 | 1,066 | +53% | 0 | 0 | — |
case-18 | fail→pass | 11,565 | 2,861 | -75% | 1 | 1 | 0% | 1,537 | 1,104 | -28% | 0 | 0 | — |
case-19 | pass→pass | 16,616 | 6,028 | -64% | 1 | 1 | 0% | 2,332 | 1,913 | -18% | 0 | 0 | — |
case-20 | pass→pass | 11,609 | 15,034 | +30% | 1 | 1 | 0% | 2,221 | 3,369 | +52% | 0 | 0 | — |
case-21 | pass→pass | 12,493 | 13,329 | +7% | 1 | 1 | 0% | 1,936 | 2,901 | +50% | 0 | 0 | — |
case-22 | pass→pass | 12,824 | 9,430 | -26% | 1 | 1 | 0% | 2,446 | 2,787 | +14% | 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. 22 cases were attempted. The headline lift of +23 percentage points is the difference between those two pass rates over the 22 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.