chore(release): version packages - #1629
Open
openspec-release-bot[bot] wants to merge 1 commit into
Open
Conversation
openspec-release-bot
Bot
requested review from
clay-good
and removed request for
a team
August 11, 2026 20:31
openspec-release-bot
Bot
force-pushed
the
changeset-release/main
branch
15 times, most recently
from
August 12, 2026 16:13
3e89d4d to
95edea3
Compare
openspec-release-bot
Bot
force-pushed
the
changeset-release/main
branch
from
August 12, 2026 16:47
95edea3 to
479ed70
Compare
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.9.0
Minor Changes
#1622
59c16a4Thanks @clay-good! - ### New Featuresopenspec initgenerates OpenSpec commands under.commandcode/commands/opsx-<id>.md(invoked as/opsx-<id>) alongside the skills under.commandcode/skills/, matching Command Code's documented custom-slash-command surface.#1613
42d7f67Thanks @Angelthebestone! - ### New Featuresopenspec initnow supports Command Code as an adapterless skills-only tool. It installs the OpenSpec skills under.commandcode/skills/and invokes them as/openspec-*commands, matching Command Code's native skill surface.#1604
83be9d1Thanks @clay-good! - Addopenspec validate --archived: an opt-in check that every change underchanges/archive/has all of itstasks.mdcheckboxes ticked, exiting non-zero if any are unchecked. This surfaces changes that were archived with unfinished work — which the normal validate flow never catches, because it only looks at active changes — and is meant for a pre-commit or CI hook (#205). It is a standalone scope: it does not alter any existingvalidateinvocation and does not re-validate already-applied spec deltas.Patch Changes
#1530
bf5099eThanks @clay-good! - Apply workflow now tells agents to surface unexpected scope instead of hiding it. When a task needs work beyond what the spec describes, the/opsx:applyskill and command guidance direct the agent to pause and report the added scope rather than silently narrowing, deferring, or simplifying away specified behavior, and to mark a task complete only when its specified behavior is fully implemented. Fixes #1529.#1603
9ae75c8Thanks @clay-good! -openspec archiveno longer writes terminal escape codes to a redirected or captured stdout. Its confirmation prompts and the no-argument change picker drew their live UI with ANSI cursor-move sequences even when stdout was not a terminal — noise in a redirected log, and in some non-interactive hosts an unbounded render loop that could grow the captured output until the disk filled. When stdout (or stdin) is not a terminal, archive now reads the confirmations as plain text, and a no-argument run asks you to pass a change name up front instead of drawing a menu. Piped answers (printf 'y\n' | openspec archive …) and--yesbehave as before, and interactive terminals are unchanged. Fixes #1526.#1528
9425897Thanks @Marzx13! - Canonicalize rebuilt specs to end with exactly one final LF. Previously a spec whose## Requirementssection was last was rebuilt with a trailing blank line (\n\n), which failed Markdown whitespace checks after sync or archive. Internal spacing and content after the Requirements section are unchanged.#1640
610b78fThanks @clay-good! - Preserve the blank lines around a spec's## Requirementsheading when syncing a delta.openspec archiverebuiltopenspec/specs/<capability>/spec.mdby joining its slices with a bare newline, so the blank lines that surround the heading were dropped and the resulting file failed Markdown whitespace checks. The rebuild now keeps that spacing intact. Fixes #1625. Thanks @jwang513! (#1637)#1640
610b78fThanks @clay-good! -openspec validate --allandopenspec list --jsonno longer silently pass when run outside an OpenSpec project. From a directory with no root they used to resolve the current directory as an implicit root, exit 0, and report empty results — a false pass for CI and agents. Bulk validation (--all,--changes,--specs) andlistnow require an existing root (theopenspec/project.mdfallback for legacy projects is kept), while direct validation and other intentional implicit-root workflows are unchanged. Thanks @clay-good! (#1612)#1640
610b78fThanks @clay-good! - Label theupdateworkflow in theopenspec configworkflow picker. The checklist had friendly labels for 11 of the 12 workflows but was missingupdate, so that row — one of the six core workflows every user sees — fell back to its raw id with a placeholder description. The update-change template's stale "expanded-profile" wording is also reworded to "optional". Fixes #1627. Thanks @clay-good! (#1632)#1640
610b78fThanks @clay-good! -openspec schema forknow preserves the source schema's YAML formatting. Renaming a forkedschema.yamlround-tripped through a parse/re-serialize step that dropped comments, could rewrite block-scalar style (a literal|folded to>), and reordered keys, so the fork no longer matched its source. The rename now edits the document in place via the YAML Document API, leaving comments, scalar style, and key order untouched. Thanks @clay-good! (#1607)#1640
610b78fThanks @clay-good! -openspec schemasnow resolves through the canonical OpenSpec root-selection precedence instead of always reading from the current directory. It accepts--store <id>, rejects--store-pathlike the other store-aware commands, and returns the shared machine-readable diagnostics on JSON failures, while preserving the existing human output and bare JSON array on success. Thanks @Patodo! (#1616)#1640
610b78fThanks @clay-good! -openspec validatenow warns on ambiguous task numbering inspec-drivenchanges: a task ID duplicated at full depth (including across resolved task files), or a task whose leading number disagrees with its enclosing## N.group. Numeric-looking text outside numbered groups is ignored, and custom schemas are unchanged until they opt in. The checks run across direct, bulk, and deprecated change validation. Closes #1520. Thanks @alectimison-maker! (#1523)#1522
07dea6eThanks @clay-good! - ### Bug Fixesagentstarget —openspec updateno longer overwrites an existing.agentsskills tree (and its ownership marker) when Codex is detected only from leftover global~/.codex/prompts. Because Codex and the vendor-neutralagentstarget share.agents/skills, a project that used theagentstarget could have its generic skills silently rewritten with Codex-specific syntax and its target flipped to Codex on the nextupdate --force. The legacy-upgrade path now respects the established owner of a shared skills directory, matching the one-writer ruleopenspec initalready applies. When an upgrade is skipped this way, that tool's repo-local legacy files (e.g..codex/prompts/openspec-*.md) are also preserved rather than cleaned up, since no replacement was written to take their place. A genuine first-time Codex upgrade (no.agentstree yet) is unaffected.#1521
c751b3dThanks @clay-good! - ### Bug Fixesopenspec validateandopenspec archivenow recognize every level-4 (####followed by whitespace) child of a requirement as a scenario, matching how the spec is counted elsewhere. Before, the scenario-loss guard only recognized headers written exactly as#### Scenario:, so aMODIFIEDrequirement that dropped a differently-labeled child (for example#### Edge case) passed validation and was then permanently deleted by archive with no warning. Both paths now agree, so the loss is caught at authoring time. Scenario names are normalized when comparing (an optionalScenario:prefix and a CommonMark closing#run are ignored), so simply relabeling a scenario is not mistaken for dropping one.#1610
17581c1Thanks @clay-good! - ### Bug Fixesopenspec initnow suggests an IDE restart only when an IDE-resident tool such as Cursor, GitHub Copilot, Continue, or Cline was configured. CLI tools like Claude Code, Codex, and Gemini CLI no longer show the hint, since their commands work as soon as the files exist.#1609
804427bThanks @clay-good! - Suppress the first-run telemetry disclosure notice when--jsonis used. On afirst-ever run the notice was written to stdout and could break
--jsonconsumers; it is now deferred to the first later non-JSON run, keeping
--jsonoutput valid while still guaranteeing the disclosure.