CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

petrinaut

Using the Petrinaut tools and writing net code. Use before the first net change, before writing lambda, kernel, dynamics, visualizer, metric or scenario code, before drafting or creating an experiment, and when the USER asks how something in the Petrinaut UI works.

70

Quality

88%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

92%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

An exceptionally dense, operational skill body: every section instructs on host contracts Claude cannot guess (read-before-change refusal, bare function-body code, extension gating, name rules), with executable examples and validation loops throughout. Its only inefficiency is the duplicated lambda-availability rules between the Extensions and Code surfaces sections.

DimensionReasoningScore

Conciseness

The body is lean and telegraphic and assumes Claude's competence throughout — no Petri-net, React, or TypeScript primers, and every line carries host-contract knowledge Claude cannot infer. The one trimmable redundancy is that lambda availability rules appear twice (Extensions section: 'Stochastic transition lambdas... require extensions.stochasticity' vs Code surfaces: 'Available when stochasticity is enabled OR when colours are enabled...'), which fits anchor 4's 'minor instances that could be trimmed' rather than anchor 5's 'every token earns its place'.

4 / 5

Actionability

Fully executable guidance: named tools (readNetOutline, getNetCompilationErrors, applyAutoLayout, setNetTitle, updatePlace), copy-paste-ready one-liners for every code surface ('return input.Queue[0].priority > parameters.threshold;'), the exact place-name regex '^[A-Z][a-zA-Z]*\d*$', and the concrete loop replacement 'Array.from({ length: n }, (_, index) => ({ ... }))'. Specific examples cover the common cases, matching anchor 5.

5 / 5

Workflow Clarity

Multi-step processes are clearly sequenced with explicit validation checkpoints: read before the first change, fragments in dependency order (types/parameters/equations, then places/transitions, then arcs), an after-step acceptance checklist ('netAfterChanges contains each accepted element... arc weights are positive'), the getNetCompilationErrors validation loop with a single repair step, and finishing steps for title and layout. Failure handling is explicit ('On a failure, a no-op or an unknown outcome, inspect the result... submit only the correction'), matching anchor 5's feedback loops.

5 / 5

Progressive Disclosure

A Routing section clearly signals when to read each of three real, one-level-deep reference files (docs.md for user-guide pages, examples.md for the worked example, experiments.md for experiment fields and limits), verified against the actual bundle with no nested references. Core contracts stay inline while examples and experiment detail are externalized, matching anchor 5's 'clear overview with well-signaled one-level-deep references'.

5 / 5

Total

19

/

20

Passed

Description

78%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A distinct, well-triggered description with an excellent explicit 'Use when...' clause covering first changes, each code surface, experiments, and UI questions. Its main weakness is the 'what' half: 'Using the Petrinaut tools and writing net code' names the domain without stating the concrete capabilities (read, mutate, validate, and lay out Petri nets, define colours, dynamics and experiments).

Suggestions

State what the skill delivers rather than just naming the tools, e.g. 'Build and edit Petri nets through the Petrinaut tools: make net changes, write lambda, kernel, dynamics, visualizer, metric and scenario code, and validate them.'

Add a few more natural trigger terms users would say, such as 'place', 'transition', 'token', or 'simulation', to widen the 'when' coverage beyond code-surface names.

Anchor 5 for completeness needs a concrete 'what' paired with the trigger phrases; one clause describing the read/mutate/validate workflow would get there.

DimensionReasoningScore

Specificity

Enumerates concrete actions ('writing lambda, kernel, dynamics, visualizer, metric or scenario code', 'drafting or creating an experiment'), but 'Using the Petrinaut tools' is generic and the capabilities the tools actually deliver (building, editing, validating nets) are left unstated. This matches the 'several specific actions; minor gaps in coverage' anchor rather than the comprehensive anchor 5.

4 / 5

Completeness

Both 'what' and 'when' are present, with the 'when' unusually explicit ('Use before the first net change... and when the USER asks how something in the Petrinaut UI works'). The 'what' ('Using the Petrinaut tools and writing net code') is stated but does not describe what is accomplished with the tools, so it falls short of anchor 5's 'clearly and explicitly answers both' while exceeding anchor 3 (which requires a missing or weakly implied 'when').

4 / 5

Trigger Term Quality

Good natural keyword coverage ('net change', 'experiment', 'lambda', 'Petrinaut UI', 'drafting or creating') that users of this domain would say, but misses common variations a user might naturally use such as 'place', 'transition', 'token', or 'simulation'. Anchor 5 requires comprehensive coverage including synonyms, so this fits anchor 4 with a few natural terms missing.

4 / 5

Distinctiveness Conflict Risk

'Petrinaut' is a uniquely named domain and every trigger ('net change', 'lambda', 'kernel', 'dynamics', 'visualizer', 'metric', 'scenario' code, 'experiment') is scoped to it, giving a clear niche with distinct triggers and minimal conflict risk.

5 / 5

Total

17

/

20

Passed

Validation

100%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository

hashintel/hash

Path

apps/brunch-agent/src/agents/petrinaut/skills/petrinaut/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.