From hotl
Creates hotl-workflow-<slug>.md implementation plans with 2-5 minute tasks, exact file paths, loops, gates, verification, and git branch/worktree options after design approval.
npx claudepluginhub yimwoo/hotl-plugin --plugin hotlThis skill uses the workspace's default tool permissions.
Produce a `hotl-workflow-<slug>.md` file that `loop-execution` can execute. The `<slug>` is a short kebab-case name from the intent (e.g., `hotl-workflow-add-rate-limiting.md`). Each step should be 2-5 minutes of work. Include loop conditions and gates from the design's governance contract.
Compares coding agents like Claude Code and Aider on custom YAML-defined codebase tasks using git worktrees, measuring pass rate, cost, time, and consistency.
Designs and optimizes AI agent action spaces, tool definitions, observation formats, error recovery, and context for higher task completion rates.
Designs, implements, and audits WCAG 2.2 AA accessible UIs for Web (ARIA/HTML5), iOS (SwiftUI traits), and Android (Compose semantics). Audits code for compliance gaps.
Produce a hotl-workflow-<slug>.md file that loop-execution can execute. The <slug> is a short kebab-case name from the intent (e.g., hotl-workflow-add-rate-limiting.md). Each step should be 2-5 minutes of work. Include loop conditions and gates from the design's governance contract.
Announce: "I'm using the writing-plans skill to create the implementation plan."
Save as hotl-workflow-<slug>.md, where <slug> is a short kebab-case slug derived from the intent (e.g., hotl-workflow-add-user-auth.md, hotl-workflow-refactor-api.md). The slug prevents conflicts when multiple agents work on the same project simultaneously.
Default: project root. Opt-in override via .hotl/config.yml: workflows_dir: <path>. Resolution procedure:
Resolve the install path of hotl-config-resolve.sh using the same six-location rule documented for document-lint.sh and hotl-config.sh (see skills/document-review/SKILL.md):
scripts/hotl-config-resolve.sh~/.codex/hotl/scripts/hotl-config-resolve.sh~/.codex/plugins/hotl-source/scripts/hotl-config-resolve.sh~/.codex/plugins/cache/codex-plugins/hotl/*/scripts/hotl-config-resolve.sh~/.cline/hotl/scripts/hotl-config-resolve.sh~/.claude/plugins/hotl/scripts/hotl-config-resolve.shInvoke the resolver as a command proxy — it forwards argv to hotl-config.sh, no intermediate path-locator step:
bash <resolved-hotl-config-resolve.sh> get workflows_dir --default=.
Use the returned directory as the output location. . means project root (the unchanged default). Any other value is an opt-in override — write hotl-workflow-<slug>.md inside that directory, creating it if needed.
Projects with no .hotl/config.yml receive . from the --default=. fallback — behavior identical to before the config was introduced.
Format:
---
intent: [from design's intent contract]
success_criteria: [from design's intent contract]
risk_level: low | medium | high
auto_approve: true | false
# branch: custom/branch-name # optional — execution derives hotl/<slug> if absent
# worktree: true # optional — default false, creates git worktree instead of branch checkout
# dirty_worktree: allow # optional — proceed even if non-HOTL files are uncommitted
---
## Steps
- [ ] **Step N: [Step name]**
action: [what to do]
loop: false | until [condition]
max_iterations: [number, default 3]
verify: [scalar command OR typed block]
gate: human | auto # optional
CRITICAL — field indentation: action:, loop:, verify:, max_iterations:, and gate: MUST start at column 0 (no leading spaces). The document linter matches ^action:, ^loop:, etc. — any indentation (even 2 spaces under the list item) will fail validation. Only the sub-fields of structured verify: blocks (like type:, path:, assert:) are indented.
Choose the appropriate verify type for each step:
# Scalar shorthand (type: shell)
verify: pytest tests/ -v
# Structured
verify:
type: browser
url: http://localhost:3000/dashboard
check: priority badge renders with correct color
# Artifact with structured assert
verify:
type: artifact
path: migrations
assert:
kind: matches-glob
value: "*.sql"
# Greenfield scaffold check
verify:
type: artifact
path: src
assert:
kind: exists
# Multiple checks per step
verify:
- type: shell
command: npm test
- type: artifact
path: coverage/lcov.info
assert:
kind: exists
Break work into atomic steps:
kind: exists when the step creates a new file or directory from scratchkind: matches-glob only when path is an existing directory and value is a filename glob such as *.tsx or *.mdvalue; write path: src with value: "*.tsx", not path: . with value: "src/*.tsx"src or package.json with kind: exists, not matches-globrisk_level: high always generates gate: human on security-sensitive steps, regardless of auto_approve.
After saving the workflow file, run a self-check before offering execution options. Review the plan for:
gate: humanmax_iterations is reasonable (typically 3-5)If issues are found, fix them in the workflow file and re-check until clean. Do not ask the user to review — this is an internal quality pass.
Once the self-check passes, offer execution options:
"Plan saved to hotl-workflow-<slug>.md. How would you like to execute?"
Present the three execution modes using the current host tool's native invocation style. Never show Claude Code slash commands in Codex or any other skill-based agent.
Use these mappings:
$hotl:loop-execution on hotl-workflow-<slug>.md/hotl:loop hotl-workflow-<slug>.md$hotl:executing-plans on hotl-workflow-<slug>.md/hotl:execute-plan hotl-workflow-<slug>.md$hotl:subagent-execution on hotl-workflow-<slug>.md/hotl:subagent-execute hotl-workflow-<slug>.mdIf a previous run was interrupted, point the user to the host tool's native resume entry point.
$hotl:resuming on hotl-workflow-<slug>.md/hotl:resume hotl-workflow-<slug>.md(Always tell the user the exact filename so they can pass it to the execution request if multiple workflow files exist.)