Information about when and how the pack was compiled. Generated by packc.
Collections are keyed maps, not arrays
prompts, fragments, and tools are all objects (keyed maps), not arrays. Each key serves as the identifier for the entry. For example, prompts maps task type strings like "support" or "billing" to their Prompt definitions.
A single prompt configuration within a pack. Each prompt represents a specific task type (e.g., "support", "sales") with its own template, variables, tools, and validation rules. Prompts can evolve independently with their own version numbers.
Field
Type
Required
Description
id
string
Yes
Unique identifier, typically matching the map key. Pattern: ^[a-z][a-z0-9_-]*$.
name
string
Yes
Human-readable name.
version
string
Yes
Prompt version following Semantic Versioning, independent from the pack version.
system_template
string
Yes
The system prompt template. Use template syntax (e.g., {{variable}}) for variable substitution.
description
string
No
Detailed description of the prompt’s purpose and behavior.
Validation rules applied to the variable value at runtime.
Validation
Rules applied to variable values at runtime.
Field
Type
Description
pattern
string
Regular expression pattern (for string types).
min_length
integer
Minimum string length. Minimum value: 0.
max_length
integer
Maximum string length. Minimum value: 1.
minimum
number
Minimum numeric value (for number types).
maximum
number
Maximum numeric value (for number types).
enum
any[]
List of allowed values.
{
"name": "priority",
"type": "string",
"required": true,
"description": "Support ticket priority level",
"validation": {
"enum": ["low", "medium", "high", "urgent"]
}
}
Tool
A tool definition following the function calling convention. Tools enable the LLM to call external functions. Tools are defined at the pack level and referenced by name in each prompt’s tools array.
Field
Type
Required
Description
name
string
Yes
Tool name. Pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$.
description
string
Yes
What the tool does. The LLM uses this to decide when to call it.
parameters
object
No
JSON Schema object defining the tool’s input parameters (see below).
Tool Parameters (JSON Schema Format)
Tool parameters use standard JSON Schema format. The parameters object must have type: "object" with a properties map and an optional required array.
Field
Type
Required
Description
type
string
Yes
Must be "object".
properties
object
Yes
Map of parameter names to their JSON Schema definitions.
required
string[]
No
List of required parameter names.
"tools": {
"create_ticket": {
"name": "create_ticket",
"description": "Create a support ticket with title, description, and priority",
"parameters": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Ticket title"
},
"priority": {
"type": "string",
"enum": ["low", "medium", "high", "urgent"]
}
},
"required": ["title"]
}
}
}
Tool Policy
Governance policy for tool usage. Controls when and how tools can be called by the LLM.
Field
Type
Required
Description
tool_choice
string
No
"auto" (LLM decides), "required" (must use tools), or "none" (tools disabled). Default: "auto".
max_rounds
integer
No
Maximum number of LLM-tool-LLM cycles per turn. Minimum: 1. Default: 5.
max_tool_calls_per_turn
integer
No
Maximum tool calls allowed in a single turn. Minimum: 1. Default: 10.
blocklist
string[]
No
Tool names that are not allowed for this prompt (overrides the tools list).
Parameters
LLM generation parameters controlling the model’s behavior and output characteristics.
Field
Type
Required
Description
temperature
number
No
Sampling temperature (0–2). Higher values increase randomness.
max_tokens
integer
No
Maximum number of tokens to generate. Minimum: 1.
top_p
number
No
Nucleus sampling parameter (0–1). Alternative to temperature.
top_k
integer or null
No
Top-k sampling. null means no limit. Minimum: 1.
frequency_penalty
number
No
Penalty for token frequency (-2 to 2). Positive values reduce repetition.
presence_penalty
number
No
Penalty for token presence (-2 to 2). Positive values encourage new topics.
"parameters": {
"temperature": 0.7,
"max_tokens": 1500,
"top_p": 0.9
}
Validator
A validation rule (guardrail) applied to LLM responses.