Source profileQuality 88/100

equinor/neqsim/.github/skills/neqsim-autonomous-investigation/SKILL.md

neqsim-autonomous-investigation

Autonomous investigation loop for operational and engineering anomalies — turns an agent from 'told what to look for' into 'discovers relationships and hypotheses on its own'. USE WHEN: solving a PEPR action, root-cause, or operational study where the symptom, driver, or important relationships are NOT given up front. Runs an observe -> hypothesize -> predict -> test -> discriminate loop, using neqsim.process.diagnostics.RelationshipGraph for unsupervised lead-lag relationship discovery across h

Source repository stars
136
Declared platforms
0
Static risk flags
0
Last source update
2026-08-05
Source checked
2026-08-05

Decision brief

What it does—and where it fits

Make agents investigate instead of follow a checklist. Use this skill when a task (PEPR action, root-cause, operational study, digital-twin deviation) does not tell you the symptom, the driver, or which relationships matter. The goal is that the agent discovers the important rel…

Best for

  • A PEPR action or work order describes a problem but not a cause.
  • Historian data is available but no one has said "look at tag X vs tag Y".
  • A model-vs-plant deviation appears and the responsible variable is unknown.

Not for

  • Correlation and lead-lag are screening signals, not proof of causation.
  • Default correlation is linear (Pearson); enable rank/Spearman mode

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/equinor/neqsim --skill ".github/skills/neqsim-autonomous-investigation"
Safe inspection promptEditorial

Inspect the Agent Skill "neqsim-autonomous-investigation" from https://github.com/equinor/neqsim/blob/9e8d44a141bba600026d2229969b49af50f34237/.github/skills/neqsim-autonomous-investigation/SKILL.md at commit 9e8d44a141bba600026d2229969b49af50f34237. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    When to Use

    Do not use this to replace a known, well-scoped calculation — if the symptom and mechanism are already given, go straight to neqsim-root-cause-analysis or the relevant discipline skill.

    A PEPR action or work order describes a problem but not a cause.Historian data is available but no one has said "look at tag X vs tag Y".A model-vs-plant deviation appears and the responsible variable is unknown.
  2. 02

    The Investigation Loop (mandatory ordering)

    Run this loop before fixing a scope. Never assume the task's stated classification is correct — treat it as a hypothesis to challenge.

    Observe (no assumptions). Pull all available tags, not just the ones theHypothesize (compete). Generate at least three competing causalPredict (differentiate). For each hypothesis, state what it implies for
  3. 03

    Unsupervised relationship discovery — RelationshipGraph

    RelationshipGraph (in neqsim.process.diagnostics) scans every tag pair in a historian data set with no symptom and no hypothesis supplied, and reports which tags move together and, crucially, which moves first. Lead-lag directionality is the signal an agent uses to pick candidat…

    A - B (r=+0.85, leads by 300 s) — A moves first; A is a candidate causeA B (r=+0.90, synchronous) — tightly coupled with no detectable lag; mayA strong statistical edge that does not follow a physical process path
  4. 04

    Java

    Review the “Java” section in the pinned source before continuing.

    Review and apply the “Java” source section.
  5. 05

    Python (task notebook / runner)

    Review the “Python (task notebook / runner)” section in the pinned source before continuing.

    Review and apply the “Python (task notebook / runner)” source section.

Permission review

Static risk signals and limitations

No configured static risk pattern was detected

This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score88/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars136SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
equinor/neqsim
Skill path
.github/skills/neqsim-autonomous-investigation/SKILL.md
Commit
9e8d44a141bba600026d2229969b49af50f34237
License
Apache-2.0
Collected
2026-08-05
Default branch
master
View the original SKILL.md

NeqSim Autonomous Investigation Skill

Make agents investigate instead of follow a checklist. Use this skill when a task (PEPR action, root-cause, operational study, digital-twin deviation) does not tell you the symptom, the driver, or which relationships matter. The goal is that the agent discovers the important relationships from the data and the flowsheet on its own, forms competing hypotheses, and tests them — reaching findings that were not spelled out in the task.

When to Use

  • A PEPR action or work order describes a problem but not a cause.
  • Historian data is available but no one has said "look at tag X vs tag Y".
  • A model-vs-plant deviation appears and the responsible variable is unknown.
  • Any "why is this happening?" question where spoon-feeding relations is wrong.

Do not use this to replace a known, well-scoped calculation — if the symptom and mechanism are already given, go straight to neqsim-root-cause-analysis or the relevant discipline skill.

The Investigation Loop (mandatory ordering)

