Agent skill

Simulink Solver Profiler Analyzer

by hashgraph-online in hashgraph-online/awesome-codex-plugins

Runs the Simulink Solver Profiler and analyzes the results. An agent skill from hashgraph-online/awesome-codex-plugins.

Apache-2.0Auto-check passedDevelopment

Install Simulink Solver Profiler Analyzer

skills CLI
$ npx skills add hashgraph-online/awesome-codex-plugins --skill simulink-solver-profiler-analyzer -a claude-code

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

GitHub CLI
$ gh skill install hashgraph-online/awesome-codex-plugins simulink-solver-profiler-analyzer --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/hashgraph-online/awesome-codex-plugins.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/summer521521/MATLAB_Simulink_plugin/skills/simulink-solver-profiler-analyzer .claude/skills/simulink-solver-profiler-analyzer && 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
simulink-solver-profiler-analyzer
GitHub stars
1.2k
Token cost
~3.1k tokens
SKILL.md length
1,453 words
Files
20
Skills in repo
686
Repo updated
First seen
Licence
Apache-2.0

At a glance

Runs the Simulink Solver Profiler and analyzes the results. An agent skill from hashgraph-online/awesome-codex-plugins.

  • Works in 6 steps: Setup → Data Acquisition — Choose One → Get statistics overview → …
  • Asks to run the Simulink solver profiler and when the user asks for advice on solver issues
  • SKILL.md covers Your Capabilities and Workflow
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Simulink Solver Profiler Analyzer is an agent skill from hashgraph-online/awesome-codex-plugins. Runs the Simulink Solver Profiler and analyzes the results. Run when the user asks to run the Simulink solver profiler and when the user asks for advice on solver issues or performance issues in Simulink.

Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 21 other files.

It sits in Development, covering Performance optimization. The repository describes itself as: A curated list of awesome OpenAI Codex / ChatGPT plugins, skills, and resources. The 1 Codex Marketplace. See live plugins at: https://hol.org/plugins/best-codex-plugins. The licence is Apache-2.0.

When your agent uses it

  • Asks to run the Simulink solver profiler and when the user asks for advice on solver issues
  • Performance issues in Simulink

Example prompts

  • “/simulink-solver-profiler-analyzer”

Workflow steps

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

  1. Setup
  2. Data Acquisition — Choose One
  3. Get statistics overview
  4. Fetch detail tables and analyze
  5. Look for algebraic loops
  6. Generate HTML Report

What it can do on your machine

Read from SKILL.md and the folder at commit 78497e5. 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 matlab and html).

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

  • Network

    Links to these hosts (documentation or services it may open):

    • blogs.mathworks.com

    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

Simulink Solver Profiler Analyzer loads about 3.1k tokens when it runs. Until then it costs about 60 tokens; SKILL.md has 1,453 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~60
When it runs · the whole SKILL.md, loaded when a task matches
~3.1k

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 hashgraph-online/awesome-codex-plugins at commit 78497e5, republished under its Apache-2.0 licence (© hashgraph-online). 1,453 words, ~3,146 tokens.

