Openspec Propose
skuramatata/my-pi-agent
A skill your agent uses when the user wants to propose a new OpenSpec change and generate proposal, design, specs, and tasks before implementation.
Propose a new change with all artifacts generated in one step.
$ npx skills add elastic/terraform-provider-elasticstack --skill openspec-propose -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install elastic/terraform-provider-elasticstack openspec-propose --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/elastic/terraform-provider-elasticstack.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/openspec-propose .claude/skills/openspec-propose && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "openspec-propose" agent skill from https://github.com/elastic/terraform-provider-elasticstack/tree/main/.agents/skills/openspec-propose into .claude/skills/openspec-propose/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "openspec-propose", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/elastic/terraform-provider-elasticstack/tree/main/.agents/skills/openspec-proposeType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add elastic/terraform-provider-elasticstack --skill openspec-propose -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install elastic/terraform-provider-elasticstack openspec-propose --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/elastic/terraform-provider-elasticstack.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/openspec-propose .agents/skills/openspec-propose && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "openspec-propose" agent skill from https://github.com/elastic/terraform-provider-elasticstack/tree/main/.agents/skills/openspec-propose into .agents/skills/openspec-propose/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "openspec-propose", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add elastic/terraform-provider-elasticstack --skill openspec-propose -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install elastic/terraform-provider-elasticstack openspec-propose --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/elastic/terraform-provider-elasticstack.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/openspec-propose .cursor/skills/openspec-propose && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "openspec-propose" agent skill from https://github.com/elastic/terraform-provider-elasticstack/tree/main/.agents/skills/openspec-propose into .cursor/skills/openspec-propose/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "openspec-propose", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/elastic/terraform-provider-elasticstack.git --path .agents/skills/openspec-propose--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add elastic/terraform-provider-elasticstack --skill openspec-propose -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install elastic/terraform-provider-elasticstack openspec-propose --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/elastic/terraform-provider-elasticstack.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/openspec-propose .gemini/skills/openspec-propose && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "openspec-propose" agent skill from https://github.com/elastic/terraform-provider-elasticstack/tree/main/.agents/skills/openspec-propose into .gemini/skills/openspec-propose/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "openspec-propose", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install elastic/terraform-provider-elasticstack openspec-proposeInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add elastic/terraform-provider-elasticstack --skill openspec-propose -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/elastic/terraform-provider-elasticstack.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/openspec-propose .github/skills/openspec-propose && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "openspec-propose" agent skill from https://github.com/elastic/terraform-provider-elasticstack/tree/main/.agents/skills/openspec-propose into .github/skills/openspec-propose/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "openspec-propose", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add elastic/terraform-provider-elasticstack --skill openspec-propose -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install elastic/terraform-provider-elasticstack openspec-propose --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/elastic/terraform-provider-elasticstack.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/openspec-propose .opencode/skills/openspec-propose && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "openspec-propose" agent skill from https://github.com/elastic/terraform-provider-elasticstack/tree/main/.agents/skills/openspec-propose into .opencode/skills/openspec-propose/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "openspec-propose", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
openspec-proposePropose a new change with all artifacts generated in one step.
Openspec Propose is an agent skill from elastic/terraform-provider-elasticstack, published by the product's own GitHub organization. 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.
Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts. Compatibility notes: Requires openspec CLI.
The repository describes itself as: Terraform provider for Elastic Stack. The licence is MIT.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit b6bbc21. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
Bash(openspec:*)From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are bash).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Requires openspec CLI.
From compatibility in the SKILL.md frontmatter.
Openspec Propose loads about 3.1k tokens when it runs. Until then it costs about 58 tokens; SKILL.md has 1,659 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from elastic/terraform-provider-elasticstack at commit b6bbc21, republished under its MIT licence (© elastic). 1,659 words, ~3,095 tokens.
.claude/skills/openspec-propose/SKILL.md (or your agent's skills folder).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:
specs/<capability-path>/spec.md (what the system must do - a delta, not the main spec)<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:
--schema <schema-name>openspec context --json from the current working directory. If the user explicitly selected a registered store, use openspec context --json --store "<store-id>". Then run openspec schemas --json with its working directory set to the returned root.path and let them choose. This preserves roots selected by a local store: pointer or the global defaultStore; when a registered store was explicitly selected, append --store "<store-id>" to openspec schemas --json as well. If context reports only no_openspec_root, run openspec schemas --json from the current working directory instead. Do not use this fallback for invalid or unavailable stores.Otherwise, omit --schema to preserve the configured default.
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 its status and its requires edges (the artifact IDs it directly depends on)planningHome, changeRoot, artifactPaths, and actionContext: 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):
openspec instructions <artifact-id> --change "<name>" --jsoncontext: 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 contextcontext and rules first, then inspect relevant implementation, nearby tests, configuration, and documentation outside openspec/. Keep inspection read-only and proportional to the change; reuse findings for later artifacts and inspect more only as needed.instruction field 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 at resolvedOutputPathtemplate as the structure and write it to resolvedOutputPath. If resolvedOutputPath is a glob, follow instruction to choose the concrete file pathcontext and rules as constraints - but do NOT copy them into the file<artifact-id>"b. Continue until every artifact in the required set exists (not just apply.requires)
openspec status --change "<name>" --jsonapplyRequires plus every artifact reachable from those by following the requires edges in status --json - walk them transitively (spec-driven closes over proposal, specs, design, tasks). Leave artifacts outside that set alonestatus is file-existence only, so an applyRequires artifact reading done does NOT mean its dependencies exist - writing tasks.md early marks tasks done while specs was never written. Use each artifact's requires edges, not its status, to build the required set: a done artifact still lists what it depends onstatus: "skipped" is satisfied: the change declares skip_specs in .openspec.yaml, so its files must NOT exist. Never try to create onestatus already reports it skipped, or when its own instruction says it is conditional: run openspec instructions <artifact-id> --change "<name>" --json and skip only if its instruction field marks it optional (e.g. "create only if..."). Spec-driven's design.md qualifies; specs qualifies only via the skipped status above, never by your own judgment. Tell the user, and do not reconsider itblocked only because you skipped a conditional dependency, write it anywaydone, skipped, or was deliberately skippedc. If an artifact requires user input (unclear context):
Show final status
openspec status --change "<name>"Output
After completing all artifacts, summarize:
/openspec-apply-change or ask me to apply this change."Artifact Creation Guidelines
instruction field from openspec instructions for each artifact type - it is the authoritative guidance, even for familiar artifact namesinstruction field directs you to use a specific skill or command to create the artifact, invoke it instead of writing the artifact directlytemplate as the structure for your output file - fill in its sectionscontext and rules are constraints for YOU, not content for the file<context>, <rules>, <project_context> blocks into the artifactGuardrails
apply.requires© elastic, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/openspec-propose of elastic/terraform-provider-elasticstack.
Open the folder on GitHubat commit b6bbc21
We found 155 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 79 other GitHub owners. This page covers the copy in elastic/terraform-provider-elasticstack, which our catalogue first saw on October 7, 2026.
…and 105 more copies not listed here.
Openspec Propose next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Openspec Propose this skillelastic/terraform-provider-elasticstack | 210 | 79 repos | ~3.1k | Automated safety check: Pass | MIT | |
| Openspec Proposeskuramatata/my-pi-agent | 114 | — | ~351 | Automated safety check: Pass | None | |
| Openspec Proposehenhen6/mdp | 131 | — | ~642 | Automated safety check: Pass | MIT | |
| Geo Proposalsickn33/agentic-awesome-skills | 47k | 1 repos | ~3.2k | Automated safety check: Notes | MIT | |
| Better Proposals AutomationComposioHQ/awesome-claude-skills | 77k | 3 repos | ~764 | Automated safety check: Pass | None | |
| Contract And Proposal Writeralirezarezvani/claude-skills | 28k | 2 repos | ~3.4k | Automated safety check: Pass | MIT |
skuramatata/my-pi-agent
A skill your agent uses when the user wants to propose a new OpenSpec change and generate proposal, design, specs, and tasks before implementation.
henhen6/mdp
一步提案新变更并生成所有产出物。当用户想要快速描述他们想要构建的内容,并获得包含设计、规格说明和任务的完整提案以准备实现时使用。
sickn33/agentic-awesome-skills
Auto-generate a professional, client-ready GEO service proposal from audit data.
ComposioHQ/awesome-claude-skills
Automate Better Proposals tasks via Rube MCP (Composio). An agent skill from ComposioHQ/awesome-claude-skills.
alirezarezvani/claude-skills
Generate professional, jurisdiction-aware business documents: freelance contracts, project proposals, SOWs, NDAs, and MSAs.
Chorus-AIDLC/Chorus
Chorus Proposal workflow on Hermes — create proposals with document and task drafts, manage dependency DAG, validate, submit, and run the read-only proposal reviewer via delegatetask.
elastic/terraform-provider-elasticstack
Enter explore mode - a thinking partner for exploring ideas, investigating problems, and clarifying requirements.
elastic/terraform-provider-elasticstack
Implement tasks from an OpenSpec change. An agent skill from elastic/terraform-provider-elasticstack.
elastic/terraform-provider-elasticstack
Archive a completed change in the experimental workflow. An agent skill from elastic/terraform-provider-elasticstack.
elastic/terraform-provider-elasticstack
Monitor GitHub pull requests through a subagent-based loop that watches CI checks, review comments, PR comments, review state, merge conflicts, and branch freshness.
elastic/terraform-provider-elasticstack
MANDATORY skill that activates whenever the OpenSpec proposal phase begins.
elastic/terraform-provider-elasticstack
Continue working on an OpenSpec change by creating the next artifact.
Propose a new change with all artifacts generated in one step. Openspec Propose is an agent skill from elastic/terraform-provider-elasticstack, published by the product's own GitHub organization. Propose a new change with all artifacts generated in one step.
Openspec Propose fits situations like: the user wants to quickly describe what they want to build and get a complete proposal with design; tasks ready for implementation.
Run `npx skills add elastic/terraform-provider-elasticstack --skill openspec-propose -a claude-code`. Or copy the skill folder (.agents/skills/openspec-propose in elastic/terraform-provider-elasticstack) into .claude/skills/openspec-propose in your project. Claude Code loads it when a task matches its description.
Run `npx skills add elastic/terraform-provider-elasticstack --skill openspec-propose -a codex`. Or copy the skill folder (.agents/skills/openspec-propose in elastic/terraform-provider-elasticstack) into .agents/skills/openspec-propose in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add elastic/terraform-provider-elasticstack --skill openspec-propose -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/openspec-propose, .gemini/skills/openspec-propose, .github/skills/openspec-propose and .opencode/skills/openspec-propose in your project.
SKILL.md names no scripts, command-line tools or credentials: Openspec Propose is instructions for the agent only. Its frontmatter pre-approves these tools: Bash(openspec:*). Compatibility (from SKILL.md): Requires openspec CLI..
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Openspec Propose is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.1k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Openspec Propose: Openspec Propose (skuramatata/my-pi-agent, 114 stars), Openspec Propose (henhen6/mdp, 131 stars), Geo Proposal (sickn33/agentic-awesome-skills, 47k stars) and Better Proposals Automation (ComposioHQ/awesome-claude-skills, 77k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
elastic (a GitHub organization, an official publisher) maintains it in elastic/terraform-provider-elasticstack, which has 210 GitHub stars. The repository holds 21 skills in this directory. The repository was last updated on October 8, 2026.
Source: elastic/terraform-provider-elasticstack on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.