homericintelligence/scylla/config-default-model-drift
- community
- ext:[{"type":"hook","description":"Pre/post lifecycle hooks"}]
Checking that the SKILL.md file is still in the repository.
Install
npx vskill@latest install homericintelligence/scylla/config-default-model-driftSemi-extensibleMentions customization, but needs skill-specific knowledge. Read the extensible skills standard
SKILL.md
Skill: config-default-model-drift
Overview
| Field | Value | |
|---|---|---|
| Date | 2026-02-20 | |
| Issue | #793 | |
| PR | #838 | |
| Objective | Eliminate hardcoded model-ID literals that silently drift from config | |
| Outcome | Success — single source of truth in config/defaults.yaml | |
| Category | architecture |
When to Use
Trigger when you see any of the following:
- Hardcoded model-ID string literals (e.g.
"claude-opus-4-5-20251101") in CLI or orchestrator code model or "<literal>"fallback patterns instead of reading from config- Follow-up issues noting that a previous refactor missed a stale literal
- A new default model has been adopted but code still references the old one
- Audit findings of literals that will "silently fall out of sync" with a config file
Verified Workflow
1. Locate every hardcoded literal
Expect: scylla/cli/main.py and scylla/orchestrator.py (possibly docstrings too).
2. Add default_model to config/defaults.yaml
Place it at the top level (not nested under a section).
3. Add the Pydantic field to DefaultsConfig
In scylla/config/models.py, inside DefaultsConfig:
The Python-level default keeps backward-compat for callers that don't supply the YAML key (e.g. test fixtures that use a trimmed defaults.yaml).
4. Update the CLI
In scylla/cli/main.py:
ConfigLoader() with no arguments resolves relative to Path(".") (the cwd at runtime).
5. Update docstrings / examples
In scylla/orchestrator.py the class docstring had a copy of the literal as an example. Replace with ConfigLoader().load_defaults().default_model to keep it consistent and searchable.
6. Write the test
Add to tests/unit/cli/test_cli.py:
Key points:
- Mock
scylla.cli.main.ConfigLoader(the import in the module under test, not the source). - Capture
OrchestratorConfig.modelviaside_effect=capture_configonEvalOrchestrator. - The test is independent of
config/defaults.yamlon disk — it proves the wiring, not the value.
7. Update the test fixture if needed
tests/fixtures/config/defaults.yaml does not need to be updated because DefaultsConfig has a Python-level Pydantic default for default_model. Existing fixture-based tests keep passing.
8. Run validation
Failed Attempts
None in this session — the pattern was clean and straightforward.
Results & Parameters
| Parameter | Value | |
|---|---|---|
| Files changed | 5 | |
| Lines added | 41 | |
| Lines removed | 2 | |
| Tests added | 1 | |
| Total tests | 2267 (all passing) | |
| Pre-commit hooks | 13 / 13 passing |
Files Modified
| File | Change | |
|---|---|---|
config/defaults.yaml | Added default_model key | |
scylla/config/models.py | Added default_model field to DefaultsConfig | |
scylla/cli/main.py | Replaced literal with ConfigLoader().load_defaults()… | |
scylla/orchestrator.py | Updated docstring example | |
tests/unit/cli/test_cli.py | Added test_run_default_model_from_config |
Key Insight
When ConfigLoader() is instantiated without a base_path, it defaults to Path("."). This is fine at CLI runtime (cwd is the project root) but would fail in a unit test without mocking. Always mock scylla.cli.main.ConfigLoader (the reference in the module, not the original import path) when testing CLI code that calls ConfigLoader() at the module level.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryChecking.claude-plugin/skills/config-default-model-drift/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Extension points
hookPre/post lifecycle hooks
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/homericintelligence/scylla/config-default-model-drift)