Configuration options for `.planning/` directory behavior. ```json "planning": { "commit_docs": true, "search_gitignored": false } ``` | Option | Default | Description | |--------|---------|-------------| | `commit_docs` | `true` | Whether to commit planning artifacts to git | | `search_gitignored` | `false` | Add `--no-ignore` to broad rg searches | **When `commit_docs: true` (default):** - Planning files committed normally - SUMMARY.md, STATE.md, ROADMAP.md tracked in git - Full history of planning decisions preserved **When `commit_docs: false`:** - Skip all `git add`/`git commit` for `.planning/` files - User must add `.planning/` to `.gitignore` - Useful for: OSS contributions, client projects, keeping planning private **Checking the config:** ```bash # Check config.json first COMMIT_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true") # Auto-detect gitignored (overrides config) git check-ignore -q .planning 2>/dev/null && COMMIT_DOCS=false ``` **Auto-detection:** If `.planning/` is gitignored, `commit_docs` is automatically `false` regardless of config.json. This prevents git errors when users have `.planning/` in `.gitignore`. **Conditional git operations:** ```bash if [ "$COMMIT_DOCS" = "true" ]; then git add .planning/STATE.md git commit -m "docs: update state" fi ``` **When `search_gitignored: false` (default):** - Standard rg behavior (respects .gitignore) - Direct path searches work: `rg "pattern" .planning/` finds files - Broad searches skip gitignored: `rg "pattern"` skips `.planning/` **When `search_gitignored: true`:** - Add `--no-ignore` to broad rg searches that should include `.planning/` - Only needed when searching entire repo and expecting `.planning/` matches **Note:** Most GSD operations use direct file reads or explicit paths, which work regardless of gitignore status. To use uncommitted mode: 1. **Set config:** ```json "planning": { "commit_docs": false, "search_gitignored": true } ``` 2. **Add to .gitignore:** ``` .planning/ ``` 3. **Existing tracked files:** If `.planning/` was previously tracked: ```bash git rm -r --cached .planning/ git commit -m "chore: stop tracking planning docs" ```