fix: Complete fix for Issue #219 - All three problems resolved
**Problem #1: Large File Encoding Error** ✅ FIXED - Add large file download support via download_url - Detect encoding='none' for files >1MB - Download via GitHub raw URL instead of API - Handles ccxt/ccxt's 1.4MB CHANGELOG.md successfully **Problem #2: Missing CLI Enhancement Flags** ✅ FIXED - Add --enhance, --enhance-local, --api-key to main.py github_parser - Add flag forwarding in CLI dispatcher - Fixes 'unrecognized arguments' error - Users can now use: skill-seekers github --repo owner/repo --enhance-local **Problem #3: Custom API Endpoint Support** ✅ FIXED - Support ANTHROPIC_BASE_URL environment variable - Support ANTHROPIC_AUTH_TOKEN (alternative to ANTHROPIC_API_KEY) - Fix ThinkingBlock.text error with newer Anthropic SDK - Find TextBlock in response content array (handles thinking blocks) **Changes**: - src/skill_seekers/cli/enhance_skill.py: - Support custom base_url parameter - Support both ANTHROPIC_API_KEY and ANTHROPIC_AUTH_TOKEN - Iterate through content blocks to find text (handles ThinkingBlock) - src/skill_seekers/cli/main.py: - Add --enhance, --enhance-local, --api-key to github_parser - Forward flags to github_scraper.py in dispatcher - src/skill_seekers/cli/github_scraper.py: - Add large file detection (encoding=None/"none") - Download via download_url with requests - Log file size and download progress - tests/test_github_scraper.py: - Add test_get_file_content_large_file - Add test_extract_changelog_large_file - All 31 tests passing ✅ **Credits**: - Thanks to @XGCoder for detailed bug report - Thanks to @gorquan for local fixes and guidance Fixes #219 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -41,15 +41,24 @@ class SkillEnhancer:
|
||||
self.references_dir = self.skill_dir / "references"
|
||||
self.skill_md_path = self.skill_dir / "SKILL.md"
|
||||
|
||||
# Get API key
|
||||
self.api_key = api_key or os.environ.get('ANTHROPIC_API_KEY')
|
||||
# Get API key - support both ANTHROPIC_API_KEY and ANTHROPIC_AUTH_TOKEN
|
||||
self.api_key = (api_key or
|
||||
os.environ.get('ANTHROPIC_API_KEY') or
|
||||
os.environ.get('ANTHROPIC_AUTH_TOKEN'))
|
||||
if not self.api_key:
|
||||
raise ValueError(
|
||||
"No API key provided. Set ANTHROPIC_API_KEY environment variable "
|
||||
"or use --api-key argument"
|
||||
"No API key provided. Set ANTHROPIC_API_KEY or ANTHROPIC_AUTH_TOKEN "
|
||||
"environment variable or use --api-key argument"
|
||||
)
|
||||
|
||||
self.client = anthropic.Anthropic(api_key=self.api_key)
|
||||
# Support custom base URL for alternative API endpoints
|
||||
base_url = os.environ.get('ANTHROPIC_BASE_URL')
|
||||
client_kwargs = {'api_key': self.api_key}
|
||||
if base_url:
|
||||
client_kwargs['base_url'] = base_url
|
||||
print(f"ℹ️ Using custom API base URL: {base_url}")
|
||||
|
||||
self.client = anthropic.Anthropic(**client_kwargs)
|
||||
|
||||
def read_current_skill_md(self):
|
||||
"""Read existing SKILL.md"""
|
||||
@@ -77,7 +86,18 @@ class SkillEnhancer:
|
||||
}]
|
||||
)
|
||||
|
||||
enhanced_content = message.content[0].text
|
||||
# Handle response content - newer SDK versions may include ThinkingBlock
|
||||
# Find the TextBlock containing the actual response
|
||||
enhanced_content = None
|
||||
for block in message.content:
|
||||
if hasattr(block, 'text'):
|
||||
enhanced_content = block.text
|
||||
break
|
||||
|
||||
if not enhanced_content:
|
||||
print("❌ Error: No text content found in API response")
|
||||
return None
|
||||
|
||||
return enhanced_content
|
||||
|
||||
except Exception as e:
|
||||
|
||||
Reference in New Issue
Block a user