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.
equinor/neqsim/.github/skills/neqsim-autonomous-investigation/SKILL.md
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
Decision brief
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…
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/equinor/neqsim --skill ".github/skills/neqsim-autonomous-investigation"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
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.
Run this loop before fixing a scope. Never assume the task's stated classification is correct — treat it as a hypothesis to challenge.
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…
Review the “Java” section in the pinned source before continuing.
Review the “Python (task notebook / runner)” section in the pinned source before continuing.
Permission review
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
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 88/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 136 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
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.
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.
Run this loop before fixing a scope. Never assume the task's stated classification is correct — treat it as a hypothesis to challenge.
RelationshipGraph — including lead-lag direction, which distinguishes a
driver from a follower.runProcess/runFlowAssurance/simulation verification
via RootCauseAnalyzer) plus historian evidence (EvidenceCollector) to check
each prediction.Report the relationships you discovered, not just the answer. A finding without its supporting lead-lag relationships and discriminating test is not complete.
RelationshipGraphRelationshipGraph (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.
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
}
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())
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.AnomalyScannerYou 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
CausalTopologyModelA 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);
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.
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)
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.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.RootCauseAnalyzer.analyzeAutonomous(tagToEquipment) runs the
whole chain (anomaly scan -> symptom inference -> relationship discovery ->
topology classification -> Bayesian scoring) so the agent only supplies data +
flowsheet.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.COMMON_CAUSE_OR_ARTIFACT verdict from CausalTopologyModel.Alternatives
respira-press/agent-skills-wordpress
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.
coreyhaines31/marketingskills
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
Donchitos/Claude-Code-Game-Studios
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.
dotnet/skills
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