Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
name: Bug Report
description: Report a bug in ChainWeaver
title: "[Bug]: "
labels: ["bug"]
body:
Comment on lines +1 to +5
Copy link

Copilot AI Mar 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR is marked as closing #41, but #41's definition of done includes adding .github/ISSUE_TEMPLATE/config.yml (e.g., to control blank_issues_enabled). That file isn't included in this PR; either add it or update the PR description/issue linkage so the closure is accurate.

Copilot uses AI. Check for mistakes.
- type: textarea
id: description
attributes:
label: Description
description: A clear description of the bug.
validations:
required: true

- type: textarea
id: steps
attributes:
label: Steps to Reproduce
description: Steps to reproduce the behavior.
placeholder: |
1. Create a flow with ...
2. Run ...
3. See error
validations:
required: true

- type: textarea
id: expected
attributes:
label: Expected Behavior
description: What you expected to happen.
validations:
required: true

- type: textarea
id: actual
attributes:
label: Actual Behavior
description: What actually happened.
validations:
required: true

- type: dropdown
id: python-version
attributes:
label: Python Version
options:
- "3.10"
- "3.11"
- "3.12"
- "3.13"
validations:
required: true

- type: input
id: chainweaver-version
attributes:
label: ChainWeaver Version
placeholder: e.g. 0.1.0
validations:
required: true

- type: textarea
id: context
attributes:
label: Additional Context
description: Any other context about the problem (logs, screenshots, etc.).
validations:
required: false
36 changes: 36 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Feature Request
description: Suggest a new feature or enhancement
title: "[Feature]: "
labels: ["enhancement"]
body:
- type: textarea
id: problem
attributes:
label: Problem Statement
description: What problem does this feature solve?
validations:
required: true

- type: textarea
id: solution
attributes:
label: Proposed Solution
description: Describe the solution you'd like.
validations:
required: true
Comment on lines +6 to +20
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Issue #41 specifies separate "Description" and "Use case" fields. This collapses them into "Problem Statement" (L9). Also "Proposed Solution" is required: true (L20) but the spec says optional. Consider aligning with the issue spec.


Comment on lines +14 to +21
Copy link

Copilot AI Mar 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Issue #41 specifies the feature request form should have an optional proposed-solution field, but this form currently makes Proposed Solution required. Consider making it optional so reporters can submit a request even when they don't have a concrete solution yet.

Copilot uses AI. Check for mistakes.
- type: textarea
id: alternatives
attributes:
label: Alternatives Considered
description: Any alternative solutions or features you've considered.
validations:
required: false

- type: textarea
id: context
attributes:
label: Additional Context
description: Any other context or screenshots.
validations:
required: false
21 changes: 21 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
## Summary


## Changes

-

## Testing

- [ ] All existing tests pass (`pytest`)
- [ ] New tests added for new functionality
- [ ] Linting passes (`ruff check`)
Copy link

Copilot AI Mar 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CI also checks formatting with ruff format --check in addition to ruff check. Consider adding an explicit formatting checklist item (and/or clarifying the exact command/paths) so the PR template matches the checks contributors will see in CI.

Suggested change
- [ ] Linting passes (`ruff check`)
- [ ] Linting passes (`ruff check`)
- [ ] Formatting passes (`ruff format --check`)

Copilot uses AI. Check for mistakes.
- [ ] Type checking passes (`mypy`)
Copy link

Copilot AI Mar 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The template asks for mypy to pass, but mypy is not part of the repo's .[dev] dependencies, and CI doesn't run it. Either add mypy to the dev extra/CI, or remove/soften this checklist item so contributors aren't required to run a tool that isn't provided by the project.

Suggested change
- [ ] Type checking passes (`mypy`)
- [ ] Type checking passes (e.g., `mypy`, if configured)

Copilot uses AI. Check for mistakes.

## Related Issues


## Checklist
- [ ] Code follows project conventions (see `.github/copilot-instructions.md`)
- [ ] Public API changes are documented
- [ ] No secrets or credentials included
67 changes: 67 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# Contributing to ChainWeaver

Thank you for your interest in contributing to ChainWeaver! This guide covers how to get started.

## Getting Started

1. **Fork** the repository and clone your fork:
```bash
git clone https://github.com/<your-username>/ChainWeaver.git
cd ChainWeaver
```

2. **Install dependencies** (requires Python 3.10+):
```bash
pip install -e ".[dev]"
```

3. **Create a branch** from `main`:
```bash
git checkout -b your-feature-branch
```

## Development Workflow

### Code Style

- Follow existing project conventions (see `.github/copilot-instructions.md`)
- Use [ruff](https://github.com/astral-sh/ruff) for linting: `ruff check .`
Copy link

Copilot AI Mar 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CI runs Ruff on specific paths and also enforces formatting with ruff format --check (see .github/workflows/ci.yml). Consider updating these commands to match CI (e.g., include formatting check and align the lint target paths) so contributors can reproduce CI results locally.

Suggested change
- Use [ruff](https://github.com/astral-sh/ruff) for linting: `ruff check .`
- Use [ruff](https://github.com/astral-sh/ruff) for linting and formatting (mirroring the CI configuration in `.github/workflows/ci.yml`):
```bash
ruff check src tests
ruff format --check src tests

Copilot uses AI. Check for mistakes.
- Use [mypy](https://mypy-lang.org/) for type checking: `mypy .`
Copy link

Copilot AI Mar 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mypy is listed as a required/expected type-checking tool, but it is not included in the project's dev extra in pyproject.toml. Either add mypy to [project.optional-dependencies].dev (and ideally CI) or adjust this guidance so contributors following pip install -e ".[dev]" aren't blocked by a missing tool.

Suggested change
- Use [mypy](https://mypy-lang.org/) for type checking: `mypy .`
- (Optional but recommended) Use [mypy](https://mypy-lang.org/) for type checking: `mypy .` (install with `pip install mypy` if it is not already available)

Copilot uses AI. Check for mistakes.

Comment on lines +28 to +30
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two minor items:

### Testing

- Run the test suite before submitting:
```bash
pytest
Copy link

Copilot AI Mar 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Local test instructions use pytest, while CI runs python -m pytest tests/ -v. Since this guide is meant to help contributors preflight CI, consider matching the CI invocation (including tests/ and -v) to reduce surprises.

Suggested change
pytest
python -m pytest tests/ -v

Copilot uses AI. Check for mistakes.
```
- Add tests for any new functionality
- Ensure all existing tests still pass

### Commit Messages

Use clear, descriptive commit messages:
- `fix: resolve edge case in flow compilation`
- `feat: add retry logic to tool execution`
- `docs: update quickstart guide`

## Submitting a Pull Request

1. Push your branch to your fork
2. Open a PR against `main` on the upstream repository
3. Fill out the PR template completely
4. Link any related issues (e.g., `Closes #41`)
5. Wait for CI checks to pass and a maintainer review

## Reporting Issues

- Use the **Bug Report** or **Feature Request** issue templates
- Include reproduction steps and version information
- Search existing issues before creating a new one

## Code of Conduct

Be respectful and constructive. We're all here to build something great together.

---

Thank you for contributing! 🎉