Openspec Plus Proposal logo

Openspec Plus Proposal

Community
sudokar
openspec-plus-proposal

MANDATORY skill that activates whenever the OpenSpec proposal phase begins. Triggers: /opsx-new or /opsx-continue runs; openspec-new-change, openspec-continue-change, or openspec-explore is active; `openspec instructions proposal` is invoked; or the user wants to create, update, review, refine, or discuss an OpenSpec proposal.

Overview

Publishersudokar
Repositoryopenspec-plus
Skill nameopenspec-plus-proposal
Stars
215
Forks
11
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by sudokar on GitHub. Read the source before you install it.

Installation

Install the Openspec Plus Proposal AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/sudokar/openspec-plus/tree/main/skills/openspec-plus-proposal
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/sudokar/openspec-plus.git /tmp/openspec-plus
mkdir -p .claude/skills
cp -r /tmp/openspec-plus/skills/openspec-plus-proposal .claude/skills/openspec-plus-proposal
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Openspec Plus Proposal in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Openspec Plus Proposal on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Openspec Plus Proposal is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

OpenSpec Plus Proposal

Mission

Brainstorming-style interactive discovery for OpenSpec proposals. Produce a lean Why / What Changes / Capabilities / Impact proposal at intent level — never sliding into design, spec, or implementation.

OpenSpec provides the format and template (resolved dynamically in Phase 0). This skill provides the process discipline: five-lens Q&A, decomposition check, scope discipline, subagent review.


Inputs

  • User request — authoritative for intent
  • Existing proposals in openspec/changes/ — for terminology and convention only
  • NEVER read source code — proposal is intent, not implementation grounding

Workflow

Four phases. NEVER skip, merge, or reorder.

text
Phase -1: Auto-Update Check (once per session)
Phase 0: Schema & Template Resolution
Phase 1: Interactive Discovery (5-lens Q&A)
Phase 2: Write & Artifact Compliance Review

Workflow Visibility (MANDATORY)

Display workflow phases via task tool at start; update as each phase completes.


Core Principles

  • Understand Before Defining — seek the problem before describing the change; never jump to proposed solutions.
  • Goals Before Solutions — solution language ("add Redis", "use Postgres") → redirect to the underlying problem and goal.
  • Scope Boundaries Are Critical — non-goals as deliberate as in-scope items; strong non-goals reduce future scope creep.
  • YAGNI — No Speculative Scope — every scope item traces to a stated user need or stakeholder concern.
  • Respect Project Standards — read project instruction files (AGENTS.md, CLAUDE.md, GEMINI.md, equivalents) at Phase 1 start; use project terminology; conflicts → surface to user, never silently override.

Phase -1: Auto-Update Check (MANDATORY — once per session)

Run FIRST, before Phase 0. Skip if already run this session.

  1. Read openspec/.plus/config.yaml:
    • settings.autoUpdateCheck is false → skip Phase -1 entirely, proceed to Phase 0
    • Missing/unreadable, or not false → continue
  2. Read openspec/.plus/last-update-check:
    • File exists AND timestamp is within 7 days of today → skip immediately, proceed to Phase 0
    • Missing or older than 7 days → continue:
      • Fetch https://api.github.com/repos/sudokar/openspec-plus/releases/latest (single JSON object). Read the tag_name field and strip the leading v if present. This is the remote version.
      • Compare remote version with openspec/.plus/VERSION (local)
      • If remote > local → prompt the user using the question tool:

        🔔 OpenSpec Plus v{remote} is available (you have v{local}).

        • Option 1: Upgrade (Recommended)
        • Option 2: Upgrade later
        • If user selects Upgrade → display the install/update link: https://github.com/sudokar/openspec-plus#-install--update and STOP. Do NOT continue to Phase 0 — the user should run the install/update prompt first and restart the session.
        • If user selects Upgrade later → proceed to Phase 0 normally.
      • Write current timestamp to openspec/.plus/last-update-check
  3. Network/file errors → silently continue. NEVER block the workflow for network issues — proceed to Phase 0.

Mark Phase -1 complete, proceed to Phase 0.


Phase 0: Schema & Template Resolution

