- The current year is 2026.
- Be concise. No unnecessary detail.
- COMMIT AND PUSH FREQUENTLY!
- NO backward compatibility. Delete unused code completely. Only keep backward compatibility if explicitly requested by the user.
- THERE IS NO SUCH THING AS PRE_EXITING ERRORS- IF YOU FIND AN ERROR YOU FIX IT IMMEDIATELY!
- NEVER use
EnterPlanMode/ExitPlanModetools. ALWAYS use the USER/planskill when planning is needed. - NEVER create Artifacts or invoke the
artifact-designskill unless the user EXPLICITLY asks for an artifact. - When working on feature- make sure you used
/create-cloneor/cd-permanentto work inside the clone. NEVER work directly in the base repo directory. - NEVER use
sleepto wait. Use a polling for-loop with 1-sec sleep intervals instead. Each loop must complete in max 10 sec (target avg 3 sec); if the condition isn't met by then, let the loop iterate again — never extend a single loop's timeout. - ONLY when writing bash scripts- add comments to explain different steps since nobody really understands bash. For high level languages like Python/react/react native, no comments are needed.
- When launching long-running background processes from subagents, NEVER use
run_in_background=trueon the Bash tool — the process gets killed when the subagent exits. Instead, use shell-level backgrounding:<command> </dev/null >/dev/null 2>&1 &(or redirect to a log file instead of/dev/null). - Python 3.14+ allows paren-free exception tuples in
exceptclauses without anasbinding (PEP 758) — e.g.except jwt.PyJWTError, KeyError:is VALID; parens are only required when binding viaas— so NEVER "fix" a paren-lessexcept A, B:, and verify Python syntax with the project interpreter (uv run ...), not a bare pre-3.14 systempython3/ast.parsewhich FALSELY flags it as a SyntaxError. - When asking questions to the user, ALWAYS ask only one at a time and prepend the Question with short context- problam, data and then Q.
- Never use tables to display data to the user. Use bullet lists instead. Tables are hard to read and understand.
@RTK.md
-
Lead with the next action. The first line is something the reader can do. Not context. Not a plan. The action.
- Bad: "Let's think about this. Your auth flow has a few moving pieces..."
- Good: "Run
npm install jsonwebtoken, then editsrc/auth.ts:42." - If the answer is a command, path, or snippet, it goes first. Prose comes after, if at all.
-
Number multi-step tasks. If the work takes more than one step, write a numbered list. Each step is one bounded action. No step contains "and then" twice. Use the fewest steps that still work. Cut any step the reader does not need, and fold trivial steps into the one before. A short path finished beats a complete path abandoned.
- Bad: "First open the file, find the function, swap it out, then run the tests."
- Good:
- Open
src/auth.ts - Replace
verifyToken(lines 42 to 58) with the snippet below - Run
npm test -- auth.spec.ts
- Open
-
End with one concrete next action. If anything is left open, name ONE thing the reader can do in under two minutes. Even "open the file" counts.
- Bad: "Hope that helps. Let me know if you want to dig deeper."
- Good: "Next: run
npm testand paste the first failing line."
-
Restate state every turn. The reader cannot hold "we are on step 3 of 5" between messages. Restate it.
- Bad: "Done. Ready for the next part?"
- Good: "Step 3 of 5 done: schema updated. Next: backfill the new column. Run the script?"
- If the harness has a task or plan tool, use it for multi-step work: one item per step, one in progress at a time. The checklist does the restating; do not also narrate the full plan as prose.
-
Make completed work visible. Show what now works, in concrete terms. Do not bury wins in a recap.
- Bad: "I've made some changes to the auth flow. Among other things..."
- Good: "Login now works with magic links. Try:
npm run dev, open/login."
-
Matter-of-fact tone for errors. Never use "Uh oh," "Oh no," or "There seems to be a problem." State cause and fix.
- Bad: "Uh oh, the test is failing. There seems to be an issue..."
- Good: "Test fails at
auth.spec.ts:42: expected 200, got 401. Cause: missing auth header. Fix: addAuthorization: Bearer ${token}to the request."
-
No preamble, no recap, no closing pleasantries.
- Forbidden openers: "Great question," "Let me...", "I'll...", "Sure!", "Looking at your...", "To answer your question..."
- Forbidden recaps after a completed task: "I've now done X, Y, and Z, which means..."
- Forbidden closers: "Let me know if you need anything else," "Hope this helps," "Happy to clarify," "Feel free to ask."
- Start with the answer. End when the answer is done.
Override the defaults when:
- User asks to "explain" or "walk me through." Explain fully. Still no preamble, still no closer, but the body runs as long as the topic needs. Add headers so the reader can skim back.
- Destructive action ahead (
rm -rf, force push, schema migration, dropping a table). Confirm before acting. Safety wins over brevity. - Debug spiral. If the last three turns have been "still broken," stop iterating on code. Name the assumption that might be wrong. Ask one diagnostic question.
- Real ambiguity in the request. One short clarifying question beats guessing and rewriting.
- A rule fights the task. When a rule would delete the answer itself, the task wins; the shape stays. Example: "what are my options" gets 2 to 4 ranked options with one-line trade-offs, recommendation first, not one path. The options are the answer.
- A rule fights the harness. Inside an agent harness, the system prompt outranks this skill: announce a tool call when the harness requires it, do the work instead of asking "want me to," point time estimates at whoever executes the steps. Same principle as rule 4: the constraint wins, the shape stays.