OthmanAdi/planning-with-filesPublic

Persistent file-based planning for AI coding agents and long-running tasks. Crash-proof markdown plans, session recovery after /clear and compaction, per-turn re-injection against context rot, deterministic completion gate. Manus-style. Install from npm, the Claude Code plugin marketplace, or npx skills. Codex, Cursor, OpenCode, 60+ agents.

AI summary: A methodology and toolkit for persistent, file-based planning in AI coding agents.

Stars
27.3K
+54 today
Forks
2.3K
Watchers
117
Open issues
9
Open PRs
1
Contributors
~58
Commits
518
Branches
31

ShellMITCreated Jan 3, 2026Last push 2d agoLatest release v3.22.0+152 stars this week+657 this month

Quick answers

What is planning-with-files?
A methodology and toolkit for persistent, file-based planning in AI coding agents.
What does planning-with-files do?
Planning with Files is a robust methodology designed to solve context rot and amnesia in long-running AI coding agents. It enforces a persistent, file-based planning system where agents continuously maintain their state in markdown files like `task_plan.md`, `findings.md`, and `progress.md`. By externalizing context to the file system, the tool enables crash-proof plans, seamless session recovery after context clearing, and deterministic completion gating. It serves as an Agent Skill compatible with over 60 agents (including Claude Code, Codex, Cursor, and OpenCode), offering a Manus-style planning approach that protects against context window limits.
Who is planning-with-files for?
This toolkit is essential for software developers and engineers using AI coding assistants (like Claude Code, Cursor, or Codex) who need their agents to successfully complete complex, long-running tasks.
How do I get started with planning-with-files?
git clone https://github.com/OthmanAdi/planning-with-files.git
How popular is planning-with-files on GitHub?
OthmanAdi/planning-with-files has 27,272 stars and 2,269 forks on GitHub, and gained 152 stars in the last 7 days.
What license does planning-with-files use?
OthmanAdi/planning-with-files is released under the MIT license.

Star history

since Jul 28, 2026
010K20KJul 2026Aug 2026Sep 2026Oct 2026
27.3K stars as of Oct 4, 2026. Measured daily since Jul 28, 2026; GitHub no longer exposes earlier star timestamps.

Contribution activity

commits per day, last 52 weeks
OctNovDecJanFebMarAprMayJunJulAugSepMonWedFri2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 2 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 9 commits2026-01-09: 7 commits2026-01-10: 6 commits2026-01-11: 1 commit2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 1 commit2026-01-17: 9 commits2026-01-18: 2 commits2026-01-19: 0 commits2026-01-20: 12 commits2026-01-21: 2 commits2026-01-22: 4 commits2026-01-23: 0 commits2026-01-24: 1 commit2026-01-25: 1 commit2026-01-26: 4 commits2026-01-27: 4 commits2026-01-28: 1 commit2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 2 commits2026-02-04: 10 commits2026-02-05: 1 commit2026-02-06: 6 commits2026-02-07: 0 commits2026-02-08: 4 commits2026-02-09: 4 commits2026-02-10: 1 commit2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 4 commits2026-02-22: 2 commits2026-02-23: 0 commits2026-02-24: 1 commit2026-02-25: 9 commits2026-02-26: 4 commits2026-02-27: 3 commits2026-02-28: 5 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 2 commits2026-03-04: 4 commits2026-03-05: 2 commits2026-03-06: 3 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 1 commit2026-03-12: 0 commits2026-03-13: 0 commits2026-03-14: 1 commit2026-03-15: 0 commits2026-03-16: 2 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 6 commits2026-03-20: 11 commits2026-03-21: 0 commits2026-03-22: 4 commits2026-03-23: 0 commits2026-03-24: 2 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 0 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 3 commits2026-04-07: 4 commits2026-04-08: 2 commits2026-04-09: 6 commits2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 0 commits2026-04-14: 0 commits2026-04-15: 7 commits2026-04-16: 1 commit2026-04-17: 1 commit2026-04-18: 0 commits2026-04-19: 0 commits2026-04-20: 3 commits2026-04-21: 5 commits2026-04-22: 0 commits2026-04-23: 0 commits2026-04-24: 0 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 0 commits2026-04-28: 0 commits2026-04-29: 3 commits2026-04-30: 0 commits2026-05-01: 4 commits2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 1 commit2026-05-06: 0 commits2026-05-07: 0 commits2026-05-08: 0 commits2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 0 commits2026-05-13: 0 commits2026-05-14: 1 commit2026-05-15: 2 commits2026-05-16: 1 commit2026-05-17: 0 commits2026-05-18: 0 commits2026-05-19: 0 commits2026-05-20: 0 commits2026-05-21: 2 commits2026-05-22: 2 commits2026-05-23: 0 commits2026-05-24: 2 commits2026-05-25: 3 commits2026-05-26: 5 commits2026-05-27: 0 commits2026-05-28: 0 commits2026-05-29: 0 commits2026-05-30: 1 commit2026-05-31: 0 commits2026-06-01: 0 commits2026-06-02: 0 commits2026-06-03: 0 commits2026-06-04: 0 commits2026-06-05: 0 commits2026-06-06: 0 commits2026-06-07: 0 commits2026-06-08: 0 commits2026-06-09: 15 commits2026-06-10: 6 commits2026-06-11: 0 commits2026-06-12: 0 commits2026-06-13: 5 commits2026-06-14: 0 commits2026-06-15: 2 commits2026-06-16: 3 commits2026-06-17: 0 commits2026-06-18: 0 commits2026-06-19: 0 commits2026-06-20: 0 commits2026-06-21: 0 commits2026-06-22: 0 commits2026-06-23: 0 commits2026-06-24: 0 commits2026-06-25: 0 commits2026-06-26: 0 commits2026-06-27: 1 commit2026-06-28: 0 commits2026-06-29: 0 commits2026-06-30: 0 commits2026-07-01: 0 commits2026-07-02: 0 commits2026-07-03: 10 commits2026-07-04: 1 commit2026-07-05: 0 commits2026-07-06: 3 commits2026-07-07: 2 commits2026-07-08: 3 commits2026-07-09: 1 commit2026-07-10: 0 commits2026-07-11: 0 commits2026-07-12: 1 commit2026-07-13: 7 commits2026-07-14: 2 commits2026-07-15: 0 commits2026-07-16: 0 commits2026-07-17: 0 commits2026-07-18: 7 commits2026-07-19: 0 commits2026-07-20: 0 commits2026-07-21: 7 commits2026-07-22: 0 commits2026-07-23: 0 commits2026-07-24: 3 commits2026-07-25: 0 commits2026-07-26: 0 commits2026-07-27: 0 commits2026-07-28: 0 commits2026-07-29: 0 commits2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 8 commits2026-08-02: 0 commits2026-08-03: 1 commit2026-08-04: 0 commits2026-08-05: 0 commits2026-08-06: 1 commit2026-08-07: 0 commits2026-08-08: 0 commits2026-08-09: 9 commits2026-08-10: 0 commits2026-08-11: 0 commits2026-08-12: 0 commits2026-08-13: 0 commits2026-08-14: 2 commits2026-08-15: 0 commits2026-08-16: 0 commits2026-08-17: 0 commits2026-08-18: 3 commits2026-08-19: 3 commits2026-08-20: 4 commits2026-08-21: 4 commits2026-08-22: 2 commits2026-08-23: 0 commits2026-08-24: 0 commits2026-08-25: 0 commits2026-08-26: 0 commits2026-08-27: 0 commits2026-08-28: 0 commits2026-08-29: 9 commits2026-08-30: 5 commits2026-08-31: 4 commits2026-09-01: 0 commits2026-09-02: 9 commits2026-09-03: 5 commits2026-09-04: 0 commits2026-09-05: 4 commits2026-09-06: 1 commit2026-09-07: 3 commits2026-09-08: 4 commits2026-09-09: 5 commits2026-09-10: 1 commit2026-09-11: 0 commits2026-09-12: 0 commits2026-09-13: 2 commits2026-09-14: 1 commit2026-09-15: 5 commits2026-09-16: 6 commits2026-09-17: 28 commits2026-09-18: 6 commits2026-09-19: 14 commits2026-09-20: 0 commits2026-09-21: 5 commits2026-09-22: 12 commits2026-09-23: 8 commits2026-09-24: 3 commits2026-09-25: 9 commits2026-09-26: 1 commit2026-09-27: 2 commits2026-09-28: 0 commits2026-09-29: 0 commits2026-09-30: 0 commits2026-10-01: 2 commits2026-10-02: 0 commits2026-10-03: 0 commits
489 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Widely adopted

    27,272 stars

  • Permissive license

    MIT

  • Repeat trending

    7 trending appearances

What planning-with-files does

Planning with Files is a robust methodology designed to solve context rot and amnesia in long-running AI coding agents. It enforces a persistent, file-based planning system where agents continuously maintain their state in markdown files like `task_plan.md`, `findings.md`, and `progress.md`. By externalizing context to the file system, the tool enables crash-proof plans, seamless session recovery after context clearing, and deterministic completion gating. It serves as an Agent Skill compatible with over 60 agents (including Claude Code, Codex, Cursor, and OpenCode), offering a Manus-style planning approach that protects against context window limits.

This toolkit is essential for software developers and engineers using AI coding assistants (like Claude Code, Cursor, or Codex) who need their agents to successfully complete complex, long-running tasks.

  • Persistent State Management: Forces agents to externalize their thought process into specific files (`task_plan.md`, `findings.md`, `progress.md`).
  • Crash-Proof Session Recovery: Enables seamless continuation of tasks even after context resets or tool restarts.
  • Broad Agent Compatibility: Functions as an Agent Skill compatible with Claude Code, Codex, Cursor, Kiro, and 60+ other agents.
  • Anti-Context Rot Re-injection: Injects state files back into the prompt per-turn to maintain focus on long-running tasks.
  • Deterministic Completion Gate: Ensures agents complete all planned steps before prematurely declaring a task finished.

