# ctx.systemPrompt `SystemPrompt` — provided by `@deepseek-ai/dsh-system-prompt`. Registry service for the prompt inputs assembled before each model step. [Source](https://github.com/deepseek-harness/deepseek-harness/blob/master/packages/core/system-prompt/src/index.ts#L209) ### ctx.systemPrompt.section(section) ```ts website-api section(section: PromptSection): () => void ``` Register an ordered prompt section in the calling context's scope. A scoped section shadows a global section with the same name; duplicates within one layer and non-finite orders throw. Registration and disposal emit `system-prompt/change`. - `section` — the section to register. **Returns** the exact Cordis effect disposer. [Source](https://github.com/deepseek-harness/deepseek-harness/blob/master/packages/core/system-prompt/src/index.ts#L250) ### ctx.systemPrompt.tools(provider) ```ts website-api tools(provider: (context: AssembleContext) => ToolProviderResult): () => void ``` Register a tool-schema provider in the calling context's scope. Global and matching scoped providers both contribute; returning the reserved TOOL_ORDER_REST name makes assembly fail. - `provider` — evaluated for each assembly with its context. **Returns** the exact Cordis effect disposer. [Source](https://github.com/deepseek-harness/deepseek-harness/blob/master/packages/core/system-prompt/src/index.ts#L291) ### ctx.systemPrompt.variable(name, provider) ```ts website-api variable(name: string, provider: (context: AssembleContext) => string | undefined): () => void ``` Register a prompt variable in the calling context's scope. Scoped values shadow globals; invalid or duplicate names throw. A provider may return `undefined`, but rendering a section that references that value then fails. - `name` — the `[a-z][a-z0-9_]*` reference name. - `provider` — evaluated for each assembly. **Returns** the exact Cordis effect disposer. [Source](https://github.com/deepseek-harness/deepseek-harness/blob/master/packages/core/system-prompt/src/index.ts#L325) ### ctx.systemPrompt.assemble(context?) ```ts website-api async assemble(context: AssembleContext = {}): Promise ``` Assemble global and scoped providers, detach tool parameters, apply canonical ordering, then run the assembly waterfall. Scoped sections and variables shadow globals; the returned waterfall value is authoritative. - `context` — the optional scope and plugin-defined assembly fields. **Returns** the authoritative post-waterfall assembly. [Source](https://github.com/deepseek-harness/deepseek-harness/blob/master/packages/core/system-prompt/src/index.ts#L365)