Claude-skill-registry create-config
Creates timestamped configuration files for sports poetry multi-agent workflows. Invoked when users request to 'create config', 'set up configuration', 'configure sports poetry', provide sports lists for generation, or need help understanding configuration options. Validates sports count (3-5), checks API keys for LLM mode, and generates both JSON config and reproducible generator script (project)
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/create-config" ~/.claude/skills/majiayu000-claude-skill-registry-create-config && rm -rf "$T"
skills/data/create-config/SKILL.mdCreate timestamped configuration files for the sports poetry multi-agent workflow using interactive conversation and pre-built utility functions.
Table of Contents
- When to Use This Skill
- Quick Start Example
- Available Utilities
- Conversation Flow
- CRITICAL: Always Create Both Files
- Common Usage Patterns
- Validation & Error Handling
- Troubleshooting
- Configuration Parameters Reference
- File Structure
- Testing
- See Also
- Dependencies
When to Use This Skill
Use this skill when the user:
- Asks to "create a config" or "set up configuration"
- Wants to configure sports poetry generation
- Provides a list of sports and generation preferences
- Needs help understanding configuration options
Quick Start Example
User: "Create a config for basketball, soccer, and tennis" You: I'll create a configuration for you. [Use skill_helpers.py utilities to create both files] ✓ Created output/configs/config_20251115_120000.json ✓ Created output/configs/generate_config_20251115_120000.py Ready to run: python3 orchestrator.py --config output/configs/config_20251115_120000.json
Available Utilities
This skill uses pre-built functions from
skill_helpers.py. Import and USE these directly rather than reimplementing:
from skill_helpers import ( check_api_key, # Check env vars + .claude/claude.local.md create_generator_script, # Generate executable Python script get_setup_instructions # Get API key setup help )
Key principle: Use these utilities to save tokens and ensure consistency. Don't reimplement their logic.
Conversation Flow
High-Level Steps
-
Collect sports (3-5 required)
- Validate count using
config_builder.with_sports() - Normalize to lowercase, check for duplicates
- config_builder handles validation automatically
- Validate count using
-
Ask for generation mode (template or llm)
- Default:
(fast, no API key needed)template - If user wants LLM: proceed to step 3
- If template mode: skip to step 5
- Default:
-
Check API key (LLM mode only)
- Use
from skill_helperscheck_api_key(provider) - If found: proceed to step 4
- If not found: use
and offer to switch to template modeget_setup_instructions(provider)
- Use
-
Confirm LLM settings (LLM mode only)
- Provider: "together" or "huggingface" (default: together)
- Model: Use provider-specific defaults unless user specifies
- Together.ai default:
meta-llama/Llama-3.3-70B-Instruct-Turbo-Free - HuggingFace default:
meta-llama/Meta-Llama-3-8B-Instruct
-
Ask about retry behavior (optional)
- Default:
(recommended)true - Accept: yes/no, true/false, enable/disable
- Default:
-
Show configuration summary
- Display all settings before creating files
- Ask for confirmation: "Proceed? [yes/no]"
-
Create BOTH files (CRITICAL - see below)
- Config JSON:
output/configs/config_{timestamp}.json - Generator script:
output/configs/generate_config_{timestamp}.py - Make generator script executable:
chmod +x
- Config JSON:
CRITICAL: Always Create Both Files
Every successful skill execution MUST create TWO files:
File 1: Configuration JSON
output/configs/config_{timestamp}.json
Created by:
config_builder.save(config_path)
File 2: Generator Script
output/configs/generate_config_{timestamp}.py
Created by:
create_generator_script() from skill_helpers
Made executable with: chmod +x
Failure to create BOTH files is incomplete execution of this skill.
The generator script provides:
- Reproducibility (re-run to create same config with new timestamp)
- Auditability (shows exactly how config was created)
- Self-documentation (includes all parameters in header)
Common Usage Pattern
This example shows both template mode (fast, no API key) and LLM mode (requires API key):
from skill_helpers import check_api_key, get_setup_instructions, create_generator_script from config_builder import ConfigBuilder from pathlib import Path from datetime import datetime import os, stat # Configuration sports_list = ["basketball", "soccer", "tennis"] use_llm_mode = False # Set to True for LLM-generated poems provider = "together" model = "meta-llama/Llama-3.3-70B-Instruct-Turbo-Free" # Initialize builder builder = ConfigBuilder.load_default() builder.with_sports(sports_list) # Configure mode-specific settings if use_llm_mode: # Check for API key api_key = check_api_key(provider) if not api_key: print(get_setup_instructions(provider)) print("\nFalling back to template mode...") use_llm_mode = False else: builder.with_generation_mode("llm") builder.with_llm_provider(provider) builder.with_llm_model(model) # Create timestamped config file timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") config_path = Path(f"output/configs/config_{timestamp}.json") config_path.parent.mkdir(parents=True, exist_ok=True) builder.save(str(config_path)) # Create generator script (required for reproducibility) mode = "llm" if use_llm_mode else "template" script = create_generator_script( sports=sports_list, mode=mode, provider=provider, model=model, retry=True, timestamp=timestamp ) script_path = Path(f"output/configs/generate_config_{timestamp}.py") script_path.write_text(script) os.chmod(script_path, os.stat(script_path).st_mode | stat.S_IEXEC) print(f"✓ Created {config_path}") print(f"✓ Created {script_path}") print(f"\nNext: python3 orchestrator.py --config {config_path}")
Validation & Error Handling
config_builder.py handles all validation automatically:
- Sports count (3-5): Error raised immediately in
with_sports() - Duplicates: Detected and rejected
- Empty strings: Not allowed
- Generation mode: Must be "template" or "llm"
- LLM settings: Required if mode="llm"
You don't need to duplicate validation logic. Just call the builder methods and let them validate.
Error message example:
ConfigValidationError: Must specify at least 3 sports (got 2)
These messages are already helpful - just pass them to the user.
Troubleshooting
Sports Count Validation Error
When config_builder raises a sports count error, provide friendly suggestions:
You provided 2 sports, but we need 3-5. Suggestions: tennis, volleyball, baseball, hockey, swimming
API Key Issues
For LLM mode API key problems, use
check_api_key(provider) and get_setup_instructions(provider) from skill_helpers (see Pattern 2 example), or offer to switch to template mode.
Configuration Parameters Reference
Required
- sports (list, 3-5 items): Sport names for poem generation
- generation_mode (string): "template" or "llm"
Conditional (LLM mode only)
- llm.provider (string): "together" or "huggingface"
- llm.model (string): Model identifier
Optional
- retry_enabled (boolean, default: true): Retry failed agents
Auto-Generated (by orchestrator at runtime)
- session_id: Unique session identifier
- timestamp: ISO 8601 timestamp
File Structure
.claude/skills/create_config/ ├── SKILL.md # This file └── skill_helpers.py # Pre-built utility functions
Testing
After using this skill, verify:
✅ Both files exist:
output/configs/config_{timestamp}.jsonoutput/configs/generate_config_{timestamp}.py
✅ Config is valid JSON with required fields
✅ Generator script is executable:
ls -l output/configs/generate_config_*.py # Should show -rwxr-xr-x (executable)
✅ Generator script can be run:
./output/configs/generate_config_{timestamp}.py # Should create new config with new timestamp
Multi-Model Validation
This skill has been validated across all Claude models:
- Claude Opus: Full testing with complex configurations
- Claude Sonnet: Primary development and testing model
- Claude Haiku: Lightweight execution validation
All models successfully execute the skill with consistent behavior across template and LLM modes.
See Also
- skill_helpers.py - Utility functions (check API keys, create scripts, etc.)
- tests/test_create_config_skill.py - Evaluation tests and acceptance criteria
- config_builder.py - Python API for config creation and validation
- config.default.json - Default configuration template
- README.md - Project overview and quick start guide
Dependencies
- Configuration builder with validationconfig_builder.py
- Utility functions for this skillskill_helpers.py- Python 3.7+ - For f-strings and pathlib