research-pipeline-workflow — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited research-pipeline-workflow (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Orchestrates a deployed Mistral Workflow for multi-step research (literature review, competitive analysis, technical deep-dive). Queries hypotheses at each checkpoint, lets the user validate or amend them, and injects additional sources when needed — all via workflow_interact.
Profile note: workflow_execute, workflow_status, and workflow_interact are available in the core profile (default). No additional profile is required for workflow-only orchestration.
Temporal behavior: the workflow status stays RUNNING even when the pipeline is blocked waiting for hypothesis validation (a wait_for_input() pause in the workflow). Detect this state by querying a status handler — do not wait for a PAUSED status, which does not exist in this API.
Ask the user (or consult mistral://workflows) for:
"get_progress""get_hypotheses""hypothesis_decision"Ask the user for:
workflowIdentifier — the deployed research workflow name or IDtopic — the research question (be specific)depth — "shallow" (quick scan), "medium" (balanced), "deep" (comprehensive)output_format — "bullets", "report", or "json"file_ids to seed the pipelineCall workflow_execute:
{
"workflowIdentifier": "<workflow name or ID>",
"input": {
"topic": "<research question>",
"depth": "medium",
"output_format": "report",
"sources": ["<url_or_file_id>"]
}
}Note structuredContent.execution_id. Confirm: "Research pipeline started — execution ID: <execution_id>."
Loop:
workflow_status with { "executionId": "<execution_id>" }structuredContent.status:COMPLETED → go to Step 5FAILED / TIMED_OUT / CANCELED → surface error and stopRUNNING → continueWhile RUNNING, query progress every ~20 seconds:
{
"executionId": "<execution_id>",
"action": "query",
"name": "get_progress"
}Show the user what the pipeline is doing:
🔍 RESEARCH IN PROGRESS
─────────────────────────
Phase: [phase from result, e.g. "source discovery", "synthesis"]
Sources processed: [N from result]
Hypotheses formed: [N from result]Also probe for hypothesis checkpoints:
{
"executionId": "<execution_id>",
"action": "query",
"name": "get_hypotheses"
}If the result contains pending hypotheses awaiting validation, proceed to Step 4.
When hypotheses are ready for review (detected from the get_hypotheses query result):
⏸ HYPOTHESIS CHECKPOINT
──────────────────────────
H1: [hypothesis text]
Supporting sources: [N]
Confidence: [low/medium/high]
H2: [hypothesis text]
...
Options:
(A) Validate — continue with these hypotheses
(B) Amend — provide corrections or constraints
(C) Inject sources — add documents/URLs to refine
(D) Discard — restart this hypothesis phaseValidate (proceed as-is):
{
"executionId": "<execution_id>",
"action": "signal",
"name": "hypothesis_decision",
"input": { "decision": "validate" }
}Amend (with corrections):
{
"executionId": "<execution_id>",
"action": "signal",
"name": "hypothesis_decision",
"input": {
"decision": "amend",
"amendments": "<user corrections or constraints in plain text>"
}
}Inject sources:
{
"executionId": "<execution_id>",
"action": "signal",
"name": "hypothesis_decision",
"input": {
"decision": "validate",
"additional_sources": ["<url_or_file_id>", "..."]
}
}Discard and restart (hypothesis phase only):
{
"executionId": "<execution_id>",
"action": "signal",
"name": "hypothesis_decision",
"input": { "decision": "discard", "reason": "<user feedback>" }
}Return to Step 3. Deep pipelines may have multiple hypothesis gates.
When status === "COMPLETED", present structuredContent.result in the requested format:
✅ RESEARCH COMPLETE
──────────────────────
Topic: [topic]
Depth: [depth]
Execution: <execution_id>
Sources used: [N from result]
[formatted output — bullets / report / JSON as requested]
KEY FINDINGS
────────────
[top 3–5 findings with source citations from result]
CONFIDENCE ASSESSMENT
──────────────────────
[per-finding confidence level + supporting source count]Offer to pass the output to mistral_chat with magistral-medium-latest + reasoning_effort: "high" for a critical peer review of the findings.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.