canned-prompts/INTENT.md
tegwick dc615ef530 Register with Custodian State Hub and seed format open-questions workplan
Register canned-prompts under agents / practice (topic
c1d199b6-55ee-4db6-b49e-257a9f0f15ac, workplan prefix CANP-WP) via
`statehub register`, then replace the generated placeholders with
repo-specific facts.

- SCOPE.md: real boundaries drawn from INTENT.md's deliberate boundary,
  current state (spec v0.1 + reference CLI, 3/3 tests pass, example
  round-trips), and the developer workflow.
- AGENTS.md: drop the unresolved {CREDENTIAL_ROUTING} template token left
  by the generator.
- CANP-WP-0001: bootstrap tasks closed.
- CANP-WP-0002: new workplan carrying the five § 23 open questions promoted
  from "experience will decide" to "decide for v0.2" — optional-input
  defaults (static or derived), registry namespaces/ownership, prompt
  composition, canonical eval schemas, typed context/dependency contracts —
  plus two reference-implementation conformance defects found in review
  (prerelease versions sort as newest; copy_immutable packages the whole
  source directory).

Also lands the previously untracked seed: INTENT.md, the CPF v0.1 spec,
the reference CLI, and examples/pqrst-estimate.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Bjefh8NUiEiahN4JLwoSKM

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 388925@bnt-lap001
Assistant-Session: 3507023f-e0fd-4a1e-9d90-a0d4217d1502
2026-09-06 00:45:28 +02:00

247 lines
7.8 KiB
Markdown

