Accumulated patterns and anti-patterns from development sessions. Auto-managed by caliber — do not edit manually.
- [gotcha:project] Skill files are stored at
.claude/skills/{name}/SKILL.md(directory per skill), NOT as.claude/skills/{name}.mdflat files. Attempting to read or write a flat.mdpath will silently fail — always use the subdirectory pattern. - [gotcha:project]
tests/PluginTest.phphas hard-coded count assertions:testGetHooksCount()(currently 10 hooks),testPublicMethodCount()(currently 11 public methods),testStaticPropertyCount()(currently 5 static props). When adding hooks or methods tosrc/Plugin.php, always update these counts or tests will fail with misleading count-mismatch errors. - [pattern:project] Caliber's reference-validation scoring flags
vendor/bin/phpunitand othervendor/paths as invalid because they are not in the project file tree. When writing.claude/skills/*/SKILL.mdcontent, reference commands as plain prose or code blocks without backtick-quotingvendor/paths as if they were project file references. - [convention:project] When adding a new hook to
getHooks()insrc/Plugin.php, two test updates are always required: (1) add the new key to the$expectedKeysarray intestGetHooksReturnsExpectedKeys(), and (2) increment the count intestGetHooksCount().