feat: add optional claude name and email for git
This commit is contained in:
@@ -65,3 +65,10 @@ When adding new MCP tools:
|
||||
2. **Expose to Claude**: Add the tool name to `BASE_ALLOWED_TOOLS` array in `src/create-prompt/index.ts`
|
||||
3. **Tool Naming**: Follow the pattern `mcp__server_name__tool_name` (e.g., `mcp__local_git_ops__checkout_branch`)
|
||||
4. **Documentation**: Update the prompt's "What You CAN Do" section if the tool adds new capabilities
|
||||
|
||||
## Feature Development Reminders
|
||||
|
||||
When implementing new features that add action inputs, configuration options, or capabilities:
|
||||
1. Always update README.md to document new inputs in the inputs table
|
||||
2. Update example workflows to show how new inputs can be used
|
||||
3. Add appropriate defaults and descriptions to action.yml
|
||||
|
||||
@@ -64,12 +64,14 @@ jobs:
|
||||
with:
|
||||
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
|
||||
gitea_token: ${{ secrets.GITEA_TOKEN }}
|
||||
claude_git_name: Claude # optional
|
||||
claude_git_email: claude@anthropic.com # optional
|
||||
```
|
||||
|
||||
## Inputs
|
||||
|
||||
| Input | Description | Required | Default |
|
||||
| --------------------- | ------------------------------------------------------------------------------------------------------------------- | -------- | --------- |
|
||||
| --------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -------- | --------- |
|
||||
| `anthropic_api_key` | Anthropic API key (required for direct API, not needed for Bedrock/Vertex). Set to 'use-oauth' when using claude_credentials | No\* | - |
|
||||
| `claude_credentials` | Claude OAuth credentials JSON for Claude AI Max subscription authentication | No | - |
|
||||
| `direct_prompt` | Direct prompt for Claude to execute automatically without needing a trigger (for automated workflows) | No | - |
|
||||
@@ -84,6 +86,8 @@ jobs:
|
||||
| `custom_instructions` | Additional custom instructions to include in the prompt for Claude | No | "" |
|
||||
| `assignee_trigger` | The assignee username that triggers the action (e.g. @claude). Only used for issue assignment | No | - |
|
||||
| `trigger_phrase` | The trigger phrase to look for in comments, issue/PR bodies, and issue titles | No | `@claude` |
|
||||
| `claude_git_name` | Git user.name for commits made by Claude | No | `Claude` |
|
||||
| `claude_git_email` | Git user.email for commits made by Claude | No | `claude@anthropic.com` |
|
||||
|
||||
\*Required when using direct Anthropic API (default and when not using Bedrock or Vertex)
|
||||
|
||||
@@ -96,6 +100,7 @@ This action supports authentication using Claude Max OAuth credentials. This all
|
||||
### Setup
|
||||
|
||||
1. **Get OAuth Credentials**: Use Claude Code to generate OAuth credentials:
|
||||
|
||||
```
|
||||
/auth-setup
|
||||
```
|
||||
@@ -107,7 +112,7 @@ This action supports authentication using Claude Max OAuth credentials. This all
|
||||
```yaml
|
||||
- uses: anthropics/claude-code-action@beta
|
||||
with:
|
||||
anthropic_api_key: 'use-oauth'
|
||||
anthropic_api_key: "use-oauth"
|
||||
claude_credentials: ${{ secrets.CLAUDE_CREDENTIALS }}
|
||||
gitea_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
```
|
||||
|
||||
12
action.yml
12
action.yml
@@ -63,6 +63,14 @@ inputs:
|
||||
description: "Timeout in minutes for execution"
|
||||
required: false
|
||||
default: "30"
|
||||
claude_git_name:
|
||||
description: "Git user.name for commits made by Claude"
|
||||
required: false
|
||||
default: "Claude"
|
||||
claude_git_email:
|
||||
description: "Git user.email for commits made by Claude"
|
||||
required: false
|
||||
default: "claude@anthropic.com"
|
||||
|
||||
outputs:
|
||||
execution_file:
|
||||
@@ -134,6 +142,10 @@ runs:
|
||||
GITHUB_TOKEN: ${{ steps.prepare.outputs.GITHUB_TOKEN }}
|
||||
GITEA_API_URL: ${{ env.GITHUB_SERVER_URL }}
|
||||
|
||||
# Git configuration
|
||||
CLAUDE_GIT_NAME: ${{ inputs.claude_git_name }}
|
||||
CLAUDE_GIT_EMAIL: ${{ inputs.claude_git_email }}
|
||||
|
||||
# Provider configuration (for future cloud provider support)
|
||||
ANTHROPIC_BASE_URL: ${{ env.ANTHROPIC_BASE_URL }}
|
||||
AWS_REGION: ${{ env.AWS_REGION }}
|
||||
|
||||
@@ -20,16 +20,20 @@ interface ClaudeCredentialsInput {
|
||||
export async function setupOAuthCredentials(credentialsJson: string) {
|
||||
try {
|
||||
// Parse the credentials JSON
|
||||
const parsedCredentials: ClaudeCredentialsInput = JSON.parse(credentialsJson);
|
||||
const parsedCredentials: ClaudeCredentialsInput =
|
||||
JSON.parse(credentialsJson);
|
||||
|
||||
if (!parsedCredentials.claudeAiOauth) {
|
||||
throw new Error("Invalid credentials format: missing claudeAiOauth");
|
||||
}
|
||||
|
||||
const { accessToken, refreshToken, expiresAt } = parsedCredentials.claudeAiOauth;
|
||||
const { accessToken, refreshToken, expiresAt } =
|
||||
parsedCredentials.claudeAiOauth;
|
||||
|
||||
if (!accessToken || !refreshToken || !expiresAt) {
|
||||
throw new Error("Invalid credentials format: missing required OAuth fields");
|
||||
throw new Error(
|
||||
"Invalid credentials format: missing required OAuth fields",
|
||||
);
|
||||
}
|
||||
|
||||
const claudeDir = join(homedir(), ".claude");
|
||||
|
||||
@@ -28,7 +28,9 @@ async function run() {
|
||||
|
||||
if (claudeCredentials && anthropicApiKey === "use-oauth") {
|
||||
await setupOAuthCredentials(claudeCredentials);
|
||||
console.log("OAuth credentials configured for Claude AI Max subscription");
|
||||
console.log(
|
||||
"OAuth credentials configured for Claude AI Max subscription",
|
||||
);
|
||||
}
|
||||
|
||||
// Step 2: Setup GitHub token
|
||||
|
||||
@@ -60,15 +60,18 @@ function runGitCommand(command: string): string {
|
||||
|
||||
// Helper function to ensure git user is configured
|
||||
function ensureGitUserConfigured(): void {
|
||||
const gitName = process.env.CLAUDE_GIT_NAME || "Claude";
|
||||
const gitEmail = process.env.CLAUDE_GIT_EMAIL || "claude@anthropic.com";
|
||||
|
||||
try {
|
||||
// Check if user.email is already configured
|
||||
runGitCommand("git config user.email");
|
||||
console.log(`[LOCAL-GIT-MCP] Git user.email already configured`);
|
||||
} catch (error) {
|
||||
console.log(
|
||||
`[LOCAL-GIT-MCP] Git user.email not configured, setting default`,
|
||||
`[LOCAL-GIT-MCP] Git user.email not configured, setting to: ${gitEmail}`,
|
||||
);
|
||||
runGitCommand('git config user.email "claude@anthropic.com"');
|
||||
runGitCommand(`git config user.email "${gitEmail}"`);
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -77,9 +80,9 @@ function ensureGitUserConfigured(): void {
|
||||
console.log(`[LOCAL-GIT-MCP] Git user.name already configured`);
|
||||
} catch (error) {
|
||||
console.log(
|
||||
`[LOCAL-GIT-MCP] Git user.name not configured, setting default`,
|
||||
`[LOCAL-GIT-MCP] Git user.name not configured, setting to: ${gitName}`,
|
||||
);
|
||||
runGitCommand('git config user.name "Claude"');
|
||||
runGitCommand(`git config user.name "${gitName}"`);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user