Contributing
Development Guide
Prerequisites
- Node.js >= 20
- pnpm >= 9
- pi >= 0.70 (for testing extensions locally)
- GitHub CLI (
gh) (for catalog sync and gist operations)
Repository Structure
pi-stef/
├── packages/
│ ├── catalog/ # Declarative package manager extension
│ ├── superpowers-adapter/ # Bridges superpowers skill system to pi
│ ├── team/ # Team of role-agents for plan/review/implement
│ ├── agent-workflows/ # Workflow engine primitives (internal)
│ ├── atlassian/ # Jira and Confluence integration
│ ├── figma/ # Figma REST API tools
│ ├── paths/ # Shared path conventions
│ └── web/ # Web search, URL fetch, browser automation
├── scripts/
│ ├── release.mjs # Interactive release script
│ └── lib.mjs # Shared release helpers
├── docs-site/ # VitePress documentation site
└── docs/
└── development.md # This fileThis is a pnpm workspace monorepo. Each package under packages/ is independently versioned and published to npm under the @pi-stef scope.
Getting Started
bash
# Clone the repository
git clone git@github.com:sfiorini/pi-stef.git
cd pi-stef
# Install dependencies
pnpm install
# Run tests across all packages
pnpm test
# Type check all packages
pnpm typecheckTesting
Tests use Vitest. Run them from the repository root:
bash
# Run all tests
pnpm test
# Run tests in watch mode
pnpm test:watch
# Run tests for a specific package
pnpm test -- --reporter=verbose packages/catalogType Checking
TypeScript is configured with project references. Type check from the root:
bash
pnpm typecheckThis runs tsc -b which builds all packages in dependency order and reports type errors.
Release Process
Releases are done locally via the interactive release script:
bash
pnpm releaseThis script:
- Discovers all packages in
packages/ - Prompts you to select a package (or "all")
- Prompts for bump type (patch/minor/major)
- Updates
package.jsonversions and cross-package dependencies - Updates
CHANGELOG.mdwith commit messages since last release - Commits, tags (
@pi-stef/<package>@<version>), and pushes - The GitHub Actions workflow (
.github/workflows/publish.yml) triggers on tag push and publishes to npm
Dry-run mode is available:
bash
pnpm release -- --dry-runDocumentation Site
The documentation site is built with VitePress and deployed to GitHub Pages.
bash
# Preview locally
pnpm docs:preview
# Build for production
pnpm docs:buildThe site is automatically built and deployed when you run pnpm release.
Contributing
- Create a feature branch from
main - Make changes with tests (TDD preferred)
- Run
pnpm testandpnpm typecheck - Commit with conventional commit messages (
feat:,fix:,docs:,chore:) - Push and open a PR