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.zipInstalls 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.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
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
RBACServiceclass with permission checking- Express authorization middleware for protected routes
- Evernote Business account integration
- Multi-tenant token isolation and scoping
Error Handling
| Error | Cause | Solution |
|---|---|---|
PERMISSION_DENIED | User lacks required notebook permission | Verify shared notebook privileges |
INVALID_AUTH | Business token expired | Re-authenticate with authenticateToBusiness() |
| Tenant data leak | Token scoping error | Validate tenant ID on every request |
LIMIT_REACHED on sharing | Too many shared notebooks | Clean 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
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.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| evernote-enterprise-rbac (this skill) | 0 | 27d | No flags | Intermediate |
| paypal-integration | 10 | 2mo | No flags | Intermediate |
| shopify-apps | 1 | 4mo | Review | Intermediate |
| ccxt-typescript | 1 | 6mo | Review | Beginner |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by jeremylongshore
View all by jeremylongshore →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.
shopify-apps
alinaqi
Shopify app development - Remix, Admin API, checkout extensions
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.
convex
waynesutton
Umbrella skill for all Convex development patterns. Routes to specific skills like convex-functions, convex-realtime, convex-agents, etc.
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".
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".