feat(v2.7.0): Smart Rate Limit Management & Multi-Token Configuration
Major Features: - Multi-profile GitHub token system with secure storage - Smart rate limit handler with 4 strategies (prompt/wait/switch/fail) - Interactive configuration wizard with browser integration - Configurable timeout (default 30 min) per profile - Automatic profile switching on rate limits - Live countdown timers with real-time progress - Non-interactive mode for CI/CD (--non-interactive flag) - Progress tracking and resume capability (skeleton) - Comprehensive test suite (16 tests, all passing) Solves: - Indefinite waiting on GitHub rate limits - Confusing GitHub token setup Files Added: - src/skill_seekers/cli/config_manager.py (~490 lines) - src/skill_seekers/cli/config_command.py (~400 lines) - src/skill_seekers/cli/rate_limit_handler.py (~450 lines) - src/skill_seekers/cli/resume_command.py (~150 lines) - tests/test_rate_limit_handler.py (16 tests) Files Modified: - src/skill_seekers/cli/github_fetcher.py (rate limit integration) - src/skill_seekers/cli/github_scraper.py (--non-interactive, --profile flags) - src/skill_seekers/cli/main.py (config, resume subcommands) - pyproject.toml (version 2.7.0) - CHANGELOG.md, README.md, CLAUDE.md (documentation) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1303,6 +1303,10 @@ Examples:
|
||||
help='Enhance SKILL.md using Claude Code (no API key needed)')
|
||||
parser.add_argument('--api-key', type=str,
|
||||
help='Anthropic API key for --enhance (or set ANTHROPIC_API_KEY)')
|
||||
parser.add_argument('--non-interactive', action='store_true',
|
||||
help='Non-interactive mode for CI/CD (fail fast on rate limits)')
|
||||
parser.add_argument('--profile', type=str,
|
||||
help='GitHub profile name to use from config')
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
@@ -1310,6 +1314,11 @@ Examples:
|
||||
if args.config:
|
||||
with open(args.config, 'r', encoding='utf-8') as f:
|
||||
config = json.load(f)
|
||||
# Override with CLI args if provided
|
||||
if args.non_interactive:
|
||||
config['interactive'] = False
|
||||
if args.profile:
|
||||
config['github_profile'] = args.profile
|
||||
elif args.repo:
|
||||
config = {
|
||||
'repo': args.repo,
|
||||
@@ -1319,7 +1328,9 @@ Examples:
|
||||
'include_issues': not args.no_issues,
|
||||
'include_changelog': not args.no_changelog,
|
||||
'include_releases': not args.no_releases,
|
||||
'max_issues': args.max_issues
|
||||
'max_issues': args.max_issues,
|
||||
'interactive': not args.non_interactive,
|
||||
'github_profile': args.profile
|
||||
}
|
||||
else:
|
||||
parser.error('Either --repo or --config is required')
|
||||
|
||||
Reference in New Issue
Block a user