skills/elnora-files/SKILL.md
This skill should be used when the user asks to "list files", "read a file", "get file content", "view protocol output", "file versions", "version history", "download protocol", "upload file", "upload batch", "bulk upload", "create file", "archive file", "fork file", "promote file", "working copy", "commit working copy", "update file", "restore version", or any task involving Elnora Platform file management. NOT for searching file contents across files — use elnora-search for that.
npx skillsauth add elnora-ai/elnora-cli elnora-filesInstall 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.
Browse, read, create, upload, version, and manage files on the Elnora AI Platform.
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. Call them with structured parameters (camelCase — e.g. projectId, not project-id). See the "MCP Tool Names" table below for the mapping.
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. Valid commands are in the Commands section; their MCP equivalents are in the MCP Tool Names table.
CLI="elnora"
$CLI --compact files list --project <PROJECT_ID>
$CLI --compact files list --project <PROJECT_ID> --page 2 --page-size 50
$CLI --compact --fields "id,name" files list --project <PROJECT_ID>
--project is required.
$CLI --compact files get <FILE_ID>
Returns metadata (name, type, size, timestamps) without actual content.
$CLI files content <FILE_ID>
Returns raw file content to stdout. Pipe to save:
$CLI files content <FILE_ID> > protocol.md
Note: --compact or --fields wraps output in JSON. Omit both for raw text.
$CLI files download <FILE_ID>
Downloads file content via the /download endpoint (may differ from content in backend handling).
$CLI --compact files versions <FILE_ID>
$CLI --compact files versions <FILE_ID> --page-size 10
$CLI files version-content <FILE_ID> <VERSION_ID>
Both <FILE_ID> and <VERSION_ID> are positional. Returns raw content.
$CLI --compact files create-version <FILE_ID>
$CLI --compact files create-version <FILE_ID> --content "Updated protocol text"
$CLI --compact files restore <FILE_ID> <VERSION_ID>
Both positional. Destructive — confirm with user first.
$CLI --compact files create --project <PROJECT_ID> --name "protocol.md" --type Document
$CLI --compact files create --project <PROJECT_ID> --name "data.csv" --type Dataset --folder <FOLDER_ID>
| Flag | Required | Notes |
|------|----------|-------|
| --project | Yes | Project UUID |
| --name | Yes | File name |
| --type | Yes | File type (e.g. Document, Protocol, Dataset) |
| --folder | No | Folder UUID |
$CLI --compact files upload --project <PROJECT_ID> --file-path /path/to/file.md
$CLI --compact files upload --project <PROJECT_ID> --file-path /path/to/data.csv --file-name "renamed.csv" --content-type "text/csv"
Three-step process (handled automatically): presigned URL, upload, confirm.
| Flag | Required | Notes |
|------|----------|-------|
| --project | Yes | Project UUID |
| --file-path | Yes | Local file path |
| --file-name | No | Override filename |
| --content-type | No | MIME type (defaults to application/octet-stream) |
$CLI --compact files upload-batch --project <PROJECT_ID> --file-paths "a.pdf,b.docx,c.txt"
$CLI --compact files upload-batch --project <PROJECT_ID> --file-paths "file1.md,file2.md" --folder <FOLDER_ID>
Uploads up to 50 files. Returns per-file success/failure results.
| Flag | Required | Notes |
|------|----------|-------|
| --project | Yes | Project UUID |
| --file-paths | Yes | Comma-separated local file paths |
| --folder | No | Folder UUID (applies to all files) |
$CLI --compact files confirm-upload <FILE_ID>
Only needed if upload was interrupted after the PUT step.
$CLI --compact files update <FILE_ID> --name "new-name.md"
$CLI --compact files update <FILE_ID> --folder <FOLDER_ID>
Must provide at least one of --name or --folder.
$CLI --compact files archive <FILE_ID>
# -> {"archived":true,"fileId":"<UUID>"}
Destructive — confirm with user before running.
$CLI --compact files promote <FILE_ID> --visibility <LEVEL>
--visibility is required.
$CLI --compact files fork <FILE_ID> --target-project <PROJECT_ID>
<FILE_ID> is positional (fileId). --target-project is a flag (targetProject doesn't end in "Id").
$CLI --compact files working-copy <FILE_ID>
$CLI --compact files working-copy <FILE_ID> --task <TASK_ID>
$CLI --compact files commit <FILE_ID>
$CLI --compact files search-content --query "annealing temperature"
$CLI --compact files search-content --query "BRCA1" --project <PROJECT_ID>
$CLI --compact files search-content --query "gel electrophoresis" --page-size 10
Full-text search inside file contents. Also available as search file-content.
| Flag | Required | Notes |
|------|----------|-------|
| --query | Yes | Search query string (no -q shorthand) |
| --project | No | Project UUID to filter |
| --page | No | Page number (default 1) |
| --page-size | No | Results per page (default 25, max 100) |
| CLI command | MCP tool name |
|-------------|---------------|
| files list | elnora_files_list |
| files get | elnora_files_get |
| files content | elnora_files_content |
| files download | elnora_files_download |
| files versions | elnora_files_versions |
| files version-content | elnora_files_versionContent |
| files create-version | elnora_files_createVersion |
| files restore | elnora_files_restore |
| files create | elnora_files_create |
| files upload | elnora_files_upload |
| files upload-batch | elnora_files_uploadBatch |
| files confirm-upload | elnora_files_confirmUpload |
| files update | elnora_files_update |
| files archive | elnora_files_archive |
| files promote | elnora_files_promote |
| files fork | elnora_files_fork |
| files working-copy | elnora_files_workingCopy |
| files commit | elnora_files_commit |
| files search-content | elnora_files_searchContent |
Read a protocol from a project:
$CLI --compact --fields "id,name" files list --project <PROJECT_ID>
$CLI files content <FILE_ID>
Upload a file and reference it in a task:
$CLI --compact files upload --project <PROJECT_ID> --file-path /path/to/protocol.md
# Use the returned file ID:
$CLI --compact tasks send <TASK_ID> --message "Optimize this protocol" --file-refs "<FILE_ID>" --wait
Edit-in-place (working copy):
WC=$($CLI --compact files working-copy <FILE_ID> | jq -r '.id')
# ... make edits externally ...
$CLI --compact files commit "$WC"
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.
tools
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.