Execute Plan

Find the active plan and execute it end-to-end: work through all tasks, run tests, and complete the plan on success.

sabizmil updated 4mo ago
Claude CodeGeneric
View source ↗
# Execute Plan

Find the active plan and execute it end-to-end: work through all tasks, run tests, and complete the plan on success.

## Step 1: Find the Active Plan

- If an argument is given, match it against plan files in `.claude/plans/` (by slug or partial name)
- If no argument is given, look for plans with `status: created` or `status: in-progress` in `.claude/plans/`
- If multiple plans match, ask the user which one to execute
- If no plans are found, report that and stop

## Step 2: Read and Understand the Plan

- Read the full plan file
- Understand the goal, chosen approach, and task list
- Read any referenced source files to understand the current codebase state
- Update the plan status to `in-progress` if it's still `created`

## Step 3: Execute Tasks

Work through each unchecked task in order:

1. **Before each task**: Read the relevant code, understand the context
2. **Implement the task**: Write the code changes needed
3. **Mark it done**: Update the plan file, changing `- [ ]` to `- [x]` for the completed task
4. **Add notes**: If you discover anything important during implementation, add it to the Notes section

If a task is blocked or unclear:
- Add a note explaining the blocker
- Ask the user for guidance before proceeding
- Do NOT skip tasks silently

## Step 4: Run Tests

After all tasks are marked complete:

1. Run `make build` to verify the code compiles
2. Run `make test` to run the full test suite with race detector
3. If tests fail:
   - Diagnose the failure
   - Fix the issue
   - Re-run tests
   - Repeat until tests pass (max 3 attempts)
   - If still failing after 3 attempts, report the failures and ask the user for guidance

## Step 5: Complete the Plan

Once all tasks are done AND tests pass:

1. **Generate changelog**: Create `docs/changelog/YYYY-MM-DD-<slug>.md` with:
   - Summary of changes
   - Categorized list of changes (Features, Bug Fixes, Refactoring, etc.)
   - Files modified with descriptions
   - Rationale for the changes
   - Use `git diff` to accurately identify all modified files

2. **Archive the plan**:
   - Update the plan frontmatter to `status: completed`
   - Move the plan from `.claude/plans/` to `.claude/plans/archive/`

3. **Report completion**:

