Domain Packs
Domain packs inject industry-specific knowledge into SNIPER agents. They provide context that general-purpose agents lack -- telephony protocols, compliance regulations, CRM integration patterns, and other domain expertise.
What Packs Provide
A domain pack can include any combination of:
| Content Type | Purpose |
|---|---|
| Knowledge files | Industry-specific context injected into agent prompts |
| Personas | Domain-specific process personas (e.g., telephony specialist) |
| Checklists | Additional review gate criteria for domain concerns |
| Templates | Domain-specific artifact templates or addenda |
| Team overrides | Extra teammates added to standard phase teams |
| Config defaults | Recommended configuration changes |
Using a Pack
Installation
Install the pack as an npm dependency:
pnpm add @sniper.ai/pack-sales-dialerRegistration
Register the pack in .sniper/config.yaml:
domain_packs:
- name: "sales-dialer"
package: "@sniper.ai/pack-sales-dialer"Or during /sniper-init, specify the domain pack when prompted.
How Packs Are Loaded
When a phase command runs:
- SNIPER reads the pack's
pack.yamlmanifest - Knowledge files are loaded as domain context for agent prompts
- Pack personas are discovered and made available for composition
- Pack checklists are appended to phase review gates
- Team overrides add extra teammates to standard teams
Pack Structure
A domain pack is an npm package with a pack/ directory:
pack-sales-dialer/
package.json
pack/
pack.yaml # Pack manifest
knowledge/ # Domain knowledge files
telephony.md
sales-workflows.md
compliance.md
crm-integration.md
ai-pipeline.md
analytics.md
personas/
process/
telephony-specialist.md # Domain-specific process persona
checklists/
telephony-review.md # Domain-specific review criteria
templates/
story-addendum.md # Domain-specific story additionspackage.json
The pack's package.json must include the sniper field:
{
"name": "@sniper.ai/pack-sales-dialer",
"version": "1.0.0",
"sniper": {
"type": "domain-pack",
"packDir": "pack"
},
"files": ["pack"]
}pack.yaml
The manifest declares what the pack provides:
name: sales-dialer
version: 1.1.0
description: "AI-powered sales dialer SaaS"
provides:
knowledge:
- knowledge/telephony.md
- knowledge/sales-workflows.md
- knowledge/compliance.md
- knowledge/crm-integration.md
- knowledge/ai-pipeline.md
- knowledge/analytics.md
personas:
- personas/process/telephony-specialist.md
checklists:
- checklists/telephony-review.md
templates:
- templates/story-addendum.md
default_context: sales-workflows
compatible_with:
- saas
- api
conflicts_with: []
config_defaults:
review_gates:
after_plan: strict
team_overrides:
plan:
extra_teammates:
- name: compliance-analyst
compose:
process: architect
technical: security
cognitive: security-first
domain: compliance
tasks:
- id: compliance-reqs
name: "Regulatory Compliance Requirements"
output: "docs/compliance.md"
blocked_by: [prd]Creating a Domain Pack
Step 1: Set Up the Package
mkdir my-domain-pack
cd my-domain-pack
pnpm init
mkdir -p pack/knowledge pack/personas/process pack/checklists pack/templatesStep 2: Write Knowledge Files
Create markdown files in pack/knowledge/ covering your domain:
# Telephony Domain Knowledge
## Protocols
- SIP (Session Initiation Protocol) for call setup/teardown
- RTP (Real-time Transport Protocol) for media
- WebRTC for browser-based calling
## Key Concepts
- Power dialer: sequential dialing with predictive pacing
- Progressive dialer: dials next number when agent becomes available
...Step 3: Create the Manifest
Write pack/pack.yaml listing all provided content with compatibility and override information.
Step 4: Add Custom Personas (Optional)
If your domain needs specialized roles, add process persona files in pack/personas/process/:
# Telephony Specialist (Process Layer)
## Role
You are the Telephony Integration Specialist...
## Responsibilities
1. Design call flow architectures
2. Evaluate SIP/WebRTC provider options
...Step 5: Add Checklists (Optional)
Add domain-specific review criteria in pack/checklists/:
# Telephony Review Checklist
- [ ] Call recording complies with two-party consent laws
- [ ] TCPA compliance verified for automated dialing
- [ ] SIP trunk failover strategy documented
...Step 6: Publish
npm publish --access publicPack Stacking
Multiple packs can be active simultaneously. The conflicts_with field in pack.yaml declares incompatible packs. SNIPER warns if conflicting packs are loaded together.
Pack content is additive -- knowledge files are merged, checklists are appended, and team overrides add teammates without replacing existing ones.
Next Steps
- Personas -- how pack personas extend the framework
- Review Gates -- how pack checklists integrate
- Configuration -- registering packs in config.yaml
