Skip to content
Back to skills

Hplan Openclaw

ASecurity

Hierarchical persistent planning for complex multi-phase tasks. Use when the user asks to plan, break down, or execute a task involving multiple steps, deliverables, or coordinated work streams. Creates a .plan/ directory with overview.md (global summary) and per-phase directories (specs, checklists). Integrates with OpenClaw's memory system for cross-session continuity. Trigger phrases: plan, break down task, create plan, phased plan, multi-step task, start planning.

  • 5 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added May 27, 2026
data-aigogit

Security analysis

A100/100

Pro scans all 6 files and shows the line behind each finding

Scanned May 27, 2026

npx -y skills add Noirewinter/hplan --skill hplan-openclaw --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Hplan Openclaw?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Hplan Openclaw
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/noirewinter-hplan-openclaw/badge)](https://www.skillsdirectory.com/skills/noirewinter-hplan-openclaw)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: hplan
description: >
  Hierarchical persistent planning for complex multi-phase tasks. Use when the user
  asks to plan, break down, or execute a task involving multiple steps, deliverables,
  or coordinated work streams. Creates a .plan/ directory with overview.md (global
  summary) and per-phase directories (specs, checklists). Integrates with OpenClaw's
  memory system for cross-session continuity. Trigger phrases: plan, break down task,
  create plan, phased plan, multi-step task, start planning.
version: 1.0.0
metadata:
  openclaw:
    emoji: "📋"
    homepage: https://github.com/Noirewinter/hplan
    files:
      - "templates/*"
---

# hplan — Hierarchical Persistent Planning

Use the file system as persistent working memory for complex multi-phase tasks. This skill solves two problems that arise in long task executions:

- **Goal drift** — the agent gradually forgets the original objective as the work progresses
- **Spec loss** — detailed requirements, deliverables, and dependencies vanish from context

## Core Idea

```
Context window = RAM (volatile, limited)
File system    = Disk (persistent, unlimited)
Memory system  = Long-term recall (cross-session, searchable)
→ Task structure and specs go to .plan/ (file system)
→ Key milestones and decisions go to memory (MEMORY.md / daily notes)
→ The overview stays concise for quick re-reading
→ All three layers work together to prevent drift and loss
```

## .plan/ Directory Structure

All plan files are stored in the `.plan/` directory under the current workspace:

```
.plan/
├── overview.md              ← Global summary (≤25 lines, re-read frequently)
├── decisions.md             ← Decision log
├── errors.md                ← Error log
└── phases/
    ├── phase1_xxx/
    │   ├── spec.md          ← Detailed spec for this phase
    │   └── checklist.md     ← Item-by-item completion status
    ├── phase2_xxx/
    │   └── ...
    └── ...
```

Use the templates in `templates/` as starting points for each file. Always use relative paths (`.plan/...`) when reading and writing plan files.

## Integration with OpenClaw Memory

hplan uses the file system for structured task data (.plan/ directory) and OpenClaw's memory system for cross-session awareness. They serve different purposes:

| Layer | What it stores | Why |
|-------|---------------|-----|
| `.plan/` files | Full specs, checklists, detailed plans | Structured, complete, not subject to compaction |
| MEMORY.md | Task goal, current phase, key decisions | Survives session restarts, loaded automatically |
| Daily notes | Progress snapshots, phase completions | Searchable history, compaction-safe via memory |

### When to write to memory

- **Plan creation**: Save the task goal and phase list to memory (`"Active hplan: [goal], phases: [list], plan at .plan/"`)
- **Phase completion**: Save a progress snapshot (`"hplan progress: completed phase2_xxx, now on phase3_xxx, 2/4 phases done"`)
- **Important decisions**: When recording in `decisions.md`, also save a one-line summary to memory
- **Session ending with incomplete work**: Save current state (`"hplan paused: phase2_xxx in_progress (3/5), next step: [description]"`)

### When to search memory

- **New session**: Use `memory_search("hplan")` to quickly find if there's an active plan and what state it was in
- **Resuming after interruption**: Search for the latest progress snapshot to orient quickly
- **Cross-referencing past decisions**: Search memory for decision context from earlier sessions

## Mandatory Behaviors

Since this environment does not have automatic hook injection, you must follow these behaviors manually to maintain plan awareness:

### 1. Check .plan/ before any action

**This is the first thing to do in every conversation, before any file writes.**

Check if `.plan/overview.md` already exists:
- **Exists with incomplete phases**: Show the user the current goal and progress, then ask: "There is an unfinished plan. Would you like to continue it, or discard it and start a new plan?" Wait for the user's answer before doing anything else.
- **Exists with all phases complete**: Silently delete the entire `.plan/` directory and proceed normally.
- **Does not exist**: Proceed normally.

Never overwrite or modify an existing `.plan/` without checking its status first.

### 2. Re-read overview.md frequently

Before every significant action (producing deliverables, making decisions, starting a new step), re-read `.plan/overview.md` to stay aligned with the goal and current phase. This is the most important behavior — it prevents goal drift.

### 3. Re-read the current phase spec before working

When starting work on any phase, always read the full `spec.md` and `checklist.md` for that phase first. Do not skip this step.

### 4. Update progress after each subtask

After completing a subtask, immediately update:
- The phase's `checklist.md` (`[ ]` → `[x]`)
- The progress count in `overview.md` (e.g., `in_progress (3/6)`)

### 5. Context recovery on new conversations

When a user says "continue" or references an existing plan:
1. First, use `memory_search("hplan")` to find the latest plan state
2. Then check if `.plan/overview.md` exists and read it
3. Read the current phase's `spec.md` and `checklist.md`
4. Confirm the current state with the user before proceeding

### 6. Save progress before session ends

When the conversation is ending with incomplete phases:
- Save the current state to memory: goal, current phase, progress count, and next action
- This ensures the next session can pick up quickly even before reading .plan/ files

### 7. Check completion before finishing

Before ending your response on a planning task, verify whether all phases in `overview.md` are marked `[x]`. If incomplete phases remain, continue working or inform the user about remaining tasks. The user can exit the plan at any time by deleting the `.plan/` directory.

## Workflow

### Step 1: Create the Plan

After receiving a complex task:

1. Check `.plan/` status as described in Mandatory Behavior #1
2. Create the `.plan/` directory structure
3. Write `overview.md` using the template (≤25 lines)
4. Create phase directories with `spec.md` (≤60 lines each) and `checklist.md`
5. Create `decisions.md` and `errors.md`
6. **Save the task goal and phase list to memory** for cross-session recall

### Step 2: User Confirmation (cannot be skipped)

Present the plan to the user and wait for explicit confirmation before executing.

**What to show:**
- The full `overview.md` content (goal and phase breakdown)
- A summary of each phase's `spec.md` (key deliverables and scope)
- Total number of phases

**What to ask:**
- Is the phase breakdown reasonable? Need to add, remove, or split phases?
- Is the scope for each phase correct? Anything missing?
- Ready to start execution?

**Iterating on the plan:**
- If the user suggests changes, update the plan files accordingly
- Present the updated plan and ask for confirmation again
- Repeat until the user explicitly agrees
- Keep `overview.md` and phase directories in sync during any modifications: adding a phase means both an overview entry AND a new directory; removing a phase means both are deleted

**Only proceed to execution after the user explicitly confirms.**

### Step 3: Execute Phase by Phase

1. Read the current phase's `spec.md` and `checklist.md` in full
2. Work through checklist items one by one
3. Update `checklist.md` after each completed item
4. When a phase is complete:
   - Update `overview.md` and move to the next phase
   - **Save a progress snapshot to memory**

### Step 4: Phase Switching

When moving to the next phase:
1. Mark the completed phase as `[x] ... → complete` in `overview.md`
2. Update `current_phase` to the next phase ID
3. Read the new phase's `spec.md` and `checklist.md` before starting work
4. Save the phase transition to memory

### Step 5: Error Handling

```
1st failure: Diagnose and fix → record in errors.md
2nd failure: Try a different approach → record in errors.md
3rd failure: Re-examine assumptions → update spec.md
Still failing: Explain the situation to user, request guidance
```

## Plan Lifecycle

### New conversation with existing .plan/

When a new conversation starts, check if `.plan/overview.md` exists:

- **Has incomplete phases**: Ask the user whether to continue the existing plan or discard it and start fresh. Wait for the user's decision before proceeding.
- **All phases complete**: Delete the entire `.plan/` directory automatically, then proceed with the new task.

### After plan completion

When all phases are marked `[x]`:
1. Save a completion summary to memory: `"hplan completed: [goal], all N phases done"`
2. Inform the user that all tasks are complete

## overview.md Format (≤25 lines)

```markdown
# [Project Name]
current_phase: phase2_xxx

## Goal
[One sentence describing the final objective]

## Phases
- [x] phase1_xxx: [Phase description] → complete
- [ ] phase2_xxx: [Phase description] → in_progress (2/4)
- [ ] phase3_xxx: [Phase description] → pending

## Blockers
None

## Last Decision
[One-sentence summary]

## Last Error
None
```

Never put detailed task descriptions, lengthy requirements, or step-by-step procedures in `overview.md`. Those belong in the phase directories.

## Key Constraints

- `overview.md` ≤ 25 lines (re-read it frequently to prevent goal drift)
- `spec.md` ≤ 60 lines per phase (split into multiple phases if longer)
- Always read phase spec before starting work on it
- Update checklist immediately after completing each item
- Record decisions in `decisions.md`, errors in `errors.md`
- Save key milestones to memory for cross-session continuity
- You should aim to execute all checklist items yourself rather than handing them off to the user

## When to Use

- Multi-phase tasks (3+ phases)
- Complex projects with multiple deliverables or work streams
- Tasks requiring coordination across many steps or dependencies
- Long-running projects spanning multiple sessions

## When NOT to Use

- Simple questions or short tasks
- Single-step work that needs no tracking

Files in this skill

  • SKILL.md10 KB
  • templates/checklist.md551 B
  • templates/decisions.md126 B
  • templates/errors.md119 B
  • templates/overview.md334 B
  • templates/spec.md1.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.