Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

openspec update --dry-run --json: say what an update would change, without changing it

Open
#2,088 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 2 days

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
38/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Active
Tech stack
cli, typescript
Domain
cli, tooling

Research direction

Start with the openspec update command, which the issue says has to report every file it would add, change or delete, including files outside the repo such as home-folder skills and the settings file. Find where the update step decides and writes those paths, and separate planning from writing. Done when openspec update --dry-run --json prints the planned list and writes nothing, and a test runs a dry run and a real update on the same fixture and checks that the lists match.

Written by the indexing model from the issue text.

Description

The ask

Add a way to ask openspec update what it would change, without changing anything:

openspec update --dry-run --json

It prints the list of files it would add, change or delete. It writes nothing.

Why

OpenSpec Desktop shows people what an update will change before they agree to it.

Today the CLI can't tell us that. So the app does a workaround:

  1. Copy the repository's agent folders (.claude, .cursor, …) into a temp folder
  2. Run openspec update on the copy
  3. Compare the copy before and after

This workaround keeps breaking:

  • It's slow and can fail. Claude Code keeps whole copies of the repo in .claude/worktrees (81 GB on one machine). The copy hit its size limit, and the update check failed for every repository. Fixed for now in Fission-AI/openspec-desktop#100 by skipping that folder.
  • It has to guess what to copy. If we copy too little, the preview is wrong and nobody notices. If we copy too much, it's slow or fails.

If the CLI tells us the plan itself, there's no copy, no size limit and no guessing.

What the output could look like

{
  "changes": [
    { "path": ".claude/skills/openspec-explore/SKILL.md", "action": "update", "tool": "claude" },
    { "path": ".claude/commands/opsx/old-name.md", "action": "delete", "tool": "claude" },
    { "path": "~/.codex/skills/openspec-propose/SKILL.md", "action": "add", "tool": "codex" }
  ]
}

It needs to:

  • Cover every file update would touch, including files outside the repository (home-folder skills, OpenSpec's settings file).
  • Write nothing.
  • Give the same answer the real update would act on.

Done when

  • openspec update --dry-run --json exists and writes nothing
  • Its list matches what a real openspec update then changes (a test runs both and compares)
  • OpenSpec Desktop can stop making scratch copies
Dominant language
TypeScript
Stars
71.6k
Forks
4.9k
Avg merge
2d 6h
Merged PRs (30d)
82

Getting set up

Open in Codespaces

Starts the project's dev container in your browser, under your own GitHub account.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Fission-AI/OpenSpec

All issues in Fission-AI/OpenSpec

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.