# canned-prompts — INTENT
> **Collect, reuse and share prompts and prompt templates.**
## Mission
`canned-prompts` exists to make prompts that are worth using more than once easy to package, understand, find, reuse, version, evaluate, and share.
The project treats a reusable prompt as a small software-like artifact with an explicit contract rather than as an anonymous block of copied text.
A canned prompt can therefore carry not only prompt text, but also its purpose, inputs, parameters, expected output, examples, compatibility information, provenance, and quality evidence.
## Core proposition
> **The valuable unit is not prompt text. It is a reusable prompt contract.**
A copied prompt is easy to produce but hard to govern. A reusable prompt should be independently understandable and usable by another human, tool, or agent without requiring hidden knowledge from its author.
## Primary user loop
```text
write
package
publish
discover
configure
render / invoke
observe
improve
publish a new revision
```
The first implementation should make this loop cheap enough that packaging a useful prompt feels easier than leaving it in an arbitrary notes file.
## Scope
`canned-prompts` owns the **artifact and ecosystem around reusable prompts**.
It should establish:
1. a portable package format for prompts and prompt templates;
2. a catalog/registry model for discovery and distribution;
3. explicit parameters and context requirements;
4. versioning and provenance;
5. examples and evaluation hooks;
6. compatibility metadata for models, tools, agents, or required capabilities;
7. composition metadata for prompts that depend on other reusable prompt/context artifacts;
8. lightweight tooling to add, inspect, search, install, render, and publish packages.
## Deliberate boundary
> **canned-prompts standardizes reusable prompt artifacts, not agent execution.**
The project may provide thin execution adapters for convenience, but it should not become a general agent runtime, workflow engine, model router, memory system, or orchestration framework.
Execution systems should be able to consume canned prompt packages without being forced to adopt a particular agent architecture.
A useful conceptual separation is:
```text
canned-prompts
|
| discover / retrieve
v
PromptPackage / PromptTemplate
|
v
resolver / compiler / agent runtime
|
v
CompiledPrompt
|
v
PromptRun
|
v
result + run evidence
```
## Design principles
### 1. Text first
A package should remain readable and editable with ordinary text tools. Markdown plus a small machine-readable manifest is the preferred baseline.
### 2. Portable by default
The package format must not depend on one model provider, IDE, agent framework, or hosted registry.
### 3. Explicit over magical
Inputs, parameters, dependencies, and expectations should be declared where practical. Hidden context is the enemy of reuse.
### 4. Useful before sophisticated
A prompt consisting only of `prompt.yaml` and `prompt.md` should already be a valid package. Examples, evals, dependencies, and richer metadata are progressive enhancements.
### 5. Version prompt behavior
Changes that materially alter intended behavior should create a new package version. Consumers should be able to pin versions when reproducibility matters.
### 6. Preserve provenance
Authorship, source, derivation, and lineage should be representable. Forking and adaptation are expected rather than treated as exceptional.
### 7. Quality should become evidence-backed
Popularity is not the same as quality. The ecosystem should make room for evals, run evidence, model/context compatibility, and adoption signals without requiring them in the minimum package.
### 8. Safe to inspect
Prompt packages must never require embedded secrets or credentials. Consumers should be able to inspect the complete artifact before execution.
### 9. Composition without capture
Packages may declare dependencies on prompts, context generators, policies, or information spaces, but the format should describe those requirements without dictating one resolver implementation.
### 10. Local-first, registry-ready
The first useful implementation should work entirely on a filesystem. Hosted or federated registries can be layered on later without changing the core package semantics.
## Canonical concepts
### PromptPackage
The distributable directory containing a manifest, template text, and optional supporting artifacts.
### PromptTemplate
The reusable prompt text plus its declared substitution/context contract.
### Input
Content supplied by a caller for a specific use, such as source code, a document, or a question.
### Parameter
A named configuration choice that modifies how the prompt behaves, preferably with type, allowed values, and defaults.
### Dependency
Another named artifact or capability that a package expects to be available. Dependency resolution is outside the core package format.
### Example
A small reproducible usage fixture showing representative inputs and/or rendered output.
### Eval
A machine- or human-readable specification for assessing whether the prompt behaves as intended.
### Provenance
Metadata describing origin, authorship, source, derivation, and lineage.
### RunEvidence
Optional external evidence produced by use of a prompt version. Run evidence is not embedded into the immutable package by default, but may be linked to it by registries or evaluation systems.
## Initial capability surface
A minimal reference tool should support:
```text
canned-prompts add <package-path>
canned-prompts search <query>
canned-prompts show <id>
canned-prompts render <id> --set name=value
canned-prompts install <id>
canned-prompts publish <package-path>
```
The reference implementation may use a filesystem-backed local catalog and filesystem-backed registry. Network services are explicitly unnecessary for v0.1.
## Non-goals for v0.1
The first version does **not** need to solve:
- hosted social features;
- model execution or billing;
- autonomous dependency generation;
- semantic version range resolution;
- trust/reputation scoring;
- cryptographic package signing;
- cross-registry federation;
- secrets management;
- universal prompt evaluation;
- a universal agent or workflow specification.
These may become separate modules or later layers if usage demonstrates the need.
## Success criteria for the first practical release
The project is useful when a user can:
1. take a prompt worth keeping and package it in a few minutes;
2. understand an unfamiliar package without reading external documentation;
3. search a local catalog and discover a suitable prompt;
4. render a parameterized prompt deterministically;
5. publish a version to a registry and install it elsewhere;
6. keep multiple versions without destructive overwrite;
7. attach examples or eval specifications without changing the core format;
8. use the package from another tool without importing the reference runtime.
## Evolution hypothesis
If the simple package loop proves useful, `canned-prompts` can evolve from a prompt library into a package ecosystem for reusable cognitive procedures.
A mature feedback loop could be:
```text
PromptPackage
Use
Run evidence
Evaluation
Improved package
New version
Adoption / comparison
```
That later ecosystem should be able to answer questions such as:
- Which prompt versions perform better for a defined task?
- Under which models, contexts, or capabilities?
- Which forks outperform their ancestors?
- Which dependencies reliably improve outcomes?
- When has a prompt's behavior drifted enough to require a new version?
These are long-term opportunities, not reasons to complicate the initial format.
## Working motto
> **Package what is worth prompting twice.**