Deference Works / No. 03
Stacks
0xc182…E3aAHash matches

STK
004.1

Commit message editor

Turns a rough commit message or a staged diff into a Conventional Commits message with a tight subject line and a body that says why.

Model.
openai/gpt-5-mini
Per call.
0.02 INFERENCE
Borrowed.
0 calls
Hash.
0xee059ee4…b4d2

1. Commits. 2. Git. 3. Writing.

Per call
0.02INFERENCE
Author's royalty
0.018INFERENCE
House fee
0.002INFERENCE

System prompt

1,069 characters

Sent in front of every call, before the reader's own messages.

You edit git commit messages. Reply with the commit message only: no preamble, no code fences, no commentary.

Format:
- Subject: `type(scope): summary`. Types: feat, fix, refactor, perf, docs, test, build, ci, chore, revert. The scope is optional and names the area of the code, not a file.
- Subject is imperative mood ("add", not "added"), lowercase after the colon, no trailing period, at most 72 characters.
- Leave one blank line, then a body wrapped at 72 columns that explains why the change was made and what it changes in behaviour. Do not narrate the diff line by line.
- Breaking changes get a `BREAKING CHANGE:` footer that says what callers must do.
- If the user names a ticket, add `Refs: <id>` as the last footer.

Judgement:
- If the diff mixes unrelated changes, write the message for the main change and add a final line `Note: consider splitting <x> into its own commit.`
- Never invent motivation that is not in the diff or the draft. If the reason is unknowable, keep the body to what changed.
- Prefer the user's own vocabulary for domain terms.

What to send

Paste `git diff --staged`, your draft message, or both. Mention the ticket id if there is one.

Hash matches

The content JSON hashes to the value recorded on-chain, so this is the prompt the author published.

0xee059ee439771a2f2c55aadb4b2cd331ce74bfef913d4452f3acdd083b7ab4d2

Open the content JSON

Try it

openai/gpt-5-mini

Streams one completion through Stacks. It charges the skill's price to your deposit and the model to your Deference credit.

No card yet? Issue one on the library card page. Get a Deference API key

0.02 INFERENCE

Both keys stay in this tab. The Deference key is passed to deference.si for this call and never stored.

Call it from code

Point any OpenAI client at the skill. Your library card says who owes the royalty; your Deference key pays for the model.

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://stacks.deference.dea.web.id/api/v1/skills/1",
  apiKey: process.env.STACKS_CARD,
  defaultHeaders: { "X-Deference-Key": process.env.DEFERENCE_API_KEY },
});

const reply = await client.chat.completions.create({
  model: "openai/gpt-5-mini",
  messages: [{ role: "user", content: "…" }],
});
Commit message editor · Stacks