Plan completed: </p> <ul> <li>All N tasks done</li> <li>Tests passing</li> <li>Changelog: docs/changelog/YYYY-MM-DD-<slug>.md</li> <li>Archived: .claude/plans/archive/YYYY-MM-DD-<slug>.md</li> </ul> <pre><code> ## Rules - Always work through tasks in the order they appear in the plan - Mark each task done in the plan file as you complete it (not all at once at the end) - Do not skip the test step — tests must pass before completion - If the plan has already-checked tasks, skip those and continue from the first unchecked task - Keep the plan's Notes section updated with any discoveries or decisions made during execution ## User's Input $ARGUMENTS </code></pre> </div> <textarea data-body-src hidden data-astro-cid-2e7mcdih>```md # Execute Plan Find the active plan and execute it end-to-end: work through all tasks, run tests, and complete the plan on success. ## Step 1: Find the Active Plan - If an argument is given, match it against plan files in `.claude/plans/` (by slug or partial name) - If no argument is given, look for plans with `status: created` or `status: in-progress` in `.claude/plans/` - If multiple plans match, ask the user which one to execute - If no plans are found, report that and stop ## Step 2: Read and Understand the Plan - Read the full plan file - Understand the goal, chosen approach, and task list - Read any referenced source files to understand the current codebase state - Update the plan status to `in-progress` if it's still `created` ## Step 3: Execute Tasks Work through each unchecked task in order: 1. **Before each task**: Read the relevant code, understand the context 2. **Implement the task**: Write the code changes needed 3. **Mark it done**: Update the plan file, changing `- [ ]` to `- [x]` for the completed task 4. **Add notes**: If you discover anything important during implementation, add it to the Notes section If a task is blocked or unclear: - Add a note explaining the blocker - Ask the user for guidance before proceeding - Do NOT skip tasks silently ## Step 4: Run Tests After all tasks are marked complete: 1. Run `make build` to verify the code compiles 2. Run `make test` to run the full test suite with race detector 3. If tests fail: - Diagnose the failure - Fix the issue - Re-run tests - Repeat until tests pass (max 3 attempts) - If still failing after 3 attempts, report the failures and ask the user for guidance ## Step 5: Complete the Plan Once all tasks are done AND tests pass: 1. **Generate changelog**: Create `docs/changelog/YYYY-MM-DD-<slug>.md` with: - Summary of changes - Categorized list of changes (Features, Bug Fixes, Refactoring, etc.) - Files modified with descriptions - Rationale for the changes - Use `git diff` to accurately identify all modified files 2. **Archive the plan**: - Update the plan frontmatter to `status: completed` - Move the plan from `.claude/plans/` to `.claude/plans/archive/` 3. **Report completion**: ``` Plan completed: <Title> - All N tasks done - Tests passing - Changelog: docs/changelog/YYYY-MM-DD-<slug>.md - Archived: .claude/plans/archive/YYYY-MM-DD-<slug>.md ``` ## Rules - Always work through tasks in the order they appear in the plan - Mark each task done in the plan file as you complete it (not all at once at the end) - Do not skip the test step — tests must pass before completion - If the plan has already-checked tasks, skip those and continue from the first unchecked task - Keep the plan's Notes section updated with any discoveries or decisions made during execution ## User's Input $ARGUMENTS ```</textarea> <aside class="pb-card" data-pagefind-ignore data-astro-cid-bllr6etr> <svg class="pb-motif" width="54" height="54" viewBox="0 0 150 150" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-astro-cid-bllr6etr> <line x1="75" y1="45" x2="75" y2="18" stroke="var(--color-border-hi)" stroke-width="6" data-astro-cid-bllr6etr></line> <line x1="75" y1="105" x2="75" y2="132" stroke="var(--color-border-hi)" stroke-width="6" data-astro-cid-bllr6etr></line> <line x1="45" y1="75" x2="18" y2="75" stroke="var(--color-border-hi)" stroke-width="6" data-astro-cid-bllr6etr></line> <line x1="105" y1="75" x2="132" y2="75" stroke="var(--color-border-hi)" stroke-width="6" data-astro-cid-bllr6etr></line> <rect x="53" y="53" width="44" height="44" rx="8" fill="var(--color-accent)" data-astro-cid-bllr6etr></rect> <rect x="53" y="2" width="44" height="26" rx="7" fill="none" stroke="var(--color-border-hi)" stroke-width="6" data-astro-cid-bllr6etr></rect> <rect x="53" y="122" width="44" height="26" rx="7" fill="none" stroke="var(--color-border-hi)" stroke-width="6" data-astro-cid-bllr6etr></rect> <rect x="2" y="62" width="26" height="26" rx="7" fill="none" stroke="var(--color-border-hi)" stroke-width="6" data-astro-cid-bllr6etr></rect> <rect x="122" y="62" width="26" height="26" rx="7" fill="none" stroke="var(--color-border-hi)" stroke-width="6" data-astro-cid-bllr6etr></rect> </svg> <div class="pb-text" data-astro-cid-bllr6etr> <p class="pb-title" data-astro-cid-bllr6etr>The Agentic Coding Playbook</p> <p class="pb-sub" data-astro-cid-bllr6etr>Skills, MCPs, loops & guardrails — a free 22-page playbook on engineering the system around the model.</p> </div> <a class="pb-btn" href="/playbook" data-astro-cid-bllr6etr>Get it free →</a> </aside> <section class="badge-cta" data-astro-cid-2e7mcdih> <h2 data-astro-cid-2e7mcdih>Maintain Execute Plan?</h2> <p data-astro-cid-2e7mcdih>Let people know it's listed here — add the badge (live metrics, light/dark aware) or a plain link to your README or docs.</p> <div class="badge-snippet" data-astro-cid-2e7mcdih> <code data-astro-cid-2e7mcdih>[Execute Plan on getagentictools](https://getagentictools.com/loops/sabizmil-execute-plan?ref=badge)</code> <button class="btn" data-copy="[Execute Plan on getagentictools](https://getagentictools.com/loops/sabizmil-execute-plan?ref=badge)" data-astro-cid-2e7mcdih>Copy</button> </div> <div class="badge-snippet" data-astro-cid-2e7mcdih> <code data-astro-cid-2e7mcdih>npx agentictools info loops/sabizmil-execute-plan</code> <button class="btn" data-copy="npx agentictools info loops/sabizmil-execute-plan" data-astro-cid-2e7mcdih>Copy</button> </div> <p class="badge-note" data-astro-cid-2e7mcdih>The second line is the <a href="/cli" data-astro-cid-2e7mcdih>CLI</a> lookup for this page — handy in READMEs and docs.</p> </section> <section class="related" data-astro-cid-2e7mcdih> <h2 data-astro-cid-2e7mcdih>Related loops</h2> <div class="grid" data-astro-cid-2e7mcdih> <a href="/loops/vietlinhh02-execute-plan-subagent-driven-plan-execution" class="card " data-astro-cid-yk5uq4gt> <div class="card-top" data-astro-cid-yk5uq4gt> <img class="avatar" src="https://github.com/vietlinhh02.png?size=80" alt="" loading="lazy" width="34" height="34" data-astro-cid-yk5uq4gt> <span class="name" data-astro-cid-yk5uq4gt>Execute Plan</span> </div> <p class="desc" data-astro-cid-yk5uq4gt>Execute a detailed implementation plan using fresh subagents per task with mandatory code review gates between tasks.</p> <div class="meta" data-astro-cid-yk5uq4gt> <span data-astro-cid-yk5uq4gt>vietlinhh02</span> </div> </a><a href="/loops/kasuboski-execute-prp-command" class="card " data-astro-cid-yk5uq4gt> <div class="card-top" data-astro-cid-yk5uq4gt> <img class="avatar" src="https://github.com/kasuboski.png?size=80" alt="" loading="lazy" width="34" height="34" data-astro-cid-yk5uq4gt> <span class="name" data-astro-cid-yk5uq4gt>Execute Prp</span> </div> <p class="desc" data-astro-cid-yk5uq4gt>Implement a feature using the PRP file provided as $ARGUMENTS.</p> <div class="meta" data-astro-cid-yk5uq4gt> <span data-astro-cid-yk5uq4gt>kasuboski</span> </div> </a><a href="/loops/pmxlr8-execute-prp" class="card " data-astro-cid-yk5uq4gt> <div class="card-top" data-astro-cid-yk5uq4gt> <img class="avatar" src="https://github.com/pmxlr8.png?size=80" alt="" loading="lazy" width="34" height="34" data-astro-cid-yk5uq4gt> <span class="name" data-astro-cid-yk5uq4gt>Execute Prp</span> </div> <p class="desc" data-astro-cid-yk5uq4gt>Implement a feature from its PRP spec file.</p> <div class="meta" data-astro-cid-yk5uq4gt> <span data-astro-cid-yk5uq4gt>pmxlr8</span> </div> </a><a href="/loops/tgabecar-execute-net-prp" class="card " data-astro-cid-yk5uq4gt> <div class="card-top" data-astro-cid-yk5uq4gt> <img class="avatar" src="https://github.com/TGabeCar.png?size=80" alt="" loading="lazy" width="34" height="34" data-astro-cid-yk5uq4gt> <span class="name" data-astro-cid-yk5uq4gt>Execute Prp</span> </div> <p class="desc" data-astro-cid-yk5uq4gt>Implement feature from PRP file.</p> <div class="meta" data-astro-cid-yk5uq4gt> <span data-astro-cid-yk5uq4gt>TGabeCar</span> </div> </a><a href="/loops/nextspark-js-session-execute" class="card " data-astro-cid-yk5uq4gt> <div class="card-top" data-astro-cid-yk5uq4gt> <img class="avatar" src="https://github.com/NextSpark-js.png?size=80" alt="" loading="lazy" width="34" height="34" data-astro-cid-yk5uq4gt> <span class="name" data-astro-cid-yk5uq4gt>Execute</span> </div> <p class="desc" data-astro-cid-yk5uq4gt>Execute the development of the active session.</p> <div class="meta" data-astro-cid-yk5uq4gt> <span data-astro-cid-yk5uq4gt>NextSpark-js</span> </div> </a><a href="/loops/ohadf2015-execute-implement-from-plan" class="card " data-astro-cid-yk5uq4gt> <div class="card-top" data-astro-cid-yk5uq4gt> <img class="avatar" src="https://github.com/ohadf2015.png?size=80" alt="" loading="lazy" width="34" height="34" data-astro-cid-yk5uq4gt> <span class="name" data-astro-cid-yk5uq4gt>Execute</span> </div> <p class="desc" data-astro-cid-yk5uq4gt>Execute an implementation plan</p> <div class="meta" data-astro-cid-yk5uq4gt> <span data-astro-cid-yk5uq4gt>ohadf2015</span> </div> </a> </div> </section> </article> </main> <footer class="foot" data-pagefind-ignore data-astro-cid-gcn2mc3v> <div class="wrap foot-inner" data-astro-cid-gcn2mc3v> <div class="foot-brand" data-astro-cid-gcn2mc3v> <span class="brand-name" data-astro-cid-gcn2mc3v>getagentictools</span> <p data-astro-cid-gcn2mc3v>The #1 directory for skills, plugins, loops & MCPs in agentic coding. Curated, with real metrics.</p> <p class="disclaimer" data-astro-cid-gcn2mc3v>Independent project. Not affiliated with Anthropic.</p> </div> <div class="foot-col" data-astro-cid-gcn2mc3v> <h4 data-astro-cid-gcn2mc3v>Browse</h4> <a href="/skills" data-astro-cid-gcn2mc3v>Skills</a><a href="/mcp" data-astro-cid-gcn2mc3v>MCP</a><a href="/loops" data-astro-cid-gcn2mc3v>Loops</a><a href="/plugins" data-astro-cid-gcn2mc3v>Plugins</a> <a href="/by" data-astro-cid-gcn2mc3v>Maintainers</a> <a href="/new" data-astro-cid-gcn2mc3v>Recently updated</a> <a href="/stats" data-astro-cid-gcn2mc3v>Ecosystem stats</a> </div> <div class="foot-col" data-astro-cid-gcn2mc3v> <h4 data-astro-cid-gcn2mc3v>More</h4> <a href="/mcp-server" data-astro-cid-gcn2mc3v>MCP Server</a> <a href="/cli" data-astro-cid-gcn2mc3v>CLI</a> <a href="/digest" data-astro-cid-gcn2mc3v>Digest</a> <a href="/playbook" data-astro-cid-gcn2mc3v>Playbook</a> <a href="/about" data-astro-cid-gcn2mc3v>About</a> <a href="/advertise" data-astro-cid-gcn2mc3v>Advertise</a> <a href="/privacy" data-astro-cid-gcn2mc3v>Privacy</a> <a href="/terms" data-astro-cid-gcn2mc3v>Terms</a> </div> </div> <div class="wrap foot-bottom" data-astro-cid-gcn2mc3v> <span data-astro-cid-gcn2mc3v>© 2026 getagentictools</span> </div> </footer> <div class="palette" data-palette hidden data-astro-cid-xao2j2xx> <div class="palette-backdrop" data-palette-close data-astro-cid-xao2j2xx></div> <div class="palette-box" role="dialog" aria-modal="true" aria-label="Search" data-astro-cid-xao2j2xx> <div class="palette-input-row" data-astro-cid-xao2j2xx> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" data-astro-cid-xao2j2xx><circle cx="11" cy="11" r="7" data-astro-cid-xao2j2xx></circle><path d="m21 21-4.3-4.3" data-astro-cid-xao2j2xx></path></svg> <input type="search" placeholder="Search skills, plugins, MCP servers, loops…" data-palette-input autocomplete="off" data-astro-cid-xao2j2xx> <kbd data-astro-cid-xao2j2xx>esc</kbd> </div> <div class="palette-results" data-palette-results data-astro-cid-xao2j2xx> <p class="palette-hint" data-astro-cid-xao2j2xx>Type to search across the whole catalog.</p> </div> </div> </div> <script type="module">const r=document.querySelector("[data-palette]"),o=document.querySelector("[data-palette-input]"),u=document.querySelector("[data-palette-results]");let n=null,s;const d="Type to search across the whole catalog.",a=e=>{u.innerHTML=`<p class="palette-hint">${e}</p>`};async function p(){if(n)return n;try{return n=await import("/pagefind/pagefind.js"),await n.options?.({excerptLength:15}),n}catch{return null}}function f(){r.hidden=!1,document.body.style.overflow="hidden",o.focus(),p()}function c(){r.hidden=!0,document.body.style.overflow="",o.value="",a(d)}document.querySelectorAll("[data-search-open]").forEach(e=>e.addEventListener("click",f));document.querySelectorAll("[data-palette-close]").forEach(e=>e.addEventListener("click",c));document.addEventListener("keydown",e=>{(e.metaKey||e.ctrlKey)&&e.key==="k"&&(e.preventDefault(),r.hidden?f():c()),e.key==="Escape"&&!r.hidden&&c()});async function y(e){const l=await p();if(!l){a("Search is available on the deployed site.");return}if(!e.trim()){a(d);return}const h=await l.search(e),i=await Promise.all(h.results.slice(0,8).map(t=>t.data()));if(!i.length){a("No results.");return}u.innerHTML=i.map(t=>`<a class="p-result" href="${t.url}"><h4>${t.meta?.title??t.url}</h4><p>${t.excerpt}</p></a>`).join("")}o?.addEventListener("input",()=>{clearTimeout(s),s=setTimeout(()=>y(o.value),140)});</script> <vercel-analytics data-props="{}" data-params="{"category":"loops","slug":"sabizmil-execute-plan"}" data-pathname="/loops/sabizmil-execute-plan.html"></vercel-analytics> <script type="module">var v=()=>{window.va||(window.va=function(...i){window.vaq||(window.vaq=[]),window.vaq.push(i)})},w="@vercel/analytics",h="2.0.1";function f(){return typeof window<"u"}function p(){try{const e="production"}catch{}return"production"}function y(e="auto"){if(e==="auto"){window.vam=p();return}window.vam=e}function m(){return(f()?window.vam:p())||"production"}function d(){return m()==="development"}function b(e,i){if(!e||!i)return e;let n=e;try{const t=Object.entries(i);for(const[r,o]of t)if(!Array.isArray(o)){const a=u(o);a.test(n)&&(n=n.replace(a,`/[${r}]`))}for(const[r,o]of t)if(Array.isArray(o)){const a=u(o.join("/"));a.test(n)&&(n=n.replace(a,`/[...${r}]`))}return n}catch{return e}}function u(e){return new RegExp(`/${g(e)}(?=[/?#]|$)`)}function g(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function E(e){return e.scriptSrc?s(e.scriptSrc):d()?"https://va.vercel-scripts.com/v1/script.debug.js":e.basePath?s(`${e.basePath}/insights/script.js`):"/_vercel/insights/script.js"}function S(e,i){var n;let t=e;if(i)try{t={...(n=JSON.parse(i))==null?void 0:n.analytics,...e}}catch{}y(t.mode);const r={sdkn:w+(t.framework?`/${t.framework}`:""),sdkv:h};return t.disableAutoTrack&&(r.disableAutoTrack="1"),t.viewEndpoint&&(r.viewEndpoint=s(t.viewEndpoint)),t.eventEndpoint&&(r.eventEndpoint=s(t.eventEndpoint)),t.sessionEndpoint&&(r.sessionEndpoint=s(t.sessionEndpoint)),d()&&t.debug===!1&&(r.debug="false"),t.dsn&&(r.dsn=t.dsn),t.endpoint?r.endpoint=t.endpoint:t.basePath&&(r.endpoint=s(`${t.basePath}/insights`)),{beforeSend:t.beforeSend,src:E(t),dataset:r}}function s(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:`/${e}`}function k(e={debug:!0},i){var n;if(!f())return;const{beforeSend:t,src:r,dataset:o}=S(e,i);if(v(),t&&((n=window.va)==null||n.call(window,"beforeSend",t)),document.head.querySelector(`script[src*="${r}"]`))return;const a=document.createElement("script");a.src=r;for(const[c,l]of Object.entries(o))a.dataset[c]=l;a.defer=!0,a.onerror=()=>{const c=d()?"Please check if any ad blockers are enabled and try again.":"Be sure to enable Web Analytics for your project and deploy again. See https://vercel.com/docs/analytics/quickstart for more information.";console.log(`[Vercel Web Analytics] Failed to load script from ${r}. ${c}`)},document.head.appendChild(a)}function $({route:e,path:i}){var n;(n=window.va)==null||n.call(window,"pageview",{route:e,path:i})}function A(){try{return}catch{}}function j(){try{return'{"analytics":{"scriptSrc":"32ea31ac6eaa2815/script.js","viewEndpoint":"32ea31ac6eaa2815/view","eventEndpoint":"32ea31ac6eaa2815/event","sessionEndpoint":"32ea31ac6eaa2815/session"},"speedInsights":{"scriptSrc":"16663ccdea61a328/script.js","endpoint":"16663ccdea61a328/vitals"}}'}catch{}}customElements.define("vercel-analytics",class extends HTMLElement{constructor(){super();try{const i=JSON.parse(this.dataset.props??"{}"),n=JSON.parse(this.dataset.params??"{}");k({...i,disableAutoTrack:!0,framework:"astro",basePath:A(),beforeSend:window.webAnalyticsBeforeSend},j());const t=this.dataset.pathname;$({route:b(t??"",n),path:t})}catch(i){throw new Error(`Failed to parse WebAnalytics properties: ${i}`)}}});</script> </body></html> <script type="module">function d(t,n){const o=t.querySelector(".btn-ico")??t,c=o.textContent;o.textContent=n,setTimeout(()=>o.textContent=c,1200)}document.querySelectorAll("[data-copy]").forEach(t=>t.addEventListener("click",()=>{navigator.clipboard.writeText(t.dataset.copy??""),d(t,"Copied")}));const r=document.querySelector("[data-body-src]")?.value??"";document.querySelectorAll("[data-copy-body]").forEach(t=>t.addEventListener("click",()=>{navigator.clipboard.writeText(r),t.textContent="Copied"}));const a=document.querySelector("[data-llm-trigger]"),e=document.querySelector("[data-llm-menu]");a?.addEventListener("click",t=>{t.stopPropagation(),e.hidden=!e.hidden});document.addEventListener("click",()=>{e&&(e.hidden=!0)});</script>