Help us improve
Share bugs, ideas, or general feedback.
From leyline
Provides Python patterns for external service authentication using API keys, OAuth, tokens. Includes verification flows, smoke tests, env checks, and error handling with leyline.
npx claudepluginhub athola/claude-night-market --plugin leylineHow this skill is triggered — by the user, by Claude, or both
Slash command
/leyline:authentication-patternsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
- [Overview](#overview)
Designs API authentication with prefixed keys (e.g., Stripe sk_live_), OAuth 2.0 flows, JWT tokens, Bearer auth, key rotation, and permission scoping.
Builds secure, scalable authentication and authorization systems using industry-standard patterns. Covers OAuth2, SSO, session management, RBAC, and token lifecycle.
Implements authentication and authorization patterns: JWT, OAuth2, session management, RBAC. Helps secure APIs and debug auth issues.
Share bugs, ideas, or general feedback.
Common authentication patterns for integrating with external services. Provides consistent approaches to credential management, verification, and error handling.
| Method | Best For | Environment Variable |
|---|---|---|
| API Key | Simple integrations | {SERVICE}_API_KEY |
| OAuth | User-authenticated | Browser-based flow |
| Token | Session-based | {SERVICE}_TOKEN |
| None | Public APIs | N/A |
from leyline.auth import verify_auth, AuthMethod
# API Key verification
status = verify_auth(
service="gemini",
method=AuthMethod.API_KEY,
env_var="GEMINI_API_KEY"
)
if not status.authenticated:
print(f"Auth failed: {status.message}")
print(f"Action: {status.suggested_action}")
Verification: Run the command with --help flag to verify availability.
def verify_with_smoke_test(service: str) -> bool:
"""Verify auth with simple request."""
result = execute_simple_request(service, "ping")
return result.success
Verification: Run pytest -v to verify tests pass.
def check_credentials(service: str, env_var: str) -> bool:
value = os.getenv(env_var)
if not value:
print(f"Missing {env_var}")
return False
return True
Verification: Run the command with --help flag to verify availability.
def verify_with_service(service: str) -> AuthStatus:
result = subprocess.run(
[service, "auth", "status"],
capture_output=True
)
return AuthStatus(
authenticated=(result.returncode == 0),
message=result.stdout.decode()
)
Verification: Run the command with --help flag to verify availability.
def handle_auth_failure(service: str, method: AuthMethod) -> str:
actions = {
AuthMethod.API_KEY: f"Set {service.upper()}_API_KEY environment variable",
AuthMethod.OAUTH: f"Run '{service} auth login' for browser auth",
AuthMethod.TOKEN: f"Refresh token with '{service} token refresh'"
}
return actions[method]
Verification: Run the command with --help flag to verify availability.
# In your skill's frontmatter
dependencies: [leyline:authentication-patterns]
Verification: Run the command with --help flag to verify availability.
For workflows requiring interactive authentication with token caching and session management:
# Source the interactive auth script
source plugins/leyline/scripts/interactive_auth.sh
# Ensure authentication before proceeding
ensure_auth github || exit 1
ensure_auth gitlab || exit 1
ensure_auth aws || exit 1
# Continue with authenticated operations
gh pr view 123
glab issue list
aws s3 ls
Features:
See modules/interactive-auth.md for complete documentation.
modules/auth-methods.md for method detailsmodules/verification-patterns.md for testing patternsmodules/interactive-auth.md for shell-based auth flowsCommand not found Ensure all dependencies are installed and in PATH
Permission errors Check file permissions and run with appropriate privileges
Unexpected behavior
Enable verbose logging with --verbose flag