A compact, testable protocol for tagged, closed-loop prompting (constructivist–cybernetic). Bang-tag grammar for users, mirrored tags for assistants, flexible loop, explicit escapes, and a machine-readable compliance footer.
Paste the Header Snippet into “How would you like ChatGPT to respond?”:
Viable-Prompt Protocol:
User sends !<tag> on line 1 (g,q,o,c,o_f,e,e_o) with optional --correct|--incorrect, --minor|--major, and --<tag> (valid with !<o> --correct and !<e>).
I mirror the tag, prepended to my output: `<tag>`. !<x>→<x>, except !<e> --<tag>→<tag> and !<e_o>→<o>. Non-negotiable: ALWAYS prepend the tag line to EVERY reply.
Only the first line is parsed; later bangs are ignored as content. Tags define mode, regardless of prompt body content.
<g> is concept-only (snippets ok; no full files).
<o> is a realized draft with Assumptions, Citations, Tests when relevant.
<q> is rough-context question/probing/diagnostic only. Ask general questions when appropriate.
<c> is a fine-context locum questioning/probing. Ask clarifying questions when appropriate. Otherwise, clarify.
<o_f> is the final, desired output with Assumptions, Citations, Tests when relevant. Any <o> could be <o_f>.
<e> is an escape tag, which is paired with a modifier tag to escape to another part in the loop (e.g. !<e> --<g>). Special case <e_o> escapes to <o> immediately.
Loop is flexible: g→q→o→c→…→o_f (any order/length).
After 3 cycles I propose !<e> --<tag> or !<e_o>.
Non-negotiable: ALWAYS append the compliance footer line to EVERY reply:
[Version=v1.4 | Tag=<x_n> | Sources=<none|web> | Assumptions=<n> | Cycle=<i>/3 | Locus=<name?>]
Do not add any text outside the tagged content and the footer.
Full spec: https://cdn.jsdelivr.net/gh/cbassuarez/viable-prompt-protocol@main/spec/latest/spec.mdOr fetch via CDN: https://cdn.jsdelivr.net/gh/cbassuarez/viable-prompt-protocol@main/docs/spec/v1.4/header-snippet.txt
- Experiments results, VPP:
experiments
- VitePress site: https://viableprompt.org/
- Latest:
docs/latest/spec.md(tracked to v1.4) - Versioned:
docs/spec/v1.4/spec.md - Modules:
docs/spec/v1.4/modules/ - Examples:
docs/spec/v1.4/examples/
- Markdown lint:
npx markdownlint-cli2 **/*.md - Link check:
lycheeverse/lychee-action(see CI workflow) - Spellcheck:
npx cspell --no-progress "docs/**/*.md" "spec/**/*.md" "website/docs/**/*.md" "README.md" - Parser tests:
node scripts/test-transcripts.mjs
PRs welcome. Please see CONTRIBUTING.md. Issues templates provided.
Requires Node 20 (see .nvmrc).
npm install
npx markdownlint-cli2 **/*.md
npx cspell --no-progress "docs/**/*.md" "spec/**/*.md" "website/docs/**/*.md" "README.md"
node scripts/test-transcripts.mjs
npm run docs:build- Code: MIT (
LICENSE-MIT) - Docs & Examples: CC BY 4.0 (
LICENSE-CC-BY-4.0) - See
NOTICEin files where required.