update-plan — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited update-plan (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Process user responses in the questions document and update all related planning documents accordingly.
planning or planning-mode skills must already existask) mode: the plan's questions document must contain at least one question with a non-empty ### Response sectionask mode: the plan's questions document must contain at least one unprocessed question (with or without a response)The skill takes a single optional argument:
ask (case-insensitive, trimmed) → enable ask mode and locate the plan via the Phase 1 strategies below (plan is not specified separately).ask is standalone — it cannot be combined with a plan 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.
This skill belongs to the plans skill group. A persistence implementation decides where and how plans are stored. Before locating the plan, find the setting:
R="$(git rev-parse --show-toplevel 2>/dev/null)/.ai/config.properties"; { cat "$R" ~/.ai/config.properties | grep '^persistence\.plans[[:space:]]*=[[:space:]]*[^[:space:]]'; cat "$R" ~/.ai/config.properties | grep '^persistence[[:space:]]*=[[:space:]]*[^[:space:]]'; } 2>/dev/null | head -1 | tr -d ' \t\r'local-ai-folder-markdown, the default for this skill grouppersistence.plans={value} or persistence={value}: use {value}. If ../planning/persistence/{value}.md does not exist, tell the user the plans skill group has no {value} implementation and use local-ai-folder-markdownRead ../planning/persistence/{implementation}.md and follow it whenever this skill lists or opens a plan, or reads, writes or updates a planning document.
Resolve the target plan using the first matching strategy:
planning-mode/planning skill invocation in this session. If found, use it directly and confirm with the user (e.g. "Updating plan 2026-03-24 auth refactor — correct?"). Proceed on confirmation; if the user says no, fall through to the next strategy.ask argument, resolve it as a plan name against the listed plans. (The ask keyword is a mode flag, not a plan name — see "Argument parsing" above.)planning-mode or planning skills.Open the selected plan and read the following documents (skip any that don't exist):
questionsplanfindingsprogress (if present)If the questions document does not exist or contains no questions, tell the user there's nothing to process and stop.
Scan the questions document for unprocessed questions, in document order. A question is "processed" when it carries the processed mark defined by the persistence implementation; processed questions are always skipped.
What counts as "to handle" depends on the mode:
### Response section. If none exist, tell the user there is nothing to process and stop.Iterate the unprocessed questions identified in Phase 3 in document order. For each question, follow the branch that matches the current state.
### ResponseThis is the standard processing path (applies to both default mode and ask mode):
plan document, the findings document, or the progress document need updatingplan: update phases, decisions, key questions, or scope as neededfindings: record new requirements, technical decisions, or constraints derived from the responseprogress (if it exists): log a new entry noting the questions processing session### Response, ask mode is ONPrompt the user interactively, then run Branch A:
## Q[N]: ... heading and the ### Response heading), excluding HTML comments (<!-- ... -->) which are author-notes from the template, not part of the question itself. Pass this prose to the user without rephrasing.AskUserQuestionaskQuestionsquestions document under the existing ### Response heading (do not rephrase, do not editorialise). Then run Branch A for this question (process the answer and mark the question as processed).### Response empty, do not mark the question as processed, and move on to the next question.### Response, ask mode is OFFSkip the question silently and move on. It remains unprocessed and will be reported in Phase 6 as still-unanswered.
plan document; append or update, don't overwriteplan document is permittedIf processing the responses raises new questions or ambiguities:
questions document following the existing template format### Response section below each new questionIf no follow-up questions are needed, do not add any.
Provide a concise summary covering:
questions document### Response is 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.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.