Update plan
My personal skills, agents, and other configuration files for agentic coding.
npx -y skills add kimgoetzke/coding-agent-configs --skill update-planAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Updates planning documents created using the planning-mode or planning skill after questions.md has been updated by the user. Supports an interactive `ask` mode that prompts the user for any still-unanswered questions in real-time. Use when user asks to update the plan after answering your questions, or when they want to walk through unanswered questions interactively.
SKILL.md
7.9 KB, as published. Nobody here has run it
Update Plan from User Responses
Process user responses in questions.md and update all related planning documents accordingly.
Prerequisites
- A plan must already exist under
{repo root}/.ai/planning/created by theplanningorplanning-modeskills - For default (non-
ask) mode: the plan'squestions.mdmust contain at least one question with a non-empty### Responsesection - For
askmode: the plan'squestions.mdmust contain at least one unprocessed question (with or without a response)
Argument parsing
The skill takes a single optional argument:
- If the argument is the literal string
ask(case-insensitive, trimmed) → enable ask mode and locate the plan via the Phase 1 strategies below (folder is not specified separately). - If the argument is anything else → treat it as a folder name (existing behaviour).
- If the argument is empty → no mode flag and no folder; fall through to the Phase 1 strategies.
ask is standalone — it cannot be combined with a folder name on the same invocation. If the user needs ask mode against a specific plan in a multi-plan repo, the Phase 1 multi-plan prompt will let them choose.
Throughout the rest of this skill, ask mode refers specifically to the case where the argument was ask.
Phase 1: Locate the plan
Resolve the target plan using the first matching strategy:
- Context inference — check your conversation context for a plan folder path from a prior
planning-mode/planningskill invocation in this session. If found, use it directly and confirm with the user (e.g. "Updating plan2026-03-24 auth refactor— correct?"). Proceed on confirmation; if the user says no, fall through to the next strategy. - User argument — if the user provided a non-
askargument, resolve it as a folder name against folders inside{repo root}/.ai/planning/. (Theaskkeyword is a mode flag, not a folder name — see "Argument parsing" above.) - Single plan — if only one plan folder exists, select it automatically.
- Multiple plans — list folders newest first in a numbered list and ask the user to choose.
- No plans — tell the user no plans were found and suggest creating one with the
planning-modeorplanningskills.
Phase 2: Read all planning documents
Read the following files from the selected plan folder (skip any that don't exist):
questions.mdplan.mdfindings.mdprogress.md(if present)
If questions.md does not exist or contains no questions, tell the user there's nothing to process and stop.
Phase 3: Identify questions to handle
Scan questions.md for unprocessed questions, in document order. A question is "processed" when a <!-- Processed --> comment appears directly below its response content; processed questions are always skipped.
What counts as "to handle" depends on the mode:
- Default mode: only unprocessed questions with a non-empty
### Responsesection. If none exist, tell the user there is nothing to process and stop. - Ask mode: every unprocessed question, whether or not it has a response yet. If no unprocessed questions exist at all, tell the user and stop.
Phase 4: Process responses and update documents
Iterate the unprocessed questions identified in Phase 3 in document order. For each question, follow the branch that matches the current state.
Branch A — Question has a non-empty ### Response
This is the standard processing path (applies to both default mode and ask mode):
- Understand the response — determine what decision, clarification, or constraint the user provided
- Assess impact on the plan — decide whether
plan.md,findings.md, orprogress.mdneed updating - Update planning documents — make targeted edits:
plan.md: update phases, decisions, key questions, or scope as neededfindings.md: record new requirements, technical decisions, or constraints derived from the responseprogress.md: log a new entry noting the questions processing session
- Mark response as processed — add
<!-- Processed -->below the response inquestions.md
Branch B — Question has an empty ### Response, ask mode is ON
Prompt the user interactively, then run Branch A:
- Present the question verbatim — extract the full prose of the question body (everything between the
## Q[N]: ...heading and the### Responseheading), excluding HTML comments (<!-- ... -->) which are author-notes from the template, not part of the question itself. Pass this prose to the user without rephrasing. - Choose the prompt mechanism — if the question proposes a discrete set of options (heuristic — phrases like "Should we use X, Y, or Z?", "Pick one of: ...", explicit option lists), use the host agent's structured question tool:
- Claude Code →
AskUserQuestion - GitHub Copilot →
askQuestions - Other agents → use their equivalent structured question tool if available
- Otherwise (or for open-ended questions) → prompt the user in plain text
- Claude Code →
- Capture the answer:
- If the user provides an answer → write it verbatim into
questions.mdunder the existing### Responseheading (do not rephrase, do not editorialise). Then run Branch A for this question (process the answer and mark<!-- Processed -->). - If the user skips/declines/answers with empty text → leave the
### Responseempty, do not add<!-- Processed -->, and move on to the next question.
- If the user provides an answer → write it verbatim into
Branch C — Question has an empty ### Response, ask mode is OFF
Skip the question silently and move on. It remains unprocessed and will be reported in Phase 6 as still-unanswered.
Rules (apply to all branches)
- Never modify the user's response text
- Preserve existing content in all documents except in
plan.md; append or update, don't overwrite - Replacing/removing/overwriting in the
plan.mdis permitted - If a response contradicts a prior decision, update the decision and note the change
Phase 5: Add follow-up questions
If processing the responses raises new questions or ambiguities:
- Add new questions to the bottom of
questions.mdfollowing the existing template format - Continue the existing numbering sequence (e.g. if last question was Q3, new questions start at Q4)
- Reference the response that prompted the follow-up (e.g. "Follow-up from Q2")
- Include an empty
### Responsesection below each new question
If no follow-up questions are needed, do not add any.
Phase 6: Report to the user
Provide a concise summary covering:
- Responses processed — list which questions (by number and topic) were processed
- Plan changes — state whether the plan was changed; if yes, briefly describe what changed and in which document(s)
- New questions — if follow-up questions were added, explicitly tell the user:
- That new questions are waiting in
questions.md - List each new question inline (number and full question text)
- Ask the user to review and respond to them
- That new questions are waiting in
- Still-unanswered questions — at the end of the report, list every unprocessed question whose
### Responseis still empty (number and topic). This applies to all invocations of this skill, including default mode (where empty-response questions were skipped) and ask mode (where the user may have declined some questions). If every question has been answered or processed, omit this section.
If no changes were needed and no new questions arose, say so clearly.