Ask a natural-language question against indexed content via the Content Search RAG Q&A endpoint.

Apache-2.0Auto-check passedAI & LLM Engineering

Install Sc QA

skills CLI
$ npx skills add open-edge-platform/edge-ai-suites --skill sc-qa -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install open-edge-platform/edge-ai-suites sc-qa --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/open-edge-platform/edge-ai-suites.git skills-src && mkdir -p .claude/skills && cp -r skills-src/education-ai-suite/.github/skills/sc-qa .claude/skills/sc-qa && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
sc-qa
GitHub stars
140
Token cost
~2.3k tokens
SKILL.md length
732 words
Files
2 (incl. references)
Skills in repo
13
Repo updated
First seen
Licence
Apache-2.0

At a glance

Ask a natural-language question against indexed content via the Content Search RAG Q&A endpoint.

  • Works in 5 steps: Simple single-turn question → Multi-turn conversation (with history) → Scope retrieval with tag filters → …
  • The user says ask a question
  • SKILL.md covers Preconditions, 1. Simple single-turn question, 2. Multi-turn conversation… and 3. Scope retrieval with tag…, plus 4 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Sc QA is an agent skill from open-edge-platform/edge-ai-suites. Ask a natural-language question against indexed content via the Content Search RAG Q&A endpoint. Supports multi-turn conversation history (up to 3 turns by default), optional tag filtering to scope retrieval, and returns an answer with cited sources (document name, type, relevance score). Use when the user says "ask a question", "query the content", "what does the document say", "search the knowledge base", "multi-turn Q&A", "qa endpoint", "answer from documents", or "RAG question".

Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/qa-request.md`).

It sits in AI & LLM Engineering, covering Retrieval-augmented generation and Knowledge bases. The repository describes itself as: A curated collection of sample applications intended for reference in developing optimized AI solutions and testing hardware performance across various industry use cases. The licence is Apache-2.0.

When your agent uses it

  • The user says ask a question
  • Query the content
  • What does the document say
  • Search the knowledge base

Example prompts

  • “ask a question”
  • “query the content”
  • “what does the document say”
  • “/sc-qa”

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Simple single-turn question
  2. Multi-turn conversation (with history)
  3. Scope retrieval with tag filters
  4. Display sources
  5. Understanding Partial Success (Code 50003)

What it can do on your machine

Read from SKILL.md and the folder at commit 6e2ba00. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are powershell and json).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Sc QA loads about 2.3k tokens when it runs, and up to ~2.9k if it reads all its reference files. Until then it costs about 123 tokens; SKILL.md has 732 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~123
When it runs · the whole SKILL.md, loaded when a task matches
~2.3k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~2.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from open-edge-platform/edge-ai-suites at commit 6e2ba00, republished under its Apache-2.0 licence (© open-edge-platform). 732 words, ~2,290 tokens.

Download SKILL.mdSave it as .claude/skills/sc-qa/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
sc-qa
description
Ask a natural-language question against indexed content via the Content Search RAG Q&A endpoint. Supports multi-turn conversation history (up to 3 turns by default), optional tag filtering to scope retrieval, and returns an answer with cited sources (document name, type, relevance score). Use when the user says "ask a question", "query the content", "what does the document say", "search the knowledge base", "multi-turn Q&A", "qa endpoint", "answer from documents", or "RAG question".

SC QA

Ask a question against the indexed content using the Content Search RAG Q&A endpoint with VLM-powered answer generation. Agent: execute every command below directly using your terminal tool and relay the output. Endpoints use the base URL http://127.0.0.1:9011.

How it works:

  1. Content Search retrieves relevant chunks from indexed files (vector similarity via ChromaDB)
  2. Chunks are sent to VLM service (port 8000) at /v1/chat/completions
  3. VLM (Qwen3-VL-8B-Instruct) generates a grounded answer from the retrieved context
  4. Response includes answer + cited sources (document name, type, relevance score)

Two-phase operation:

  • Phase 1 (vector retrieval): Always completes quickly (< 3 seconds)
  • Phase 2 (VLM generation): Takes 30-90 seconds; may fail with 503 if VLM is not ready

If VLM fails, the backend returns code: 50003 with sources but no answer.

Performance: VLM answer generation can take 30-90 seconds for complex questions.

Flutter Implementation:

  • receiveTimeout: 10 minutes (allows for long VLM processing)
  • maxHistoryTurns: 3 (6 messages total: 3 user + 3 assistant)
  • History snapshot is taken before appending the current question to avoid sending the in-flight message to the backend
  • UiKeepAliveInterceptor keeps UI responsive during long VLM operations
  • Errors are displayed as assistant messages with isError: true

Set $BASE = "http://127.0.0.1:9011" for all snippets.


Preconditions

Set corporate proxy (required for any outbound download; localhost API calls bypass it)
  1. Backend healthy — probe first; if unreachable, use sc-doctor / sc-up:

    powershell
    $BASE = "http://127.0.0.1:9011"
    # 200 = all services ready; 503 = degraded, body names the failing one
    try   { (Invoke-WebRequest -Uri "$BASE/api/v1/system/health" -UseBasicParsing).Content }
    catch { $_.ErrorDetails.Message }
  2. At least one file is indexed — confirm with:

    powershell
    $r = Invoke-WebRequest -Uri "$BASE/api/v1/object/files/list" -UseBasicParsing
    ($r.Content | ConvertFrom-Json).data.files | Select-Object file_name, status

    If no files are indexed, run sc-upload first.


1. Simple single-turn question

POST /api/v1/object/qa. The body has one required field (question); all others are optional. See references/qa-request.md for the full schema.

powershell
$BASE = "http://127.0.0.1:9011"
$body = @{
    question = "What are the key topics covered in the uploaded lecture?"
} | ConvertTo-Json

$r = Invoke-WebRequest -Uri "$BASE/api/v1/object/qa" `
     -Method POST `
     -ContentType "application/json" `
     -Body $body `
     -UseBasicParsing
$result = ($r.Content | ConvertFrom-Json)
Write-Host "Answer: $($result.data.answer)"

Expected response shape:

json
{
  "code": 20000,
  "data": {
    "answer": "The lecture covers ...",
    "sources": [
      {
        "type": "document",
        "display_name": "lecture-notes.pdf",
        "score": 92.5
      }
    ]
  }
}

2. Multi-turn conversation (with history)

The backend accepts up to QA_MAX_HISTORY_TURNS (default: 3) prior turns. History is an array of {role, content} objects — include the last N completed pairs before appending the current question:

powershell
$BASE = "http://127.0.0.1:9011"

# Build history from previous turns (user + assistant alternating)
$history = @(
    @{ role = "user";      content = "What is a vector space?" },
    @{ role = "assistant"; content = "A vector space is a set of vectors..." }
)

$body = @{
    question = "Can you give me a concrete example with 2D vectors?"
    history  = $history
} | ConvertTo-Json -Depth 5

$r = Invoke-WebRequest -Uri "$BASE/api/v1/object/qa" `
     -Method POST `
     -ContentType "application/json" `
     -Body $body `
     -UseBasicParsing
($r.Content | ConvertFrom-Json).data.answer

History ordering rule: History must contain completed turns only (no in-flight user message).

Flutter implementation detail: The QaNotifier._buildHistory() method takes a snapshot of state.messages before appending the current question. This prevents sending a mid-conversation state to the backend. The snapshot captures the last maxHistoryTurns * 2 (6) messages, filters out error messages, and converts them to {role, content} pairs.


3. Scope retrieval with tag filters

Use the filter field to restrict which indexed files are searched. Tags must have been set at upload time (see sc-upload).

powershell
# First, see available tags
$r = Invoke-WebRequest -Uri "$BASE/api/v1/object/tags" -UseBasicParsing
($r.Content | ConvertFrom-Json).data

# Then ask with a tag filter
$body = @{
    question = "Summarize the key equations"
    filter   = @{ tags = @("mathematics","week1") }
} | ConvertTo-Json -Depth 5

$r = Invoke-WebRequest -Uri "$BASE/api/v1/object/qa" `
     -Method POST -ContentType "application/json" `
     -Body $body -UseBasicParsing
($r.Content | ConvertFrom-Json).data.answer

4. Display sources

Sources returned alongside the answer carry relevance metadata:

powershell
$result = ($r.Content | ConvertFrom-Json).data
Write-Host "Answer:`n$($result.answer)`n"
Write-Host "Sources:"
$result.sources | ForEach-Object {
    $score = if ($_.score -le 1) { [math]::Round($_.score * 100, 1) } else { $_.score }
    Write-Host "  [$($_.type)] $($_.display_name) — score: ${score}%"
}

Score normalisation: the backend may return scores as 0.0–1.0 floats or as 0–100 percentages. Multiply by 100 if the value is ≤ 1, as done in QaSource.fromJson() in the Flutter app.


Show full SKILL.md (305 more words)Show less

5. Understanding Partial Success (Code 50003)

When the Content Search backend returns code: 50003 with sources but no answer, it means:

  1. ✅ Vector retrieval succeeded — relevant chunks were found in ChromaDB
  2. ❌ VLM answer generation failed — VLM endpoint returned 503 Service Unavailable

Example response:

json
{
  "code": 50003,
  "data": {
    "sources": [
      {"file_name": "doc.pdf", "score": 99.12, "type": "document"},
      ...
    ]
  },
  "message": "Server error '503 Service Unavailable' for url 'http://127.0.0.1:8000/v1/chat/completions'"
}

Why this happens:

  • VLM model may still be loading (first 2-3 minutes after startup)
  • VLM service crashed or is overloaded
  • Main backend /v1/chat/completions endpoint is not responding

How to fix:

powershell
# Check if VLM is ready
$health = (Invoke-WebRequest -Uri "http://127.0.0.1:8000/health" -UseBasicParsing).Content | ConvertFrom-Json
$health.hub.text_gen.state  # Should be "ready"

# If not ready or service crashed, restart main backend
# Close the backend window and run:
.\utils\flutter\start.ps1

Flutter behavior:

  • The Flutter app catches this error and displays it as an assistant message with isError: true
  • Sources are still shown to the user even though answer generation failed
  • User can retry the question once VLM is healthy

Troubleshooting

SymptomLikely causeAction
answer is emptyNo relevant content foundCheck that the right files are indexed; verify tags filter isn't too narrow
code: 40000 / 400 Bad RequestMissing or malformed question fieldEnsure question is a non-empty string
code: 50003 + sources returnedVLM endpoint 503 error (retrieval OK, generation failed)Check main backend logs at smart-classroom/logs; VLM may be loading or crashed; restart main backend
Very slow response (>30 s)VLM generation is slowNormal for complex questions; wait up to 10 min (Flutter receiveTimeout)
Sources are from wrong filesTag filter not setPass filter.tags to scope retrieval
History causes hallucinationToo many stale turnsLimit history to last 3 turns (matches AppConfig.maxHistoryTurns)
500 Internal Server ErrorVLM service errorCheck main backend logs (port 8000); verify VLM is healthy
503 Service Unavailable from VLMVLM /v1/chat/completions not respondingVLM model may not be loaded; check main backend health shows text_gen: ready; restart if needed
Connection timeoutVLM not respondingCheck main backend health; VLM may need restart

Output

Report: question sent → answer text → sources list (name + type + score). For multi-turn, include how many history turns were included.

© open-edge-platform, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in education-ai-suite/.github/skills/sc-qa of open-edge-platform/edge-ai-suites.

  • SKILL.md
  • references/qa-request.md

Open the folder on GitHubat commit 6e2ba00

Compare with similar skills

Sc QA next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Sc QA compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Sc QA this skillopen-edge-platform/edge-ai-suites140—~2.3kAutomated safety check: PassApache-2.0
Blockify Integrationiternal-technologies-partners/blockify-agentic-data-optimization316—~6.2kAutomated safety check: NotesCustom licence
Agentsop Difyagentsope/SkillAlchemy459—~5.4kAutomated safety check: NotesMIT
Penguin SDKPrism-Shadow/penguin-harness2.5k—~11kAutomated safety check: PassApache-2.0
RAG AssistantAtmosphere/atmosphere3.8k—~504Automated safety check: PassApache-2.0
Langchain4j RAG Implementation Patternsgiuseppe-trisciuoglio/developer-kit3551 repos~3.3kAutomated safety check: NotesMIT

Similar skills

  • Blockify Integration

    iternal-technologies-partners/blockify-agentic-data-optimization

    Process documents with Blockify API to create optimized IdeaBlocks for RAG.

    316 GitHub stars~6.2k tokensUpdated 5 mo ago
    AI & LLM EngineeringAuto-check: notes
  • Agentsop Dify

    agentsope/SkillAlchemy

    SOP for building LLM applications on Dify — visual workflow + chatflow + agent + RAG knowledge base + plugin marketplace + observability, self-hostable.

    459 GitHub stars~5.4k tokensUpdated 1 mo ago
    AI & LLM EngineeringAuto-check: notes
  • Penguin SDK

    Prism-Shadow/penguin-harness

    A skill your agent uses whenever the user wants to build an agent application — their own program with an embedded agent, such as an AI app, an agentic app or a RAG app.

    2.5k GitHub stars~11k tokensUpdated yesterday
    AI & LLM EngineeringAuto-check passed
  • RAG Assistant

    Atmosphere/atmosphere

    Knowledge base assistant that retrieves and cites documents from a curated index.

    3.8k GitHub stars~504 tokensUpdated 2 days ago
    AI & LLM EngineeringAuto-check passed
  • Langchain4j RAG Implementation Patterns

    giuseppe-trisciuoglio/developer-kit

    Provides Retrieval-Augmented Generation (RAG) implementation patterns with LangChain4j for Java.

    355 GitHub starsUsed in 1 repo~3.3k tokens
    AI & LLM EngineeringAuto-check: notes
  • Orchata RAG

    LeoYeAI/openclaw-master-skills

    Knowledge management and RAG platform with tree-based document indexing.

    2.2k GitHub stars~4.7k tokensUpdated 2 mo ago
    AI & LLM EngineeringAuto-check passed

More from open-edge-platform/edge-ai-suites

All 13 skills in this repo
  • Onboarding Validation

    open-edge-platform/edge-ai-suites

    Validate the get-started experience of Open Edge Platform (OEP) software components from the perspective of a first-time user.

    140 GitHub stars~3.3k tokensUpdated yesterday
    Auto-check passed
  • Sc Upload

    open-edge-platform/edge-ai-suites

    Upload a file to the Content Search backend and poll the ingestion task until the file is fully indexed (status COMPLETED).

    140 GitHub stars~2.6k tokensUpdated yesterday
    Auto-check passed
  • Uav Vision Analytics

    open-edge-platform/edge-ai-suites

    Build an end-to-end UAV object detection and telemetry overlay application on Intel hardware using DL Streamer Pipeline Server with MAVLink telemetry.

    140 GitHub stars~2.6k tokensUpdated yesterday
    Auto-check: notes
  • Knowledgebase

    open-edge-platform/edge-ai-suites

    Generic RAG query skill - Retrieve any information from the local knowledge base and generate structured reports, summaries, or Q&A responses.

    140 GitHub stars~900 tokensUpdated yesterday
    Auto-check passed
  • Lvc Run App

    open-edge-platform/edge-ai-suites

    Run, start, or smoke-test the Live Video Captioning app (Docker Compose stack with dashboard on :4173).

    140 GitHub stars~796 tokensUpdated yesterday
    Auto-check passed
  • Sc Doctor

    open-edge-platform/edge-ai-suites

    Diagnose Content Search backend availability by probing the health endpoint, then surface connectivity issues between Flutter and backend when unhealthy.

    140 GitHub stars~1.4k tokensUpdated yesterday
    Auto-check: notes

Questions about Sc QA

What does Sc QA do?

Ask a natural-language question against indexed content via the Content Search RAG Q&A endpoint. Sc QA is an agent skill from open-edge-platform/edge-ai-suites. Ask a natural-language question against indexed content via the Content Search RAG Q&A endpoint.

When should I use Sc QA?

Sc QA fits situations like: the user says ask a question; query the content; what does the document say; search the knowledge base.

How do I install Sc QA in Claude Code?

Run `npx skills add open-edge-platform/edge-ai-suites --skill sc-qa -a claude-code`. Or copy the skill folder (education-ai-suite/.github/skills/sc-qa in open-edge-platform/edge-ai-suites) into .claude/skills/sc-qa in your project. Claude Code loads it when a task matches its description.

How do I install Sc QA in Codex?

Run `npx skills add open-edge-platform/edge-ai-suites --skill sc-qa -a codex`. Or copy the skill folder (education-ai-suite/.github/skills/sc-qa in open-edge-platform/edge-ai-suites) into .agents/skills/sc-qa in your project. Codex loads it when a task matches its description.

Can I use Sc QA in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add open-edge-platform/edge-ai-suites --skill sc-qa -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/sc-qa, .gemini/skills/sc-qa, .github/skills/sc-qa and .opencode/skills/sc-qa in your project.

What does Sc QA need to run?

SKILL.md names no scripts, command-line tools or credentials: Sc QA is instructions for the agent only.

Does Sc QA access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Sc QA safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Sc QA use?

Sc QA is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Sc QA use?

About 2.3k tokens (SKILL.md is roughly 9.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 645 tokens, read only when the agent opens those files.

What are the alternatives to Sc QA?

Skills that share tags, products or a category with Sc QA: Blockify Integration (iternal-technologies-partners/blockify-agentic-data-optimization, 316 stars), Agentsop Dify (agentsope/SkillAlchemy, 459 stars), Penguin SDK (Prism-Shadow/penguin-harness, 2.5k stars) and RAG Assistant (Atmosphere/atmosphere, 3.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Sc QA?

open-edge-platform (a GitHub organization) maintains it in open-edge-platform/edge-ai-suites, which has 140 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on October 7, 2026.

Source: open-edge-platform/edge-ai-suites on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.