synaptic-labs-ai/pact-plugin/pact-teachback
Claude Code and agent skill by synaptic-labs-ai/pact-plugin
- community
Checking that the SKILL.md file is still in the repository.
Command-style teachback protocol for PACT teammates. Invoking this skill directly instructs you to store your teachback in task metadata and idle on awaiting_lead_completion before any implementation work.
Install
npx vskill@latest install synaptic-labs-ai/pact-plugin/pact-teachbackSKILL.md
Teachback — Store Now
Canonical schema at a glance
The full teachback payload — all required fields plus the optional method-reconstruction sub-object — at the correct nesting level. Skim this first if you only have time for one section; the rest of the skill explains the why and the surrounding choreography.
Each field's full purpose, the variety-band trigger for reasoning_reconstruction, and the 4 common wrong-shape mistakes appear in the sections below. The Common mistakes section enumerates the 4 wrong shapes the runtime advisory layer at hooks/task_lifecycle_gate.py catches at write time.
What a teachback is
Invoking this skill means you are about to submit a teachback for your current task. Do not proceed to implementation work until you have stored it AND received the team-lead's acceptance.
A teachback is a Pask Conversation Theory verification gate. Before you start implementing, you restate your understanding of the task so the team-lead can catch misunderstandings early, before you burn context on a wrong implementation.
Under the Task A + Task B dispatch shape, your teachback is the deliverable of Task A. Task B (the primary work) is blockedBy=[A]: it remains VISIBLE and readable in your TaskList (annotated as blocked) but is not claimable — the blockedBy edge filters it from the claimable set, it does not hide or lock it — until the team-lead accepts your teachback by transitioning Task A to completed, which makes Task B claimable.
The 5 canonical fields (Step 1) are the L1 (procedure-level) gate; the optional reasoning_reconstruction nested field enables the L1.5 (method-level) gate at high-variety dispatches — see pact-ct-teachback.md §When to Method-Reconstruct. Variety-band thresholds live at the SSOT in hooks/shared/variety_scorer.py (COMPACT_MAX / ORCHESTRATE_MAX / PLAN_MODE_MAX + route_workflow); do not hard-code the 6 / 10 / 14 thresholds.
Action: store teachback now
Ordering invariant (audit anchor): the three steps below MUST execute in the order Step 1 → Step 2 → Step 3 —metadata.teachback_submitwrite FIRST, then notifySendMessage, thenintentional_waitSET. This ordering is load-bearing for the team-lead's Read-Trigger Precondition: the lead must wait for teammate's wake-signalSendMessagebefore treating the raw JSON read as authoritative, but theSendMessageis only safe to send AFTER the metadata write has landed on disk. Reversing Step 1 and Step 2 produces false-empty raw reads on the lead side that have triggered false-positive teachback rejection cycles. Reversing Step 2 and Step 3 (idle beforeSendMessage) silently strands the lead — they will never see the wake-signal because you went idle without sending it. Editors of this skill: do NOT re-order these steps. The write persists the durable copy; the notify carries it verbatim, so the lead's acceptance keys on the message and their raw read becomes the deferred audit.
Step 1 — write the teachback to task metadata (5 canonical fields + 1 optional nested field):
⚠️ Write the full sub-object in ONE call.TaskUpdatemerges metadata at the TOP LEVEL only. A write that carries part of a nested sub-object REPLACES that sub-object. It erases each field you omit, and it reports no error. A write to one TOP-LEVEL key does not change a different TOP-LEVEL key, which is why Step 1 and Step 3 are different calls. If you must correct one field after the write, RE-SEND THE FULL OBJECT, and include each other field unchanged. Then read the task file back and enumerate the keys ofmetadata.teachback_submit.
Read Task B's four variety SCORES (via Task A's blocks[0]) when needed; read the *_rationale strings ONLY AFTER composing the other four fields above. Required: a rationale read earlier cannot be un-read. — TaskGet is metadata-blind; read the task file (team name from pact-session-context.json, team_name field). SCORES: cat "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/tasks/{team_name}/{taskId}.json" | jq '.metadata.variety|map_values(select(type=="number"))'. RATIONALES, afterwards: the same cat piped to jq .metadata.variety. Judge each of the four per-dimension rationales against THIS dispatch's complexity and record yes / no / concern; when not yes, name the smell in concern. A rationale reading `WITHHELD: ignorance-dependent dispatch` is deliberate, not malformed — record `concern` QUOTING that literal verbatim; do NOT ask for a re-stamp. Full review workflow: `protocols/pact-variety.md` §Variety Calibration Record.
Step 2 — notify the team-lead (carrying the canonical payload verbatim):
One line, space-joined; thesummarynever carries payload content (it truncates at 200 chars). Ifteam-leadis unreachable, send the notify tomain.After writing the payload, read the task JSON back and confirm every field is present, non-empty, and ends on its intended final content — a sender-side output cut lands mid-JSON and surfaces as a write error, not as silence. This check holds at any size.
# ANTI-PATTERN: Step 1 and Step 3 are SEPARATETaskUpdatecalls writingSEPARATE top-level metadata keys. Nestingintentional_waitINSIDEteachback_submit(one combinedTaskUpdate) hides it frommissed_wake_scan.py, which readsmetadata.intentional_waitand doesnot descend into nested objects, so no missed-wake alarm is emitted.is_self_complete_exemptgoverns self-completion exemption instead anddoes not read the field in either placement. The runtime advisoryintentional_wait_nested_in_teachback_submitfires at write time. Seepact-teachback skill Common mistakes row 4.
Step 3 — SET `intentional_wait` and idle:
Do NOT begin Task B until Task A's status transitions to completed. The lead's acceptance SendMessage resumes you — you cannot self-wake to poll TaskList while idle. Then END THE TURN (idle).
On rejection (team-lead writes metadata.teachback_rejection and sends a wake-signal SendMessage carrying the rejection payload verbatim): see pact-agent-teams §On Rejection.
Common mistakes
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingpact-plugin/skills/pact-teachback/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/synaptic-labs-ai/pact-plugin/pact-teachback)