-
Notifications
You must be signed in to change notification settings - Fork 377
feat: Add agent skills for OpenRAG install and SDK #1423
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,150 @@ | ||||||||||||||||||||||||||||||||||||||||||||||
| --- | ||||||||||||||||||||||||||||||||||||||||||||||
| name: openrag_install | ||||||||||||||||||||||||||||||||||||||||||||||
| description: Plan and execute a minimal OpenRAG installation with requirement drafting, task tracking, configuration guidance, and local verification | ||||||||||||||||||||||||||||||||||||||||||||||
| --- | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| When the user asks to install OpenRAG, follow this workflow in order. | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| ## Initial assessment phase | ||||||||||||||||||||||||||||||||||||||||||||||
| Before starting installation, check for an existing OpenRAG installation: | ||||||||||||||||||||||||||||||||||||||||||||||
| 1. Check if `~/.openrag/tui/.env` exists | ||||||||||||||||||||||||||||||||||||||||||||||
| 2. If it exists: | ||||||||||||||||||||||||||||||||||||||||||||||
| - Read the configuration to understand what's already set up | ||||||||||||||||||||||||||||||||||||||||||||||
| - Check if services are currently running with `docker ps --filter "name=openrag"` | ||||||||||||||||||||||||||||||||||||||||||||||
| - Inform the user about the existing installation | ||||||||||||||||||||||||||||||||||||||||||||||
| - Ask if they want to: | ||||||||||||||||||||||||||||||||||||||||||||||
| - Start existing services (if stopped) | ||||||||||||||||||||||||||||||||||||||||||||||
| - Reconfigure existing installation | ||||||||||||||||||||||||||||||||||||||||||||||
| - Verify existing installation | ||||||||||||||||||||||||||||||||||||||||||||||
| - Proceed with fresh installation (will use existing config) | ||||||||||||||||||||||||||||||||||||||||||||||
| 3. If no existing installation found, proceed with fresh installation workflow | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| ## Primary goals | ||||||||||||||||||||||||||||||||||||||||||||||
| - Produce a grounded installation spec in `requirements.md` | ||||||||||||||||||||||||||||||||||||||||||||||
| - Break the work into executable tasks in `todo.md` | ||||||||||||||||||||||||||||||||||||||||||||||
| - Implement all tasks that can be completed in the current environment | ||||||||||||||||||||||||||||||||||||||||||||||
| - Pause for user action when a task requires credentials, configuration choices, or other interactive input | ||||||||||||||||||||||||||||||||||||||||||||||
| - Verify the installation locally until `http://localhost:3000` launches without startup errors and `http://localhost:5001/docs` is reachable | ||||||||||||||||||||||||||||||||||||||||||||||
| - Treat browser onboarding after the app launches as user-owned and outside installation completion | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| ## Requirements authoring phase | ||||||||||||||||||||||||||||||||||||||||||||||
| First, create or update `requirements.md` using the official OpenRAG installation documentation: | ||||||||||||||||||||||||||||||||||||||||||||||
| - Use `https://docs.openr.ag/install-options` as the source of truth | ||||||||||||||||||||||||||||||||||||||||||||||
| - Do not hallucinate implementation details that are not supported by the documentation or the local environment | ||||||||||||||||||||||||||||||||||||||||||||||
| - Prioritize the minimal installation path and the fewest necessary steps | ||||||||||||||||||||||||||||||||||||||||||||||
| - Organize requirements into logical categories | ||||||||||||||||||||||||||||||||||||||||||||||
| - Use numbered identifiers in the format `REQ-001`, `REQ-002`, and so on | ||||||||||||||||||||||||||||||||||||||||||||||
| - Include acceptance criteria for every requirement | ||||||||||||||||||||||||||||||||||||||||||||||
| - Include requirements covering: | ||||||||||||||||||||||||||||||||||||||||||||||
| - System prerequisites and resource requirements | ||||||||||||||||||||||||||||||||||||||||||||||
| - Configuration and security | ||||||||||||||||||||||||||||||||||||||||||||||
| - Platform compatibility | ||||||||||||||||||||||||||||||||||||||||||||||
| - Edge cases and troubleshooting considerations | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| Include the following specific requirement in the spec: | ||||||||||||||||||||||||||||||||||||||||||||||
| - Non-containerized service: `docling-serve` on port `5001` | ||||||||||||||||||||||||||||||||||||||||||||||
| - It is a required bundled Python service | ||||||||||||||||||||||||||||||||||||||||||||||
| - It is bundled with OpenRAG and managed by `uvx` or `uv` | ||||||||||||||||||||||||||||||||||||||||||||||
| - It should be automatically started and stopped via `uvx openrag` | ||||||||||||||||||||||||||||||||||||||||||||||
| - It should be available at `http://localhost:5001/docs` | ||||||||||||||||||||||||||||||||||||||||||||||
| - Verification should include either `lsof -i :5001` or `curl http://localhost:5001/docs` | ||||||||||||||||||||||||||||||||||||||||||||||
| - Do not immediately flag failure if `http://localhost:5001/docs` is not ready right after startup; wait and re-check because `docling-serve` may come up after the main OpenRAG services | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| ## Requirements review phase | ||||||||||||||||||||||||||||||||||||||||||||||
| After drafting `requirements.md`: | ||||||||||||||||||||||||||||||||||||||||||||||
| - Review it for gaps, ambiguities, contradictions, and missing edge cases | ||||||||||||||||||||||||||||||||||||||||||||||
| - Tighten vague language | ||||||||||||||||||||||||||||||||||||||||||||||
| - Add missing acceptance criteria where needed | ||||||||||||||||||||||||||||||||||||||||||||||
| - Update the file before moving to implementation planning | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| ## Task planning and execution phase | ||||||||||||||||||||||||||||||||||||||||||||||
| After `requirements.md` is stable: | ||||||||||||||||||||||||||||||||||||||||||||||
| 1. Read `requirements.md` | ||||||||||||||||||||||||||||||||||||||||||||||
| 2. Create `todo.md` that breaks the work into concrete tasks | ||||||||||||||||||||||||||||||||||||||||||||||
| 3. Implement each task that is relevant to the current environment | ||||||||||||||||||||||||||||||||||||||||||||||
| 4. For user-interactive tasks, do not guess or fabricate values; instruct the user to complete the step and confirm when done | ||||||||||||||||||||||||||||||||||||||||||||||
| 5. Mark tasks complete in `todo.md` only after they pass validation | ||||||||||||||||||||||||||||||||||||||||||||||
| 6. If troubleshooting partially started OpenRAG services, stop all services before attempting to start them again | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| ## CRITICAL: Interactive Terminal Limitation | ||||||||||||||||||||||||||||||||||||||||||||||
| **Bob Shell CANNOT handle interactive terminal applications that require user input.** | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| When the installation reaches the point where `uvx openrag` needs to be run: | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| ### What NOT to do: | ||||||||||||||||||||||||||||||||||||||||||||||
| - Do NOT attempt to run `uvx openrag` using `execute_command` with user interaction expected | ||||||||||||||||||||||||||||||||||||||||||||||
| - Do NOT try to use background processes for interactive commands | ||||||||||||||||||||||||||||||||||||||||||||||
| - Do NOT assume you can send input to an already-running interactive terminal | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| ### What TO do: | ||||||||||||||||||||||||||||||||||||||||||||||
| 1. **Explicitly instruct the user** to open a NEW terminal window/tab OUTSIDE of Bob Shell | ||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+70
to
+80
|
||||||||||||||||||||||||||||||||||||||||||||||
| **Bob Shell CANNOT handle interactive terminal applications that require user input.** | |
| When the installation reaches the point where `uvx openrag` needs to be run: | |
| ### What NOT to do: | |
| - Do NOT attempt to run `uvx openrag` using `execute_command` with user interaction expected | |
| - Do NOT try to use background processes for interactive commands | |
| - Do NOT assume you can send input to an already-running interactive terminal | |
| ### What TO do: | |
| 1. **Explicitly instruct the user** to open a NEW terminal window/tab OUTSIDE of Bob Shell | |
| **This agent cannot control interactive terminal applications that require user input.** | |
| When the installation reaches the point where `uvx openrag` needs to be run: | |
| ### What NOT to do: | |
| - Do NOT attempt to run `uvx openrag` through the agent if user interaction is expected | |
| - Do NOT try to use background processes for interactive commands | |
| - Do NOT assume the agent can send input to an already-running interactive terminal | |
| ### What TO do: | |
| 1. **Explicitly instruct the user** to open a NEW terminal window/tab and run the interactive command locally |
Copilot
AI
Apr 16, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This SKILL hard-codes first-run menu choices (e.g., “Select Reconfigure (option 2)” then “Start services (option 1)”), but on a fresh install uvx openrag goes straight into the setup walkthrough and then prompts “Start services now? [Y/n]” (src/tui/cli.py:61-66, 198-231). The step-by-step guidance should reflect the actual first-run flow and avoid relying on fixed menu option numbers.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
docker ps --filter "name=openrag"won’t show all OpenRAG containers in the default compose setup (e.g.,os,osdash,langflowhave container_name values that don’t includeopenragin docker-compose.yml). Usedocker compose psfor the generated compose file or filter by the compose project/labels so the check reflects the full stack.