Skip to content
Agentmart
Submit a tool

writing-proposals

Open an OpenSpec change and write its proposal — the problem, the agreed solution, and what was ruled out.

Skill by jackey8616

IndexedMIT
Write a review

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.

We use your email only for this newsletter. Privacy

About

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.

Use cases: design, writing

No 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

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
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from jackey8616

Cite this page

writing-proposals skill. Agent Mart. https://agentmart.dev/skills/jackey8616-writing-proposals (last updated 2026-10-24)