doit-toolkit-cli 0.1.9__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.
- doit_cli/__init__.py +1356 -0
- doit_cli/cli/__init__.py +26 -0
- doit_cli/cli/analytics_command.py +616 -0
- doit_cli/cli/context_command.py +213 -0
- doit_cli/cli/diagram_command.py +304 -0
- doit_cli/cli/fixit_command.py +641 -0
- doit_cli/cli/hooks_command.py +211 -0
- doit_cli/cli/init_command.py +613 -0
- doit_cli/cli/memory_command.py +293 -0
- doit_cli/cli/status_command.py +117 -0
- doit_cli/cli/sync_prompts_command.py +248 -0
- doit_cli/cli/validate_command.py +196 -0
- doit_cli/cli/verify_command.py +204 -0
- doit_cli/cli/workflow_mixin.py +224 -0
- doit_cli/cli/xref_command.py +555 -0
- doit_cli/formatters/__init__.py +8 -0
- doit_cli/formatters/base.py +38 -0
- doit_cli/formatters/json_formatter.py +126 -0
- doit_cli/formatters/markdown_formatter.py +97 -0
- doit_cli/formatters/rich_formatter.py +257 -0
- doit_cli/main.py +49 -0
- doit_cli/models/__init__.py +139 -0
- doit_cli/models/agent.py +74 -0
- doit_cli/models/analytics_models.py +384 -0
- doit_cli/models/context_config.py +464 -0
- doit_cli/models/crossref_models.py +182 -0
- doit_cli/models/diagram_models.py +363 -0
- doit_cli/models/fixit_models.py +355 -0
- doit_cli/models/hook_config.py +125 -0
- doit_cli/models/project.py +91 -0
- doit_cli/models/results.py +121 -0
- doit_cli/models/search_models.py +228 -0
- doit_cli/models/status_models.py +195 -0
- doit_cli/models/sync_models.py +146 -0
- doit_cli/models/template.py +77 -0
- doit_cli/models/validation_models.py +175 -0
- doit_cli/models/workflow_models.py +319 -0
- doit_cli/prompts/__init__.py +5 -0
- doit_cli/prompts/fixit_prompts.py +344 -0
- doit_cli/prompts/interactive.py +390 -0
- doit_cli/rules/__init__.py +5 -0
- doit_cli/rules/builtin_rules.py +160 -0
- doit_cli/services/__init__.py +79 -0
- doit_cli/services/agent_detector.py +168 -0
- doit_cli/services/analytics_service.py +218 -0
- doit_cli/services/architecture_generator.py +290 -0
- doit_cli/services/backup_service.py +204 -0
- doit_cli/services/config_loader.py +113 -0
- doit_cli/services/context_loader.py +1121 -0
- doit_cli/services/coverage_calculator.py +142 -0
- doit_cli/services/crossref_service.py +237 -0
- doit_cli/services/cycle_time_calculator.py +134 -0
- doit_cli/services/date_inferrer.py +349 -0
- doit_cli/services/diagram_service.py +337 -0
- doit_cli/services/drift_detector.py +109 -0
- doit_cli/services/entity_parser.py +301 -0
- doit_cli/services/er_diagram_generator.py +197 -0
- doit_cli/services/fixit_service.py +699 -0
- doit_cli/services/github_service.py +192 -0
- doit_cli/services/hook_manager.py +258 -0
- doit_cli/services/hook_validator.py +528 -0
- doit_cli/services/input_validator.py +322 -0
- doit_cli/services/memory_search.py +527 -0
- doit_cli/services/mermaid_validator.py +334 -0
- doit_cli/services/prompt_transformer.py +91 -0
- doit_cli/services/prompt_writer.py +133 -0
- doit_cli/services/query_interpreter.py +428 -0
- doit_cli/services/report_exporter.py +219 -0
- doit_cli/services/report_generator.py +256 -0
- doit_cli/services/requirement_parser.py +112 -0
- doit_cli/services/roadmap_summarizer.py +209 -0
- doit_cli/services/rule_engine.py +443 -0
- doit_cli/services/scaffolder.py +215 -0
- doit_cli/services/score_calculator.py +172 -0
- doit_cli/services/section_parser.py +204 -0
- doit_cli/services/spec_scanner.py +327 -0
- doit_cli/services/state_manager.py +355 -0
- doit_cli/services/status_reporter.py +143 -0
- doit_cli/services/task_parser.py +347 -0
- doit_cli/services/template_manager.py +710 -0
- doit_cli/services/template_reader.py +158 -0
- doit_cli/services/user_journey_generator.py +214 -0
- doit_cli/services/user_story_parser.py +232 -0
- doit_cli/services/validation_service.py +188 -0
- doit_cli/services/validator.py +232 -0
- doit_cli/services/velocity_tracker.py +173 -0
- doit_cli/services/workflow_engine.py +405 -0
- doit_cli/templates/agent-file-template.md +28 -0
- doit_cli/templates/checklist-template.md +39 -0
- doit_cli/templates/commands/doit.checkin.md +363 -0
- doit_cli/templates/commands/doit.constitution.md +187 -0
- doit_cli/templates/commands/doit.documentit.md +485 -0
- doit_cli/templates/commands/doit.fixit.md +181 -0
- doit_cli/templates/commands/doit.implementit.md +265 -0
- doit_cli/templates/commands/doit.planit.md +262 -0
- doit_cli/templates/commands/doit.reviewit.md +355 -0
- doit_cli/templates/commands/doit.roadmapit.md +368 -0
- doit_cli/templates/commands/doit.scaffoldit.md +458 -0
- doit_cli/templates/commands/doit.specit.md +521 -0
- doit_cli/templates/commands/doit.taskit.md +304 -0
- doit_cli/templates/commands/doit.testit.md +277 -0
- doit_cli/templates/config/context.yaml +134 -0
- doit_cli/templates/config/hooks.yaml +93 -0
- doit_cli/templates/config/validation-rules.yaml +64 -0
- doit_cli/templates/github-issue-templates/epic.yml +78 -0
- doit_cli/templates/github-issue-templates/feature.yml +116 -0
- doit_cli/templates/github-issue-templates/task.yml +129 -0
- doit_cli/templates/hooks/.gitkeep +0 -0
- doit_cli/templates/hooks/post-commit.sh +25 -0
- doit_cli/templates/hooks/post-merge.sh +75 -0
- doit_cli/templates/hooks/pre-commit.sh +17 -0
- doit_cli/templates/hooks/pre-push.sh +18 -0
- doit_cli/templates/memory/completed_roadmap.md +50 -0
- doit_cli/templates/memory/constitution.md +125 -0
- doit_cli/templates/memory/roadmap.md +61 -0
- doit_cli/templates/plan-template.md +146 -0
- doit_cli/templates/scripts/bash/check-prerequisites.sh +166 -0
- doit_cli/templates/scripts/bash/common.sh +156 -0
- doit_cli/templates/scripts/bash/create-new-feature.sh +297 -0
- doit_cli/templates/scripts/bash/setup-plan.sh +61 -0
- doit_cli/templates/scripts/bash/update-agent-context.sh +675 -0
- doit_cli/templates/scripts/powershell/check-prerequisites.ps1 +148 -0
- doit_cli/templates/scripts/powershell/common.ps1 +137 -0
- doit_cli/templates/scripts/powershell/create-new-feature.ps1 +283 -0
- doit_cli/templates/scripts/powershell/setup-plan.ps1 +61 -0
- doit_cli/templates/scripts/powershell/update-agent-context.ps1 +406 -0
- doit_cli/templates/spec-template.md +159 -0
- doit_cli/templates/tasks-template.md +313 -0
- doit_cli/templates/vscode-settings.json +14 -0
- doit_toolkit_cli-0.1.9.dist-info/METADATA +324 -0
- doit_toolkit_cli-0.1.9.dist-info/RECORD +134 -0
- doit_toolkit_cli-0.1.9.dist-info/WHEEL +4 -0
- doit_toolkit_cli-0.1.9.dist-info/entry_points.txt +2 -0
- doit_toolkit_cli-0.1.9.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# Context Configuration
|
|
2
|
+
# ====================
|
|
3
|
+
# This file configures automatic context injection for doit commands.
|
|
4
|
+
# Project context (constitution, roadmap, specs) is automatically loaded
|
|
5
|
+
# and provided to AI agents when running doit commands.
|
|
6
|
+
#
|
|
7
|
+
# Location: .doit/config/context.yaml
|
|
8
|
+
# Documentation: https://github.com/your-org/doit/blob/main/docs/context-injection.md
|
|
9
|
+
|
|
10
|
+
# Schema version (required, must be 1)
|
|
11
|
+
version: 1
|
|
12
|
+
|
|
13
|
+
# ---------------------------------------------------------------------------
|
|
14
|
+
# Global Settings
|
|
15
|
+
# ---------------------------------------------------------------------------
|
|
16
|
+
|
|
17
|
+
# Master toggle - set to false to disable all context loading
|
|
18
|
+
enabled: true
|
|
19
|
+
|
|
20
|
+
# Maximum tokens per individual source
|
|
21
|
+
# Sources exceeding this limit will be intelligently truncated
|
|
22
|
+
# Default: 4000 (suitable for most AI model context windows)
|
|
23
|
+
max_tokens_per_source: 4000
|
|
24
|
+
|
|
25
|
+
# Maximum total tokens across all sources combined
|
|
26
|
+
# Must be >= max_tokens_per_source
|
|
27
|
+
# Default: 16000 (allows constitution + roadmap + spec + related specs)
|
|
28
|
+
total_max_tokens: 16000
|
|
29
|
+
|
|
30
|
+
# ---------------------------------------------------------------------------
|
|
31
|
+
# Source Configuration
|
|
32
|
+
# ---------------------------------------------------------------------------
|
|
33
|
+
# Each source has:
|
|
34
|
+
# - enabled: Whether to load this source (default: true)
|
|
35
|
+
# - priority: Loading order, lower = higher priority (default: varies)
|
|
36
|
+
# - max_count: For multi-item sources like related_specs (default: 1)
|
|
37
|
+
#
|
|
38
|
+
# Available sources:
|
|
39
|
+
# - constitution: Project principles from .doit/memory/constitution.md
|
|
40
|
+
# - roadmap: Project roadmap from .doit/memory/roadmap.md
|
|
41
|
+
# - current_spec: Feature spec based on current git branch
|
|
42
|
+
# - related_specs: Similar specs found via content matching
|
|
43
|
+
|
|
44
|
+
sources:
|
|
45
|
+
# Project constitution - core principles and architecture decisions
|
|
46
|
+
# Always loaded first as it provides essential context
|
|
47
|
+
constitution:
|
|
48
|
+
enabled: true
|
|
49
|
+
priority: 1
|
|
50
|
+
|
|
51
|
+
# Project roadmap - current priorities and upcoming work
|
|
52
|
+
# Helps AI understand project direction
|
|
53
|
+
roadmap:
|
|
54
|
+
enabled: true
|
|
55
|
+
priority: 2
|
|
56
|
+
|
|
57
|
+
# Current feature specification - detected from git branch
|
|
58
|
+
# Example: branch "026-ai-context" loads specs/026-ai-context/spec.md
|
|
59
|
+
current_spec:
|
|
60
|
+
enabled: true
|
|
61
|
+
priority: 3
|
|
62
|
+
|
|
63
|
+
# Related specifications - found via content similarity
|
|
64
|
+
# Provides context from similar features
|
|
65
|
+
related_specs:
|
|
66
|
+
enabled: true
|
|
67
|
+
priority: 4
|
|
68
|
+
# Maximum number of related specs to include
|
|
69
|
+
max_count: 3
|
|
70
|
+
|
|
71
|
+
# ---------------------------------------------------------------------------
|
|
72
|
+
# Per-Command Overrides
|
|
73
|
+
# ---------------------------------------------------------------------------
|
|
74
|
+
# Override source settings for specific doit commands.
|
|
75
|
+
# Useful when certain commands need different context.
|
|
76
|
+
#
|
|
77
|
+
# Available commands: specit, planit, taskit, implementit, testit,
|
|
78
|
+
# reviewit, checkin, roadmapit, constitution, etc.
|
|
79
|
+
|
|
80
|
+
commands:
|
|
81
|
+
# specit: Creating new feature specs
|
|
82
|
+
# Disable related_specs since we're creating something new
|
|
83
|
+
specit:
|
|
84
|
+
sources:
|
|
85
|
+
related_specs:
|
|
86
|
+
enabled: false
|
|
87
|
+
|
|
88
|
+
# roadmapit: Updating project roadmap
|
|
89
|
+
# Disable current_spec as roadmap is project-wide
|
|
90
|
+
roadmapit:
|
|
91
|
+
sources:
|
|
92
|
+
current_spec:
|
|
93
|
+
enabled: false
|
|
94
|
+
|
|
95
|
+
# constitution: Updating project principles
|
|
96
|
+
# Only need current constitution for reference
|
|
97
|
+
constitution:
|
|
98
|
+
sources:
|
|
99
|
+
roadmap:
|
|
100
|
+
enabled: false
|
|
101
|
+
current_spec:
|
|
102
|
+
enabled: false
|
|
103
|
+
related_specs:
|
|
104
|
+
enabled: false
|
|
105
|
+
|
|
106
|
+
# ---------------------------------------------------------------------------
|
|
107
|
+
# Example: Minimal Configuration
|
|
108
|
+
# ---------------------------------------------------------------------------
|
|
109
|
+
# To use all defaults, your file can be as simple as:
|
|
110
|
+
#
|
|
111
|
+
# version: 1
|
|
112
|
+
# enabled: true
|
|
113
|
+
#
|
|
114
|
+
# The system will use sensible defaults for all other settings.
|
|
115
|
+
|
|
116
|
+
# ---------------------------------------------------------------------------
|
|
117
|
+
# Example: Disable Context Loading
|
|
118
|
+
# ---------------------------------------------------------------------------
|
|
119
|
+
# To completely disable context injection:
|
|
120
|
+
#
|
|
121
|
+
# version: 1
|
|
122
|
+
# enabled: false
|
|
123
|
+
|
|
124
|
+
# ---------------------------------------------------------------------------
|
|
125
|
+
# Example: Reduce Token Usage
|
|
126
|
+
# ---------------------------------------------------------------------------
|
|
127
|
+
# For smaller context windows or faster response times:
|
|
128
|
+
#
|
|
129
|
+
# version: 1
|
|
130
|
+
# max_tokens_per_source: 2000
|
|
131
|
+
# total_max_tokens: 8000
|
|
132
|
+
# sources:
|
|
133
|
+
# related_specs:
|
|
134
|
+
# max_count: 1
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Git Hooks Configuration for doit
|
|
2
|
+
# Place this file at .doit/config/hooks.yaml to customize hook behavior
|
|
3
|
+
#
|
|
4
|
+
# For more information, see: https://github.com/yourusername/doit#git-hooks
|
|
5
|
+
|
|
6
|
+
version: 1
|
|
7
|
+
|
|
8
|
+
# Pre-commit hook configuration
|
|
9
|
+
pre_commit:
|
|
10
|
+
# Enable/disable the pre-commit hook
|
|
11
|
+
enabled: true
|
|
12
|
+
|
|
13
|
+
# Require spec.md to exist for feature branches
|
|
14
|
+
require_spec: true
|
|
15
|
+
|
|
16
|
+
# Require plan.md to exist (set to false for pre-commit, true for pre-push)
|
|
17
|
+
require_plan: false
|
|
18
|
+
|
|
19
|
+
# Require tasks.md to exist
|
|
20
|
+
require_tasks: false
|
|
21
|
+
|
|
22
|
+
# Run spec validation rules before commit
|
|
23
|
+
validate_spec: true
|
|
24
|
+
|
|
25
|
+
# Minimum quality score required (0-100)
|
|
26
|
+
# Commits will be blocked if spec score is below this threshold
|
|
27
|
+
validate_spec_threshold: 70
|
|
28
|
+
|
|
29
|
+
# Allowed spec statuses for code commits
|
|
30
|
+
# Commits will be blocked if spec status is not in this list
|
|
31
|
+
allowed_statuses:
|
|
32
|
+
- In Progress
|
|
33
|
+
- Complete
|
|
34
|
+
- Approved
|
|
35
|
+
|
|
36
|
+
# Branches exempt from validation (supports glob patterns)
|
|
37
|
+
exempt_branches:
|
|
38
|
+
- main
|
|
39
|
+
- develop
|
|
40
|
+
- master
|
|
41
|
+
- "release/*"
|
|
42
|
+
- "hotfix/*"
|
|
43
|
+
|
|
44
|
+
# File paths exempt from validation (supports glob patterns)
|
|
45
|
+
exempt_paths:
|
|
46
|
+
- "*.md"
|
|
47
|
+
- "docs/**"
|
|
48
|
+
- ".github/**"
|
|
49
|
+
- "README.md"
|
|
50
|
+
- "CHANGELOG.md"
|
|
51
|
+
|
|
52
|
+
# Pre-push hook configuration
|
|
53
|
+
pre_push:
|
|
54
|
+
# Enable/disable the pre-push hook
|
|
55
|
+
enabled: true
|
|
56
|
+
|
|
57
|
+
# Require spec.md before push
|
|
58
|
+
require_spec: true
|
|
59
|
+
|
|
60
|
+
# Require plan.md before push
|
|
61
|
+
require_plan: true
|
|
62
|
+
|
|
63
|
+
# Require tasks.md before push
|
|
64
|
+
require_tasks: false
|
|
65
|
+
|
|
66
|
+
# Run spec validation before push
|
|
67
|
+
validate_spec: true
|
|
68
|
+
|
|
69
|
+
# Higher threshold for push (encourage higher quality)
|
|
70
|
+
validate_spec_threshold: 80
|
|
71
|
+
|
|
72
|
+
# Allowed spec statuses for push
|
|
73
|
+
allowed_statuses:
|
|
74
|
+
- In Progress
|
|
75
|
+
- Complete
|
|
76
|
+
- Approved
|
|
77
|
+
|
|
78
|
+
# Branches exempt from push validation
|
|
79
|
+
exempt_branches:
|
|
80
|
+
- main
|
|
81
|
+
- develop
|
|
82
|
+
- master
|
|
83
|
+
|
|
84
|
+
# Logging configuration
|
|
85
|
+
logging:
|
|
86
|
+
# Enable hook logging
|
|
87
|
+
enabled: true
|
|
88
|
+
|
|
89
|
+
# Log bypass events (when --no-verify is used)
|
|
90
|
+
log_bypasses: true
|
|
91
|
+
|
|
92
|
+
# Path to bypass log file
|
|
93
|
+
log_path: .doit/logs/hook-bypasses.log
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Validation Rules Configuration for doit
|
|
2
|
+
# Place this file at .doit/validation-rules.yaml to customize validation behavior
|
|
3
|
+
#
|
|
4
|
+
# For more information, see: https://github.com/yourusername/doit#spec-validation
|
|
5
|
+
|
|
6
|
+
version: "1.0"
|
|
7
|
+
|
|
8
|
+
# Enable/disable validation globally
|
|
9
|
+
enabled: true
|
|
10
|
+
|
|
11
|
+
# Disable specific built-in rules by ID
|
|
12
|
+
# Available rule IDs:
|
|
13
|
+
# - missing-user-scenarios
|
|
14
|
+
# - missing-requirements
|
|
15
|
+
# - missing-success-criteria
|
|
16
|
+
# - missing-acceptance-scenarios
|
|
17
|
+
# - fr-naming-convention
|
|
18
|
+
# - sc-naming-convention
|
|
19
|
+
# - feature-branch-format
|
|
20
|
+
# - todo-in-approved-spec
|
|
21
|
+
# - unresolved-clarification
|
|
22
|
+
disabled_rules: []
|
|
23
|
+
# Example:
|
|
24
|
+
# - feature-branch-format # Disable branch naming check
|
|
25
|
+
|
|
26
|
+
# Override severity of built-in rules
|
|
27
|
+
# Severity levels: error, warning, info
|
|
28
|
+
overrides: []
|
|
29
|
+
# Example:
|
|
30
|
+
# - rule: todo-in-approved-spec
|
|
31
|
+
# severity: info # Change from error to info
|
|
32
|
+
|
|
33
|
+
# Define custom validation rules
|
|
34
|
+
# Each custom rule must have:
|
|
35
|
+
# - name: Unique identifier (will be used as rule ID)
|
|
36
|
+
# - description: Human-readable description
|
|
37
|
+
# - pattern: Regular expression to match
|
|
38
|
+
# - severity: error, warning, or info
|
|
39
|
+
# - category: custom (or structure, requirements, clarity for built-in categories)
|
|
40
|
+
# - check: present (pattern MUST exist) or absent (pattern must NOT exist)
|
|
41
|
+
custom_rules: []
|
|
42
|
+
# Example - require Overview section:
|
|
43
|
+
# - name: require-overview
|
|
44
|
+
# description: "Spec must include an Overview section"
|
|
45
|
+
# pattern: "^## Overview"
|
|
46
|
+
# severity: warning
|
|
47
|
+
# category: structure
|
|
48
|
+
# check: present
|
|
49
|
+
#
|
|
50
|
+
# Example - no placeholder text:
|
|
51
|
+
# - name: no-placeholder-text
|
|
52
|
+
# description: "Remove placeholder text before approving"
|
|
53
|
+
# pattern: "\\[placeholder\\]|\\[TBD\\]|\\[TODO\\]"
|
|
54
|
+
# severity: error
|
|
55
|
+
# category: clarity
|
|
56
|
+
# check: absent
|
|
57
|
+
#
|
|
58
|
+
# Example - require dependencies section:
|
|
59
|
+
# - name: require-dependencies
|
|
60
|
+
# description: "Spec should document dependencies"
|
|
61
|
+
# pattern: "^##\\s+(Dependencies|External Dependencies)"
|
|
62
|
+
# severity: info
|
|
63
|
+
# category: structure
|
|
64
|
+
# check: present
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
name: Epic
|
|
2
|
+
description: Create a new epic to group related features and user stories
|
|
3
|
+
title: "[Epic]: "
|
|
4
|
+
labels: ["epic"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
## Epic Definition
|
|
10
|
+
An Epic represents a large body of work that can be broken down into multiple features/user stories.
|
|
11
|
+
|
|
12
|
+
- type: input
|
|
13
|
+
id: branch-name
|
|
14
|
+
attributes:
|
|
15
|
+
label: Branch Name
|
|
16
|
+
description: The feature branch name for this epic (e.g., 001-user-authentication)
|
|
17
|
+
placeholder: "###-epic-name"
|
|
18
|
+
validations:
|
|
19
|
+
required: true
|
|
20
|
+
|
|
21
|
+
- type: textarea
|
|
22
|
+
id: summary
|
|
23
|
+
attributes:
|
|
24
|
+
label: Summary
|
|
25
|
+
description: High-level description of what this epic aims to achieve
|
|
26
|
+
placeholder: "Describe the epic's overall goal and scope..."
|
|
27
|
+
validations:
|
|
28
|
+
required: true
|
|
29
|
+
|
|
30
|
+
- type: textarea
|
|
31
|
+
id: success-criteria
|
|
32
|
+
attributes:
|
|
33
|
+
label: Success Criteria
|
|
34
|
+
description: How will we know when this epic is complete?
|
|
35
|
+
placeholder: |
|
|
36
|
+
- [ ] Criterion 1
|
|
37
|
+
- [ ] Criterion 2
|
|
38
|
+
- [ ] Criterion 3
|
|
39
|
+
validations:
|
|
40
|
+
required: true
|
|
41
|
+
|
|
42
|
+
- type: textarea
|
|
43
|
+
id: user-stories
|
|
44
|
+
attributes:
|
|
45
|
+
label: User Stories / Features
|
|
46
|
+
description: Links to related feature issues (add as they are created)
|
|
47
|
+
placeholder: |
|
|
48
|
+
- [ ] #123 - Feature A
|
|
49
|
+
- [ ] #124 - Feature B
|
|
50
|
+
validations:
|
|
51
|
+
required: false
|
|
52
|
+
|
|
53
|
+
- type: textarea
|
|
54
|
+
id: out-of-scope
|
|
55
|
+
attributes:
|
|
56
|
+
label: Out of Scope
|
|
57
|
+
description: What is explicitly NOT included in this epic?
|
|
58
|
+
placeholder: "List items that are out of scope for this epic..."
|
|
59
|
+
validations:
|
|
60
|
+
required: false
|
|
61
|
+
|
|
62
|
+
- type: textarea
|
|
63
|
+
id: part-of
|
|
64
|
+
attributes:
|
|
65
|
+
label: Part Of
|
|
66
|
+
description: Link to parent initiative or roadmap item (if applicable)
|
|
67
|
+
placeholder: "Part of #XXX or Roadmap item link"
|
|
68
|
+
validations:
|
|
69
|
+
required: false
|
|
70
|
+
|
|
71
|
+
- type: textarea
|
|
72
|
+
id: additional-context
|
|
73
|
+
attributes:
|
|
74
|
+
label: Additional Context
|
|
75
|
+
description: Any other relevant information, links, or references
|
|
76
|
+
placeholder: "Add any other context here..."
|
|
77
|
+
validations:
|
|
78
|
+
required: false
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
name: Feature
|
|
2
|
+
description: Create a new feature or user story that delivers value
|
|
3
|
+
title: "[Feature]: "
|
|
4
|
+
labels: ["feature"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
## Feature / User Story
|
|
10
|
+
A Feature represents a specific piece of functionality that delivers value to users.
|
|
11
|
+
|
|
12
|
+
- type: textarea
|
|
13
|
+
id: description
|
|
14
|
+
attributes:
|
|
15
|
+
label: Description
|
|
16
|
+
description: Describe the feature and the value it provides
|
|
17
|
+
placeholder: |
|
|
18
|
+
As a [type of user],
|
|
19
|
+
I want [goal/desire],
|
|
20
|
+
So that [benefit/value].
|
|
21
|
+
validations:
|
|
22
|
+
required: true
|
|
23
|
+
|
|
24
|
+
- type: input
|
|
25
|
+
id: parent-epic
|
|
26
|
+
attributes:
|
|
27
|
+
label: Parent Epic
|
|
28
|
+
description: Link to the parent epic issue
|
|
29
|
+
placeholder: "#123"
|
|
30
|
+
validations:
|
|
31
|
+
required: false
|
|
32
|
+
|
|
33
|
+
- type: textarea
|
|
34
|
+
id: acceptance-scenarios
|
|
35
|
+
attributes:
|
|
36
|
+
label: Acceptance Scenarios
|
|
37
|
+
description: Specific scenarios that must pass for this feature to be complete
|
|
38
|
+
placeholder: |
|
|
39
|
+
**Scenario 1: [Name]**
|
|
40
|
+
Given [context]
|
|
41
|
+
When [action]
|
|
42
|
+
Then [outcome]
|
|
43
|
+
|
|
44
|
+
**Scenario 2: [Name]**
|
|
45
|
+
Given [context]
|
|
46
|
+
When [action]
|
|
47
|
+
Then [outcome]
|
|
48
|
+
validations:
|
|
49
|
+
required: true
|
|
50
|
+
|
|
51
|
+
- type: dropdown
|
|
52
|
+
id: priority
|
|
53
|
+
attributes:
|
|
54
|
+
label: Priority
|
|
55
|
+
description: How important is this feature?
|
|
56
|
+
options:
|
|
57
|
+
- P1 - Critical (MVP)
|
|
58
|
+
- P2 - High
|
|
59
|
+
- P3 - Medium
|
|
60
|
+
- P4 - Low (Nice to have)
|
|
61
|
+
validations:
|
|
62
|
+
required: true
|
|
63
|
+
|
|
64
|
+
- type: dropdown
|
|
65
|
+
id: size
|
|
66
|
+
attributes:
|
|
67
|
+
label: Size Estimate
|
|
68
|
+
description: Rough estimate of effort
|
|
69
|
+
options:
|
|
70
|
+
- XS (< 1 day)
|
|
71
|
+
- S (1-2 days)
|
|
72
|
+
- M (3-5 days)
|
|
73
|
+
- L (1-2 weeks)
|
|
74
|
+
- XL (> 2 weeks - consider breaking down)
|
|
75
|
+
validations:
|
|
76
|
+
required: false
|
|
77
|
+
|
|
78
|
+
- type: textarea
|
|
79
|
+
id: tasks
|
|
80
|
+
attributes:
|
|
81
|
+
label: Implementation Tasks
|
|
82
|
+
description: Links to task issues (add as they are created)
|
|
83
|
+
placeholder: |
|
|
84
|
+
- [ ] #125 - Task A
|
|
85
|
+
- [ ] #126 - Task B
|
|
86
|
+
validations:
|
|
87
|
+
required: false
|
|
88
|
+
|
|
89
|
+
- type: textarea
|
|
90
|
+
id: part-of
|
|
91
|
+
attributes:
|
|
92
|
+
label: Part Of
|
|
93
|
+
description: Link to parent epic
|
|
94
|
+
placeholder: "Part of Epic #XXX"
|
|
95
|
+
validations:
|
|
96
|
+
required: false
|
|
97
|
+
|
|
98
|
+
- type: textarea
|
|
99
|
+
id: dependencies
|
|
100
|
+
attributes:
|
|
101
|
+
label: Dependencies
|
|
102
|
+
description: Other features or tasks this depends on
|
|
103
|
+
placeholder: |
|
|
104
|
+
- Blocked by #XXX
|
|
105
|
+
- Requires #YYY to be complete
|
|
106
|
+
validations:
|
|
107
|
+
required: false
|
|
108
|
+
|
|
109
|
+
- type: textarea
|
|
110
|
+
id: additional-context
|
|
111
|
+
attributes:
|
|
112
|
+
label: Additional Context
|
|
113
|
+
description: Any other relevant information, mockups, or references
|
|
114
|
+
placeholder: "Add screenshots, diagrams, or links here..."
|
|
115
|
+
validations:
|
|
116
|
+
required: false
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
name: Task
|
|
2
|
+
description: Create a specific implementation task
|
|
3
|
+
title: "[Task]: "
|
|
4
|
+
labels: ["task"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
## Implementation Task
|
|
10
|
+
A Task is a specific, actionable piece of work that contributes to a feature.
|
|
11
|
+
|
|
12
|
+
- type: textarea
|
|
13
|
+
id: description
|
|
14
|
+
attributes:
|
|
15
|
+
label: Description
|
|
16
|
+
description: What needs to be done?
|
|
17
|
+
placeholder: "Describe the specific work to be completed..."
|
|
18
|
+
validations:
|
|
19
|
+
required: true
|
|
20
|
+
|
|
21
|
+
- type: input
|
|
22
|
+
id: parent-feature
|
|
23
|
+
attributes:
|
|
24
|
+
label: Parent Feature
|
|
25
|
+
description: Link to the parent feature issue
|
|
26
|
+
placeholder: "#123"
|
|
27
|
+
validations:
|
|
28
|
+
required: false
|
|
29
|
+
|
|
30
|
+
- type: input
|
|
31
|
+
id: task-id
|
|
32
|
+
attributes:
|
|
33
|
+
label: Task ID
|
|
34
|
+
description: Task identifier from tasks.md (e.g., T001, T002)
|
|
35
|
+
placeholder: "T###"
|
|
36
|
+
validations:
|
|
37
|
+
required: false
|
|
38
|
+
|
|
39
|
+
- type: dropdown
|
|
40
|
+
id: phase
|
|
41
|
+
attributes:
|
|
42
|
+
label: Phase
|
|
43
|
+
description: Which implementation phase does this belong to?
|
|
44
|
+
options:
|
|
45
|
+
- Phase 1 - Setup
|
|
46
|
+
- Phase 2 - Foundational
|
|
47
|
+
- Phase 3 - Core Implementation
|
|
48
|
+
- Phase 4 - Integration
|
|
49
|
+
- Phase 5 - Testing
|
|
50
|
+
- Phase 6 - Polish
|
|
51
|
+
validations:
|
|
52
|
+
required: false
|
|
53
|
+
|
|
54
|
+
- type: textarea
|
|
55
|
+
id: definition-of-done
|
|
56
|
+
attributes:
|
|
57
|
+
label: Definition of Done
|
|
58
|
+
description: Checklist of items that must be complete
|
|
59
|
+
placeholder: |
|
|
60
|
+
- [ ] Code implemented
|
|
61
|
+
- [ ] Unit tests written and passing
|
|
62
|
+
- [ ] Code reviewed
|
|
63
|
+
- [ ] Documentation updated
|
|
64
|
+
validations:
|
|
65
|
+
required: true
|
|
66
|
+
|
|
67
|
+
- type: dropdown
|
|
68
|
+
id: effort
|
|
69
|
+
attributes:
|
|
70
|
+
label: Estimated Effort
|
|
71
|
+
description: How long will this task take?
|
|
72
|
+
options:
|
|
73
|
+
- XS (< 1 hour)
|
|
74
|
+
- S (1-4 hours)
|
|
75
|
+
- M (4-8 hours)
|
|
76
|
+
- L (1-2 days)
|
|
77
|
+
- XL (> 2 days - consider breaking down)
|
|
78
|
+
validations:
|
|
79
|
+
required: false
|
|
80
|
+
|
|
81
|
+
- type: checkboxes
|
|
82
|
+
id: parallel
|
|
83
|
+
attributes:
|
|
84
|
+
label: Parallel Execution
|
|
85
|
+
description: Can this task run in parallel with others?
|
|
86
|
+
options:
|
|
87
|
+
- label: This task can be worked on in parallel with other tasks (different files, no dependencies)
|
|
88
|
+
required: false
|
|
89
|
+
|
|
90
|
+
- type: textarea
|
|
91
|
+
id: part-of
|
|
92
|
+
attributes:
|
|
93
|
+
label: Part Of
|
|
94
|
+
description: Link to parent feature
|
|
95
|
+
placeholder: "Part of Feature #XXX"
|
|
96
|
+
validations:
|
|
97
|
+
required: false
|
|
98
|
+
|
|
99
|
+
- type: textarea
|
|
100
|
+
id: files
|
|
101
|
+
attributes:
|
|
102
|
+
label: Files to Modify
|
|
103
|
+
description: List of files that will be created or modified
|
|
104
|
+
placeholder: |
|
|
105
|
+
- src/models/user.py (create)
|
|
106
|
+
- src/services/auth.py (modify)
|
|
107
|
+
- tests/test_auth.py (create)
|
|
108
|
+
validations:
|
|
109
|
+
required: false
|
|
110
|
+
|
|
111
|
+
- type: textarea
|
|
112
|
+
id: dependencies
|
|
113
|
+
attributes:
|
|
114
|
+
label: Dependencies
|
|
115
|
+
description: Other tasks this depends on
|
|
116
|
+
placeholder: |
|
|
117
|
+
- Depends on T001
|
|
118
|
+
- Blocked by #XXX
|
|
119
|
+
validations:
|
|
120
|
+
required: false
|
|
121
|
+
|
|
122
|
+
- type: textarea
|
|
123
|
+
id: additional-context
|
|
124
|
+
attributes:
|
|
125
|
+
label: Additional Context
|
|
126
|
+
description: Any other relevant information
|
|
127
|
+
placeholder: "Add any technical notes or references here..."
|
|
128
|
+
validations:
|
|
129
|
+
required: false
|
|
File without changes
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Post-commit hook installed by doit
|
|
3
|
+
# This hook logs bypass events when --no-verify was used
|
|
4
|
+
|
|
5
|
+
# Exit on error
|
|
6
|
+
set -e
|
|
7
|
+
|
|
8
|
+
# Check if doit is available
|
|
9
|
+
if ! command -v doit &> /dev/null; then
|
|
10
|
+
exit 0
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
# Get the current commit hash
|
|
14
|
+
COMMIT_HASH=$(git rev-parse HEAD 2>/dev/null || echo "")
|
|
15
|
+
|
|
16
|
+
# Check if the pre-commit hook would have run validation
|
|
17
|
+
# We detect bypass by checking if the commit was made without our validation
|
|
18
|
+
# This is a best-effort detection since we can't know for certain if --no-verify was used
|
|
19
|
+
|
|
20
|
+
# For now, we only log when explicitly called via doit hooks log-bypass
|
|
21
|
+
# The actual bypass detection requires more complex logic that would need
|
|
22
|
+
# to track state between pre-commit and post-commit hooks.
|
|
23
|
+
|
|
24
|
+
# This hook is available for future enhancement to detect and log bypasses
|
|
25
|
+
exit 0
|