Download SKILL.mdSave it as .claude/skills/simulink-solver-profiler-analyzer/SKILL.md (or your agent's skills folder). This skill also uses 19 other files; get the full folder from GitHub.
name
simulink-solver-profiler-analyzer
description
Runs the Simulink Solver Profiler and analyzes the results. Run when the user asks to run the Simulink solver profiler and when the user asks for advice on solver issues or performance issues in Simulink.

You are an expert in the Simulink Solver Profiler. You help users run the profiler on Simulink models and interpret the results to diagnose and fix solver issues.

Your Capabilities

  • Run the Solver Profiler on a Simulink model using MATLAB tools
  • Load saved profiler sessions from MAT-files
  • Use profiler data already present in the MATLAB workspace
  • Interpret all profiler report sections: statistics, zero crossings, solver exceptions, solver resets, Jacobian analysis, inaccurate states, and Simscape stiffness
  • Recommend concrete solver settings changes based on the profiler findings
  • Generate a standalone HTML report summarizing all findings

Workflow

When the user asks you to analyze a model or a session file, follow these steps:

Step 0 — Setup

Run the setup function located in the skill's stringify/ folder. This self-locating script adds its own folder to the MATLAB path regardless of where the skill is installed or which AI agent is used.

matlab
run('STRINGIFY_FOLDER/setup.m')

Replace STRINGIFY_FOLDER with the absolute path to this skill's stringify/ directory (derived from the <skill_files> entries below — use the parent folder of any listed .m file).

This is required for all three data acquisition options below.

Step 1 — Data Acquisition — Choose One

All three options produce a variable that can be passed directly to the utilGet* functions in subsequent steps. The variable can be a result struct (from Option A), a SolverProfilerSessionDataClass object, or a file path — the utility functions accept all three forms.

Option A: Run the profiler on a model

Use when the user wants to profile a model that is loaded or can be loaded in MATLAB. This is the only option that guarantees the model is loaded in Simulink (needed for Step 4).

matlab
% Load the model if not already open
load_system('ModelName');

% Run the Solver Profiler
result = solverprofiler.profileModel('ModelName','SaveStates','on','SaveSimscapeStates','on','SaveZCSignals','on');

Replace ModelName with the actual open model name. Use result as the input to all subsequent steps.

Option B: Load saved profiler data from a MAT-file

Use when the user provides a .mat file containing saved profiler results. The variable inside is typically named sessionData but may vary.

matlab
d = load('path/to/solverProfilerData.mat');
% Inspect variable names
disp(fieldnames(d));
% Use the solver profiler session data variable (name may vary)
profData = d.sessionData;

Use profData as the input to all subsequent steps. Note: the model may not be loaded in Simulink — see Step 4 for implications.

Option C: User provides profiler data in a MATLAB variable

The user may state that a variable already exists in the workspace. Verify its type:

matlab
whos variableName

Confirm it is of type solverprofiler.internal.SolverProfilerSessionDataClass. Use the variable directly as the input to all subsequent steps. Note: the model may not be loaded in Simulink — see Step 4 for implications.

Step 2 — Get statistics overview

Use mcp__matlab__evaluate_matlab_code to get the simulation statistics:

matlab
import solverprofiler.util.*
text = utilGetStatisticsText(profData);
disp(text)

Replace profData with the actual variable from Step 1 (result, profData, sessionData, etc.).

Step 3 — Fetch detail tables and analyze

First, check the ratio of Total jacobian update versus Total steps:

  • > 30%: Severe — solver is struggling significantly, prioritize fixing.
  • 10–30%: Moderate — worth investigating and addressing.
  • < 10%: Acceptable — may still contain individual issues worth noting.
  • < 5% with no DAE failures: Healthy model — report as no action needed and proceed to Step 5 (report generation).

If the model is healthy (Jacobian updates < 5% of total steps, zero DAE failures, and no other anomalies), skip the detailed analysis below and proceed directly to Step 5 to generate a report confirming the model is in good shape.

There are usually 3 main causes for Jacobian updates. For each category with a non-zero count, fetch the detail table and then interpret it using the guidance below.

Solver Resets

Fetch the detail table if Total solver reset > 10% of Total steps:

matlab
import solverprofiler.util.*
text = utilGetResetsText(profData);
disp(text)

Interpretation:

  • Zero Crossing: You need to analyze the zero crossing table.
  • Discrete signal: This is typically due to a discrete signal feeding blocks with continuous states, like Integrator, State-Space or a Simscape network. If the signal is discrete in nature (For example a boolean signal or integers like gear number), then the reset is necessary. If the signal has a discrete sample time but is continuous in nature, insert a First Order Hold block. When adding a First Order Hold block programmatically, use add_block('simulink/Continuous/First Order Hold', destPath).
  • Important Note: If the block listed is "Solver Configuration", you can ignore it. Numbers for this block are usually duplicates of other blocks in the table.
Solver Exceptions

Fetch the detail table if Total solver exception > 10% of Total steps:

matlab
import solverprofiler.util.*
text = utilGetExceptionsText(profData);
disp(text)

Interpretation — the root cause for exceptions can be:

  • Error control: Those are often a sign that one state is changing fast. Use the States Explorer to visualize the state and determine if this behaves as expected. Concerning when error control exceptions > 10% of total steps.
  • Newton iteration: Specific to stiff solvers and Simscape. If the number is large (> 20% of total steps), it's usually a sign that the system is modeled too idealistically. Use the States Explorer to visualize the states with the largest failure counts. If those states are changing rapidly, a high number of Newton iteration failures may be expected in order to capture the system dynamics properly — in that case, the failures are not necessarily a problem to fix.
  • Infinite state: Very uncommon. Flag if you see a large number, this is a sign of an unknown or unexpected problem. Contact MathWorks for help.
  • Infinite derivative: Very uncommon. Flag if you see a large number, this is a sign of an unknown or unexpected problem. Contact MathWorks for help.
  • DAE newton iteration: A nonzero value here is a serious problem that should be addressed immediately. The system contains differential algebraic constraints (DAEs) that the Simulink solver is struggling to solve. See Solver Profiler documentation for examples.
Show full SKILL.md (545 more words)Show less
Zero-Crossing Events

Fetch the detail table if Total zero crossing > 10% of Total steps:

matlab
import solverprofiler.util.*
text = utilGetZeroCrossingText(profData);
disp(text)

Interpretation:

  • List the signal with the most zero-crossing events. The user needs to use the Zero-Crossing Explorer to determine if they are really needed for their simulation. Zero-crossing is a tradeoff between performance and accuracy. If a continuous state has a discontinuity in values or slope, a zero-crossing event should happen to capture it properly.
Simscape State Resolution

If the model uses Simscape (state paths contain dots like Model.Network.Block.state), resolve Simscape state paths to Simulink block paths so that findings reference navigable block paths:

matlab
import solverprofiler.util.*
mapping = utilResolveSimscapeStates(profData);
for i = 1:numel(mapping)
    fprintf('%s -> %s\n', mapping(i).statePath, mapping(i).blockPath);
end

Use the resolved block paths when building findings and recommendations in Step 5.

Step 4 — Look for algebraic loops

This step requires the model to be loaded in Simulink. If the data came from Option A, the model is already loaded. For Options B and C, check first:

matlab
modelName = 'ModelName';  % use model name from the statistics output
if bdIsLoaded(modelName)
    import solverprofiler.util.*
    text = utilGetAlgebraicLoopsText(modelName);
    disp(text)
else
    fprintf('Model %s is not loaded. Skipping algebraic loop check.\n', modelName);
    fprintf('To run this check, load the model with: load_system(''%s'')\n', modelName);
end

Replace ModelName with the actual model name from the session metadata. Simscape networks should never be inside an algebraic loop. If an algebraic loop is present, instruct the user that it must be resolved as first priority and provide the full path of list of blocks involved.

Step 5 — Generate HTML Report

After completing the analysis and formulating recommendations, generate a standalone HTML report. Build the recommendations as an HTML string using the priority CSS classes, then call generateSolverProfilerReport:

matlab
import solverprofiler.util.*
findings = [ ...
    '<ol class="rec-list">' ...
    '<li class="priority-high"><strong>Fix solver resets from discrete signals</strong>' ...
    'Insert First Order Hold blocks before continuous blocks fed by discrete signals. ' ...
    'Affected block: <a href="matlab:hilite_system(''Model/Subsystem/Block'')">Model/Subsystem/Block</a></li>' ...
    '<li class="priority-medium"><strong>Reduce zero-crossing events</strong>' ...
    'Review the top zero-crossing sources using the Zero-Crossing Explorer.</li>' ...
    '<li class="priority-low"><strong>Solver exceptions are within normal range</strong>' ...
    'No action needed.</li>' ...
    '</ol>'];
generateSolverProfilerReport(profData, findings);
generateSolverProfilerReport(profData, findings, 'MyReport.html');  % custom path

The function automatically populates:

  • Summary dashboard (total steps, run time, jacobian updates, exceptions, resets, zero crossings) with color-coded severity
  • Session information table (model name, time range, states, all statistics)
  • Solver exceptions section with breakdown by type (omitted if count is 0)
  • Solver resets section with breakdown by cause (omitted if count is 0)
  • Zero crossings section with source counts (omitted if count is 0)
  • Diagnostics/warnings from the profiler
  • Your findings and recommendations (from the HTML string you provide)

When building the findings string, render every Simulink block path as a clickable hyperlink:

html
<a href="matlab:hilite_system('ModelName/Subsystem/BlockName')">ModelName/Subsystem/BlockName</a>

Rules:

  • Use matlab:hilite_system('...') with the full block path (model name included).
  • Use single quotes inside the matlab: URL.
  • Do NOT hyperlink the model root name alone.

Use the Simscape state mapping obtained in Step 3 to render state paths as clickable block hyperlinks:

html
<a href="matlab:hilite_system('Model/PMA/Current Sensor')">PMA.PMA_CL02.ESac3.Current_Sensor.I</a>
Recommendation Priority Classes
  • priority-high — red left border, for items needing immediate attention
  • priority-medium — yellow left border, for items worth addressing
  • priority-low — green left border, for informational / no action needed
Additional Best Practices

IMPORTANT: I recommend addressing solver resets first. They are usually easier to fix by doing:

Additional recommendations:
  • If you see this pattern: PS-S -> Simple Simulink blocks -> S-PS, try using Simscape blocks from the Physical Signals section of the library instead of going out to Simulink and back
  • If the domain is Isothermal Liquid, one common reason for DAE newton iteration and Newton iteration is hydraulic dry nodes. Dry nodes happen when a node has no volume of fluid. Inserting a Constant Volume Chamber block on the problematic node is the most common way to remove dry nodes.

© hashgraph-online, 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 19 other files in plugins/summer521521/MATLAB_Simulink_plugin/skills/simulink-solver-profiler-analyzer of hashgraph-online/awesome-codex-plugins.

  • SKILL.md
  • reference/template.html
  • stringify/generateSolverProfilerReport.m
  • stringify/setup.m
  • stringify/utilCleanTableData.m
  • stringify/utilExtractReportData.m
  • stringify/utilFormatExceptionsAsText.m
  • stringify/utilFormatReportAsText.m
  • stringify/utilFormatResetsAsText.m
  • stringify/utilFormatStatisticsAsText.m
  • stringify/utilFormatTable.m
  • stringify/utilFormatZeroCrossingAsText.m
  • stringify/utilGetAlgebraicLoopsText.m
  • stringify/utilGetExceptionsText.m
  • stringify/utilGetReportText.m
  • stringify/utilGetResetsText.m
  • stringify/utilGetStatisticsText.m
  • stringify/utilGetZeroCrossingText.m
  • stringify/utilResolveSimscapeStates.m
  • … and 1 more

Open the folder on GitHubat commit 78497e5

Compare with similar skills

Simulink Solver Profiler Analyzer 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.

Simulink Solver Profiler Analyzer compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Simulink Solver Profiler Analyzer this skillhashgraph-online/awesome-codex-plugins1.2k—~3.1kAutomated safety check: PassApache-2.0
Code Review ChecklistshareAI-lab/learn-claude-code78k5 repos~1.1kAutomated safety check: PassMIT
LLM Torch Profiler Analysissgl-project/sglang37k2 repos~6.4kAutomated safety check: PassApache-2.0
Pycrazyguitar/pysheeet8.2k—~886Automated safety check: PassMIT
Cmux Debugging Guidemanaflow-ai/cmux28k1 repos~1.1kAutomated safety check: PassCustom licence
Electron Heap Snapshot Analysiskeybase/client9.3k—~875Automated safety check: PassBSD-3-Clause

Similar skills

  • Code Review Checklist

    shareAI-lab/learn-claude-code

    Reviews code against a five-part checklist covering security, correctness, performance, maintainability and testing, and reports findings in a fixed format.

    78k GitHub starsUsed in 5 repos~1.1k tokens
    DevelopmentAuto-check passed
  • LLM Torch Profiler Analysis

    sgl-project/sglang

    Unified LLM torch-profiler triage skill for sglang, vllm, TensorRT-LLM, and TokenSpeed.

    37k GitHub starsUsed in 2 repos~6.4k tokens
    DevelopmentAuto-check passed
  • Py

    crazyguitar/pysheeet

    Comprehensive Python programming reference covering syntax, concurrency, networking, databases, ML/LLM development, and HPC.

    8.2k GitHub stars~886 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Cmux Debugging Guide

    manaflow-ai/cmux

    Covers debug logging, the Debug menu, profiling rules and runtime pitfalls for working on the cmux macOS terminal app.

    28k GitHub starsUsed in 1 repo~1.1k tokens
    DevelopmentAuto-check passed
  • Analyzes V8, Chrome and Electron .heapsnapshot files with Node scripts to find memory leaks, detached DOM nodes and the retainer paths that keep objects alive.

    9.3k GitHub stars~875 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Runs controlled JMH experiments on the Caffeine cache to find shared contention and hot-path waste, then reviews correctness and returns a reviewable patch.

    18k GitHub stars~2.6k tokensUpdated 2 days ago
    DevelopmentAuto-check: notes

More from hashgraph-online/awesome-codex-plugins

All 686 skills in this repo
  • Anime Reaction Gif

    hashgraph-online/awesome-codex-plugins

    Create original anime-style reaction stickers as looping GIFs and MP4 previews, using generated character pose sheets and timed key poses.

    1.2k GitHub stars~922 tokensUpdated today
    Auto-check passed
  • Calibredb

    hashgraph-online/awesome-codex-plugins

    Manage and query Calibre libraries with the calibredb CLI (local paths or Calibre Content server URLs).

    1.2k GitHub stars~1k tokensUpdated today
    Auto-check passed
  • Rust API Test Harness

    hashgraph-online/awesome-codex-plugins

    A skill your agent uses when adding, changing, testing, or debugging Rust HTTP APIs and services, especially when Codex needs black-box integration tests, random-port app startup, real database test…

    1.2k GitHub stars~1.7k tokensUpdated today
    Auto-check passed
  • Art

    hashgraph-online/awesome-codex-plugins

    Make a studio's game look like something at build time — a cover from a real frame of the game (free), painted covers, backdrops, textures and character plates from image models through the…

    1.2k GitHub stars~2.4k tokensUpdated today
    Auto-check passed
  • Game Balance Economy

    hashgraph-online/awesome-codex-plugins

    Balance game difficulty, resources, rewards, probability, progression, economies, and dominant strategies.

    1.2k GitHub stars~618 tokensUpdated today
    Auto-check passed
  • Manuscript Engagement Analytics

    hashgraph-online/awesome-codex-plugins

    Analyze nonfiction manuscripts for reader engagement signals, including heading-level word counts, slow starts, long slogs, weak takeaway titles, value pacing, beta-reader comment dropoff, and…

    1.2k GitHub stars~875 tokensUpdated today
    Auto-check passed

Categories

Questions about Simulink Solver Profiler Analyzer

What does Simulink Solver Profiler Analyzer do?

Runs the Simulink Solver Profiler and analyzes the results. An agent skill from hashgraph-online/awesome-codex-plugins. Simulink Solver Profiler Analyzer is an agent skill from hashgraph-online/awesome-codex-plugins. Runs the Simulink Solver Profiler and analyzes the results.

When should I use Simulink Solver Profiler Analyzer?

Simulink Solver Profiler Analyzer fits situations like: asks to run the Simulink solver profiler and when the user asks for advice on solver issues; performance issues in Simulink.

How do I install Simulink Solver Profiler Analyzer in Claude Code?

Run `npx skills add hashgraph-online/awesome-codex-plugins --skill simulink-solver-profiler-analyzer -a claude-code`. Or copy the skill folder (plugins/summer521521/MATLAB_Simulink_plugin/skills/simulink-solver-profiler-analyzer in hashgraph-online/awesome-codex-plugins) into .claude/skills/simulink-solver-profiler-analyzer in your project. Claude Code loads it when a task matches its description.

How do I install Simulink Solver Profiler Analyzer in Codex?

Run `npx skills add hashgraph-online/awesome-codex-plugins --skill simulink-solver-profiler-analyzer -a codex`. Or copy the skill folder (plugins/summer521521/MATLAB_Simulink_plugin/skills/simulink-solver-profiler-analyzer in hashgraph-online/awesome-codex-plugins) into .agents/skills/simulink-solver-profiler-analyzer in your project. Codex loads it when a task matches its description.

Can I use Simulink Solver Profiler Analyzer 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 hashgraph-online/awesome-codex-plugins --skill simulink-solver-profiler-analyzer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/simulink-solver-profiler-analyzer, .gemini/skills/simulink-solver-profiler-analyzer, .github/skills/simulink-solver-profiler-analyzer and .opencode/skills/simulink-solver-profiler-analyzer in your project.

What does Simulink Solver Profiler Analyzer need to run?

SKILL.md names no scripts, command-line tools or credentials: Simulink Solver Profiler Analyzer is instructions for the agent only.

Does Simulink Solver Profiler Analyzer access the network?

SKILL.md names 1 domain. As links in the text: blogs.mathworks.com. This is read from the text; nothing was executed.

Is Simulink Solver Profiler Analyzer 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 Simulink Solver Profiler Analyzer use?

Simulink Solver Profiler Analyzer 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 Simulink Solver Profiler Analyzer use?

About 3.1k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Simulink Solver Profiler Analyzer?

Skills that share tags, products or a category with Simulink Solver Profiler Analyzer: Code Review Checklist (shareAI-lab/learn-claude-code, 78k stars), LLM Torch Profiler Analysis (sgl-project/sglang, 37k stars), Py (crazyguitar/pysheeet, 8.2k stars) and Cmux Debugging Guide (manaflow-ai/cmux, 28k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Simulink Solver Profiler Analyzer?

hashgraph-online (a GitHub organization) maintains it in hashgraph-online/awesome-codex-plugins, which has 1,242 GitHub stars. The repository holds 686 skills in this directory. The repository was last updated on October 8, 2026.

Source: hashgraph-online/awesome-codex-plugins on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.