pbi-cli/CONTRIBUTING.md
MinaSaad1 62680dd060 feat: v3.10.3 - opt-in Claude integration, dual-license DLL attribution, new pbi-cli entry point
## Claude Code integration now fully opt-in (Fix 3)
- `pbi connect` no longer writes to ~/.claude/ automatically
- New `pbi-cli` entry point: `pbi-cli skills install/uninstall/list`
- `pbi-cli skills install` shows exact paths before writing and requires y/N confirmation
- `pbi connect` prints a one-line tip if skills are not yet installed
- `pbi skills` subgroup removed from the `pbi` entry point

## DLL licensing compliance (Fix 1)
- pyproject.toml updated to PEP 639 SPDX dual expression:
  MIT AND LicenseRef-Microsoft-AS-Client-Libraries
- license-files declaration: LICENSE, THIRD_PARTY_LICENSES.md, NOTICE
- THIRD_PARTY_LICENSES.md: full verbatim MS Analysis Services Client Libraries EULA
- NOTICE: short-form attribution for wheel redistribution
- src/pbi_cli/dlls/README.md: in-directory sentinel for the MS DLLs
- setuptools requirement bumped to >=77.0 for PEP 639 support

## SECURITY.md rewrite (Fix 2)
- Supported versions table updated to 3.10.x
- Architecture section: no MCP server, no subprocess, direct pythonnet interop
- Global Configuration Modifications section updated to reflect opt-in model
- Bundled Binaries section references THIRD_PARTY_LICENSES.md

## Documentation
- README.md, README.pypi.md: corrected 3-step setup flow
- CHANGELOG.md: [3.10.3] entry
- CONTRIBUTING.md: pbi skills -> pbi-cli skills
- All 7 semantic model SKILL.md files: prerequisites updated to 3-step flow
- New SVG/PNG marketing and documentation assets
2026-04-05 20:37:05 +02:00

2.1 KiB

Contributing to pbi-cli

Thanks for your interest in contributing! Here's how to get started.

Development Setup

git clone https://github.com/MinaSaad1/pbi-cli.git
cd pbi-cli
python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate
pip install -e ".[dev]"

Running Tests

pytest                          # all tests
pytest -x -q                    # stop on first failure
pytest --cov=pbi_cli            # with coverage
pytest -m "not e2e"             # skip integration tests

Code Quality

All checks must pass before submitting a PR:

ruff check src/ tests/          # linting
ruff format --check src/ tests/ # formatting
mypy src/                       # type checking

Pull Request Process

  1. Fork the repo and create a feature branch from master
  2. Write tests for new functionality (target 80%+ coverage)
  3. Ensure all checks pass (ruff, mypy, pytest)
  4. Keep PRs focused on a single change
  5. Use conventional commit messages: feat:, fix:, docs:, test:, chore:

Project Structure

src/pbi_cli/
  commands/       # Click command groups (one file per domain)
  core/           # MCP client, config, output formatting
  skills/         # Claude Code SKILL.md files (bundled)
  utils/          # REPL, helpers
tests/            # Mirrors src/ structure

Adding a New Command Group

  1. Create src/pbi_cli/commands/your_cmd.py
  2. Use run_tool() from _helpers.py for MCP calls
  3. Register the group in main.py _register_commands()
  4. Add tests in tests/test_commands/test_your_cmd.py

Adding a New Skill

  1. Create src/pbi_cli/skills/your-skill/SKILL.md
  2. Follow the frontmatter format from existing skills
  3. Test with pbi-cli skills list and pbi-cli skills install

Reporting Issues

Open an issue on GitHub with:

  • What you expected to happen
  • What actually happened
  • Steps to reproduce
  • Python version and OS

Code of Conduct

Be respectful and constructive. We're all here to make Power BI development better.