doit-toolkit-cli 0.1.10__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.

Potentially problematic release.


This version of doit-toolkit-cli might be problematic. Click here for more details.

Files changed (135) hide show
  1. doit_cli/__init__.py +1356 -0
  2. doit_cli/cli/__init__.py +26 -0
  3. doit_cli/cli/analytics_command.py +616 -0
  4. doit_cli/cli/context_command.py +213 -0
  5. doit_cli/cli/diagram_command.py +304 -0
  6. doit_cli/cli/fixit_command.py +641 -0
  7. doit_cli/cli/hooks_command.py +211 -0
  8. doit_cli/cli/init_command.py +613 -0
  9. doit_cli/cli/memory_command.py +293 -0
  10. doit_cli/cli/roadmapit_command.py +10 -0
  11. doit_cli/cli/status_command.py +117 -0
  12. doit_cli/cli/sync_prompts_command.py +248 -0
  13. doit_cli/cli/validate_command.py +196 -0
  14. doit_cli/cli/verify_command.py +204 -0
  15. doit_cli/cli/workflow_mixin.py +224 -0
  16. doit_cli/cli/xref_command.py +555 -0
  17. doit_cli/formatters/__init__.py +8 -0
  18. doit_cli/formatters/base.py +38 -0
  19. doit_cli/formatters/json_formatter.py +126 -0
  20. doit_cli/formatters/markdown_formatter.py +97 -0
  21. doit_cli/formatters/rich_formatter.py +257 -0
  22. doit_cli/main.py +51 -0
  23. doit_cli/models/__init__.py +139 -0
  24. doit_cli/models/agent.py +74 -0
  25. doit_cli/models/analytics_models.py +384 -0
  26. doit_cli/models/context_config.py +464 -0
  27. doit_cli/models/crossref_models.py +182 -0
  28. doit_cli/models/diagram_models.py +363 -0
  29. doit_cli/models/fixit_models.py +355 -0
  30. doit_cli/models/hook_config.py +125 -0
  31. doit_cli/models/project.py +91 -0
  32. doit_cli/models/results.py +121 -0
  33. doit_cli/models/search_models.py +228 -0
  34. doit_cli/models/status_models.py +195 -0
  35. doit_cli/models/sync_models.py +146 -0
  36. doit_cli/models/template.py +77 -0
  37. doit_cli/models/validation_models.py +175 -0
  38. doit_cli/models/workflow_models.py +319 -0
  39. doit_cli/prompts/__init__.py +5 -0
  40. doit_cli/prompts/fixit_prompts.py +344 -0
  41. doit_cli/prompts/interactive.py +390 -0
  42. doit_cli/rules/__init__.py +5 -0
  43. doit_cli/rules/builtin_rules.py +160 -0
  44. doit_cli/services/__init__.py +79 -0
  45. doit_cli/services/agent_detector.py +168 -0
  46. doit_cli/services/analytics_service.py +218 -0
  47. doit_cli/services/architecture_generator.py +290 -0
  48. doit_cli/services/backup_service.py +204 -0
  49. doit_cli/services/config_loader.py +113 -0
  50. doit_cli/services/context_loader.py +1123 -0
  51. doit_cli/services/coverage_calculator.py +142 -0
  52. doit_cli/services/crossref_service.py +237 -0
  53. doit_cli/services/cycle_time_calculator.py +134 -0
  54. doit_cli/services/date_inferrer.py +349 -0
  55. doit_cli/services/diagram_service.py +337 -0
  56. doit_cli/services/drift_detector.py +109 -0
  57. doit_cli/services/entity_parser.py +301 -0
  58. doit_cli/services/er_diagram_generator.py +197 -0
  59. doit_cli/services/fixit_service.py +699 -0
  60. doit_cli/services/github_service.py +192 -0
  61. doit_cli/services/hook_manager.py +258 -0
  62. doit_cli/services/hook_validator.py +528 -0
  63. doit_cli/services/input_validator.py +322 -0
  64. doit_cli/services/memory_search.py +527 -0
  65. doit_cli/services/mermaid_validator.py +334 -0
  66. doit_cli/services/prompt_transformer.py +91 -0
  67. doit_cli/services/prompt_writer.py +133 -0
  68. doit_cli/services/query_interpreter.py +428 -0
  69. doit_cli/services/report_exporter.py +219 -0
  70. doit_cli/services/report_generator.py +256 -0
  71. doit_cli/services/requirement_parser.py +112 -0
  72. doit_cli/services/roadmap_summarizer.py +209 -0
  73. doit_cli/services/rule_engine.py +443 -0
  74. doit_cli/services/scaffolder.py +215 -0
  75. doit_cli/services/score_calculator.py +172 -0
  76. doit_cli/services/section_parser.py +204 -0
  77. doit_cli/services/spec_scanner.py +327 -0
  78. doit_cli/services/state_manager.py +355 -0
  79. doit_cli/services/status_reporter.py +143 -0
  80. doit_cli/services/task_parser.py +347 -0
  81. doit_cli/services/template_manager.py +710 -0
  82. doit_cli/services/template_reader.py +158 -0
  83. doit_cli/services/user_journey_generator.py +214 -0
  84. doit_cli/services/user_story_parser.py +232 -0
  85. doit_cli/services/validation_service.py +188 -0
  86. doit_cli/services/validator.py +232 -0
  87. doit_cli/services/velocity_tracker.py +173 -0
  88. doit_cli/services/workflow_engine.py +405 -0
  89. doit_cli/templates/agent-file-template.md +28 -0
  90. doit_cli/templates/checklist-template.md +39 -0
  91. doit_cli/templates/commands/doit.checkin.md +363 -0
  92. doit_cli/templates/commands/doit.constitution.md +187 -0
  93. doit_cli/templates/commands/doit.documentit.md +485 -0
  94. doit_cli/templates/commands/doit.fixit.md +181 -0
  95. doit_cli/templates/commands/doit.implementit.md +265 -0
  96. doit_cli/templates/commands/doit.planit.md +262 -0
  97. doit_cli/templates/commands/doit.reviewit.md +355 -0
  98. doit_cli/templates/commands/doit.roadmapit.md +389 -0
  99. doit_cli/templates/commands/doit.scaffoldit.md +458 -0
  100. doit_cli/templates/commands/doit.specit.md +521 -0
  101. doit_cli/templates/commands/doit.taskit.md +304 -0
  102. doit_cli/templates/commands/doit.testit.md +277 -0
  103. doit_cli/templates/config/context.yaml +134 -0
  104. doit_cli/templates/config/hooks.yaml +93 -0
  105. doit_cli/templates/config/validation-rules.yaml +64 -0
  106. doit_cli/templates/github-issue-templates/epic.yml +78 -0
  107. doit_cli/templates/github-issue-templates/feature.yml +116 -0
  108. doit_cli/templates/github-issue-templates/task.yml +129 -0
  109. doit_cli/templates/hooks/.gitkeep +0 -0
  110. doit_cli/templates/hooks/post-commit.sh +25 -0
  111. doit_cli/templates/hooks/post-merge.sh +75 -0
  112. doit_cli/templates/hooks/pre-commit.sh +17 -0
  113. doit_cli/templates/hooks/pre-push.sh +18 -0
  114. doit_cli/templates/memory/completed_roadmap.md +50 -0
  115. doit_cli/templates/memory/constitution.md +125 -0
  116. doit_cli/templates/memory/roadmap.md +61 -0
  117. doit_cli/templates/plan-template.md +146 -0
  118. doit_cli/templates/scripts/bash/check-prerequisites.sh +166 -0
  119. doit_cli/templates/scripts/bash/common.sh +156 -0
  120. doit_cli/templates/scripts/bash/create-new-feature.sh +297 -0
  121. doit_cli/templates/scripts/bash/setup-plan.sh +61 -0
  122. doit_cli/templates/scripts/bash/update-agent-context.sh +675 -0
  123. doit_cli/templates/scripts/powershell/check-prerequisites.ps1 +148 -0
  124. doit_cli/templates/scripts/powershell/common.ps1 +137 -0
  125. doit_cli/templates/scripts/powershell/create-new-feature.ps1 +283 -0
  126. doit_cli/templates/scripts/powershell/setup-plan.ps1 +61 -0
  127. doit_cli/templates/scripts/powershell/update-agent-context.ps1 +406 -0
  128. doit_cli/templates/spec-template.md +159 -0
  129. doit_cli/templates/tasks-template.md +313 -0
  130. doit_cli/templates/vscode-settings.json +14 -0
  131. doit_toolkit_cli-0.1.10.dist-info/METADATA +324 -0
  132. doit_toolkit_cli-0.1.10.dist-info/RECORD +135 -0
  133. doit_toolkit_cli-0.1.10.dist-info/WHEEL +4 -0
  134. doit_toolkit_cli-0.1.10.dist-info/entry_points.txt +2 -0
  135. doit_toolkit_cli-0.1.10.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