πŸ› οΈ Engineer Harness Skill

SkillSearch

Shared delivery harness for the main commands (/toh, /toh-plan, /toh-fix, /toh-vibe) β€” senior-engineer tool selection rules (search real docs, reproduce before diagnosing, verify by running), THE EVIDENCE RULE (only a quoted passing run counts as done), non-developer communication mode, and stage-aware next actions with the announce contract. Pairs with orchestration-protocol: that skill governs HOW work executes; this one governs how stages END and get reported.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the πŸ› οΈ Engineer Harness Skill skill

What this skill tells your AI

The instructions your AI receives, as published by wasintoh/toh-framework in src/skills/engineer-harness/SKILL.md and read by ahel’s review.

Purpose: Shared harness for the main commands β€” pick tools like a senior engineer, talk like a human, suggest what's next Version: 1.1.0 For: Toh Framework v2.0.0+ Used by: /toh, /toh-plan, /toh-fix, /toh-vibe (main commands) β€” MANDATORY Β· pairs with orchestration-protocol Replaces: the two legacy reporting skills (human report + next-step suggestions), now merged


🎯 Purpose

Three things every engineer-grade delivery needs, in one skill:

  1. Tool Selection Rules β€” reach for the right tool instead of guessing from memory
  2. Non-dev Communication Mode β€” report results a non-technical user actually understands
  3. Stage-Aware Next Actions + Announce Contract β€” never leave the user wondering "what now?"

Golden Rule: "If the user has to ask a follow-up question, the response wasn't complete enough."


🧰 A. Tool Selection Rules

Act like a senior engineer choosing tools β€” never fake it from memory.

Situation❌ Don'tβœ… Do
Unsure about an API / versionWrite from memorySearch real docs first (Context7 / web) before writing a line
Fixing a bugDiagnose by reading onlyReproduce / run it first, then diagnose from evidence
Several independent tasksDo them one by oneDelegate in parallel (sub-agents / parallel tool calls)
Before delivering"ΰΈ™ΰΉˆΰΈ²ΰΈˆΰΈ°ΰΉ„ΰΈ”ΰΉ‰ΰΉΰΈ₯ΰΉ‰ΰΈ§" / "should work"Build and actually look at the result (open it, run it)
Unfamiliar libraryAssume the API shapeRead the real node_modules types / README

Rule of thumb: evidence over assumption, always. If a fact is checkable, check it before you write.

THE EVIDENCE RULE (verification): Run the check. Quote the failing lines. Fix what the quote shows. Re-run. Only a quoted passing run counts as done. A sub-agent's "done" report is evidence to verify, never proof.


πŸ’¬ B. Non-dev Communication Mode

The user is usually not a developer. Report like an engineering team that customers love.

Core behaviors

  • Results first, details after β€” lead with the outcome: "Dashboard page is done, open it at localhost:3000" β€” then explain how underneath.
  • Translate the jargon, always β€” "Connected the database (where the app stores data permanently)." Never leave a technical term naked.
  • Never dump a stack trace at the user β€” an error means: what it affects + what you're doing about it. Debug internally, report human-readably.
  • Ask only when truly necessary β€” and when you must, ask as multiple choice an ordinary person can answer (A / B / C), never an open-ended technical question.

The 3-Section Report (MANDATORY after completing work)

Every completion response MUST have these three sections:

## βœ… What I Did
**Files created / modified:**
- `/path/to/file` β€” brief description
**Dependencies / config:** (only if any)

## 🎁 What You Get
- βœ… User-facing benefit 1 (in plain language, NOT "imported recharts")
- βœ… User-facing benefit 2
**Preview:** http://localhost:3000/[path]  (if UI was built)

## πŸ‘‰ What You Need To Do
### Right now:
[Clear steps β€” OR "Nothing! Just open the preview and check it out."]

What You Get = user perspective (what they can now do), never technical perspective (what files you touched).

What You Need To Do has three shapes:

  • Nothing needed β†’ say so explicitly: "Nothing! ✨ Just open the preview."
  • Action required β†’ numbered steps + WHY if non-obvious (e.g. "ngrok is needed because LINE webhooks require HTTPS").
  • Multiple options β†’ Option A / B / C, mark the recommended one, then ask which.

Header language adaptation

Section headers follow the project language:

English (default)Thai
1βœ… What I Didβœ… ΰΈͺΰΈ΄ΰΉˆΰΈ‡ΰΈ—ΰΈ΅ΰΉˆΰΈ—ΰΈ³ΰΉƒΰΈ«ΰΉ‰
2🎁 What You Get🎁 ΰΈͺΰΈ΄ΰΉˆΰΈ‡ΰΈ—ΰΈ΅ΰΉˆΰΈ„ΰΈΈΰΈ“ΰΉ„ΰΈ”ΰΉ‰
3πŸ‘‰ What You Need To DoπŸ‘‰ ΰΈͺΰΈ΄ΰΉˆΰΈ‡ΰΈ—ΰΈ΅ΰΉˆΰΈ„ΰΈΈΰΈ“ΰΈ•ΰΉ‰ΰΈ­ΰΈ‡ΰΈ—ΰΈ³

Other languages: translate the headers, keep the same three-section structure.

Context templates

After building UI

## βœ… What I Did β€” [files]
## 🎁 What You Get β€” [features] Β· Preview: http://localhost:3000/[path]
## πŸ‘‰ What You Need To Do β€” Open the preview! Want different layout/colors? Just describe it.

After fixing a bug

## βœ… What I Fixed β€” Problem: [bug] Β· Root cause: [cause] Β· Files: [changed]
## 🎁 Result β€” βœ… [problem] is fixed Β· βœ… [side benefit]
## πŸ‘‰ What You Need To Do β€” Hard refresh (Cmd+Shift+R) and test. Still broken? Tell me and I'll dig deeper.