Run this loop before fixing a scope. Never assume the task's stated classification is correct — treat it as a hypothesis to challenge.

  1. Observe (no assumptions). Pull all available tags, not just the ones the task names. Scan each tag against its own baseline and (when available) STID design envelope for what is abnormal. Discover cross-tag relationships with RelationshipGraph — including lead-lag direction, which distinguishes a driver from a follower.
  2. Hypothesize (compete). Generate at least three competing causal hypotheses, always including a "not a real problem / instrument or data artifact" hypothesis. Seed them from the discovered leaders (candidate causes), not from intuition alone.
  3. Predict (differentiate). For each hypothesis, state what it implies for other tags/streams. Two hypotheses that predict the same thing cannot be distinguished — find a prediction where they disagree (the discriminating test).
  4. Test. Use NeqSim (runProcess/runFlowAssurance/simulation verification via RootCauseAnalyzer) plus historian evidence (EvidenceCollector) to check each prediction.
  5. Discriminate & iterate. Keep the hypothesis that best explains the pattern across relationships, not a single number. Loop until one dominates or the data is exhausted; report residual ambiguity honestly.

Report the relationships you discovered, not just the answer. A finding without its supporting lead-lag relationships and discriminating test is not complete.

Unsupervised relationship discovery — RelationshipGraph

RelationshipGraph (in neqsim.process.diagnostics) scans every tag pair in a historian data set with no symptom and no hypothesis supplied, and reports which tags move together and, crucially, which moves first. Lead-lag directionality is the signal an agent uses to pick candidate causes on its own.

Java

import java.util.Map;
import neqsim.process.diagnostics.RelationshipGraph;

RelationshipGraph graph = new RelationshipGraph();
graph.setTimestamps(timestamps);      // optional: enables lag in seconds
graph.setMaxLagSamples(10);           // search +/- 10 samples
graph.setMinAbsCorrelation(0.5);      // only report |r| >= 0.5
List<RelationshipGraph.Relationship> edges = graph.analyze(historianData);
String relationshipReport = graph.toTextReport(edges);

for (RelationshipGraph.Relationship r : edges) {
  // r.getSource() leads r.getTarget() (candidate cause -> candidate effect)
  // r.getDirection(): LEADS or SYNCHRONOUS
  // r.getLagSamples() / r.getLagSeconds(): how far ahead the driver moves
  // r.getCorrelation(): strength & sign at the best lag
}

Python (task notebook / runner)

RelationshipGraph = ns.JClass("neqsim.process.diagnostics.RelationshipGraph")

graph = RelationshipGraph()
graph.setTimestamps(timestamps)     # java double[]; omit if unavailable
graph.setMaxLagSamples(10)
graph.setMinAbsCorrelation(0.5)
edges = graph.analyze(historian_map)  # Map<String, double[]>
for r in edges:
    print(r.getSource(), "->", r.getTarget(),
          "r=", round(r.getCorrelation(), 2),
          "lag_s=", r.getLagSeconds())

Reading the output

  • A -> B (r=+0.85, leads by 300 s) — A moves first; A is a candidate cause of B. Prioritise hypotheses about A.
  • A <-> B (r=+0.90, synchronous) — tightly coupled with no detectable lag; may share a common driver — look for a third tag that leads both.
  • A strong statistical edge that does not follow a physical process path (upstream -> downstream in the flowsheet) is a candidate common-cause or instrument artifact, not a direct cause.

Auto-detect the symptom — AnomalyScanner

You should not have to be told the symptom either. AnomalyScanner (in neqsim.process.diagnostics) scans every tag against its own robust baseline (median / MAD) and, when supplied, its STID design envelope, and reports abnormal tags plus a candidate symptom inferred from the tag name. Detection kinds: THRESHOLD_HIGH/LOW (crosses a design limit), SPIKE_HIGH/LOW (robust-z outlier), TREND_UP/DOWN (sustained drift).

AnomalyScanner scanner = new AnomalyScanner();
scanner.setDesignLimit("Compressor-1.vibration", Double.NaN, 7.1); // optional
List<AnomalyScanner.Anomaly> anomalies = scanner.scan(historianData);
Symptom candidate = scanner.suggestSymptom(anomalies); // e.g. HIGH_VIBRATION

Promote statistics to causes — CausalTopologyModel

A statistical lead-lag edge is not proof of causation. CausalTopologyModel overlays the flowsheet connectivity (which equipment feeds which) on the RelationshipGraph edges and classifies each: CAUSAL_CANDIDATE (leader is upstream of follower and moves first), LOCAL (same equipment), COUNTER_FLOW (lead-lag opposes process flow — feedback), or COMMON_CAUSE_OR_ARTIFACT (no process path — a shared hidden driver or an instrument artifact).

Map<String, Set<String>> adjacency = CausalTopologyModel.buildDownstreamAdjacency(processSystem);
CausalTopologyModel model = new CausalTopologyModel(adjacency, tagToEquipment);
List<CausalTopologyModel.CausalEdge> edges = model.classify(relationships);

One call — RootCauseAnalyzer.analyzeAutonomous()

The three steps above plus the Bayesian scoring are chained in a single entry point. No symptom is required — the analyzer scans anomalies, infers the symptom, discovers relationships, and classifies them against topology, then converts hypothesis-matched anomaly and physically consistent topology findings into weighted evidence used in ranking.

