SKILL.md
Draft Agent Loop Skill (HITRL)
Use this skill to implement a rigorous human-agent collaboration loop. This is the "Human-in-the-Right-Loop" (HITRL) method, designed to eliminate "blind box" agent outcomes by forcing plan approval and result verification.
Scope: This skill orchestrates remote agent workflows using the
draftCLI. All persistence is through Draft pages (via the canonicaldraft-clidependency). It does not write to local disk or agent memory.
Trigger Guidance
Trigger this skill when:
- "Work on this task and check with me before and after."
- "I want to review your plan first before you do anything."
- "Use HITRL / use draft-agent-loop for this."
- "Apply structured oversight to this task."
- New task received where the user's intent is high-stakes or complex enough to warrant human gates.
- A new iteration is requested after a Phase 3 sign-off.
Do NOT trigger this skill when:
- The user asks to do a task directly with no mention of approval or review gates.
- The user only asks about raw Draft commands or page automation without approval gates (use
draft-cli). - The user wants a local-file authoring workflow (authorship in local markdown).
Core Rules
- Source of Truth: The "Task Journal" Draft page. All plans, logs, and results live there.
- Environment: Always use headless page mode through the
draft-clistartup pattern. - Runtime dependency: Follow the startup and page-operation rules from
draft-cli. - Handoff Mode: Blocking. STOP and wait for human approval/sign-off in the chat before proceeding to the next phase.
- No Sensitive Data in Logs: Do NOT include credentials, secrets, tokens, or PII in execution log entries or plan documents. Limit evidence to status indicators and non-sensitive file names.
Phase 0: Setup & Connection
Before doing anything, establish a stable Draft connection:
# 1. Start the daemon in headless runtime v2
draft start-server
# 2. Confirm the session is READY before proceeding
draft status --json
If draft status does not show a healthy headless session, follow the draft-cli recovery pattern:
DAEMON_OFFLINE→ re-rundraft start-server- Only proceed once
draft status --jsonshows a healthy headless session
Phase 1: Plan (Proposal & Approval)
Before executing any code or changes:
- Create Journal: Create a new Draft page titled
<Task Name> - Task Journal.
``bash draft page create "<Task Name> - Task Journal" --json ``
- Submit Plan: Author a detailed Task Journal using the mandatory template. Append it to the Journal.
```bash cat << 'EOF' | draft page append <id> --json # 📋 Task: [Title]
## Context [Detailed background and motivation]
## Problem / Goal [Specific issue being solved or feature being added]
## Acceptance Criteria (Outcome-Focused) - [ ] [Criterion 1] - [ ] [Criterion 2]
## Implementation Notes [Current state analysis, relevant files, suggested approach, technical considerations]
## Test Coverage [Test strategy, scenarios to test, existing tests to reference] EOF ```
- Confirm Before Publishing: Before publishing, explicitly confirm with the user: "I am about to publish the Task Journal for external review. Please confirm."
- Handoff: On confirmation, publish the page and ask for approval.
``bash draft page publish <id> --invite-code "${GLOBALINVITECODE:-innosage}" --json `` Handoff Phrase: "I have initialized the Task Journal with the plan and requirements: [URL]. Please review the context and acceptance criteria. Once you are ready for me to proceed, please reply with APPROVED or LGTM here in the chat."
- Wait: STOP. Do not proceed until the user explicitly tells you to continue in the chat. Note: Do not rely on Draft page comments for approval on remote/public pages.
Phase 2: Execute (Action & Logging)
Once approved:
- Verify Approval: Confirm the user has provided approval in the chat.
- Execute: Perform the tasks outlined in the plan.
- Log Evidence: For every significant action, append a concise, non-sensitive log entry to the Journal under a
# 📜 Execution Logsection. Do NOT include raw command output, file contents, or credentials.
``bash cat << 'EOF' | draft page append <id> --json ### [Timestamp] Action: [Description] - Status: Success/Failure - Evidence: [e.g., "Modified src/components/Button.tsx — added reveal prop"] EOF ``
Phase 3: Verify (Result & Sign-off)
Once the execution is complete:
- Submit Results: Append a
# ✅ Final Resultssummary to the Journal. Include links to artifacts (e.g., PR URL, Draft page URL). Do not include raw file dumps. - Confirm Before Publishing: Explicitly confirm with the user before re-publishing.
- Handoff: On confirmation, re-publish the page.
``bash draft page publish <id> --invite-code "${GLOBALINVITECODE:-innosage}" --json `` Handoff Phrase: "I have completed the task. Please verify the results in the Task Journal: [URL]. If satisfied, reply with DONE or ✅ here in the chat."
- Wait: STOP. If the user provides sign-off (DONE / ✅), proceed to Phase 4. If feedback is received, enter the Iteration Loop.
Phase 4: Archive (Draft Page Only)
After sign-off, append a final summary to the existing Task Journal page. This keeps all persistence within Draft — no local filesystem writes.
cat << 'EOF' | draft page append <id> --json
# 🗂 Task Complete — Summary
- **Outcome**: [Brief description of what was achieved]
- **Key Decisions**: [Any notable trade-offs or design choices]
- **Artifacts**: [Links to PR, relevant files, or external references]
EOF
The Draft page itself (with its page ID and URL) is the durable record. No additional writes to
TASK_LOG.md,knowledge/, or other filesystem locations are required or expected.
Iteration Loop
If the user provides feedback or requests changes after Phase 3:
- Acknowledge: Acknowledge the feedback in the chat.
- Start New Iteration: Enter Phase 1 again to propose how you will address the feedback.
- Append to Same Page: Do NOT create a new page. Append the new plan to the existing Task Journal under a new heading:
# 📋 Iteration [N]: Addressing Feedback. - Template: Use the mandatory Phase 1 template for each new iteration to maintain context and traceability.
Non-Goals
- Do NOT skip the plan approval gate.
- Do NOT execute multiple un-logged steps.
- Do NOT write to local agent filesystem (no
TASK_LOG.md, noknowledge/writes). - Do NOT include credentials, PII, or sensitive command outputs in Draft page content.