EV

evernote-enterprise-rbac

Configures role-based access control and notebook permissions for Evernote Business integration.

Install

mkdir -p .claude/skills/evernote-enterprise-rbac && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/8856" && unzip -o skill.zip -d .claude/skills/evernote-enterprise-rbac && rm skill.zip

Installs to .claude/skills/evernote-enterprise-rbac

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.

Implement enterprise RBAC for Evernote integrations.
52 charsno explicit “when” trigger
Intermediate

Key capabilities

  • Map Evernote notebook permissions to application roles
  • Validate user access to specific notebooks via RBAC service
  • Implement authorization middleware for protected routes
  • Integrate Evernote Business account authentication
  • Isolate tenant data using scoped access tokens

How it works

The skill maps Evernote's internal permission tiers to application-defined roles and provides a service to verify these permissions against shared notebook privileges.

Inputs & outputs

You give it
User Evernote token and notebook GUID
You get back
Boolean access decision based on role mapping

When to use evernote-enterprise-rbac

  • Implementing multi-tenant access control
  • Managing notebook sharing permissions
  • Mapping user roles to Evernote privileges
  • Handling business account authorization

About this skill

Evernote Enterprise RBAC

Overview

Implement role-based access control for Evernote integrations, including Evernote Business account handling, shared notebook permissions, multi-tenant architecture, and authorization middleware.

Prerequisites

  • Understanding of Evernote Business accounts and shared notebooks
  • Multi-tenant application architecture
  • Authentication/authorization infrastructure

Instructions

Step 1: Evernote Permission Model

Evernote has built-in sharing permissions for notebooks: READ_NOTEBOOK, MODIFY_NOTEBOOK_PLUS_ACTIVITY, READ_NOTEBOOK_PLUS_ACTIVITY, GROUP, FULL_ACCESS. Map these to your application's role system.

const EvernotePermissions = {
  READ: 'READ_NOTEBOOK',
  WRITE: 'MODIFY_NOTEBOOK_PLUS_ACTIVITY',
  FULL: 'FULL_ACCESS'
};

const AppRoles = {
  viewer: [EvernotePermissions.READ],
  editor: [EvernotePermissions.READ, EvernotePermissions.WRITE],
  admin:  [EvernotePermissions.FULL]
};

Step 2: RBAC Service

Build a service that checks whether a user has the required permission for an operation. Query shared notebook privileges via noteStore.listSharedNotebooks() and getSharedNotebookByAuth().

class RBACService {
  async canAccess(userToken, notebookGuid, requiredPermission) {
    const noteStore = this.getAuthenticatedNoteStore(userToken);
    const sharedNotebooks = await noteStore.listSharedNotebooks();
    const shared = sharedNotebooks.find(sn => sn.notebookGuid === notebookGuid);
    if (!shared) return false;
    return this.hasPermission(shared.privilege, requiredPermission);
  }
}

Step 3: Authorization Middleware

Create Express middleware that validates the user's Evernote token and checks permissions before allowing access to protected routes.

Step 4: Evernote Business Integration

For Evernote Business accounts, use authenticateToBusiness() to get a business token. Business notebooks are shared across the organization. Use getBusinessNotebooks() to list them.

Step 5: Multi-Tenant Support

Isolate tenant data by scoping all Evernote operations to the tenant's access token. Never mix tokens between tenants. Store tenant-to-token mappings with encryption at rest.

For the full RBAC service, middleware, Business account integration, and multi-tenant architecture, see Implementation Guide.

Output

  • Evernote permission model mapped to application roles
  • RBACService class with permission checking
  • Express authorization middleware for protected routes
  • Evernote Business account integration
  • Multi-tenant token isolation and scoping

Error Handling

ErrorCauseSolution
PERMISSION_DENIEDUser lacks required notebook permissionVerify shared notebook privileges
INVALID_AUTHBusiness token expiredRe-authenticate with authenticateToBusiness()
Tenant data leakToken scoping errorValidate tenant ID on every request
LIMIT_REACHED on sharingToo many shared notebooksClean up unused shares (500 max per notebook)

Resources

Next Steps

For migration strategies, see evernote-migration-deep-dive.

Examples

