skills/elnora-platform/SKILL.md
Use when the user asks about "Elnora platform", "elnora CLI", "platform API", "platform overview", "what commands are available", "elnora help", "how to use Elnora", or any general question about the Elnora AI Platform that doesn't fit a specific domain. Routes to domain-specific sub-skills for token-efficient guidance.
npx skillsauth add elnora-ai/elnora-cli elnora-platformInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Route Elnora Platform queries to the correct sub-skill. Load only what is needed.
Elnora is available via two methods. Use whichever is configured.
Option A — CLI via Bash (preferred)
Run commands via your Bash/Shell tool as elnora <group> <action> .... Verify with elnora --version. CLI uses ~5× fewer tokens than MCP.
Option B — MCP tools (when CLI isn't installed)
Look for tools prefixed mcp__elnora__ in your available tools. Each domain-specific sub-skill (elnora-projects, elnora-tasks, etc.) has an MCP Tool Names table showing the mapping from CLI commands to MCP tool names.
If neither is available, tell the user to install one:
curl -fsSL https://cli.elnora.ai/install.sh | bash (macOS/Linux)
or irm https://cli.elnora.ai/install.ps1 | iex (Windows)claude mcp add elnora --transport http --scope user https://mcp.elnora.ai/mcp
then /mcp to authenticate.Never fabricate tool names. This skill routes to sub-skills; each sub-skill lists its valid commands and their MCP equivalents.
If anything looks wrong — auth errors, unexpected hosts, or connectivity failures — run elnora doctor first. It reports the actual API / AI-server / MCP hosts, auth state, version, and connectivity. Run elnora config show to print the resolved endpoints and active profile. Do not guess hostnames or URLs.
CLI="elnora"
Global flags go BEFORE the subcommand (recommended, always works):
$CLI --compact projects list # recommended
$CLI projects list --compact # also works for most commands
| Flag | Effect |
|------|--------|
| --compact | Minified JSON — always use for agent workflows |
| --output <json\|csv> | Output format (default: json) |
| --fields "id,name" | Return only these fields |
| --profile <name> | Named profile (default: default). Set with auth login --api-key <KEY> --profile <name> |
| --json | Force JSON output |
On first use in a session, run elnora update to check for updates. If an update is available, inform the user and follow the printed instructions to update.
Requires ELNORA_API_KEY environment variable (prefix: elnora_live_), ELNORA_MCP_API_KEY, or a saved profile in ~/.elnora/profiles.toml.
$CLI --compact auth status
# -> {"profile":"default","authenticated":true,"projectCount":N}
Get keys: platform.elnora.ai > Settings > API Keys
| Need | Sub-skill | Trigger keywords |
|------|-----------|------------------|
| List/get/create/update/archive projects, manage members | elnora-projects | project, workspace, create project, members, add member |
| Create/manage/message tasks, protocol generation | elnora-tasks | task, protocol, send message, conversation, generate |
| Browse/read/upload/create/version/fork files | elnora-files | file, content, version history, upload, download, fork, working copy |
| Find tasks or files by keyword | elnora-search | search, find, query |
| Manage project folder trees | elnora-folders | folder, create folder, move folder |
| Org management, members, billing, invitations, shared library | elnora-orgs | organization, org, billing, invite, library |
| Auth, API keys, account, health, diagnostics | elnora-admin | login, logout, profiles, api key, health, account, feedback, audit, completion |
| Feature flags (SystemAdmin) | elnora-admin | feature flag, flags, set flag, list flags |
| What can the Elnora Agent do? (tools, search, memory) | elnora-agent | agent capabilities, agent tools, what can agent do |
Required string fields ending in Id (e.g. taskId, projectId, fileId) become positional arguments. Everything else becomes a flag.
elnora tasks get <task-id> # taskId -> positional
elnora tasks list --project <UUID> # project -> flag (doesn't end in "Id")
elnora files fork <file-id> --target-project <UUID> # fileId -> positional, targetProject -> flag
Rule: positional if and only if the field is: required + not boolean + no enum choices + key ends in "Id".
All IDs are UUIDs: bfdc6fbd-40ed-4042-9ea7-c79a5ec90085. Invalid format exits 1 with a validation error to stderr.
Exception: account get and account update use userId which accepts any string (typically an integer like 42).
List endpoints return:
{"items":[...],"page":1,"pageSize":25,"totalCount":N,"totalPages":N,"hasNextPage":true,"hasPreviousPage":false}
Use --page N --page-size N (max 100). Check hasNextPage to paginate.
Message endpoints use cursor-based pagination: check hasMore and pass --cursor <nextCursor>.
Errors -> stderr, exit code > 0:
{"error":"message","code":"AUTH_FAILED","suggestion":"how to fix"}
| Code | Exit | Action |
|------|------|--------|
| AUTH_FAILED | 3 | Check ELNORA_API_KEY env var or profile |
| NOT_FOUND | 4 | Verify the UUID |
| VALIDATION_ERROR | 2 | Check parameters |
| RATE_LIMITED | 5 | Wait and retry (see Rate Limits below) |
| SERVER_ERROR | 6 | Retry later |
| ELNORA_ERROR | 1 | Unexpected — report bug |
HTTP 429 on limit. Check the Retry-After header for seconds to wait.
| Context | Limit | Window | |---------|-------|--------| | API key (CLI/agent default) | 200 req | 1 min | | Agent processing endpoints | 100 req per task | 1 min | | AI processing (tasks send, protocol generate) | 20 req | 1 min | | Auth endpoints (login, register) | 5 req | 1 min | | Global fallback (per IP) | 1000 req | 1 min |
Agent strategy: On exit code 5, read Retry-After from stderr if available, otherwise wait 60 seconds before retrying. Do not retry in a tight loop.
| Constraint | Value | |-----------|-------| | Max file size | 100 MB | | Max filename length | 255 characters | | Max files per batch upload | 50 | | Accepted MIME types | Unrestricted (any type) | | Upload presigned URL expiry | 15 minutes | | Download presigned URL expiry | 5 minutes |
Projects contain tasks and files. Typical flow:
--compact --fields "id,name" projects list -> list projects, pick one by nametasks create --project <ID> --message "..." --stream -> create task and stream the agent responsetasks send <TASK_ID> --message "..." --stream -> send follow-up and stream responsetasks messages <TASK_ID> -> read conversation history (or use --wait instead of --stream in steps 2-3)files list --project <ID> -> browse generated outputsfiles content <FILE_ID> -> read a protocol fileProject ID: List projects once (step 1), pick the one matching the user's context, and reuse the ID for all subsequent commands. Don't re-list projects for every task.
See elnora-tasks skill for full response retrieval details (--stream, --wait, MCP behavior).
elnora account Manage user account, agreements, and legal docs
elnora api-keys Manage API keys and creation policy
elnora audit View audit logs
elnora auth Manage authentication
elnora completion Generate shell completion script
elnora doctor Run diagnostics (API, auth, version, config checks)
elnora feedback Submit feedback
elnora files Manage project files (incl. batch upload)
elnora flags Manage global feature flags (SystemAdmin)
elnora folders Manage project folders
elnora health Check platform reachability
elnora library Manage organization library
elnora mcp Run as MCP server (--http or --stdio)
elnora open Open platform pages in browser
elnora orgs Manage organizations (incl. set-default, delete, list-all)
elnora projects Manage projects
elnora search Search tasks, files, and file content
elnora setup Configure AI coding tools (Claude Code, Cursor, VS Code, Codex)
elnora tasks Manage tasks
elnora update Check for updates (use --install to apply)
elnora whoami Show current profile and org
data-ai
This skill should be used when the user asks to "create a task", "send a message", "generate a protocol", "list tasks", "get task", "view task details", "read task messages", "update task status", "archive a task", "talk to Elnora", "ask Elnora to generate", "protocol conversation", or any task involving Elnora Platform task management and protocol generation.
development
This skill should be used when the user asks to "search tasks", "find a protocol", "search files", "search file content", "search inside files", "find tasks about", "query Elnora", "search Elnora platform", "full text search", "search all", "search everything", "find", or any task involving searching the Elnora Platform for tasks, files, or all resources by keyword. NOT for web search — use elnora-agent for that.
data-ai
This skill should be used when the user asks to "list projects", "create a project", "get project details", "show my Elnora projects", "new project", "project members", "update project", "archive project", "add member", "remove member", "leave project", or any task involving Elnora Platform project management.
development
This skill should be used when the user asks to "list organizations", "create org", "org members", "billing", "invite member", "manage invitations", "list invitations", "resend invitation", "reinvite", "cancel invitation", "accept invitation", "get invitation info", "remove member from org", "organization library", "shared library", "library files", "library folders", "set default org", "delete org", "list all orgs", "set stripe", or any task involving Elnora Platform organization management and shared library resources.