Skip to content
Merged
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
87 changes: 87 additions & 0 deletions .claude/commands/create-issue.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
Create a GitHub issue for the robosystems-python-client repository based on the user's input.

## Instructions

1. **Determine Issue Type** - Based on the user's description, determine which type to use:
- **Bug**: Defects or unexpected behavior
- **Task**: Specific, bounded work items that can be completed in one PR
- **Feature**: User-facing feature suggestions
- **Spec**: Features requiring technical design, multiple phases, or architectural changes
- **RFC**: Significant design proposals needing team discussion before implementation

2. **Gather Context** - If the user provides a file path or references existing code:
- Read the relevant files to understand the current implementation
- Check client methods in `/robosystems_client/`
- Review tests in `/tests/`

3. **Draft the Issue** - Use the YAML templates in `.github/ISSUE_TEMPLATE/`:
- `bug.yml` - Include reproduction steps, version info
- `task.yml` - Be specific about scope and acceptance criteria
- `feature.yml` - Simple "I wish I could..." format
- `spec.yml` - Fill in all sections with technical detail
- `rfc.yml` - Comprehensive design with alternatives considered

4. **Sanitize for Public Visibility** - Before creating:
- Remove any internal API details or secrets
- Generalize any sensitive information
- Keep technical implementation details (these are fine to share)

5. **Create the Issue** - Use `gh issue create` with:
- Clear, concise title (no prefixes like [SPEC] - types handle categorization)
- Well-formatted markdown body matching the template structure
- Appropriate metadata labels (see below)

6. **Set Issue Type** - After creation, set the issue type via GraphQL:
```bash
# Get issue ID
gh api graphql -f query='{ repository(owner: "RoboFinSystems", name: "robosystems-python-client") { issue(number: NUMBER) { id } } }'

# Set type (use correct type ID)
gh api graphql -f query='mutation { updateIssue(input: { id: "ISSUE_ID", issueTypeId: "TYPE_ID" }) { issue { number } } }'
```

Issue Type IDs (org-level, shared across repos):
- Task: `IT_kwDODL_jkM4BnUUo`
- Bug: `IT_kwDODL_jkM4BnUUp`
- Feature: `IT_kwDODL_jkM4BnUUq`
- Spec: `IT_kwDODL_jkM4B0XrY`
- RFC: `IT_kwDODL_jkM4B0XrZ`

## Labels

Issue types handle primary categorization. Use labels for metadata.

**Area** (which part of the client):
- `area:client` - Core client functionality
- `area:api` - API method implementations
- `area:types` - Pydantic models and type definitions
- `area:auth` - Authentication handling
- `area:errors` - Error handling
- `area:testing` - Test coverage
- `area:docs` - Documentation
- `area:packaging` - pyproject.toml, releases
- `area:ci-cd` - Workflows, releases

**Priority** (when to do it):
- `priority:critical` - Drop everything
- `priority:high` - Next up
- `priority:low` - Backlog

**Size** (how long):
- `size:small` - < 1 day
- `size:medium` - 1-3 days
- `size:large` - > 3 days

**Status**:
- `blocked` - Waiting on something
- `needs-review` - Ready for review

## Output Format

After creating the issue, provide:
1. The issue URL
2. Brief summary of what was created
3. Issue type and labels applied
4. Any suggested follow-up tasks or related issues to create

$ARGUMENTS
42 changes: 42 additions & 0 deletions .claude/commands/staged-review.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
Review all staged changes (`git diff --cached`) with focus on these contexts:

## Client Implementation Context

**API Methods:**
- Are new methods properly typed with Pydantic models?
- Is error handling consistent?
- Are async/sync variants implemented correctly?

**Type Definitions:**
- Are Pydantic models properly defined?
- Are types properly exported in `__init__.py`?
- Is backwards compatibility maintained?

**Code Quality:**
- Does the code follow existing patterns?
- Is the code properly formatted (ruff)?
- Are type hints complete (basedpyright)?

## Testing Context

- Do new methods have corresponding tests?
- Are edge cases covered?
- Is test coverage maintained?

## Documentation Context

- Is README updated for new features?
- Are docstrings complete?
- Are examples provided for new methods?

## Packaging Context

- Is `pyproject.toml` updated if needed?
- Are dependencies properly specified?

## Output

Provide a summary with:
1. **Issues**: Problems that should be fixed before commit
2. **Suggestions**: Improvements that aren't blocking
3. **Questions**: Anything unclear that needs clarification
20 changes: 20 additions & 0 deletions .claude/commands/test.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
Run `just test-all` and systematically fix all failures to achieve 100% completion.

## Strategy

1. **Run full suite first**: `just test-all` to see the full picture
2. **Fix by module**: When errors exist, use `just test` to iterate faster
3. **Fix in order**: Linting/formatting → Type errors → Test failures
4. **Stop when done**: Once `just test-all` passes completely, stop immediately

## Key Commands

- `just test-all` - Full suite (tests + lint + format + typecheck)
- `just test` - Run pytest
- `just lint fix` - Auto-fix linting issues
- `just format` - Auto-fix formatting
- `just typecheck` - Run basedpyright

## Goal

100% pass rate on `just test-all` with no errors of any kind.
81 changes: 81 additions & 0 deletions .github/ISSUE_TEMPLATE/bug.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: Bug
description: Something isn't working
type: Bug
body:
- type: markdown
attributes:
value: |
Thanks for reporting a bug! Please fill out the details below.

- type: textarea
id: summary
attributes:
label: Summary
description: What's broken?
placeholder: Describe the issue...
validations:
required: true

- type: dropdown
id: impact
attributes:
label: Impact
options:
- Critical
- High
- Medium
- Low
validations:
required: true

- type: textarea
id: version
attributes:
label: Version
description: What version are you using?
placeholder: |
robosystems-client version: x.x.x
Python version: x.x.x
validations:
required: true

- type: textarea
id: steps
attributes:
label: Steps to Reproduce
description: How can we reproduce this?
placeholder: |
1.
2.
3.
validations:
required: true

- type: textarea
id: expected
attributes:
label: Expected Behavior
placeholder: What should happen?
validations:
required: true

- type: textarea
id: actual
attributes:
label: Actual Behavior
placeholder: What actually happens?
validations:
required: true

- type: textarea
id: logs
attributes:
label: Error Messages / Logs
render: shell
placeholder: Paste any relevant error messages or stack traces here

- type: textarea
id: context
attributes:
label: Additional Context
placeholder: Client configuration, environment, workarounds tried...
27 changes: 0 additions & 27 deletions .github/ISSUE_TEMPLATE/bug_report.md

This file was deleted.

5 changes: 5 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Discussion
url: https://github.com/orgs/RoboFinSystems/discussions
about: For questions or general discussion, start a GitHub Discussion instead
34 changes: 34 additions & 0 deletions .github/ISSUE_TEMPLATE/feature.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: Feature
description: I wish I could...
type: Feature
body:
- type: textarea
id: request
attributes:
label: What would you like?
description: A clear description of what you wish you could do.
placeholder: I wish I could...
validations:
required: true

- type: textarea
id: why
attributes:
label: Why?
description: What problem would this solve for you?
placeholder: This would help because...
validations:
required: true

- type: textarea
id: ideas
attributes:
label: Any ideas on how?
description: Optional - if you have thoughts on implementation, share them here.
placeholder: One way to do this might be...

- type: textarea
id: context
attributes:
label: Additional Context
placeholder: Examples, links, or references that help explain the request.
20 changes: 0 additions & 20 deletions .github/ISSUE_TEMPLATE/feature_request.md

This file was deleted.

Loading