Back to skills
SkillHub ClubShip Full StackFull Stack

phase-portrait-generator

Imported from https://github.com/plurigrid/asi.

Packaged view

This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.

Stars
10
Hot score
84
Updated
March 20, 2026
Overall rating
C3.2
Composite score
3.2
Best-practice grade
S96.0

Install command

npx @skill-hub/cli install plurigrid-asi-phase-portrait-generator

Repository

plurigrid/asi

Skill path: skills/phase-portrait-generator

Imported from https://github.com/plurigrid/asi.

Open repository

Best for

Primary workflow: Ship Full Stack.

Technical facets: Full Stack.

Target audience: everyone.

License: Unknown.

Original source

Catalog source: SkillHub Club.

Repository owner: plurigrid.

This is still a mirrored public skill entry. Review the repository before installing into production workflows.

What it helps with

  • Install phase-portrait-generator into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
  • Review https://github.com/plurigrid/asi before adding phase-portrait-generator to shared team environments
  • Use phase-portrait-generator for development workflows

Works across

Claude CodeCodex CLIGemini CLIOpenCode

Favorites: 0.

Sub-skills: 0.

Aggregator: No.

Original source / Raw SKILL.md

---
name: phase-portrait-generator
description: Generate phase portraits for 2D dynamical systems. Use when visualizing vector fields, nullclines, and trajectories.
version: 1.0.0
---


# Phase Portrait Generator

Generates phase portraits showing vector fields and trajectories in 2D state space.

## When to Use
- Visualizing 2D autonomous systems
- Plotting nullclines and equilibria
- Trajectory analysis in phase space

## GF(3) Role
PLUS (+1) Generator - creates visual outputs from differential equations.

## Quick Example

```python
import numpy as np
import matplotlib.pyplot as plt

def phase_portrait(f, xlim=(-3,3), ylim=(-3,3), density=20):
    x = np.linspace(*xlim, density)
    y = np.linspace(*ylim, density)
    X, Y = np.meshgrid(x, y)
    U, V = f(X, Y)
    plt.streamplot(X, Y, U, V, density=1.5)
    plt.xlabel('x'); plt.ylabel('y')

# Van der Pol oscillator
phase_portrait(lambda x, y: (y, -x + (1 - x**2) * y))
```

## Integration with bifurcation skills

Forms triad with:
- `bifurcation` (0): detects transitions
- `bifurcation-generator` (+1): parameter space
- `phase-portrait-generator` (+1): state space
phase-portrait-generator | SkillHub