Comet Phase 1: Open. Invoke with /comet-open. Explore ideas through OpenSpec, confirm requirements clarification, then create change structure (proposal + design + tasks).
Every prompt and artifact request passed to OpenSpec must include the output-language constraint: use the language of the user request that triggered this workflow. When resuming an existing change with a clear dominant artifact language, preserve that language unless the user explicitly asks to switch.
Immediately execute: Use the Skill tool to load the openspec-explore skill. Skipping this step is prohibited.
After the skill loads, explore the problem space following its guidance, but do not treat one Q&A turn as sufficient clarification. You must continue asking, align with the user, and form a clarification summary covering:
The clarification summary must include: goals, non-goals, scope boundaries, key unknowns, and draft acceptance scenarios.
When the user input is a large PRD, roadmap, complete product plan, or the clarification summary shows multiple independent capabilities, modules, user journeys, or milestones, must evaluate whether it should be split into multiple changes before creating OpenSpec artifacts.
The split preflight must be based on clarified information and output a proposed split list. Each proposed split item must include:
Recommend splitting when any condition applies:
When splitting is recommended, must follow the comet/reference/decision-point.md protocol to pause and wait for the user's choice.
The user choices must include:
Every accepted split item must be created as an independent change through /comet-open, not by calling /opsx:new directly. /comet-open creates both OpenSpec artifacts and .comet.yaml, ensuring each change enters the Comet state machine.
Must not create proposal.md, design.md, or tasks.md before the user completes the PRD split choice. If the user chooses to create multiple changes, the current /comet-open invocation only completes split confirmation and coordination, then enters /comet-open for each split item in the user-confirmed order.
In batch split mode, entering /comet-open for each split item must explicitly mark it as a "confirmed split item" and carry that split item's goals, scope, non-goals, and acceptance scenarios. Confirmed split items skip the PRD split preflight by default, unless the split item itself still clearly contains multiple independent capabilities.
In batch split mode, a single split item must not auto-advance to /comet-design after completing the open phase. After splitting is complete, must pause and ask the user which change to start; after the user chooses, advance only that change into /comet-design, while other changes remain active and can be resumed later through /comet.
Minimal resume rule: do not add a dedicated batch state file. On resume, first check already-created active changes; split items that already exist and contain .comet.yaml must not be created again, while uncreated split items continue through /comet-open according to the user-confirmed split list. If the confirmed split list cannot be recovered from the conversation, must ask the user to confirm the split list again before continuing.
Before creating OpenSpec artifacts, must follow the comet/reference/decision-point.md protocol to pause and wait for the user to confirm requirements clarification is complete.
When pausing, present the clarification summary: goals, non-goals, scope boundaries, key unknowns, and draft acceptance scenarios.
Must not create proposal.md, design.md, or tasks.md before the user confirms requirements clarification is complete, and must not use the Skill tool to load the openspec-propose skill to generate all artifacts in one pass.
Before creating the change directory (openspec new change), must follow the comet/reference/decision-point.md protocol to pause and let the user decide the change name. Must not auto-generate or silently infer the change name.
OpenSpec change names must be kebab-case English (lowercase letters, digits, hyphens; e.g. refine-requirements-doc). Chinese or other non-conforming names are invalid.
When pausing, present:
The decision options must include:
Must not run openspec new change or create .comet.yaml before the user confirms the final change name. If the chosen/converted name collides with an existing change, report the collision and ask the user to choose another name.
Immediately execute: Use the Skill tool to load the openspec-new-change skill. Skipping this step is prohibited.
Full /comet workflow must not use the Skill tool to load the openspec-propose skill by default; only load it when the user explicitly requests generating the proposal and artifacts in one pass.
After the skill loads, follow its guidance to create the change skeleton, but override its "STOP and wait for user direction" behavior when a confirmed clarification summary from Step 1b is already available in the conversation context.
If the user has already confirmed a clarification summary (Step 1b), use that summary directly to populate artifact content. If no clarification summary exists (edge case), fall back to the skill's default behavior of asking the user.
After the change skeleton is created, generate proposal, design, and tasks one by one using the standard artifact loop:
Standard Artifact Loop (for each artifact-id: proposal → design → tasks):
Refresh status: openspec status --change "<name>" --json
Fetch artifact instructions:
openspec instructions proposal --change "<name>" --json
openspec instructions design --change "<name>" --json
openspec instructions tasks --change "<name>" --jsonFor the returned JSON instruction payload, you must:
dependenciestemplate as the artifact structureinstruction guidancecontext and rules as constraints — must not copy them into the artifact contentresolvedOutputPathAfter creating each artifact, re-run openspec status --change "<name>" --json to confirm status before continuing to the next artifact
Failure handling: If openspec instructions fails, returns invalid JSON, reports unmet dependencies, or does not provide a usable resolvedOutputPath, must immediately stop artifact creation and report the OpenSpec error. Must not fall back to hard-coded artifact prose because that would silently bypass project rules.
Naming and scope guard: Change name must be the kebab-case English name confirmed by the user in Step 1c — must not auto-generate, infer, or use a non-kebab-case (e.g. Chinese) name. Change scope must match the user's description — must not expand or narrow it independently.
Confirm the following artifacts have been created:
openspec/changes/<name>/
├── .openspec.yaml
├── .comet.yaml
├── proposal.md # Why + What: problem, goals, scope
├── design.md # How (high-level): architecture decisions, approach selection
└── tasks.md # Task checklist (checkboxes)Create .comet.yaml state file:
COMET_ENV="${COMET_ENV:-$(find . "$HOME"/.*/skills "$HOME/.config" "$HOME/.gemini" -path '*/comet/scripts/comet-env.sh' -type f -print -quit 2>/dev/null)}"
if [ -z "$COMET_ENV" ]; then
echo "ERROR: comet-env.sh not found. Ensure the comet skill is installed." >&2
return 1
fi
. "$COMET_ENV"
if [ -z "$COMET_STATE" ] || [ -z "$COMET_GUARD" ]; then
echo "ERROR: Comet scripts not found. Ensure the comet skill is installed." >&2
return 1
fi
"$COMET_BASH" "$COMET_STATE" init <name> fullVerify state machine has been correctly initialized:
"$COMET_BASH" "$COMET_STATE" check <name> openProceed to Step 4 after verification passes. The script outputs specific failure reasons when verification fails.
Idempotency: All open phase operations can be safely re-executed. If .comet.yaml is already at phase: open and all three artifact files exist, skip completed steps and continue from the first missing step.
Confirm the three documents have complete content:
File existence verification: Confirm all three file paths exist and are non-empty. If any file is missing or empty, must not enter Step 5 or execute phase guard — return to creation step to fill the gap.
After the three documents are created and content completeness check passes, must follow the comet/reference/decision-point.md protocol to pause and wait for user confirmation. Must not execute phase guard or auto-transition before user confirmation.
The user confirmation question must be presented as a single-select question with the following summary and options:
Summary content:
Options:
After user selects "Confirm", proceed to exit conditions. When user selects "Needs adjustment", modify the corresponding files per their notes, then request confirmation again.
"$COMET_BASH" "$COMET_GUARD" <change-name> open --apply; after all PASS, auto-transitions to next phaseMust use --apply before exit, otherwise .comet.yaml remains at phase: open and the next phase entry check will fail.
"$COMET_BASH" "$COMET_GUARD" <change-name> open --applyFull workflow auto-transitions to phase: design; hotfix/tweak presets auto-transition to phase: build.
Follow comet/reference/auto-transition.md. Key command:
"$COMET_BASH" "$COMET_STATE" next <change-name>NEXT: auto → invoke the skill pointed to by SKILL to enter the next phaseNEXT: manual → do not invoke the next skill; prompt user to run /<SKILL> manuallyNEXT: done → workflow is complete, no further action neededhotfix/tweak presets are controlled by their corresponding preset skill (phase goes directly to build); their next returns the corresponding preset skill.
2945693
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.