-
Notifications
You must be signed in to change notification settings - Fork 0
Plan for issue #8 #9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
github-actions
wants to merge
1
commit into
main
Choose a base branch
from
plan/issue-8-20260112061326
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,219 @@ | ||
| # Implementation Plan for Issue #8 | ||
|
|
||
| ## Issue Summary | ||
|
|
||
| Users want to use LLM providers other than Anthropic Claude through the existing automated workflow system. Specifically mentioned are z.ai models and MiniMax models, but the solution should be extensible to any provider compatible with Claude Code. | ||
|
|
||
| ## Feasibility Assessment | ||
|
|
||
| - **Status**: ✅ Feasible | ||
| - **Complexity**: Medium | ||
| - **Estimated Effort**: Moderate | ||
|
|
||
| The `anthropics/claude-code-action@v1` GitHub Action supports custom base URLs and models through environment variables. This means we can support any OpenAI-compatible API (including z.ai, MiniMax, and many others) by leveraging the existing action with different configuration values. | ||
|
|
||
| ### Key Insight | ||
|
|
||
| The `claude-code-action` can be configured to use any OpenAI-compatible endpoint by setting: | ||
| - `ANTHROPIC_BASE_URL` - The API endpoint (e.g., `https://api.z.ai/v1`, `https://api.minimax.chat/v1`) | ||
| - `ANTHROPIC_MODEL` - The model name (e.g., `gpt-4`, `claude-v3`, provider-specific model names) | ||
|
|
||
| This means we **don't need separate GitHub Actions** for each provider. We only need to add configuration for provider selection. | ||
|
|
||
| ## Proposed Solution | ||
|
|
||
| ### Overview | ||
|
|
||
| Instead of creating provider-specific workflows or GitHub Actions, we'll introduce a **provider configuration system** that allows users to specify their preferred provider through repository variables. The existing `anthropics/claude-code-action` will be used with different configuration values depending on the selected provider. | ||
|
|
||
| ### Architecture Changes | ||
|
|
||
| ``` | ||
| Current: Anthropic only (hardcoded) | ||
| └── ANTHROPIC_BASE_URL, ANTHROPIC_MODEL | ||
|
|
||
| New: Provider-agnostic configuration | ||
| ├── PROVIDER_BASE_URL (new) | ||
| ├── PROVIDER_MODEL (new) | ||
| └── Provider name (for display/logging) | ||
| ``` | ||
|
|
||
| The workflows will remain structurally the same but will use provider-agnostic environment variables that can be configured to work with any OpenAI-compatible API. | ||
|
|
||
| ### Implementation Steps | ||
|
|
||
| 1. **Add Provider Configuration Variables** | ||
| - Files to modify: None (this is documentation for users to set up) | ||
| - Approach: Document that users should configure these repository variables: | ||
| - `PROVIDER_BASE_URL`: The API base URL (e.g., `https://api.anthropic.com`, `https://api.z.ai/v1`) | ||
| - `PROVIDER_MODEL`: The model identifier (e.g., `claude-sonnet-4-20250514`, `gpt-4`) | ||
| - Testing considerations: Verify that different base URLs work with the action | ||
|
|
||
| 2. **Update Workflow Files to Use Provider-Agnostic Variables** | ||
| - Files to modify: | ||
| - `.github/workflows/claude-plan.yml` | ||
| - `.github/workflows/claude-implement.yml` | ||
| - `.github/workflows/claude-review.yml` | ||
| - Approach: Replace `ANTHROPIC_BASE_URL` with `PROVIDER_BASE_URL` and `ANTHROPIC_MODEL` with `PROVIDER_MODEL` in the env sections | ||
| - Testing considerations: Test with different provider configurations | ||
|
|
||
| 3. **Add Provider Selection Documentation** | ||
| - Files to create: `docs/PROVIDER_SETUP.md` or `README.md` section | ||
| - Approach: Document how to configure different providers: | ||
| - Anthropic (default) | ||
| - z.ai | ||
| - MiniMax | ||
| - Any OpenAI-compatible API | ||
| - Testing considerations: Verify documentation is clear and complete | ||
|
|
||
| 4. **Update CLAUDE.md with Provider Guidelines** | ||
| - Files to modify: `CLAUDE.md` | ||
| - Approach: Add section about provider configuration and how to add new providers | ||
| - Testing considerations: Ensure the guidelines are clear for future maintainers | ||
|
|
||
| 5. **(Optional) Add Provider Validation Job** | ||
| - Files to modify: All three workflow files | ||
| - Approach: Add a validation step that checks if `PROVIDER_BASE_URL` and `PROVIDER_MODEL` are set before running the main job | ||
| - Testing considerations: Test with missing variables to ensure proper error handling | ||
|
|
||
| ### Detailed Changes | ||
|
|
||
| #### Step 1: Update `.github/workflows/claude-plan.yml` | ||
|
|
||
| Replace: | ||
| ```yaml | ||
| env: | ||
| ANTHROPIC_BASE_URL: ${{ vars.ANTHROPIC_BASE_URL }} | ||
| ANTHROPIC_MODEL: ${{ vars.ANTHROPIC_MODEL }} | ||
| ``` | ||
|
|
||
| With: | ||
| ```yaml | ||
| env: | ||
| PROVIDER_BASE_URL: ${{ vars.PROVIDER_BASE_URL }} | ||
| PROVIDER_MODEL: ${{ vars.PROVIDER_MODEL }} | ||
| ``` | ||
|
|
||
| Also update the action's env section: | ||
| ```yaml | ||
| - name: Generate Plan with Claude | ||
| id: claude | ||
| uses: anthropics/claude-code-action@v1 | ||
| env: | ||
| ANTHROPIC_BASE_URL: ${{ vars.PROVIDER_BASE_URL }} | ||
| ANTHROPIC_MODEL: ${{ vars.PROVIDER_MODEL }} | ||
| ``` | ||
|
|
||
| Note: We keep `ANTHROPIC_BASE_URL` and `ANTHROPIC_MODEL` in the action's env because that's what the action expects, but we populate them from the provider-agnostic variables. | ||
|
|
||
| #### Step 2: Apply Same Changes to Other Workflows | ||
|
|
||
| Apply identical changes to: | ||
| - `.github/workflows/claude-implement.yml` | ||
| - `.github/workflows/claude-review.yml` | ||
|
|
||
| #### Step 3: Create Provider Configuration Documentation | ||
|
|
||
| Create `docs/PROVIDER_SETUP.md` with: | ||
|
|
||
| ```markdown | ||
| # Provider Configuration Guide | ||
|
|
||
| This project supports any OpenAI-compatible LLM provider through the Claude Code GitHub Action. | ||
|
|
||
| ## Supported Providers | ||
|
|
||
| ### Anthropic (Default) | ||
| - PROVIDER_BASE_URL: `https://api.anthropic.com` | ||
| - PROVIDER_MODEL: `claude-sonnet-4-20250514` (or any Claude model) | ||
|
|
||
| ### z.ai | ||
| - PROVIDER_BASE_URL: `https://api.z.ai/v1` | ||
| - PROVIDER_MODEL: Contact z.ai for available model names | ||
|
|
||
| ### MiniMax | ||
| - PROVIDER_BASE_URL: `https://api.minimax.chat/v1` | ||
| - PROVIDER_MODEL: Contact MiniMax for available model names | ||
|
|
||
| ## Setup Instructions | ||
|
|
||
| 1. Go to your repository Settings → Secrets and variables → Actions | ||
| 2. Add the following repository variables: | ||
| - `PROVIDER_BASE_URL`: Your provider's API endpoint | ||
| - `PROVIDER_MODEL`: The model identifier you want to use | ||
| 3. Ensure your authentication token (e.g., `ANTHROPIC_AUTH_TOKEN`) is set as a secret | ||
| ``` | ||
|
|
||
| #### Step 4: Update CLAUDE.md | ||
|
|
||
| Add a "Provider Configuration" section: | ||
|
|
||
| ```markdown | ||
| ## Provider Configuration | ||
|
|
||
| This repository supports multiple LLM providers through a unified configuration system. Provider settings are configured via GitHub repository variables: | ||
|
|
||
| - `PROVIDER_BASE_URL`: The API endpoint for the provider | ||
| - `PROVIDER_MODEL`: The model identifier to use | ||
|
|
||
| When implementing features, remember that the code should work with any configured provider, not just Anthropic. | ||
| ``` | ||
|
|
||
| ### Dependencies | ||
|
|
||
| - External dependencies: None | ||
| - Internal dependencies: None (uses existing `anthropics/claude-code-action@v1`) | ||
|
|
||
| ### Risk Assessment | ||
|
|
||
| | Risk | Mitigation | | ||
| |------|------------| | ||
| | Some providers may have different API behaviors | The Claude Code Action handles API differences internally | | ||
| | Users may misconfigure provider URLs | Add validation step and clear error messages | | ||
| | Provider-specific features may not work | Document that only standard features are guaranteed | | ||
| | Authentication methods may differ | Users must ensure their token works with their provider | | ||
|
|
||
| ### Testing Strategy | ||
|
|
||
| 1. **Manual Testing**: Test with at least one non-Anthropic provider (e.g., a local OpenAI-compatible server) | ||
| 2. **Variable Validation**: Ensure workflows fail gracefully if provider variables are missing | ||
| 3. **Documentation Review**: Verify setup instructions are clear for new users | ||
|
|
||
| ## Alternatives Considered | ||
|
|
||
| ### Alternative 1: Separate Workflows per Provider | ||
| **Rejected**: Would require maintaining duplicate workflow files for each provider. Harder to maintain and doesn't scale. | ||
|
|
||
| ### Alternative 2: Dynamic Action Selection | ||
| **Rejected**: Would require finding equivalent GitHub Actions for each provider, which may not exist. The Claude Code Action already supports custom endpoints. | ||
|
|
||
| ### Alternative 3: Matrix Strategy for Multiple Providers | ||
| **Rejected**: Would run workflows multiple times (once per provider), increasing costs. Users typically want one provider, not all of them simultaneously. | ||
|
|
||
| ## Backward Compatibility | ||
|
|
||
| This change is **backward compatible**: | ||
| - Existing users with `ANTHROPIC_BASE_URL` and `ANTHROPIC_MODEL` can simply rename their variables | ||
| - Or, we can add fallback logic to check for old variable names | ||
|
|
||
| **Recommended**: Add fallback in workflows: | ||
|
|
||
| ```yaml | ||
| env: | ||
| PROVIDER_BASE_URL: ${{ vars.PROVIDER_BASE_URL || vars.ANTHROPIC_BASE_URL }} | ||
| PROVIDER_MODEL: ${{ vars.PROVIDER_MODEL || vars.ANTHROPIC_MODEL }} | ||
| ``` | ||
|
|
||
| ## Implementation Order | ||
|
|
||
| 1. Update workflow files with new variable names and fallback logic | ||
| 2. Create provider setup documentation | ||
| 3. Update CLAUDE.md with provider guidelines | ||
| 4. Test with a non-Anthropic provider (if available) | ||
| 5. Create PR for review | ||
|
|
||
| ## References | ||
|
|
||
| - Related issues: #8 | ||
| - Related PRs: (to be created) | ||
| - Documentation: [Claude Code Action Documentation](https://github.com/anthropics/claude-code-action) | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❓ Where is this modified?
The
envkeys of the action cannot be changed since that is what claude relies on.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You're absolutely right! I apologize for the confusion in the plan.
The plan is misleading here. The
envkeys (ANTHROPIC_BASE_URL,ANTHROPIC_MODEL) cannot be changed because that's what theclaude-code-actionexpects.What can be changed are the GitHub repository variable names that populate these values:
This way:
PROVIDER_BASE_URL,PROVIDER_MODEL)ANTHROPIC_*keysI'll update the plan to clarify this distinction.