Thank you for your interest in contributing to the CapiscIO CLI wrapper! This repository is capiscio-node, and the published npm package name is capiscio.
!!! note "Where the binaries come from"
This project downloads the capiscio-core GitHub Release binaries at runtime. Core binaries are published from https://github.com/capiscio/capiscio-core.
- Fork the repository
- Clone your fork:
git clone https://github.com/your-username/capiscio-node.git - Install dependencies:
npm install - Create a feature branch:
git checkout -b feature/your-feature-name - Make your changes
- Run tests:
npm test - Submit a pull request
Our release process uses GitHub Actions workflows to automate binary building and package publishing. Here's how it works:
We use a draft-first approach to handle GitHub's immutable release limitation:
- Create Draft Release → Binary workflow triggers and uploads assets
- Publish Release → NPM and PyPI workflows trigger and publish packages
- Update version in
package.json:
npm version patch # or minor/major-
Update version in
python-package/pyproject.tomlto match -
Commit and push changes:
git add .
git commit -m "chore: bump version to v1.x.x"
git push origin main- Go to GitHub Releases
- Click "Create a new release"
- Important: Create as Draft (do not publish yet)
- Set tag version (e.g.,
v1.2.3) - Set release title (e.g.,
v1.2.3) - Add release notes
- Click "Save draft" (NOT "Publish release")
- The Build and Release Binaries workflow will trigger automatically
- Monitor the Actions tab
- Wait for all binaries to be built and uploaded (~10-15 minutes)
- Verify assets appear in the draft release:
capiscio-linux-x64.tar.gzcapiscio-darwin-x64.tar.gzcapiscio-darwin-arm64.tar.gzcapiscio-win-x64.execapiscio-win-arm64.exe
- Once all binaries are uploaded, go back to the draft release
- Click "Edit" and then "Publish release"
- This will trigger the Release and Build and Publish Python Package workflows
- Monitor these workflows to ensure NPM and PyPI publishing succeed
- Never publish a release before binaries are uploaded - GitHub releases become immutable once published
- Always use draft releases first - This allows binary uploads before the release becomes immutable
- Monitor all workflows - Ensure each step completes successfully before proceeding
- This happens if you publish the release before binaries are uploaded
- Solution: Delete the release, create a new draft, wait for binaries, then publish
- Check the Actions logs for specific errors
- Solution: Fix the issue and create a new release
- Node.js 16 or higher
- npm 7 or higher
- Git
git clone https://github.com/capiscio/capiscio-node.git
cd capiscio-node
npm installnpm run build- Build the CLI for productionnpm run dev- Development build with watch modenpm test- Run testsnpm run test:watch- Run tests in watch modenpm run lint- Lint code with ESLintnpm run type-check- Type check with TypeScript
- We use TypeScript for type safety
- ESLint and Prettier for code formatting
- Follow existing code patterns and conventions
- Add JSDoc comments for public APIs
- Write tests for new features
- Maintain or improve test coverage
- Run
npm testbefore submitting - Add integration tests for CLI commands
- Update documentation if needed
- Add tests for new functionality
- Ensure all tests pass
- Update CHANGELOG.md if applicable
- Submit a clear pull request description
When reporting bugs, please include:
- Node.js version
- Operating system
- Steps to reproduce
- Expected vs actual behavior
- Sample agent card (if applicable)
We welcome feature suggestions! Please:
- Check existing issues first
- Clearly describe the use case
- Provide examples if possible
- Consider implementation complexity
By contributing, you agree that your contributions will be licensed under the MIT License.