Skip to main content

Ahead-of-time compiler/linker for LLM agent prompts — compose instruction sets from interchangeable parts.

Project description

prompt-linker

Compile an LLM agent's instruction set from interchangeable parts — the way a program is linked from objects chosen at build time.

prompt-linker is an ahead-of-time compiler/linker for agent prompts. You write a stable algorithm as skeletons with named slots, write the variable behavior as interchangeable implementations, and declare which implementation fills each slot in a build manifest. The linker inlines the chosen implementations into the skeletons and emits one flat, fully-resolved instruction that the agent runs with zero runtime indirection.

Why

Configurable agent pipelines usually rot in one of two ways:

  • inline conditionals (if mode == X …) entangle every variation into one monolith;
  • runtime resolution pays a tool-call + tokens for every slot, on every iteration.

prompt-linker pays its indirection once, in deterministic code (zero model tokens), and hands the agent a single readable artifact. "Modes" become data — named presets over a small space of bindings — not branches in the engine. Adding a new behavior is a new implementation + a manifest line; the algorithm is never edited (Open–Closed).

Concepts

Term Is
Configuration a self-contained directory (manifest + skeletons/ + contracts/) that compiles independently; a project may hold many
Contract a named, reusable signature (inputs, postcondition, invariant); declared once, with an optional default impl
Slot an occurrence of a contract in a skeleton — {{ slot: <contract-id> }}, the hole to fill
Implementation one concrete block that satisfies a contract and fills its slots
Skeleton a prompt template containing slots
Skill a deliverable bundle (a top-level subdir of skeletons/) — a convention, not required
Manifest Linker.yaml: names the configuration, binds each contract → an impl (+ named presets)
Binding / Resolution a contract → impl pair / the resolved set of them (defaults → preset → overrides)
Linker deterministic step that inlines implementations into skeletons
Verifier proves every slot is bound once and each implementation satisfies its contract

Quick look

# Linker.yaml
preset: team
overrides: { continuation: spawn-next }   # run-local contracts only
presets:
  solo: { task-source: local,   continuation: stop }
  team: { extends: solo, task-source: tracker }
# skeletons/autonomous-agent/run.md
## Phase 1 — Acquire work
{{ slot: task-source }}

prompt-linker compile --preset team → a flat compiled/<name>-<config-hash>/autonomous-agent/run.md with the tracker implementation inlined — clean text the agent reads with no hint it was assembled from parts (the output dir is content-addressed so a host can freeze a run by recording its path); provenance lives in a GENERATED header. (compile --annotated adds per-block markers for an AI verifier — a debug build, never shipped.) Copy Examples/StarterTemplate to begin your own configuration, or read Examples/TestConfiguration for a fuller, runnable one.

Usage

Run a command against a configuration directory (its ROOT). Installed via pipx/uvx the entry point is prompt-linker; from a source checkout use PYTHONPATH=src python -m prompt_linker.cli.

prompt-linker verify  Examples/TestConfiguration                  # check coherence; writes nothing
prompt-linker compile Examples/TestConfiguration --preset team    # → compiled/ (gitignored)
prompt-linker check   Examples/TestConfiguration --security       # AI verifier (opt-in; needs [ai] extra)

verify and compile are deterministic and fail closed (and include a security scan); check is the opt-in, model-using AI verifier (conformance, coherence, injection review). Full command reference: Docs/Commands.md.

Status

🚧 Working implementation. The deterministic linker/verifier and the opt-in AI verifier both run. Docs: the design in Docs/PromptLinker.md, the CLI in Docs/Commands.md, verification layers in Docs/Verification.md, emitted errors in Docs/Errors.md; open questions and planned work in Roadmap/Roadmap.md.

Implementation: Python 3.11+, distributed via PyPI (pipx run prompt-linker / uvx prompt-linker). The npm name is reserved; a native JS build is deferred until there is demand for embedding the linker as a JS library.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

prompt_linker-0.8.0.tar.gz (60.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

prompt_linker-0.8.0-py3-none-any.whl (22.2 kB view details)

Uploaded Python 3

File details

Details for the file prompt_linker-0.8.0.tar.gz.

File metadata

  • Download URL: prompt_linker-0.8.0.tar.gz
  • Upload date:
  • Size: 60.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for prompt_linker-0.8.0.tar.gz
Algorithm Hash digest
SHA256 ee2fe5429b2c2543e5faba5be4295454a0f590426bd1225d357ca3e32befc102
MD5 8365718108e1608190ef57b4a6a7bdb1
BLAKE2b-256 487d8b3b9225d22b37891015fd976ef82f702b74def67d733ec46b4632df2b61

See more details on using hashes here.

File details

Details for the file prompt_linker-0.8.0-py3-none-any.whl.

File metadata

  • Download URL: prompt_linker-0.8.0-py3-none-any.whl
  • Upload date:
  • Size: 22.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for prompt_linker-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 99aea13a1366bce6be3007b8eec02a71bed914460d9ab8e4991df389f7d8e09e
MD5 f2bfc54e368e889c41e97a416893b3fe
BLAKE2b-256 f3fcfe71cf5991094577f72df208fee9078d279c4df569ac5d898a16724d5ef9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page