diff --git a/.claude/skills/tina4-maintainer/SKILL.md b/.claude/skills/tina4-maintainer/SKILL.md index c6c83b34..47166d8e 100644 --- a/.claude/skills/tina4-maintainer/SKILL.md +++ b/.claude/skills/tina4-maintainer/SKILL.md @@ -114,6 +114,8 @@ is shown with a one-line example of it firing. *Example:* `🔧 The queue-clear pass found Python's Kafka clear() silently returning 0 where PHP/Ruby raise - a real bug (it claims the queue emptied), fixed in the same pass at parity. Counter-case: deadLetters() "connecting first" LOOKED like a violation, but the master + contract say it ANSWERS - the stale TEST was the bug, not the code. Verify before you "fix".` - **📣 Verbose background work.** Anything you run in the background - a worker, a delegated agent, a long test run, a build, an install, a benchmark, a server, a CI watch - must narrate itself as it goes; never run silent. Tee its output, pass the tool's verbose / progress flag, print a line per step, surface interim counts - so at any moment the maintainer (who is waiting on it) and you can both see exactly where it is. A silent background job is a black box: it hides hangs, swallows errors, and turns "is it still working?" into a guess. If a tool has no verbose mode, wrap it so each step prints. The maintainer should never have to ask what a running job is doing. *Example:* `📣 Piping the parity worker's pytest through a live tee - the maintainer watches it tick past 3,000 tests instead of waiting blind for a final green.` +- **⚠️ Stay on skill - catch drift and steer back.** The floor is always on, so measure every move against it as you work - your own, and anyone's you are reviewing (a worker's output, a PR, a prior step, even the maintainer's own instruction). The moment something goes off-skill - a mock standing in for a real dependency, a fix in one framework but not the other three, a push straight to a protected branch or a tag where a PR was due, a "done" with no full-suite run, the 🤖 marker dropped, work happening off-plan - say it in one line: name the exact rule, why this is off it, and the one correction that puts it back. Then get back on track in the same turn; never continue off-skill in silence, and never park it for "later" - a warning you swallow is the drift. This WARNS and redirects, it never blocks: reserve 🛑 for the genuinely dangerous or wrong (data loss, a shipped regression, a broken build, a security or parity breach, a locked decision); everything else warns and carries on, corrected. + *Example:* `⚠️ Off-skill: this PR's queue test asserts a mock was called, not that RabbitMQ redelivered - that is the no-mock floor. Pointing it at the lab broker and re-running before I approve.` ## The Tina4 Working Method diff --git a/CLAUDE.md b/CLAUDE.md index 32af4f80..a593e232 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -10,6 +10,7 @@ Even if the skill text is not currently loaded, these are non-negotiable: - Plan-driven: track work in `plan/.md` (Scope / Parity / Tests / Bugs / Commits). - Verify before claiming: re-run the FULL suite green yourself on CI or the lab at the exact HEAD — never trust an unrun green. - Dashboard reporting: status as tables, terse. +- Stay on skill: check every move against this floor as you work; the moment you - or work you are reviewing - drift, warn in one line (name the rule + the correction) and steer back the same turn. Warn, do not block. The full discipline lives in `.claude/skills/tina4-maintainer/SKILL.md`; this block is the always-on floor.