Run FIRST (after Phase -1), before any questions:

  1. Run:
    bash
    openspec instructions proposal --change <name> --json
    Extract: template (structural authority; sections you MUST fill), instruction (per-section guidance; what content each section needs), rules (project constraints to honor). Parse template sections (H2/H3 headers + HTML comments) — these are your information requirements; every section = information you MUST collect during Phase 1. If a section needs data the five lenses don't cover, add questions for it.
  2. Read openspec/.plus/config.yaml (missing/unreadable/unrecognized → defaults): settings.questionMode (sequential default; batch groups Phase 1's five lenses into fewer question-tool rounds instead of one at a time).

Phase 1: Interactive Discovery

Pre-existing answers: If recent conversation already answers any of the five lenses (Problem & Why, Goals, Scope & Capabilities, Non-Goals, Impact) — via prior exploration, a detailed initial request, or any other source — state the resolved answer in your analysis and SKIP that lens's question. Ask ONE question at a time only for unresolved or partial lenses (batch mode: present all unresolved lenses together instead — see below). NEVER re-ask answered questions.

Read in this order:

  1. Project-level instruction files first — AGENTS.md, CLAUDE.md, GEMINI.md, or equivalents at project root, .claude/, .opencode/, or docs/. These capture terminology conventions and project shape that should inform proposal language.
  2. Existing proposals and changes in openspec/changes/ for terminology and structural convention.

NEVER read source code.

If the request describes multiple independent subsystems (e.g., "add chat, file storage, billing, analytics"): STOP. Surface to user. Help decompose: what are the independent pieces, how do they relate, what order to build? Each sub-change gets its own proposal → spec → design → tasks cycle. Begin the first sub-change through normal flow. NEVER write a single proposal covering multiple independent subsystems.

Use the question tool, ONE question at a time. Cover these lenses until each is answered:

  1. Problem & Why — what problem exists, why it matters, what happens without action
  2. Goals (not solutions) — desired outcome; if request is phrased as a solution, what is the underlying goal
  3. Scope & Capabilities — high-level changes; capabilities added, modified, or removed
  4. Non-Goals — what is explicitly NOT in scope; scope creep to prevent
  5. Impact — affected systems, files, teams, or workflows

In sequential mode (default), NEVER batch questions. NEVER assume answers. Always include your recommended answer with rationale on every question — never a bare question without a recommendation.

batch mode (settings.questionMode: batch): present all unresolved lenses together — one question-tool call per lens up to its multi-question cap, or one combined numbered message if the tool allows only one question per call. Wait for one combined reply; map answers back by lens. Same real answers and recommendations as sequential — never skip or assume a lens.

If the user's answer introduces a new decision point or leaves something partially unresolved, follow that branch with a targeted follow-up before advancing to the next lens (in batch mode, defer the follow-up to the next batch round). A lens is fully resolved only when no dependent decision within it remains open.

If a fact can be determined from existing artifacts, project files, or the environment, look it up — do not ask the user for discoverable information.

Once all five lenses answered, summarize for the user: problem (one sentence), outcome (one sentence), in-scope capabilities, non-goals, impact areas. In sequential mode, explicitly ask the user to confirm shared understanding before proceeding to Phase 2 — do NOT advance on silence or implied agreement. In batch mode, skip this extra question — the summary was already built from the user's one combined reply; proceed to Phase 2.

Phase 1 Complete Checks:

  • Mid-discovery scope check: re-evaluate — did scope grow beyond a single cohesive change during Q&A? If so, decompose before writing.
  • Template coverage check: verify every template section (from Phase 0) has collected substance to fill it; ask targeted questions if any section lacks substance (batch: combine into one round).
  • Rules compliance check: review rules from Phase 0; if any rule constrains what can be proposed, surface the conflict to the user before writing (batch: fold multiple conflicts into one round).

Phase 2: Write & Artifact Compliance Review

Use the template and outputPath from Phase 0. Use template structure EXACTLY. Never improvise sections, restructure, or add headers the template does not include. Apply instruction and rules as constraints — do NOT copy them into the file.

2.1 Write Proposal

Before writing — 2 mandatory steps:

Step 1 — Map Phase 1 to template: Phase 1 answers are in context — use them directly. Do NOT extract, summarize, or rephrase. For each template section (from Phase 0), map the full Phase 1 answer unchanged. Nothing left unmapped.

Step 2 — Density check: Proposal must be at least as dense as Phase 1.

Write from the mapping. Do NOT discard any Phase 1 answer.

CRITICAL — Missing or underrepresented information propagates as blind spots into all downstream artifacts. Every Phase 1 answer must appear with full weight and specificity intact.

2.2 Artifact Compliance Review (MANDATORY — single-shot)

Dispatch subagent of type general-purpose (use your subagent/task tool) with reviewer prompt below. Subagent loads written proposal into its own context, returns structured findings list, exits.

type-general-purpose dispatch: Claude Code Agent(general-purpose) · Devin/Windsurf run_subagent(subagent_general) · OpenCode @general · Codex spawn_agent (multi_agent=true) · Antigravity invoke_subagent(self) · Pi subagent · unlisted → self-assess; no dispatch tool → execute inline as self-check.

Discipline:

  • Single-shot — dispatch once, get findings, fix inline in root, surface for user review
  • NEVER re-dispatch after fixing
  • NEVER skip subagent because "proposal looks fine to me"
  • NEVER reload proposal into root for review — defeats the purpose
Reviewer Subagent Prompt
You are a proposal document reviewer for an OpenSpec change. Verify the proposal is
clean, intent-level, and ready for user review.

Inputs:
- Proposal file: <PROPOSAL_PATH>
- Template: <TEMPLATE_CONTENT_FROM_PHASE_0>

Read the proposal before reviewing. Check each category:

| Category | What to look for |
|---|---|
| Solution language | Why or Goals sections describe WHAT not HOW — no implementation detail |
| Tech selection | No databases, frameworks, or tools named without justification |
| Design leaks | No architecture, components, schemas, contracts, or workflows |
| Implementation leaks | No tasks, sequences, estimates, milestones, or execution plans |
| Placeholders | No TBD, TODO, "[fill in]", incomplete sections |
| Non-goals | At least one non-goal explicit |
| Scope cohesion | No independent subsystems crept in — single cohesive change |
| YAGNI | Every scope item traces to a stated user need — no "while we're at it" additions |
| Template compliance | Artifact sections match the provided template — no improvised, missing, or reordered sections |
| Terminology consistency | Same concept named consistently throughout |

Calibration: only flag issues that would mislead downstream phases or
cause spec/design to build the wrong thing. Minor wording improvements
and stylistic preferences are NOT issues.

Return format:

Status: Approved | Issues Found

Issues (if any):
- [Category]: [specific finding] — [why it matters]

Recommendations (advisory, do not block):
- [optional improvement suggestions]

After receiving reviewer's response:

  • Status Approved → surface proposal for user review
  • Status Issues Found → fix each Issue inline in root context, surface for user review (NEVER re-dispatch)

Anti-Patterns

NEVER propose architectures, components, services, APIs, schemas, contracts, or workflows. NEVER recommend technologies, frameworks, databases, or infrastructure. NEVER create tasks, milestones, work breakdowns, execution plans, or sequences. NEVER read source code. NEVER write a proposal covering multiple independent subsystems — decompose first.

Implementation details appear — redirect to the corresponding downstream phase.


Success Criteria

Succeeds: problem clear, goals separated from solutions, scope/non-goals explicit, impact identified, format compliant, reviewer dispatched once with findings applied.

Fails: written before lenses answered, multiple independent subsystems in one proposal, solution/tech/design/implementation language present, reviewer skipped/re-dispatched.

Frequently asked questions

What does the Openspec Plus Proposal AI skill do?

MANDATORY skill that activates whenever the OpenSpec proposal phase begins. Triggers: /opsx-new or /opsx-continue runs; openspec-new-change, openspec-continue-change, or openspec-explore is active; `openspec instructions proposal` is invoked; or the user wants to create, update, review, refine, or discuss an OpenSpec proposal.

Why use Openspec Plus Proposal on TypingMind?

Because you install it once and use it with any model. Openspec Plus Proposal is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Openspec Plus Proposal in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/sudokar/openspec-plus/tree/main/skills/openspec-plus-proposal. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Openspec Plus Proposal?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Openspec Plus Proposal?

As many as you like. As long as a model supports skills, you can use Openspec Plus Proposal with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Openspec Plus Proposal AI skill free?

Yes. It is published on GitHub by sudokar under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