implement — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited implement (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
You are implementing a feature or fix that has been refined and agreed upon with the user.
$ARGUMENTS is a Jira issue identifier, a description of the agreed approach, or "continue" to resume from the last checkpoint.
/refine session, user discussion, or a clear spec. If not, run /refine first. DO change: [the files this work touches]
DO NOT change: [large/unrelated areas that must stay untouched — NOT a cage]@tanstack/*, run the TanStack Intent skill check FIRST, from packages/cockpit: bunx @tanstack/intent@latest list, then load <pkg>#<skill> for the packages you'll touch (@tanstack/ai#ai-core + sub-skills for agent/AI code; router/start skills for routing). Follow the returned SKILL.md — it is official guidance version-pinned to the installed packages (see cockpit CLAUDE.md "Skill Loading"). Never write TanStack API usage from memory. Deps stay latest and nothing freezes (bun.lock owns resolution) — never add version pins.DO NOT change exists to stop you from wandering into unrelated subsystems mid-task. It does not forbid:
If a fix is large or genuinely unrelated, that's when you note it for a separate item rather than expanding scope.
State: "Phase N: [what I'm about to do]"
Implement. Focus on one thing at a time.
Write out answers to these questions. Do not skip them. Do not answer "fine" or "nothing" unless that is genuinely true.
After each phase: tests must be green. If they're not, fix the code (not the tests) unless the test itself is wrong — and if it is, explain WHY the test's expectation is incorrect.
These are not just allowed. They are EXPECTED. They are the EFFICIENT path.
But stopping is not free, and "ask the user" is not the safe default — it's a real cost too. Every escalation spends the user's attention and your momentum. The bar for stopping is a genuine fork or a real blocker, not a routine decision you could resolve with a grep, a sensible default, or by following the agreed design. The senior-engineer move is to solve the problem and report the outcome, not to narrate every micro-step and wait for a nod. Default to action; reserve the stop conditions below for when they truly fire.
Don't spin in dependency circles. If you find yourself "blocked by" a prerequisite, the answer is usually to do the prerequisite, build a thin vertical slice, or attack the real problem directly — not to report "blocked" and stall. Time-box deliberation: if you've spent longer deciding how to approach something than it would take to just try the obvious path and learn, try it. An over-thought, entry-level answer arrived at slowly is worse than a direct attempt that produces real information.
The stop conditions below are about honesty when something is genuinely wrong — not a license to bail on tractable work:
"This is harder than I expected." Say it immediately. Do not power through hoping it gets easier. It won't. The user can help, adjust scope, or change approach. Powering through produces bad code that needs rework.
"The spec doesn't match what I found in the code." Stop implementation. Go back to refinement. The user needs to know before you build on a wrong foundation. This saves days, not wastes them.
"I've tried this twice and it's not working." The approach is wrong, not your execution. Stop. Explain what you tried. Form a hypothesis about the root cause. Ask the user. Three strikes and you MUST stop — this is a rule, not a suggestion.
"I need to change the plan." The plan was a hypothesis. You now have more information. Changing the plan based on evidence is BETTER than following a wrong plan. Update it, tell the user, proceed.
"I don't know how to do this part." Say it. Guessing wastes time and produces code that looks right but isn't. The user may know, or may agree to skip it, or may change the approach.
"This test only tests my mock, not real behavior." Delete it and say so. A test that verifies mocking scaffolding is worse than no test — it creates false confidence.
"I'm keeping dead code because removing it breaks tests." STOP. Delete the dead code. Delete or rewrite the test. Note it in the checkpoint. Dead code kept for tests is technical debt that compounds.
The most expensive mistake is declaring done when you're not. It forces the user to discover the problem later, in a new session, with lost context. Stopping early and being honest is cheaper than a false "done."
The second most expensive mistake is escalating what you could have solved. Asking the user to make a call you had the context to make yourself, or stopping on a routine fork, burns the same trust from the other direction. Honesty about being stuck and ownership of what you can resolve are the same virtue — calibrate which one the moment calls for.
After the final phase passes verification, invoke BOTH review agents. Do not skip this.
senior-code-reviewer agent. Give it the list of changed files and a summary of what was implemented. Wait for its verdict.spec-compliance-reviewer agent. Give it the plan/spec and the list of changed files. Wait for its verdict.Reviewer cd policy (no need to repeat in each prompt — it lives in the agent definitions): both reviewers have a "no cd" rule baked in (.claude/agents/{senior-code-reviewer,spec-compliance-reviewer}.md). They use absolute paths for Read, run git from anywhere in the repo, and use uv --directory <abs> to scope uv to a subpackage. Don't redundantly re-instruct them in every prompt — just give them the review task. If you observe a reviewer running cd despite the rule, that's a bug in the agent definition — fix it there, not by patching the prompt.
If either returns NEEDS WORK or BLOCKED:
Only proceed to handoff after both reviewers approve (or after discussing unresolved findings with the user).
After implementation is complete (honestly complete, reviewers satisfied):
.claude/handoff.md with entries for EACH affected area:For dataraum-eval:
For dataraum-testdata (if applicable):
Skip the handoff entirely for anything outside packages/engine/src/dataraum/{analysis,entropy,pipeline,graphs}/ — that includes packages/cockpit/ (UI/widgets), packages/infra/ (docker-compose), and engine-side platform shell (Starlette kernel in src/dataraum/server/, server bootstrap, transport plumbing). Eval doesn't consume those surfaces. For parallel platform work, follow the "Parallel platform work" runbook in CLAUDE.md instead.
/smoke to drive the cockpit in a browser before handoff. If you only touched engine Python, also rebuild the container (docker compose -f packages/infra/docker-compose.yml up -d --build control-plane).~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.