# Prose

Source: https://flow-next.dev/skills/prose/

Apply the shipped artifact prose contract to a substantial reply or draft - the same ten rules the pipeline already applies to PR bodies, specs, tracker comments, and changelogs.

`/flow-next:prose` applies flow-next’s **artifact prose contract** to the reply your agent is about to write. The contract itself is a shipped reference file, [`docs/prose.md`](https://github.com/gmickel/flow-next/blob/main/plugins/flow-next/docs/prose.md): ten rules that catch filler which could describe any project, feelings standing in for numbers, and invented outcome lines - at the moment of writing, not in review.

```bash
/flow-next:prose                          # apply the contract to the next substantial reply
/flow-next:prose <paste a draft>          # tighten a specific draft in place
```

The primary mode is self-application: the agent matches the skill at the moment it begins drafting a substantial reply, report, or summary for you, and reads the contract before writing, on every host, Codex included (there the skill carries a shortened catalog entry). Manual invocation works too, with a draft to tighten or plain language like *“apply the prose contract”*.

Durable artifacts are already covered without you asking. Every emission point in the pipeline - PR bodies, spec and plan prose, tracker and PR comments, strategy sections, memory entries, done summaries, changelogs - carries a one-line pointer to the same contract file, and the drafting agent reads it as it writes. This skill extends that contract to **chat replies**, which no pointer covers. It is opportunistic, never a guarantee.

## The ten rules

| Rule                                            | What it asks of the draft                                                                                                                                                                                                     |
| ----------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1. The portability test                         | A sentence that could appear unchanged in another project’s docs says nothing about this change. Delete it, or add the mechanism, path, number, or bound that belongs here. Swapping in the project name fails the same test. |
| 2. Name the mechanism or the number             | `Significantly faster` is a feeling. `30 seconds to half a second` and `skips the suite when a green receipt matches` are evidence. A claim naming neither is cut.                                                            |
| 3. No negative parallelism                      | `not X, but Y` and `this isn't X - it's Y` make the reader parse a discarded X first. State Y. The one legitimate use is correcting a real misreading.                                                                        |
| 4. No inline-header restating                   | A sentence that restates the heading above it wastes the reader’s first fixation. A bold lead-in that advances the point is structure, not restating.                                                                         |
| 5. Active voice with a named actor              | `The conductor integrates the commit` names the actor. Passive is fine only when the actor is unknown or irrelevant.                                                                                                          |
| 6. A vague intensifier is a missing measurement | `substantially reduced` becomes the measured delta or the concrete before/after. If neither exists, the claim does not belong. Adverbs that fix a bound (`never deletes`) or name a mechanism (`automatically`) stay.         |
| 7. The plain word                               | `utilize` and `leverage` become `use`, `comprise` becomes `make up`, `in order to` becomes `to`. A term your glossary defines is vocabulary, not a violation.                                                                 |
| 8. User-outcome-first ordering                  | Open with who benefits and what changed for them. Mechanism, schema, and internals come last. Applied per artifact and per section.                                                                                           |
| 9. No em dashes, no colon-as-connector          | Plain hyphens and full sentences. Structural colons stay (list introductions, `Enable:`, table cells); a colon splicing two clauses for rhythm is the banned form.                                                            |
| 10. Honesty                                     | Never soften a failure, a bound, or a deliberate miss. `About 35% of runs still force a full suite` belongs in the artifact when it is true. An artifact that hides its limits is marketing copy.                             |

In chat, rule 8 softens to *lead with the answer* and rule 10 stays fully active.

## What it leaves alone

Quoted material, code, command output, and your own words are left alone. The skill is read-only: it shapes the reply being drafted and writes nothing to `.flow/`.

## Precedence: structural contracts win

When a rule collides with a contract of the surface being written, the surface contract wins:

* **Dedup markers** stay the first line of a tracker comment, byte-unchanged.
* **Projection** is never overridden. The [tracker-sync](https://flow-next.dev/integrations/tracker-sync/) bridge projects the spec; it does not author.
* **Sourced outcomes** gate rule 8. Outcome-first ordering applies only when a sourced outcome exists in the payload - the agent never invents outcome prose to satisfy a rule.

## Scope boundary

The contract governs **how artifact prose reads**. It makes no claim about code quality or maintainability decay; prompt-side quality rules are an intercept intervention per SlopCodeBench (arXiv 2603.24755), which is why the claim stays this narrow.

Two contracts sit side by side and do different jobs: this one governs how the prose reads, and [make-pr](https://flow-next.dev/skills/make-pr/#what-the-agent-writes-and-what-flowctl-fills)’s artifact validation governs **what the prose may claim**: every cited path, requirement and proof must trace to the export, a receipt, or a commit. The [visual digest](https://flow-next.dev/skills/visual/) is excluded from both by contract, because its output is ephemeral chat rendering rather than a written artifact.

## Related

* [Make PR](https://flow-next.dev/skills/make-pr/) - the largest artifact surface the contract covers, plus the fabrication guardrails it cross-links
* [Capture](https://flow-next.dev/skills/capture/) - spec prose is written under the same contract
* [Tracker Sync](https://flow-next.dev/integrations/tracker-sync/) - where the precedence rule earns its place
* [Visual](https://flow-next.dev/skills/visual/) - the other chat-register skill
* [Changelog](https://flow-next.dev/releases/changelog/) - this page’s own register is a labeled specialization of the contract