Team workspace: Create a shared notebook for each team. Assign editor role to team members and viewer role to stakeholders. Use middleware to enforce permissions on all note operations.

Business account sync: Authenticate to the business account, list all business notebooks, and sync shared notes to a central dashboard accessible by all organization members.

When not to use it

  • When sharing notebooks without defined application roles
  • When mixing tokens between different tenants

Prerequisites

Understanding of Evernote Business accounts and shared notebooksMulti-tenant application architectureAuthentication/authorization infrastructure

Limitations

  • Shared notebooks are limited to 500 per notebook

How it compares

It provides a structured mapping layer between Evernote's specific permission model and standard application roles, rather than manually checking raw Evernote privileges.

Compared to similar skills

evernote-enterprise-rbac side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
evernote-enterprise-rbac (this skill)027dNo flagsIntermediate
paypal-integration102moNo flagsIntermediate
shopify-apps14moReviewIntermediate
ccxt-typescript16moReviewBeginner

Try saying

Example prompts that trigger this skill in your AI assistant.

More by jeremylongshore

View all by jeremylongshore

analyzing-logs

jeremylongshore

Analyze application logs to detect performance issues, identify error patterns, and improve stability by extracting key insights.

14123

ollama-setup

jeremylongshore

Configure auto-configure Ollama when user needs local LLM deployment, free AI alternatives, or wants to eliminate hosted API costs. Trigger phrases: "install ollama", "local AI", "free LLM", "self-hosted AI", "replace OpenAI", "no API costs". Use when appropriate context detected. Trigger with relevant phrases based on skill purpose.

1167

backtesting-trading-strategies

jeremylongshore

Backtest crypto and traditional trading strategies against historical data. Calculates performance metrics (Sharpe, Sortino, max drawdown), generates equity curves, and optimizes strategy parameters. Use when user wants to test a trading strategy, validate signals, or compare approaches. Trigger with phrases like "backtest strategy", "test trading strategy", "historical performance", "simulate trades", "optimize parameters", or "validate signals".

1071

generating-database-seed-data

jeremylongshore

Process this skill enables AI assistant to generate realistic test data and database seed scripts for development and testing environments. it uses faker libraries to create realistic data, maintains relational integrity, and allows configurable data volumes. u... Use when working with databases or data models. Trigger with phrases like 'database', 'query', or 'schema'.

1033

cursor-codebase-indexing

jeremylongshore

Execute set up and optimize Cursor codebase indexing. Triggers on "cursor index setup", "codebase indexing", "index codebase", "cursor semantic search". Use when working with cursor codebase indexing functionality. Trigger with phrases like "cursor codebase indexing", "cursor indexing", "cursor".

885

testing-mobile-apps

jeremylongshore

Execute mobile app testing on iOS and Android devices/simulators. Use when performing specialized testing. Trigger with phrases like "test mobile app", "run iOS tests", or "validate Android functionality".

810

You might also like

paypal-integration

wshobson

Integrate PayPal payment processing with support for express checkout, subscriptions, and refund management. Use when implementing PayPal payments, processing online transactions, or building e-commerce checkout flows.

1090

shopify-apps

alinaqi

Shopify app development - Remix, Admin API, checkout extensions

19

ccxt-typescript

ccxt

CCXT cryptocurrency exchange library for TypeScript and JavaScript developers (Node.js and browser). Covers both REST API (standard) and WebSocket API (real-time). Helps install CCXT, connect to exchanges, fetch market data, place orders, stream live tickers/orderbooks, handle authentication, and manage errors. Use when working with crypto exchanges in TypeScript/JavaScript projects, trading bots, arbitrage systems, or portfolio management tools. Includes both REST and WebSocket examples.

15

convex

waynesutton

Umbrella skill for all Convex development patterns. Routes to specific skills like convex-functions, convex-realtime, convex-agents, etc.

01

posthog-common-errors

jeremylongshore

Diagnose and fix PostHog common errors and exceptions. Use when encountering PostHog errors, debugging failed requests, or troubleshooting integration issues. Trigger with phrases like "posthog error", "fix posthog", "posthog not working", "debug posthog".

10

evernote-rate-limits

jeremylongshore

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".

00

Search skills

Search the agent skills registry