Index and search code repositories, documentation, research papers, HuggingFace datasets, local folders, and packages with Nia AI. Includes Oracle autonomous research, dependency analysis, context sharing, and code advisor.
This skill has safety concerns that you should review before use. Some patterns were detected that may pose a risk.Safety score: 60/100.
KillerSkills scans all public content for safety. Use caution before installing or executing flagged content.
Direct API access to [Nia](https://trynia.ai) for indexing and searching code repositories, documentation, research papers, HuggingFace datasets, local folders, and packages.
Nia provides tools for indexing and searching external repositories, research papers, documentation, packages, and performing AI-powered research. Its primary goal is to reduce hallucinations in LLMs and provide up-to-date context for AI agents.
Either:
```bash
mkdir -p ~/.config/nia
echo "your-api-key-here" > ~/.config/nia/api_key
```
**BEFORE using web fetch or web search, you MUST:**
1. **Check indexed sources first**: `./scripts/sources.sh list` or `./scripts/repos.sh list`
2. **If source exists**: Use `search.sh universal`, `repos.sh grep`, `sources.sh read` for targeted queries
3. **If source doesn't exist but you know the URL**: Index it with `repos.sh index` or `sources.sh index`, then search
4. **Only if source unknown**: Use `search.sh web` or `search.sh deep` to discover URLs, then index
**Why this matters**: Indexed sources provide more accurate, complete context than web fetches. Web fetch returns truncated/summarized content while Nia provides full source code and documentation.
1. Check if the source is already indexed using `repos.sh list` / `sources.sh list`
2. If indexed, check the tree with `repos.sh tree` / `sources.sh tree`
3. After getting the structure, use `search.sh universal`, `repos.sh grep`, `repos.sh read` for targeted searches
4. Save findings in an .md file to track indexed sources for future use
All scripts are in `./scripts/` and use `lib.sh` for shared auth/curl helpers. Base URL: `https://apigcp.trynia.ai/v2`
Each script uses subcommands: `./scripts/<script>.sh <command> [args...]`
Run any script without arguments to see available commands and usage.
```bash
./scripts/sources.sh index "https://docs.example.com" [limit] # Index docs
./scripts/sources.sh list [type] # List sources (documentation|research_paper|huggingface_dataset|local_folder)
./scripts/sources.sh get <source_id> [type] # Get source details
./scripts/sources.sh resolve <identifier> [type] # Resolve name/URL to ID
./scripts/sources.sh update <source_id> [display_name] [cat_id] # Update source
./scripts/sources.sh delete <source_id> [type] # Delete source
./scripts/sources.sh sync <source_id> [type] # Re-sync source
./scripts/sources.sh rename <source_id_or_name> <new_name> # Rename source
./scripts/sources.sh subscribe <url> [source_type] [ref] # Subscribe to global source
./scripts/sources.sh read <source_id> <path> [line_start] [end] # Read content
./scripts/sources.sh grep <source_id> <pattern> [path] # Grep content
./scripts/sources.sh tree <source_id> # Get file tree
./scripts/sources.sh ls <source_id> [path] # List directory
./scripts/sources.sh classification <source_id> [type] # Get classification
./scripts/sources.sh assign-category <source_id> <cat_id|null> # Assign category
```
**Index environment variables**: `DISPLAY_NAME`, `FOCUS`, `EXTRACT_BRANDING`, `EXTRACT_IMAGES`, `IS_PDF`, `URL_PATTERNS`, `EXCLUDE_PATTERNS`, `MAX_DEPTH`, `WAIT_FOR`, `CHECK_LLMS_TXT`, `LLMS_TXT_STRATEGY`, `INCLUDE_SCREENSHOT`, `ONLY_MAIN_CONTENT`, `ADD_GLOBAL`, `MAX_AGE`
**Grep environment variables**: `CASE_SENSITIVE`, `WHOLE_WORD`, `FIXED_STRING`, `OUTPUT_MODE`, `HIGHLIGHT`, `EXHAUSTIVE`, `LINES_AFTER`, `LINES_BEFORE`, `MAX_PER_FILE`, `MAX_TOTAL`
**Flexible identifiers**: Most endpoints accept UUID, display name, or URL:
```bash
./scripts/repos.sh index <owner/repo> [branch] [display_name] # Index repo (ADD_GLOBAL=false to keep private)
./scripts/repos.sh list # List indexed repos
./scripts/repos.sh status <owner/repo> # Get repo status
./scripts/repos.sh read <owner/repo> <path/to/file> # Read file
./scripts/repos.sh grep <owner/repo> <pattern> [path_prefix] # Grep code (REF= for branch)
./scripts/repos.sh tree <owner/repo> [branch] # Get file tree
./scripts/repos.sh delete <repo_id> # Delete repo
./scripts/repos.sh rename <repo_id> <new_name> # Rename display name
```
**Tree environment variables**: `INCLUDE_PATHS`, `EXCLUDE_PATHS`, `FILE_EXTENSIONS`, `EXCLUDE_EXTENSIONS`, `SHOW_FULL_PATHS`
```bash
./scripts/search.sh query <query> <repos_csv> [docs_csv] # Query specific repos/sources
./scripts/search.sh universal <query> [top_k] # Search ALL indexed sources
./scripts/search.sh web <query> [num_results] # Web search
./scripts/search.sh deep <query> [output_format] # Deep research (Pro)
```
**query** — targeted search with AI response and sources. Env: `LOCAL_FOLDERS`, `CATEGORY`, `MAX_TOKENS`
**universal** — hybrid vector + BM25 across all indexed sources. Env: `INCLUDE_REPOS`, `INCLUDE_DOCS`, `INCLUDE_HF`, `ALPHA`, `COMPRESS`, `MAX_TOKENS`, `BOOST_LANGUAGES`, `EXPAND_SYMBOLS`
**web** — web search. Env: `CATEGORY` (github|company|research|news|tweet|pdf|blog), `DAYS_BACK`, `FIND_SIMILAR_TO`
**deep** — deep AI research (Pro). Env: `VERBOSE`
```bash
./scripts/oracle.sh run <query> [repos_csv] [docs_csv] # Run research (synchronous)
./scripts/oracle.sh job <query> [repos_csv] [docs_csv] # Create async job (recommended)
./scripts/oracle.sh job-status <job_id> # Get job status/result
./scripts/oracle.sh job-cancel <job_id> # Cancel running job
./scripts/oracle.sh jobs-list [status] [limit] # List jobs
./scripts/oracle.sh sessions [limit] # List research sessions
./scripts/oracle.sh session-detail <session_id> # Get session details
./scripts/oracle.sh session-messages <session_id> [limit] # Get session messages
./scripts/oracle.sh session-chat <session_id> <message> # Follow-up chat (SSE stream)
```
**Environment variables**: `OUTPUT_FORMAT`, `MODEL` (claude-opus-4-6|claude-sonnet-4-5-20250929|...)
Autonomous agent for searching GitHub repositories without indexing. Powered by Claude Opus 4.6 with 1M context.
```bash
./scripts/tracer.sh run <query> [repos_csv] [context] # Create Tracer job
./scripts/tracer.sh status <job_id> # Get job status/result
./scripts/tracer.sh stream <job_id> # Stream real-time updates (SSE)
./scripts/tracer.sh list [status] [limit] # List jobs
./scripts/tracer.sh delete <job_id> # Delete job
```
**Environment variables**: `MODEL` (claude-opus-4-6|claude-opus-4-6-1m)
**Example workflow:**
```bash
./scripts/tracer.sh run "How does streaming work in generateText?" vercel/ai "Focus on core implementation"
./scripts/tracer.sh stream abc123
./scripts/tracer.sh status abc123
```
**Use Tracer when:**
```bash
./scripts/papers.sh index <arxiv_url_or_id> # Index paper
./scripts/papers.sh list # List indexed papers
```
Supports: `2312.00752`, `https://arxiv.org/abs/2312.00752`, PDF URLs, old format (`hep-th/9901001`), with version (`2312.00752v1`). Env: `ADD_GLOBAL`, `DISPLAY_NAME`
```bash
./scripts/datasets.sh index <dataset> [config] # Index dataset
./scripts/datasets.sh list # List indexed datasets
```
Supports: `squad`, `dair-ai/emotion`, `https://huggingface.co/datasets/squad`. Env: `ADD_GLOBAL`
```bash
./scripts/packages.sh grep <registry> <package> <pattern> [ver] # Grep package code
./scripts/packages.sh hybrid <registry> <package> <query> [ver] # Semantic search
./scripts/packages.sh read <reg> <pkg> <sha256> <start> <end> # Read file lines
```
Registry: `npm` | `py_pi` | `crates_io` | `golang_proxy`
Grep env: `LANGUAGE`, `CONTEXT_BEFORE`, `CONTEXT_AFTER`, `OUTPUT_MODE`, `HEAD_LIMIT`, `FILE_SHA256`
Hybrid env: `PATTERN` (regex pre-filter), `LANGUAGE`, `FILE_SHA256`
```bash
./scripts/categories.sh list # List categories
./scripts/categories.sh create <name> [color] [order] # Create category
./scripts/categories.sh update <cat_id> [name] [color] [order] # Update category
./scripts/categories.sh delete <cat_id> # Delete category
./scripts/categories.sh assign <source_id> <cat_id|null> # Assign/remove category
```
```bash
./scripts/contexts.sh save <title> <summary> <content> <agent> # Save context
./scripts/contexts.sh list [limit] [offset] # List contexts
./scripts/contexts.sh search <query> [limit] # Text search
./scripts/contexts.sh semantic-search <query> [limit] # Vector search
./scripts/contexts.sh get <context_id> # Get by ID
./scripts/contexts.sh update <id> [title] [summary] [content] # Update context
./scripts/contexts.sh delete <context_id> # Delete context
```
Save env: `TAGS` (csv), `MEMORY_TYPE` (scratchpad|episodic|fact|procedural), `TTL_SECONDS`, `WORKSPACE`
List env: `TAGS`, `AGENT_SOURCE`, `MEMORY_TYPE`
```bash
./scripts/deps.sh analyze <manifest_file> # Analyze dependencies
./scripts/deps.sh subscribe <manifest_file> [max_new] # Subscribe to dep docs
./scripts/deps.sh upload <manifest_file> [max_new] # Upload manifest (multipart)
```
Supports: package.json, requirements.txt, pyproject.toml, Cargo.toml, go.mod, Gemfile. Env: `INCLUDE_DEV`
```bash
./scripts/folders.sh create /path/to/folder [display_name] # Create from local dir
./scripts/folders.sh list [limit] [offset] # List folders (STATUS=)
./scripts/folders.sh get <folder_id> # Get details
./scripts/folders.sh delete <folder_id> # Delete folder
./scripts/folders.sh rename <folder_id> <new_name> # Rename folder
./scripts/folders.sh tree <folder_id> # Get file tree
./scripts/folders.sh ls <folder_id> [path] # List directory
./scripts/folders.sh read <folder_id> <path> [start] [end] # Read file (MAX_LENGTH=)
./scripts/folders.sh grep <folder_id> <pattern> [path_prefix] # Grep files
./scripts/folders.sh classify <folder_id> [categories_csv] # AI classification
./scripts/folders.sh classification <folder_id> # Get classification
./scripts/folders.sh sync <folder_id> /path/to/folder # Re-sync from local
./scripts/folders.sh from-db <name> <conn_str> <query> # Import from database
./scripts/folders.sh preview-db <conn_str> <query> # Preview DB content
```
```bash
./scripts/advisor.sh "query" file1.py [file2.ts ...] # Get code advice
```
Analyzes your code against indexed docs. Env: `REPOS` (csv), `DOCS` (csv), `OUTPUT_FORMAT` (explanation|checklist|diff|structured)
```bash
./scripts/usage.sh # Get usage summary
```
| Type | Index Command | Identifier Examples |
|------|---------------|---------------------|
| Repository | `repos.sh index` | `owner/repo`, `microsoft/vscode` |
| Documentation | `sources.sh index` | `https://docs.example.com` |
| Research Paper | `papers.sh index` | `2312.00752`, arXiv URL |
| HuggingFace Dataset | `datasets.sh index` | `squad`, `owner/dataset` |
| Local Folder | `folders.sh create` | UUID, display name (private, user-scoped) |
For `search.sh query`:
Pass sources via:
Leave a review
No reviews yet. Be the first to review this skill!