Agent Skillspwstrick/water-card › openspec-update-change

openspec-update-change

GitHub

用于修订 OpenSpec 变更计划的规划工件,确保其内部一致性。支持指定或自动选择变更、获取状态,并管理多仓库上下文。严禁编辑代码,仅处理元数据与计划内容。

.agents/skills/openspec-update-change/SKILL.md pwstrick/water-card

Trigger Scenarios

用户希望修订变更的计划 将新决策合并到现有计划中 编辑后协调工件一致性

Install

npx skills add pwstrick/water-card --skill openspec-update-change -g -y
More Options

Non-standard path

npx skills add https://github.com/pwstrick/water-card/tree/main/.agents/skills/openspec-update-change -g -y

Use without installing

npx skills use pwstrick/water-card@openspec-update-change

指定 Agent (Claude Code)

npx skills add pwstrick/water-card --skill openspec-update-change -a claude-code -g -y

安装 repo 全部 skill

npx skills add pwstrick/water-card --all -g -y

预览 repo 内 skill

npx skills add pwstrick/water-card --list

SKILL.md

Frontmatter
{
    "name": "openspec-update-change",
    "license": "MIT",
    "metadata": {
        "author": "openspec",
        "version": "1.0",
        "generatedBy": "1.8.0"
    },
    "description": "Update an OpenSpec change by revising its existing planning artifacts and keeping them coherent with one another. Use when the user wants to revise a change's plan, fold new decisions into it, or reconcile its artifacts after an edit. Never edits code.",
    "allowed-tools": "Bash(openspec:*)",
    "compatibility": "Requires openspec CLI."
}

Revise a change's existing planning artifacts and keep them coherent. Never edit code.

Store selection: If the user names a store (a store is a standalone OpenSpec repo registered on this machine) or the work lives in one, run openspec store list --json to discover registered store ids, then pass --store <id> on the commands that read or write specs and changes (new change, status, instructions, list, show, validate, archive, doctor, context, view). Once selected, treat --store <id> as sticky for the rest of the workflow. Every unscoped example of those commands below is shorthand: before running it, append the flag. For example, run openspec status --change "<name>" --json --store "<id>", not the unscoped form shown below. Other commands do not take the flag. Hints printed by commands already carry the flag; keep it on follow-ups. Without a store, commands act on the nearest local openspec/ root.

Input: Optionally specify a change name. If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.

$openspec-continue-change (Codex) or /openspec-continue-change (other agents) is an expanded-profile workflow and may not be installed. Before suggesting it anywhere below, verify that it is available. If it is unavailable, openspec status --change "<name>" --json shows the next artifact and openspec instructions "<artifact-id>" --change "<name>" --json explains how to create it.

