spec-kitty-cli 0.12.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- spec_kitty_cli-0.12.1.dist-info/METADATA +1767 -0
- spec_kitty_cli-0.12.1.dist-info/RECORD +242 -0
- spec_kitty_cli-0.12.1.dist-info/WHEEL +4 -0
- spec_kitty_cli-0.12.1.dist-info/entry_points.txt +2 -0
- spec_kitty_cli-0.12.1.dist-info/licenses/LICENSE +21 -0
- specify_cli/__init__.py +171 -0
- specify_cli/acceptance.py +627 -0
- specify_cli/agent_utils/README.md +157 -0
- specify_cli/agent_utils/__init__.py +9 -0
- specify_cli/agent_utils/status.py +356 -0
- specify_cli/cli/__init__.py +6 -0
- specify_cli/cli/commands/__init__.py +46 -0
- specify_cli/cli/commands/accept.py +189 -0
- specify_cli/cli/commands/agent/__init__.py +22 -0
- specify_cli/cli/commands/agent/config.py +382 -0
- specify_cli/cli/commands/agent/context.py +191 -0
- specify_cli/cli/commands/agent/feature.py +1057 -0
- specify_cli/cli/commands/agent/release.py +11 -0
- specify_cli/cli/commands/agent/tasks.py +1253 -0
- specify_cli/cli/commands/agent/workflow.py +801 -0
- specify_cli/cli/commands/context.py +246 -0
- specify_cli/cli/commands/dashboard.py +85 -0
- specify_cli/cli/commands/implement.py +973 -0
- specify_cli/cli/commands/init.py +827 -0
- specify_cli/cli/commands/init_help.py +62 -0
- specify_cli/cli/commands/merge.py +755 -0
- specify_cli/cli/commands/mission.py +240 -0
- specify_cli/cli/commands/ops.py +265 -0
- specify_cli/cli/commands/orchestrate.py +640 -0
- specify_cli/cli/commands/repair.py +175 -0
- specify_cli/cli/commands/research.py +165 -0
- specify_cli/cli/commands/sync.py +364 -0
- specify_cli/cli/commands/upgrade.py +249 -0
- specify_cli/cli/commands/validate_encoding.py +186 -0
- specify_cli/cli/commands/validate_tasks.py +186 -0
- specify_cli/cli/commands/verify.py +310 -0
- specify_cli/cli/helpers.py +123 -0
- specify_cli/cli/step_tracker.py +91 -0
- specify_cli/cli/ui.py +192 -0
- specify_cli/core/__init__.py +53 -0
- specify_cli/core/agent_context.py +311 -0
- specify_cli/core/config.py +96 -0
- specify_cli/core/context_validation.py +362 -0
- specify_cli/core/dependency_graph.py +351 -0
- specify_cli/core/git_ops.py +129 -0
- specify_cli/core/multi_parent_merge.py +323 -0
- specify_cli/core/paths.py +260 -0
- specify_cli/core/project_resolver.py +110 -0
- specify_cli/core/stale_detection.py +263 -0
- specify_cli/core/tool_checker.py +79 -0
- specify_cli/core/utils.py +43 -0
- specify_cli/core/vcs/__init__.py +114 -0
- specify_cli/core/vcs/detection.py +341 -0
- specify_cli/core/vcs/exceptions.py +85 -0
- specify_cli/core/vcs/git.py +1304 -0
- specify_cli/core/vcs/jujutsu.py +1208 -0
- specify_cli/core/vcs/protocol.py +285 -0
- specify_cli/core/vcs/types.py +249 -0
- specify_cli/core/version_checker.py +261 -0
- specify_cli/core/worktree.py +506 -0
- specify_cli/dashboard/__init__.py +28 -0
- specify_cli/dashboard/diagnostics.py +204 -0
- specify_cli/dashboard/handlers/__init__.py +17 -0
- specify_cli/dashboard/handlers/api.py +143 -0
- specify_cli/dashboard/handlers/base.py +65 -0
- specify_cli/dashboard/handlers/features.py +390 -0
- specify_cli/dashboard/handlers/router.py +81 -0
- specify_cli/dashboard/handlers/static.py +50 -0
- specify_cli/dashboard/lifecycle.py +541 -0
- specify_cli/dashboard/scanner.py +437 -0
- specify_cli/dashboard/server.py +123 -0
- specify_cli/dashboard/static/dashboard/dashboard.css +722 -0
- specify_cli/dashboard/static/dashboard/dashboard.js +1424 -0
- specify_cli/dashboard/static/spec-kitty.png +0 -0
- specify_cli/dashboard/templates/__init__.py +36 -0
- specify_cli/dashboard/templates/index.html +258 -0
- specify_cli/doc_generators.py +621 -0
- specify_cli/doc_state.py +408 -0
- specify_cli/frontmatter.py +384 -0
- specify_cli/gap_analysis.py +915 -0
- specify_cli/gitignore_manager.py +300 -0
- specify_cli/guards.py +145 -0
- specify_cli/legacy_detector.py +83 -0
- specify_cli/manifest.py +286 -0
- specify_cli/merge/__init__.py +63 -0
- specify_cli/merge/executor.py +653 -0
- specify_cli/merge/forecast.py +215 -0
- specify_cli/merge/ordering.py +126 -0
- specify_cli/merge/preflight.py +230 -0
- specify_cli/merge/state.py +185 -0
- specify_cli/merge/status_resolver.py +354 -0
- specify_cli/mission.py +654 -0
- specify_cli/missions/documentation/command-templates/implement.md +309 -0
- specify_cli/missions/documentation/command-templates/plan.md +275 -0
- specify_cli/missions/documentation/command-templates/review.md +344 -0
- specify_cli/missions/documentation/command-templates/specify.md +206 -0
- specify_cli/missions/documentation/command-templates/tasks.md +189 -0
- specify_cli/missions/documentation/mission.yaml +113 -0
- specify_cli/missions/documentation/templates/divio/explanation-template.md +192 -0
- specify_cli/missions/documentation/templates/divio/howto-template.md +168 -0
- specify_cli/missions/documentation/templates/divio/reference-template.md +179 -0
- specify_cli/missions/documentation/templates/divio/tutorial-template.md +146 -0
- specify_cli/missions/documentation/templates/generators/jsdoc.json.template +18 -0
- specify_cli/missions/documentation/templates/generators/sphinx-conf.py.template +36 -0
- specify_cli/missions/documentation/templates/plan-template.md +269 -0
- specify_cli/missions/documentation/templates/release-template.md +222 -0
- specify_cli/missions/documentation/templates/spec-template.md +172 -0
- specify_cli/missions/documentation/templates/task-prompt-template.md +140 -0
- specify_cli/missions/documentation/templates/tasks-template.md +159 -0
- specify_cli/missions/research/command-templates/merge.md +388 -0
- specify_cli/missions/research/command-templates/plan.md +125 -0
- specify_cli/missions/research/command-templates/review.md +144 -0
- specify_cli/missions/research/command-templates/tasks.md +225 -0
- specify_cli/missions/research/mission.yaml +115 -0
- specify_cli/missions/research/templates/data-model-template.md +33 -0
- specify_cli/missions/research/templates/plan-template.md +161 -0
- specify_cli/missions/research/templates/research/evidence-log.csv +18 -0
- specify_cli/missions/research/templates/research/source-register.csv +18 -0
- specify_cli/missions/research/templates/research-template.md +35 -0
- specify_cli/missions/research/templates/spec-template.md +64 -0
- specify_cli/missions/research/templates/task-prompt-template.md +148 -0
- specify_cli/missions/research/templates/tasks-template.md +114 -0
- specify_cli/missions/software-dev/command-templates/accept.md +75 -0
- specify_cli/missions/software-dev/command-templates/analyze.md +183 -0
- specify_cli/missions/software-dev/command-templates/checklist.md +286 -0
- specify_cli/missions/software-dev/command-templates/clarify.md +157 -0
- specify_cli/missions/software-dev/command-templates/constitution.md +432 -0
- specify_cli/missions/software-dev/command-templates/dashboard.md +101 -0
- specify_cli/missions/software-dev/command-templates/implement.md +41 -0
- specify_cli/missions/software-dev/command-templates/merge.md +383 -0
- specify_cli/missions/software-dev/command-templates/plan.md +171 -0
- specify_cli/missions/software-dev/command-templates/review.md +32 -0
- specify_cli/missions/software-dev/command-templates/specify.md +321 -0
- specify_cli/missions/software-dev/command-templates/tasks.md +566 -0
- specify_cli/missions/software-dev/mission.yaml +100 -0
- specify_cli/missions/software-dev/templates/plan-template.md +132 -0
- specify_cli/missions/software-dev/templates/spec-template.md +116 -0
- specify_cli/missions/software-dev/templates/task-prompt-template.md +140 -0
- specify_cli/missions/software-dev/templates/tasks-template.md +159 -0
- specify_cli/orchestrator/__init__.py +75 -0
- specify_cli/orchestrator/agent_config.py +224 -0
- specify_cli/orchestrator/agents/__init__.py +170 -0
- specify_cli/orchestrator/agents/augment.py +112 -0
- specify_cli/orchestrator/agents/base.py +243 -0
- specify_cli/orchestrator/agents/claude.py +112 -0
- specify_cli/orchestrator/agents/codex.py +106 -0
- specify_cli/orchestrator/agents/copilot.py +137 -0
- specify_cli/orchestrator/agents/cursor.py +139 -0
- specify_cli/orchestrator/agents/gemini.py +115 -0
- specify_cli/orchestrator/agents/kilocode.py +94 -0
- specify_cli/orchestrator/agents/opencode.py +132 -0
- specify_cli/orchestrator/agents/qwen.py +96 -0
- specify_cli/orchestrator/config.py +455 -0
- specify_cli/orchestrator/executor.py +642 -0
- specify_cli/orchestrator/integration.py +1230 -0
- specify_cli/orchestrator/monitor.py +898 -0
- specify_cli/orchestrator/scheduler.py +832 -0
- specify_cli/orchestrator/state.py +508 -0
- specify_cli/orchestrator/testing/__init__.py +122 -0
- specify_cli/orchestrator/testing/availability.py +346 -0
- specify_cli/orchestrator/testing/fixtures.py +684 -0
- specify_cli/orchestrator/testing/paths.py +218 -0
- specify_cli/plan_validation.py +107 -0
- specify_cli/scripts/debug-dashboard-scan.py +61 -0
- specify_cli/scripts/tasks/acceptance_support.py +695 -0
- specify_cli/scripts/tasks/task_helpers.py +506 -0
- specify_cli/scripts/tasks/tasks_cli.py +848 -0
- specify_cli/scripts/validate_encoding.py +180 -0
- specify_cli/task_metadata_validation.py +274 -0
- specify_cli/tasks_support.py +447 -0
- specify_cli/template/__init__.py +47 -0
- specify_cli/template/asset_generator.py +206 -0
- specify_cli/template/github_client.py +334 -0
- specify_cli/template/manager.py +193 -0
- specify_cli/template/renderer.py +99 -0
- specify_cli/templates/AGENTS.md +190 -0
- specify_cli/templates/POWERSHELL_SYNTAX.md +229 -0
- specify_cli/templates/agent-file-template.md +35 -0
- specify_cli/templates/checklist-template.md +42 -0
- specify_cli/templates/claudeignore-template +58 -0
- specify_cli/templates/command-templates/accept.md +141 -0
- specify_cli/templates/command-templates/analyze.md +253 -0
- specify_cli/templates/command-templates/checklist.md +352 -0
- specify_cli/templates/command-templates/clarify.md +224 -0
- specify_cli/templates/command-templates/constitution.md +432 -0
- specify_cli/templates/command-templates/dashboard.md +175 -0
- specify_cli/templates/command-templates/implement.md +190 -0
- specify_cli/templates/command-templates/merge.md +374 -0
- specify_cli/templates/command-templates/plan.md +171 -0
- specify_cli/templates/command-templates/research.md +88 -0
- specify_cli/templates/command-templates/review.md +510 -0
- specify_cli/templates/command-templates/specify.md +321 -0
- specify_cli/templates/command-templates/status.md +92 -0
- specify_cli/templates/command-templates/tasks.md +199 -0
- specify_cli/templates/git-hooks/pre-commit +22 -0
- specify_cli/templates/git-hooks/pre-commit-agent-check +37 -0
- specify_cli/templates/git-hooks/pre-commit-encoding-check +142 -0
- specify_cli/templates/plan-template.md +108 -0
- specify_cli/templates/spec-template.md +118 -0
- specify_cli/templates/task-prompt-template.md +165 -0
- specify_cli/templates/tasks-template.md +161 -0
- specify_cli/templates/vscode-settings.json +13 -0
- specify_cli/text_sanitization.py +225 -0
- specify_cli/upgrade/__init__.py +18 -0
- specify_cli/upgrade/detector.py +239 -0
- specify_cli/upgrade/metadata.py +182 -0
- specify_cli/upgrade/migrations/__init__.py +65 -0
- specify_cli/upgrade/migrations/base.py +80 -0
- specify_cli/upgrade/migrations/m_0_10_0_python_only.py +359 -0
- specify_cli/upgrade/migrations/m_0_10_12_constitution_cleanup.py +99 -0
- specify_cli/upgrade/migrations/m_0_10_14_update_implement_slash_command.py +176 -0
- specify_cli/upgrade/migrations/m_0_10_1_populate_slash_commands.py +174 -0
- specify_cli/upgrade/migrations/m_0_10_2_update_slash_commands.py +172 -0
- specify_cli/upgrade/migrations/m_0_10_6_workflow_simplification.py +174 -0
- specify_cli/upgrade/migrations/m_0_10_8_fix_memory_structure.py +252 -0
- specify_cli/upgrade/migrations/m_0_10_9_repair_templates.py +168 -0
- specify_cli/upgrade/migrations/m_0_11_0_workspace_per_wp.py +182 -0
- specify_cli/upgrade/migrations/m_0_11_1_improved_workflow_templates.py +173 -0
- specify_cli/upgrade/migrations/m_0_11_1_update_implement_slash_command.py +160 -0
- specify_cli/upgrade/migrations/m_0_11_2_improved_workflow_templates.py +173 -0
- specify_cli/upgrade/migrations/m_0_11_3_workflow_agent_flag.py +114 -0
- specify_cli/upgrade/migrations/m_0_12_0_documentation_mission.py +155 -0
- specify_cli/upgrade/migrations/m_0_12_1_remove_kitty_specs_from_gitignore.py +183 -0
- specify_cli/upgrade/migrations/m_0_2_0_specify_to_kittify.py +80 -0
- specify_cli/upgrade/migrations/m_0_4_8_gitignore_agents.py +118 -0
- specify_cli/upgrade/migrations/m_0_5_0_encoding_hooks.py +141 -0
- specify_cli/upgrade/migrations/m_0_6_5_commands_rename.py +169 -0
- specify_cli/upgrade/migrations/m_0_6_7_ensure_missions.py +228 -0
- specify_cli/upgrade/migrations/m_0_7_2_worktree_commands_dedup.py +89 -0
- specify_cli/upgrade/migrations/m_0_7_3_update_scripts.py +114 -0
- specify_cli/upgrade/migrations/m_0_8_0_remove_active_mission.py +82 -0
- specify_cli/upgrade/migrations/m_0_8_0_worktree_agents_symlink.py +148 -0
- specify_cli/upgrade/migrations/m_0_9_0_frontmatter_only_lanes.py +346 -0
- specify_cli/upgrade/migrations/m_0_9_1_complete_lane_migration.py +656 -0
- specify_cli/upgrade/migrations/m_0_9_2_research_mission_templates.py +221 -0
- specify_cli/upgrade/registry.py +121 -0
- specify_cli/upgrade/runner.py +284 -0
- specify_cli/validators/__init__.py +14 -0
- specify_cli/validators/paths.py +154 -0
- specify_cli/validators/research.py +428 -0
- specify_cli/verify_enhanced.py +270 -0
- specify_cli/workspace_context.py +224 -0
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Merge a completed feature into the main branch and clean up worktree
|
|
3
|
+
scripts:
|
|
4
|
+
sh: "spec-kitty agent feature merge"
|
|
5
|
+
ps: "spec-kitty agent"
|
|
6
|
+
---
|
|
7
|
+
**Path reference rule:** When you mention directories or files, provide either the absolute path or a path relative to the project root (for example, `kitty-specs/<feature>/tasks/`). Never refer to a folder by name alone.
|
|
8
|
+
|
|
9
|
+
*Path: [templates/commands/merge.md](templates/commands/merge.md)*
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
# Merge Feature Branch
|
|
13
|
+
|
|
14
|
+
This command merges a completed feature branch into the main/target branch and handles cleanup of worktrees and branches.
|
|
15
|
+
|
|
16
|
+
## ⛔ Location Pre-flight Check (CRITICAL)
|
|
17
|
+
|
|
18
|
+
**BEFORE PROCEEDING:** You MUST be in the feature worktree, NOT the main repository.
|
|
19
|
+
|
|
20
|
+
Verify your current location:
|
|
21
|
+
```bash
|
|
22
|
+
pwd
|
|
23
|
+
git branch --show-current
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**Expected output:**
|
|
27
|
+
- `pwd`: Should end with `.worktrees/001-feature-name` (or similar feature worktree)
|
|
28
|
+
- Branch: Should show your feature branch name like `001-feature-name` (NOT `main` or `release/*`)
|
|
29
|
+
|
|
30
|
+
**If you see:**
|
|
31
|
+
- Branch showing `main` or `release/`
|
|
32
|
+
- OR pwd shows the main repository root
|
|
33
|
+
|
|
34
|
+
⛔ **STOP - DANGER! You are in the wrong location!**
|
|
35
|
+
|
|
36
|
+
This command merges your feature INTO main. Running from the wrong location can cause:
|
|
37
|
+
- Loss of work
|
|
38
|
+
- Merge conflicts
|
|
39
|
+
- Repository corruption
|
|
40
|
+
|
|
41
|
+
**Correct the issue:**
|
|
42
|
+
1. Navigate to your feature worktree: `cd .worktrees/001-feature-name`
|
|
43
|
+
2. Verify you're on the correct feature branch: `git branch --show-current`
|
|
44
|
+
3. Then run this merge command again
|
|
45
|
+
|
|
46
|
+
**Exception (main branch):**
|
|
47
|
+
If you are on `main` and need to merge a workspace-per-WP feature, run:
|
|
48
|
+
```bash
|
|
49
|
+
spec-kitty merge --feature <feature-slug>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Prerequisites
|
|
55
|
+
|
|
56
|
+
Before running this command:
|
|
57
|
+
|
|
58
|
+
1. ✅ Feature must pass `/spec-kitty.accept` checks
|
|
59
|
+
2. ✅ All work packages must be in `tasks/`
|
|
60
|
+
3. ✅ Working directory must be clean (no uncommitted changes)
|
|
61
|
+
4. ✅ Run the command from the feature worktree (Spec Kitty will move the merge to the primary repo automatically)
|
|
62
|
+
|
|
63
|
+
## Location Pre-flight Check (CRITICAL for AI Agents)
|
|
64
|
+
|
|
65
|
+
Before merging, verify you are in the correct working directory by running this validation:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
python3 -c "
|
|
69
|
+
from specify_cli.guards import validate_worktree_location
|
|
70
|
+
result = validate_worktree_location()
|
|
71
|
+
if not result.is_valid:
|
|
72
|
+
print(result.format_error())
|
|
73
|
+
print('\nThis command MUST run from a feature worktree, not the main repository.')
|
|
74
|
+
print('\nFor workspace-per-WP features, run from ANY WP worktree:')
|
|
75
|
+
print(' cd /path/to/project/.worktrees/<feature>-WP01')
|
|
76
|
+
print(' # or any other WP worktree for this feature')
|
|
77
|
+
raise SystemExit(1)
|
|
78
|
+
else:
|
|
79
|
+
print('✓ Location verified:', result.branch_name)
|
|
80
|
+
"
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**What this validates**:
|
|
84
|
+
- Current branch follows the feature pattern like `001-feature-name` or `001-feature-name-WP01`
|
|
85
|
+
- You're not attempting to run from `main` or any release branch
|
|
86
|
+
- The validator prints clear navigation instructions if you're outside the feature worktree
|
|
87
|
+
|
|
88
|
+
**For workspace-per-WP features (0.11.0+)**:
|
|
89
|
+
- Run merge from ANY WP worktree (e.g., `.worktrees/014-feature-WP09/`)
|
|
90
|
+
- The merge command automatically detects all WP branches and merges them sequentially
|
|
91
|
+
- You do NOT need to run merge from each WP worktree individually
|
|
92
|
+
|
|
93
|
+
## What This Command Does
|
|
94
|
+
|
|
95
|
+
1. **Detects** your current feature branch and worktree status
|
|
96
|
+
2. **Runs** pre-flight validation across all worktrees and the target branch
|
|
97
|
+
3. **Determines** merge order based on WP dependencies (workspace-per-WP)
|
|
98
|
+
4. **Forecasts** conflicts during `--dry-run` and flags auto-resolvable status files
|
|
99
|
+
5. **Verifies** working directory is clean (legacy single-worktree)
|
|
100
|
+
6. **Switches** to the target branch (default: `main`) in the primary repository
|
|
101
|
+
7. **Updates** the target branch (`git pull --ff-only`)
|
|
102
|
+
8. **Merges** the feature using your chosen strategy
|
|
103
|
+
9. **Auto-resolves** status file conflicts after each WP merge
|
|
104
|
+
10. **Optionally pushes** to origin
|
|
105
|
+
11. **Removes** the feature worktree (if in one)
|
|
106
|
+
12. **Deletes** the feature branch
|
|
107
|
+
|
|
108
|
+
## Usage
|
|
109
|
+
|
|
110
|
+
### Basic merge (default: merge commit, cleanup everything)
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
spec-kitty merge
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
This will:
|
|
117
|
+
- Create a merge commit
|
|
118
|
+
- Remove the worktree
|
|
119
|
+
- Delete the feature branch
|
|
120
|
+
- Keep changes local (no push)
|
|
121
|
+
|
|
122
|
+
### Merge with options
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
# Squash all commits into one
|
|
126
|
+
spec-kitty merge --strategy squash
|
|
127
|
+
|
|
128
|
+
# Push to origin after merging
|
|
129
|
+
spec-kitty merge --push
|
|
130
|
+
|
|
131
|
+
# Keep the feature branch
|
|
132
|
+
spec-kitty merge --keep-branch
|
|
133
|
+
|
|
134
|
+
# Keep the worktree
|
|
135
|
+
spec-kitty merge --keep-worktree
|
|
136
|
+
|
|
137
|
+
# Merge into a different branch
|
|
138
|
+
spec-kitty merge --target develop
|
|
139
|
+
|
|
140
|
+
# See what would happen without doing it
|
|
141
|
+
spec-kitty merge --dry-run
|
|
142
|
+
|
|
143
|
+
# Run merge from main for a workspace-per-WP feature
|
|
144
|
+
spec-kitty merge --feature 017-feature-slug
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Common workflows
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
# Feature complete, squash and push
|
|
151
|
+
spec-kitty merge --strategy squash --push
|
|
152
|
+
|
|
153
|
+
# Keep branch for reference
|
|
154
|
+
spec-kitty merge --keep-branch
|
|
155
|
+
|
|
156
|
+
# Merge into develop instead of main
|
|
157
|
+
spec-kitty merge --target develop --push
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## Merge Strategies
|
|
161
|
+
|
|
162
|
+
### `merge` (default)
|
|
163
|
+
Creates a merge commit preserving all feature branch commits.
|
|
164
|
+
```bash
|
|
165
|
+
spec-kitty merge --strategy merge
|
|
166
|
+
```
|
|
167
|
+
✅ Preserves full commit history
|
|
168
|
+
✅ Clear feature boundaries in git log
|
|
169
|
+
❌ More commits in main branch
|
|
170
|
+
|
|
171
|
+
### `squash`
|
|
172
|
+
Squashes all feature commits into a single commit.
|
|
173
|
+
```bash
|
|
174
|
+
spec-kitty merge --strategy squash
|
|
175
|
+
```
|
|
176
|
+
✅ Clean, linear history on main
|
|
177
|
+
✅ Single commit per feature
|
|
178
|
+
❌ Loses individual commit details
|
|
179
|
+
|
|
180
|
+
### `rebase`
|
|
181
|
+
Requires manual rebase first (command will guide you).
|
|
182
|
+
```bash
|
|
183
|
+
spec-kitty merge --strategy rebase
|
|
184
|
+
```
|
|
185
|
+
✅ Linear history without merge commits
|
|
186
|
+
❌ Requires manual intervention
|
|
187
|
+
❌ Rewrites commit history
|
|
188
|
+
|
|
189
|
+
## Options
|
|
190
|
+
|
|
191
|
+
| Option | Description | Default |
|
|
192
|
+
|--------|-------------|---------|
|
|
193
|
+
| `--strategy` | Merge strategy: `merge`, `squash`, or `rebase` | `merge` |
|
|
194
|
+
| `--delete-branch` / `--keep-branch` | Delete feature branch after merge | delete |
|
|
195
|
+
| `--remove-worktree` / `--keep-worktree` | Remove feature worktree after merge | remove |
|
|
196
|
+
| `--push` | Push to origin after merge | no push |
|
|
197
|
+
| `--target` | Target branch to merge into | `main` |
|
|
198
|
+
| `--dry-run` | Show what would be done without executing | off |
|
|
199
|
+
| `--feature` | Feature slug when merging from main branch | none |
|
|
200
|
+
| `--resume` | Resume an interrupted merge | off |
|
|
201
|
+
|
|
202
|
+
## Worktree Strategy
|
|
203
|
+
|
|
204
|
+
Spec Kitty uses an **opinionated worktree approach**:
|
|
205
|
+
|
|
206
|
+
### Workspace-per-WP Model (0.11.0+)
|
|
207
|
+
|
|
208
|
+
In the current model, each work package gets its own worktree:
|
|
209
|
+
|
|
210
|
+
```
|
|
211
|
+
my-project/ # Main repo (main branch)
|
|
212
|
+
├── .worktrees/
|
|
213
|
+
│ ├── 001-auth-system-WP01/ # WP01 worktree
|
|
214
|
+
│ ├── 001-auth-system-WP02/ # WP02 worktree
|
|
215
|
+
│ ├── 001-auth-system-WP03/ # WP03 worktree
|
|
216
|
+
│ └── 002-dashboard-WP01/ # Different feature
|
|
217
|
+
├── .kittify/
|
|
218
|
+
├── kitty-specs/
|
|
219
|
+
└── ... (main branch files)
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
**Merge behavior for workspace-per-WP**:
|
|
223
|
+
- Run `spec-kitty merge` from **any** WP worktree for the feature
|
|
224
|
+
- The command automatically detects all WP branches (WP01, WP02, WP03, etc.)
|
|
225
|
+
- Merges each WP branch into main in sequence
|
|
226
|
+
- Cleans up all WP worktrees and branches
|
|
227
|
+
|
|
228
|
+
### Legacy Pattern (0.10.x)
|
|
229
|
+
```
|
|
230
|
+
my-project/ # Main repo (main branch)
|
|
231
|
+
├── .worktrees/
|
|
232
|
+
│ ├── 001-auth-system/ # Feature 1 worktree (single)
|
|
233
|
+
│ ├── 002-dashboard/ # Feature 2 worktree (single)
|
|
234
|
+
│ └── 003-notifications/ # Feature 3 worktree (single)
|
|
235
|
+
├── .kittify/
|
|
236
|
+
├── kitty-specs/
|
|
237
|
+
└── ... (main branch files)
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### The Rules
|
|
241
|
+
1. **Main branch** stays in the primary repo root
|
|
242
|
+
2. **Feature branches** live in `.worktrees/<feature-slug>/`
|
|
243
|
+
3. **Work on features** happens in their worktrees (isolation)
|
|
244
|
+
4. **Merge from worktrees** using this command – the CLI will hop to the primary repo for the Git merge
|
|
245
|
+
5. **Cleanup is automatic** - worktrees removed after merge
|
|
246
|
+
|
|
247
|
+
### Why Worktrees?
|
|
248
|
+
- ✅ Work on multiple features simultaneously
|
|
249
|
+
- ✅ Each feature has its own sandbox
|
|
250
|
+
- ✅ No branch switching in main repo
|
|
251
|
+
- ✅ Easy to compare features
|
|
252
|
+
- ✅ Clean separation of concerns
|
|
253
|
+
|
|
254
|
+
### The Flow
|
|
255
|
+
```
|
|
256
|
+
1. /spec-kitty.specify → Creates branch + worktree
|
|
257
|
+
2. cd .worktrees/<feature>/ → Enter worktree
|
|
258
|
+
3. /spec-kitty.plan → Work in isolation
|
|
259
|
+
4. /spec-kitty.tasks
|
|
260
|
+
5. /spec-kitty.implement
|
|
261
|
+
6. /spec-kitty.review
|
|
262
|
+
7. /spec-kitty.accept
|
|
263
|
+
8. /spec-kitty.merge → Merge + cleanup worktree
|
|
264
|
+
9. Back in main repo! → Ready for next feature
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
## Error Handling
|
|
268
|
+
|
|
269
|
+
### "Already on main branch"
|
|
270
|
+
You're not on a feature branch. Switch to your feature branch first:
|
|
271
|
+
```bash
|
|
272
|
+
cd .worktrees/<feature-slug>
|
|
273
|
+
# or
|
|
274
|
+
git checkout <feature-branch>
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
### "Working directory has uncommitted changes"
|
|
278
|
+
Commit or stash your changes:
|
|
279
|
+
```bash
|
|
280
|
+
git add .
|
|
281
|
+
git commit -m "Final changes"
|
|
282
|
+
# or
|
|
283
|
+
git stash
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
### "Could not fast-forward main"
|
|
287
|
+
Your main branch is behind origin:
|
|
288
|
+
```bash
|
|
289
|
+
git checkout main
|
|
290
|
+
git pull
|
|
291
|
+
git checkout <feature-branch>
|
|
292
|
+
spec-kitty merge
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
### "Merge failed - conflicts"
|
|
296
|
+
Resolve conflicts manually:
|
|
297
|
+
```bash
|
|
298
|
+
# Fix conflicts in files
|
|
299
|
+
git add <resolved-files>
|
|
300
|
+
git commit
|
|
301
|
+
# Then complete cleanup manually:
|
|
302
|
+
git worktree remove .worktrees/<feature>
|
|
303
|
+
git branch -d <feature-branch>
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
## Safety Features
|
|
307
|
+
|
|
308
|
+
1. **Clean working directory check** - Won't merge with uncommitted changes
|
|
309
|
+
2. **Primary repo hand-off** - Automatically runs Git operations from the main checkout when invoked in a worktree
|
|
310
|
+
3. **Fast-forward only pull** - Won't proceed if main has diverged
|
|
311
|
+
4. **Graceful failure** - If merge fails, you can fix manually
|
|
312
|
+
5. **Optional operations** - Push, branch delete, and worktree removal are configurable
|
|
313
|
+
6. **Dry run mode** - Preview exactly what will happen
|
|
314
|
+
|
|
315
|
+
## Examples
|
|
316
|
+
|
|
317
|
+
### Complete feature and push
|
|
318
|
+
```bash
|
|
319
|
+
cd .worktrees/001-auth-system
|
|
320
|
+
/spec-kitty.accept
|
|
321
|
+
/spec-kitty.merge --push
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
### Squash merge for cleaner history
|
|
325
|
+
```bash
|
|
326
|
+
spec-kitty merge --strategy squash --push
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
### Merge but keep branch for reference
|
|
330
|
+
```bash
|
|
331
|
+
spec-kitty merge --keep-branch --push
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
### Check what will happen first
|
|
335
|
+
```bash
|
|
336
|
+
spec-kitty merge --dry-run
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
## After Merging
|
|
340
|
+
|
|
341
|
+
After a successful merge, you're back on the main branch with:
|
|
342
|
+
- ✅ Feature code integrated
|
|
343
|
+
- ✅ Worktree removed (if it existed)
|
|
344
|
+
- ✅ Feature branch deleted (unless `--keep-branch`)
|
|
345
|
+
- ✅ Ready to start your next feature!
|
|
346
|
+
|
|
347
|
+
## Integration with Accept
|
|
348
|
+
|
|
349
|
+
The typical flow is:
|
|
350
|
+
|
|
351
|
+
```bash
|
|
352
|
+
# 1. Run acceptance checks
|
|
353
|
+
/spec-kitty.accept --mode local
|
|
354
|
+
|
|
355
|
+
# 2. If checks pass, merge
|
|
356
|
+
/spec-kitty.merge --push
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
Or combine conceptually:
|
|
360
|
+
```bash
|
|
361
|
+
# Accept verifies readiness
|
|
362
|
+
/spec-kitty.accept --mode local
|
|
363
|
+
|
|
364
|
+
# Merge performs integration
|
|
365
|
+
/spec-kitty.merge --strategy squash --push
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
The `/spec-kitty.accept` command **verifies** your feature is complete.
|
|
369
|
+
The `/spec-kitty.merge` command **integrates** your feature into main.
|
|
370
|
+
|
|
371
|
+
Together they complete the workflow:
|
|
372
|
+
```
|
|
373
|
+
specify → plan → tasks → implement → review → accept → merge ✅
|
|
374
|
+
```
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Execute the implementation planning workflow using the plan template to generate design artifacts.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# /spec-kitty.plan - Create Implementation Plan
|
|
6
|
+
|
|
7
|
+
**Version**: 0.11.0+
|
|
8
|
+
|
|
9
|
+
## 📍 WORKING DIRECTORY: Stay in MAIN repository
|
|
10
|
+
|
|
11
|
+
**IMPORTANT**: Plan works in the main repository. NO worktrees created.
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
# Run from project root (same directory as /spec-kitty.specify):
|
|
15
|
+
# You should already be here if you just ran /spec-kitty.specify
|
|
16
|
+
|
|
17
|
+
# Creates:
|
|
18
|
+
# - kitty-specs/###-feature/plan.md → In main repository
|
|
19
|
+
# - Commits to main branch
|
|
20
|
+
# - NO worktrees created
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
**Do NOT cd anywhere**. Stay in the main repository root.
|
|
24
|
+
|
|
25
|
+
## User Input
|
|
26
|
+
|
|
27
|
+
```text
|
|
28
|
+
$ARGUMENTS
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
You **MUST** consider the user input before proceeding (if not empty).
|
|
32
|
+
|
|
33
|
+
## Location Check (0.11.0+)
|
|
34
|
+
|
|
35
|
+
This command runs in the **main repository**, not in a worktree.
|
|
36
|
+
|
|
37
|
+
- Verify you're on `main` (or `master`) before scaffolding plan.md
|
|
38
|
+
- Planning artifacts live in `kitty-specs/###-feature/`
|
|
39
|
+
- The plan template is committed to the main branch after generation
|
|
40
|
+
|
|
41
|
+
**Path reference rule:** When you mention directories or files, provide either the absolute path or a path relative to the project root (for example, `kitty-specs/<feature>/tasks/`). Never refer to a folder by name alone.
|
|
42
|
+
|
|
43
|
+
## Planning Interrogation (mandatory)
|
|
44
|
+
|
|
45
|
+
Before executing any scripts or generating artifacts you must interrogate the specification and stakeholders.
|
|
46
|
+
|
|
47
|
+
- **Scope proportionality (CRITICAL)**: FIRST, assess the feature's complexity from the spec:
|
|
48
|
+
- **Trivial/Test Features** (hello world, simple static pages, basic demos): Ask 1-2 questions maximum about tech stack preference, then proceed with sensible defaults
|
|
49
|
+
- **Simple Features** (small components, minor API additions): Ask 2-3 questions about tech choices and constraints
|
|
50
|
+
- **Complex Features** (new subsystems, multi-component features): Ask 3-5 questions covering architecture, NFRs, integrations
|
|
51
|
+
- **Platform/Critical Features** (core infrastructure, security, payments): Full interrogation with 5+ questions
|
|
52
|
+
|
|
53
|
+
- **User signals to reduce questioning**: If the user says "use defaults", "just make it simple", "skip to implementation", "vanilla HTML/CSS/JS" - recognize these as signals to minimize planning questions and use standard approaches.
|
|
54
|
+
|
|
55
|
+
- **First response rule**:
|
|
56
|
+
- For TRIVIAL features: Ask ONE tech stack question, then if answer is simple (e.g., "vanilla HTML"), proceed directly to plan generation
|
|
57
|
+
- For other features: Ask a single architecture question and end with `WAITING_FOR_PLANNING_INPUT`
|
|
58
|
+
|
|
59
|
+
- If the user has not provided plan context, keep interrogating with one question at a time.
|
|
60
|
+
|
|
61
|
+
- **Conversational cadence**: After each reply, assess if you have SUFFICIENT context for this feature's scope. For trivial features, knowing the basic stack is enough. Only continue if critical unknowns remain.
|
|
62
|
+
|
|
63
|
+
Planning requirements (scale to complexity):
|
|
64
|
+
|
|
65
|
+
1. Maintain a **Planning Questions** table internally covering questions appropriate to the feature's complexity (1-2 for trivial, up to 5+ for platform-level). Track columns `#`, `Question`, `Why it matters`, and `Current insight`. Do **not** render this table to the user.
|
|
66
|
+
2. For trivial features, standard practices are acceptable (vanilla HTML, simple file structure, no build tools). Only probe if the user's request suggests otherwise.
|
|
67
|
+
3. When you have sufficient context for the scope, summarize into an **Engineering Alignment** note and confirm.
|
|
68
|
+
4. If user explicitly asks to skip questions or use defaults, acknowledge and proceed with best practices for that feature type.
|
|
69
|
+
|
|
70
|
+
## Outline
|
|
71
|
+
|
|
72
|
+
1. **Check planning discovery status**:
|
|
73
|
+
- If any planning questions remain unanswered or the user has not confirmed the **Engineering Alignment** summary, stay in the one-question cadence, capture the user's response, update your internal table, and end with `WAITING_FOR_PLANNING_INPUT`. Do **not** surface the table. Do **not** run the setup command yet.
|
|
74
|
+
- Once every planning question has a concrete answer and the alignment summary is confirmed by the user, continue.
|
|
75
|
+
|
|
76
|
+
2. **Setup**: Run `spec-kitty agent feature setup-plan --json` from the repository root and parse JSON for:
|
|
77
|
+
- `result`: "success" or error message
|
|
78
|
+
- `plan_file`: Absolute path to the created plan.md
|
|
79
|
+
- `feature_dir`: Absolute path to the feature directory
|
|
80
|
+
|
|
81
|
+
3. **Load context**: Read FEATURE_SPEC and `.kittify/memory/constitution.md` if it exists. If the constitution file is missing, skip Constitution Check and note that it is absent. Load IMPL_PLAN template (already copied).
|
|
82
|
+
|
|
83
|
+
4. **Execute plan workflow**: Follow the structure in IMPL_PLAN template, using the validated planning answers as ground truth:
|
|
84
|
+
- Update Technical Context with explicit statements from the user or discovery research; mark `[NEEDS CLARIFICATION: …]` only when the user deliberately postpones a decision
|
|
85
|
+
- If a constitution exists, fill Constitution Check section from it and challenge any conflicts directly with the user. If no constitution exists, mark the section as skipped.
|
|
86
|
+
- Evaluate gates (ERROR if violations unjustified or questions remain unanswered)
|
|
87
|
+
- Phase 0: Generate research.md (commission research to resolve every outstanding clarification)
|
|
88
|
+
- Phase 1: Generate data-model.md, contracts/, quickstart.md based on confirmed intent
|
|
89
|
+
- Phase 1: Update agent context by running the agent script
|
|
90
|
+
- Re-evaluate Constitution Check post-design, asking the user to resolve new gaps before proceeding
|
|
91
|
+
|
|
92
|
+
5. **STOP and report**: This command ends after Phase 1 planning. Report branch, IMPL_PLAN path, and generated artifacts.
|
|
93
|
+
|
|
94
|
+
**⚠️ CRITICAL: DO NOT proceed to task generation!** The user must explicitly run `/spec-kitty.tasks` to generate work packages. Your job is COMPLETE after reporting the planning artifacts.
|
|
95
|
+
|
|
96
|
+
## Phases
|
|
97
|
+
|
|
98
|
+
### Phase 0: Outline & Research
|
|
99
|
+
|
|
100
|
+
1. **Extract unknowns from Technical Context** above:
|
|
101
|
+
- For each NEEDS CLARIFICATION → research task
|
|
102
|
+
- For each dependency → best practices task
|
|
103
|
+
- For each integration → patterns task
|
|
104
|
+
|
|
105
|
+
2. **Generate and dispatch research agents**:
|
|
106
|
+
```
|
|
107
|
+
For each unknown in Technical Context:
|
|
108
|
+
Task: "Research {unknown} for {feature context}"
|
|
109
|
+
For each technology choice:
|
|
110
|
+
Task: "Find best practices for {tech} in {domain}"
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
3. **Consolidate findings** in `research.md` using format:
|
|
114
|
+
- Decision: [what was chosen]
|
|
115
|
+
- Rationale: [why chosen]
|
|
116
|
+
- Alternatives considered: [what else evaluated]
|
|
117
|
+
|
|
118
|
+
**Output**: research.md with all NEEDS CLARIFICATION resolved
|
|
119
|
+
|
|
120
|
+
### Phase 1: Design & Contracts
|
|
121
|
+
|
|
122
|
+
**Prerequisites:** `research.md` complete
|
|
123
|
+
|
|
124
|
+
1. **Extract entities from feature spec** → `data-model.md`:
|
|
125
|
+
- Entity name, fields, relationships
|
|
126
|
+
- Validation rules from requirements
|
|
127
|
+
- State transitions if applicable
|
|
128
|
+
|
|
129
|
+
2. **Generate API contracts** from functional requirements:
|
|
130
|
+
- For each user action → endpoint
|
|
131
|
+
- Use standard REST/GraphQL patterns
|
|
132
|
+
- Output OpenAPI/GraphQL schema to `/contracts/`
|
|
133
|
+
|
|
134
|
+
3. **Agent context update**:
|
|
135
|
+
- Run `{AGENT_SCRIPT}`
|
|
136
|
+
- These scripts detect which AI agent is in use
|
|
137
|
+
- Update the appropriate agent-specific context file
|
|
138
|
+
- Add only new technology from current plan
|
|
139
|
+
- Preserve manual additions between markers
|
|
140
|
+
|
|
141
|
+
**Output**: data-model.md, /contracts/*, quickstart.md, agent-specific file
|
|
142
|
+
|
|
143
|
+
## Key rules
|
|
144
|
+
|
|
145
|
+
- Use absolute paths
|
|
146
|
+
- ERROR on gate failures or unresolved clarifications
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## ⛔ MANDATORY STOP POINT
|
|
151
|
+
|
|
152
|
+
**This command is COMPLETE after generating planning artifacts.**
|
|
153
|
+
|
|
154
|
+
After reporting:
|
|
155
|
+
- `plan.md` path
|
|
156
|
+
- `research.md` path (if generated)
|
|
157
|
+
- `data-model.md` path (if generated)
|
|
158
|
+
- `contracts/` contents (if generated)
|
|
159
|
+
- Agent context file updated
|
|
160
|
+
|
|
161
|
+
**YOU MUST STOP HERE.**
|
|
162
|
+
|
|
163
|
+
Do NOT:
|
|
164
|
+
- ❌ Generate `tasks.md`
|
|
165
|
+
- ❌ Create work package (WP) files
|
|
166
|
+
- ❌ Create `tasks/` subdirectories
|
|
167
|
+
- ❌ Proceed to implementation
|
|
168
|
+
|
|
169
|
+
The user will run `/spec-kitty.tasks` when they are ready to generate work packages.
|
|
170
|
+
|
|
171
|
+
**Next suggested command**: `/spec-kitty.tasks` (user must invoke this explicitly)
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Run the Phase 0 research workflow to scaffold research artifacts before task planning.
|
|
3
|
+
scripts:
|
|
4
|
+
sh: spec-kitty research
|
|
5
|
+
ps: spec-kitty research
|
|
6
|
+
---
|
|
7
|
+
**Path reference rule:** When you mention directories or files, provide either the absolute path or a path relative to the project root (for example, `kitty-specs/<feature>/tasks/`). Never refer to a folder by name alone.
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
*Path: [templates/commands/research.md](templates/commands/research.md)*
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
## Location Pre-flight Check
|
|
14
|
+
|
|
15
|
+
**BEFORE PROCEEDING:** Verify you are working in the feature worktree.
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
pwd
|
|
19
|
+
git branch --show-current
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**Expected output:**
|
|
23
|
+
- `pwd`: Should end with `.worktrees/001-feature-name` (or similar feature worktree)
|
|
24
|
+
- Branch: Should show your feature branch name like `001-feature-name` (NOT `main`)
|
|
25
|
+
|
|
26
|
+
**If you see the main branch or main repository path:**
|
|
27
|
+
|
|
28
|
+
⛔ **STOP - You are in the wrong location!**
|
|
29
|
+
|
|
30
|
+
This command creates research artifacts in your feature directory. You must be in the feature worktree.
|
|
31
|
+
|
|
32
|
+
**Correct the issue:**
|
|
33
|
+
1. Navigate to your feature worktree: `cd .worktrees/001-feature-name`
|
|
34
|
+
2. Verify you're on the correct feature branch: `git branch --show-current`
|
|
35
|
+
3. Then run this research command again
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## What This Command Creates
|
|
40
|
+
|
|
41
|
+
When you run `{SCRIPT}`, the following files are generated in your feature directory:
|
|
42
|
+
|
|
43
|
+
**Generated files**:
|
|
44
|
+
- **research.md** – Decisions, rationale, and supporting evidence
|
|
45
|
+
- **data-model.md** – Entities, attributes, and relationships
|
|
46
|
+
- **research/evidence-log.csv** – Sources and findings audit trail
|
|
47
|
+
- **research/source-register.csv** – Reference tracking for all sources
|
|
48
|
+
|
|
49
|
+
**Location**: All files go in `kitty-specs/001-feature-name/`
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Workflow Context
|
|
54
|
+
|
|
55
|
+
**Before this**: `/spec-kitty.plan` calls this as "Phase 0" research phase
|
|
56
|
+
|
|
57
|
+
**This command**:
|
|
58
|
+
- Scaffolds research artifacts
|
|
59
|
+
- Creates templates for capturing decisions and evidence
|
|
60
|
+
- Establishes audit trail for traceability
|
|
61
|
+
|
|
62
|
+
**After this**:
|
|
63
|
+
- Fill in research.md, data-model.md, and CSV logs with actual findings
|
|
64
|
+
- Continue with `/spec-kitty.plan` which uses your research to drive technical design
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Goal
|
|
69
|
+
|
|
70
|
+
Create `research.md`, `data-model.md`, and supporting CSV stubs based on the active mission so implementation planning can reference concrete decisions and evidence.
|
|
71
|
+
|
|
72
|
+
## What to do
|
|
73
|
+
|
|
74
|
+
1. You should already be in the correct feature worktree (verified above with pre-flight check).
|
|
75
|
+
2. Run `{SCRIPT}` to generate the mission-specific research artifacts. (Add `--force` only when it is acceptable to overwrite existing drafts.)
|
|
76
|
+
3. Open the generated files and fill in the required content:
|
|
77
|
+
- `research.md` – capture decisions, rationale, and supporting evidence.
|
|
78
|
+
- `data-model.md` – document entities, attributes, and relationships discovered during research.
|
|
79
|
+
- `research/evidence-log.csv` & `research/source-register.csv` – log all sources and findings so downstream reviewers can audit the trail.
|
|
80
|
+
4. If your research generates additional templates (spreadsheets, notebooks, etc.), store them under `research/` and reference them inside `research.md`.
|
|
81
|
+
5. Summarize open questions or risks at the bottom of `research.md`. These should feed directly into `/spec-kitty.tasks` and future implementation prompts.
|
|
82
|
+
|
|
83
|
+
## Success Criteria
|
|
84
|
+
|
|
85
|
+
- `kitty-specs/<feature>/research.md` explains every major decision with references to evidence.
|
|
86
|
+
- `kitty-specs/<feature>/data-model.md` lists the entities and relationships needed for implementation.
|
|
87
|
+
- CSV logs exist (even if partially filled) so evidence gathering is traceable.
|
|
88
|
+
- Outstanding questions from the research phase are tracked and ready for follow-up during planning or execution.
|