What’s Changed [0.3.9] - 2026-06-17
Added
- CLI i18n shared module: Extracted the init-time translation table to
src/commands/i18n.tsso init, update, and future commands can share English/Chinese strings consistently instead of duplicating tables per command. - Optional npm dependency prompts in init/update:
comet initandcomet updatenow present a multi-select for OpenSpec CLI, Superpowers (vianpx skills add), and CodeGraph CLI instead of force-installing them. Items not yet detected on the system default to checked; already-installed items default to unchecked so users can opt into upgrades without being forced. The Superpowers entry also surfaces a recommendation to install v6.0.0+ (≈2× faster, ≈50% fewer tokens). --languageoption forcomet init: New CLI flag (en/zh) that selects skill language non-interactively, mirroring the existingcomet update --languageoption (#109).review_modefield for code review control: Added.comet.yamlfieldreview_mode(off/standard/thorough) controlling automatic code review during build and verify phases.comet-buildrequires user selection before execution;comet-verifyand subagent dispatch adapt behavior per mode;comet-hotfixdefaults tooff. Validated bycomet-state.sh,comet-guard.sh, andcomet-yaml-validate.sh.- Project-level review mode defaults:
.comet/config.yamlcan now setreview_mode: off|standard|thorough, which is snapshotted into new full workflow changes so teams can choose a project-wide automatic review default while preserving existing per-change state behavior. Newly generated config files include enum comments forcontext_compression,review_mode, andauto_transitionso users can adjust supported values without searching the docs. - Uninstall by platform selection:
comet uninstallnow shows a checkbox prompt when multiple platforms are detected, allowing users to selectively uninstall specific platforms instead of removing all at once. Single-target scenarios use a simple yes/no confirmation.--forceand--jsonflags retain the existing all-at-once behavior. - Codex plugin-installed Superpowers detection:
comet initnow detects Superpowers already installed via the Codex plugin cache (~/.codex/plugins/cache/...), preventing duplicate re-installation — parallel to the existing Claude Code and OpenCode plugin detection (#115).
Changed
- Tagline rebrand: Changed the Comet tagline in the
comet initbanner and thepackage.json/ CLI--descriptionfrom “OpenSpec + Superpowers dual-star development workflow” to “Agent Skill Harness Phase-Guarded Automation From Idea To Archive”, positioning Comet by its core value (a phase-guarded agent skill harness) rather than by its underlying OpenSpec + Superpowers dependencies. - Change name confirmation as a blocking decision point:
comet-openSKILL.md (Chinese and English) now adds a dedicated Step 1c that pauses beforeopenspec new changeto confirm the change name. The agent must recommend 2-3 kebab-case English candidate names derived from the clarification summary, always offer a custom-input option, and warn that Chinese (or any non-kebab-case) input will be converted into a compliant kebab-case English name and shown back for confirmation — preventing agents from auto-generating non-compliant Chinese change names. - Non-ASCII change name prevention: Added explicit ASCII validation rules to
comet-openSKILL.md (both Chinese and English) to prevent agents from auto-generating non-compliant change names containing Chinese, Japanese, Korean characters, spaces, or special characters. The agent must now ask the user for an ASCII-compliant name. - Chinese gate-term normalization: Updated Chinese Comet wording to avoid translating
gateliterally as “门”: Design Step 1e now uses “主动式上下文压缩”, the shared debugging guidance now uses “异常调试协议”, andCLAUDE.md/AGENTS.mdnow define this as the standard Chinese translation rule for future skill edits. - Full i18n coverage for CLI prompts: Extended translation coverage from
init-only to also coverupdate(banner, npm update progress, skills copy progress, summary, codegraph prompt). All user-facing strings now have English and Chinese variants (#109).
Fixed
- Phase-skip enforcement across all guard layers: Fixed agents jumping from
opentobuild(skippingdesign) undetected.comet-state.shnow enforces evidence on every forward transition; directset phaseis blocked (withCOMET_FORCE_PHASE=1escape hatch);comet-hook-guard.shblocks source writes whendesign_docis null;comet-phase-guardrule adds a phase-entry self-consistency check requiring prerequisite artifacts before writing source. - Hook guard cross-change false positives: Fixed
comet-hook-guard.shletting one change’s phase wrongly block writes to a different change. Writes targetingopenspec/changes/<name>/are now governed by that change’s own.comet.yamlphase instead of the first active change found in the directory. This covers two cases that previously blocked a brand-new change’s artifact writes: (1) an old change markedarchived: truebut not yet physically moved to thearchive/subdirectory, and (2) an old change stalled in thearchivephase witharchived: false(not yet run through the archive script). Additionally, a new change directory whose.comet.yamldoes not exist yet (artifacts are written before the state file during/comet-open) is treated asopen, soproposal/design/tasks/specswrites are allowed. - CodeGraph setup detection: Fixed
comet initandcomet updateprompting for CodeGraph setup even when the project already has a.codegraph/index. Existing project indexes now skip the optional CodeGraph prompt and install step, and CodeGraph CLI resolution can use a pnpm global binary before falling back to npm global installation. - Phase guard auto-transition handoff: Fixed the injected Comet phase guard rule hardcoding the next skill after
guard --apply, which could bypassauto_transition: false. The rule now delegates post-guard handoff tocomet-state next <change-name>and followsNEXT: auto|manual|doneso manual phase boundaries are respected. - Executable permission loss on macOS after update:
bin/comet.jsand all shell scripts underassets/skills/comet/scripts/were committed with git mode100644(non-executable). After an npm update, macOS users lost execute permissions on thecometCLI entry point. Changed all 8 files to100755in git so npm installs always preserve the executable bit.
Tests
- Phase-skip enforcement coverage: Added shell-script tests covering the hardened guard layers —
open-completeblocked when an open artifact is missing,design-completeblocked/allowed bydesign_docpresence,archivedblocked untilverify_result: pass, directset phaseblocked while theCOMET_FORCE_PHASEescape hatch is allowed, and hook-guard blocking full-workflowbuildsource writes whendesign_docis null while still allowing preset workflows and full workflows with a validdesign_doc. - Project review mode default coverage: Added regression coverage for
.comet/config.yamlreview_modesnapshotting into full workflow changes, invalid project review mode rejection, and enum comments in generated project config files. - CodeGraph setup coverage: Added regression tests for existing
.codegraph/index detection, skipping redundant CodeGraph installation, pnpm global CLI resolution, and suppressing the update-time CodeGraph prompt when a project index already exists. - Phase guard handoff coverage: Added skill-rule regression coverage ensuring the phase guard delegates to
comet-state nextand no longer embeds a fixed next-skill mapping that can ignoreauto_transition. review_modeintegration coverage: Added regression tests verifyingreview_modeis wired through state, guard, and validation scripts, with correct mode-specific behavior incomet-build/comet-verify/comet-hotfix.- Uninstall platform selection coverage: Added tests for single-target auto-select, multi-target checkbox selection, user cancellation,
--forceskip,--jsonoutput, and no-targets-found handling.