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 repositoryBest 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