RootCauseAnalyzer rca = new RootCauseAnalyzer(processSystem, "Compressor-1");
rca.setHistorianData(historianData, timestamps);
rca.setDesignLimit("Compressor-1.vibration", Double.NaN, 7.1);

// Autonomous: no setSymptom() call needed.
RootCauseReport report = rca.analyzeAutonomous();                 // anomalies + relationships + RCA
// or, to also get causal-vs-artifact classification:
RootCauseReport report2 = rca.analyzeAutonomous(tagToEquipment);  // + CausalTopologyModel

rca.getLastAnomalies();     // what looked abnormal
rca.getLastRelationships(); // who leads whom
rca.getLastCausalEdges();   // causal candidate vs common-cause/artifact

Only LOCAL and CAUSAL_CANDIDATE edges matching a hypothesis fingerprint affect ranking. COUNTER_FLOW, COMMON_CAUSE_OR_ARTIFACT, and UNKNOWN findings remain reportable but are not treated as causal support. This conservative admission rule prevents correlation alone from inflating confidence.

Python: get the classes with ns.JClass("neqsim.process.diagnostics.AnomalyScanner"), ...RelationshipGraph, ...CausalTopologyModel, ...RootCauseAnalyzer.

Cooperation (chain both directions)

plant-data / enterprise-plant-data   (historian tags)
alarm-events / maintenance-api / STID (events, work orders, design limits)
        v
neqsim-autonomous-investigation      (this skill: discover relations + hypotheses)
        v
neqsim-root-cause-analysis           (Bayesian scoring + simulation verification)
        v
neqsim-process-safety / discipline   (consequence, if the cause is a hazard)
  • Gather ALL data first (do not spoon-feed one tag): pull the full historian tag map via neqsim-plant-data (community) or enterprise-plant-data (historian/Seeq); add alarm & event history (enterprise-alarm-events), maintenance work orders / notifications (enterprise-maintenance-api), and STID design limits when available. Feed the whole tag map (plus design limits) into AnomalyScanner / RelationshipGraph — the more context, the better the discovery.
  • Downstream: hand the discovered leaders and their lags to neqsim-root-cause-analysis as the candidate causes / expected signals, so the Bayesian scorer verifies them with a NeqSim simulation instead of relying on a fixed symptom.
  • The one-call path RootCauseAnalyzer.analyzeAutonomous(tagToEquipment) runs the whole chain (anomaly scan -> symptom inference -> relationship discovery -> topology classification -> Bayesian scoring) so the agent only supplies data + flowsheet.

Limitations

  • Correlation and lead-lag are screening signals, not proof of causation. Always confirm with the flowsheet topology and a NeqSim simulation.
  • Default correlation is linear (Pearson); enable rank/Spearman mode (RelationshipGraph.setUseRankCorrelation(true)) to catch strong monotonic non-linear couplings. Strongly non-monotonic couplings may still be under-reported — consider transforming variables (log, rate-of-change) first.
  • Lag resolution is limited by the sampling interval; sub-sample lags round to the nearest sample.
  • Common-cause structure (one hidden driver behind many tags) is flagged only indirectly — look for a tag that leads several others, or a COMMON_CAUSE_OR_ARTIFACT verdict from CausalTopologyModel.

Alternatives

Compare before choosing

Computed 9540

respira-press/agent-skills-wordpress

woocommerce-health-check

Use when the user says 'why is my checkout broken', 'audit my woocommerce store', 'cart problems woocommerce', or 'losing sales woocommerce'. Diagnoses checkout and cart failures, AJAX mismatches, caching conflicts, payment gateway setup, and SSL enforcement.

Computed 8743,034

coreyhaines31/marketingskills

cro

When the user wants to optimize, improve, or increase conversions on any marketing page or form — including homepage, landing pages, pricing pages, feature pages, lead capture forms, or contact forms. Also use when the user says 'CRO,' 'conversion rate optimization,' 'this page isn't converting,' 'improve conversions,' 'why isn't this page working,' 'my landing page sucks,' 'form abandonment,' 'nobody's converting,' 'low conversion rate,' or 'this page needs work.' Use this even if the user just

Computed 8723,609

Donchitos/Claude-Code-Game-Studios

team-qa

Orchestrate the QA team through a full testing cycle. Coordinates qa-lead (strategy + test plan) and qa-tester (test case writing + bug reporting) to produce a complete QA package for a sprint or feature. Covers: test plan generation, test case writing, smoke check gate, manual QA execution, and sign-off report.

Computed 974,944

dotnet/skills

test-tagging

Analyzes test suites in any language and tags each test with standardized traits (positive, negative, critical-path, boundary, smoke, regression, integration, performance, security). Use when the user wants to categorize, audit, or label tests with traits. Works across .NET (MSTest/xUnit/NUnit/TUnit), Python (pytest), TS/JS (Jest/Vitest), Java, Go, Ruby, Rust, Swift, Kotlin, PowerShell, and C++ — auto-editing when the framework has canonical tag syntax, otherwise report-only. Do not use for writ