This document provides step-by-step instructions for an LLM to assist a human developer in a project. 

## How to Use Project-Guide

### For Developers
After installing project-guide (`pip install project-guide`) and running `project-guide init`, instruct your LLM as follows in the chat interface: 

```
Read `{{ target_dir }}/go.md`
```

After reading, the LLM will respond:
1. (optional) "I need more information..." followed by a list of questions or details needed. 
  - LLM will continue asking until all needed information is clear.
2. "The next step is ___."
3. "Say 'go' when you're ready." 

For efficiency, when you change modes, start a new LLM conversation. 

### For LLMs

**Modes**
This Project-Guide offers a human-in-the-loop workflow for you to follow that can be dynamically reconfigured based on the project `mode`. Each `mode` defines a focused {{ sequence_or_cycle }} of steps to guide you (the LLM) to help generate artifacts for some facet in the project lifecycle. This document is customized for {{ mode_name }}.

**Approval Gate**
When you have completed the steps, pause for the developer to review, correct, redirect, or ask questions about your work.  

**Rules**
- Work through each step methodically, presenting your work for approval before continuing a cycle. 
- When the developer says "go" (or equivalent like "continue", "next", "proceed"), continue with the next action. 
- If the next action is unclear, tell the developer you don't have a clear direction on what to do next, then suggest something. 
- Never auto-advance past an approval gate—always wait for explicit confirmation. 
- At approval gates, present the completed work and wait. Do **not** propose follow-up actions outside the current mode step — in particular, do not prompt for git operations (commits, pushes, PRs, branch creation), CI runs, or deploys unless the current step explicitly calls for them. The developer initiates these on their own schedule.
- After compacting memory, re-read this guide to refresh your context.
- Before recording a new memory, reflect: is this fact project-specific (belongs in `docs/specs/project-essentials.md`) or cross-project (belongs in LLM memory)? Could it belong in both? If project-specific, add it to `project-essentials.md` instead of or in addition to memory.
- When creating any new source file, add a copyright notice and license header using the comment syntax for that file type (`#` for Python/YAML/shell, `//` for JS/TS, `<!-- -->` for HTML/Svelte). Check this project's `project-essentials.md` for the specific copyright holder, license, and SPDX identifier to use.
- **Bundled artifact templates** live at `docs/project-guide/templates/artifacts/` in this project (installed by `project-guide init`, refreshed by `project-guide update`). When a mode step references an artifact template by name (e.g. `concept.md`, `stories.md`, `project-essentials.md`), that is the directory to read from — do not search the filesystem, the Python install location, or `site-packages`.
- **Files under `docs/project-guide/` are install output, not source.** Static files are regenerated by `project-guide update`; `go.md` is dynamically regenerated on every `project-guide mode` invocation. Hand-edits are silently lost on the next sync **unless** the file is first marked overridden via `project-guide override <file> "<reason>"` (reverse: `project-guide unoverride <file>`). If you find yourself wanting to edit one of these files, treat it as a substantive conflict — do **not** edit silently. Flag it to the developer and surface the options:
  1. **Override and edit locally** (`project-guide override`) — for project-specific divergence the developer wants to keep.
  2. **File an issue or PR** at https://github.com/pointmatic/project-guide — for changes that would benefit every consumer of project-guide.
  3. **Wait for developer guidance** when the right path isn't obvious.

---
{% if project_essentials or pyve_essentials %}
## Project Essentials
{% if project_essentials %}
{{ project_essentials }}
{% endif %}
{% if pyve_essentials %}
### Pyve Essentials

{{ pyve_essentials }}
{% endif %}
---
{% endif %}
# {{ mode_name }} mode ({{ sequence_or_cycle }})

> {{ mode_info }}
