Skip to content

Commit 8a22763

Browse files
jfrench9claude
andauthored
Improve issue creation workflow with enhanced documentation and templates (#48)
## Summary This PR enhances the project's issue creation workflow by introducing comprehensive contribution guidelines and refining existing issue templates for better clarity and consistency. ## Key Accomplishments - **Added comprehensive CONTRIBUTING.md**: Introduces detailed guidelines for contributors covering issue creation, pull request processes, and project standards - **Enhanced issue creation documentation**: Updated internal documentation to provide clearer instructions and improved workflow guidance - **Refined issue templates**: Made minor adjustments to feature, RFC, and specification templates to improve consistency and clarity across all issue types - **Improved developer experience**: Streamlined the contribution process with better documentation and standardized templates ## Breaking Changes None - all changes are additive or improve existing functionality without altering core workflows. ## Testing Notes - Verify that all issue templates render correctly in GitHub's issue creation interface - Confirm that the new contributing guidelines are accessible and properly formatted - Test the updated issue creation workflow to ensure improved clarity and usability ## Infrastructure Considerations - The new contributing guidelines establish project standards that should be referenced in onboarding processes - Issue templates now provide more consistent guidance, which may improve issue quality and reduce back-and-forth communication - Documentation updates support better contributor onboarding and project maintenance --- 🤖 Generated with [Claude Code](https://claude.ai/code) **Branch Info:** - Source: `chore/additional-issue-fixes` - Target: `main` - Type: feature Co-Authored-By: Claude <noreply@anthropic.com>
2 parents 4071563 + 16618ce commit 8a22763

File tree

5 files changed

+331
-38
lines changed

5 files changed

+331
-38
lines changed

.claude/commands/create-issue.md

Lines changed: 40 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,32 @@
1-
Create a GitHub issue for the robosystems-python-client repository based on the user's input.
1+
Create a GitHub issue for the current repository based on the user's input.
22

33
## Instructions
44

55
1. **Determine Issue Type** - Based on the user's description, determine which type to use:
66
- **Bug**: Defects or unexpected behavior
77
- **Task**: Specific, bounded work items that can be completed in one PR
8-
- **Feature**: User-facing feature suggestions
9-
- **Spec**: Features requiring technical design, multiple phases, or architectural changes
10-
- **RFC**: Significant design proposals needing team discussion before implementation
8+
- **Feature**: Request a new capability (no design required)
9+
- **RFC**: Propose a design for discussion before implementation (if available)
10+
- **Spec**: Approved implementation plan ready for execution (if available)
11+
12+
Note: Not all repos have RFC/Spec templates. Check `.github/ISSUE_TEMPLATE/` first.
1113

1214
2. **Gather Context** - If the user provides a file path or references existing code:
1315
- Read the relevant files to understand the current implementation
14-
- Check client methods in `/robosystems_client/`
15-
- Review tests in `/tests/`
16+
- Check related configuration files
17+
- Review any referenced documentation
1618

1719
3. **Draft the Issue** - Use the YAML templates in `.github/ISSUE_TEMPLATE/`:
18-
- `bug.yml` - Include reproduction steps, version info
20+
- `bug.yml` - Include reproduction steps, impact, environment
1921
- `task.yml` - Be specific about scope and acceptance criteria
20-
- `feature.yml` - Simple "I wish I could..." format
21-
- `spec.yml` - Fill in all sections with technical detail
22-
- `rfc.yml` - Comprehensive design with alternatives considered
22+
- `feature.yml` - Capture the need and why it matters
23+
- `spec.yml` - Fill in all sections with technical detail (if available)
24+
- `rfc.yml` - Comprehensive design with alternatives considered (if available)
2325

2426
4. **Sanitize for Public Visibility** - Before creating:
25-
- Remove any internal API details or secrets
26-
- Generalize any sensitive information
27+
- Remove any internal pricing, margins, or cost details
28+
- Remove specific customer names or data
29+
- Generalize any sensitive business metrics
2730
- Keep technical implementation details (these are fine to share)
2831

2932
5. **Create the Issue** - Use `gh issue create` with:
@@ -33,34 +36,24 @@ Create a GitHub issue for the robosystems-python-client repository based on the
3336

3437
6. **Set Issue Type** - After creation, set the issue type via GraphQL:
3538
```bash
39+
# Get repo info from current directory
40+
REPO=$(gh repo view --json nameWithOwner -q .nameWithOwner)
41+
OWNER=$(echo $REPO | cut -d'/' -f1)
42+
NAME=$(echo $REPO | cut -d'/' -f2)
43+
3644
# Get issue ID
37-
gh api graphql -f query='{ repository(owner: "RoboFinSystems", name: "robosystems-python-client") { issue(number: NUMBER) { id } } }'
45+
gh api graphql -f query="{ repository(owner: \"$OWNER\", name: \"$NAME\") { issue(number: NUMBER) { id } } }"
46+
47+
# Get available issue types for this repo
48+
gh api graphql -f query="{ repository(owner: \"$OWNER\", name: \"$NAME\") { issueTypes(first: 10) { nodes { id name } } } }"
3849

39-
# Set type (use correct type ID)
50+
# Set type (use correct type ID from above)
4051
gh api graphql -f query='mutation { updateIssue(input: { id: "ISSUE_ID", issueTypeId: "TYPE_ID" }) { issue { number } } }'
4152
```
4253

43-
Issue Type IDs (org-level, shared across repos):
44-
- Task: `IT_kwDODL_jkM4BnUUo`
45-
- Bug: `IT_kwDODL_jkM4BnUUp`
46-
- Feature: `IT_kwDODL_jkM4BnUUq`
47-
- Spec: `IT_kwDODL_jkM4B0XrY`
48-
- RFC: `IT_kwDODL_jkM4B0XrZ`
49-
5054
## Labels
5155

52-
Issue types handle primary categorization. Use labels for metadata.
53-
54-
**Area** (which part of the client):
55-
- `area:client` - Core client functionality
56-
- `area:api` - API method implementations
57-
- `area:types` - Pydantic models and type definitions
58-
- `area:auth` - Authentication handling
59-
- `area:errors` - Error handling
60-
- `area:testing` - Test coverage
61-
- `area:docs` - Documentation
62-
- `area:packaging` - pyproject.toml, releases
63-
- `area:ci-cd` - Workflows, releases
56+
Issue types handle primary categorization. Use labels for metadata (varies by repo):
6457

6558
**Priority** (when to do it):
6659
- `priority:critical` - Drop everything
@@ -76,6 +69,20 @@ Issue types handle primary categorization. Use labels for metadata.
7669
- `blocked` - Waiting on something
7770
- `needs-review` - Ready for review
7871

72+
Check `gh label list` for available labels in the current repo.
73+
74+
## Example Usage
75+
76+
User: "We need to add export functionality"
77+
78+
Response: I'll create a feature issue for export functionality. Let me first understand the current state...
79+
80+
[Read relevant files to understand current implementation]
81+
[Draft issue matching the template structure]
82+
[Create issue with gh issue create]
83+
[Set issue type via GraphQL]
84+
[Add appropriate labels]
85+
7986
## Output Format
8087

8188
After creating the issue, provide:

.github/CONTRIBUTING.md

Lines changed: 286 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,286 @@
1+
# Contributing to RoboSystems Python Client
2+
3+
Thank you for your interest in contributing to the RoboSystems Python Client! This is the official Python SDK for interacting with the RoboSystems API.
4+
5+
## Community
6+
7+
- **[Discussions](https://github.com/orgs/RoboFinSystems/discussions)** - Questions, ideas, and general conversation
8+
- **[Project Board](https://github.com/orgs/RoboFinSystems/projects/3)** - Track work across all RoboSystems repositories
9+
- **[Wiki](https://github.com/RoboFinSystems/robosystems/wiki)** - Architecture docs and guides
10+
11+
## Table of Contents
12+
13+
- [Getting Started](#getting-started)
14+
- [Development Process](#development-process)
15+
- [How to Contribute](#how-to-contribute)
16+
- [Development Setup](#development-setup)
17+
- [Coding Standards](#coding-standards)
18+
- [Testing](#testing)
19+
- [Pull Request Process](#pull-request-process)
20+
- [Publishing](#publishing)
21+
- [Security](#security)
22+
23+
## Getting Started
24+
25+
1. **Fork the repository** on GitHub
26+
2. **Clone your fork** locally:
27+
```bash
28+
git clone https://github.com/YOUR-USERNAME/robosystems-python-client.git
29+
cd robosystems-python-client
30+
```
31+
3. **Add the upstream remote**:
32+
```bash
33+
git remote add upstream https://github.com/RoboFinSystems/robosystems-python-client.git
34+
```
35+
4. **Set up your development environment** (see [Development Setup](#development-setup))
36+
37+
## Development Process
38+
39+
We use GitHub flow for our development process:
40+
41+
1. Create a feature branch from `main`
42+
2. Make your changes in small, atomic commits
43+
3. Write or update tests for your changes
44+
4. Update documentation as needed
45+
5. Create a PR to the `main` branch
46+
47+
### Branch Naming
48+
49+
Use descriptive branch names:
50+
51+
- `feature/add-new-method` - New features
52+
- `bugfix/fix-auth-error` - Bug fixes
53+
- `chore/update-deps` - Maintenance tasks
54+
55+
**Note:** All PRs must target the `main` branch only.
56+
57+
## How to Contribute
58+
59+
### Issue Types
60+
61+
We use issue templates to organize work:
62+
63+
| Type | When to Use |
64+
|------|-------------|
65+
| **Bug** | Defects or unexpected behavior |
66+
| **Task** | Specific, bounded work that fits in one PR |
67+
| **Feature** | Request a new capability (no design required) |
68+
| **RFC** | Propose a design for discussion before implementation |
69+
| **Spec** | Approved implementation plan ready for execution |
70+
71+
### Reporting Bugs
72+
73+
Before creating a bug report, check existing issues to avoid duplicates. Include:
74+
75+
- Steps to reproduce the issue
76+
- Expected vs actual behavior
77+
- SDK version (`pip show robosystems-client`)
78+
- Python version
79+
- Relevant error messages and tracebacks
80+
81+
### First-Time Contributors
82+
83+
Look for issues labeled `good first issue` or `help wanted`. These are great starting points for new contributors.
84+
85+
## Development Setup
86+
87+
### Prerequisites
88+
89+
- Python 3.11+ (check `.python-version`)
90+
- `uv` for package management
91+
- Git configured with your GitHub account
92+
93+
### Local Development Environment
94+
95+
1. **Install uv** (if not already installed):
96+
97+
```bash
98+
curl -LsSf https://astral.sh/uv/install.sh | sh
99+
# Or on macOS: brew install uv
100+
```
101+
102+
2. **Install dependencies**:
103+
104+
```bash
105+
uv sync
106+
```
107+
108+
3. **Run tests**:
109+
110+
```bash
111+
uv run pytest
112+
```
113+
114+
### Environment Configuration
115+
116+
For integration tests, create a `.env` file:
117+
118+
```env
119+
ROBOSYSTEMS_API_KEY=your-api-key
120+
ROBOSYSTEMS_API_URL=https://api.robosystems.ai # or http://localhost:8000 for local
121+
```
122+
123+
## Coding Standards
124+
125+
### Python Code Style
126+
127+
- **Formatter**: Ruff (88 character line length)
128+
- **Linter**: Ruff
129+
- **Type checking**: Pyright/Basedpyright
130+
- **Docstrings**: Google style
131+
132+
Run code quality checks:
133+
134+
```bash
135+
uv run ruff check . # Run linting
136+
uv run ruff check --fix # Auto-fix linting issues
137+
uv run ruff format . # Format code
138+
uv run pyright # Type checking
139+
```
140+
141+
### Commit Messages
142+
143+
Follow the Conventional Commits specification:
144+
145+
```
146+
type(scope): subject
147+
```
148+
149+
Types:
150+
151+
- `feat`: New feature (new method, type, etc.)
152+
- `fix`: Bug fix
153+
- `docs`: Documentation changes
154+
- `refactor`: Code refactoring
155+
- `test`: Test changes
156+
- `chore`: Maintenance tasks
157+
158+
Examples:
159+
160+
```
161+
feat(graphs): add create_graph method
162+
fix(auth): resolve token refresh issue
163+
docs(readme): update usage examples
164+
```
165+
166+
### SDK Design Guidelines
167+
168+
When adding new methods:
169+
170+
- Follow existing naming conventions (snake_case)
171+
- Use Pydantic models for request/response types
172+
- Include comprehensive docstrings with examples
173+
- Add type hints to all functions
174+
- Handle errors with appropriate exception types
175+
176+
## Testing
177+
178+
### Test Requirements
179+
180+
- All new methods must include tests
181+
- Bug fixes should include regression tests
182+
- Tests must pass locally before submitting PR
183+
184+
### Running Tests
185+
186+
```bash
187+
# Run all tests
188+
uv run pytest
189+
190+
# Run with coverage
191+
uv run pytest --cov
192+
193+
# Run specific test file
194+
uv run pytest tests/test_graphs.py
195+
196+
# Run with verbose output
197+
uv run pytest -v
198+
```
199+
200+
## Pull Request Process
201+
202+
### Before Creating a PR
203+
204+
1. **Commit all changes**:
205+
206+
```bash
207+
git add .
208+
git commit -m "feat: your descriptive commit message"
209+
```
210+
211+
2. **Update from upstream**:
212+
213+
```bash
214+
git fetch origin
215+
git rebase origin/main
216+
```
217+
218+
3. **Run all checks locally**:
219+
220+
```bash
221+
uv run ruff check .
222+
uv run ruff format --check .
223+
uv run pytest
224+
```
225+
226+
4. **Push your branch**:
227+
```bash
228+
git push origin your-branch-name
229+
```
230+
231+
### PR Requirements
232+
233+
- All tests must pass
234+
- Code must pass linting and formatting checks
235+
- Must include appropriate documentation updates
236+
- Must be reviewed by at least one maintainer
237+
238+
### Manual PR Creation
239+
240+
```bash
241+
gh pr create --base main --title "Your PR title" --body "Your PR description"
242+
```
243+
244+
## Publishing
245+
246+
This package is published to PyPI as `robosystems-client`. Releases are managed by maintainers:
247+
248+
```bash
249+
# Build the package
250+
uv build
251+
252+
# Publish to PyPI
253+
uv publish
254+
```
255+
256+
**Note:** Only maintainers can publish new versions.
257+
258+
## Security
259+
260+
### Security Vulnerabilities
261+
262+
**DO NOT** create public issues for security vulnerabilities. Instead:
263+
264+
1. Email security@robosystems.ai with details
265+
2. Include steps to reproduce if possible
266+
3. Allow time for the issue to be addressed before public disclosure
267+
268+
### Security Best Practices
269+
270+
- Never commit API keys or secrets
271+
- Never log sensitive data
272+
- Validate inputs before sending to API
273+
- Keep dependencies up to date
274+
275+
## Questions and Support
276+
277+
- **[GitHub Discussions](https://github.com/orgs/RoboFinSystems/discussions)** - Best place for questions and community conversation
278+
- **[GitHub Issues](https://github.com/RoboFinSystems/robosystems-python-client/issues)** - Bug reports and feature requests for this repo
279+
- **[API Reference](https://api.robosystems.ai/docs)** - Backend API documentation
280+
- **Email**: security@robosystems.ai for security issues only
281+
282+
## Recognition
283+
284+
Contributors will be recognized in our [Contributors](https://github.com/RoboFinSystems/robosystems-python-client/graphs/contributors) page.
285+
286+
Thank you for contributing to RoboSystems Python Client!

0 commit comments

Comments
 (0)