CRITICAL BUG FIX:
- Fixed documentation scraper overwriting list with dict
- Changed self.scraped_data['documentation'] = {...} to .append({...})
- Bug was breaking unified skill builder reference generation
AI ENHANCEMENT UPDATES:
- Added repo_id extraction in utils.py for multi-repo support
- Enhanced grouping by (source, repo_id) tuple in both enhancement files
- Added MULTI-REPOSITORY HANDLING section to AI prompts
- AI now correctly identifies and synthesizes multiple repos
CHANGES:
1. src/skill_seekers/cli/utils.py:
- _determine_source_metadata() now returns (source, confidence, repo_id)
- Extracts repo_id from codebase_analysis/{repo_id}/ paths
- Added repo_id field to reference metadata dict
2. src/skill_seekers/cli/enhance_skill_local.py:
- Group references by (source_type, repo_id) instead of just source_type
- Display repo identity in prompt sections
- Detect multiple repos and add explicit guidance to AI
3. src/skill_seekers/cli/enhance_skill.py:
- Same grouping and display logic as local enhancement
- Multi-repository handling section added
4. src/skill_seekers/cli/unified_scraper.py:
- FIX: Documentation scraper now appends to list instead of overwriting
- Added source_id, base_url, refs_dir to documentation metadata
- Update refs_dir after moving to cache
TESTING:
- All 57 tests passing (unified, C3, utilities)
- Single-source verified: httpx comprehensive (219→749 lines after enhancement)
- Multi-source verified: encode/httpx + encode/httpcore (523 lines)
- AI enhancement working: Professional output with source attribution
QUALITY:
- Enhanced httpx SKILL.md: 749 lines, 19KB, A+ quality
- Source attribution working correctly
- Multi-repo synthesis transparent and accurate
- Reference structure clean and organized
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
PROBLEM:
AI enhancement was running Claude Code but SKILL.md was never updated.
Users saw "Claude finished but SKILL.md was not updated" error.
ROOT CAUSE:
Claude CLI was called with invalid --yes flag (doesn't exist).
Permission checks prevented file modifications from nested Claude sessions.
THE FIX:
1. Removed invalid --yes flag
2. Added --dangerously-skip-permissions flag to bypass ALL permission checks
3. Added explicit save instructions in prompt
4. Added debug output showing before/after file stats
CHANGES IN enhance_skill_local.py:
Line 614: Changed subprocess command
- Before: ['claude', '--yes', '--dangerously-skip-permissions', prompt_file]
- After: ['claude', '--dangerously-skip-permissions', prompt_file]
Lines 363-377: Enhanced prompt with explicit save instructions
- Added "You MUST save" language
- Added "This is NOT a read-only task" clarification
- Added "Even if running from within another Claude Code session" permission
- Added verification requirements
Lines 644-654: Enhanced debug output
- Shows before/after mtime and size
- Displays last 20 lines of Claude output
- Helps identify what went wrong
VERIFICATION:
Tested on output/httpx/:
- Before: 219 lines, 5,582 bytes
- After: 702 lines, 21,377 bytes (+283% size, +221% lines)
- Enhancement time: 152.8 seconds
- Status: ✅ SUCCESS - File updated correctly
IMPACT:
✅ AI enhancement now works automatically
✅ No more "file not updated" errors
✅ SKILL.md properly expands from 200 to 700+ lines
✅ Rich content with real examples from references
✅ Works even when called from within Claude Code session
The --dangerously-skip-permissions flag allows Claude Code to modify
files without permission prompts, essential for automated workflows.
🚨 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
BREAKING CHANGE: Force mode is now ON by default (was OFF by default)
User requested: "make this default on with skip flag only"
Changes:
--------
- Force mode is now ON by default (skip all confirmations)
- New flag: `--no-force` to disable force mode (enable confirmations)
- Old flag: `--force` removed (force is always ON now)
Rationale:
----------
- Maximizes automation out-of-the-box
- Better UX for CI/CD and batch processing (no extra flags needed)
- Aligns with "dangerously skip mode" user request
- Explicit opt-out is better than hidden opt-in for automation tools
Migration:
----------
- Before: `skill-seekers enhance output/react/ --force`
- After: `skill-seekers enhance output/react/` (force ON by default!)
- To disable: `skill-seekers enhance output/react/ --no-force`
Behavior:
---------
- Default: `LocalSkillEnhancer(skill_dir, force=True)`
- With --no-force: `LocalSkillEnhancer(skill_dir, force=False)`
CLI Examples:
-------------
# Force ON (default - no flag needed)
skill-seekers enhance output/react/
# Force OFF (enable confirmations)
skill-seekers enhance output/react/ --no-force
# Background with force (force already ON by default)
skill-seekers enhance output/react/ --background
# Background without force (need --no-force)
skill-seekers enhance output/react/ --background --no-force
Files Changed:
--------------
- src/skill_seekers/cli/enhance_skill_local.py
- Changed default: force=False → force=True
- Changed flag: --force → --no-force
- Updated docstring
- Updated help text
- src/skill_seekers/cli/main.py
- Changed flag: --force → --no-force
- Updated argument forwarding
- docs/ENHANCEMENT_MODES.md
- Updated Force Mode section (default ON)
- Updated examples (removed unnecessary --force flags)
- Updated batch enhancement example
- Updated CI/CD example
- CHANGELOG.md
- Updated "Force Mode" description (Default ON)
- Clarified no flag needed
Impact:
-------
- ✅ CI/CD pipelines: No extra flags needed (force ON by default)
- ✅ Batch processing: Cleaner commands
- ✅ Manual users: Use --no-force if they want confirmations
- ✅ Backward compatible: Old behavior available via --no-force
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Fixes#214 - Local enhancement now handles large skills automatically
**Problem:**
- Claude CLI has undocumented ~30-40K character limit
- Large skills (>30K chars) fail silently during local enhancement
- Users experience "Claude finished but SKILL.md was not updated" error
**Solution:**
- Auto-detect large skills (>30K chars)
- Apply intelligent summarization to reduce content size
- Preserve critical content:
* First 20% (introduction/overview)
* Up to 5 best code blocks
* Up to 10 section headings with context
- Target ~30% of original size
- Show clear warnings when summarization is applied
**Implementation:**
- Added `summarize_reference()` method to LocalSkillEnhancer
- Modified `create_enhancement_prompt()` to accept summarization parameters
- Updated `run()` method to auto-enable summarization for large skills
- Added comprehensive test suite (6 tests)
**Test Results:**
- ✅ All 612 tests passing (100% pass rate)
- ✅ 6 new smart summarization tests
- ✅ E2E test: 60K skill → 17K prompt (within limits)
- ✅ Code block preservation verified
**User Experience:**
When enhancement is triggered on a large skill:
```
⚠️ LARGE SKILL DETECTED
📊 Reference content: 60,072 characters
💡 Claude CLI limit: ~30,000-40,000 characters
🔧 Applying smart summarization to ensure success...
• Keeping introductions and overviews
• Extracting best code examples
• Preserving key concepts and headings
• Target: ~30% of original size
✓ Reduced from 60,072 to 15,685 chars (26%)
✓ Prompt created and optimized (17,804 characters)
✓ Ready for Claude CLI (within safe limits)
```
**Backward Compatibility:**
- No breaking changes
- Works with existing skills
- Falls back gracefully for normal-sized skills