Automated summary
Generates all OpenSpec planning artifacts (proposal, delta specs, design, tasks) for a new change in a single step, without touching project code.
Strengths
- Produces a complete, structured planning bundle in one pass instead of multiple separate steps
- Honors the configured schema and existing spec directory layout, including nested capability paths
- Explicitly handles selection of a registered OpenSpec store and keeps the --store flag sticky across the workflow
- Asks clarifying questions only for ambiguity that materially affects scope or acceptance criteria
Limitations
- Hard planning boundary: it implements nothing, so the apply workflow must be started separately
- Fully dependent on an installed and configured openspec CLI
- The provided SKILL.md is truncated, so the tail of the schema-selection step is not visible
Use when you want to quickly describe a feature or fix and immediately get a full proposal with design, specs, and tasks ready for implementation.
Avoid it when you want code written or the repository modified, since the workflow stops once planning artifacts are produced.
Security analysis
SafeThe skill is a planning-only workflow for the OpenSpec CLI. Its declared allowed-tools are scoped narrowly to `Bash(openspec:*)`, and every command shown is an `openspec` subcommand (new change, status, instructions, schemas, context). It explicitly enforces a planning boundary that forbids editing project code or starting implementation in the same response, and it contains no network fetches, no curl|sh patterns, no secret handling, no destructive filesystem operations, and no obfuscation. Store selection uses a benign local store id flag. No meaningful execution risk.
No concerns found
How this analysis is madeExamples
Propose a change to add user authentication with email/password and OAuth, and generate the full proposal, specs, design, and tasks.openspec-propose: I want to fix the flaky retry logic in the payment webhook handler — describe what you'd change and produce the planning artifacts.Using the 'platform' store, propose a change to add rate limiting to the public API and generate all planning artifacts.name: openspec-propose description: Propose a new change with all artifacts generated in one step. Use when the user wants to quickly describe what they want to build and get a complete proposal with design, specs, and tasks ready for implementation. allowed-tools: Bash(openspec:*) license: MIT compatibility: Requires openspec CLI. metadata: author: openspec version: "1.0" generatedBy: "1.12.0"
Propose a new change - create the change and generate all artifacts in one step.
Planning boundary: This workflow creates planning artifacts only. The user request that selected or triggered this workflow authorizes planning only, even if it asks to build or fix something. Do not edit project code. After the planning artifacts are complete, stop. Do not start implementation in the same response, even if the initial request asks for it. Wait for a new user request after the artifacts are presented; then start the apply workflow.
I'll create a change with the artifacts your schema defines. With the default spec-driven schema that is:
- proposal.md (what & why)
specs/<capability-path>/spec.md(what the system must do - a delta, not the main spec)- design.md (how)
- tasks.md (implementation steps)
<capability-path> is the spec directory relative to specs/ (for example, user-auth or identity/user-auth). Preserve an existing capability's full path and follow the project's established organization for new capabilities.
When the user is ready to implement, they must start the apply workflow explicitly.
Store selection: If the user names a store (a store is a standalone OpenSpec repo registered on this machine) or the work lives in one, run openspec store list --json to discover registered store ids, then pass --store <id> on the commands that read or write specs and changes (new change, status, instructions, list, show, validate, archive, doctor, context, schemas, view). Once selected, treat --store <id> as sticky for the rest of the workflow. Every unscoped example of those commands below is shorthand: before running it, append the flag. For example, run openspec status --change "<name>" --json --store "<id>", not the unscoped form shown below. Other commands do not take the flag. Hints printed by commands already carry the flag; keep it on follow-ups. Without a store, commands act on the nearest local openspec/ root.
Input: The user's request should include a change name (kebab-case) OR a description of what they want to build.
Steps
-
Understand the request and clarify material ambiguity
If no clear input is provided, ask the user (open-ended, no preset options):
"What change do you want to work on? Describe what you want to build or fix."
From their description, derive a kebab-case name (e.g., "add user authentication" →
add-user-auth).IMPORTANT: Do NOT proceed without understanding what the user wants to build.
If the request contains ambiguity that would materially affect scope, externally observable behavior, compatibility, or acceptance criteria, ask the user before creating the change. For minor details, make a reasonable assumption and record it in the planning artifacts.
-
Determine the workflow schema
Use the configured default schema unless the user explicitly requests a different workflow.
Use a different schema only if the user:
- Explicitly requests a specific schema by name → use
--schema <schema-name> - Asks to "show workflows" or asks "what workflows" exist → resolve the authoritative root by running
openspec context --jsonfrom the current working directory. If the user explicitly selected a registered store, useopenspec context --json --store "<store-id>". Then runopenspec schemas --jsonwith its working directory set to the returnedroot.pathand let them choose. This preserves roots selected by a localstore:pointer or the globaldefaultStore; when a registered store was explicitly selected, append--store "<store-id>"toopenspec schemas --jsonas well. If context reports onlyno_openspec_root, runopenspec schemas --jsonfrom the current working directory instead. Do not use this fallback for invalid or unavailable stores.
Otherwise, omit
--schemato preserve the configured default. - Explicitly requests a specific schema by name → use
-
Create the change directory
Choose one schema form below. If a registered store is selected, append
--store "<store-id>"to that command and each later OpenSpec command shown below that accepts--store.Using the configured default:
openspec new change "<name>"Using an explicitly requested schema:
openspec new change "<name>" --schema "<schema-name>"This creates a scaffolded change in the planning home resolved by the CLI with
.openspec.yaml. -
Get the artifact build order
openspec status --change "<name>" --jsonParse the JSON to get:
applyRequires: array of artifact IDs needed before implementation (e.g.,["tasks"])artifacts: list of all artifacts, each with itsstatusand itsrequiresedges (the artifact IDs it directly depends on)planningHome,changeRoot,artifactPaths, andactionContext: path and scope context. Use these instead of assuming repo-local paths.
-
Create every artifact in the required set
Use a todo list to track progress through the artifacts.
Loop through artifacts in dependency order (artifacts with no pending dependencies first):
a. For each artifact that is
ready(dependencies satisfied):- Get instructions:
openspec instructions <artifact-id> --change "<name>" --json - The instructions JSON includes:
context: Project background (constraints for you - do NOT include in output)rules: Artifact-specific rules (constraints for you - do NOT include in output)template: The structure to use for your output fileinstruction: Schema-specific guidance for this artifact typeskipped/warning: present when the change declares skip_specs and this artifact must NOT be created - stop and pick another artifactresolvedOutputPath: Resolved path or pattern to write the artifactdependencies: Completed artifacts to read for context
- Read any completed dependency files for context - always re-read them from disk, even if you saw them earlier in the conversation (the user may have edited them)
- Inspect the relevant project before drafting: Read
contextandrulesfirst, then inspect relevant implementation, nearby tests, configuration, and documentation outsideopenspec/. Keep inspection read-only and proportional to the change; reuse findings for later artifacts and inspect more only as needed.- Identify the target project from the request and project context; the planning home may be separate from the code. If the target is unclear, ask. For greenfield or non-code changes, inspect the available structure and relevant documents. If source is unavailable, state the limitation and ask when it materially affects the plan.
- Ground scope, approach, and tasks in what you find. Distinguish observed behavior from assumptions and proposed additions; surface conflicts with existing specs instead of silently deciding which is correct.
- Do this discovery now, rather than leaving generic "explore the codebase" or "make a plan" tasks for implementation. Keep any necessary follow-up investigation specific to an unresolved question.
- If the
instructionfield delegates creation to a specific skill or command, invoke it to produce the artifact instead of writing the file yourself, then verify the artifact file exists atresolvedOutputPath - Otherwise create the artifact file using
templateas the structure and write it toresolvedOutputPath. IfresolvedOutputPathis a glob, followinstructionto choose the concrete file path - Apply
contextandrulesas constraints - but do NOT copy them into the file - Show brief progress: "Created <artifact-id>"
b. Continue until every artifact in the required set exists (not just
apply.requires)- After creating each artifact, re-run
openspec status --change "<name>" --json - The required set is
applyRequiresplus every artifact reachable from those by following therequiresedges instatus --json- walk them transitively (spec-driven closes over proposal, specs, design, tasks). Leave artifacts outside that set alone statusis file-existence only, so anapplyRequiresartifact readingdonedoes NOT mean its dependencies exist - writingtasks.mdearly markstasksdone whilespecswas never written. Use each artifact'srequiresedges, not itsstatus, to build the required set: adoneartifact still lists what it depends on- An artifact already reading
status: "skipped"is satisfied: the change declaresskip_specsin.openspec.yaml, so its files must NOT exist. Never try to create one - Create every artifact in the required set that is missing, then re-check - creating one can unblock others
- Skip one only when
statusalready reports itskipped, or when its owninstructionsays it is conditional: runopenspec instructions <artifact-id> --change "<name>" --jsonand skip only if itsinstructionfield marks it optional (e.g. "create only if..."). Spec-driven'sdesign.mdqualifies;specsqualifies only via theskippedstatus above, never by your own judgment. Tell the user, and do not reconsider it - Dependencies are enablers, not gates: if a required artifact is still
blockedonly because you skipped a conditional dependency, write it anyway - Stop when every artifact in the required set is
done,skipped, or was deliberately skipped
c. If an artifact requires user input (unclear context):
- Ask the user to clarify
- Then continue with creation
- Get instructions:
-
Show final status
openspec status --change "<name>"
Output
After completing all artifacts, summarize:
- Change name and location
- List of artifacts created with brief descriptions, plus any conditional artifact you skipped and why
- What's ready: "All artifacts needed for implementation are ready."
- Prompt: "The artifacts are ready for review. When you are ready, run
/openspec-apply-changeor ask me to apply this change."
Artifact Creation Guidelines
- Follow the
instructionfield fromopenspec instructionsfor each artifact type - it is the authoritative guidance, even for familiar artifact names - If the
instructionfield directs you to use a specific skill or command to create the artifact, invoke it instead of writing the artifact directly - The schema defines what each artifact should contain - follow it
- Read dependency artifacts for context before creating new ones
- Use
templateas the structure for your output file - fill in its sections - IMPORTANT:
contextandrulesare constraints for YOU, not content for the file- Do NOT copy
<context>,<rules>,<project_context>blocks into the artifact - These guide what you write, but should never appear in the output
- Do NOT copy
Guardrails
- The request that invoked this workflow authorizes planning only. Any implementation or apply instruction in that request does not carry forward. Do NOT implement the change, start the apply workflow, or edit project code during this workflow. After presenting the artifacts, stop and wait for a new user request to start the apply workflow
- Create every artifact the apply phase transitively depends on, not just the ids listed in
apply.requires - Always read dependency artifacts before creating a new one - re-read from disk, not from conversation memory (files may have changed since you last saw them)
- Ask about ambiguities that would materially change scope, externally observable behavior, compatibility, or acceptance criteria; for minor details, make reasonable assumptions and record them
- If a change with that name already exists, ask if user wants to continue it or create a new one
- Verify each artifact file exists after writing before proceeding to next
From the file to a first result
The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.
View the source and supporting filesThis download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.
1. Download the file
Download SKILL.mdFrom the root of a test project, save the file as .skill-downloads/propose-an-openspec-change-mu0qzoac/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.
Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.
mkdir -p '.skill-downloads/propose-an-openspec-change-mu0qzoac' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/propose-an-openspec-change-mu0qzoac/download' --output '.skill-downloads/propose-an-openspec-change-mu0qzoac/SKILL.md.part' && mv '.skill-downloads/propose-an-openspec-change-mu0qzoac/SKILL.md.part' '.skill-downloads/propose-an-openspec-change-mu0qzoac/SKILL.md'2. Check prerequisites
Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.
Environment declared by the author: Requires openspec CLI.
Tools declared by the author (check availability in your agent): Bash(openspec:*)
No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.
The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.
3. Load the skill
After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.
Claude Code
test -f '.skill-downloads/propose-an-openspec-change-mu0qzoac/SKILL.md' && test -s '.skill-downloads/propose-an-openspec-change-mu0qzoac/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/openspec-propose' && cp -R '.skill-downloads/propose-an-openspec-change-mu0qzoac' '.claude/skills/openspec-propose'Cursor
test -f '.skill-downloads/propose-an-openspec-change-mu0qzoac/SKILL.md' && test -s '.skill-downloads/propose-an-openspec-change-mu0qzoac/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/openspec-propose' && cp -R '.skill-downloads/propose-an-openspec-change-mu0qzoac' '.cursor/skills/openspec-propose'Codex
test -f '.skill-downloads/propose-an-openspec-change-mu0qzoac/SKILL.md' && test -s '.skill-downloads/propose-an-openspec-change-mu0qzoac/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/openspec-propose' && cp -R '.skill-downloads/propose-an-openspec-change-mu0qzoac' '.agents/skills/openspec-propose'OpenSkills
OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.
Official OpenSkills installationopenskills install './.skill-downloads/propose-an-openspec-change-mu0qzoac'openskills read 'propose-an-openspec-change-mu0qzoac'Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.
For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.
openskills syncManual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.
4. Try a first task
Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:
Read .skill-downloads/propose-an-openspec-change-mu0qzoac/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.
React Hook Form Best Practices
Development
Master React Hook Form: avoid anti-patterns, manage subscriptions, and handle reset, dirty state, and controlled inputs correctly.
Emotion to Mantine Migration
Development
Migrate Emotion styled-components to Mantine components with style props and CSS modules. Use when converting .styled.tsx files or removing @emotion imports.
Scope Creep Detector
Development
Analyzes git diffs against a stated intent to detect scope creep, unrelated files, broad PRs, and oversized changes, then suggests keep, split, or justify actions.