Where teams use it

Long-Running Task Execution

Guiding an agent through a multi-day coding task without losing context due to token limits.

Agent Debugging

Reviewing the agent's `findings.md` file to understand its reasoning and architectural decisions.

Collaborative AI Development

A human developer writing a high-level `task_plan.md` and handing it off to an agent for step-by-step execution.

Context Recovery

Resuming an interrupted coding session in Cursor or Claude Code by reading the existing file-based state.

Getting started: git clone https://github.com/OthmanAdi/planning-with-files.git

README

master branch
PWF: Every task. Every step. Three planning files on a brass-inlaid base beneath an engraved arch

Planning with Files   Trendshift: #1 Repository of the Day across all languages

The planning skill your agent cannot ignore.
Not a prompt it might follow. A hook that fires every turn, a plan on disk that survives /clear, and 3 out of 3 blind A/B wins to show it works.

Your agent's context window dies. The plan does not.

Persistent file-based planning for AI coding agents and long-running agent tasks: the skill keeps task_plan.md, findings.md, and progress.md on disk. Activated lifecycle hooks inject selected project planning context, so the plan survives context loss, /clear, crashes, and compaction. Automatic recovery reads project files only. Reading same-project local agent session records for aggregate counts or bounded replay requires an explicit catchup mode. Installs across 60+ agents via the Agent Skills standard, with native plugins for Claude Code, Codex CLI, Pi, Hermes Agent, OpenCode and DeepSeek Harness.

Stars Latest release skills.sh installs Skills Playground installs Downloads Closed issues Closed PRs

Benchmark: 96.7 percent assertion pass rate with skill Blind A/B: 3 of 3 wins MIT license

See it survive /clear · Install · Long-running tasks · First-class hosts · Multi-agent · The numbers

Proof, comparisons and the repository reference are further down · Full install guide

Quick Install

npx skills add OthmanAdi/planning-with-files --skill planning-with-files -g

All install methods: docs/installation.md.


Before and after /clear

Every coding agent loses its working memory when the context window resets. The plan does not have to die with it.

Illustrated workflow: planning files preserve the task state through a context reset

Built for long-running agent tasks

Important

Most harnesses ship a to-do list that lives inside the context window. planning-with-files ships a plan that lives on disk, is re-injected every turn, is hash-attested, and can hold the agent's stop until the plan reports complete.

That is the difference between an agent that forgets after /clear, compaction or a crash and one that resumes at the current phase. In the project's own measurements the plan on disk turned a 13.3-turn re-orientation into 5.0 turns, and the skill won 3 of 3 blind A/B comparisons (numbers and limits). Every mechanism below is a file on disk plus a hook, so it works the same on hour ten as on turn one.

The 3-file pattern

Context Window = RAM (volatile, limited)
Filesystem = Disk (persistent, unlimited)

→ Anything important gets written to disk.

The skill keeps your plan, findings, and progress in your project:

your-project/
├── task_plan.md   ← phases + checkboxes; the resume point after /clear
├── findings.md    ← research notes and decisions, appended as you go
└── progress.md    ← session log and test results

Parallel tasks get isolated directories instead: .planning/YYYY-MM-DD-slug/ with the same three files, selected via .active_plan (v2.36.0+). Plain markdown, gitignored by default, no runtime state anywhere else.

The pattern is the one Manus described before Meta acquired it for $2 billion on December 29, 2025, eight months and $100M+ of revenue after launch:

"Markdown is my 'working memory' on disk. Since I process information iteratively and my active context has limits, Markdown files serve as scratch pads for notes, checkpoints for progress, building blocks for final deliverables." — Manus AI

First-class hosts: native plugins

Tip

On these hosts planning-with-files runs as a native plugin: per-turn plan injection, progress reminders, the completion gate, /pwf commands and model-callable tools, with no shell hooks to register. Every other platform gets the skill through the Agent Skills standard and, where the host supports it, the frontmatter or config-file hooks listed in the platform setup guides.

🌐 Available in 5 other languages

🇸🇦 العربية / Arabic

npx skills add OthmanAdi/planning-with-files --skill planning-with-files-ar -g

🇩🇪 Deutsch / German

npx skills add OthmanAdi/planning-with-files --skill planning-with-files-de -g

🇪🇸 Español / Spanish

npx skills add OthmanAdi/planning-with-files --skill planning-with-files-es -g

🇨🇳 中文版 / Chinese (Simplified)

npx skills add OthmanAdi/planning-with-files --skill planning-with-files-zh -g

🇹🇼 正體中文版 / Chinese (Traditional)

npx skills add OthmanAdi/planning-with-files --skill planning-with-files-zht -g

These are real translations, not an English body with a translated description: the SKILL.md prose, the templates, and the user-facing output of check-complete, init-session and session-catchup are all localized. The status tokens stay literal English (**Status:** complete) on purpose, because check-complete.sh matches them with grep -F, so translating them would disable the completion gate.

Since v3.10.0 the variants also ship the full script surface: attestation, the Stop gate, the ledger, phase status and plan-doctor used to be canonical-only, which quietly made every non-English install a subset install. Full details, including what changed on the plugin route in v3.11.0, are in docs/languages.md.