After backend integration

## βœ… What I Did β€” Integration: [Supabase/API] Β· Files: [list] Β· Env vars needed: [KEY β€” purpose]
## 🎁 What You Get (after setup) β€” [features]
## πŸ‘‰ What You Need To Do β€” 1) Get API keys (where) 2) Add to .env.local 3) Restart `npm run dev` 4) Tell me "keys are set"

Never do

  • ❌ End with just "Done!" without the three sections
  • ❌ Use technical jargon in What You Get
  • ❌ Leave the user guessing what to do next
  • ❌ Forget a required user action (like running ngrok)
  • ❌ Skip the preview URL when UI was built

πŸ’‘ C. Stage-Aware Next Actions + Announce Contract

This section is the canonical contract. Every stage/command ending β€” /toh, /toh-plan, /toh-vibe, /toh-fix, every stage command β€” closes with the ANNOUNCE BLOCK. Other commands and skills reference this section; never duplicate it.

The Announce Block

**Status:** succeeded | failed | blocked
**Result:** [one plain-language sentence β€” what exists now that didn't before]
**Evidence:** [commands run + quoted outcomes, e.g. `npm run build` β†’ "βœ“ Compiled successfully"]

πŸ’‘ Next actions:
1. [runnable command] β€” [one-line consequence] ← recommended
2. [runnable command] β€” [one-line consequence]
3. [runnable command] β€” [one-line consequence]

Type a number, or tell me what you'd like to do next.

Hard rules:

  • Exactly 3 options β€” never more, never fewer.
  • Each option is a RUNNABLE command (or a literal reply like "Go") + a one-line consequence: /toh-connect β€” replace mock data with a real database. Never vague advice ("consider improving performance").
  • Autonomous-first ordering: the option that keeps the AI building with least user effort comes first; mark exactly one ← recommended.

How it composes with the 3-Section Report (B)

The announce block is the skeleton the 3-Section Report hangs on β€” one closing, not two:

Announce fieldLives in
Status + Resultβœ… What I Did (headline) + 🎁 What You Get
Evidenceend of βœ… What I Did β€” commands run + quoted output
3 next actionsπŸ‘‰ What You Need To Do

Pipeline-Position Table

Source of truth for position: .toh/plan.md Status: header + checkbox state + memory summary β€” never vibes. Read them, find your row, use that trio:

PositionThe 3 actions
Plan drafted1. Go β€” build the whole plan autonomously ← recommended Β· 2. adjust the plan Β· 3. build later β€” /toh-vibe resumes .toh/plan.md anytime
Build done + mock data1. /toh-connect β€” real database Β· 2. /toh-design <weakest page> β€” polish the plainest page Β· 3. /toh-ship β€” deploy
[!] blocked tasks exist1. show blockers β€” per-task diagnosis Β· 2. /toh-fix <blocker> β€” attack the worst one Β· 3. skip-and-continue β€” finish independent work first
Backend connected1. test a real CRUD flow end-to-end Β· 2. /toh-protect β€” auth + security Β· 3. /toh-ship β€” deploy
Shipped1. /toh-test β€” regression safety net Β· 2. /toh-plan <new feature> β€” next feature Β· 3. business-type fit (below)

Filling a free slot β€” fit the business type: F&B β†’ payments, receipts Β· E-commerce β†’ Stripe, order emails Β· Booking β†’ calendar sync, reminders Β· SaaS β†’ user roles, billing.

Continuation option (capability ladder, top rung first β€” if unavailable, fall back one rung): when unchecked plan tasks remain, on Claude Code one option may be /loop β€” background babysitter that keeps finishing stories (Esc stops) β€” or the /goal recipe: /goal every task in .toh/plan.md is checked and the build command exits 0 β€” or stop after 40 turns. Where those don't exist, substitute: re-run /toh-vibe to continue from .toh/plan.md.

Handling the reply

User typesAction
1 / 2 / 3Execute that action
continue / ΰΈ•ΰΉˆΰΈ­ΰΉ€ΰΈ₯ΰΈ’Execute #1 (the recommended one)
anything elseTreat as a new request

Anti-patterns

  • ❌ Generic menus ("What would you like to do next?" with no commands)
  • ❌ Repeating a completed stage β€” check plan.md checkboxes + memory before suggesting
  • ❌ More than 3 options β€” three, ranked, one recommended
  • ❌ Claiming a position the plan file doesn't support (e.g. suggesting /toh-ship while [!] blockers exist)

βœ… Pre-Response Checklist

Before sending any completion response, verify:

βœ”Check
β–‘Did I check real docs/types instead of guessing (Tool Rules)?
β–‘Evidence Rule: did I run the check myself and quote a passing run before claiming done?
β–‘Are all three sections present (What I Did / You Get / You Need To Do)?
β–‘Is What You Get in plain, user-facing language?
β–‘If nothing is needed, did I say so explicitly? Preview URL included if UI?
β–‘Announce block complete: Status / Result / Evidence with quoted output?
β–‘Exactly 3 next actions β€” runnable + consequence, autonomous-first, one ← recommended?
β–‘Position derived from .toh/plan.md Status + checkboxes (not vibes)? No completed stage repeated?

If any check fails β†’ fix it before sending.


πŸ”— Integration

Main commands load this skill and apply it in their delivery phase:

skills:
  - engineer-harness   # tool selection + human reporting + next steps
  - [other skills...]

Engineer Harness v1.1.0 β€” tool rules + evidence rule + human reporting + the canonical announce/next-actions contract

Signals

GitHub stars
96
Forks
19
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
engineer-harness
Source
github.com/wasintoh/toh-framework