Steps

  1. Select the change

    If a name is provided, use it. Otherwise:

    • Infer from conversation context if the user mentioned a change
    • Auto-select if only one active change exists
    • If ambiguous, run openspec list --json to get available changes sorted by most recently modified, and ask the user to select one

    When prompting, present the top 3-4 most recently modified changes as options, showing:

    • Change name
    • Schema (from schema field if present, otherwise "spec-driven")
    • Status (e.g., "0/5 tasks", "complete", "no tasks")
    • How recently it was modified (from lastModified field)

    Mark the most recently modified change as "(Recommended)" since it's likely what the user wants to update.

    Always announce: "Using change: " and how to override (e.g., $openspec-update-change (Codex) or /openspec-update-change (other agents) <other>).

  2. Get the change's artifacts

    openspec status --change "<name>" --json
    

    Parse the JSON to understand current state. The response includes:

    • schemaName: The workflow schema being used (e.g., "spec-driven")
    • artifacts: Array of artifacts with their status ("done", "skipped", "ready", "blocked")
    • isPlanningComplete: Boolean indicating if all planning artifacts are complete. Older CLI versions expose the same value as isComplete.
    • planningHome, changeRoot, artifactPaths, and actionContext: path and scope context. Use these instead of assuming repo-local paths.

    The artifact ids and paths come from the active schema - do NOT assume them, and do NOT branch on hardcoded artifact names. Custom schemas must work unchanged.

    The files to edit are artifactPaths.<id>.existingOutputPaths - the concrete files that exist on disk, already glob-expanded for glob artifacts (e.g. specs/**/*.md). Do NOT write to resolvedOutputPath: for a glob artifact it is still the glob pattern, not a real file.

  3. Understand the request

    • If the user asked for a specific revision ("the design now uses X"), that is the starting edit.
    • If they only said "update" / "make this coherent", treat it as a coherence review: read the existing artifacts and check them against each other for contradictions, gaps, and duplication.
  4. Read and reconcile

    • Read the artifact(s) the request touches and the change's other existing artifacts.
    • Apply the requested edit. Then check every other existing artifact against it - in ANY direction: an edit to a later artifact may require revising an earlier one, not only the other way around. Build order is a useful reading order, not a constraint on which artifacts may be revised.
    • Note everything that is now inconsistent, missing, or contradictory.
    • Revise only files that already exist (existingOutputPaths). Do NOT create artifacts that don't exist yet, and do NOT invent new files under a glob artifact - note them and point the user to $openspec-continue-change (Codex) or /openspec-continue-change (other agents) to create them.
    • If the change is already coherent, say so and make no edits.
  5. Confirm and apply, one artifact at a time

    • Show each proposed revision and why. Write only after the user confirms.
    • If the user rejects a revision, do not write it - leave that artifact unchanged.
    • When a substantial rewrite is needed, get that artifact's rules and template first:
      openspec instructions "<artifact-id>" --change "<name>" --json
      
  6. Point to the next step (guidance only - NEVER act on it)

    • Artifacts still missing -> suggest $openspec-continue-change (Codex) or /openspec-continue-change (other agents) to create them.
    • Change already implemented (tasks checked off / already applied) -> the code may no longer match the revised plan; suggest $openspec-apply-change (Codex) or /openspec-apply-change (other agents) to carry the delta into code.
    • Everything done and implemented -> suggest $openspec-archive-change (Codex) or /openspec-archive-change (other agents).

Output

After each invocation, show:

  • Which artifacts were revised (and which proposed revisions were rejected)
  • Anything deferred to $openspec-continue-change (Codex) or /openspec-continue-change (other agents) (not-yet-created artifacts or files)
  • Where the change stands and the recommended next command

Guardrails

  • Planning artifacts only - NEVER edit implementation code. If the revised plan implies code changes, stop and point to $openspec-apply-change (Codex) or /openspec-apply-change (other agents).
  • Use the artifact ids and paths reported by openspec status; never branch on hardcoded artifact names.
  • Edit only the concrete files in existingOutputPaths; never write to a glob resolvedOutputPath.
  • Do not advance the build frontier: no new artifacts, no new files under glob artifacts - that is $openspec-continue-change (Codex) or /openspec-continue-change (other agents)'s job.
  • Confirm every edit with the user before writing.
  • If the request changes the change's intent rather than refining it, first verify whether the expanded-profile $openspec-new-change (Codex) or /openspec-new-change (other agents) workflow is available. If it is, recommend starting fresh with $openspec-new-change (Codex) or /openspec-new-change (other agents) (the "Update vs. Start Fresh" heuristic). If it is unavailable, ask for a distinct unused change name and recommend openspec new change "<new-change-name>" instead.

Version History

  • 741863e Current 2026-08-12 11:58

Same Skill Collection

.agents/skills/openspec-apply-change/SKILL.md
.agents/skills/openspec-archive-change/SKILL.md
.agents/skills/openspec-explore/SKILL.md
.agents/skills/openspec-propose/SKILL.md
.agents/skills/openspec-sync-specs/SKILL.md

Metadata

Files
0
Version
741863e
Hash
8bc764b4
Indexed
2026-08-12 11:58

ホーム - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-13 06:07
浙ICP备14020137号-1 $お客様$