writing-proposals
Open an OpenSpec change and write its proposal — the problem, the agreed solution, and what was ruled out.
Skill by jackey8616
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/jackey8616-writing-proposals
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: design, writing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/writing-proposals
What's inside
- Skill name
writing-proposals- Description
- Open an OpenSpec change and write its proposal — the problem, the agreed solution, and what was ruled out. Use when a design has been settled and needs to become a change on disk, when the user asks to open or scaffold a change, or when another skill closes by writing a proposal.
- License
- MIT
- Instructions
- 59 lines in SKILL.md · view on GitHub
Files (2)
- SKILL.md
- openai.yaml · agents/
SKILL.md (first lines)
# Writing Proposals Turn something **already agreed** into a Change on disk: its folder, its `proposal.md`, and the trade-offs half of its `design.md`. **Do not interview.** Whoever called you has done that — a `/grilling` session, a `wayfinder` map, a conversation that reached its own conclusion. You add nothing to the design; you write down what was settled. If a question surfaces that would change the shape of the work, hand it back rather than deciding it yourself. You are also **source-agnostic**. The caller brings the agreed material; how they gathered it — one conversation, or fifty closed tickets — is theirs to know, not yours. ## Precondition `openspec/` must exist in the repo. If it doesn't, **say so and stop**, offering: ``` npx @fission-ai/openspec@latest init ``` The CLI is the scoped `@fission-ai/openspec` package. The bare `openspec` name on npm is an unrelated `0.0.0` placeholder that installs no binary, so `npx openspec` fails with "could not determine executable to run". Once it is installed the binary itself is `openspec`. Stopping is the whole behaviour. Don't invent another home for the proposal, and don't push it into `CONTEXT.md` or an ADR to compensate — what was agreed stays in the conversation, which is where it lived before this skill existed. A repo that silently keeps working without the spec layer never grows one. ## The toolchain owns the folder `openspec init` generates a proposal workflow into the repo — a skill of its own, usually reachable as `openspec-propose`. **Prefer it over writing the folder yourself.** It resolves the change's workflow schema at runtime, then walks the artifact dependency graph, asking the CLI for each artifact's template, rules and output path as it goes. That runtime resolution is exactly why this skill doesn't scaffold. Which artifacts a change has, in what order, from which template, written to which path, is **schema-driven** — a hard-coded `proposal.md` + `design.md` + `tasks.md` is right for the default schema and wrong for every other one, and wrong again wherever the planning home isn't repo-local. Where the repo has no generated workflow, follow the agent instructions `openspec init` produced (`openspec/AGENTS.md` or equivalent) and let `openspec new change "<name>"` do the scaffolding. Either way the format is theirs, not this skill's. ## What you own: the content The generated workflow knows the *shape* of a proposal. It does not know what this project puts in one. ### `proposal.md` Three things, and nothing else: - **The problem** — what is wrong now, stated so a reader outside the conversation can feel it. - **The solution, in the user's own words.** Their phrasing survived the interview for a reason; a tidier paraphrase loses the thing that made them agree to it. - **What is explicitly out of scope** — considered, and ruled out. This is the half that gets dropped, and it is the expensive half: it records thinking that happened, so nobody re-opens it in a month. **No requirements, no scenarios.** "The system must…" and "when X, then Y" belong to the delta specs, and `/to-spec` writes those. A proposal that has absorbed its own requirements gives `/to-spec` two sources that can disagree. ### `design.md` The **trade-offs**: what was rejected, and why it lost. Write the rejections that a reader would otherwise re-propose; skip the ones nobody would. **Leave the file open.** `/to-spec` appends the technical half later — the seams, the testing approach — so don't close it off with a conclusion or a summary. ## Rationale that outlives the change Most rationale belongs in `design.md`, and archives with the change. A decision that is **hard to reverse**, **surprising without context**, *and* **the result of a real trade-off** belongs in an ADR instead — that is `/domain-modeling`'s gate and its file, not yours. Where one clears it, link `design.md` to the ADR rather than repeating it. Writing an ADR is not part of closing a change, and most changes produce none. ## Where the output goes `/to-spec` picks the work up from the Proposal — it does not interview again. Because the Proposal is a file rather than a conversation, finishing here is a clean place to `/clear`.
From jackey8616/skills, MIT.
More from jackey8616/skills
- 0.521score
to-spec
jackey8616
Turn the current conversation into an OpenSpec change proposal — no interview, just synthesis of what you've already discussed.
SkillBFreshness: BClaude Code +9 - 0.521score
change-review
jackey8616
Review a finished OpenSpec change against its own delta specs, then archive it — every requirement built and tested, nothing shipped that wasn't proposed.
SkillBFreshness: BClaude Code +9 - 0.499score
codebase-design
jackey8616
Shared vocabulary for designing deep modules.
SkillBFreshness: BClaude Code +9 - 0.499score
domain-modeling
jackey8616
Build and sharpen a project's domain model.
SkillBFreshness: BClaude Code +9 - 0.499score
code-review
jackey8616
Review the changes since a fixed point (commit, branch, tag, or merge-base) along two axes — Standards (does the code follow this repo's documented coding…
SkillBFreshness: BClaude Code +9 - 0.496score
to-tickets
jackey8616
Break a plan, spec, or the current conversation into a set of tracer-bullet tickets, each declaring its blocking edges, published to the configured tracker —…
SkillBFreshness: BClaude Code +9 - 0.496score
wayfinder
jackey8616
Plan a huge chunk of work — more than one agent session can hold — as a shared map of decision tickets on your issue tracker, and resolve them one at a time…
SkillBFreshness: BClaude Code +9 - 0.496score
triage
jackey8616
Move issues and external PRs through a state machine of triage roles — categorise, verify, grill if needed, and write agent-ready briefs.
SkillBFreshness: BClaude Code +9 - 0.493score
ask
jackey8616
Ask which skill or flow fits your situation.
SkillBFreshness: BClaude Code +9 - 0.493score
grill-with-docs
jackey8616
A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.
SkillBFreshness: BClaude Code +9 - 0.493score
implement
jackey8616
Implement a piece of work based on a spec or set of tickets.
SkillBFreshness: BClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Aug 16, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/jackey8616/skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from jackey8616
- 0.521score
change-review
jackey8616
Review a finished OpenSpec change against its own delta specs, then archive it — every requirement built and tested, nothing shipped that wasn't proposed.
SkillBFreshness: BClaude Code +9 - 0.521score
to-spec
jackey8616
Turn the current conversation into an OpenSpec change proposal — no interview, just synthesis of what you've already discussed.
SkillBFreshness: BClaude Code +9 - 0.499score
code-review
jackey8616
Review the changes since a fixed point (commit, branch, tag, or merge-base) along two axes — Standards (does the code follow this repo's documented coding…
SkillBFreshness: BClaude Code +9 - 0.499score
codebase-design
jackey8616
Shared vocabulary for designing deep modules.
SkillBFreshness: BClaude Code +9 - 0.499score
domain-modeling
jackey8616
Build and sharpen a project's domain model.
SkillBFreshness: BClaude Code +9 - 0.496score
to-tickets
jackey8616
Break a plan, spec, or the current conversation into a set of tracer-bullet tickets, each declaring its blocking edges, published to the configured tracker —…
SkillBFreshness: BClaude Code +9
Cite this page
writing-proposals skill. Agent Mart. https://agentmart.dev/skills/jackey8616-writing-proposals (last updated 2026-10-24)