Initialize Rivet by scanning codebase structure. Use when SessionStart hook reports no .rivet/systems.yaml, when user says "install rivet" or "set up rivet", or to refresh system definitions after major codebase changes.
/plugin marketplace add ratacat/rivet/plugin install rivet@rivet-marketplaceThis skill is limited to using the following tools:
Analyze the codebase structure and propose systems for .rivet/systems.yaml.
This skill runs during plugin installation to bootstrap .rivet/systems.yaml. It gathers structural data from the codebase and uses that to propose systems that form the project's architecture.
A system is a cohesive bundle of code that forms a single mental model:
A system is something you'd draw as a box in an architecture diagram. NOT individual functions, utility helpers, or single implementation files.
Look for package manifest files that indicate module boundaries:
# Find all package manifests
fd -t f -e json -e toml -e mod -e yaml '(package|Cargo|go|pyproject|pom)' .
Check for:
package.json (Node.js)Cargo.toml (Rust)go.mod (Go)pyproject.toml / setup.py (Python)pom.xml / build.gradle (Java)# Get top-level directories with clear purpose
ls -la
# Look for common patterns: src/, lib/, pkg/, cmd/, internal/, etc.
Identify directories that represent distinct systems:
src/commands/ - Command implementationssrc/services/ - Service layersrc/api/ - API endpointslib/ - Shared librariespkg/ - Public packages# Find main entry points
fd -t f '(main|index|app|server)\.(ts|js|py|go|rs)$'
# Find exports/public interfaces
grep -r "export" --include="*.ts" --include="*.js" | head -50
For dependency hints between systems:
# TypeScript/JavaScript imports
grep -rh "^import.*from" --include="*.ts" --include="*.js" | sort | uniq -c | sort -rn
# Python imports
grep -rh "^from.*import\|^import" --include="*.py" | sort | uniq -c | sort -rn
ls .rivet/systems.yaml 2>/dev/null
If .rivet/systems.yaml exists, prompt the user:
Based on gathered data, create .rivet/systems.yaml with:
project:
name: <from package.json or directory name>
purpose: <inferred or left blank>
systems:
<SystemName>:
description: <what this system does>
paths:
- <directory paths>
Create the .rivet/ folder and write systems.yaml with proposed systems. Each system should have:
project:
name: my-app
purpose: ""
systems:
API:
description: HTTP endpoints and request handlers
paths:
- src/api/
- src/routes/
Database:
description: Data persistence and query layer
paths:
- src/db/
- src/models/
CLI:
description: Command-line interface and argument parsing
paths:
- bin/
- src/commands/
This skill should be used when the user asks about libraries, frameworks, API references, or needs code examples. Activates for setup questions, code generation involving libraries, or mentions of specific frameworks like React, Vue, Next.js, Prisma, Supabase, etc.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.