diff --git a/get-shit-done/bin/gsd-tools.js b/get-shit-done/bin/gsd-tools.js index 3a9e5b72..39ba9b32 100755 --- a/get-shit-done/bin/gsd-tools.js +++ b/get-shit-done/bin/gsd-tools.js @@ -160,6 +160,7 @@ function loadConfig(cwd) { model_profile: 'balanced', commit_docs: true, search_gitignored: false, + git_tag: true, branching_strategy: 'none', phase_branch_template: 'gsd/phase-{phase}-{slug}', milestone_branch_template: 'gsd/{milestone}-{slug}', @@ -193,6 +194,7 @@ function loadConfig(cwd) { model_profile: get('model_profile') ?? defaults.model_profile, commit_docs: get('commit_docs', { section: 'planning', field: 'commit_docs' }) ?? defaults.commit_docs, search_gitignored: get('search_gitignored', { section: 'planning', field: 'search_gitignored' }) ?? defaults.search_gitignored, + git_tag: get('git_tag', { section: 'planning', field: 'git_tag' }) ?? defaults.git_tag, branching_strategy: get('branching_strategy', { section: 'git', field: 'branching_strategy' }) ?? defaults.branching_strategy, phase_branch_template: get('phase_branch_template', { section: 'git', field: 'phase_branch_template' }) ?? defaults.phase_branch_template, milestone_branch_template: get('milestone_branch_template', { section: 'git', field: 'milestone_branch_template' }) ?? defaults.milestone_branch_template, @@ -598,6 +600,7 @@ function cmdConfigEnsureSection(cwd, raw) { model_profile: 'balanced', commit_docs: true, search_gitignored: false, + git_tag: true, branching_strategy: 'none', phase_branch_template: 'gsd/phase-{phase}-{slug}', milestone_branch_template: 'gsd/{milestone}-{slug}', diff --git a/get-shit-done/references/planning-config.md b/get-shit-done/references/planning-config.md index a7f09b26..2a6b1371 100644 --- a/get-shit-done/references/planning-config.md +++ b/get-shit-done/references/planning-config.md @@ -6,7 +6,8 @@ Configuration options for `.planning/` directory behavior. ```json "planning": { "commit_docs": true, - "search_gitignored": false + "search_gitignored": false, + "git_tag": true }, "git": { "branching_strategy": "none", @@ -19,6 +20,7 @@ Configuration options for `.planning/` directory behavior. |--------|---------|-------------| | `commit_docs` | `true` | Whether to commit planning artifacts to git | | `search_gitignored` | `false` | Add `--no-ignore` to broad rg searches | +| `git_tag` | `true` | Create git tags on milestone completion | | `git.branching_strategy` | `"none"` | Git branching approach: `"none"`, `"phase"`, or `"milestone"` | | `git.phase_branch_template` | `"gsd/phase-{phase}-{slug}"` | Branch template for phase strategy | | `git.milestone_branch_template` | `"gsd/{milestone}-{slug}"` | Branch template for milestone strategy | diff --git a/get-shit-done/templates/config.json b/get-shit-done/templates/config.json index 744c2f8c..f76a3b3c 100644 --- a/get-shit-done/templates/config.json +++ b/get-shit-done/templates/config.json @@ -8,7 +8,8 @@ }, "planning": { "commit_docs": true, - "search_gitignored": false + "search_gitignored": false, + "git_tag": true }, "parallelization": { "enabled": true, diff --git a/get-shit-done/workflows/complete-milestone.md b/get-shit-done/workflows/complete-milestone.md index b91e41cc..6842938c 100644 --- a/get-shit-done/workflows/complete-milestone.md +++ b/get-shit-done/workflows/complete-milestone.md @@ -531,6 +531,11 @@ fi + +Read `planning.git_tag` from `.planning/config.json` (default: `true` if not set). +If `git_tag` is `false` → skip this step entirely, proceed to `git_commit_milestone`. + + Create git tag: ```bash diff --git a/get-shit-done/workflows/settings.md b/get-shit-done/workflows/settings.md index 8966fecf..71f75e5a 100644 --- a/get-shit-done/workflows/settings.md +++ b/get-shit-done/workflows/settings.md @@ -30,6 +30,7 @@ Parse current values (default to `true` if not present): - `workflow.verifier` — spawn verifier during execute-phase - `model_profile` — which model each agent uses (default: `balanced`) - `git.branching_strategy` — branching approach (default: `"none"`) +- `planning.git_tag` — create git tags on milestone completion (default: `true`) @@ -83,6 +84,15 @@ AskUserQuestion([ { label: "Per Phase", description: "Create branch for each phase (gsd/phase-{N}-{name})" }, { label: "Per Milestone", description: "Create branch for entire milestone (gsd/{version}-{name})" } ] + }, + { + question: "Create git tags on milestone completion?", + header: "Git Tagging", + multiSelect: false, + options: [ + { label: "Yes (Recommended)", description: "Tag releases with version (e.g., v1.0) on milestone completion" }, + { label: "No", description: "Skip git tagging — use if your project doesn't use tags or uses a different convention" } + ] } ]) ``` @@ -100,6 +110,10 @@ Merge new settings into existing config.json: "plan_check": true/false, "verifier": true/false }, + "planning": { + ...existing_planning, + "git_tag": true/false + }, "git": { "branching_strategy": "none" | "phase" | "milestone" } @@ -124,6 +138,7 @@ Display: | Plan Checker | {On/Off} | | Execution Verifier | {On/Off} | | Git Branching | {None/Per Phase/Per Milestone} | +| Git Tagging | {On/Off} | These settings apply to future /gsd:plan-phase and /gsd:execute-phase runs. @@ -139,7 +154,7 @@ Quick commands: - [ ] Current config read -- [ ] User presented with 5 settings (profile + 3 workflow toggles + git branching) +- [ ] User presented with 6 settings (profile + 3 workflow toggles + git branching + git tagging) - [ ] Config updated with model_profile, workflow, and git sections - [ ] Changes confirmed to user