They live under skills/i18n/, one directory deeper than the canonical skill. The install commands above are unchanged, because npx skills add resolves --skill by skill name across the whole repository. The Claude Code plugin scan reads skills/*/SKILL.md without recursing, so the plugin route registers the canonical skill alone and no longer carries five extra descriptions in every session's system prompt. On that route the /plan-ar, /plan-de, /plan-es, /plan-zh and /plan-zht commands read the translated skill from disk instead of invoking it by name.

Enhanced Support: per-IDE setup guides
IDE Installation Guide Integration
Claude Code Installation Plugin + SKILL.md + Hooks
Cursor Cursor Setup Skills + hooks.json
GitHub Copilot Copilot Setup Hooks (incl. errorOccurred)
Mastra Code Mastra Setup Skills + Hooks
Gemini CLI Gemini Setup Skills + Hooks
Kiro Kiro Setup Agent Skills
Codex Codex Setup Skills + Hooks
Hermes Agent Hermes Setup Skill + native plugin (tools, /pwf, pre_llm_call, post_tool_call, pre_verify gate), CLI and Desktop
CodeBuddy CodeBuddy Setup Skills + Hooks
FactoryAI Droid Factory Setup Skills + Hooks
OpenCode OpenCode Setup Native plugin opencode-planning-with-files (chat.message injection, write reminders, compaction flush, session.idle gate, pwf_* tools, /pwf commands) + skill
DeepSeek Harness DeepSeek Harness Setup Native plugin dsh-planning-with-files (agent/pre-step injection, write reminders, post-compaction restore, agent/turn-stopping gate, pwf_* tools, /pwf commands) + skill
Standard Agent Skills: discovery paths
IDE Installation Guide Skill Discovery Path
Continue Continue Setup .continue/skills/ + .prompt files
Pi Agent Pi Agent Setup .pi/skills/ (npm package)
OpenClaw OpenClaw Setup .openclaw/skills/ (docs)
Autohand Code Autohand Code Setup ~/.autohand/skills/ or .autohand/skills/
Antigravity Antigravity Setup .agent/skills/ (docs)
Kilocode Kilocode Setup .kilocode/skills/ (docs)
AdaL CLI (Sylph AI) AdaL Setup .adal/skills/ (docs)

Note: If your IDE uses the legacy Rules system instead of Skills, see the legacy-rules-support branch.

Sandbox runtimes
Runtime Status Guide Notes
BoxLite ✅ Documented BoxLite Setup Run Claude Code + planning-with-files inside hardware-isolated micro-VMs

BoxLite is a sandbox runtime, not an IDE. Skills load via ClaudeBox, BoxLite's official Claude Code integration layer.

❓ FAQ

How do I stop my coding agent from losing its plan after /clear or a crash?

The plan lives on disk in task_plan.md, findings.md, and progress.md, not only in the context window. At the start of each turn the UserPromptSubmit hook re-injects selected active-plan context, and after a /clear or a new session the skill re-reads project files from disk. This automatic path does not inspect agent transcript stores.

What is the difference between planning-with-files and an agent memory tool?

Agent memory tools (vector stores, knowledge graphs) help an agent recall facts from past sessions. planning-with-files manages active execution state: the phases, status, dependencies, and completion check for the task the agent is working on right now. The problem it solves is planning continuity, not retrieval, and the two are complementary.

How does this prevent context rot?

Context rot is the drift that sets in as the context window fills and earlier instructions get crowded out. Because the plan is re-injected at the start of each turn from disk, the goals and phase status stay in the model's attention window as the conversation grows. This is an implementation of what Anthropic calls structured note-taking: write durable state to files outside the window, then read it back in when needed.

Which coding agents does this work with?

Claude Code, OpenAI Codex CLI, Cursor, GitHub Copilot, Kiro, OpenCode, Continue, Pi, Hermes Agent, CodeBuddy, Factory, Mastra, and 70+ others via the SKILL.md open standard (the npx skills installer alone targets 71 agents). Since v3.7.0 the repo also ships the cross-tool .agents/skills/planning-with-files/ layout in-tree, so tools that read the Agent Skills standard path natively (Zed, Amp, Warp, Devin, Antigravity, Gemini CLI, Cursor) discover the current skill from a plain git clone with no per-tool setup. Installation is one command; see Quick Install above.

How does this work with Claude Code's plan mode?

They are complementary stages, not alternatives. Plan mode is where you design and approve the approach before execution. planning-with-files persists the live execution state (phase status, findings, errors, progress) on disk while the work runs and re-injects it every turn. The handoff is one step: after accepting a plan-mode plan, tell the agent to write it into task_plan.md as phases (or invoke /plan and let the skill create the files from it), then execute in normal mode. From that point the hooks keep the phases in the attention window, and the files survive /clear, compaction, and session death.

What happens to the plan files after a task is complete?

They are working memory, not a tracked deliverable. task_plan.md, findings.md, progress.md, and the .planning/ directory are gitignored by default and are not archived automatically: the next task overwrites the root plan, and a slug directory just stops being active. Anything worth keeping should be promoted into code, a commit, or a doc. See After Completion: What Happens to the Plan Files for the full lifecycle and how to retain a completed plan. This is a deliberate default, not a missing feature; a completion-triggered archive step is a welcome opt-in extension.

How fast are the hooks?

One hook fire measures 289ms wall-clock since the v3.6.0 optimization, down from 2.0 to 2.4 seconds before it, and the injected plan block is KV-cache stable by construction. The plan stays in the attention window every turn, and /clear stops being fatal.

📦 Releases
Version Highlights
v3.22.0 OpenCode 2 support with native plugin registration, context injection, planning tools and the completion gate. OpenCode 1 remains supported; moved v2 sessions follow their current project (#298).
v3.21.0 Explicit root and named attestation targets preserve active selection and project containment (#296). PowerShell initialization retries the concurrent pointer pre-check race with bounded, validated attempts (#294).
v3.20.8 Claude Code sessions without a plan no longer end every reply with a Stop notice (#288). Cursor hooks move to the current schema with sessionStart injection (#262), Gemini CLI hooks inject through BeforeAgent and AfterTool hookSpecificOutput (#292), and both adapters' hook scripts are now executable on macOS and Linux; the Cursor stop hook stays silent once every phase is complete. PowerShell pointer replacement recovers or removes only its own ReplaceFile backup (#254).
v3.20.7 Fixes npm capability disclosure metadata and three unavailable contributor portrait endpoints. The npm package continues to ship the canonical skill and full repository README.
v3.20.6 Phase-status writers claim one lock owner even with Windows-native mkdir (#282). OpenCode, DSH and Hermes safely replace linked active pointers (#283, #284). PowerShell named plans reject read-only pointers before creation (#285), work under bracketed paths (#286), and retry transient concurrent pointer writes and inspection races (#287). The remaining ReplaceFile artifact case stays open in #254.
v3.20.5 OpenCode replay tolerates malformed parts (#273). Initialization reports attestation failures accurately (#277), analytics plans include Next Step (#279), and PowerShell denied writes fail without activating an incomplete named plan (#280).
v3.20.4 PowerShell route on OneDrive: an .active_plan pointer carrying the OneDrive Files On-Demand reparse attribute no longer counts as unsafe, so the Cursor hooks, the resolver and set-active-plan.ps1 work in projects under OneDrive (#275). The session-catchup copy guard checks tracked copies only (#274).
v3.20.3 A symlinked or junctioned directory under .planning/ is never a plan on any route: the shell counters skip it (PR #271 by @ShaunLinTW, #270), and the selection paths of the shell family plus the Codex, OpenCode and DSH counters refuse it too, so one real plan next to a linked one no longer becomes an mtime guess.
v3.20.2 Hermes plugin: Hermes 0.21.3 re-homes TERMINAL_CWD to the home directory on the first CLI turn, so the plan in the launch directory was skipped silently. The first turn now says why nothing was injected and names the PWF_PLAN_ROOT pin, /pwf-status and /pwf print the same diagnostic, and the slash commands honor the pin (#272, reported by @ericshunhinglee-cloud).
v3.20.1 Fixes four maintainer-filed issues from the v3.19.0 and v3.20.0 cycles: newline-safe shell slugs (#257, PR #266 by @TayfurYldz), attestation bound to the current project when PWF_PLAN_ROOT is inherited (#261, PR #265 by @TayfurYldz), malformed OpenCode part rows skipped by session catchup (#258, PR #263 by @ShaunLinTW), and the several-plans rule in the Hermes plugin (#264, PR #267 by @kuei51307-hub).
v3.20.0 DeepSeek Harness becomes a first-class host (closes #252, reported by @loarland): the native Cordis plugin dsh-planning-with-files injects the plan on every prompt and after compaction, reminds after writes, holds the turn boundary in gated mode, and registers /pwf, /pwf-status and the pwf_* tools; dsh plugin --profile web add dsh-planning-with-files. Cursor's native PowerShell hooks resolve named plans (PR #251 by @kuei51307-hub, item 9 of #250); the PowerShell resolver and attester run on Windows PowerShell 5.1 with a pin and in bracketed project paths; the OpenCode and DSH plugins require PLAN_ID for several named plans (the #240 rule); the README is shorter (one 3-file pattern block, a first-class hosts table, one commands collapsible).
v3.19.0 Adds PowerShell named-plan slug mode (#247), anchors session catchup only on exact planning filenames across every shipped copy (#248), and replaces active-plan pointers through the selectors with planning-root containment in both initializers (#249).
v3.18.3 Silences completed-plan notices in shared Stop gates and Codex while preserving explicit reports and gate safeguards.
v3.18.2 Isolates Python in Codex, Gemini, and Copilot shell adapters and makes IDE sync verification fail on missing canonical sources (#244, #245).
v3.18.1 Fixes active-plan display and listing for UTF-8 BOM-prefixed pointers from Windows editors and PowerShell workflows across the canonical shell helpers (#243).
v3.18.0 Lists saved plans and phase counts with --list or PowerShell -List (#242). Supports the shipped translated templates, checks project containment, and delivers the canonical helpers across IDE bundles.
v3.17.2 Fixes #241: the native Codex manifest disables legacy command migration, removing 13 redundant source-command-* skills from plugin installs. The canonical planning skill, Codex hooks, and Claude commands remain available.
v3.17.1 Fixes #240: two named plans in the same project now require PLAN_ID, even without .planning/sessions/. A shared pointer or newest-plan guess cannot redirect a Codex session across compaction. Ambiguous hooks inject no plan and Stop does not gate against a guessed plan.
v3.17.0 Every Claude Code hook fire forked about 130 processes, and under Git Bash on Windows that took 7 to 12 seconds against the 10 second hook timeout. Claude Code discarded the plan context ("UserPromptSubmit hook timed out after 10s") and every Bash, Read, Grep and Edit call waited 5 more seconds in PreToolUse before it ran. Linux and macOS never showed it because a fork costs milliseconds there. The events now run in one Python process, scripts/inject-plan.py, a byte-identical twin of the shell chain proven by a parity suite on all three CI legs, with the shell chain kept as the reference and as the fallback for hosts without Python: 0.3 s per prompt and per tool call on the reporting machine. Hook interpreters now start in isolated mode, so a repository's own secrets.py or hashlib.py is never imported by a hook. PWF_FAST_PATH=0 forces the shell chain.
v3.16.1 Attached Codex, Hermes and Pi sessions require an explicit plan when several tasks share an armed project. Standalone hooks deliver model context through the proper event fields, preserve native session identity and throttle progress reminders. Packages include the loop template and Stop dependencies; recovery and security guidance state the selected-plan and trust boundaries.
v3.16.0 The PostToolUse progress reminder was shown to you and never to Claude (closes #239, reported by @sortakool). It was emitted as systemMessage, which Claude Code delivers to the user, so a sentence addressed to the model reached the person instead, after every Write, Edit and Bash call for a whole session. Both the plugin dispatcher and the Codex adapter now emit hookSpecificOutput.additionalContext, the shape the session-start path in the same file already used. The reminder is also throttled to once per turn instead of once per tool call, and Bash is off the PostToolUse matchers so ls and git status stop tripping a "record what you changed" nudge. PreToolUse keeps Bash. Fixing this surfaced one more copy of the #237 fallback in the plugin dispatcher, now closed.
v3.15.0 A mistyped PLAN_ID used to attest and inject a different plan, and a slug plan could switch off the project's own policy (closes #237 and #238, both reported by @sortakool). An explicit PLAN_ID is now a binding in every resolver, shell, PowerShell, Hermes, OpenCode and Pi: it resolves or it stops, and every consumer that reads or writes the selected plan says which selector refused instead of quietly using the root plan. A project's root .mode is now a floor rather than a default that slug scope replaces, so creating a plan can no longer drop a committed attestation requirement or completion gate; a slug may raise strictness, never lower it. Also fixes plan-doctor.sh reporting PASS injection: emits plan context on a state where nothing was injected at all (closes #236): classification branches on the ===BEGIN-PWF-DATA framing rather than substring-matching control strings against the plan body, so a plan quoting one of them no longer trips a false tamper warning and a reworded banner degrades to a warning instead of a silent PASS. 30 new tests, each with its own control arm.
v3.14.0 OpenCode becomes a first-class host through its own plugin system (closes #235, reported by @luyanfeng). New npm plugin opencode-planning-with-files: chat.message injects the framed plan on every turn, tool.execute.after reminds after writes, experimental.session.compacting keeps the plan pointer and attestation in the summary, and session.idle runs the completion gate in gated mode by re-prompting the session (Tier 2). Tools pwf_init, pwf_status, pwf_check; commands /pwf, /pwf-status. Same resolver, ambiguity rule, gate table and frame format as the shell route, 22 Vitest tests, verified live in OpenCode 1.18.21. docs/opencode.md now names the real install path (npx skills add -g lands in ~/.agents/skills/, which OpenCode reads) and the tier tables stop crediting OpenCode with hooks it never ran.
v3.13.0 Hermes Agent becomes a first-class host, CLI and Desktop. The native plugin now resolves .planning/<slug>/ plans (the old adapter only saw a root task_plan.md), honours PLAN_ID, PWF_PLAN_ROOT and PLANNING_DISABLED, registers /pwf, /pwf-status and /plan-status (the shipped Markdown command files were never loaded by Hermes), bundles the skill, creates gated and autonomous plans with attestation from /pwf --gated <name>, and answers Hermes' pre_verify hook with the completion gate. Verified in a live Hermes 0.19.1 plugin manager; the Hermes skills-guard scanner rates the bundle SAFE. Native Windows path fix (%LOCALAPPDATA%\hermes). README reorganized: install and platforms first, proof and reference at the bottom, nothing removed.
v3.12.1 Attestation now stays in slug mode when the helper runs inside .planning/<slug>/ (fixes #234, reported by @sortakool). The shell and PowerShell helpers update the slug's .attestation instead of creating a legacy .plan-attestation, and invalid explicit selectors stop without falling back to another local plan. PowerShell regression coverage exercises attest, show, and clear from the nested directory. The release also restores macOS system-alias handling for the Codex and Hermes context readers and keeps unsafe active-plan pointers from falling back to an unrelated legacy plan.
v3.12.0 Session recovery is now consent-bound and the published planning surface is fully auditable. Automatic hooks read project planning files only. Same-project session metadata and bounded replay require explicit CLI modes, cross-project records remain quarantined, and phase-status writers fail closed when their shared lock is unavailable. Hidden template instructions were replaced with visible guidance, capability descriptions now disclose actual context and gate behavior, and the complete 29-file ClawHub stage is rebuilt and verified from canonical tracked source.
v3.11.2 Skills-only manual installs now copy one skill at the documented depth (PR #229 by @dylanpulver). The Unix and PowerShell commands name skills/planning-with-files instead of copying skills/*, so the skills/i18n/ subtree no longer lands below the loader path. Both instructions create ~/.claude/skills first, which keeps a fresh install from placing SKILL.md directly under skills/. A tracked-Markdown test rejects the old whole-directory copy shape and locks the destination-creation step.
v3.11.1 The Copilot error hook could not be parsed by a POSIX shell (PR #228 by @dylanpulver). error-occurred.sh fed its two Python helpers with <<<, a bash here-string that dash does not implement, and the suite invokes the shell hooks as sh script, so the #!/bin/bash shebang never applied. On ubuntu runners the file died at line 32 with Syntax error: redirection unexpected, and master CI had failed on that leg for five consecutive runs. Both call sites now pipe with printf '%s\n'. The sibling echo form was deliberately not copied: dash expands backslash escapes, which would have traded a loud syntax error for silent JSON corruption. No user was affected, because Copilot invokes the hook under a bash key that bypasses the shebang.
v3.11.0 The plugin registers one skill instead of six (closes #130, reported by @sean3808; implemented by @dylanpulver in PR #226). The five language variants moved from skills/planning-with-files-<lang>/ to skills/i18n/planning-with-files-<lang>/. Nothing deleted, nothing renamed, every npx skills add --skill command unchanged: Claude Code scans skills/*/SKILL.md one level without recursing, while the skills CLI resolves --skill by name across a recursive scan. Measured against the real loader, not inferred: 6 registered skills to 1, 19 components to 14, always-on cost roughly 2,254 to 1,042 tokens per session, with all thirteen slash commands intact. /plan-de and its four siblings read their translated skill from disk and state that the status tokens stay literal English, because check-complete.sh matches them with grep -F. Also fixes seven shell hooks that could emit JSON with a raw control character when run under a POSIX-mode shell on macOS.
v3.10.2 PLANNING_DISABLED=1 had never reached the GitHub Copilot or Cursor hooks (PRs #223, #222 and #224, by @Whxuan0701). Both routes read task_plan.md directly instead of dispatching to the script that carries the #195 guard, so eighteen hook entry points ignored the opt-out entirely: a one-shot task sharing a working directory with an unrelated plan had no way to detach from it. Auditing the merge found three more: the disabled PreToolUse branch answered permissionDecision: allow, so turning the skill off widened Copilot's permissions instead of staying neutral; .cursor/hooks/stop.ps1 was the last copy the #191 zero-phase guard never reached, still auto-continuing on 0/0 phases done; and error-occurred.ps1 had never logged an error on Windows because it read stdin into $input, PowerShell's automatic pipeline variable, which does not hold the assignment under -File. The opt-out tests now run every hook with the variable unset as well as set, because the disabled-only versions stayed green against a fleet gutted to emit {}. Suite 424 to 430.
v3.10.1 Codex context hooks now emit valid event JSON on Linux and macOS (fixes #220, reported by @mfehlhaber). SessionStart, UserPromptSubmit, and PreCompact use the same adapter as Windows, so planning output beginning with [ is no longer misread as malformed JSON. This release also aligns the tracked npm payload with the published 20-script package, corrects the release reference, and makes the version bumper safe to run without the gitignored ClawHub stage in a fresh clone.
v3.10.0 Two sessions sharing one plan directory could silently destroy each other's work (closes #217, reported by @dubes394). Both read task_plan.md, both write it back, and the later write discards the earlier one's phases while injection, plan-doctor and the Stop gate all read the result as an ordinary edit. Attestation could not cover it: it compares against a baseline a human approved once, not against what the hooks last observed, and it is a read side gate that cannot stop the stale write. The guard compares progress rather than hashes, because a hash comparison flags a single agent's own edit on its very next fire; checked items and completed phases only go up during normal work, so a decrease means work is gone. Verifying #130 alongside it exposed that every non-English install was a subset install, missing attestation, the Stop gate, the ledger, phase status and plan-doctor entirely, plus a Windows UTF-8 crash fix that never left the canonical skill. Closed additively, 60 files created and 0 overwritten, with the translator-owned scripts pinned so no future sync can English them. Also fixes a README top that showed five labels and no numbers on a phone. Suite 411 to 417.
v3.9.0 A Codex thread whose cwd was a shared parent injected an unrelated project's plan on every hook fire (closes #212, reported by @webwww123). Resolution was cwd relative with no notion of a thread, so the shared parent's pointer was the only one the hook could see. Adds PWF_PLAN_ROOT for an absolute plan root binding, which a cwd relative PLAN_ID slug structurally could not express, and refuses to inject when the cwd is ambiguous rather than guessing. Verifying the report exposed that PLANNING_DISABLED=1 was inoperative on eleven of thirteen install routes, that the Stop hook could never find its script on six hosts, and that eight shipped PowerShell scripts could not be parsed by Windows PowerShell 5.1 at all, leaving Cursor injection and both Chinese variants' init-session dead on Windows. Also closes #211 (a provider error queued another request into the same failing provider, and the Pi status bar stopped tracking the plan after approval) and #210 (injection determinism now asserted, five routes normalized). Suite 311 to 411.
v3.8.2 Session recovery silently found nothing for any project path containing a dot, a space, or any other non-alphanumeric character (closes #209, reported by @seathatflowsinourveins). Three copies of session-catchup.py still folded only /, \ and :, and one of them is the copy every /plugin install runs on Linux, macOS and Git Bash. Against a real store holding 89 sessions the shipped resolver produced 0 bytes where the fix produces 11336 and recovers 166 messages. Folding now counts UTF-16 code units, so emoji folder names resolve too, and a per-session cwd filter stops two projects that fold to one directory name from reading each other's transcripts. One vector table now runs across every copy, so this drift cannot come back. Suite at 311.
v3.8.1 Pi extension: plan resolution no longer depends on the live shell cwd (closes #208, reported by @fd44fdg). An agent that cd'd into a subdirectory lost the plan, recitation went dark, and the "No task_plan.md found" warning fired on every write. Resolution now anchors on the nearest ancestor with planning state, bounded by the .git repository boundary, with slug-validation and containment parity with the sh resolver; every injection states which plan it resolved (plan: <id>), making slug-over-root shadowing visible. Also: init-session heredocs never carried the v3.8.0 Next Step section; all copies fixed with an output-level regression test. Gated by an Opus adversarial pass plus a five-lens Sonnet reliability fleet.
v3.8.0 The Stop hook never fired on macOS or Linux (a dead install-path fallback stacked on PowerShell-first dispatch), and session recovery searched a project directory that does not exist for POSIX or underscore project paths; both fixed with tests that execute the hooks end to end. Opt-in structure-aware injection (PWF_INJECT=smart) keeps the active phase and decision journal in the window late in long plans. Next Step pointer in the templates, tool-result outcomes in session catchup, macOS CI leg plus a BSD-userland simulation harness, resolve-plan-dir.ps1 parity with fail-closed containment, UTF-8-safe ledger truncation, pinned line endings, and a rebuilt README with honest benchmark charts. Suite at 301.
v3.7.0 Agent Skills standard layout ships in-tree: .agents/skills/planning-with-files/ carries the full canonical surface, so tools that read the standard path natively (Zed, Amp, Warp, Devin, Antigravity, Gemini CLI, Cursor) discover the current skill from a plain git clone. Locked into the 18-entry parity set; plan-doctor.sh now ships in every synced IDE folder.
v3.6.0 Windows-native coreutils silently killed plan resolution and every hook injection (backslash realpath broke the containment match); fixed, with per-fire latency down to 289ms on the machine that measured 2.0-2.4s at v3.4.0. New /plan-doctor self-check, install-route matrix in the docs, suite green at 217.
v3.5.1 Codex Windows shell resolver skips WSL bash launchers, pwf-hook.cmd hardens Python discovery, and Pi recitations are delivered as nextTurn so interactive tools are not broken.
v3.5.0 Codex Windows hooks emit valid JSON and survive Unicode (PR #205 by @yolo0731, closes #204); the Pi extension stops re-nagging closed and complete plans (#203 by @ziyu4huang); the plan lifecycle is documented (#202 by @kcinzgg). Four broken language-command references fixed, /plan-zht added.
v3.4.1 Codex hooks now run on Windows (closes #201, reported by @mahdiit): per-hook commandWindows overrides, a pwf-hook.cmd launcher that never resolves the Store python3 alias, and a Git Bash resolver anchored on git.exe.
v3.4.0 PLANNING_DISABLED=1 per-invocation opt-out so one-shot sessions that merely share a cwd with an incomplete plan are not hijacked (closes #195, reported by @marcmuon). Ships in every distributed copy.
v3.3.0 Pi hooks wait for explicit approval via /plan-execute before activating (PR #193 by @Dikshj, closes #190, requested by @lazyst). A plan with a tampered attestation cannot be approved.
v3.2.0 Repository health audit: session-catchup.py (the resume-after-/clear mechanism) was non-functional on Windows and inject-plan.sh silently dropped injection under aliased paths; both fixed, plus the "0/0 phases" false status (closes #191, #188, addresses #103). SECURITY.md added. (thanks @Stephen-abc, @igorcosta, @mixian939, @AvitalAviv)
v3.1.3 Hotfix: v3.1.2's unquoted SKILL.md description broke the YAML frontmatter; quoted everywhere plus a new frontmatter-validity test.
v3.1.2 Session-catchup works outside the plugin runtime via a $HOME fallback (PR #186 by @shunfeng8421, closes #185, reported by @xwang118), .hermes parity, refreshed skill descriptions.
v3.1.1 Codex verification command matches the current hooks feature key (PR #184 by @Fat-Jan).
v3.1.0 Codex Stop hook no longer blocks on an incomplete plan, native Codex PreCompact parity, Pi extension test suite, SHA-cache docs (PR #180 by @2023Anita closes #178, PR #181 by @GongYuanCaiJi, PRs #174/#175 by @mvanhorn close #163, #164).
v3.0.0 Autonomous and gated modes for long-running runs: append-only JSONL run ledger, opt-in completion gate, attestation default-on in v3 modes, MIGRATION.md. No breaking changes: with no mode marker the hooks produce byte-identical v2.43 output.
v2.43.0 CONTRIBUTING.md + OpenCode docs fix + .continue/.gemini/.kiro variant sync to parity (PR #171 by @Skulli485, issue #172 by @luyanfeng, issues #159/#160/#161): first CONTRIBUTING.md at repo root, auto-surfaced by GitHub in the PR creation flow. docs/opencode.md Quick Install switched from `git clone` to `npx skills add` after the manual-install block was found referencing a doubled path (planning-with-files/planning-with-files/SKILL.md). Three historically lagging IDE SKILL.md variants brought to v2.43.0 parity: .continue from v2.34.0 (9 versions behind), .gemini from v2.34.0 (9 versions behind), .kiro from v2.32.0-kiro (11 versions behind), preserving IDE-specific frontmatter, hook shapes, and Kiro Agent Skill layout.
v2.42.0 POSIX init-session.sh portability + plugin-vs-skill install transparency + Topic Handoff docs (PR #169 and PR #170 by @carterusedulm2-maker): init-session.sh and its 7 mirrors swap the [[ ]] bashism for POSIX [ ] so tests/test_init_session_slug.py runs cleanly under dash (Ubuntu) when the test invokes the script via sh rather than the bash shebang. Canonical SKILL.md gains an install-scope clarification: /plugin install ships the commands/ folder with /plan-goal and /plan-loop, but npx skills add (and ClawHub) do not. A manual fallback procedure for both wrappers is documented inline so skill-only sessions can produce the same effect by invoking Claude Code's native /goal and /loop primitives directly. docs/quickstart.md and docs/workflow.md add an optional Topic Handoff Pattern for very long-running operational topics (handoffs/<topic>.md alongside progress.md).
v2.41.0 Windows exec-bit test skip + attestation-locking docs (PR #167 by @gauravvojha, Issue #166; PR #168 by @CleanDev-Fix, Issue #165): test_script_permissions.py now skips on Windows with a class-level pytest.mark.skipif(sys.platform == "win32") since NTFS does not store POSIX executable bits; the 2 pre-existing Windows exec-bit failures (present since v2.34.1) are resolved. New dedicated docs/attestation-locking.md page documents the attest-plan.sh write path, the atomic temp-rename guarantee, the optional flock advisory lock, and the recommended slug-mode workflow for parallel sessions.
v2.40.1 Pi adapter SKILL.md sync gap + npm scope correction (PR #158 by @TomXPRIME): the .pi SKILL.md lagged the canonical Claude Code copy after v2.39.0; v2.40.1 backports Rule 7 (Continue After Completion), the Security Boundary section, the expanded Scripts section covering set-active-plan.sh/resolve-plan-dir.sh/attest-plan.sh plus the parallel task workflow, and the "Write web content to task_plan.md" anti-pattern row. The Pi npm package is renamed from the unscoped pi-planning-with-files to @tomxprime/planning-with-files, matching the package author's namespace; install docs updated accordingly. Author, repository, license, and bugs URLs preserved.
v2.40.0 Slug-mode resolution fixes + perf cache + KV-cache hygiene + Pi false-positive fix (9 items from the v2.40 R&D experiment): hook resolution order inverted so slug-mode wins over legacy root, .active_plan target dir + content validated against a safe-identifier regex, check-complete.sh honors $PLAN_ID and .active_plan, Pi extension isDangerousBashCommand swapped to a word-boundary regex array so benign git push origin <branch> no longer fires the warning, mtime-keyed SHA-256 cache cuts attestation-hook latency on Windows Git Bash, progress.md tail timestamps normalized for KV-cache prefix stability, resolve-plan-dir.sh mtime resolution made portable across GNU/BSD/macOS/Alpine/Git Bash with python+perl fallbacks, attest-plan.sh uses atomic temp-rename with optional flock to close the concurrent-writer race. 130 pass / 2 pre-existing Windows exec-bit fails, +20 new tests.
v2.39.0 Pi Coding Agent full hook parity extension + Codex hooks flag fix (PR #157 by @TomXPRIME, Issue #154 by @DLI1996): the .pi adapter ships a bundled TypeScript extension mapping eight Pi lifecycle events to the same behavior the skill provides on Claude Code, with a four-mode system (auto/parity/cache-safe/notify) that auto-detects DeepSeek and keeps the KV-cache prefix stable. Pi runtime reads the same .attestation file the canonical v2.37 attest-plan.sh writes, so attesting once locks the plan across both runtimes. Four slash commands (/plan-status, /plan-attest, /plan-goal, /plan-loop) mirror their Claude Code counterparts. Separately, docs/codex.md swaps from codex_hooks = true to hooks = true to match the current OpenAI canonical key, with an alias note so users on older configs are not pushed to migrate.
v2.38.1 Description field garbled in Claude Code skill picker (surfaced via Discussion #153 by @bmyury): hook commands embedded '---BEGIN PLAN DATA---' plan-injection delimiters; Claude Code's skill-discovery loader split frontmatter on the first --- and read the truncated value as the description. Swapped to ===BEGIN PLAN DATA=== / ===END PLAN DATA=== across canonical SKILL.md, all five language variants, the .codebuddy/.codex/.cursor adapter mirrors, and clawhub-upload. Hook execution and tamper attestation never affected; only the displayed metadata.
v2.38.0 Claude Code turn-loop integration + OpenCode SQLite fix: new PreCompact hook fires on /compact and autoCompact, surfaces a reminder to flush progress before compaction completes and prints the active Plan-SHA256 when attested. New /plan-goal slash command composes with Claude Code's /goal (v2.1.139, May 12 2026): derives a termination condition from the active plan. New /plan-loop composes with /loop (v2.1.72+): default 10-minute tick re-reads planning files and runs check-complete. New templates/loop.md for the bare /loop planning-aware default. Session-catchup rewritten for OpenCode's SQLite migration. Codex gets a PermissionRequest adapter that surfaces plan context at permission prompts.
v2.37.0 Hash attestation + parity bumper (closes #150, #151): /plan-attest locks task_plan.md with a SHA-256; hooks block injection on tamper. scripts/bump-version.py + parity test kill the "missed one variant" regression class behind v2.34.1, v2.36.0, v2.36.2, and v2.36.3. (thanks @oaabahussain!)
v2.36.3 Parallel planning scripts now ship in the skill: resolve-plan-dir.sh and set-active-plan.sh were missing from the installed skill in v2.36.0; now in canonical + all IDE mirrors + SKILL.md docs updated
v2.36.2 Canonical script sync (PR #149): skills/planning-with-files/scripts/init-session.sh was missing slug mode from v2.36.0; now synced with IDE mirrors + regression test. (thanks @voidborne-d!)
v2.36.1 Security hardening: Stop hook cache search removed, ExecutionPolicy Bypass changed to RemoteSigned, prompt injection delimiters added. (Gen Agent Trust Hub FAIL resolved)
v2.36.0 Parallel plan isolation + Codex session isolation (closes #146, #148): init-session.sh slug mode, set-active-plan.sh, resolve-plan-dir.sh, all Codex hooks route through resolver, session attachment gating. Hermes docs (closes #147): integration notes added to docs/hermes.md. 34 new tests. (thanks @githubYiheng, @09ashishkapoor, @shawnli1874!)
v2.35.1 Shebang portability fix: changed /bin/bash to /usr/bin/env bash in hook scripts, fixing compatibility on NixOS and other systems where bash is not at /bin/bash. (thanks @Emin017!)
v2.35.0 Hermes adapter + NLPM audit hardening: Hermes platform 17 support (thanks @bailob!), NLPM audit fixed Python PATH resolution, session-catchup injection cap, Pi PowerShell syntax (thanks @xiaolai!)
v2.34.1 Stop hook Windows portability fix (closes #133): export SD= failed in Windows Git Bash hook context; fallback path was wrong for plugin cache structure. Fixed across all 13 SKILL.md variants. (thanks @nazeshinjite!)
v2.34.0 Codex hooks fully restored (closes #132): .codex/hooks.json + lifecycle scripts back — SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, Stop. Tessl CI for SKILL.md quality reviews. Exec bit fix. 4 missing contributors added. (thanks @Leon-Algo, @popey!)
v2.33.0 Multi-language expansion: Arabic, German, and Spanish skill variants added (thanks to community contributors!)
v2.32.0 Codex session catchup rewrite (thanks @ebrevdo!), Loaditout A-grade security badge, Stop hook Git Bash fix
v2.31.0 Codex hooks.json integration with full lifecycle hooks (thanks @Leon-Algo!)
v2.30.1 Fix: Codex script executable bits restored (thanks @Leon-Algo!)
v2.30.0 CLAUDE_SKILL_DIR variable, IDE configs moved to per-IDE branches, plugin.json bumped from 2.23.0
v2.29.0 Analytics workflow template: --template analytics flag for data exploration sessions (thanks @mvanhorn!)
v2.28.0 Traditional Chinese (zh-TW) skill variant (thanks @waynelee2048!)
v2.27.0 Kiro Agent Skill layout (thanks @EListenX!)
v2.26.2 Fix: --- in hook commands broke YAML frontmatter parsing, hooks now register correctly
v2.26.1 Fix: session catchup after /clear, path sanitization on Windows + content injection (thanks @tony-stark-eth!)
v2.26.0 IDE audit: Factory hooks, Copilot errorOccurred hook, Gemini hooks, bug fixes
v2.18.2 Mastra Code hooks fix (hooks.json + docs accuracy)
v2.18.1 Copilot garbled characters complete fix
v2.18.0 BoxLite sandbox runtime integration
v2.17.0 Mastra Code support + all IDE SKILL.md spec fixes
v2.16.1 Copilot garbled characters fix: PS1 UTF-8 encoding + bash ensure_ascii (thanks @Hexiaopi!)
v2.16.0 GitHub Copilot hooks support (thanks @lincolnwan!)
v2.15.1 Session catchup false-positive fix (thanks @gydx6!)
v2.15.0 /plan:status command, OpenCode compatibility fix
v2.14.0 Pi Agent support, OpenClaw docs update, Codex path fix
v2.11.0 /plan command for easier autocomplete
v2.10.0 Kiro steering files support
v2.7.0 Gemini CLI support
v2.2.0 Session recovery, Windows PowerShell, OS-aware hooks

View all releases · CHANGELOG

Parallel plan isolation (.planning/YYYY-MM-DD-slug/ directories) and Codex session isolation shipped in v2.36.0. The experimental/isolated-planning branch was the earlier prototype; master is now the canonical location.

🌍 What the community shipped

Forks & Extensions

Fork Author What They Built
devis @st01cs Interview-first workflow, /devis:intv and /devis:impl commands, guaranteed activation
multi-manus-planning @kmichels Multi-project support, SessionStart git sync
plan-cascade @Taoidle Multi-level task orchestration, parallel execution, multi-agent collaboration
agentfund-skill @RioTheGreat-ai Crowdfunding for AI agents with milestone-based escrow on Base
openclaw-github-repo-commander @wd041216-bit 7-stage GitHub repo audit, optimization, and cleanup workflow for OpenClaw

Used in the Wild

Project What It Is
lincolnwan/Planning-with-files-copilot-agent Entire Copilot agent repo built around the planning-with-files skill
cooragent/ClarityFinance AI finance agent framework, Planning-with-Files approach directly credited
oeftimie/vv-claude-harness Claude Code harness built on Manus-style persistent markdown planning
jessepwj/CCteam-creator Multi-agent team orchestration skill using file-based planning

Skill Registries & Hubs

Registry What It Is
buzhangsan/skill-manager Bilingual (EN/中文) Claude Code skill hub; planning-with-files installable one-click

Built something? Open an issue to get listed!

Full list of everyone who made this project better: CONTRIBUTORS.md.

📚 Commands, Multi-agent runs, Benchmarks & more [15 sections]

Long-run safeguards

What breaks long agent runs What the skill does about it
The context window is wiped by /clear, compaction, or a crash The plan is re-read from disk on the next turn; SessionStart, UserPromptSubmit and PreCompact hooks carry the current phase back in
Goal drift after 50+ tool calls The plan head is re-injected every turn; PWF_INJECT=smart keeps the goal, the next step and the active phase in the window late in a long plan
The agent declares "done" early Gated mode: the Stop gate holds the stop only while an in_progress phase remains, with a block cap and stall detection so an incomplete plan alone never traps a session
The plan is silently rewritten by a tool result, a collaborator, or a bug SHA-256 attestation: a plan body that no longer matches the approved hash is refused at injection with [PLAN TAMPERED]
Two sessions overwrite each other's phases The parallel-write guard reports when checked items or completed phases go down between turns
Autonomous loops burn tokens on recitation Autonomous mode drops the per-tool-call recitation and replaces the raw progress tail with a fixed-shape ledger summary; injection is KV-cache stable and one hook fire costs about 289 ms
Hooks that quietly stop firing /plan-doctor self-checks resolution, injection, attestation, install surfaces and per-fire latency

Everything in that table is opt-in per plan and byte-identical to the previous behavior when no mode marker is set. Details: v3 Long-Running Agent Features and docs/long-running-agent-tasks.md.

Installation routes

Claude Code, plugin route (ships everything: skill, hooks, slash commands):

/plugin marketplace add OthmanAdi/planning-with-files
/plugin install planning-with-files@planning-with-files

Every other agent, one line, 60+ agents via the Agent Skills standard:

npx skills add OthmanAdi/planning-with-files --skill planning-with-files -g

npm, to pin an exact version into a project or vendor it:

npm install planning-with-files

The package carries SKILL.md, scripts/ and templates/, so this is the route for locking a version into a repo's dependencies or copying the skill in yourself. It does not register hooks on its own.

Pi Coding Agent, same npm package, wired up for you (skill, extension, status bar):

pi install npm:planning-with-files

Hermes Agent (Nous Research), native plugin plus skill bundle, CLI and Desktop:

hermes skills install OthmanAdi/planning-with-files/.hermes/skills/planning-with-files --yes
hermes plugins install OthmanAdi/planning-with-files/.hermes/plugins/planning-with-files
hermes plugins enable planning-with-files

OpenCode, native plugin plus the skill (the npx skills add command above lands in ~/.agents/skills/, which OpenCode reads):

{ "plugin": ["opencode-planning-with-files"] }

in opencode.json or ~/.config/opencode/opencode.json; OpenCode installs it on the next start.

DeepSeek Harness (DSH), native plugin plus the skill (the npx skills add command above lands in ~/.agents/skills/, which DSH reads):

dsh plugin --profile web add dsh-planning-with-files

then restart dsh web; the same command works for the headless, sdk and acp profiles.

Under a minute. Safe to re-run. Trigger it by typing /plan (plugin) or asking the agent to "plan this task"; the skill also self-triggers on multi-step tasks.

What each route actually ships:

Route Skill + scripts + templates Slash commands Hooks
Claude Code plugin yes yes yes
npx skills add yes no frontmatter hooks, see note
npm install yes, under node_modules/ no no, copy the skill in yourself
pi install npm: yes yes, Pi commands yes, via the Pi extension
hermes plugins install yes, with the skill bundle yes, /pwf, /pwf-status yes, plugin hooks incl. the gate
OpenCode opencode.json plugin yes, with the skill yes, /pwf, /pwf-status (two copied command files) yes, plugin hooks incl. the gate
DeepSeek Harness dsh plugin add yes, with the skill yes, /pwf, /pwf-status yes, plugin hooks incl. the gate
ClawHub / manual copy yes no frontmatter hooks, see note

Skill-route installs can end up silently hook-less (project trust not accepted, or frontmatter hooks not registering on project-level installs). The hooks are the differentiating mechanism, so if they matter to you, use the plugin route, then verify with /plan-doctor. Full matrix and the two silent killers: docs/installation.md.

Install acting up? Open your agent and say: "Read docs/installation.md and docs/troubleshooting.md from OthmanAdi/planning-with-files and fix my install." Then run /plan-doctor.

Hermes needs its skill bundle from .hermes/skills/planning-with-files (hermes skills install OthmanAdi/planning-with-files/.hermes/skills/planning-with-files --yes); OpenCode and DeepSeek Harness read the skill that npx skills add ... -g places in ~/.agents/skills/. Each host's own /plan command is never shadowed.

Works across 19+ platforms

One skill, three integration tiers. Know what your agent gets before you install:

Tier Platforms What you get
Enhanced (hooks + lifecycle automation) Claude Code, Cursor, GitHub Copilot, Mastra Code, Gemini CLI, Kiro, Codex, Hermes Agent, CodeBuddy, Factory Droid, OpenCode, DeepSeek Harness Plan injection every turn (Cursor: at session start), progress reminders, completion check
Standard Agent Skills Continue, Pi, OpenClaw, Autohand Code, Antigravity, Kilocode, AdaL CLI SKILL.md discovery via npx skills add; the pattern without lifecycle hooks
Agent Skills standard path (in-tree since v3.7.0) Zed, Amp, Warp, Devin, Antigravity, Gemini CLI, Cursor .agents/skills/planning-with-files/ discovered from a plain git clone, no per-tool setup

Per-platform setup guides, discovery paths and sandbox runtimes are in the collapsible sections below First-class hosts: native plugins.

Multi-agent runs: orchestrators, workers and subagents

NOTE Markdown on disk is the shared state between agents. One orchestrator owns task_plan.md and the shared summaries; every worker appends to its own ledger or assigned file. Pin each independent task with PLAN_ID before starting its host, or use separate worktrees.

  • Run ledger per agent. Workers append one JSON line per event to .planning/<id>/ledger-<agent>.jsonl (ledger-append.sh); ledger-summary.sh synthesizes a fixed-shape, KV-cache-stable block from all ledgers that replaces the raw progress.md tail in autonomous and gated mode. No free text from disk reaches the model through that block.
  • Plan isolation per task. init-session.sh "<name>" gives each parallel task its own .planning/YYYY-MM-DD-<slug>/ directory; PLAN_ID pins a terminal to one of them, set-active-plan.sh --list shows available plans and phase counts, and set-active-plan.sh <id> switches the shared pointer.
  • Threads whose cwd is a shared parent. PWF_PLAN_ROOT=<absolute path> binds an agent thread to the project that owns the plan; an ambiguous cwd, where a nested project carries its own planning state, injects nothing rather than guessing.
  • Session attachment. An .attached marker authorizes context but does not select a task. In the Codex, Hermes, Pi, and standalone hook routes, armed isolation with multiple plans requires PLAN_ID; otherwise context is refused. A project-root pin alone cannot distinguish tasks within that root.
  • Parallel-write guard. The next turn warns if checked items or completed phases decrease. This is an advisory check after the write, not a lock or merge mechanism. It does not detect every overwritten plan, progress.md, or findings.md.
  • Stall-aware gate. The completion gate reads the ledger, not progress.md mtime, so a worker that stopped producing events releases the stop instead of looping.
  • One plan, many hosts. Claude Code, Codex, Pi, Hermes and OpenCode read the same files, the same .attestation and the same gate counters, so a plan can be handed from one agent to another mid-run.

The contract and the .mode tokens are specified in the skill itself (SKILL.md, Autonomous and Gated Modes) and in docs/long-running-agent-tasks.md.

To find a saved plan, run the installed scripts/set-active-plan.sh --list helper from your project directory, or scripts/set-active-plan.ps1 -List in PowerShell. It lists named plans under that project's .planning/ directory, with phase counts for the shipped English and translated templates. [active] marks the shared default pointer. Listing does not select a plan or attach a session; use the displayed ID as PLAN_ID before starting a concurrent task. Kiro's separate .kiro/plan layout is not part of this inventory.

How It Works

The agent stops at the first rung that applies:

View on GitHub

Recent activity

commits and pull requests

Releases and announcements

115 total
  1. OpenCode 2 can load `opencode-planning-with-files` 1.2.0 and use native plan injection, write reminders, compaction context, planning tools and the idle completion gate. The same package retains OpenCode 1 support. Sessions moved to another project or subdirectory now use their current planning files. Installation instructions cover the v2 `plugins` key and the default export required by local wrappers. Verified with OpenCode 2.0.21 using a local mock model and real planning-tool execution, and with OpenCode 1.18.21 using a noReply session. The plugin suite includes regression coverage for both entry points and v2 lifecycle behavior. ### Thanks - @luyanfeng, for reporting the OpenCode 2 loading failure in #298.

  2. `attest-plan.sh` can now attest a root roadmap while a named ticket plan remains active. Use `--target root` or `--target <plan-id>`; the selection honors `PWF_PLAN_ROOT`, refuses invalid or linked targets, and prints the resolved paths before writing. Empty targets and unsupported trailing arguments fail without touching another plan. PowerShell named-plan initialization now retries the transient active-pointer pre-check failure during concurrent replacement. Each attempt retains root and pointer validation, with a fixed retry bound. Closes #294 and #296 through PRs #295 and #297. ### Thanks @tayfuryldz, for both contributions and their regression coverage. The contribution entries are in CONTRIBUTORS.md.

  3. ## What changed - **Claude Code no longer shows a notice after every reply in sessions without a plan.** The Stop hook runs `check-complete --gate`, whose no-plan branch printed "No task_plan.md found" on every turn. The automatic check is now silent when there is no plan; the explicit report (`check-complete` without `--gate`) still prints the notice (#288, PR #289). - **PowerShell pointer replacement cleans up only what it owns.** `set-active-plan.ps1` names its own backup file for `ReplaceFile`. If the final replacement fails after the old pointer was moved aside, it moves the pointer back, or deletes only its own backup when another selector has already written a safe pointer. It no longer leaves an unowned `.active_plan~RF*.TMP` and never deletes one it did not create. After a successful switch a backup that cannot be removed right away produces a warning, not a failed exit (#254, PR #290). - **Cursor hooks match Cursor's current hook schema.** Cursor has no `userPromptSubmit` event, so the plan was never injected. Plan context now arrives through `sessionStart` `additional_context`, `preToolUse` answers `{"permission":"allow"}`, the progress reminder is `postToolUse` `additi

  4. ### Fixed - The `planning-with-files` npm package description now discloses selected project planning context and confirms there is no network upload path. This resolves the v3.20.6 public capability metadata CI failure. - The full npm README links to v3.20.7 repository files. The contributor grid uses @Fat-Jan's current profile and stable identicons linked to archived credits for two unavailable accounts. ### Thanks - @kuei51307-hub for the phase-status locking fix from PR #282 carried forward from v3.20.6. - @TayfurYldz for the OpenCode, DSH, Hermes, and PowerShell pointer fixes from PRs #283 through #287 carried forward from v3.20.6.

  5. ### Added - The README ends with a linked portrait grid of credited contributors, excluding the maintainer. ### Fixed - Phase-status writers claim the lock through exclusive `.owner` creation, preventing lost updates when Windows-native `mkdir` reports success to two writers (#281, PR #282). - OpenCode and DSH replace the active-plan pointer without truncating a hard-linked sibling. They reject a linked `.planning` directory while allowing a project root reached through a junction (#260, PR #283). - Hermes rejects linked active-plan pointers and replaces the pointer without modifying a hard-linked sibling (#259, PR #284). - PowerShell named-plan initialization rejects a read-only active pointer before creating the new plan directory (#253, PR #285). - PowerShell initialization works from a project path containing `[` or `]` under Windows PowerShell 5.1 (#256, PR #286). - PowerShell active-pointer replacement retries transient concurrent I/O and pointer-inspection races while rechecking root and pointer safety (#254, PR #287). Cleanup after final `ReplaceFile` failure remains open in #254. ### Changed - The `planning-with-files` npm package ships the canonical skill and display

Code frequency

additions and deletions
+31.2K-31.2KWeek of 2025-12-28: +688 linesWeek of 2025-12-28: -0 linesWeek of 2026-01-04: +6,281 linesWeek of 2026-01-04: -2,347 linesWeek of 2026-01-11: +4,571 linesWeek of 2026-01-11: -190 linesWeek of 2026-01-18: +10,222 linesWeek of 2026-01-18: -3,824 linesWeek of 2026-01-25: +7,460 linesWeek of 2026-01-25: -1,608 linesWeek of 2026-02-01: +6,115 linesWeek of 2026-02-01: -2,770 linesWeek of 2026-02-08: +756 linesWeek of 2026-02-08: -10 linesWeek of 2026-02-15: +101 linesWeek of 2026-02-15: -86 linesWeek of 2026-02-22: +2,921 linesWeek of 2026-02-22: -627 linesWeek of 2026-03-01: +609 linesWeek of 2026-03-01: -121 linesWeek of 2026-03-08: +37 linesWeek of 2026-03-08: -4 linesWeek of 2026-03-15: +4,373 linesWeek of 2026-03-15: -6,558 linesWeek of 2026-03-22: +1,493 linesWeek of 2026-03-22: -223 linesWeek of 2026-03-29: +0 linesWeek of 2026-03-29: -0 linesWeek of 2026-04-05: +7,174 linesWeek of 2026-04-05: -1,087 linesWeek of 2026-04-12: +803 linesWeek of 2026-04-12: -135 linesWeek of 2026-04-19: +2,907 linesWeek of 2026-04-19: -33 linesWeek of 2026-04-26: +5,060 linesWeek of 2026-04-26: -445 linesWeek of 2026-05-03: +2,378 linesWeek of 2026-05-03: -62 linesWeek of 2026-05-10: +2,748 linesWeek of 2026-05-10: -182 linesWeek of 2026-05-17: +3,620 linesWeek of 2026-05-17: -361 linesWeek of 2026-05-24: +1,442 linesWeek of 2026-05-24: -151 linesWeek of 2026-05-31: +0 linesWeek of 2026-05-31: -0 linesWeek of 2026-06-07: +10,368 linesWeek of 2026-06-07: -809 linesWeek of 2026-06-14: +275 linesWeek of 2026-06-14: -86 linesWeek of 2026-06-21: +53 linesWeek of 2026-06-21: -21 linesWeek of 2026-06-28: +2,249 linesWeek of 2026-06-28: -116 linesWeek of 2026-07-05: +4,390 linesWeek of 2026-07-05: -125 linesWeek of 2026-07-12: +8,938 linesWeek of 2026-07-12: -387 linesWeek of 2026-07-19: +8,327 linesWeek of 2026-07-19: -1,012 linesWeek of 2026-07-26: +17,399 linesWeek of 2026-07-26: -272 linesWeek of 2026-08-02: +36 linesWeek of 2026-08-02: -20 linesWeek of 2026-08-09: +12,522 linesWeek of 2026-08-09: -152 linesWeek of 2026-08-16: +22,210 linesWeek of 2026-08-16: -21,437 linesWeek of 2026-08-23: +23,434 linesWeek of 2026-08-23: -2,835 linesWeek of 2026-08-30: +30,672 linesWeek of 2026-08-30: -8,729 linesWeek of 2026-09-06: +31,239 linesWeek of 2026-09-06: -2,224 linesWeek of 2026-09-13: +25,718 linesWeek of 2026-09-13: -4,294 linesWeek of 2026-09-20: +8,391 linesWeek of 2026-09-20: -1,762 linesWeek of 2026-09-27: +5,569 linesWeek of 2026-09-27: -1,057 linesWeek of 2026-10-04: +0 linesWeek of 2026-10-04: -0 linesDec 28, 2025Oct 4, 2026
+283.5K lines added, -66.2K removed over the last year.

Commits per week

last 52 weeks
620Week of 2025-10-04: 0 commitsWeek of 2025-10-11: 0 commitsWeek of 2025-10-18: 0 commitsWeek of 2025-10-25: 0 commitsWeek of 2025-11-01: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 2 commitsWeek of 2026-01-04: 22 commitsWeek of 2026-01-11: 11 commitsWeek of 2026-01-18: 21 commitsWeek of 2026-01-25: 10 commitsWeek of 2026-02-01: 19 commitsWeek of 2026-02-08: 9 commitsWeek of 2026-02-15: 4 commitsWeek of 2026-02-22: 24 commitsWeek of 2026-03-01: 11 commitsWeek of 2026-03-08: 2 commitsWeek of 2026-03-15: 19 commitsWeek of 2026-03-22: 6 commitsWeek of 2026-03-29: 0 commitsWeek of 2026-04-05: 15 commitsWeek of 2026-04-12: 9 commitsWeek of 2026-04-19: 8 commitsWeek of 2026-04-26: 7 commitsWeek of 2026-05-03: 1 commitsWeek of 2026-05-10: 4 commitsWeek of 2026-05-17: 4 commitsWeek of 2026-05-24: 11 commitsWeek of 2026-05-31: 0 commitsWeek of 2026-06-07: 26 commitsWeek of 2026-06-14: 5 commitsWeek of 2026-06-21: 1 commitsWeek of 2026-06-28: 11 commitsWeek of 2026-07-05: 9 commitsWeek of 2026-07-12: 17 commitsWeek of 2026-07-19: 10 commitsWeek of 2026-07-26: 8 commitsWeek of 2026-08-02: 2 commitsWeek of 2026-08-09: 11 commitsWeek of 2026-08-16: 16 commitsWeek of 2026-08-23: 9 commitsWeek of 2026-08-30: 27 commitsWeek of 2026-09-06: 14 commitsWeek of 2026-09-13: 62 commitsWeek of 2026-09-20: 38 commitsWeek of 2026-09-27: 4 commitsOct 4, 2025Sep 27, 2026
489 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 1 commitsSun 1:00 — 1 commitsSun 2:00 — 0 commitsSun 3:00 — 0 commitsSun 4:00 — 2 commitsSun 5:00 — 0 commitsSun 6:00 — 0 commitsSun 7:00 — 1 commitsSun 8:00 — 0 commitsSun 9:00 — 10 commitsSun 10:00 — 4 commitsSun 11:00 — 1 commitsSun 12:00 — 0 commitsSun 13:00 — 4 commitsSun 14:00 — 0 commitsSun 15:00 — 2 commitsSun 16:00 — 3 commitsSun 17:00 — 2 commitsSun 18:00 — 0 commitsSun 19:00 — 0 commitsSun 20:00 — 0 commitsSun 21:00 — 3 commitsSun 22:00 — 0 commitsSun 23:00 — 3 commitsMon 0:00 — 2 commitsMon 1:00 — 5 commitsMon 2:00 — 0 commitsMon 3:00 — 1 commitsMon 4:00 — 2 commitsMon 5:00 — 1 commitsMon 6:00 — 1 commitsMon 7:00 — 2 commitsMon 8:00 — 7 commitsMon 9:00 — 3 commitsMon 10:00 — 3 commitsMon 11:00 — 3 commitsMon 12:00 — 1 commitsMon 13:00 — 3 commitsMon 14:00 — 0 commitsMon 15:00 — 0 commitsMon 16:00 — 0 commitsMon 17:00 — 2 commitsMon 18:00 — 0 commitsMon 19:00 — 0 commitsMon 20:00 — 4 commitsMon 21:00 — 1 commitsMon 22:00 — 4 commitsMon 23:00 — 0 commitsTue 0:00 — 0 commitsTue 1:00 — 1 commitsTue 2:00 — 0 commitsTue 3:00 — 0 commitsTue 4:00 — 0 commitsTue 5:00 — 1 commitsTue 6:00 — 0 commitsTue 7:00 — 1 commitsTue 8:00 — 0 commitsTue 9:00 — 1 commitsTue 10:00 — 6 commitsTue 11:00 — 7 commitsTue 12:00 — 7 commitsTue 13:00 — 0 commitsTue 14:00 — 7 commitsTue 15:00 — 2 commitsTue 16:00 — 4 commitsTue 17:00 — 7 commitsTue 18:00 — 2 commitsTue 19:00 — 5 commitsTue 20:00 — 2 commitsTue 21:00 — 24 commitsTue 22:00 — 6 commitsTue 23:00 — 9 commitsWed 0:00 — 2 commitsWed 1:00 — 3 commitsWed 2:00 — 4 commitsWed 3:00 — 0 commitsWed 4:00 — 1 commitsWed 5:00 — 0 commitsWed 6:00 — 1 commitsWed 7:00 — 4 commitsWed 8:00 — 5 commitsWed 9:00 — 1 commitsWed 10:00 — 4 commitsWed 11:00 — 2 commitsWed 12:00 — 0 commitsWed 13:00 — 3 commitsWed 14:00 — 2 commitsWed 15:00 — 2 commitsWed 16:00 — 0 commitsWed 17:00 — 0 commitsWed 18:00 — 3 commitsWed 19:00 — 6 commitsWed 20:00 — 9 commitsWed 21:00 — 15 commitsWed 22:00 — 7 commitsWed 23:00 — 5 commitsThu 0:00 — 9 commitsThu 1:00 — 4 commitsThu 2:00 — 3 commitsThu 3:00 — 0 commitsThu 4:00 — 0 commitsThu 5:00 — 0 commitsThu 6:00 — 0 commitsThu 7:00 — 1 commitsThu 8:00 — 5 commitsThu 9:00 — 2 commitsThu 10:00 — 1 commitsThu 11:00 — 0 commitsThu 12:00 — 0 commitsThu 13:00 — 1 commitsThu 14:00 — 5 commitsThu 15:00 — 0 commitsThu 16:00 — 0 commitsThu 17:00 — 1 commitsThu 18:00 — 4 commitsThu 19:00 — 3 commitsThu 20:00 — 2 commitsThu 21:00 — 18 commitsThu 22:00 — 16 commitsThu 23:00 — 6 commitsFri 0:00 — 5 commitsFri 1:00 — 2 commitsFri 2:00 — 0 commitsFri 3:00 — 0 commitsFri 4:00 — 1 commitsFri 5:00 — 2 commitsFri 6:00 — 1 commitsFri 7:00 — 1 commitsFri 8:00 — 0 commitsFri 9:00 — 4 commitsFri 10:00 — 0 commitsFri 11:00 — 1 commitsFri 12:00 — 2 commitsFri 13:00 — 5 commitsFri 14:00 — 7 commitsFri 15:00 — 9 commitsFri 16:00 — 15 commitsFri 17:00 — 5 commitsFri 18:00 — 1 commitsFri 19:00 — 2 commitsFri 20:00 — 3 commitsFri 21:00 — 5 commitsFri 22:00 — 2 commitsFri 23:00 — 1 commitsSat 0:00 — 2 commitsSat 1:00 — 5 commitsSat 2:00 — 0 commitsSat 3:00 — 0 commitsSat 4:00 — 1 commitsSat 5:00 — 0 commitsSat 6:00 — 0 commitsSat 7:00 — 1 commitsSat 8:00 — 4 commitsSat 9:00 — 3 commitsSat 10:00 — 6 commitsSat 11:00 — 10 commitsSat 12:00 — 3 commitsSat 13:00 — 4 commitsSat 14:00 — 2 commitsSat 15:00 — 2 commitsSat 16:00 — 0 commitsSat 17:00 — 2 commitsSat 18:00 — 4 commitsSat 19:00 — 1 commitsSat 20:00 — 13 commitsSat 21:00 — 2 commitsSat 22:00 — 17 commitsSat 23:00 — 0 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.

Who is committing

last 52 weeks
Maintainer commits397 (77%)
Community commits121 (23%)

518 commits in total over the last year.

DateListRankStars gained
Feb 3, 2026daily#24+113
Jan 15, 2026daily#21+142
Jan 14, 2026daily#15+178
Jan 13, 2026daily#11+228
Jan 12, 2026daily#18+189
Jan 11, 2026daily#25+178
Jan 9, 2026daily#7+137
  • obra/superpowers

    An agentic skills framework & software development methodology that works.

    295.2K stars · Shell

  • mattpocock/skills

    Skills for Real Engineers. Straight from my .agents directory.

    276K stars · Shell

  • affaan-m/ECC

    The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

    272.8K stars · JavaScript

  • NousResearch/hermes-agent

    The agent that grows with you

    251.2K stars · Python

  • Significant-Gravitas/AutoGPT

    AutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters.

    187.7K stars · Python

  • anthropics/skills

    Public repository for Agent Skills

    179.6K stars · Python