chore(release): version packages - #1488
Merged
Merged
Conversation
openspec-release-bot
Bot
requested review from
clay-good
and removed request for
a team
July 29, 2026 22:47
openspec-release-bot
Bot
force-pushed
the
changeset-release/main
branch
27 times, most recently
from
August 5, 2026 18:58
fb3eee3 to
fc65d6d
Compare
openspec-release-bot
Bot
force-pushed
the
changeset-release/main
branch
from
August 5, 2026 20:45
fc65d6d to
ebc9a2a
Compare
clay-good
approved these changes
Aug 5, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@fission-ai/openspec@1.8.0
Minor Changes
#1303
1aa0f2aThanks @solanab! - Add the vendor-neutralagentstarget:openspec init --tools agentsinstalls the workflow skills to.agents/skills/openspec-*/SKILL.md, the shared location AGENTS.md-compatible assistants read. It is skills-only, so no slash commands are generated. Becauseagentsis now a real target,--tools allincludes it and creates.agents/skills/where it previously did not.#1274
7a4a745Thanks @NicoAvanzDev! - Generate GitHub Copilot coding agent setup and custom agent files duringopenspec initand keep them synchronized duringopenspec update.#1214
161f945Thanks @showms! - Add MiniMax Code as a global skills-only tool target.#1518
568e56cThanks @clay-good! - ### New Featuresopenspec init --tools rovodevinstalls the OpenSpec workflow skills for Atlassian's Rovo Dev CLI. It is skills-only (no slash commands), written to.rovodev.Bug Fixes
.agentsdirectory —openspec initandopenspec updateinstall Codex skills under.agents/skills/(the canonical location assistants read) and migrate an existing.codexskills directory in place. Files you customized are preserved, not overwritten.openspec statusseparates planning from implementation — status now reportsisPlanningComplete(every non-skipped planning artifact exists; skipped artifacts count as satisfied without being written) distinctly from overall progress, and its messages no longer imply a change is finished before it has been implemented.isCompleteis kept as a compatibility alias, so existing scripts keep working.#1517
73207a6Thanks @clay-good! - Make GitHub Copilot cloud coding-agent files opt-in. Selecting thegithub-copilottool no longer silently writes a GitHub Actions workflow into.github/;openspec initnow asks first (default No) and remembers the choice inopenspec/config.yaml(githubCopilot.cloudAgent). Use--copilot-cloud/--no-copilot-cloudto decide non-interactively.openspec updatenever prompts — it only refreshes cloud files for projects that opted in (or that already have generated cloud files, so existing setups keep working).--no-copilot-cloudorcloudAgent: false) removes OpenSpec-managed cloud files; a user-customized file is always preserved, never overwritten or deleted.initandupdatenow report whether cloud files were written, skipped, or left untouched — and if you already have your owncopilot-setup-steps.yml, they say it was preserved and that you need to add the OpenSpec install step by hand.#1484
521ee33Thanks @clay-good! - Retire a capability when a change removes its last requirement. A change that declaresretire_capabilities: truein its.openspec.yaml(alongside theschema:that file requires) may now be archived even when its REMOVED entries take a capability's last requirement:openspec archivedeletes that capability's main spec instead of aborting with "Spec must have at least one requirement". Without the marker nothing changes — the archive aborts exactly as before, except the message now names the marker as the way out. Retirement happens only when the emptied spec could not have been written at all, every one is named in the archive output, a pasteablegit checkoutis included when the spec lived in the caller's checkout, and--no-validatenever retires. Archive now also rejects a main spec with duplicate canonical requirement names instead of letting delta reconciliation collapse one of the duplicate blocks. One thing to know before retiring: a capability's spec is the base another change's MODIFIED block is checked against, so an in-flight change that modifies the capability you just retired will keep validating clean and then refuse to archive ("target spec does not exist; only ADDED requirements are allowed for new specs") — close or rework that change alongside the retirement.Patch Changes
#1502
ece8660Thanks @clay-good! -openspec validatenow treats the EnglishSHALL/MUSTconvention as guidance in normal mode, so requirements written in other languages can validate. Strict mode continues to enforce the convention.#1483
2b3d368Thanks @clay-good! - Tell the caller which flag to pass whenopenspec archivecannot ask its confirmation questions. An AI agent (or any script) runs the CLI with stdin closed, so every prompt rejects with@inquirer'sUser force closed the prompt with 0 null— the archive aborted with an error that named neither the question nor the flag, and agents burned a turn guessing (#1479). Each confirmation now reports what it needed and a pasteable rerun that carries the flags you already passed:openspec archive <name> --skip-specs --yesstays a--skip-specsrun, so following the suggestion cannot merge specs you opted out of merging, and a change name that needs quoting gets double quotes, the one form bash, zsh, PowerShell and cmd.exe all read the same way (a name no shell reads literally even quoted — one containing$, a backtick, or the%/!that cmd.exe still expands inside quotes — is left as a<change-name>placeholder rather than a command that would target something else).openspec archivewith no change name used to swallow the same failure, printNo change selected. Aborting.and exit 0 — success for a run that archived nothing; it now exits 1 asking for a change name, matching howopenspec showandopenspec validatealready behave without a terminal. The check is reactive — it inspects a prompt that already failed — so answers piped into the command,--yes,--json, and Ctrl-C all behave exactly as before, and a run that OpenSpec already considers non-interactive (CI,OPEN_SPEC_INTERACTIVE=0,--no-interactive) gets the guidance even when the runner allocated a pty. The onboarding walkthrough, the only generated guidance that tells an agent to runopenspec archive, now shows--yes.#1486
427abf4Thanks @clay-good! - Task progress now counts indented sub-tasks. Atasks.mdwhose sub-tasks were unfinished reported✓ Completeinopenspec listandopenspec view, was missing those tasks from theopenspec instructions applylist, and archived with no incomplete-task warning, because both checkbox parsers only matched checkboxes at column 0.Progress counting and the apply task list now share one parser, so
list,view,archiveandapplyagree about which lines of a tasks file are tasks. A checkbox with no text after it is left out of the apply list, which has nothing to act on, but still counts toward every progress number; a file of nothing but such checkboxes now asks to be rewritten rather than reporting itself done. The shared pattern matches every line the two it replaced matched, and more, so task counts can rise but never fall: no change starts reporting less work than before, and archive's incomplete-task warning can only become stricter. Checkboxes are still counted wherever they appear, including inside a code fence, an HTML comment or an indented block, so atasks.mdthat shows a checklist as a format example can now count that example as work — remove it from the file, or pass--yesto archive.#1500
26bd1d4Thanks @clay-good! - Keep generated workflows on the selected store, handle optional workflow fallbacks safely, and validate synced specs before reporting success.#1490
45cca5dThanks @clay-good! - Say before confirmation when archiving a change will delete a note written next to a requirement. A requirement absorbs anything below it that OpenSpec doesn't recognize as a new heading — a note indented by the one to three spaces Markdown allows, for example — so removing or modifying that requirement took the note with it, silently.openspec archivenow names content the rebuilt spec would actually drop and where to move it to keep it. The merge itself is unchanged: nothing is relocated, because a#line inside a scenario looks identical to a note and moving one of those would rewrite the spec wrongly.#1492
690a27eThanks @mc856! -openspec initandopenspec updateno longer delete the CoStrict and Junie command files they just generated. Legacy cleanup removes artifacts older OpenSpec versions left behind, and two of its patterns named paths the current adapters still write to. CoStrict's was a whole-directory removal of.cospec/openspec/commands/, the folder the adapter writesopsx-<id>.mdinto, so every run wiped the directory — including any file the user kept there — while the banner above it readNo user content to preserve. Junie's.junie/commands/opsx-*.mdlisted its own current output. Cleanup runs before the config migration, so on a config that has noprofilekey yet the missing command files make delivery detection read the project as skills-only and persist that to the global config: the files are not regenerated, and the preference changes for every other project too.CoStrict is now a file pattern,
.cospec/openspec/commands/openspec-*.md, matching the three commands the pre-opsxCoStrict integration wrote there (openspec-proposal.md,openspec-apply.md,openspec-archive.md) and the same shape every other file-based tool already uses. Junie's entry is removed outright: Junie support arrived after the slash configurators that wroteopenspec-*files were deleted, so no OpenSpec version ever created those files there. Genuinely legacy files are still detected and removed, and no other tool's patterns change — they never overlapped their adapter's current output.#1501
0b20ae3Thanks @clay-good! - Keep the propose workflow focused on planning, clarify material ambiguities before creating a change, and hand implementation off to the apply workflow.#1503
8a3850dThanks @clay-good! - When exploration turns into a new change, generated explore guidance now instructs agents to runopenspec new changebefore writing requested artifacts. This preserves the required.openspec.yamlmetadata instead of letting an agent create an incomplete change directory by hand. After the user accepts a capture, explore also creates the requested artifacts without requiring another workflow command.#1513
622c509Thanks @FasterPHP! - Honortelemetry.enabledin global config.falsedisables anonymous telemetry andopenspec updateversion checks; unset keeps telemetry enabled, and env/CI opt-outs still take precedence.#1499
9cd845fThanks @clay-good! - Keep generated files, specs, archive moves, and local state inside their intended security boundaries without breaking linked monorepo workflows.#1482
84ebc57Thanks @clay-good! -openspec validate <change>now reports a MODIFIED requirement that omits a scenario the main spec still has — the same loss archive already refuses to apply — so the change fails at authoring time instead of at archive time. A change carrying a stale MODIFIED block will start failing validation; it was already unarchivable, and the message names the scenarios to copy back in.