Skip to content

Troubleshooting ​

Common issues and their solutions when working with SNIPER.

Initialization Issues ​

"SNIPER is not initialized" ​

Problem: A SNIPER command fails with "Run /sniper-init first."

Solution: Ensure .sniper/config.yaml exists and has a non-empty project.name. Run /sniper-init if it does not exist.

Missing framework files after init ​

Problem: /sniper-init reports missing persona, team, or template files.

Solution: Framework files should come from the @sniper.ai/core package. Verify it is installed and that sniper init was run from the CLI (which scaffolds files from core). If files are missing, re-run sniper init from the CLI.

Config schema version mismatch ​

Problem: Commands warn about schema version migration.

Solution: SNIPER automatically migrates v2 configs to v3. If migration fails, check that .sniper/config.yaml is valid YAML with no syntax errors.

Agent Spawning Issues ​

Teammate not responding ​

Problem: An agent has been silent for more than 10 minutes during a phase.

Solutions:

  • The team lead automatically checks on stalled teammates after the coordination_timeout (default: 30 minutes)
  • If a teammate crashes, you can offer to respawn that specific teammate
  • Re-running the phase command starts fresh (artifacts on disk are preserved)

Too many teammates ​

Problem: The implement phase needs more teammates than max_teammates allows.

Solution: Reduce the number of stories selected for the implement phase, or increase agents.max_teammates in config.yaml. Consider splitting the implement phase into two smaller batches by story ownership area.

Agent writing to wrong files ​

Problem: A teammate modifies files outside their ownership boundary.

Solution: Ownership boundaries are advisory -- they are injected into the spawn prompt but not technically enforced. If an agent crosses boundaries:

  1. Review the output and revert unwanted changes
  2. Check that the team YAML correctly maps owns_from_config to the right ownership key
  3. Verify that config.yaml ownership paths match your actual project structure

File Ownership Conflicts ​

Default ownership paths do not match project ​

Problem: The ownership section in config.yaml uses default paths (src/backend/, src/frontend/) that do not match your project.

Solution: Update the ownership section manually, or run /sniper-flow --protocol ingest which auto-detects your project structure and updates ownership paths.

Stories assigned to wrong teammate ​

Problem: During an implement phase, stories are assigned to a teammate whose ownership does not match the story's file touches.

Solution: The implement phase maps stories to teammates based on the "File Ownership" field in each story. If stories were created with incorrect ownership fields, edit the story files in docs/stories/ to correct the ownership, then re-run /sniper-flow.

Review Gate Issues ​

Gate blocking advancement ​

Problem: A strict review gate has failures that block advancement.

Solutions:

  • Fix the failing items in the artifacts and run /sniper-review again
  • For the plan gate specifically: the checklist is designed to catch cascading problems. Address all FAIL items before advancing -- overriding is not possible on strict gates with failures.

Gate evaluating wrong phase ​

Problem: /sniper-review evaluates a different phase than expected.

Solution: In v3, the review command determines the current phase from checkpoint files in .sniper/checkpoints/ and the live-status file at .sniper/live-status.yaml. Run /sniper-status to verify the current phase state. If the state is incorrect, check these files for inconsistencies.

Checklist file not found ​

Problem: Review fails with "Checklist file not found."

Solution: Verify the checklist file exists at the path shown in the error. Standard checklists are in .sniper/checklists/. If missing, the framework installation may be incomplete -- re-run sniper init from the CLI.

Memory Issues ​

Memory not loading ​

Problem: Spawn prompts do not include memory context.

Solutions:

  • Check that .sniper/memory/ directory exists with YAML files
  • The memory system requires at least one entry in any memory file to produce output
  • Verify that agents are being spawned with the correct context by checking .sniper/live-status.yaml

Memory exceeding token budget ​

Problem: A warning appears about memory being truncated.

Solution: Low-priority entries are automatically pruned by the retro-analyst agent during protocol retrospectives. You can also manually remove low-value entries from the YAML files in .sniper/memory/.

Retrospective not running ​

Problem: No retrospective runs after protocol completion.

Solutions:

  • Verify auto_retro: true is set in the protocol YAML file (e.g., full.yaml)
  • Check that visibility.auto_retro: true in .sniper/config.yaml
  • If auto_retro is disabled, the retro-analyst agent will not run automatically after protocol completion

Implement Phase Issues ​

Stories not self-contained ​

Problem: Implement phase agents ask questions about requirements that should be in the story file.

Solution: The implement phase expects stories with embedded context from the PRD and architecture. If stories reference other documents instead of embedding content, manually edit the story files to embed the missing context, or re-run the protocol with /sniper-flow.

API contract misalignment ​

Problem: Backend and frontend implementations do not agree on API contracts.

Solutions:

  • The team lead should facilitate contract alignment at the start of each implement phase
  • Use the implement phase coordination rules: message both agents to share endpoint specs and data shapes before coding
  • Consider adding explicit API contract stories that must complete before frontend stories begin

Tests failing after implement phase ​

Problem: The QA engineer reports test failures.

Solution: The team lead messages the implementing teammate with specific failure details. The teammate fixes their code and QA re-tests. This cycle repeats until all tests pass. The implement review gate will not advance until tests pass.

CLI Errors ​

"Command not found: sniper" ​

Problem: The sniper CLI is not available.

Solution: Verify installation with npm list -g @sniper.ai/cli. If not installed, run npm install -g @sniper.ai/cli.

Slash commands not working ​

Problem: Claude Code does not recognize /sniper-* commands.

Solution: Verify that command files exist in .claude/commands/ (or the project's command directory). These should have been created during sniper init. If missing, re-run the CLI scaffolding.

State Recovery ​

Corrupted config.yaml ​

Problem: Config file has YAML syntax errors or invalid state.

Solutions:

  • Fix YAML syntax errors (common causes: unquoted strings with colons, incorrect indentation)
  • If the state section is corrupted but artifacts are intact on disk, you can reset the state section manually while preserving project configuration
  • As a last resort, re-run /sniper-init (this will overwrite config but preserve artifacts in docs/)

Phase stuck in progress ​

Problem: A phase shows as active but the conversation has ended.

Solution: Check .sniper/live-status.yaml for the current phase state and .sniper/checkpoints/ for checkpoint files. Either:

  1. Update the checkpoint file to mark the phase as complete if artifacts are finished
  2. Re-run /sniper-flow --resume -- it will detect the active phase and offer to resume from the last checkpoint

Next Steps ​